Status for Dolphin Central

Recent events

2026-10-29T04:09:54.557351	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'dreamsyntax,TryTwo,corwin-mcknight,nickbeth,PatrickFerry,linkmauve,RachelBryk,jloehr,cristian64,adamdmoss,gwicks,jjdelvalle,JordanTheToaster,VampireFlower,unknownbrackets,JosJuice,ShimmerGlass,CrossVR,ligfx,kayru,Tilka,mahdihijazi,mathieui,hdcmeta,Lobsterzelda,Sintendo,Zopolis4,CelestialAmber,hrydgard,mmastrac,neobrain,Sam-Belliveau,Sir-Walrus,JoshuaVandaele,crediar,endrift,AdmiralCurtiss,magcius,Ebola16,spxtr,zopieux,jezze,nullgemm,DacoTaco,iwubcode,spycrab,mitaclaw,malleoz,RisingFog,mbc07,Filoppi,Linkinworm,leoetlino,K0bin,riking,randomstuff,hthh,cscd98,zackhow,marcan,Ziek,CookiePLMonster,delroth,Stevoisiak,SuperSamus,Starsam80,yourWaifu,TellowKrinkle,NanoByte011,LAGonauta,aldelaro5,CasualPokePlayer,tygyh,JMC47,Hydr8gon,CrystalGamma,shonumi,galop1n,Dentomologist,orbea,jordan-woyak,Tinob,OatmealDome,Orphis,lioncash,OrN,bentley,sepalani,moncefmechri,kamiyo,EmptyChaos,Buddybenj,Geotale,Parlane,BhaaLseN,archshift,Phatcat,LPFaint99,rlnilsen,smurf3tte,Linktothepast,noahpistilli,Simonx22,skylersaleh,merryhime,MayImilae,SirMangler,ColinDTaylor,LillyJadeKatrin,comex,magumagu,Pokechu22,hackbar,aroulin,glennricster,mandar1jn,Helios747,Gamer64ytb,tom-pratt,skidau,phire,mrgreywater,mimimi085181,deReeperJosh,meffij,degasus,vladfi1,Techjar,krnlyng,FioraAeterna,rukai,booto')", 'type': 'internal_log'}
2026-10-29T04:09:52.854349	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-10-29T04:04:52.854020	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'dreamsyntax,TryTwo,corwin-mcknight,nickbeth,PatrickFerry,linkmauve,RachelBryk,jloehr,cristian64,adamdmoss,gwicks,jjdelvalle,JordanTheToaster,VampireFlower,unknownbrackets,JosJuice,ShimmerGlass,CrossVR,ligfx,kayru,Tilka,mahdihijazi,mathieui,hdcmeta,Lobsterzelda,Sintendo,Zopolis4,CelestialAmber,hrydgard,mmastrac,neobrain,Sam-Belliveau,Sir-Walrus,JoshuaVandaele,crediar,endrift,AdmiralCurtiss,magcius,Ebola16,spxtr,zopieux,jezze,nullgemm,DacoTaco,iwubcode,spycrab,mitaclaw,malleoz,RisingFog,mbc07,Filoppi,Linkinworm,leoetlino,K0bin,riking,randomstuff,hthh,cscd98,zackhow,marcan,Ziek,CookiePLMonster,delroth,Stevoisiak,SuperSamus,Starsam80,yourWaifu,TellowKrinkle,NanoByte011,LAGonauta,aldelaro5,CasualPokePlayer,tygyh,JMC47,Hydr8gon,CrystalGamma,shonumi,galop1n,Dentomologist,orbea,jordan-woyak,Tinob,OatmealDome,Orphis,lioncash,OrN,bentley,sepalani,moncefmechri,kamiyo,EmptyChaos,Buddybenj,Geotale,Parlane,BhaaLseN,archshift,Phatcat,LPFaint99,rlnilsen,smurf3tte,Linktothepast,noahpistilli,Simonx22,skylersaleh,merryhime,MayImilae,SirMangler,ColinDTaylor,LillyJadeKatrin,comex,magumagu,Pokechu22,hackbar,aroulin,glennricster,mandar1jn,Helios747,Gamer64ytb,tom-pratt,skidau,phire,mrgreywater,mimimi085181,deReeperJosh,meffij,degasus,vladfi1,Techjar,krnlyng,FioraAeterna,rukai,booto')", 'type': 'internal_log'}
2026-10-29T04:04:51.282511	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-10-29T04:03:45.096912	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'degasus,leoetlino,CrossVR,Tilka,Pokechu22,iwubcode,OatmealDome,Dentomologist,jordan-woyak,JosJuice,phire,linkmauve,AdmiralCurtiss')", 'type': 'internal_log'}
2026-10-29T04:03:44.745533	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
2026-10-29T03:59:51.282184	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'dreamsyntax,TryTwo,corwin-mcknight,nickbeth,PatrickFerry,linkmauve,RachelBryk,jloehr,cristian64,adamdmoss,gwicks,jjdelvalle,JordanTheToaster,VampireFlower,unknownbrackets,JosJuice,ShimmerGlass,CrossVR,ligfx,kayru,Tilka,mahdihijazi,mathieui,hdcmeta,Lobsterzelda,Sintendo,Zopolis4,CelestialAmber,hrydgard,mmastrac,neobrain,Sam-Belliveau,Sir-Walrus,JoshuaVandaele,crediar,endrift,AdmiralCurtiss,magcius,Ebola16,spxtr,zopieux,jezze,nullgemm,DacoTaco,iwubcode,spycrab,mitaclaw,malleoz,RisingFog,mbc07,Filoppi,Linkinworm,leoetlino,K0bin,riking,randomstuff,hthh,cscd98,zackhow,marcan,Ziek,CookiePLMonster,delroth,Stevoisiak,SuperSamus,Starsam80,yourWaifu,TellowKrinkle,NanoByte011,LAGonauta,aldelaro5,CasualPokePlayer,tygyh,JMC47,Hydr8gon,CrystalGamma,shonumi,galop1n,Dentomologist,orbea,jordan-woyak,Tinob,OatmealDome,Orphis,lioncash,OrN,bentley,sepalani,moncefmechri,kamiyo,EmptyChaos,Buddybenj,Geotale,Parlane,BhaaLseN,archshift,Phatcat,LPFaint99,rlnilsen,smurf3tte,Linktothepast,noahpistilli,Simonx22,skylersaleh,merryhime,MayImilae,SirMangler,ColinDTaylor,LillyJadeKatrin,comex,magumagu,Pokechu22,hackbar,aroulin,glennricster,mandar1jn,Helios747,Gamer64ytb,tom-pratt,skidau,phire,mrgreywater,mimimi085181,deReeperJosh,meffij,degasus,vladfi1,Techjar,krnlyng,FioraAeterna,rukai,booto')", 'type': 'internal_log'}
2026-10-29T03:59:49.698953	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-10-29T03:54:49.698651	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'dreamsyntax,TryTwo,corwin-mcknight,nickbeth,PatrickFerry,linkmauve,RachelBryk,jloehr,cristian64,adamdmoss,gwicks,jjdelvalle,JordanTheToaster,VampireFlower,unknownbrackets,JosJuice,ShimmerGlass,CrossVR,ligfx,kayru,Tilka,mahdihijazi,mathieui,hdcmeta,Lobsterzelda,Sintendo,Zopolis4,CelestialAmber,hrydgard,mmastrac,neobrain,Sam-Belliveau,Sir-Walrus,JoshuaVandaele,crediar,endrift,AdmiralCurtiss,magcius,Ebola16,spxtr,zopieux,jezze,nullgemm,DacoTaco,iwubcode,spycrab,mitaclaw,malleoz,RisingFog,mbc07,Filoppi,Linkinworm,leoetlino,K0bin,riking,randomstuff,hthh,cscd98,zackhow,marcan,Ziek,CookiePLMonster,delroth,Stevoisiak,SuperSamus,Starsam80,yourWaifu,TellowKrinkle,NanoByte011,LAGonauta,aldelaro5,CasualPokePlayer,tygyh,JMC47,Hydr8gon,CrystalGamma,shonumi,galop1n,Dentomologist,orbea,jordan-woyak,Tinob,OatmealDome,Orphis,lioncash,OrN,bentley,sepalani,moncefmechri,kamiyo,EmptyChaos,Buddybenj,Geotale,Parlane,BhaaLseN,archshift,Phatcat,LPFaint99,rlnilsen,smurf3tte,Linktothepast,noahpistilli,Simonx22,skylersaleh,merryhime,MayImilae,SirMangler,ColinDTaylor,LillyJadeKatrin,comex,magumagu,Pokechu22,hackbar,aroulin,glennricster,mandar1jn,Helios747,Gamer64ytb,tom-pratt,skidau,phire,mrgreywater,mimimi085181,deReeperJosh,meffij,degasus,vladfi1,Techjar,krnlyng,FioraAeterna,rukai,booto')", 'type': 'internal_log'}
2026-10-29T03:54:48.080677	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-10-29T03:53:44.745282	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'degasus,leoetlino,CrossVR,Tilka,Pokechu22,iwubcode,OatmealDome,Dentomologist,jordan-woyak,JosJuice,phire,linkmauve,AdmiralCurtiss')", 'type': 'internal_log'}
2026-10-29T03:53:44.390578	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
2026-10-29T03:49:48.080339	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'dreamsyntax,TryTwo,corwin-mcknight,nickbeth,PatrickFerry,linkmauve,RachelBryk,jloehr,cristian64,adamdmoss,gwicks,jjdelvalle,JordanTheToaster,VampireFlower,unknownbrackets,JosJuice,ShimmerGlass,CrossVR,ligfx,kayru,Tilka,mahdihijazi,mathieui,hdcmeta,Lobsterzelda,Sintendo,Zopolis4,CelestialAmber,hrydgard,mmastrac,neobrain,Sam-Belliveau,Sir-Walrus,JoshuaVandaele,crediar,endrift,AdmiralCurtiss,magcius,Ebola16,spxtr,zopieux,jezze,nullgemm,DacoTaco,iwubcode,spycrab,mitaclaw,malleoz,RisingFog,mbc07,Filoppi,Linkinworm,leoetlino,K0bin,riking,randomstuff,hthh,cscd98,zackhow,marcan,Ziek,CookiePLMonster,delroth,Stevoisiak,SuperSamus,Starsam80,yourWaifu,TellowKrinkle,NanoByte011,LAGonauta,aldelaro5,CasualPokePlayer,tygyh,JMC47,Hydr8gon,CrystalGamma,shonumi,galop1n,Dentomologist,orbea,jordan-woyak,Tinob,OatmealDome,Orphis,lioncash,OrN,bentley,sepalani,moncefmechri,kamiyo,EmptyChaos,Buddybenj,Geotale,Parlane,BhaaLseN,archshift,Phatcat,LPFaint99,rlnilsen,smurf3tte,Linktothepast,noahpistilli,Simonx22,skylersaleh,merryhime,MayImilae,SirMangler,ColinDTaylor,LillyJadeKatrin,comex,magumagu,Pokechu22,hackbar,aroulin,glennricster,mandar1jn,Helios747,Gamer64ytb,tom-pratt,skidau,phire,mrgreywater,mimimi085181,deReeperJosh,meffij,degasus,vladfi1,Techjar,krnlyng,FioraAeterna,rukai,booto')", 'type': 'internal_log'}
2026-10-29T03:49:46.492592	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-10-29T03:44:46.492282	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'dreamsyntax,TryTwo,corwin-mcknight,nickbeth,PatrickFerry,linkmauve,RachelBryk,jloehr,cristian64,adamdmoss,gwicks,jjdelvalle,JordanTheToaster,VampireFlower,unknownbrackets,JosJuice,ShimmerGlass,CrossVR,ligfx,kayru,Tilka,mahdihijazi,mathieui,hdcmeta,Lobsterzelda,Sintendo,Zopolis4,CelestialAmber,hrydgard,mmastrac,neobrain,Sam-Belliveau,Sir-Walrus,JoshuaVandaele,crediar,endrift,AdmiralCurtiss,magcius,Ebola16,spxtr,zopieux,jezze,nullgemm,DacoTaco,iwubcode,spycrab,mitaclaw,malleoz,RisingFog,mbc07,Filoppi,Linkinworm,leoetlino,K0bin,riking,randomstuff,hthh,cscd98,zackhow,marcan,Ziek,CookiePLMonster,delroth,Stevoisiak,SuperSamus,Starsam80,yourWaifu,TellowKrinkle,NanoByte011,LAGonauta,aldelaro5,CasualPokePlayer,tygyh,JMC47,Hydr8gon,CrystalGamma,shonumi,galop1n,Dentomologist,orbea,jordan-woyak,Tinob,OatmealDome,Orphis,lioncash,OrN,bentley,sepalani,moncefmechri,kamiyo,EmptyChaos,Buddybenj,Geotale,Parlane,BhaaLseN,archshift,Phatcat,LPFaint99,rlnilsen,smurf3tte,Linktothepast,noahpistilli,Simonx22,skylersaleh,merryhime,MayImilae,SirMangler,ColinDTaylor,LillyJadeKatrin,comex,magumagu,Pokechu22,hackbar,aroulin,glennricster,mandar1jn,Helios747,Gamer64ytb,tom-pratt,skidau,phire,mrgreywater,mimimi085181,deReeperJosh,meffij,degasus,vladfi1,Techjar,krnlyng,FioraAeterna,rukai,booto')", 'type': 'internal_log'}
2026-10-29T03:44:44.655246	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-10-29T03:43:44.390326	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'degasus,leoetlino,CrossVR,Tilka,Pokechu22,iwubcode,OatmealDome,Dentomologist,jordan-woyak,JosJuice,phire,linkmauve,AdmiralCurtiss')", 'type': 'internal_log'}
2026-10-29T03:43:43.928734	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
2026-10-29T03:39:44.654922	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'dreamsyntax,TryTwo,corwin-mcknight,nickbeth,PatrickFerry,linkmauve,RachelBryk,jloehr,cristian64,adamdmoss,gwicks,jjdelvalle,JordanTheToaster,VampireFlower,unknownbrackets,JosJuice,ShimmerGlass,CrossVR,ligfx,kayru,Tilka,mahdihijazi,mathieui,hdcmeta,Lobsterzelda,Sintendo,Zopolis4,CelestialAmber,hrydgard,mmastrac,neobrain,Sam-Belliveau,Sir-Walrus,JoshuaVandaele,crediar,endrift,AdmiralCurtiss,magcius,Ebola16,spxtr,zopieux,jezze,nullgemm,DacoTaco,iwubcode,spycrab,mitaclaw,malleoz,RisingFog,mbc07,Filoppi,Linkinworm,leoetlino,K0bin,riking,randomstuff,hthh,cscd98,zackhow,marcan,Ziek,CookiePLMonster,delroth,Stevoisiak,SuperSamus,Starsam80,yourWaifu,TellowKrinkle,NanoByte011,LAGonauta,aldelaro5,CasualPokePlayer,tygyh,JMC47,Hydr8gon,CrystalGamma,shonumi,galop1n,Dentomologist,orbea,jordan-woyak,Tinob,OatmealDome,Orphis,lioncash,OrN,bentley,sepalani,moncefmechri,kamiyo,EmptyChaos,Buddybenj,Geotale,Parlane,BhaaLseN,archshift,Phatcat,LPFaint99,rlnilsen,smurf3tte,Linktothepast,noahpistilli,Simonx22,skylersaleh,merryhime,MayImilae,SirMangler,ColinDTaylor,LillyJadeKatrin,comex,magumagu,Pokechu22,hackbar,aroulin,glennricster,mandar1jn,Helios747,Gamer64ytb,tom-pratt,skidau,phire,mrgreywater,mimimi085181,deReeperJosh,meffij,degasus,vladfi1,Techjar,krnlyng,FioraAeterna,rukai,booto')", 'type': 'internal_log'}
2026-10-29T03:39:42.966568	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-10-29T03:34:42.966243	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'dreamsyntax,TryTwo,corwin-mcknight,nickbeth,PatrickFerry,linkmauve,RachelBryk,jloehr,cristian64,adamdmoss,gwicks,jjdelvalle,JordanTheToaster,VampireFlower,unknownbrackets,JosJuice,ShimmerGlass,CrossVR,ligfx,kayru,Tilka,mahdihijazi,mathieui,hdcmeta,Lobsterzelda,Sintendo,Zopolis4,CelestialAmber,hrydgard,mmastrac,neobrain,Sam-Belliveau,Sir-Walrus,JoshuaVandaele,crediar,endrift,AdmiralCurtiss,magcius,Ebola16,spxtr,zopieux,jezze,nullgemm,DacoTaco,iwubcode,spycrab,mitaclaw,malleoz,RisingFog,mbc07,Filoppi,Linkinworm,leoetlino,K0bin,riking,randomstuff,hthh,cscd98,zackhow,marcan,Ziek,CookiePLMonster,delroth,Stevoisiak,SuperSamus,Starsam80,yourWaifu,TellowKrinkle,NanoByte011,LAGonauta,aldelaro5,CasualPokePlayer,tygyh,JMC47,Hydr8gon,CrystalGamma,shonumi,galop1n,Dentomologist,orbea,jordan-woyak,Tinob,OatmealDome,Orphis,lioncash,OrN,bentley,sepalani,moncefmechri,kamiyo,EmptyChaos,Buddybenj,Geotale,Parlane,BhaaLseN,archshift,Phatcat,LPFaint99,rlnilsen,smurf3tte,Linktothepast,noahpistilli,Simonx22,skylersaleh,merryhime,MayImilae,SirMangler,ColinDTaylor,LillyJadeKatrin,comex,magumagu,Pokechu22,hackbar,aroulin,glennricster,mandar1jn,Helios747,Gamer64ytb,tom-pratt,skidau,phire,mrgreywater,mimimi085181,deReeperJosh,meffij,degasus,vladfi1,Techjar,krnlyng,FioraAeterna,rukai,booto')", 'type': 'internal_log'}
2026-10-29T03:34:41.376382	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-10-29T03:33:43.928501	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'degasus,leoetlino,CrossVR,Tilka,Pokechu22,iwubcode,OatmealDome,Dentomologist,jordan-woyak,JosJuice,phire,linkmauve,AdmiralCurtiss')", 'type': 'internal_log'}
2026-10-29T03:33:43.591280	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
2026-10-29T03:29:41.376002	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'dreamsyntax,TryTwo,corwin-mcknight,nickbeth,PatrickFerry,linkmauve,RachelBryk,jloehr,cristian64,adamdmoss,gwicks,jjdelvalle,JordanTheToaster,VampireFlower,unknownbrackets,JosJuice,ShimmerGlass,CrossVR,ligfx,kayru,Tilka,mahdihijazi,mathieui,hdcmeta,Lobsterzelda,Sintendo,Zopolis4,CelestialAmber,hrydgard,mmastrac,neobrain,Sam-Belliveau,Sir-Walrus,JoshuaVandaele,crediar,endrift,AdmiralCurtiss,magcius,Ebola16,spxtr,zopieux,jezze,nullgemm,DacoTaco,iwubcode,spycrab,mitaclaw,malleoz,RisingFog,mbc07,Filoppi,Linkinworm,leoetlino,K0bin,riking,randomstuff,hthh,cscd98,zackhow,marcan,Ziek,CookiePLMonster,delroth,Stevoisiak,SuperSamus,Starsam80,yourWaifu,TellowKrinkle,NanoByte011,LAGonauta,aldelaro5,CasualPokePlayer,tygyh,JMC47,Hydr8gon,CrystalGamma,shonumi,galop1n,Dentomologist,orbea,jordan-woyak,Tinob,OatmealDome,Orphis,lioncash,OrN,bentley,sepalani,moncefmechri,kamiyo,EmptyChaos,Buddybenj,Geotale,Parlane,BhaaLseN,archshift,Phatcat,LPFaint99,rlnilsen,smurf3tte,Linktothepast,noahpistilli,Simonx22,skylersaleh,merryhime,MayImilae,SirMangler,ColinDTaylor,LillyJadeKatrin,comex,magumagu,Pokechu22,hackbar,aroulin,glennricster,mandar1jn,Helios747,Gamer64ytb,tom-pratt,skidau,phire,mrgreywater,mimimi085181,deReeperJosh,meffij,degasus,vladfi1,Techjar,krnlyng,FioraAeterna,rukai,booto')", 'type': 'internal_log'}

Recent 'build_status' events

2026-10-29T02:19:29.938317	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-win-dbg-x64', 'pr': 14956, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/31/builds/10861', 'description': 'Build succeeded on builder pr-win-dbg-x64', 'type': 'build_status'}
2026-10-29T02:17:42.108830	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-deb-dbg-x64', 'pr': 14956, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/1/builds/10852', 'description': 'Build succeeded on builder pr-deb-dbg-x64', 'type': 'build_status'}
2026-10-29T02:15:54.753513	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-win-dbg-x64', 'pr': 14956, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/31/builds/10861', 'description': 'Auto build in progress on builder pr-win-dbg-x64', 'type': 'build_status'}
2026-10-29T02:15:54.061286	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-win-x64', 'pr': 14956, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/2/builds/10854', 'description': 'Build succeeded on builder pr-win-x64', 'type': 'build_status'}
2026-10-29T02:12:26.630572	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-osx-universal', 'pr': 14956, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/7/builds/10871', 'description': 'Build succeeded on builder pr-osx-universal', 'type': 'build_status'}
2026-10-29T02:10:41.812887	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-appimage-x64', 'pr': 14956, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/49/builds/105', 'description': 'Build succeeded on builder pr-appimage-x64', 'type': 'build_status'}
2026-10-29T02:10:04.205865	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-deb-dbg-x64', 'pr': 14956, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/1/builds/10852', 'description': 'Auto build in progress on builder pr-deb-dbg-x64', 'type': 'build_status'}
2026-10-29T02:10:03.521177	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-deb-x64', 'pr': 14956, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/26/builds/10851', 'description': 'Build succeeded on builder pr-deb-x64', 'type': 'build_status'}
2026-10-29T02:10:01.842797	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-win-x64', 'pr': 14956, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/2/builds/10854', 'description': 'Auto build in progress on builder pr-win-x64', 'type': 'build_status'}
2026-10-29T02:10:01.141422	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-win-arm64', 'pr': 14956, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/13/builds/10852', 'description': 'Build succeeded on builder pr-win-arm64', 'type': 'build_status'}
2026-10-29T02:09:49.629039	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-ubu-x64', 'pr': 14956, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/27/builds/10853', 'description': 'Build succeeded on builder pr-ubu-x64', 'type': 'build_status'}
2026-10-29T02:09:35.483391	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-android', 'pr': 14956, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/22/builds/10858', 'description': 'Build succeeded on builder pr-android', 'type': 'build_status'}
2026-10-29T02:08:57.085272	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-appimage-arm64', 'pr': 14956, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/50/builds/99', 'description': 'Build succeeded on builder pr-appimage-arm64', 'type': 'build_status'}
2026-10-29T02:07:41.988355	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-flatpak-arm64', 'pr': 14956, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/44/builds/5941', 'description': 'Build succeeded on builder pr-flatpak-arm64', 'type': 'build_status'}
2026-10-29T02:07:02.360521	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-flatpak-x64', 'pr': 14956, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/43/builds/6001', 'description': 'Build succeeded on builder pr-flatpak-x64', 'type': 'build_status'}
2026-10-29T02:02:16.180573	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-freebsd-x64', 'pr': 14956, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/11/builds/10860', 'description': 'Build succeeded on builder pr-freebsd-x64', 'type': 'build_status'}
2026-10-29T02:00:20.020171	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-ubu-x64', 'pr': 14956, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/27/builds/10853', 'description': 'Auto build in progress on builder pr-ubu-x64', 'type': 'build_status'}
2026-10-29T02:00:19.011983	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'lint', 'pr': 14956, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/9/builds/10856', 'description': 'Build succeeded on builder lint', 'type': 'build_status'}
2026-10-29T02:00:18.137522	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-appimage-x64', 'pr': 14956, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/49/builds/105', 'description': 'Auto build in progress on builder pr-appimage-x64', 'type': 'build_status'}
2026-10-29T02:00:17.388265	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-flatpak-x64', 'pr': 14956, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/43/builds/6001', 'description': 'Auto build in progress on builder pr-flatpak-x64', 'type': 'build_status'}
2026-10-29T02:00:16.708868	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-flatpak-arm64', 'pr': 14956, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/44/builds/5941', 'description': 'Auto build in progress on builder pr-flatpak-arm64', 'type': 'build_status'}
2026-10-29T02:00:15.993723	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-osx-universal', 'pr': 14956, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/7/builds/10871', 'description': 'Auto build in progress on builder pr-osx-universal', 'type': 'build_status'}
2026-10-29T02:00:15.309774	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-freebsd-x64', 'pr': 14956, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/11/builds/10860', 'description': 'Auto build in progress on builder pr-freebsd-x64', 'type': 'build_status'}
2026-10-29T02:00:14.610250	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-win-arm64', 'pr': 14956, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/13/builds/10852', 'description': 'Auto build in progress on builder pr-win-arm64', 'type': 'build_status'}
2026-10-29T02:00:13.966691	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'shortrev': '05ce31', 'service': 'pr-android', 'pr': 14956, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/22/builds/10858', 'description': 'Auto build in progress on builder pr-android', 'type': 'build_status'}

Recent 'command_message' events

2026-10-28T23:04:58.747266	{'source': 'discord', 'who': 'joshuavandaele', 'what': '<@1320924779556900984> please rebuild pr 14958', 'type': 'command_message'}
2026-10-25T10:47:06.139619	{'source': 'discord', 'who': 'joshuavandaele', 'what': '<@1320924779556900984> please rebuild PR 14950', 'type': 'command_message'}
2026-10-24T12:14:56.831368	{'source': 'discord', 'who': 'josjuice', 'what': '<@1320924779556900984> please rebuild 14878', 'type': 'command_message'}
2026-10-24T06:04:28.146473	{'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 14947', 'type': 'command_message'}
2026-10-23T22:13:33.399432	{'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 14947', 'type': 'command_message'}
2026-10-20T20:50:52.416011	{'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> rebuild PR 14941', 'type': 'command_message'}
2026-10-19T23:31:13.450087	{'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> rebuild PR 14941', 'type': 'command_message'}
2026-10-18T16:25:37.886250	{'source': 'discord', 'who': 'oatmealdome', 'what': '<@1320924779556900984> please rebuild 14924', 'type': 'command_message'}
2026-10-18T16:25:26.801035	{'source': 'discord', 'who': 'oatmealdome', 'what': '<@1320924779556900984> please rebuild 14923', 'type': 'command_message'}
2026-10-18T10:28:43.546446	{'source': 'discord', 'who': 'josjuice', 'what': '<@1320924779556900984> please rebuild 14924', 'type': 'command_message'}
2026-10-18T10:28:36.025367	{'source': 'discord', 'who': 'josjuice', 'what': '<@1320924779556900984> please rebuild 14923', 'type': 'command_message'}
2026-10-17T16:25:43.666865	{'source': 'discord', 'who': 'oatmealdome', 'what': '<@1320924779556900984> please rebuild 13099', 'type': 'command_message'}

Recent 'dev_wark' events

2026-10-24T06:04:28.146496	{'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
2026-10-23T22:13:33.399466	{'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
2026-10-20T20:50:52.416037	{'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
2026-10-19T23:31:13.450118	{'source': 'discord', 'accepted': True, 'type': 'dev_wark'}

Recent 'gh_issue_comment' events

2026-10-29T02:17:36.601276	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'Pokechu22', 'action': 'created', 'id': 11354, 'title': 'DSPHLE: Add Desert Bus libasnd ucode variants', 'url': 'https://github.com/dolphin-emu/dolphin/pull/11354#issuecomment-6486057909', 'safe_author': True, 'body': "> (I came across this because I'm having issues running Desert Bus on Dolphin and decided to snoop around Github to figure out if it's something I'm doing.)\r\n\r\nSee #11350. I don't entirely remember what I was doing there though.", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/11354', 'id': 1504075512, 'node_id': 'PR_kwDOALCn2M5F15eI', 'number': 11354, 'title': 'DSPHLE: Add Desert Bus libasnd ucode variants', 'user': {'login': 'Pokechu22', 'id': 8334194, 'node_id': 'MDQ6VXNlcjgzMzQxOTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8334194?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Pokechu22', 'html_url': 'https://github.com/Pokechu22', 'followers_url': 'https://api.github.com/users/Pokechu22/followers', 'following_url': 'https://api.github.com/users/Pokechu22/following{/other_user}', 'gists_url': 'https://api.github.com/users/Pokechu22/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Pokechu22/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Pokechu22/subscriptions', 'organizations_url': 'https://api.github.com/users/Pokechu22/orgs', 'repos_url': 'https://api.github.com/users/Pokechu22/repos', 'events_url': 'https://api.github.com/users/Pokechu22/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Pokechu22/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'closed', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 2, 'created_at': '2022-12-20T06:57:41Z', 'updated_at': '2026-10-29T02:17:34Z', 'closed_at': '2022-12-20T19:01:22Z', '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/11354', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/11354', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/11354.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/11354.patch', 'merged_at': '2022-12-20T19:01:22Z'}, 'body': "The [Desert Bus homebrew](https://wiibrew.org/wiki/Desert_Bus) uses custom libasnd DSP ucode. Specifically, v1.0.4 and v1.0.5 are modified versions of the ucode that was added to the libogc repo in devkitpro/libogc@b1b8ecab3af3745c8df0b401abd512bdf5fcc011 (although the binary that was added in that commit does not match the code, and a matching binary only started being used in 2020 - see #10763 for my other notes). That libogc patch is attributed to the author of the homebrew, for what it's worth.\r\n\r\n<details><summary>The difference between the libogc code and v1.0.4 is this, which swaps the left and right channels for stereo audio:</summary>\r\n\r\n```diff\r\ndiff --git a/dsp_mixer.s b/dsp_mixer_desert_bus_v1.0.4.s\r\nindex 3b52614..9de5b84 100644\r\n--- a/dsp_mixer.s\r\n+++ b/dsp_mixer_v1.0.4.s\r\n@@ -834,10 +834,10 @@ stereo_8bits:\r\n        lrri $ACL0, @$AR2\r\n        mrr  $ACM0, $ACL0\r\n        andi $ACM0, #0xff00\r\n-       mrr  $AXH1, $ACM0\r\n+       mrr  $AXH0, $ACM0\r\n        lsl  $ACC0, #8\r\n\r\n-       mrr  $AXH0, $ACL0\r\n+       mrr  $AXH1, $ACL0\r\n        jmp     out_samp\r\n\r\n mono_16bits:\r\n@@ -852,8 +852,8 @@ stereo_16bits:\r\n\r\n // 16 bits stereo\r\n\r\n-       lrri $AXH1, @$AR2\r\n        lrri $AXH0, @$AR2\r\n+       lrri $AXH1, @$AR2\r\n        jmp     out_samp\r\n\r\n mono_8bits_unsigned:\r\n@@ -892,10 +892,10 @@ stereo_8bits_unsigned:\r\n        xori $ACM0, #0x8080 // convert unsigned->signed\r\n        mrr  $ACL0, $ACM0\r\n        andi $ACM0, #0xff00\r\n-       mrr  $AXH1, $ACM0\r\n+       mrr  $AXH0, $ACM0\r\n        lsl  $ACC0, #8\r\n\r\n-       mrr  $AXH0, $ACL0\r\n+       mrr  $AXH1, $ACL0\r\n        jmp     out_samp\r\n\r\n stereo_16bits_le:\r\n@@ -908,8 +908,8 @@ stereo_16bits_le:\r\n        lsl  $ACC1, #8 // byteswap\r\n        lsl  $ACC0, #8\r\n\r\n-       mrr  $AXH1, $ACM1\r\n-       mrr  $AXH0, $ACM0\r\n+       mrr  $AXH0, $ACM1\r\n+       mrr  $AXH1, $ACM0\r\n        //jmp   out_samp\r\n\r\n out_samp:\r\n```\r\n\r\n</details><details><summary>The difference between v1.0.4 and v1.0.5 is this:</summary>\r\n\r\n```diff\r\ndiff --git a/dsp_mixer_desert_bus_v1.0.4.s b/dsp_mixer_desert_bus_v1.0.5.s\r\nindex 9de5b84..9f5d428 100644\r\n--- a/dsp_mixer_desert_bus_v1.0.4.s\r\n+++ b/dsp_mixer_desert_bus_v1.0.5.s\r\n@@ -190,6 +190,14 @@ MEM_SND:\tequ\tdata_end ; it need 2048 words (4096 bytes)\r\n \tjmp\texception6\r\n \tjmp\texception7\r\n \r\n+\t; decodes as sbclr #0x04\r\n+\t; (note that sbclr has unused/ignored bits currently, and the canon version would be 1204)\r\n+\tcw 0x1234\r\n+\t; decodes as subr'l $ACC0, $AX1.H : $AC1.M, @$AR0\r\n+\tcw 0x5678\r\n+\t; decodes as bloopi #0x11, 0x2222\r\n+\tcw 0x1111\r\n+\tcw 0x2222\r\n \tlri     $CONFIG, #0xff\r\n \tlri\t$SR,#0\r\n \ts16         \r\n```\r\n\r\n</details>\r\n\r\nv1.0.0 and v1.0.3 seem to be lost. They would have originally existed at https://wiibrew.org/wiki/Media:Desertbus.zip but this was not archived; [both versions were uploaded to this location](https://wiibrew.org/w/index.php?title=Special:Log&page=File%3ADesertbus.zip).\r\n\r\nThis change does not impact desert bus booting; see #11350 for that. I'm creating a separate PR so that it can be reviewed faster.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354/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/11354/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6486057909', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/11354#issuecomment-6486057909', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354', 'id': 6486057909, 'node_id': 'IC_kwDOALCn2M8AAAABgpljtQ', 'user': {'login': 'Pokechu22', 'id': 8334194, 'node_id': 'MDQ6VXNlcjgzMzQxOTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8334194?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Pokechu22', 'html_url': 'https://github.com/Pokechu22', 'followers_url': 'https://api.github.com/users/Pokechu22/followers', 'following_url': 'https://api.github.com/users/Pokechu22/following{/other_user}', 'gists_url': 'https://api.github.com/users/Pokechu22/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Pokechu22/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Pokechu22/subscriptions', 'organizations_url': 'https://api.github.com/users/Pokechu22/orgs', 'repos_url': 'https://api.github.com/users/Pokechu22/repos', 'events_url': 'https://api.github.com/users/Pokechu22/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Pokechu22/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-29T02:17:34Z', 'updated_at': '2026-10-29T02:17:34Z', 'body': "> (I came across this because I'm having issues running Desert Bus on Dolphin and decided to snoop around Github to figure out if it's something I'm doing.)\r\n\r\nSee #11350. I don't entirely remember what I was doing there though.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6486057909/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-29T01:35:27Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15735, 'watchers_count': 15735, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3362, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 485, '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': 3362, 'open_issues': 485, 'watchers': 15735, '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': 'Pokechu22', 'id': 8334194, 'node_id': 'MDQ6VXNlcjgzMzQxOTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8334194?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Pokechu22', 'html_url': 'https://github.com/Pokechu22', 'followers_url': 'https://api.github.com/users/Pokechu22/followers', 'following_url': 'https://api.github.com/users/Pokechu22/following{/other_user}', 'gists_url': 'https://api.github.com/users/Pokechu22/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Pokechu22/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Pokechu22/subscriptions', 'organizations_url': 'https://api.github.com/users/Pokechu22/orgs', 'repos_url': 'https://api.github.com/users/Pokechu22/repos', 'events_url': 'https://api.github.com/users/Pokechu22/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Pokechu22/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-29T02:10:44.626563	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 14956, 'title': 'Common/Timer: Make "Precision Frame Timing" use x86 TPAUSE/MWAITX instead of spin waiting when available.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14956#issuecomment-6485838659', 'safe_author': True, 'body': '>58:48:892 Common/Timer.cpp:230 D[COMMON]: HardwareSleepUntil via MWAITX. TSC: 4392 MHz\r\n\r\nYou should now see logs like this in spammed in debug builds while a game is running (COMMON type, DEBUG verbosity).\r\nThe TSC rate will generally align with the frequency of your CPU.\r\n', 'raw': {'action': 'edited', 'changes': {'body': {'from': '>58:48:892 Common/Timer.cpp:230 D[COMMON]: HardwareSleepUntil via MWAITX. TSC: 4392 MHz\r\n\r\nYou should see logs like this in spammed in debug builds while a game is running (COMMON type, DEBUG verbosity).\r\nThe TSC rate will generally align with the frequency of your CPU.\r\n'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14956', 'id': 6050000199, 'node_id': 'PR_kwDOALCn2M8AAAABK5W55Q', 'number': 14956, 'title': 'Common/Timer: Make "Precision Frame Timing" use x86 TPAUSE/MWAITX instead of spin waiting when available.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 3, 'created_at': '2026-10-26T23:29:19Z', 'updated_at': '2026-10-29T02:03:00Z', '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/14956', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14956', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14956.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14956.patch', 'merged_at': None}, 'body': '"Precision Frame Timing" should no longer be as power hungry on x86.\nTSC rate for TPAUSE/MWAITX is read from CPUID when available (Intel) or measured otherwise (AMD).\n\nPlease test Intel CPUs.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956/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/14956/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6485838659', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14956#issuecomment-6485838659', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956', 'id': 6485838659, 'node_id': 'IC_kwDOALCn2M8AAAABgpYLQw', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-29T02:03:00Z', 'updated_at': '2026-10-29T02:10:43Z', 'body': '>58:48:892 Common/Timer.cpp:230 D[COMMON]: HardwareSleepUntil via MWAITX. TSC: 4392 MHz\r\n\r\nYou should now see logs like this in spammed in debug builds while a game is running (COMMON type, DEBUG verbosity).\r\nThe TSC rate will generally align with the frequency of your CPU.\r\n', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6485838659/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-29T01:35:27Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15735, 'watchers_count': 15735, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3362, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 485, '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': 3362, 'open_issues': 485, 'watchers': 15735, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-29T02:03:02.426207	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14956, 'title': 'Common/Timer: Make "Precision Frame Timing" use x86 TPAUSE/MWAITX instead of spin waiting when available.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14956#issuecomment-6485838659', 'safe_author': True, 'body': '>58:48:892 Common/Timer.cpp:230 D[COMMON]: HardwareSleepUntil via MWAITX. TSC: 4392 MHz\r\n\r\nYou should see logs like this in spammed in debug builds while a game is running (COMMON type, DEBUG verbosity).\r\nThe TSC rate will generally align with the frequency of your CPU.\r\n', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14956', 'id': 6050000199, 'node_id': 'PR_kwDOALCn2M8AAAABK5W55Q', 'number': 14956, 'title': 'Common/Timer: Make "Precision Frame Timing" use x86 TPAUSE/MWAITX instead of spin waiting when available.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 3, 'created_at': '2026-10-26T23:29:19Z', 'updated_at': '2026-10-29T02:03:00Z', '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/14956', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14956', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14956.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14956.patch', 'merged_at': None}, 'body': '"Precision Frame Timing" should no longer be as power hungry on x86.\nTSC rate for TPAUSE/MWAITX is read from CPUID when available (Intel) or measured otherwise (AMD).\n\nPlease test Intel CPUs.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956/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/14956/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6485838659', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14956#issuecomment-6485838659', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956', 'id': 6485838659, 'node_id': 'IC_kwDOALCn2M8AAAABgpYLQw', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-29T02:03:00Z', 'updated_at': '2026-10-29T02:03:00Z', 'body': '>58:48:892 Common/Timer.cpp:230 D[COMMON]: HardwareSleepUntil via MWAITX. TSC: 4392 MHz\r\n\r\nYou should see logs like this in spammed in debug builds while a game is running (COMMON type, DEBUG verbosity).\r\nThe TSC rate will generally align with the frequency of your CPU.\r\n', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6485838659/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-29T01:35:27Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15735, 'watchers_count': 15735, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3362, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 485, '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': 3362, 'open_issues': 485, 'watchers': 15735, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-28T23:00:04.937785	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'citrusella', 'action': 'created', 'id': 11354, 'title': 'DSPHLE: Add Desert Bus libasnd ucode variants', 'url': 'https://github.com/dolphin-emu/dolphin/pull/11354#issuecomment-6482900630', 'safe_author': False, 'body': "> v1.0.0 and v1.0.3 seem to be lost. They would have originally existed at https://wiibrew.org/wiki/Media:Desertbus.zip but this was not archived; [both versions were uploaded to this location](https://wiibrew.org/w/index.php?title=Special:Log&page=File%3ADesertbus.zip).\r\n\r\nJust so you know, a lot of times files are still stored on-server when deleted in MediaWiki and can be undeleted by an [administrator](https://wiibrew.org/wiki/Special:ListUsers?username=&group=sysop&wpsubmit=&wpFormIdentifier=mw-listusers-form&limit=50), though they'd have to agree to do it. So it's possible they're not *fully lost*.\r\n\r\n(I came across this because I'm having issues running Desert Bus on Dolphin and decided to snoop around Github to figure out if it's something I'm doing.)", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/11354', 'id': 1504075512, 'node_id': 'PR_kwDOALCn2M5F15eI', 'number': 11354, 'title': 'DSPHLE: Add Desert Bus libasnd ucode variants', 'user': {'login': 'Pokechu22', 'id': 8334194, 'node_id': 'MDQ6VXNlcjgzMzQxOTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8334194?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Pokechu22', 'html_url': 'https://github.com/Pokechu22', 'followers_url': 'https://api.github.com/users/Pokechu22/followers', 'following_url': 'https://api.github.com/users/Pokechu22/following{/other_user}', 'gists_url': 'https://api.github.com/users/Pokechu22/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Pokechu22/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Pokechu22/subscriptions', 'organizations_url': 'https://api.github.com/users/Pokechu22/orgs', 'repos_url': 'https://api.github.com/users/Pokechu22/repos', 'events_url': 'https://api.github.com/users/Pokechu22/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Pokechu22/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'closed', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 1, 'created_at': '2022-12-20T06:57:41Z', 'updated_at': '2026-10-28T23:00:02Z', 'closed_at': '2022-12-20T19:01:22Z', '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/11354', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/11354', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/11354.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/11354.patch', 'merged_at': '2022-12-20T19:01:22Z'}, 'body': "The [Desert Bus homebrew](https://wiibrew.org/wiki/Desert_Bus) uses custom libasnd DSP ucode. Specifically, v1.0.4 and v1.0.5 are modified versions of the ucode that was added to the libogc repo in devkitpro/libogc@b1b8ecab3af3745c8df0b401abd512bdf5fcc011 (although the binary that was added in that commit does not match the code, and a matching binary only started being used in 2020 - see #10763 for my other notes). That libogc patch is attributed to the author of the homebrew, for what it's worth.\r\n\r\n<details><summary>The difference between the libogc code and v1.0.4 is this, which swaps the left and right channels for stereo audio:</summary>\r\n\r\n```diff\r\ndiff --git a/dsp_mixer.s b/dsp_mixer_desert_bus_v1.0.4.s\r\nindex 3b52614..9de5b84 100644\r\n--- a/dsp_mixer.s\r\n+++ b/dsp_mixer_v1.0.4.s\r\n@@ -834,10 +834,10 @@ stereo_8bits:\r\n        lrri $ACL0, @$AR2\r\n        mrr  $ACM0, $ACL0\r\n        andi $ACM0, #0xff00\r\n-       mrr  $AXH1, $ACM0\r\n+       mrr  $AXH0, $ACM0\r\n        lsl  $ACC0, #8\r\n\r\n-       mrr  $AXH0, $ACL0\r\n+       mrr  $AXH1, $ACL0\r\n        jmp     out_samp\r\n\r\n mono_16bits:\r\n@@ -852,8 +852,8 @@ stereo_16bits:\r\n\r\n // 16 bits stereo\r\n\r\n-       lrri $AXH1, @$AR2\r\n        lrri $AXH0, @$AR2\r\n+       lrri $AXH1, @$AR2\r\n        jmp     out_samp\r\n\r\n mono_8bits_unsigned:\r\n@@ -892,10 +892,10 @@ stereo_8bits_unsigned:\r\n        xori $ACM0, #0x8080 // convert unsigned->signed\r\n        mrr  $ACL0, $ACM0\r\n        andi $ACM0, #0xff00\r\n-       mrr  $AXH1, $ACM0\r\n+       mrr  $AXH0, $ACM0\r\n        lsl  $ACC0, #8\r\n\r\n-       mrr  $AXH0, $ACL0\r\n+       mrr  $AXH1, $ACL0\r\n        jmp     out_samp\r\n\r\n stereo_16bits_le:\r\n@@ -908,8 +908,8 @@ stereo_16bits_le:\r\n        lsl  $ACC1, #8 // byteswap\r\n        lsl  $ACC0, #8\r\n\r\n-       mrr  $AXH1, $ACM1\r\n-       mrr  $AXH0, $ACM0\r\n+       mrr  $AXH0, $ACM1\r\n+       mrr  $AXH1, $ACM0\r\n        //jmp   out_samp\r\n\r\n out_samp:\r\n```\r\n\r\n</details><details><summary>The difference between v1.0.4 and v1.0.5 is this:</summary>\r\n\r\n```diff\r\ndiff --git a/dsp_mixer_desert_bus_v1.0.4.s b/dsp_mixer_desert_bus_v1.0.5.s\r\nindex 9de5b84..9f5d428 100644\r\n--- a/dsp_mixer_desert_bus_v1.0.4.s\r\n+++ b/dsp_mixer_desert_bus_v1.0.5.s\r\n@@ -190,6 +190,14 @@ MEM_SND:\tequ\tdata_end ; it need 2048 words (4096 bytes)\r\n \tjmp\texception6\r\n \tjmp\texception7\r\n \r\n+\t; decodes as sbclr #0x04\r\n+\t; (note that sbclr has unused/ignored bits currently, and the canon version would be 1204)\r\n+\tcw 0x1234\r\n+\t; decodes as subr'l $ACC0, $AX1.H : $AC1.M, @$AR0\r\n+\tcw 0x5678\r\n+\t; decodes as bloopi #0x11, 0x2222\r\n+\tcw 0x1111\r\n+\tcw 0x2222\r\n \tlri     $CONFIG, #0xff\r\n \tlri\t$SR,#0\r\n \ts16         \r\n```\r\n\r\n</details>\r\n\r\nv1.0.0 and v1.0.3 seem to be lost. They would have originally existed at https://wiibrew.org/wiki/Media:Desertbus.zip but this was not archived; [both versions were uploaded to this location](https://wiibrew.org/w/index.php?title=Special:Log&page=File%3ADesertbus.zip).\r\n\r\nThis change does not impact desert bus booting; see #11350 for that. I'm creating a separate PR so that it can be reviewed faster.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354/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/11354/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6482900630', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/11354#issuecomment-6482900630', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354', 'id': 6482900630, 'node_id': 'IC_kwDOALCn2M8AAAABgmk2lg', 'user': {'login': 'citrusella', 'id': 14182450, 'node_id': 'MDQ6VXNlcjE0MTgyNDUw', 'avatar_url': 'https://avatars.githubusercontent.com/u/14182450?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/citrusella', 'html_url': 'https://github.com/citrusella', 'followers_url': 'https://api.github.com/users/citrusella/followers', 'following_url': 'https://api.github.com/users/citrusella/following{/other_user}', 'gists_url': 'https://api.github.com/users/citrusella/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/citrusella/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/citrusella/subscriptions', 'organizations_url': 'https://api.github.com/users/citrusella/orgs', 'repos_url': 'https://api.github.com/users/citrusella/repos', 'events_url': 'https://api.github.com/users/citrusella/events{/privacy}', 'received_events_url': 'https://api.github.com/users/citrusella/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-28T23:00:02Z', 'updated_at': '2026-10-28T23:00:02Z', 'body': "> v1.0.0 and v1.0.3 seem to be lost. They would have originally existed at https://wiibrew.org/wiki/Media:Desertbus.zip but this was not archived; [both versions were uploaded to this location](https://wiibrew.org/w/index.php?title=Special:Log&page=File%3ADesertbus.zip).\r\n\r\nJust so you know, a lot of times files are still stored on-server when deleted in MediaWiki and can be undeleted by an [administrator](https://wiibrew.org/wiki/Special:ListUsers?username=&group=sysop&wpsubmit=&wpFormIdentifier=mw-listusers-form&limit=50), though they'd have to agree to do it. So it's possible they're not *fully lost*.\r\n\r\n(I came across this because I'm having issues running Desert Bus on Dolphin and decided to snoop around Github to figure out if it's something I'm doing.)", 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6482900630/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T22:39:26Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15733, 'watchers_count': 15733, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3361, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3361, 'open_issues': 484, 'watchers': 15733, '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': 'citrusella', 'id': 14182450, 'node_id': 'MDQ6VXNlcjE0MTgyNDUw', 'avatar_url': 'https://avatars.githubusercontent.com/u/14182450?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/citrusella', 'html_url': 'https://github.com/citrusella', 'followers_url': 'https://api.github.com/users/citrusella/followers', 'following_url': 'https://api.github.com/users/citrusella/following{/other_user}', 'gists_url': 'https://api.github.com/users/citrusella/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/citrusella/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/citrusella/subscriptions', 'organizations_url': 'https://api.github.com/users/citrusella/orgs', 'repos_url': 'https://api.github.com/users/citrusella/repos', 'events_url': 'https://api.github.com/users/citrusella/events{/privacy}', 'received_events_url': 'https://api.github.com/users/citrusella/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-28T21:55:20.817922	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'SuperSamus', 'action': 'edited', 'id': 14877, 'title': 'PerformanceTracker: Small cleanup, properly use RunningVariance for the standard deviation', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14877#issuecomment-6481465058', 'safe_author': True, 'body': 'Why do math, when you can just test out a bad-case scenario?\r\n\r\nTesting a code that creates a random array of very unstable frametimes, and a few stutters randomly inserted:\r\n```cpp\r\nstatic constexpr std::size_t MAX_DT_QUEUE_SIZE = 4096;\r\n\r\nstatic constexpr double ACTUAL_FRAME_DT = 1.0 / 60.0;\r\nstatic constexpr double ACTUAL_FRAME_ERR = 0.002;\r\nstatic constexpr double STUTTER_FRAME_DT = 0.55;\r\nstatic constexpr double STUTTER_FRAME_ERR = 0.5;\r\n\r\n// If the game actually ran with no stutters at 60 FPS (and the stutter frames were just an illusion\r\n// for Dolphin), this would take 80 days.\r\nstatic constexpr std::size_t TOTAL_FRAMES = MAX_DT_QUEUE_SIZE * 100000;\r\nstatic constexpr std::size_t AVG_N_FRAMES_PER_STUTTER = TOTAL_FRAMES / 3600;\r\n```\r\n\r\nHow close is the final running std, compared to calculating it from scratch in the queue?\r\nRunning a few times, and...\r\n```\r\nActual std is 0.0011613785790244263 seconds\r\nRunning std   0.0011613785791494136, diff 1.2498726012499795e-13\r\n\r\nActual std is 0.0011512422871999381 seconds\r\nRunning std   0.0011512422871978918, diff 2.046323180349141e-15\r\n\r\nActual std is 0.005481212866823841 seconds\r\nRunning std   0.00548121286682146, diff 2.3809079707781677e-15\r\n\r\nActual std is 0.00969206635198026 seconds\r\nRunning std   0.009692066351979268, diff 9.922618282587337e-16\r\n``` \r\n\r\nSo... I suppose nothing to worry about.\r\n\r\n<details>\r\n<summary>Code used for testing</summary>\r\n\r\n```cpp\r\n#include <algorithm>\r\n#include <cassert>\r\n#include <cmath>\r\n#include <concepts>\r\n#include <cstddef>\r\n#include <print>\r\n#include <random>\r\n#include <ranges>\r\n#include <span>\r\n#include <vector>\r\n\r\ntemplate <typename T>\r\nclass RunningMean\r\n{\r\npublic:\r\n  constexpr void Clear() { *this = {}; }\r\n\r\n  constexpr void Push(T x) { m_mean = m_mean + (x - m_mean) / ++m_count; }\r\n  constexpr void Pop(T x)\r\n  {\r\n    if (m_count <= 1)\r\n    {\r\n      Clear();\r\n      return;\r\n    }\r\n    m_mean = m_mean - (x - m_mean) / --m_count;\r\n  }\r\n\r\n  constexpr size_t Count() const { return m_count; }\r\n  constexpr T Mean() const { return m_mean; }\r\n  constexpr T Total() const { return m_mean * m_count; }\r\n\r\nprivate:\r\n  size_t m_count = 0;\r\n  T m_mean{};\r\n};\r\n\r\ntemplate <typename T>\r\nclass RunningVariance\r\n{\r\npublic:\r\n  constexpr void Clear() { *this = {}; }\r\n\r\n  constexpr void Push(T x)\r\n  {\r\n    const auto old_mean = m_running_mean.Mean();\r\n    m_running_mean.Push(x);\r\n    m_variance += (x - old_mean) * (x - m_running_mean.Mean());\r\n  }\r\n  constexpr void Pop(T x)\r\n  {\r\n    if (m_running_mean.Count() <= 1)\r\n    {\r\n      Clear();\r\n      return;\r\n    }\r\n\r\n    const T old_mean = m_running_mean.Mean();\r\n    m_running_mean.Pop(x);\r\n    m_variance -= (x - old_mean) * (x - m_running_mean.Mean());\r\n  }\r\n\r\n  constexpr size_t Count() const { return m_running_mean.Count(); }\r\n  constexpr T Mean() const { return m_running_mean.Mean(); }\r\n  constexpr T Total() const { return m_running_mean.Total(); }\r\n\r\n  constexpr T Variance() const { return m_variance / (Count() - 1); }\r\n  T StandardDeviation() const { return std::sqrt(Variance()); }\r\n\r\n  constexpr T PopulationVariance() const { return m_variance / Count(); }\r\n  T PopulationStandardDeviation() const { return std::sqrt(PopulationVariance()); }\r\n\r\nprivate:\r\n  RunningMean<T> m_running_mean;\r\n  T m_variance{};\r\n};\r\n\r\n// Function slopped with AI\r\ntemplate <std::floating_point T>\r\nvoid populate_random(std::span<T> arr, T C, T e, T B, T d, std::size_t M, std::mt19937& rng)\r\n{\r\n  std::uniform_real_distribution<T> U(T{-1}, T{1});\r\n  auto jitter = [&](T center, T limit) { return center + U(rng) * limit; };\r\n\r\n  // 1) Fill everything with C ± e\r\n  std::ranges::generate(arr, [&] { return jitter(C, e); });\r\n\r\n  // 2) Sample M distinct indices, then overwrite those with B ± d\r\n  std::vector<std::size_t> picked;\r\n  picked.reserve(M);\r\n  std::ranges::sample(std::views::iota(std::size_t{0}, arr.size()), std::back_inserter(picked), M,\r\n                      rng);\r\n\r\n  for (std::size_t i : picked)\r\n    arr[i] = jitter(B, d);\r\n}\r\n\r\nstatic constexpr std::size_t MAX_DT_QUEUE_SIZE = 4096;\r\n\r\nstatic constexpr double ACTUAL_FRAME_DT = 1.0 / 60.0;\r\nstatic constexpr double ACTUAL_FRAME_ERR = 0.002;\r\nstatic constexpr double STUTTER_FRAME_DT = 0.55;\r\nstatic constexpr double STUTTER_FRAME_ERR = 0.5;\r\n\r\n// If the game actually ran with no stutters at 60 FPS (and the stutter frames were just an illusion\r\n// for Dolphin), this would take 80 days.\r\nstatic constexpr std::size_t TOTAL_FRAMES = MAX_DT_QUEUE_SIZE * 100000;\r\nstatic constexpr std::size_t AVG_N_FRAMES_PER_STUTTER = TOTAL_FRAMES / 3600;\r\n\r\nint main()\r\n{\r\n  std::mt19937 rng(std::random_device{}());\r\n  // I apologise for allocating an entire vector (which would only be necessary for the final span)\r\n  // instead of generating the random dt on the fly. I\'m lazy.\r\n  std::vector<double> dts(TOTAL_FRAMES);\r\n  populate_random(std::span(dts), ACTUAL_FRAME_DT, ACTUAL_FRAME_ERR, STUTTER_FRAME_DT,\r\n                  STUTTER_FRAME_ERR, AVG_N_FRAMES_PER_STUTTER, rng);\r\n\r\n  const auto end_span = std::span(dts).last(MAX_DT_QUEUE_SIZE);\r\n  const double avg = std::ranges::fold_left(end_span, 0.0, std::plus{}) / MAX_DT_QUEUE_SIZE;\r\n  const double accurate_std = std::sqrt(\r\n      std::ranges::fold_left(\r\n          end_span, 0.0, [avg](double s2, double dt) { return s2 + ((dt - avg) * (dt - avg)); }) /\r\n      (MAX_DT_QUEUE_SIZE - 1));\r\n\r\n  std::println("Actual std is {} seconds", accurate_std);\r\n\r\n  RunningVariance<double> running_variance;\r\n\r\n  for (double dt : std::span(dts).first(MAX_DT_QUEUE_SIZE))\r\n  {\r\n    running_variance.Push(dt);\r\n  }\r\n  for (std::size_t i = MAX_DT_QUEUE_SIZE; i < dts.size(); ++i)\r\n  {\r\n    running_variance.Pop(dts[i - MAX_DT_QUEUE_SIZE]);\r\n    running_variance.Push(dts[i]);\r\n  }\r\n\r\n  std::println("Running std   {}, diff {}", running_variance.StandardDeviation(),\r\n               std::abs(accurate_std - running_variance.StandardDeviation()));\r\n}\r\n```\r\n</details>', 'raw': {'action': 'edited', 'changes': {'body': {'from': 'Why do math, when you can just test out a bad-case scenario?\r\n\r\nTesting a code that creates a random array of very unstable frametimes, and a few stutters randomly inserted:\r\n```cpp\r\nstatic constexpr std::size_t MAX_DT_QUEUE_SIZE = 4096;\r\n\r\nstatic constexpr double ACTUAL_FRAME_DT = 1.0 / 60.0;\r\nstatic constexpr double ACTUAL_FRAME_ERR = 0.002;\r\nstatic constexpr double STUTTER_FRAME_DT = 0.55;\r\nstatic constexpr double STUTTER_FRAME_ERR = 0.5;\r\n\r\n// If the game actually ran with no stutters at 60 FPS (and the stutter frames were just an illusion\r\n// for Dolphin), this would take 80 days.\r\nstatic constexpr std::size_t TOTAL_FRAMES = MAX_DT_QUEUE_SIZE * 100000;\r\nstatic constexpr std::size_t AVG_N_FRAMES_PER_STUTTER = TOTAL_FRAMES / 3600;\r\n```\r\n\r\nHow close is the final running std, compared to calculating it from scratch in the queue?\r\nRunning a few times, and...\r\n```\r\nActual std is 0.0011613785790244263 seconds\r\nRunning std   0.0011613785791494136, diff 1.2498726012499795e-13\r\n\r\nActual std is 0.0011512422871999381 seconds\r\nRunning std   0.0011512422871978918, diff 2.046323180349141e-15\r\n\r\nActual std is 0.005481212866823841 seconds\r\nRunning std   0.00548121286682146, diff 2.3809079707781677e-15\r\n\r\nActual std is 0.00969206635198026 seconds\r\nRunning std   0.009692066351979268, diff 9.922618282587337e-16\r\n``` \r\n\r\nSo... I suppose nothing to worry about.\r\n\r\n<details>\r\n<summary>Code used for testing</summary>\r\n```cpp\r\n#include <algorithm>\r\n#include <cassert>\r\n#include <cmath>\r\n#include <concepts>\r\n#include <cstddef>\r\n#include <print>\r\n#include <random>\r\n#include <ranges>\r\n#include <span>\r\n#include <vector>\r\n\r\ntemplate <typename T>\r\nclass RunningMean\r\n{\r\npublic:\r\n  constexpr void Clear() { *this = {}; }\r\n\r\n  constexpr void Push(T x) { m_mean = m_mean + (x - m_mean) / ++m_count; }\r\n  constexpr void Pop(T x)\r\n  {\r\n    if (m_count <= 1)\r\n    {\r\n      Clear();\r\n      return;\r\n    }\r\n    m_mean = m_mean - (x - m_mean) / --m_count;\r\n  }\r\n\r\n  constexpr size_t Count() const { return m_count; }\r\n  constexpr T Mean() const { return m_mean; }\r\n  constexpr T Total() const { return m_mean * m_count; }\r\n\r\nprivate:\r\n  size_t m_count = 0;\r\n  T m_mean{};\r\n};\r\n\r\ntemplate <typename T>\r\nclass RunningVariance\r\n{\r\npublic:\r\n  constexpr void Clear() { *this = {}; }\r\n\r\n  constexpr void Push(T x)\r\n  {\r\n    const auto old_mean = m_running_mean.Mean();\r\n    m_running_mean.Push(x);\r\n    m_variance += (x - old_mean) * (x - m_running_mean.Mean());\r\n  }\r\n  constexpr void Pop(T x)\r\n  {\r\n    if (m_running_mean.Count() <= 1)\r\n    {\r\n      Clear();\r\n      return;\r\n    }\r\n\r\n    const T old_mean = m_running_mean.Mean();\r\n    m_running_mean.Pop(x);\r\n    m_variance -= (x - old_mean) * (x - m_running_mean.Mean());\r\n  }\r\n\r\n  constexpr size_t Count() const { return m_running_mean.Count(); }\r\n  constexpr T Mean() const { return m_running_mean.Mean(); }\r\n  constexpr T Total() const { return m_running_mean.Total(); }\r\n\r\n  constexpr T Variance() const { return m_variance / (Count() - 1); }\r\n  T StandardDeviation() const { return std::sqrt(Variance()); }\r\n\r\n  constexpr T PopulationVariance() const { return m_variance / Count(); }\r\n  T PopulationStandardDeviation() const { return std::sqrt(PopulationVariance()); }\r\n\r\nprivate:\r\n  RunningMean<T> m_running_mean;\r\n  T m_variance{};\r\n};\r\n\r\n// Function slopped with AI\r\ntemplate <std::floating_point T>\r\nvoid populate_random(std::span<T> arr, T C, T e, T B, T d, std::size_t M, std::mt19937& rng)\r\n{\r\n  std::uniform_real_distribution<T> U(T{-1}, T{1});\r\n  auto jitter = [&](T center, T limit) { return center + U(rng) * limit; };\r\n\r\n  // 1) Fill everything with C ± e\r\n  std::ranges::generate(arr, [&] { return jitter(C, e); });\r\n\r\n  // 2) Sample M distinct indices, then overwrite those with B ± d\r\n  std::vector<std::size_t> picked;\r\n  picked.reserve(M);\r\n  std::ranges::sample(std::views::iota(std::size_t{0}, arr.size()), std::back_inserter(picked), M,\r\n                      rng);\r\n\r\n  for (std::size_t i : picked)\r\n    arr[i] = jitter(B, d);\r\n}\r\n\r\nstatic constexpr std::size_t MAX_DT_QUEUE_SIZE = 4096;\r\n\r\nstatic constexpr double ACTUAL_FRAME_DT = 1.0 / 60.0;\r\nstatic constexpr double ACTUAL_FRAME_ERR = 0.002;\r\nstatic constexpr double STUTTER_FRAME_DT = 0.55;\r\nstatic constexpr double STUTTER_FRAME_ERR = 0.5;\r\n\r\n// If the game actually ran with no stutters at 60 FPS (and the stutter frames were just an illusion\r\n// for Dolphin), this would take 80 days.\r\nstatic constexpr std::size_t TOTAL_FRAMES = MAX_DT_QUEUE_SIZE * 100000;\r\nstatic constexpr std::size_t AVG_N_FRAMES_PER_STUTTER = TOTAL_FRAMES / 3600;\r\n\r\nint main()\r\n{\r\n  std::mt19937 rng(std::random_device{}());\r\n  // I apologise for allocating an entire vector (which would only be necessary for the final span)\r\n  // instead of generating the random dt on the fly. I\'m lazy.\r\n  std::vector<double> dts(TOTAL_FRAMES);\r\n  populate_random(std::span(dts), ACTUAL_FRAME_DT, ACTUAL_FRAME_ERR, STUTTER_FRAME_DT,\r\n                  STUTTER_FRAME_ERR, AVG_N_FRAMES_PER_STUTTER, rng);\r\n\r\n  const auto end_span = std::span(dts).last(MAX_DT_QUEUE_SIZE);\r\n  const double avg = std::ranges::fold_left(end_span, 0.0, std::plus{}) / MAX_DT_QUEUE_SIZE;\r\n  const double accurate_std = std::sqrt(\r\n      std::ranges::fold_left(\r\n          end_span, 0.0, [avg](double s2, double dt) { return s2 + ((dt - avg) * (dt - avg)); }) /\r\n      (MAX_DT_QUEUE_SIZE - 1));\r\n\r\n  std::println("Actual std is {} seconds", accurate_std);\r\n\r\n  RunningVariance<double> running_variance;\r\n\r\n  for (double dt : std::span(dts).first(MAX_DT_QUEUE_SIZE))\r\n  {\r\n    running_variance.Push(dt);\r\n  }\r\n  for (std::size_t i = MAX_DT_QUEUE_SIZE; i < dts.size(); ++i)\r\n  {\r\n    running_variance.Pop(dts[i - MAX_DT_QUEUE_SIZE]);\r\n    running_variance.Push(dts[i]);\r\n  }\r\n\r\n  std::println("Running std   {}, diff {}", running_variance.StandardDeviation(),\r\n               std::abs(accurate_std - running_variance.StandardDeviation()));\r\n}\r\n```\r\n</details>'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14877', 'id': 5501153399, 'node_id': 'PR_kwDOALCn2M8AAAABEGWgYg', 'number': 14877, 'title': 'PerformanceTracker: Small cleanup, properly use RunningVariance for the standard deviation', '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}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 5, 'created_at': '2026-09-18T15:06:30Z', 'updated_at': '2026-10-28T21:46:00Z', '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/14877', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14877', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14877.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14877.patch', 'merged_at': None}, 'body': '`UpdateStats()` was calculating the standard deviation from the entirety of `m_dt_queue`, which has a noticeable performance impact when the frame rates are very high.\r\nOn a scene so light it runs at 3000 FPS, `UpdateStats()` was taking around 5% of the profiling (at default 1s sample window). Now it doesn\'t.\r\n\r\nI\'m not opening this PR with confidence.\r\nMainly I\'m not a fan of using `MathUtil::RunningVariance<double>` (I mean with `double` specifically, see the comment) since the `static_cast`s are ugly, but I have no better idea other than "the conditions to get an overflow with `DT::rep` are unlikely enough that there\'s no need to care".\r\nBut on the other hand, `double` causes the risk of the measurements getting less and less accurate over time.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/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/14877/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6481465058', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14877#issuecomment-6481465058', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877', 'id': 6481465058, 'node_id': 'IC_kwDOALCn2M8AAAABglNO4g', 'user': {'login': 'SuperSamus', 'id': 40663462, 'node_id': 'MDQ6VXNlcjQwNjYzNDYy', 'avatar_url': 'https://avatars.githubusercontent.com/u/40663462?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/SuperSamus', 'html_url': 'https://github.com/SuperSamus', 'followers_url': 'https://api.github.com/users/SuperSamus/followers', 'following_url': 'https://api.github.com/users/SuperSamus/following{/other_user}', 'gists_url': 'https://api.github.com/users/SuperSamus/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/SuperSamus/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/SuperSamus/subscriptions', 'organizations_url': 'https://api.github.com/users/SuperSamus/orgs', 'repos_url': 'https://api.github.com/users/SuperSamus/repos', 'events_url': 'https://api.github.com/users/SuperSamus/events{/privacy}', 'received_events_url': 'https://api.github.com/users/SuperSamus/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-28T21:45:59Z', 'updated_at': '2026-10-28T21:55:19Z', 'body': 'Why do math, when you can just test out a bad-case scenario?\r\n\r\nTesting a code that creates a random array of very unstable frametimes, and a few stutters randomly inserted:\r\n```cpp\r\nstatic constexpr std::size_t MAX_DT_QUEUE_SIZE = 4096;\r\n\r\nstatic constexpr double ACTUAL_FRAME_DT = 1.0 / 60.0;\r\nstatic constexpr double ACTUAL_FRAME_ERR = 0.002;\r\nstatic constexpr double STUTTER_FRAME_DT = 0.55;\r\nstatic constexpr double STUTTER_FRAME_ERR = 0.5;\r\n\r\n// If the game actually ran with no stutters at 60 FPS (and the stutter frames were just an illusion\r\n// for Dolphin), this would take 80 days.\r\nstatic constexpr std::size_t TOTAL_FRAMES = MAX_DT_QUEUE_SIZE * 100000;\r\nstatic constexpr std::size_t AVG_N_FRAMES_PER_STUTTER = TOTAL_FRAMES / 3600;\r\n```\r\n\r\nHow close is the final running std, compared to calculating it from scratch in the queue?\r\nRunning a few times, and...\r\n```\r\nActual std is 0.0011613785790244263 seconds\r\nRunning std   0.0011613785791494136, diff 1.2498726012499795e-13\r\n\r\nActual std is 0.0011512422871999381 seconds\r\nRunning std   0.0011512422871978918, diff 2.046323180349141e-15\r\n\r\nActual std is 0.005481212866823841 seconds\r\nRunning std   0.00548121286682146, diff 2.3809079707781677e-15\r\n\r\nActual std is 0.00969206635198026 seconds\r\nRunning std   0.009692066351979268, diff 9.922618282587337e-16\r\n``` \r\n\r\nSo... I suppose nothing to worry about.\r\n\r\n<details>\r\n<summary>Code used for testing</summary>\r\n\r\n```cpp\r\n#include <algorithm>\r\n#include <cassert>\r\n#include <cmath>\r\n#include <concepts>\r\n#include <cstddef>\r\n#include <print>\r\n#include <random>\r\n#include <ranges>\r\n#include <span>\r\n#include <vector>\r\n\r\ntemplate <typename T>\r\nclass RunningMean\r\n{\r\npublic:\r\n  constexpr void Clear() { *this = {}; }\r\n\r\n  constexpr void Push(T x) { m_mean = m_mean + (x - m_mean) / ++m_count; }\r\n  constexpr void Pop(T x)\r\n  {\r\n    if (m_count <= 1)\r\n    {\r\n      Clear();\r\n      return;\r\n    }\r\n    m_mean = m_mean - (x - m_mean) / --m_count;\r\n  }\r\n\r\n  constexpr size_t Count() const { return m_count; }\r\n  constexpr T Mean() const { return m_mean; }\r\n  constexpr T Total() const { return m_mean * m_count; }\r\n\r\nprivate:\r\n  size_t m_count = 0;\r\n  T m_mean{};\r\n};\r\n\r\ntemplate <typename T>\r\nclass RunningVariance\r\n{\r\npublic:\r\n  constexpr void Clear() { *this = {}; }\r\n\r\n  constexpr void Push(T x)\r\n  {\r\n    const auto old_mean = m_running_mean.Mean();\r\n    m_running_mean.Push(x);\r\n    m_variance += (x - old_mean) * (x - m_running_mean.Mean());\r\n  }\r\n  constexpr void Pop(T x)\r\n  {\r\n    if (m_running_mean.Count() <= 1)\r\n    {\r\n      Clear();\r\n      return;\r\n    }\r\n\r\n    const T old_mean = m_running_mean.Mean();\r\n    m_running_mean.Pop(x);\r\n    m_variance -= (x - old_mean) * (x - m_running_mean.Mean());\r\n  }\r\n\r\n  constexpr size_t Count() const { return m_running_mean.Count(); }\r\n  constexpr T Mean() const { return m_running_mean.Mean(); }\r\n  constexpr T Total() const { return m_running_mean.Total(); }\r\n\r\n  constexpr T Variance() const { return m_variance / (Count() - 1); }\r\n  T StandardDeviation() const { return std::sqrt(Variance()); }\r\n\r\n  constexpr T PopulationVariance() const { return m_variance / Count(); }\r\n  T PopulationStandardDeviation() const { return std::sqrt(PopulationVariance()); }\r\n\r\nprivate:\r\n  RunningMean<T> m_running_mean;\r\n  T m_variance{};\r\n};\r\n\r\n// Function slopped with AI\r\ntemplate <std::floating_point T>\r\nvoid populate_random(std::span<T> arr, T C, T e, T B, T d, std::size_t M, std::mt19937& rng)\r\n{\r\n  std::uniform_real_distribution<T> U(T{-1}, T{1});\r\n  auto jitter = [&](T center, T limit) { return center + U(rng) * limit; };\r\n\r\n  // 1) Fill everything with C ± e\r\n  std::ranges::generate(arr, [&] { return jitter(C, e); });\r\n\r\n  // 2) Sample M distinct indices, then overwrite those with B ± d\r\n  std::vector<std::size_t> picked;\r\n  picked.reserve(M);\r\n  std::ranges::sample(std::views::iota(std::size_t{0}, arr.size()), std::back_inserter(picked), M,\r\n                      rng);\r\n\r\n  for (std::size_t i : picked)\r\n    arr[i] = jitter(B, d);\r\n}\r\n\r\nstatic constexpr std::size_t MAX_DT_QUEUE_SIZE = 4096;\r\n\r\nstatic constexpr double ACTUAL_FRAME_DT = 1.0 / 60.0;\r\nstatic constexpr double ACTUAL_FRAME_ERR = 0.002;\r\nstatic constexpr double STUTTER_FRAME_DT = 0.55;\r\nstatic constexpr double STUTTER_FRAME_ERR = 0.5;\r\n\r\n// If the game actually ran with no stutters at 60 FPS (and the stutter frames were just an illusion\r\n// for Dolphin), this would take 80 days.\r\nstatic constexpr std::size_t TOTAL_FRAMES = MAX_DT_QUEUE_SIZE * 100000;\r\nstatic constexpr std::size_t AVG_N_FRAMES_PER_STUTTER = TOTAL_FRAMES / 3600;\r\n\r\nint main()\r\n{\r\n  std::mt19937 rng(std::random_device{}());\r\n  // I apologise for allocating an entire vector (which would only be necessary for the final span)\r\n  // instead of generating the random dt on the fly. I\'m lazy.\r\n  std::vector<double> dts(TOTAL_FRAMES);\r\n  populate_random(std::span(dts), ACTUAL_FRAME_DT, ACTUAL_FRAME_ERR, STUTTER_FRAME_DT,\r\n                  STUTTER_FRAME_ERR, AVG_N_FRAMES_PER_STUTTER, rng);\r\n\r\n  const auto end_span = std::span(dts).last(MAX_DT_QUEUE_SIZE);\r\n  const double avg = std::ranges::fold_left(end_span, 0.0, std::plus{}) / MAX_DT_QUEUE_SIZE;\r\n  const double accurate_std = std::sqrt(\r\n      std::ranges::fold_left(\r\n          end_span, 0.0, [avg](double s2, double dt) { return s2 + ((dt - avg) * (dt - avg)); }) /\r\n      (MAX_DT_QUEUE_SIZE - 1));\r\n\r\n  std::println("Actual std is {} seconds", accurate_std);\r\n\r\n  RunningVariance<double> running_variance;\r\n\r\n  for (double dt : std::span(dts).first(MAX_DT_QUEUE_SIZE))\r\n  {\r\n    running_variance.Push(dt);\r\n  }\r\n  for (std::size_t i = MAX_DT_QUEUE_SIZE; i < dts.size(); ++i)\r\n  {\r\n    running_variance.Pop(dts[i - MAX_DT_QUEUE_SIZE]);\r\n    running_variance.Push(dts[i]);\r\n  }\r\n\r\n  std::println("Running std   {}, diff {}", running_variance.StandardDeviation(),\r\n               std::abs(accurate_std - running_variance.StandardDeviation()));\r\n}\r\n```\r\n</details>', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6481465058/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T20:58:48Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15732, 'watchers_count': 15732, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15732, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'SuperSamus', 'id': 40663462, 'node_id': 'MDQ6VXNlcjQwNjYzNDYy', 'avatar_url': 'https://avatars.githubusercontent.com/u/40663462?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/SuperSamus', 'html_url': 'https://github.com/SuperSamus', 'followers_url': 'https://api.github.com/users/SuperSamus/followers', 'following_url': 'https://api.github.com/users/SuperSamus/following{/other_user}', 'gists_url': 'https://api.github.com/users/SuperSamus/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/SuperSamus/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/SuperSamus/subscriptions', 'organizations_url': 'https://api.github.com/users/SuperSamus/orgs', 'repos_url': 'https://api.github.com/users/SuperSamus/repos', 'events_url': 'https://api.github.com/users/SuperSamus/events{/privacy}', 'received_events_url': 'https://api.github.com/users/SuperSamus/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-28T21:46:02.208059	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'SuperSamus', 'action': 'created', 'id': 14877, 'title': 'PerformanceTracker: Small cleanup, properly use RunningVariance for the standard deviation', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14877#issuecomment-6481465058', 'safe_author': True, 'body': 'Why do math, when you can just test out a bad-case scenario?\r\n\r\nTesting a code that creates a random array of very unstable frametimes, and a few stutters randomly inserted:\r\n```cpp\r\nstatic constexpr std::size_t MAX_DT_QUEUE_SIZE = 4096;\r\n\r\nstatic constexpr double ACTUAL_FRAME_DT = 1.0 / 60.0;\r\nstatic constexpr double ACTUAL_FRAME_ERR = 0.002;\r\nstatic constexpr double STUTTER_FRAME_DT = 0.55;\r\nstatic constexpr double STUTTER_FRAME_ERR = 0.5;\r\n\r\n// If the game actually ran with no stutters at 60 FPS (and the stutter frames were just an illusion\r\n// for Dolphin), this would take 80 days.\r\nstatic constexpr std::size_t TOTAL_FRAMES = MAX_DT_QUEUE_SIZE * 100000;\r\nstatic constexpr std::size_t AVG_N_FRAMES_PER_STUTTER = TOTAL_FRAMES / 3600;\r\n```\r\n\r\nHow close is the final running std, compared to calculating it from scratch in the queue?\r\nRunning a few times, and...\r\n```\r\nActual std is 0.0011613785790244263 seconds\r\nRunning std   0.0011613785791494136, diff 1.2498726012499795e-13\r\n\r\nActual std is 0.0011512422871999381 seconds\r\nRunning std   0.0011512422871978918, diff 2.046323180349141e-15\r\n\r\nActual std is 0.005481212866823841 seconds\r\nRunning std   0.00548121286682146, diff 2.3809079707781677e-15\r\n\r\nActual std is 0.00969206635198026 seconds\r\nRunning std   0.009692066351979268, diff 9.922618282587337e-16\r\n``` \r\n\r\nSo... I suppose nothing to worry about.\r\n\r\n<details>\r\n<summary>Code used for testing</summary>\r\n```cpp\r\n#include <algorithm>\r\n#include <cassert>\r\n#include <cmath>\r\n#include <concepts>\r\n#include <cstddef>\r\n#include <print>\r\n#include <random>\r\n#include <ranges>\r\n#include <span>\r\n#include <vector>\r\n\r\ntemplate <typename T>\r\nclass RunningMean\r\n{\r\npublic:\r\n  constexpr void Clear() { *this = {}; }\r\n\r\n  constexpr void Push(T x) { m_mean = m_mean + (x - m_mean) / ++m_count; }\r\n  constexpr void Pop(T x)\r\n  {\r\n    if (m_count <= 1)\r\n    {\r\n      Clear();\r\n      return;\r\n    }\r\n    m_mean = m_mean - (x - m_mean) / --m_count;\r\n  }\r\n\r\n  constexpr size_t Count() const { return m_count; }\r\n  constexpr T Mean() const { return m_mean; }\r\n  constexpr T Total() const { return m_mean * m_count; }\r\n\r\nprivate:\r\n  size_t m_count = 0;\r\n  T m_mean{};\r\n};\r\n\r\ntemplate <typename T>\r\nclass RunningVariance\r\n{\r\npublic:\r\n  constexpr void Clear() { *this = {}; }\r\n\r\n  constexpr void Push(T x)\r\n  {\r\n    const auto old_mean = m_running_mean.Mean();\r\n    m_running_mean.Push(x);\r\n    m_variance += (x - old_mean) * (x - m_running_mean.Mean());\r\n  }\r\n  constexpr void Pop(T x)\r\n  {\r\n    if (m_running_mean.Count() <= 1)\r\n    {\r\n      Clear();\r\n      return;\r\n    }\r\n\r\n    const T old_mean = m_running_mean.Mean();\r\n    m_running_mean.Pop(x);\r\n    m_variance -= (x - old_mean) * (x - m_running_mean.Mean());\r\n  }\r\n\r\n  constexpr size_t Count() const { return m_running_mean.Count(); }\r\n  constexpr T Mean() const { return m_running_mean.Mean(); }\r\n  constexpr T Total() const { return m_running_mean.Total(); }\r\n\r\n  constexpr T Variance() const { return m_variance / (Count() - 1); }\r\n  T StandardDeviation() const { return std::sqrt(Variance()); }\r\n\r\n  constexpr T PopulationVariance() const { return m_variance / Count(); }\r\n  T PopulationStandardDeviation() const { return std::sqrt(PopulationVariance()); }\r\n\r\nprivate:\r\n  RunningMean<T> m_running_mean;\r\n  T m_variance{};\r\n};\r\n\r\n// Function slopped with AI\r\ntemplate <std::floating_point T>\r\nvoid populate_random(std::span<T> arr, T C, T e, T B, T d, std::size_t M, std::mt19937& rng)\r\n{\r\n  std::uniform_real_distribution<T> U(T{-1}, T{1});\r\n  auto jitter = [&](T center, T limit) { return center + U(rng) * limit; };\r\n\r\n  // 1) Fill everything with C ± e\r\n  std::ranges::generate(arr, [&] { return jitter(C, e); });\r\n\r\n  // 2) Sample M distinct indices, then overwrite those with B ± d\r\n  std::vector<std::size_t> picked;\r\n  picked.reserve(M);\r\n  std::ranges::sample(std::views::iota(std::size_t{0}, arr.size()), std::back_inserter(picked), M,\r\n                      rng);\r\n\r\n  for (std::size_t i : picked)\r\n    arr[i] = jitter(B, d);\r\n}\r\n\r\nstatic constexpr std::size_t MAX_DT_QUEUE_SIZE = 4096;\r\n\r\nstatic constexpr double ACTUAL_FRAME_DT = 1.0 / 60.0;\r\nstatic constexpr double ACTUAL_FRAME_ERR = 0.002;\r\nstatic constexpr double STUTTER_FRAME_DT = 0.55;\r\nstatic constexpr double STUTTER_FRAME_ERR = 0.5;\r\n\r\n// If the game actually ran with no stutters at 60 FPS (and the stutter frames were just an illusion\r\n// for Dolphin), this would take 80 days.\r\nstatic constexpr std::size_t TOTAL_FRAMES = MAX_DT_QUEUE_SIZE * 100000;\r\nstatic constexpr std::size_t AVG_N_FRAMES_PER_STUTTER = TOTAL_FRAMES / 3600;\r\n\r\nint main()\r\n{\r\n  std::mt19937 rng(std::random_device{}());\r\n  // I apologise for allocating an entire vector (which would only be necessary for the final span)\r\n  // instead of generating the random dt on the fly. I\'m lazy.\r\n  std::vector<double> dts(TOTAL_FRAMES);\r\n  populate_random(std::span(dts), ACTUAL_FRAME_DT, ACTUAL_FRAME_ERR, STUTTER_FRAME_DT,\r\n                  STUTTER_FRAME_ERR, AVG_N_FRAMES_PER_STUTTER, rng);\r\n\r\n  const auto end_span = std::span(dts).last(MAX_DT_QUEUE_SIZE);\r\n  const double avg = std::ranges::fold_left(end_span, 0.0, std::plus{}) / MAX_DT_QUEUE_SIZE;\r\n  const double accurate_std = std::sqrt(\r\n      std::ranges::fold_left(\r\n          end_span, 0.0, [avg](double s2, double dt) { return s2 + ((dt - avg) * (dt - avg)); }) /\r\n      (MAX_DT_QUEUE_SIZE - 1));\r\n\r\n  std::println("Actual std is {} seconds", accurate_std);\r\n\r\n  RunningVariance<double> running_variance;\r\n\r\n  for (double dt : std::span(dts).first(MAX_DT_QUEUE_SIZE))\r\n  {\r\n    running_variance.Push(dt);\r\n  }\r\n  for (std::size_t i = MAX_DT_QUEUE_SIZE; i < dts.size(); ++i)\r\n  {\r\n    running_variance.Pop(dts[i - MAX_DT_QUEUE_SIZE]);\r\n    running_variance.Push(dts[i]);\r\n  }\r\n\r\n  std::println("Running std   {}, diff {}", running_variance.StandardDeviation(),\r\n               std::abs(accurate_std - running_variance.StandardDeviation()));\r\n}\r\n```\r\n</details>', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14877', 'id': 5501153399, 'node_id': 'PR_kwDOALCn2M8AAAABEGWgYg', 'number': 14877, 'title': 'PerformanceTracker: Small cleanup, properly use RunningVariance for the standard deviation', '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}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 5, 'created_at': '2026-09-18T15:06:30Z', 'updated_at': '2026-10-28T21:46:00Z', '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/14877', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14877', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14877.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14877.patch', 'merged_at': None}, 'body': '`UpdateStats()` was calculating the standard deviation from the entirety of `m_dt_queue`, which has a noticeable performance impact when the frame rates are very high.\r\nOn a scene so light it runs at 3000 FPS, `UpdateStats()` was taking around 5% of the profiling (at default 1s sample window). Now it doesn\'t.\r\n\r\nI\'m not opening this PR with confidence.\r\nMainly I\'m not a fan of using `MathUtil::RunningVariance<double>` (I mean with `double` specifically, see the comment) since the `static_cast`s are ugly, but I have no better idea other than "the conditions to get an overflow with `DT::rep` are unlikely enough that there\'s no need to care".\r\nBut on the other hand, `double` causes the risk of the measurements getting less and less accurate over time.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/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/14877/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6481465058', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14877#issuecomment-6481465058', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877', 'id': 6481465058, 'node_id': 'IC_kwDOALCn2M8AAAABglNO4g', 'user': {'login': 'SuperSamus', 'id': 40663462, 'node_id': 'MDQ6VXNlcjQwNjYzNDYy', 'avatar_url': 'https://avatars.githubusercontent.com/u/40663462?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/SuperSamus', 'html_url': 'https://github.com/SuperSamus', 'followers_url': 'https://api.github.com/users/SuperSamus/followers', 'following_url': 'https://api.github.com/users/SuperSamus/following{/other_user}', 'gists_url': 'https://api.github.com/users/SuperSamus/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/SuperSamus/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/SuperSamus/subscriptions', 'organizations_url': 'https://api.github.com/users/SuperSamus/orgs', 'repos_url': 'https://api.github.com/users/SuperSamus/repos', 'events_url': 'https://api.github.com/users/SuperSamus/events{/privacy}', 'received_events_url': 'https://api.github.com/users/SuperSamus/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-28T21:45:59Z', 'updated_at': '2026-10-28T21:45:59Z', 'body': 'Why do math, when you can just test out a bad-case scenario?\r\n\r\nTesting a code that creates a random array of very unstable frametimes, and a few stutters randomly inserted:\r\n```cpp\r\nstatic constexpr std::size_t MAX_DT_QUEUE_SIZE = 4096;\r\n\r\nstatic constexpr double ACTUAL_FRAME_DT = 1.0 / 60.0;\r\nstatic constexpr double ACTUAL_FRAME_ERR = 0.002;\r\nstatic constexpr double STUTTER_FRAME_DT = 0.55;\r\nstatic constexpr double STUTTER_FRAME_ERR = 0.5;\r\n\r\n// If the game actually ran with no stutters at 60 FPS (and the stutter frames were just an illusion\r\n// for Dolphin), this would take 80 days.\r\nstatic constexpr std::size_t TOTAL_FRAMES = MAX_DT_QUEUE_SIZE * 100000;\r\nstatic constexpr std::size_t AVG_N_FRAMES_PER_STUTTER = TOTAL_FRAMES / 3600;\r\n```\r\n\r\nHow close is the final running std, compared to calculating it from scratch in the queue?\r\nRunning a few times, and...\r\n```\r\nActual std is 0.0011613785790244263 seconds\r\nRunning std   0.0011613785791494136, diff 1.2498726012499795e-13\r\n\r\nActual std is 0.0011512422871999381 seconds\r\nRunning std   0.0011512422871978918, diff 2.046323180349141e-15\r\n\r\nActual std is 0.005481212866823841 seconds\r\nRunning std   0.00548121286682146, diff 2.3809079707781677e-15\r\n\r\nActual std is 0.00969206635198026 seconds\r\nRunning std   0.009692066351979268, diff 9.922618282587337e-16\r\n``` \r\n\r\nSo... I suppose nothing to worry about.\r\n\r\n<details>\r\n<summary>Code used for testing</summary>\r\n```cpp\r\n#include <algorithm>\r\n#include <cassert>\r\n#include <cmath>\r\n#include <concepts>\r\n#include <cstddef>\r\n#include <print>\r\n#include <random>\r\n#include <ranges>\r\n#include <span>\r\n#include <vector>\r\n\r\ntemplate <typename T>\r\nclass RunningMean\r\n{\r\npublic:\r\n  constexpr void Clear() { *this = {}; }\r\n\r\n  constexpr void Push(T x) { m_mean = m_mean + (x - m_mean) / ++m_count; }\r\n  constexpr void Pop(T x)\r\n  {\r\n    if (m_count <= 1)\r\n    {\r\n      Clear();\r\n      return;\r\n    }\r\n    m_mean = m_mean - (x - m_mean) / --m_count;\r\n  }\r\n\r\n  constexpr size_t Count() const { return m_count; }\r\n  constexpr T Mean() const { return m_mean; }\r\n  constexpr T Total() const { return m_mean * m_count; }\r\n\r\nprivate:\r\n  size_t m_count = 0;\r\n  T m_mean{};\r\n};\r\n\r\ntemplate <typename T>\r\nclass RunningVariance\r\n{\r\npublic:\r\n  constexpr void Clear() { *this = {}; }\r\n\r\n  constexpr void Push(T x)\r\n  {\r\n    const auto old_mean = m_running_mean.Mean();\r\n    m_running_mean.Push(x);\r\n    m_variance += (x - old_mean) * (x - m_running_mean.Mean());\r\n  }\r\n  constexpr void Pop(T x)\r\n  {\r\n    if (m_running_mean.Count() <= 1)\r\n    {\r\n      Clear();\r\n      return;\r\n    }\r\n\r\n    const T old_mean = m_running_mean.Mean();\r\n    m_running_mean.Pop(x);\r\n    m_variance -= (x - old_mean) * (x - m_running_mean.Mean());\r\n  }\r\n\r\n  constexpr size_t Count() const { return m_running_mean.Count(); }\r\n  constexpr T Mean() const { return m_running_mean.Mean(); }\r\n  constexpr T Total() const { return m_running_mean.Total(); }\r\n\r\n  constexpr T Variance() const { return m_variance / (Count() - 1); }\r\n  T StandardDeviation() const { return std::sqrt(Variance()); }\r\n\r\n  constexpr T PopulationVariance() const { return m_variance / Count(); }\r\n  T PopulationStandardDeviation() const { return std::sqrt(PopulationVariance()); }\r\n\r\nprivate:\r\n  RunningMean<T> m_running_mean;\r\n  T m_variance{};\r\n};\r\n\r\n// Function slopped with AI\r\ntemplate <std::floating_point T>\r\nvoid populate_random(std::span<T> arr, T C, T e, T B, T d, std::size_t M, std::mt19937& rng)\r\n{\r\n  std::uniform_real_distribution<T> U(T{-1}, T{1});\r\n  auto jitter = [&](T center, T limit) { return center + U(rng) * limit; };\r\n\r\n  // 1) Fill everything with C ± e\r\n  std::ranges::generate(arr, [&] { return jitter(C, e); });\r\n\r\n  // 2) Sample M distinct indices, then overwrite those with B ± d\r\n  std::vector<std::size_t> picked;\r\n  picked.reserve(M);\r\n  std::ranges::sample(std::views::iota(std::size_t{0}, arr.size()), std::back_inserter(picked), M,\r\n                      rng);\r\n\r\n  for (std::size_t i : picked)\r\n    arr[i] = jitter(B, d);\r\n}\r\n\r\nstatic constexpr std::size_t MAX_DT_QUEUE_SIZE = 4096;\r\n\r\nstatic constexpr double ACTUAL_FRAME_DT = 1.0 / 60.0;\r\nstatic constexpr double ACTUAL_FRAME_ERR = 0.002;\r\nstatic constexpr double STUTTER_FRAME_DT = 0.55;\r\nstatic constexpr double STUTTER_FRAME_ERR = 0.5;\r\n\r\n// If the game actually ran with no stutters at 60 FPS (and the stutter frames were just an illusion\r\n// for Dolphin), this would take 80 days.\r\nstatic constexpr std::size_t TOTAL_FRAMES = MAX_DT_QUEUE_SIZE * 100000;\r\nstatic constexpr std::size_t AVG_N_FRAMES_PER_STUTTER = TOTAL_FRAMES / 3600;\r\n\r\nint main()\r\n{\r\n  std::mt19937 rng(std::random_device{}());\r\n  // I apologise for allocating an entire vector (which would only be necessary for the final span)\r\n  // instead of generating the random dt on the fly. I\'m lazy.\r\n  std::vector<double> dts(TOTAL_FRAMES);\r\n  populate_random(std::span(dts), ACTUAL_FRAME_DT, ACTUAL_FRAME_ERR, STUTTER_FRAME_DT,\r\n                  STUTTER_FRAME_ERR, AVG_N_FRAMES_PER_STUTTER, rng);\r\n\r\n  const auto end_span = std::span(dts).last(MAX_DT_QUEUE_SIZE);\r\n  const double avg = std::ranges::fold_left(end_span, 0.0, std::plus{}) / MAX_DT_QUEUE_SIZE;\r\n  const double accurate_std = std::sqrt(\r\n      std::ranges::fold_left(\r\n          end_span, 0.0, [avg](double s2, double dt) { return s2 + ((dt - avg) * (dt - avg)); }) /\r\n      (MAX_DT_QUEUE_SIZE - 1));\r\n\r\n  std::println("Actual std is {} seconds", accurate_std);\r\n\r\n  RunningVariance<double> running_variance;\r\n\r\n  for (double dt : std::span(dts).first(MAX_DT_QUEUE_SIZE))\r\n  {\r\n    running_variance.Push(dt);\r\n  }\r\n  for (std::size_t i = MAX_DT_QUEUE_SIZE; i < dts.size(); ++i)\r\n  {\r\n    running_variance.Pop(dts[i - MAX_DT_QUEUE_SIZE]);\r\n    running_variance.Push(dts[i]);\r\n  }\r\n\r\n  std::println("Running std   {}, diff {}", running_variance.StandardDeviation(),\r\n               std::abs(accurate_std - running_variance.StandardDeviation()));\r\n}\r\n```\r\n</details>', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6481465058/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T20:58:48Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15732, 'watchers_count': 15732, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15732, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'SuperSamus', 'id': 40663462, 'node_id': 'MDQ6VXNlcjQwNjYzNDYy', 'avatar_url': 'https://avatars.githubusercontent.com/u/40663462?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/SuperSamus', 'html_url': 'https://github.com/SuperSamus', 'followers_url': 'https://api.github.com/users/SuperSamus/followers', 'following_url': 'https://api.github.com/users/SuperSamus/following{/other_user}', 'gists_url': 'https://api.github.com/users/SuperSamus/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/SuperSamus/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/SuperSamus/subscriptions', 'organizations_url': 'https://api.github.com/users/SuperSamus/orgs', 'repos_url': 'https://api.github.com/users/SuperSamus/repos', 'events_url': 'https://api.github.com/users/SuperSamus/events{/privacy}', 'received_events_url': 'https://api.github.com/users/SuperSamus/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-28T20:48:16.877261	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 12014, 'title': 'Add CRT shaders', 'url': 'https://github.com/dolphin-emu/dolphin/pull/12014#issuecomment-6480328861', 'safe_author': True, 'body': 'Since this PR has aged, I\'ve added a minor change to "crt_pi" so the number of scanlines is fixed, which I think resolves the moiré problem I mentioned.\r\nI think I was mistaken about "crt-lottes-fast" and it seems to already work properly with higher IRs so long as bilinear filtering is used.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12014', 'id': 1781462996, 'node_id': 'PR_kwDOALCn2M5URoxg', 'number': 12014, 'title': 'Add CRT shaders', 'user': {'login': 'Clownacy', 'id': 7667009, 'node_id': 'MDQ6VXNlcjc2NjcwMDk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7667009?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Clownacy', 'html_url': 'https://github.com/Clownacy', 'followers_url': 'https://api.github.com/users/Clownacy/followers', 'following_url': 'https://api.github.com/users/Clownacy/following{/other_user}', 'gists_url': 'https://api.github.com/users/Clownacy/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Clownacy/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Clownacy/subscriptions', 'organizations_url': 'https://api.github.com/users/Clownacy/orgs', 'repos_url': 'https://api.github.com/users/Clownacy/repos', 'events_url': 'https://api.github.com/users/Clownacy/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Clownacy/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 42, 'created_at': '2023-06-29T20:23:15Z', 'updated_at': '2026-10-28T20:48:14Z', '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/12014', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12014', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/12014.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/12014.patch', 'merged_at': None}, 'body': "I've ported a couple of shaders from RetroArch - particularly the crt-pi and crt-lottes-fast ones. Unlike other shaders such as crt-royale, these shaders are single-pass, allowing them to work within Dolphin's framework. These look pretty good when paired with native resolution and SSAA.\r\n\r\ncrt-lottes-fast:\r\n![image](https://github.com/dolphin-emu/dolphin/assets/7667009/8108b7e1-d140-4d26-bc84-6b612b85ee8f)\r\n\r\nunfiltered:\r\n![image](https://github.com/dolphin-emu/dolphin/assets/7667009/5483d46a-4e15-4062-bb14-adb7c8d40d2b)\r\n\r\ncrt-pi:\r\n![image](https://github.com/dolphin-emu/dolphin/assets/7667009/9cfd1152-908c-4d42-94e0-908a1fa83c1f)\r\n\r\nUnfortunately, I only noticed #11888 after I had already ported crt-pi. Still, crt-pi is specifically optimised for lower-end hardware (Raspberry Pis, in particular), so perhaps these shaders still have some utility.\r\n\r\nVarious settings have been exposed through Dolphin's configuration API, crt-pi in particular boasts extra options that even the RetroArch version does not due to being hardcoded within the GLSL code itself.\r\n\r\nBoth crt-pi and crt-lottes-fast run with every backend that I have tested (OpenGL, Vulkan, Direct3D 11, and Direct3D 12).", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/reactions', 'total_count': 34, '+1': 16, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 18, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6480328861', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12014#issuecomment-6480328861', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014', 'id': 6480328861, 'node_id': 'IC_kwDOALCn2M8AAAABgkH4nQ', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-28T20:48:14Z', 'updated_at': '2026-10-28T20:48:14Z', 'body': 'Since this PR has aged, I\'ve added a minor change to "crt_pi" so the number of scanlines is fixed, which I think resolves the moiré problem I mentioned.\r\nI think I was mistaken about "crt-lottes-fast" and it seems to already work properly with higher IRs so long as bilinear filtering is used.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6480328861/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-28T19:45:02.275749	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'TellowKrinkle', 'action': 'created', 'id': 13704, 'title': 'CMake: Use CMAKE_CURRENT_SOURCE_DIR instead of CMAKE_SOURCE_DIR', 'url': 'https://github.com/dolphin-emu/dolphin/pull/13704#issuecomment-6478904803', 'safe_author': True, 'body': "How many of these actually need the explicit reference to `CMAKE_CURRENT_SOURCE_DIR`?  I'm pretty sure a number of those functions default to the current source dir if you give them a relative path.", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13704', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13704/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13704/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13704/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13704', 'id': 3087454631, 'node_id': 'PR_kwDOALCn2M6Xci1N', 'number': 13704, 'title': 'CMake: Use CMAKE_CURRENT_SOURCE_DIR instead of CMAKE_SOURCE_DIR', 'user': {'login': 'unexploredtest', 'id': 53617231, 'node_id': 'MDQ6VXNlcjUzNjE3MjMx', 'avatar_url': 'https://avatars.githubusercontent.com/u/53617231?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/unexploredtest', 'html_url': 'https://github.com/unexploredtest', 'followers_url': 'https://api.github.com/users/unexploredtest/followers', 'following_url': 'https://api.github.com/users/unexploredtest/following{/other_user}', 'gists_url': 'https://api.github.com/users/unexploredtest/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/unexploredtest/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/unexploredtest/subscriptions', 'organizations_url': 'https://api.github.com/users/unexploredtest/orgs', 'repos_url': 'https://api.github.com/users/unexploredtest/repos', 'events_url': 'https://api.github.com/users/unexploredtest/events{/privacy}', 'received_events_url': 'https://api.github.com/users/unexploredtest/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [{'id': 1667502011, 'node_id': 'MDU6TGFiZWwxNjY3NTAyMDEx', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels/needs%20rebase', 'name': 'needs rebase', 'color': '053663', 'default': False, 'description': '', 'archived_at': None, 'archived_by': None}], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 3, 'created_at': '2025-05-23T20:22:21Z', 'updated_at': '2026-10-28T19:44:59Z', '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/13704', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13704', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/13704.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/13704.patch', 'merged_at': None}, 'body': "Currently Dolphin uses CMAKE_SOURCE_DIR in several places for building the project which causes issues if included as an external project. Replacing CMAKE_SOURCE_DIR variables with the appropriate CMAKE_CURRENT_SOURCE_DIR equivalent fixes the issue and also doesn't change the behavior at all.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13704/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/13704/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6478904803', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13704#issuecomment-6478904803', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13704', 'id': 6478904803, 'node_id': 'IC_kwDOALCn2M8AAAABgiw94w', 'user': {'login': 'TellowKrinkle', 'id': 3315070, 'node_id': 'MDQ6VXNlcjMzMTUwNzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3315070?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/TellowKrinkle', 'html_url': 'https://github.com/TellowKrinkle', 'followers_url': 'https://api.github.com/users/TellowKrinkle/followers', 'following_url': 'https://api.github.com/users/TellowKrinkle/following{/other_user}', 'gists_url': 'https://api.github.com/users/TellowKrinkle/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/TellowKrinkle/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/TellowKrinkle/subscriptions', 'organizations_url': 'https://api.github.com/users/TellowKrinkle/orgs', 'repos_url': 'https://api.github.com/users/TellowKrinkle/repos', 'events_url': 'https://api.github.com/users/TellowKrinkle/events{/privacy}', 'received_events_url': 'https://api.github.com/users/TellowKrinkle/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-28T19:44:59Z', 'updated_at': '2026-10-28T19:44:59Z', 'body': "How many of these actually need the explicit reference to `CMAKE_CURRENT_SOURCE_DIR`?  I'm pretty sure a number of those functions default to the current source dir if you give them a relative path.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6478904803/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, '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': 'TellowKrinkle', 'id': 3315070, 'node_id': 'MDQ6VXNlcjMzMTUwNzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3315070?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/TellowKrinkle', 'html_url': 'https://github.com/TellowKrinkle', 'followers_url': 'https://api.github.com/users/TellowKrinkle/followers', 'following_url': 'https://api.github.com/users/TellowKrinkle/following{/other_user}', 'gists_url': 'https://api.github.com/users/TellowKrinkle/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/TellowKrinkle/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/TellowKrinkle/subscriptions', 'organizations_url': 'https://api.github.com/users/TellowKrinkle/orgs', 'repos_url': 'https://api.github.com/users/TellowKrinkle/repos', 'events_url': 'https://api.github.com/users/TellowKrinkle/events{/privacy}', 'received_events_url': 'https://api.github.com/users/TellowKrinkle/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-28T19:12:47.689944	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14877, 'title': 'PerformanceTracker: Small cleanup, properly use RunningVariance for the standard deviation', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14877#issuecomment-6478216983', 'safe_author': True, 'body': "Any idea how long it might take for the measurements to drift enough to be unusable? I'm not mathy enough to figure that out. Are we talking like, a day of continuous emulation, or, like, years? ", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14877', 'id': 5501153399, 'node_id': 'PR_kwDOALCn2M8AAAABEGWgYg', 'number': 14877, 'title': 'PerformanceTracker: Small cleanup, properly use RunningVariance for the standard deviation', '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}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 4, 'created_at': '2026-09-18T15:06:30Z', 'updated_at': '2026-10-28T19:12:45Z', '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/14877', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14877', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14877.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14877.patch', 'merged_at': None}, 'body': '`UpdateStats()` was calculating the standard deviation from the entirety of `m_dt_queue`, which has a noticeable performance impact when the frame rates are very high.\r\nOn a scene so light it runs at 3000 FPS, `UpdateStats()` was taking around 5% of the profiling (at default 1s sample window). Now it doesn\'t.\r\n\r\nI\'m not opening this PR with confidence.\r\nMainly I\'m not a fan of using `MathUtil::RunningVariance<double>` (I mean with `double` specifically, see the comment) since the `static_cast`s are ugly, but I have no better idea other than "the conditions to get an overflow with `DT::rep` are unlikely enough that there\'s no need to care".\r\nBut on the other hand, `double` causes the risk of the measurements getting less and less accurate over time.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/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/14877/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6478216983', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14877#issuecomment-6478216983', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877', 'id': 6478216983, 'node_id': 'IC_kwDOALCn2M8AAAABgiG_Fw', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-28T19:12:44Z', 'updated_at': '2026-10-28T19:12:44Z', 'body': "Any idea how long it might take for the measurements to drift enough to be unusable? I'm not mathy enough to figure that out. Are we talking like, a day of continuous emulation, or, like, years? ", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6478216983/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-28T18:18:56.261690	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6477041510', 'safe_author': True, 'body': '> May I recommend the AV1 video codec? It is awesome, open, and it is broadly adopted.\r\n> It should work great on hardware made in the last 6 years, or even older with software decoding.\r\n\r\nThis is more of a discussion for #14902 but I think in-browser AV1 decoding availability is less widespread than that of h264, particularly on mobile (Apple) devices. And mobile devices really are the main target of the GBA streaming feature.', 'raw': {'action': 'edited', 'changes': {'body': {'from': '> May I recommend the AV1 video codec? It is awesome, open, and it is broadly adopted.\r\n> It should work great on hardware made in the last 6 years, or even older with software decoding.\r\n\r\nThis is more of a discussion for #14902 but I think in-browser AV1 decoding availability is less widespread than that of h264, particularly on mobile (Apple) devices, and mobile devices really are the main target of the GBA streaming feature.'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'id': 6054308480, 'node_id': 'PR_kwDOALCn2M8AAAABK8xKnQ', 'number': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 9, 'created_at': '2026-10-27T06:43:26Z', 'updated_at': '2026-10-28T18:18:39Z', '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/14957', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.patch', 'merged_at': None}, 'body': 'This adds dynamic linking for FFmpeg.\r\n\r\nFFmpeg is huge and difficult to compile on Windows.\r\nOur slimmed down binaries at https://github.com/dolphin-emu/ext-win-ffmpeg are outdated and lack codecs which is blocking #14902 \r\n\r\nThis will reduce our Windows build sizes (The x64 7z appears to be ~1.8 MB smaller).\r\nBut Users of ffmpeg features require an additional ~80MB of libraries.\r\n\r\nI\'ve only loaded the FFmpeg functions that we currently use. More can be added as needed.\r\nIt\'s only enabled on Windows, though it does also work on Linux with ~~`set(USE_SHARED_FFMPEG ON)`.~~\r\n`set(DYNAMICALLY_LOAD_FFMPEG ON)`\r\n\r\nThe DLLs are loaded from User/Load/Libraries.\r\n\r\nWhen they are missing and the user tries to use frame dumping, Dolphin asks the user if they would like them to be automatically downloaded.\r\n<img width="402" height="165" alt="image" src="https://github.com/user-attachments/assets/d4e5e05c-0e9c-4751-8372-a408a33c31d0" />\r\n\r\nThe DLLs are downloaded from https://github.com/btbn/ffmpeg-builds/releases which is a source that FFmpeg recommends.\r\nWith the exact URLs being:\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-win64-gpl-shared-9.0.zip\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-winarm64-gpl-shared-9.0.zip\r\n\r\nAll included DLLs are extracted to User/Load/Libraries.\r\n\r\nMaybe we should host the zip file ourselves for security and URL reliability reasons?\r\n\r\n~~This will require that https://github.com/dolphin-emu/ext-win-ffmpeg/pull/2 is merged first so the "FFmpeg-bin" submodule can be adjusted.~~\r\nI\'ve changed our FFmpeg git submodule to a github FFmpeg mirror rather than our own maintained repo.\r\n\r\nWindows x64 is tested.\r\nARM is untested.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/reactions', 'total_count': 3, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 1, 'confused': 0, 'heart': 2, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6477041510', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6477041510', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'id': 6477041510, 'node_id': 'IC_kwDOALCn2M8AAAABgg_PZg', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-28T18:18:39Z', 'updated_at': '2026-10-28T18:18:54Z', 'body': '> May I recommend the AV1 video codec? It is awesome, open, and it is broadly adopted.\r\n> It should work great on hardware made in the last 6 years, or even older with software decoding.\r\n\r\nThis is more of a discussion for #14902 but I think in-browser AV1 decoding availability is less widespread than that of h264, particularly on mobile (Apple) devices. And mobile devices really are the main target of the GBA streaming feature.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6477041510/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3358, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3358, 'open_issues': 484, 'watchers': 15730, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-28T18:18:41.684402	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6477041510', 'safe_author': True, 'body': '> May I recommend the AV1 video codec? It is awesome, open, and it is broadly adopted.\r\n> It should work great on hardware made in the last 6 years, or even older with software decoding.\r\n\r\nThis is more of a discussion for #14902 but I think in-browser AV1 decoding availability is less widespread than that of h264, particularly on mobile (Apple) devices, and mobile devices really are the main target of the GBA streaming feature.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'id': 6054308480, 'node_id': 'PR_kwDOALCn2M8AAAABK8xKnQ', 'number': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 9, 'created_at': '2026-10-27T06:43:26Z', 'updated_at': '2026-10-28T18:18:39Z', '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/14957', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.patch', 'merged_at': None}, 'body': 'This adds dynamic linking for FFmpeg.\r\n\r\nFFmpeg is huge and difficult to compile on Windows.\r\nOur slimmed down binaries at https://github.com/dolphin-emu/ext-win-ffmpeg are outdated and lack codecs which is blocking #14902 \r\n\r\nThis will reduce our Windows build sizes (The x64 7z appears to be ~1.8 MB smaller).\r\nBut Users of ffmpeg features require an additional ~80MB of libraries.\r\n\r\nI\'ve only loaded the FFmpeg functions that we currently use. More can be added as needed.\r\nIt\'s only enabled on Windows, though it does also work on Linux with ~~`set(USE_SHARED_FFMPEG ON)`.~~\r\n`set(DYNAMICALLY_LOAD_FFMPEG ON)`\r\n\r\nThe DLLs are loaded from User/Load/Libraries.\r\n\r\nWhen they are missing and the user tries to use frame dumping, Dolphin asks the user if they would like them to be automatically downloaded.\r\n<img width="402" height="165" alt="image" src="https://github.com/user-attachments/assets/d4e5e05c-0e9c-4751-8372-a408a33c31d0" />\r\n\r\nThe DLLs are downloaded from https://github.com/btbn/ffmpeg-builds/releases which is a source that FFmpeg recommends.\r\nWith the exact URLs being:\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-win64-gpl-shared-9.0.zip\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-winarm64-gpl-shared-9.0.zip\r\n\r\nAll included DLLs are extracted to User/Load/Libraries.\r\n\r\nMaybe we should host the zip file ourselves for security and URL reliability reasons?\r\n\r\n~~This will require that https://github.com/dolphin-emu/ext-win-ffmpeg/pull/2 is merged first so the "FFmpeg-bin" submodule can be adjusted.~~\r\nI\'ve changed our FFmpeg git submodule to a github FFmpeg mirror rather than our own maintained repo.\r\n\r\nWindows x64 is tested.\r\nARM is untested.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/reactions', 'total_count': 3, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 1, 'confused': 0, 'heart': 2, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6477041510', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6477041510', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'id': 6477041510, 'node_id': 'IC_kwDOALCn2M8AAAABgg_PZg', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-28T18:18:39Z', 'updated_at': '2026-10-28T18:18:39Z', 'body': '> May I recommend the AV1 video codec? It is awesome, open, and it is broadly adopted.\r\n> It should work great on hardware made in the last 6 years, or even older with software decoding.\r\n\r\nThis is more of a discussion for #14902 but I think in-browser AV1 decoding availability is less widespread than that of h264, particularly on mobile (Apple) devices, and mobile devices really are the main target of the GBA streaming feature.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6477041510/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3358, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3358, 'open_issues': 484, 'watchers': 15730, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-28T15:14:11.079898	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'debug687', 'action': 'edited', 'id': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'safe_author': False, 'body': "> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 5.9x (1 GBA, 60fps) and 1.33x (4 GBAs, 60fps). I think that is serviceable, considering the hardware would otherwise only have gotten 5.5x (4 GBAs, 60fps), hardware accelerated.\r\n\r\nSo for these resolutions, software svt-av1 encoding is about a 5x reduction in encoding speed compared to hardware encoding. That's not nothing, but on hardware that one expects to use for hosting 4 video streams, I think AV1 is quite usable, especially with continued hardware encoding support.", 'raw': {'action': 'edited', 'changes': {'body': {'from': "> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 5.9x (1 GBA, 60fps) and 1.33x (4 GBAs, 60fps). I think that is serviceable, considering the hardware would otherwise only have gotten 5.5x (4 GBAs, 60fps), hardware accelerated.\r\n\r\nSo for these resolutions, software svt-av1 encoding is about a 5x reduction in encoding speed compared to hardware h264 encoding. That's not nothing, but on hardware that one expects to use for hosting 4 video streams, I think AV1 is quite usable, especially with continued hardware encoding support."}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'id': 6054308480, 'node_id': 'PR_kwDOALCn2M8AAAABK8xKnQ', 'number': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 8, 'created_at': '2026-10-27T06:43:26Z', 'updated_at': '2026-10-28T15:12:09Z', '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/14957', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.patch', 'merged_at': None}, 'body': 'This adds dynamic linking for FFmpeg.\r\n\r\nFFmpeg is huge and difficult to compile on Windows.\r\nOur slimmed down binaries at https://github.com/dolphin-emu/ext-win-ffmpeg are outdated and lack codecs which is blocking #14902 \r\n\r\nThis will reduce our Windows build sizes (The x64 7z appears to be ~1.8 MB smaller).\r\nBut Users of ffmpeg features require an additional ~80MB of libraries.\r\n\r\nI\'ve only loaded the FFmpeg functions that we currently use. More can be added as needed.\r\nIt\'s only enabled on Windows, though it does also work on Linux with ~~`set(USE_SHARED_FFMPEG ON)`.~~\r\n`set(DYNAMICALLY_LOAD_FFMPEG ON)`\r\n\r\nThe DLLs are loaded from User/Load/Libraries.\r\n\r\nWhen they are missing and the user tries to use frame dumping, Dolphin asks the user if they would like them to be automatically downloaded.\r\n<img width="402" height="165" alt="image" src="https://github.com/user-attachments/assets/d4e5e05c-0e9c-4751-8372-a408a33c31d0" />\r\n\r\nThe DLLs are downloaded from https://github.com/btbn/ffmpeg-builds/releases which is a source that FFmpeg recommends.\r\nWith the exact URLs being:\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-win64-gpl-shared-9.0.zip\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-winarm64-gpl-shared-9.0.zip\r\n\r\nAll included DLLs are extracted to User/Load/Libraries.\r\n\r\nMaybe we should host the zip file ourselves for security and URL reliability reasons?\r\n\r\n~~This will require that https://github.com/dolphin-emu/ext-win-ffmpeg/pull/2 is merged first so the "FFmpeg-bin" submodule can be adjusted.~~\r\nI\'ve changed our FFmpeg git submodule to a github FFmpeg mirror rather than our own maintained repo.\r\n\r\nWindows x64 is tested.\r\nARM is untested.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/reactions', 'total_count': 3, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 1, 'confused': 0, 'heart': 2, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'id': 6470042379, 'node_id': 'IC_kwDOALCn2M8AAAABgaUDCw', '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-10-28T13:18:45Z', 'updated_at': '2026-10-28T15:14:08Z', 'body': "> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 5.9x (1 GBA, 60fps) and 1.33x (4 GBAs, 60fps). I think that is serviceable, considering the hardware would otherwise only have gotten 5.5x (4 GBAs, 60fps), hardware accelerated.\r\n\r\nSo for these resolutions, software svt-av1 encoding is about a 5x reduction in encoding speed compared to hardware encoding. That's not nothing, but on hardware that one expects to use for hosting 4 video streams, I think AV1 is quite usable, especially with continued hardware encoding support.", 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3357, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3357, 'open_issues': 484, 'watchers': 15730, '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-10-28T15:12:11.003857	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'debug687', 'action': 'edited', 'id': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'safe_author': False, 'body': "> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 5.9x (1 GBA, 60fps) and 1.33x (4 GBAs, 60fps). I think that is serviceable, considering the hardware would otherwise only have gotten 5.5x (4 GBAs, 60fps), hardware accelerated.\r\n\r\nSo for these resolutions, software svt-av1 encoding is about a 5x reduction in encoding speed compared to hardware h264 encoding. That's not nothing, but on hardware that one expects to use for hosting 4 video streams, I think AV1 is quite usable, especially with continued hardware encoding support.", 'raw': {'action': 'edited', 'changes': {'body': {'from': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 5.9x (1 GBA, 60fps) and 1.33x (4 GBAs, 60fps). I think that is serviceable, considering the hardware would otherwise only have gotten 5.5x (4 GBAs, 60fps), hardware accelerated.'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'id': 6054308480, 'node_id': 'PR_kwDOALCn2M8AAAABK8xKnQ', 'number': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 8, 'created_at': '2026-10-27T06:43:26Z', 'updated_at': '2026-10-28T15:01:00Z', '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/14957', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.patch', 'merged_at': None}, 'body': 'This adds dynamic linking for FFmpeg.\r\n\r\nFFmpeg is huge and difficult to compile on Windows.\r\nOur slimmed down binaries at https://github.com/dolphin-emu/ext-win-ffmpeg are outdated and lack codecs which is blocking #14902 \r\n\r\nThis will reduce our Windows build sizes (The x64 7z appears to be ~1.8 MB smaller).\r\nBut Users of ffmpeg features require an additional ~80MB of libraries.\r\n\r\nI\'ve only loaded the FFmpeg functions that we currently use. More can be added as needed.\r\nIt\'s only enabled on Windows, though it does also work on Linux with ~~`set(USE_SHARED_FFMPEG ON)`.~~\r\n`set(DYNAMICALLY_LOAD_FFMPEG ON)`\r\n\r\nThe DLLs are loaded from User/Load/Libraries.\r\n\r\nWhen they are missing and the user tries to use frame dumping, Dolphin asks the user if they would like them to be automatically downloaded.\r\n<img width="402" height="165" alt="image" src="https://github.com/user-attachments/assets/d4e5e05c-0e9c-4751-8372-a408a33c31d0" />\r\n\r\nThe DLLs are downloaded from https://github.com/btbn/ffmpeg-builds/releases which is a source that FFmpeg recommends.\r\nWith the exact URLs being:\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-win64-gpl-shared-9.0.zip\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-winarm64-gpl-shared-9.0.zip\r\n\r\nAll included DLLs are extracted to User/Load/Libraries.\r\n\r\nMaybe we should host the zip file ourselves for security and URL reliability reasons?\r\n\r\n~~This will require that https://github.com/dolphin-emu/ext-win-ffmpeg/pull/2 is merged first so the "FFmpeg-bin" submodule can be adjusted.~~\r\nI\'ve changed our FFmpeg git submodule to a github FFmpeg mirror rather than our own maintained repo.\r\n\r\nWindows x64 is tested.\r\nARM is untested.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/reactions', 'total_count': 3, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 1, 'confused': 0, 'heart': 2, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'id': 6470042379, 'node_id': 'IC_kwDOALCn2M8AAAABgaUDCw', '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-10-28T13:18:45Z', 'updated_at': '2026-10-28T15:12:09Z', 'body': "> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 5.9x (1 GBA, 60fps) and 1.33x (4 GBAs, 60fps). I think that is serviceable, considering the hardware would otherwise only have gotten 5.5x (4 GBAs, 60fps), hardware accelerated.\r\n\r\nSo for these resolutions, software svt-av1 encoding is about a 5x reduction in encoding speed compared to hardware h264 encoding. That's not nothing, but on hardware that one expects to use for hosting 4 video streams, I think AV1 is quite usable, especially with continued hardware encoding support.", 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3357, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3357, 'open_issues': 484, 'watchers': 15730, '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-10-28T15:01:01.896674	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'debug687', 'action': 'edited', 'id': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'safe_author': False, 'body': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 5.9x (1 GBA, 60fps) and 1.33x (4 GBAs, 60fps). I think that is serviceable, considering the hardware would otherwise only have gotten 5.5x (4 GBAs, 60fps), hardware accelerated.', 'raw': {'action': 'edited', 'changes': {'body': {'from': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 5.9x (1 GBA, 60fps) and 1.33x (4 GBAs, 60fps). I think that is serviceable, considering the hardware would only have gotten 5.5x (4 GBAs, 60fps) with h264, hardware accelerated.'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'id': 6054308480, 'node_id': 'PR_kwDOALCn2M8AAAABK8xKnQ', 'number': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 8, 'created_at': '2026-10-27T06:43:26Z', 'updated_at': '2026-10-28T15:00:39Z', '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/14957', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.patch', 'merged_at': None}, 'body': 'This adds dynamic linking for FFmpeg.\r\n\r\nFFmpeg is huge and difficult to compile on Windows.\r\nOur slimmed down binaries at https://github.com/dolphin-emu/ext-win-ffmpeg are outdated and lack codecs which is blocking #14902 \r\n\r\nThis will reduce our Windows build sizes (The x64 7z appears to be ~1.8 MB smaller).\r\nBut Users of ffmpeg features require an additional ~80MB of libraries.\r\n\r\nI\'ve only loaded the FFmpeg functions that we currently use. More can be added as needed.\r\nIt\'s only enabled on Windows, though it does also work on Linux with ~~`set(USE_SHARED_FFMPEG ON)`.~~\r\n`set(DYNAMICALLY_LOAD_FFMPEG ON)`\r\n\r\nThe DLLs are loaded from User/Load/Libraries.\r\n\r\nWhen they are missing and the user tries to use frame dumping, Dolphin asks the user if they would like them to be automatically downloaded.\r\n<img width="402" height="165" alt="image" src="https://github.com/user-attachments/assets/d4e5e05c-0e9c-4751-8372-a408a33c31d0" />\r\n\r\nThe DLLs are downloaded from https://github.com/btbn/ffmpeg-builds/releases which is a source that FFmpeg recommends.\r\nWith the exact URLs being:\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-win64-gpl-shared-9.0.zip\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-winarm64-gpl-shared-9.0.zip\r\n\r\nAll included DLLs are extracted to User/Load/Libraries.\r\n\r\nMaybe we should host the zip file ourselves for security and URL reliability reasons?\r\n\r\n~~This will require that https://github.com/dolphin-emu/ext-win-ffmpeg/pull/2 is merged first so the "FFmpeg-bin" submodule can be adjusted.~~\r\nI\'ve changed our FFmpeg git submodule to a github FFmpeg mirror rather than our own maintained repo.\r\n\r\nWindows x64 is tested.\r\nARM is untested.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/reactions', 'total_count': 3, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 1, 'confused': 0, 'heart': 2, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'id': 6470042379, 'node_id': 'IC_kwDOALCn2M8AAAABgaUDCw', '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-10-28T13:18:45Z', 'updated_at': '2026-10-28T15:01:00Z', 'body': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 5.9x (1 GBA, 60fps) and 1.33x (4 GBAs, 60fps). I think that is serviceable, considering the hardware would otherwise only have gotten 5.5x (4 GBAs, 60fps), hardware accelerated.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3357, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3357, 'open_issues': 484, 'watchers': 15730, '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-10-28T15:00:40.676979	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'debug687', 'action': 'edited', 'id': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'safe_author': False, 'body': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 5.9x (1 GBA, 60fps) and 1.33x (4 GBAs, 60fps). I think that is serviceable, considering the hardware would only have gotten 5.5x (4 GBAs, 60fps) with h264, hardware accelerated.', 'raw': {'action': 'edited', 'changes': {'body': {'from': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 5.9x (1 GBA, 60fps) and 1.33x (4 GBAs, 60fps). I think that is serviceable, considering the weak hardware.'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'id': 6054308480, 'node_id': 'PR_kwDOALCn2M8AAAABK8xKnQ', 'number': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 8, 'created_at': '2026-10-27T06:43:26Z', 'updated_at': '2026-10-28T14:49:25Z', '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/14957', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.patch', 'merged_at': None}, 'body': 'This adds dynamic linking for FFmpeg.\r\n\r\nFFmpeg is huge and difficult to compile on Windows.\r\nOur slimmed down binaries at https://github.com/dolphin-emu/ext-win-ffmpeg are outdated and lack codecs which is blocking #14902 \r\n\r\nThis will reduce our Windows build sizes (The x64 7z appears to be ~1.8 MB smaller).\r\nBut Users of ffmpeg features require an additional ~80MB of libraries.\r\n\r\nI\'ve only loaded the FFmpeg functions that we currently use. More can be added as needed.\r\nIt\'s only enabled on Windows, though it does also work on Linux with ~~`set(USE_SHARED_FFMPEG ON)`.~~\r\n`set(DYNAMICALLY_LOAD_FFMPEG ON)`\r\n\r\nThe DLLs are loaded from User/Load/Libraries.\r\n\r\nWhen they are missing and the user tries to use frame dumping, Dolphin asks the user if they would like them to be automatically downloaded.\r\n<img width="402" height="165" alt="image" src="https://github.com/user-attachments/assets/d4e5e05c-0e9c-4751-8372-a408a33c31d0" />\r\n\r\nThe DLLs are downloaded from https://github.com/btbn/ffmpeg-builds/releases which is a source that FFmpeg recommends.\r\nWith the exact URLs being:\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-win64-gpl-shared-9.0.zip\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-winarm64-gpl-shared-9.0.zip\r\n\r\nAll included DLLs are extracted to User/Load/Libraries.\r\n\r\nMaybe we should host the zip file ourselves for security and URL reliability reasons?\r\n\r\n~~This will require that https://github.com/dolphin-emu/ext-win-ffmpeg/pull/2 is merged first so the "FFmpeg-bin" submodule can be adjusted.~~\r\nI\'ve changed our FFmpeg git submodule to a github FFmpeg mirror rather than our own maintained repo.\r\n\r\nWindows x64 is tested.\r\nARM is untested.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/reactions', 'total_count': 3, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 1, 'confused': 0, 'heart': 2, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'id': 6470042379, 'node_id': 'IC_kwDOALCn2M8AAAABgaUDCw', '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-10-28T13:18:45Z', 'updated_at': '2026-10-28T15:00:39Z', 'body': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 5.9x (1 GBA, 60fps) and 1.33x (4 GBAs, 60fps). I think that is serviceable, considering the hardware would only have gotten 5.5x (4 GBAs, 60fps) with h264, hardware accelerated.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3357, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3357, 'open_issues': 484, 'watchers': 15730, '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-10-28T14:49:27.477600	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'debug687', 'action': 'edited', 'id': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'safe_author': False, 'body': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 5.9x (1 GBA, 60fps) and 1.33x (4 GBAs, 60fps). I think that is serviceable, considering the weak hardware.', 'raw': {'action': 'edited', 'changes': {'body': {'from': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 5.9x (1 GBA, 60fps) and 1.33x (4 GBAs, 60fps). I think that is servicable, considering the weak hardware.'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'id': 6054308480, 'node_id': 'PR_kwDOALCn2M8AAAABK8xKnQ', 'number': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 8, 'created_at': '2026-10-27T06:43:26Z', 'updated_at': '2026-10-28T14:41: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/14957', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.patch', 'merged_at': None}, 'body': 'This adds dynamic linking for FFmpeg.\r\n\r\nFFmpeg is huge and difficult to compile on Windows.\r\nOur slimmed down binaries at https://github.com/dolphin-emu/ext-win-ffmpeg are outdated and lack codecs which is blocking #14902 \r\n\r\nThis will reduce our Windows build sizes (The x64 7z appears to be ~1.8 MB smaller).\r\nBut Users of ffmpeg features require an additional ~80MB of libraries.\r\n\r\nI\'ve only loaded the FFmpeg functions that we currently use. More can be added as needed.\r\nIt\'s only enabled on Windows, though it does also work on Linux with ~~`set(USE_SHARED_FFMPEG ON)`.~~\r\n`set(DYNAMICALLY_LOAD_FFMPEG ON)`\r\n\r\nThe DLLs are loaded from User/Load/Libraries.\r\n\r\nWhen they are missing and the user tries to use frame dumping, Dolphin asks the user if they would like them to be automatically downloaded.\r\n<img width="402" height="165" alt="image" src="https://github.com/user-attachments/assets/d4e5e05c-0e9c-4751-8372-a408a33c31d0" />\r\n\r\nThe DLLs are downloaded from https://github.com/btbn/ffmpeg-builds/releases which is a source that FFmpeg recommends.\r\nWith the exact URLs being:\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-win64-gpl-shared-9.0.zip\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-winarm64-gpl-shared-9.0.zip\r\n\r\nAll included DLLs are extracted to User/Load/Libraries.\r\n\r\nMaybe we should host the zip file ourselves for security and URL reliability reasons?\r\n\r\n~~This will require that https://github.com/dolphin-emu/ext-win-ffmpeg/pull/2 is merged first so the "FFmpeg-bin" submodule can be adjusted.~~\r\nI\'ve changed our FFmpeg git submodule to a github FFmpeg mirror rather than our own maintained repo.\r\n\r\nWindows x64 is tested.\r\nARM is untested.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/reactions', 'total_count': 3, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 1, 'confused': 0, 'heart': 2, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'id': 6470042379, 'node_id': 'IC_kwDOALCn2M8AAAABgaUDCw', '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-10-28T13:18:45Z', 'updated_at': '2026-10-28T14:49:25Z', 'body': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 5.9x (1 GBA, 60fps) and 1.33x (4 GBAs, 60fps). I think that is serviceable, considering the weak hardware.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3357, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3357, 'open_issues': 484, 'watchers': 15730, '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-10-28T14:41:15.282480	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'debug687', 'action': 'edited', 'id': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'safe_author': False, 'body': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 5.9x (1 GBA, 60fps) and 1.33x (4 GBAs, 60fps). I think that is servicable, considering the weak hardware.', 'raw': {'action': 'edited', 'changes': {'body': {'from': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 1.33x (4 GBAs, 60fps) and 5.9x (1 GBA, 60fps). I think that is servicable, considering the weak hardware.'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'id': 6054308480, 'node_id': 'PR_kwDOALCn2M8AAAABK8xKnQ', 'number': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 8, 'created_at': '2026-10-27T06:43:26Z', 'updated_at': '2026-10-28T14:40: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/14957', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.patch', 'merged_at': None}, 'body': 'This adds dynamic linking for FFmpeg.\r\n\r\nFFmpeg is huge and difficult to compile on Windows.\r\nOur slimmed down binaries at https://github.com/dolphin-emu/ext-win-ffmpeg are outdated and lack codecs which is blocking #14902 \r\n\r\nThis will reduce our Windows build sizes (The x64 7z appears to be ~1.8 MB smaller).\r\nBut Users of ffmpeg features require an additional ~80MB of libraries.\r\n\r\nI\'ve only loaded the FFmpeg functions that we currently use. More can be added as needed.\r\nIt\'s only enabled on Windows, though it does also work on Linux with ~~`set(USE_SHARED_FFMPEG ON)`.~~\r\n`set(DYNAMICALLY_LOAD_FFMPEG ON)`\r\n\r\nThe DLLs are loaded from User/Load/Libraries.\r\n\r\nWhen they are missing and the user tries to use frame dumping, Dolphin asks the user if they would like them to be automatically downloaded.\r\n<img width="402" height="165" alt="image" src="https://github.com/user-attachments/assets/d4e5e05c-0e9c-4751-8372-a408a33c31d0" />\r\n\r\nThe DLLs are downloaded from https://github.com/btbn/ffmpeg-builds/releases which is a source that FFmpeg recommends.\r\nWith the exact URLs being:\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-win64-gpl-shared-9.0.zip\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-winarm64-gpl-shared-9.0.zip\r\n\r\nAll included DLLs are extracted to User/Load/Libraries.\r\n\r\nMaybe we should host the zip file ourselves for security and URL reliability reasons?\r\n\r\n~~This will require that https://github.com/dolphin-emu/ext-win-ffmpeg/pull/2 is merged first so the "FFmpeg-bin" submodule can be adjusted.~~\r\nI\'ve changed our FFmpeg git submodule to a github FFmpeg mirror rather than our own maintained repo.\r\n\r\nWindows x64 is tested.\r\nARM is untested.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/reactions', 'total_count': 3, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 1, 'confused': 0, 'heart': 2, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'id': 6470042379, 'node_id': 'IC_kwDOALCn2M8AAAABgaUDCw', '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-10-28T13:18:45Z', 'updated_at': '2026-10-28T14:41:13Z', 'body': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 5.9x (1 GBA, 60fps) and 1.33x (4 GBAs, 60fps). I think that is servicable, considering the weak hardware.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3357, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3357, 'open_issues': 484, 'watchers': 15730, '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-10-28T14:40:37.664307	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'debug687', 'action': 'edited', 'id': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'safe_author': False, 'body': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 1.33x (4 GBAs, 60fps) and 5.9x (1 GBA, 60fps). I think that is servicable, considering the weak hardware.', 'raw': {'action': 'edited', 'changes': {'body': {'from': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested it on an old (and weak) 6-core laptop and had mixed to good results: 1.33x (4 GBAs, 60fps) and 5.9x (1 GBA, 60fps). I think that is servicable, considering the weak hardware.'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'id': 6054308480, 'node_id': 'PR_kwDOALCn2M8AAAABK8xKnQ', 'number': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 8, 'created_at': '2026-10-27T06:43:26Z', 'updated_at': '2026-10-28T14:40:12Z', '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/14957', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.patch', 'merged_at': None}, 'body': 'This adds dynamic linking for FFmpeg.\r\n\r\nFFmpeg is huge and difficult to compile on Windows.\r\nOur slimmed down binaries at https://github.com/dolphin-emu/ext-win-ffmpeg are outdated and lack codecs which is blocking #14902 \r\n\r\nThis will reduce our Windows build sizes (The x64 7z appears to be ~1.8 MB smaller).\r\nBut Users of ffmpeg features require an additional ~80MB of libraries.\r\n\r\nI\'ve only loaded the FFmpeg functions that we currently use. More can be added as needed.\r\nIt\'s only enabled on Windows, though it does also work on Linux with ~~`set(USE_SHARED_FFMPEG ON)`.~~\r\n`set(DYNAMICALLY_LOAD_FFMPEG ON)`\r\n\r\nThe DLLs are loaded from User/Load/Libraries.\r\n\r\nWhen they are missing and the user tries to use frame dumping, Dolphin asks the user if they would like them to be automatically downloaded.\r\n<img width="402" height="165" alt="image" src="https://github.com/user-attachments/assets/d4e5e05c-0e9c-4751-8372-a408a33c31d0" />\r\n\r\nThe DLLs are downloaded from https://github.com/btbn/ffmpeg-builds/releases which is a source that FFmpeg recommends.\r\nWith the exact URLs being:\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-win64-gpl-shared-9.0.zip\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-winarm64-gpl-shared-9.0.zip\r\n\r\nAll included DLLs are extracted to User/Load/Libraries.\r\n\r\nMaybe we should host the zip file ourselves for security and URL reliability reasons?\r\n\r\n~~This will require that https://github.com/dolphin-emu/ext-win-ffmpeg/pull/2 is merged first so the "FFmpeg-bin" submodule can be adjusted.~~\r\nI\'ve changed our FFmpeg git submodule to a github FFmpeg mirror rather than our own maintained repo.\r\n\r\nWindows x64 is tested.\r\nARM is untested.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/reactions', 'total_count': 3, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 1, 'confused': 0, 'heart': 2, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'id': 6470042379, 'node_id': 'IC_kwDOALCn2M8AAAABgaUDCw', '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-10-28T13:18:45Z', 'updated_at': '2026-10-28T14:40:35Z', 'body': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested svt-av1 software encoding on an old (and weak) 6-core laptop and had mixed to good results: 1.33x (4 GBAs, 60fps) and 5.9x (1 GBA, 60fps). I think that is servicable, considering the weak hardware.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3357, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3357, 'open_issues': 484, 'watchers': 15730, '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-10-28T14:40:21.330419	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'debug687', 'action': 'edited', 'id': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'safe_author': False, 'body': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested it on an old (and weak) 6-core laptop and had mixed to good results: 1.33x (4 GBAs, 60fps) and 5.9x (1 GBA, 60fps). I think that is servicable, considering the weak hardware.', 'raw': {'action': 'edited', 'changes': {'body': {'from': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'id': 6054308480, 'node_id': 'PR_kwDOALCn2M8AAAABK8xKnQ', 'number': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 8, 'created_at': '2026-10-27T06:43:26Z', 'updated_at': '2026-10-28T13:41:10Z', '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/14957', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.patch', 'merged_at': None}, 'body': 'This adds dynamic linking for FFmpeg.\r\n\r\nFFmpeg is huge and difficult to compile on Windows.\r\nOur slimmed down binaries at https://github.com/dolphin-emu/ext-win-ffmpeg are outdated and lack codecs which is blocking #14902 \r\n\r\nThis will reduce our Windows build sizes (The x64 7z appears to be ~1.8 MB smaller).\r\nBut Users of ffmpeg features require an additional ~80MB of libraries.\r\n\r\nI\'ve only loaded the FFmpeg functions that we currently use. More can be added as needed.\r\nIt\'s only enabled on Windows, though it does also work on Linux with ~~`set(USE_SHARED_FFMPEG ON)`.~~\r\n`set(DYNAMICALLY_LOAD_FFMPEG ON)`\r\n\r\nThe DLLs are loaded from User/Load/Libraries.\r\n\r\nWhen they are missing and the user tries to use frame dumping, Dolphin asks the user if they would like them to be automatically downloaded.\r\n<img width="402" height="165" alt="image" src="https://github.com/user-attachments/assets/d4e5e05c-0e9c-4751-8372-a408a33c31d0" />\r\n\r\nThe DLLs are downloaded from https://github.com/btbn/ffmpeg-builds/releases which is a source that FFmpeg recommends.\r\nWith the exact URLs being:\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-win64-gpl-shared-9.0.zip\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-winarm64-gpl-shared-9.0.zip\r\n\r\nAll included DLLs are extracted to User/Load/Libraries.\r\n\r\nMaybe we should host the zip file ourselves for security and URL reliability reasons?\r\n\r\n~~This will require that https://github.com/dolphin-emu/ext-win-ffmpeg/pull/2 is merged first so the "FFmpeg-bin" submodule can be adjusted.~~\r\nI\'ve changed our FFmpeg git submodule to a github FFmpeg mirror rather than our own maintained repo.\r\n\r\nWindows x64 is tested.\r\nARM is untested.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/reactions', 'total_count': 3, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 1, 'confused': 0, 'heart': 2, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'id': 6470042379, 'node_id': 'IC_kwDOALCn2M8AAAABgaUDCw', '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-10-28T13:18:45Z', 'updated_at': '2026-10-28T14:40:12Z', 'body': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.\r\n\r\n> I can test these resolutions too.\r\n\r\nI tested it on an old (and weak) 6-core laptop and had mixed to good results: 1.33x (4 GBAs, 60fps) and 5.9x (1 GBA, 60fps). I think that is servicable, considering the weak hardware.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3357, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3357, 'open_issues': 484, 'watchers': 15730, '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-10-28T13:41:12.330196	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'debug687', 'action': 'edited', 'id': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'safe_author': False, 'body': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.', 'raw': {'action': 'edited', 'changes': {'body': {'from': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'id': 6054308480, 'node_id': 'PR_kwDOALCn2M8AAAABK8xKnQ', 'number': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 8, 'created_at': '2026-10-27T06:43:26Z', 'updated_at': '2026-10-28T13:18:45Z', '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/14957', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.patch', 'merged_at': None}, 'body': 'This adds dynamic linking for FFmpeg.\r\n\r\nFFmpeg is huge and difficult to compile on Windows.\r\nOur slimmed down binaries at https://github.com/dolphin-emu/ext-win-ffmpeg are outdated and lack codecs which is blocking #14902 \r\n\r\nThis will reduce our Windows build sizes (The x64 7z appears to be ~1.8 MB smaller).\r\nBut Users of ffmpeg features require an additional ~80MB of libraries.\r\n\r\nI\'ve only loaded the FFmpeg functions that we currently use. More can be added as needed.\r\nIt\'s only enabled on Windows, though it does also work on Linux with ~~`set(USE_SHARED_FFMPEG ON)`.~~\r\n`set(DYNAMICALLY_LOAD_FFMPEG ON)`\r\n\r\nThe DLLs are loaded from User/Load/Libraries.\r\n\r\nWhen they are missing and the user tries to use frame dumping, Dolphin asks the user if they would like them to be automatically downloaded.\r\n<img width="402" height="165" alt="image" src="https://github.com/user-attachments/assets/d4e5e05c-0e9c-4751-8372-a408a33c31d0" />\r\n\r\nThe DLLs are downloaded from https://github.com/btbn/ffmpeg-builds/releases which is a source that FFmpeg recommends.\r\nWith the exact URLs being:\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-win64-gpl-shared-9.0.zip\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-winarm64-gpl-shared-9.0.zip\r\n\r\nAll included DLLs are extracted to User/Load/Libraries.\r\n\r\nMaybe we should host the zip file ourselves for security and URL reliability reasons?\r\n\r\n~~This will require that https://github.com/dolphin-emu/ext-win-ffmpeg/pull/2 is merged first so the "FFmpeg-bin" submodule can be adjusted.~~\r\nI\'ve changed our FFmpeg git submodule to a github FFmpeg mirror rather than our own maintained repo.\r\n\r\nWindows x64 is tested.\r\nARM is untested.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/reactions', 'total_count': 3, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 1, 'confused': 0, 'heart': 2, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'id': 6470042379, 'node_id': 'IC_kwDOALCn2M8AAAABgaUDCw', '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-10-28T13:18:45Z', 'updated_at': '2026-10-28T13:41:10Z', 'body': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.\r\n\r\nI am talking about the resolution of a GBA because the video encoding is meant to be used for this feature: https://github.com/dolphin-emu/dolphin/pull/14902.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3358, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3358, 'open_issues': 484, 'watchers': 15730, '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-10-28T13:18:47.095982	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'debug687', 'action': 'created', 'id': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'safe_author': False, 'body': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'id': 6054308480, 'node_id': 'PR_kwDOALCn2M8AAAABK8xKnQ', 'number': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 8, 'created_at': '2026-10-27T06:43:26Z', 'updated_at': '2026-10-28T13:18:45Z', '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/14957', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.patch', 'merged_at': None}, 'body': 'This adds dynamic linking for FFmpeg.\r\n\r\nFFmpeg is huge and difficult to compile on Windows.\r\nOur slimmed down binaries at https://github.com/dolphin-emu/ext-win-ffmpeg are outdated and lack codecs which is blocking #14902 \r\n\r\nThis will reduce our Windows build sizes (The x64 7z appears to be ~1.8 MB smaller).\r\nBut Users of ffmpeg features require an additional ~80MB of libraries.\r\n\r\nI\'ve only loaded the FFmpeg functions that we currently use. More can be added as needed.\r\nIt\'s only enabled on Windows, though it does also work on Linux with ~~`set(USE_SHARED_FFMPEG ON)`.~~\r\n`set(DYNAMICALLY_LOAD_FFMPEG ON)`\r\n\r\nThe DLLs are loaded from User/Load/Libraries.\r\n\r\nWhen they are missing and the user tries to use frame dumping, Dolphin asks the user if they would like them to be automatically downloaded.\r\n<img width="402" height="165" alt="image" src="https://github.com/user-attachments/assets/d4e5e05c-0e9c-4751-8372-a408a33c31d0" />\r\n\r\nThe DLLs are downloaded from https://github.com/btbn/ffmpeg-builds/releases which is a source that FFmpeg recommends.\r\nWith the exact URLs being:\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-win64-gpl-shared-9.0.zip\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-winarm64-gpl-shared-9.0.zip\r\n\r\nAll included DLLs are extracted to User/Load/Libraries.\r\n\r\nMaybe we should host the zip file ourselves for security and URL reliability reasons?\r\n\r\n~~This will require that https://github.com/dolphin-emu/ext-win-ffmpeg/pull/2 is merged first so the "FFmpeg-bin" submodule can be adjusted.~~\r\nI\'ve changed our FFmpeg git submodule to a github FFmpeg mirror rather than our own maintained repo.\r\n\r\nWindows x64 is tested.\r\nARM is untested.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/reactions', 'total_count': 3, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 1, 'confused': 0, 'heart': 2, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6470042379', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'id': 6470042379, 'node_id': 'IC_kwDOALCn2M8AAAABgaUDCw', '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-10-28T13:18:45Z', 'updated_at': '2026-10-28T13:18:45Z', 'body': '> or just by trusting ffmpeg to do the magic\r\n\r\nI did not realize I was talking to an ffmpeg maintainer, when I suggested offloading work to ffmpeg.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6470042379/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3358, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3358, 'open_issues': 484, 'watchers': 15730, '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-10-28T13:10:04.302792	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'debug687', 'action': 'edited', 'id': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6469693616', 'safe_author': False, 'body': "> Doesn't Dolphin mostly use FFmpeg to encode recordings, not to decode?\r\n\r\nThat is true, but the svt-av1 software encoder has also come a long way. I just tested it on a 4k60 and a 1080p60 video file, and had a speed of 2x and 3x respectively (default settings). So I'm not concerned about software encoding for a video in the base resolution of a GBA (240x160) or even 4 GBAs (960x640). But I can test these resolutions too.\r\n\r\n> And hardware encoding is not nearly as widespread\r\n\r\nThis is also true, sadly. But going forward I expect hardware encoding to become ubiquitous. And with Vulkan Video Encode (or just by trusting ffmpeg to do the magic), also unified across vendors.", 'raw': {'action': 'edited', 'changes': {'body': {'from': "> Doesn't Dolphin mostly use FFmpeg to encode recordings, not to decode?\r\n\r\nThat is true, but the svt-av1 software encoder has also come a long way. I just tested it on a 4k60 and a 1080p60 video file, and had a speed of 2x and 3x respectively. So I'm not concerned about software encoding for a video in the base resolution of a GBA (240x160) or even 4 GBAs (960x640). But I can test these resolutions too.\r\n\r\n> And hardware encoding is not nearly as widespread\r\n\r\nThis is also true, sadly. But going forward I expect hardware encoding to become ubiquitous. And with Vulkan Video Encode (or just by trusting ffmpeg to do the magic), also unified across vendors."}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'id': 6054308480, 'node_id': 'PR_kwDOALCn2M8AAAABK8xKnQ', 'number': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 7, 'created_at': '2026-10-27T06:43:26Z', 'updated_at': '2026-10-28T13:03:19Z', 'closed_at': None, 'assignee': None, 'author_association': 'MEMBER', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14957', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.patch', 'merged_at': None}, 'body': 'This adds dynamic linking for FFmpeg.\r\n\r\nFFmpeg is huge and difficult to compile on Windows.\r\nOur slimmed down binaries at https://github.com/dolphin-emu/ext-win-ffmpeg are outdated and lack codecs which is blocking #14902 \r\n\r\nThis will reduce our Windows build sizes (The x64 7z appears to be ~1.8 MB smaller).\r\nBut Users of ffmpeg features require an additional ~80MB of libraries.\r\n\r\nI\'ve only loaded the FFmpeg functions that we currently use. More can be added as needed.\r\nIt\'s only enabled on Windows, though it does also work on Linux with ~~`set(USE_SHARED_FFMPEG ON)`.~~\r\n`set(DYNAMICALLY_LOAD_FFMPEG ON)`\r\n\r\nThe DLLs are loaded from User/Load/Libraries.\r\n\r\nWhen they are missing and the user tries to use frame dumping, Dolphin asks the user if they would like them to be automatically downloaded.\r\n<img width="402" height="165" alt="image" src="https://github.com/user-attachments/assets/d4e5e05c-0e9c-4751-8372-a408a33c31d0" />\r\n\r\nThe DLLs are downloaded from https://github.com/btbn/ffmpeg-builds/releases which is a source that FFmpeg recommends.\r\nWith the exact URLs being:\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-win64-gpl-shared-9.0.zip\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-winarm64-gpl-shared-9.0.zip\r\n\r\nAll included DLLs are extracted to User/Load/Libraries.\r\n\r\nMaybe we should host the zip file ourselves for security and URL reliability reasons?\r\n\r\n~~This will require that https://github.com/dolphin-emu/ext-win-ffmpeg/pull/2 is merged first so the "FFmpeg-bin" submodule can be adjusted.~~\r\nI\'ve changed our FFmpeg git submodule to a github FFmpeg mirror rather than our own maintained repo.\r\n\r\nWindows x64 is tested.\r\nARM is untested.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/reactions', 'total_count': 3, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 1, 'confused': 0, 'heart': 2, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6469693616', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6469693616', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'id': 6469693616, 'node_id': 'IC_kwDOALCn2M8AAAABgZ-wsA', '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-10-28T13:03:19Z', 'updated_at': '2026-10-28T13:10:02Z', 'body': "> Doesn't Dolphin mostly use FFmpeg to encode recordings, not to decode?\r\n\r\nThat is true, but the svt-av1 software encoder has also come a long way. I just tested it on a 4k60 and a 1080p60 video file, and had a speed of 2x and 3x respectively (default settings). So I'm not concerned about software encoding for a video in the base resolution of a GBA (240x160) or even 4 GBAs (960x640). But I can test these resolutions too.\r\n\r\n> And hardware encoding is not nearly as widespread\r\n\r\nThis is also true, sadly. But going forward I expect hardware encoding to become ubiquitous. And with Vulkan Video Encode (or just by trusting ffmpeg to do the magic), also unified across vendors.", 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6469693616/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3358, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3358, 'open_issues': 484, 'watchers': 15730, '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-10-28T13:03:29.404282	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'debug687', 'action': 'created', 'id': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6469693616', 'safe_author': False, 'body': "> Doesn't Dolphin mostly use FFmpeg to encode recordings, not to decode?\r\n\r\nThat is true, but the svt-av1 software encoder has also come a long way. I just tested it on a 4k60 and a 1080p60 video file, and had a speed of 2x and 3x respectively. So I'm not concerned about software encoding for a video in the base resolution of a GBA (240x160) or even 4 GBAs (960x640). But I can test these resolutions too.\r\n\r\n> And hardware encoding is not nearly as widespread\r\n\r\nThis is also true, sadly. But going forward I expect hardware encoding to become ubiquitous. And with Vulkan Video Encode (or just by trusting ffmpeg to do the magic), also unified across vendors.", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'id': 6054308480, 'node_id': 'PR_kwDOALCn2M8AAAABK8xKnQ', 'number': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 7, 'created_at': '2026-10-27T06:43:26Z', 'updated_at': '2026-10-28T13:03:19Z', 'closed_at': None, 'assignee': None, 'author_association': 'MEMBER', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14957', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.patch', 'merged_at': None}, 'body': 'This adds dynamic linking for FFmpeg.\r\n\r\nFFmpeg is huge and difficult to compile on Windows.\r\nOur slimmed down binaries at https://github.com/dolphin-emu/ext-win-ffmpeg are outdated and lack codecs which is blocking #14902 \r\n\r\nThis will reduce our Windows build sizes (The x64 7z appears to be ~1.8 MB smaller).\r\nBut Users of ffmpeg features require an additional ~80MB of libraries.\r\n\r\nI\'ve only loaded the FFmpeg functions that we currently use. More can be added as needed.\r\nIt\'s only enabled on Windows, though it does also work on Linux with ~~`set(USE_SHARED_FFMPEG ON)`.~~\r\n`set(DYNAMICALLY_LOAD_FFMPEG ON)`\r\n\r\nThe DLLs are loaded from User/Load/Libraries.\r\n\r\nWhen they are missing and the user tries to use frame dumping, Dolphin asks the user if they would like them to be automatically downloaded.\r\n<img width="402" height="165" alt="image" src="https://github.com/user-attachments/assets/d4e5e05c-0e9c-4751-8372-a408a33c31d0" />\r\n\r\nThe DLLs are downloaded from https://github.com/btbn/ffmpeg-builds/releases which is a source that FFmpeg recommends.\r\nWith the exact URLs being:\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-win64-gpl-shared-9.0.zip\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-winarm64-gpl-shared-9.0.zip\r\n\r\nAll included DLLs are extracted to User/Load/Libraries.\r\n\r\nMaybe we should host the zip file ourselves for security and URL reliability reasons?\r\n\r\n~~This will require that https://github.com/dolphin-emu/ext-win-ffmpeg/pull/2 is merged first so the "FFmpeg-bin" submodule can be adjusted.~~\r\nI\'ve changed our FFmpeg git submodule to a github FFmpeg mirror rather than our own maintained repo.\r\n\r\nWindows x64 is tested.\r\nARM is untested.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/reactions', 'total_count': 3, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 1, 'confused': 0, 'heart': 2, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6469693616', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6469693616', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'id': 6469693616, 'node_id': 'IC_kwDOALCn2M8AAAABgZ-wsA', '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-10-28T13:03:19Z', 'updated_at': '2026-10-28T13:03:19Z', 'body': "> Doesn't Dolphin mostly use FFmpeg to encode recordings, not to decode?\r\n\r\nThat is true, but the svt-av1 software encoder has also come a long way. I just tested it on a 4k60 and a 1080p60 video file, and had a speed of 2x and 3x respectively. So I'm not concerned about software encoding for a video in the base resolution of a GBA (240x160) or even 4 GBAs (960x640). But I can test these resolutions too.\r\n\r\n> And hardware encoding is not nearly as widespread\r\n\r\nThis is also true, sadly. But going forward I expect hardware encoding to become ubiquitous. And with Vulkan Video Encode (or just by trusting ffmpeg to do the magic), also unified across vendors.", 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6469693616/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3358, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3358, 'open_issues': 484, 'watchers': 15730, '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-10-28T12:31:30.109246	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'BtbN', 'action': 'created', 'id': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6469042190', 'safe_author': False, 'body': "Doesn't Dolphin mostly use FFmpeg to encode recordings, not to decode?\r\nAnd encoding AV1 is an extremely CPU heavy task that overwhelms even current high end CPUs easily.\r\nAnd hardware encoding is not nearly as widespread, and works vastly different depending on encoder vendor.", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'id': 6054308480, 'node_id': 'PR_kwDOALCn2M8AAAABK8xKnQ', 'number': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 6, 'created_at': '2026-10-27T06:43:26Z', 'updated_at': '2026-10-28T12:31:28Z', '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/14957', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.patch', 'merged_at': None}, 'body': 'This adds dynamic linking for FFmpeg.\r\n\r\nFFmpeg is huge and difficult to compile on Windows.\r\nOur slimmed down binaries at https://github.com/dolphin-emu/ext-win-ffmpeg are outdated and lack codecs which is blocking #14902 \r\n\r\nThis will reduce our Windows build sizes (The x64 7z appears to be ~1.8 MB smaller).\r\nBut Users of ffmpeg features require an additional ~80MB of libraries.\r\n\r\nI\'ve only loaded the FFmpeg functions that we currently use. More can be added as needed.\r\nIt\'s only enabled on Windows, though it does also work on Linux with ~~`set(USE_SHARED_FFMPEG ON)`.~~\r\n`set(DYNAMICALLY_LOAD_FFMPEG ON)`\r\n\r\nThe DLLs are loaded from User/Load/Libraries.\r\n\r\nWhen they are missing and the user tries to use frame dumping, Dolphin asks the user if they would like them to be automatically downloaded.\r\n<img width="402" height="165" alt="image" src="https://github.com/user-attachments/assets/d4e5e05c-0e9c-4751-8372-a408a33c31d0" />\r\n\r\nThe DLLs are downloaded from https://github.com/btbn/ffmpeg-builds/releases which is a source that FFmpeg recommends.\r\nWith the exact URLs being:\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-win64-gpl-shared-9.0.zip\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-winarm64-gpl-shared-9.0.zip\r\n\r\nAll included DLLs are extracted to User/Load/Libraries.\r\n\r\nMaybe we should host the zip file ourselves for security and URL reliability reasons?\r\n\r\n~~This will require that https://github.com/dolphin-emu/ext-win-ffmpeg/pull/2 is merged first so the "FFmpeg-bin" submodule can be adjusted.~~\r\nI\'ve changed our FFmpeg git submodule to a github FFmpeg mirror rather than our own maintained repo.\r\n\r\nWindows x64 is tested.\r\nARM is untested.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/reactions', 'total_count': 3, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 1, 'confused': 0, 'heart': 2, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6469042190', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6469042190', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'id': 6469042190, 'node_id': 'IC_kwDOALCn2M8AAAABgZXADg', 'user': {'login': 'BtbN', 'id': 294293, 'node_id': 'MDQ6VXNlcjI5NDI5Mw==', 'avatar_url': 'https://avatars.githubusercontent.com/u/294293?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/BtbN', 'html_url': 'https://github.com/BtbN', 'followers_url': 'https://api.github.com/users/BtbN/followers', 'following_url': 'https://api.github.com/users/BtbN/following{/other_user}', 'gists_url': 'https://api.github.com/users/BtbN/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/BtbN/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/BtbN/subscriptions', 'organizations_url': 'https://api.github.com/users/BtbN/orgs', 'repos_url': 'https://api.github.com/users/BtbN/repos', 'events_url': 'https://api.github.com/users/BtbN/events{/privacy}', 'received_events_url': 'https://api.github.com/users/BtbN/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-28T12:31:28Z', 'updated_at': '2026-10-28T12:31:28Z', 'body': "Doesn't Dolphin mostly use FFmpeg to encode recordings, not to decode?\r\nAnd encoding AV1 is an extremely CPU heavy task that overwhelms even current high end CPUs easily.\r\nAnd hardware encoding is not nearly as widespread, and works vastly different depending on encoder vendor.", 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6469042190/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3358, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3358, 'open_issues': 484, 'watchers': 15730, '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': 'BtbN', 'id': 294293, 'node_id': 'MDQ6VXNlcjI5NDI5Mw==', 'avatar_url': 'https://avatars.githubusercontent.com/u/294293?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/BtbN', 'html_url': 'https://github.com/BtbN', 'followers_url': 'https://api.github.com/users/BtbN/followers', 'following_url': 'https://api.github.com/users/BtbN/following{/other_user}', 'gists_url': 'https://api.github.com/users/BtbN/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/BtbN/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/BtbN/subscriptions', 'organizations_url': 'https://api.github.com/users/BtbN/orgs', 'repos_url': 'https://api.github.com/users/BtbN/repos', 'events_url': 'https://api.github.com/users/BtbN/events{/privacy}', 'received_events_url': 'https://api.github.com/users/BtbN/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-28T12:30:52.353306	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'debug687', 'action': 'edited', 'id': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6468626557', 'safe_author': False, 'body': "## Linux:\r\n\r\n>I think people generally just have the ffmpeg libraries installed?\r\n\r\nI would say so, but depending on the distro, the installed ffmpeg version might not include the patent encumbered codecs, like h264/h265. Fedora Linux does this. Fedora has Dolphin Emulator as an RPM package in their repository, which would then link to the system-provided ffmpeg (without h264).\r\n\r\n>And I don't expect this functionality to be overly useful on Linux.\r\n\r\nProbably not in the Flatpak, as that can use the Flatpak runtimes for ffmpeg with the codecs (including h264).\r\n\r\nBut maybe it is different for the AppImage, which seem to be used for development versions, I think AppImages want all dependencies included in the AppImage.\r\n\r\nMay I recommend the AV1 video codec? It is awesome, open, and it is broadly adopted.\r\nIt should work great on hardware made in the last 6 years, or even older with software decoding.\r\n\r\nDolphin recommends hardware no older than 10 years in https://dolphin-emu.org/docs/faq/#which-gpu-do-i-need anyway.", 'raw': {'action': 'edited', 'changes': {'body': {'from': "## Linux:\r\n\r\n>I think people generally just have the ffmpeg libraries installed?\r\n\r\nI would say so, but depending on the distro, the installed ffmpeg version might not include the patent encumbered codecs, like h264/h265. Fedora Linux does this. Fedora has Dolphin Emulator as an RPM package in their repository, which would then link to the system-provided ffmpeg (without h264).\r\n\r\n>And I don't expect this functionality to be overly useful on Linux.\r\n\r\nProbably not in the Flatpak, as that can use the Flatpak runtimes for ffmpeg with the codecs (including h264).\r\n\r\nBut maybe it is different for the AppImage, which seem to be used for development versions, I think AppImages want all dependencies included in the AppImage.\r\n\r\nMay I recommend the AV1 video codec? It is awesome, open, and it is broadly adopted.\r\nIt should work great on hardware made in the last 6 years, or even older with software decoding.\r\n\r\nDolphin recommends hardware no older than 10 years in https://dolphin-emu.org/docs/faq/ anyway."}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'id': 6054308480, 'node_id': 'PR_kwDOALCn2M8AAAABK8xKnQ', 'number': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 5, 'created_at': '2026-10-27T06:43:26Z', 'updated_at': '2026-10-28T12:30:18Z', '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/14957', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14957.patch', 'merged_at': None}, 'body': 'This adds dynamic linking for FFmpeg.\r\n\r\nFFmpeg is huge and difficult to compile on Windows.\r\nOur slimmed down binaries at https://github.com/dolphin-emu/ext-win-ffmpeg are outdated and lack codecs which is blocking #14902 \r\n\r\nThis will reduce our Windows build sizes (The x64 7z appears to be ~1.8 MB smaller).\r\nBut Users of ffmpeg features require an additional ~80MB of libraries.\r\n\r\nI\'ve only loaded the FFmpeg functions that we currently use. More can be added as needed.\r\nIt\'s only enabled on Windows, though it does also work on Linux with ~~`set(USE_SHARED_FFMPEG ON)`.~~\r\n`set(DYNAMICALLY_LOAD_FFMPEG ON)`\r\n\r\nThe DLLs are loaded from User/Load/Libraries.\r\n\r\nWhen they are missing and the user tries to use frame dumping, Dolphin asks the user if they would like them to be automatically downloaded.\r\n<img width="402" height="165" alt="image" src="https://github.com/user-attachments/assets/d4e5e05c-0e9c-4751-8372-a408a33c31d0" />\r\n\r\nThe DLLs are downloaded from https://github.com/btbn/ffmpeg-builds/releases which is a source that FFmpeg recommends.\r\nWith the exact URLs being:\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-win64-gpl-shared-9.0.zip\r\nhttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n9.0-latest-winarm64-gpl-shared-9.0.zip\r\n\r\nAll included DLLs are extracted to User/Load/Libraries.\r\n\r\nMaybe we should host the zip file ourselves for security and URL reliability reasons?\r\n\r\n~~This will require that https://github.com/dolphin-emu/ext-win-ffmpeg/pull/2 is merged first so the "FFmpeg-bin" submodule can be adjusted.~~\r\nI\'ve changed our FFmpeg git submodule to a github FFmpeg mirror rather than our own maintained repo.\r\n\r\nWindows x64 is tested.\r\nARM is untested.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/reactions', 'total_count': 3, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 1, 'confused': 0, 'heart': 2, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6468626557', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14957#issuecomment-6468626557', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14957', 'id': 6468626557, 'node_id': 'IC_kwDOALCn2M8AAAABgY9ofQ', '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-10-28T12:10:55Z', 'updated_at': '2026-10-28T12:30:50Z', 'body': "## Linux:\r\n\r\n>I think people generally just have the ffmpeg libraries installed?\r\n\r\nI would say so, but depending on the distro, the installed ffmpeg version might not include the patent encumbered codecs, like h264/h265. Fedora Linux does this. Fedora has Dolphin Emulator as an RPM package in their repository, which would then link to the system-provided ffmpeg (without h264).\r\n\r\n>And I don't expect this functionality to be overly useful on Linux.\r\n\r\nProbably not in the Flatpak, as that can use the Flatpak runtimes for ffmpeg with the codecs (including h264).\r\n\r\nBut maybe it is different for the AppImage, which seem to be used for development versions, I think AppImages want all dependencies included in the AppImage.\r\n\r\nMay I recommend the AV1 video codec? It is awesome, open, and it is broadly adopted.\r\nIt should work great on hardware made in the last 6 years, or even older with software decoding.\r\n\r\nDolphin recommends hardware no older than 10 years in https://dolphin-emu.org/docs/faq/#which-gpu-do-i-need anyway.", 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6468626557/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3358, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3358, 'open_issues': 484, 'watchers': 15730, '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'}

Recent 'gh_pull_request' events

2026-10-29T01:59:57.107248	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'synchronize', 'id': 14956, 'title': 'Common/Timer: Make "Precision Frame Timing" use x86 TPAUSE/MWAITX instead of spin waiting when available.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14956', 'head_ref_name': 'tsc-sleep', 'safe_author': True, 'base_sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'head_sha': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-29T01:48:24.882422	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'assigned', 'id': 14909, 'title': 'WiimoteEmu: improve Swing simulation and support relative input', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14909', 'head_ref_name': 'codex/mouse-wiimote-motion', 'safe_author': True, 'base_sha': 'eb236466c4f0ec8bef619add0972353d3996fe6c', 'head_sha': 'd6db9c0cd3aab7026f6dbda4077ae86406fbeb33', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T23:02:12.068407	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'bmdhacks', 'action': 'opened', 'id': 14958, 'title': 'Vulkan: Allow custom drivers on Mali devices', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14958', 'head_ref_name': 'mali-custom-driver', 'safe_author': False, 'base_sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'head_sha': 'a8fc326a6b0e9945919b174aed09a9639b5b10a0', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T22:10:44.892114	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'edited', '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': '22b581c670d84e60d11c1b02d38e1c7789ae2dfa', 'head_sha': 'e24e65914b2fd310cfe72beeb590923b54f0e329', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T22:06:29.730565	{'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': '22b581c670d84e60d11c1b02d38e1c7789ae2dfa', 'head_sha': 'e24e65914b2fd310cfe72beeb590923b54f0e329', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T20:53:04.145918	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'review_requested', 'id': 12014, 'title': 'Add CRT shaders', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/12014', 'head_ref_name': 'master', 'safe_author': True, 'base_sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'head_sha': '471988131524e6856d83ac3672d7853659abe0ce', 'merged': False, 'requested_reviewers': [{'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}], 'type': 'gh_pull_request'}
2026-10-28T20:52:10.261880	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'synchronize', 'id': 12014, 'title': 'Add CRT shaders', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/12014', 'head_ref_name': 'master', 'safe_author': True, 'base_sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'head_sha': '471988131524e6856d83ac3672d7853659abe0ce', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T20:46:02.448200	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'synchronize', 'id': 12014, 'title': 'Add CRT shaders', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/12014', 'head_ref_name': 'master', 'safe_author': True, 'base_sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'head_sha': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T19:28:53.703488	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'labeled', 'id': 13704, 'title': 'CMake: Use CMAKE_CURRENT_SOURCE_DIR instead of CMAKE_SOURCE_DIR', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/13704', 'head_ref_name': 'cmake_source', 'safe_author': True, 'base_sha': 'da8610e76fc1ae09562df3152a28be7f50d6e317', 'head_sha': '6c98e7b538e22faa1e1fcf7027241b318989f7ee', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T19:26:25.216900	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'labeled', 'id': 13824, 'title': 'Dolphin/allow system tinygltf', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/13824', 'head_ref_name': 'dolphin/allow-system-tinygltf', 'safe_author': True, 'base_sha': 'a1e636d72c8469acf747ac6542f0b7ace7cea02f', 'head_sha': '7fe76c71e33c9444e7060fc90dd2f4013764d8c3', 'merged': False, 'requested_reviewers': [{'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}], 'type': 'gh_pull_request'}
2026-10-28T19:24:08.053345	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'unlabeled', 'id': 14322, 'title': 'IOS/USB: Add "Connect USB Keyboard" support for HID', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14322', 'head_ref_name': 'kbd-hid', 'safe_author': True, 'base_sha': 'b5f580e6f9b5ba442248ac62a25cb4db246aa69c', 'head_sha': 'b88891fb3534760504517dc0c062a138ef5065ac', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T19:23:55.771481	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'unlabeled', 'id': 14321, 'title': 'IOS/KBD: Move keyboard logic to InputCommon', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14321', 'head_ref_name': 'kbd-base', 'safe_author': True, 'base_sha': 'e1d35f666cc35f6ead55d32ea2679df44d04da72', 'head_sha': 'ea0ce01a69863223c5703f3e8eb90658e185a9a5', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T18:02:56.319286	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'synchronize', 'id': 14951, 'title': 'Core/TimePlayed: Decouple the TimePlayed tracker thread from CPUManager.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14951', 'head_ref_name': 'time-played-cpumanager-decouple', 'safe_author': True, 'base_sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'head_sha': '6f63dd0f44bc9696e73fbcf2cbae766f902fac50', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T16:14:29.281869	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'SuperSamus', 'action': 'ready_for_review', 'id': 14888, 'title': "Jit: Don't invalidate instruction block cache with dcbx", 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14888', 'head_ref_name': 'dcbx-dont-clear-icache', 'safe_author': True, 'base_sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'head_sha': 'ffc287903e52f5c53b4e37c98eecc73784c0a66a', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T16:14:26.634663	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'SuperSamus', 'action': 'edited', 'id': 14888, 'title': "Jit: Don't invalidate instruction block cache with dcbx", 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14888', 'head_ref_name': 'dcbx-dont-clear-icache', 'safe_author': True, 'base_sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'head_sha': 'ffc287903e52f5c53b4e37c98eecc73784c0a66a', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T16:14:25.139500	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'SuperSamus', 'action': 'edited', 'id': 14888, 'title': "Jit: Don't invalidate instruction block cache with dcbx", 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14888', 'head_ref_name': 'dcbx-dont-clear-icache', 'safe_author': True, 'base_sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'head_sha': 'ffc287903e52f5c53b4e37c98eecc73784c0a66a', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T16:14:23.121210	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'SuperSamus', 'action': 'synchronize', 'id': 14888, 'title': "[Needs discussion] Jit: Don't invalidate instruction block cache with dcbx", 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14888', 'head_ref_name': 'dcbx-dont-clear-icache', 'safe_author': True, 'base_sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'head_sha': 'ffc287903e52f5c53b4e37c98eecc73784c0a66a', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T11:05:06.771791	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'converted_to_draft', 'id': 14927, 'title': 'Externals: Replace submodules with FetchContent', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14927', 'head_ref_name': 'nosubmodules', 'safe_author': True, 'base_sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'head_sha': 'ec0f2e64591fdce5b505b8fbf9b02328462194d0', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T11:04:52.358281	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'synchronize', 'id': 14927, 'title': 'Externals: Replace submodules with FetchContent', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14927', 'head_ref_name': 'nosubmodules', 'safe_author': True, 'base_sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'head_sha': 'ec0f2e64591fdce5b505b8fbf9b02328462194d0', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T10:56:44.167704	{'source': 'ghhookparser', 'repo': 'dolphin-emu/sadm', 'author': 'JoshuaVandaele', 'action': 'opened', 'id': 208, 'title': 'buildbot: cancel superseded PR builds', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/sadm/pull/208', 'head_ref_name': 'old-pr-cancel', 'safe_author': True, 'base_sha': '983c9bd664a2a83971d33b37f57189e99d10a7e9', 'head_sha': '9299931d14c98df06962e833c3925c604e194076', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T01:53:08.127748	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'assigned', 'id': 13495, 'title': 'CoreTiming/VideoCommon: Add "Sync to Host Refresh Rate" setting.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/13495', 'head_ref_name': 'vsync-timing', 'safe_author': True, 'base_sha': 'e6f3ae17627e4344da95b13424af5baf4c892b08', 'head_sha': '6eaef37e69e7b289d66aa53a9f44b7778f013275', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T01:51:45.769239	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'assigned', 'id': 14933, 'title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933', 'head_ref_name': 'hookable-event-better', 'safe_author': True, 'base_sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'head_sha': 'e212bcdf6384b22ee8559b51bd932da0e0d5e008', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T00:49:37.106353	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'synchronize', 'id': 14933, 'title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933', 'head_ref_name': 'hookable-event-better', 'safe_author': True, 'base_sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'head_sha': 'e212bcdf6384b22ee8559b51bd932da0e0d5e008', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T00:23:32.266029	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 14957, 'title': 'Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14957', 'head_ref_name': 'ffmpeg-dlls', 'safe_author': True, 'base_sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'head_sha': '27eac67b181791fdf60ac41943d3ed68ce531b0a', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-28T00:19:01.446895	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'synchronize', 'id': 14933, 'title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933', 'head_ref_name': 'hookable-event-better', 'safe_author': True, 'base_sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'head_sha': 'dc10176e2c77b1ba897d8dd4d3b6947d8fe427df', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}

Recent 'gh_pull_request_comment' events

2026-10-28T18:02:57.279727	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14951, 'hash': '6f63dd0f44bc9696e73fbcf2cbae766f902fac50', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14951#discussion_r4404260369', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-10-28T15:44:47.153269	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'created', 'id': 14951, 'hash': 'bed47bb5c92217246eb96181de1286cef37eab9f', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14951#discussion_r4402746253', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-10-28T00:50:00.160962	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14933, 'hash': 'e212bcdf6384b22ee8559b51bd932da0e0d5e008', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395816787', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-10-28T00:37:45.866518	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14933, 'hash': 'dc10176e2c77b1ba897d8dd4d3b6947d8fe427df', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395750502', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-10-28T00:36:11.332264	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'created', 'id': 14933, 'hash': 'dc10176e2c77b1ba897d8dd4d3b6947d8fe427df', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395742741', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-10-28T00:34:29.535729	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14933, 'hash': 'dc10176e2c77b1ba897d8dd4d3b6947d8fe427df', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395734156', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-10-28T00:31:24.843582	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14933, 'hash': 'dc10176e2c77b1ba897d8dd4d3b6947d8fe427df', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395718468', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-10-28T00:26:04.373798	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'created', 'id': 14933, 'hash': 'dc10176e2c77b1ba897d8dd4d3b6947d8fe427df', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395689626', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-10-28T00:20:09.420798	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14933, 'hash': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395658286', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-10-28T00:10:36.602200	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14933, 'hash': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395603757', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-10-27T23:35:23.868428	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14933, 'hash': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395376474', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-10-27T23:24:27.034165	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'edited', 'id': 14933, 'hash': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395262287', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-10-27T23:18:25.777086	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'created', 'id': 14933, 'hash': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395262287', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-10-27T23:18:25.776425	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'created', 'id': 14933, 'hash': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395078816', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-10-27T23:18:25.775748	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'created', 'id': 14933, 'hash': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395085881', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-10-27T13:15:54.432285	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'tygyh', 'action': 'created', 'id': 14783, 'hash': '1742b5c8bb0fffae0e7012b317222ad2e3f434f2', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14783#discussion_r4389105840', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-10-27T12:00:01.268506	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'created', 'id': 14783, 'hash': '1742b5c8bb0fffae0e7012b317222ad2e3f434f2', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14783#discussion_r4388399307', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-10-27T11:40:10.294736	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'tygyh', 'action': 'created', 'id': 14783, 'hash': '1742b5c8bb0fffae0e7012b317222ad2e3f434f2', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14783#discussion_r4388231277', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-10-26T11:36:58.833073	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'created', 'id': 14783, 'hash': '1742b5c8bb0fffae0e7012b317222ad2e3f434f2', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14783#discussion_r4376774084', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-10-26T11:24:31.800033	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'created', 'id': 14948, 'hash': 'b3b5f02be632541fa6939c75dedc2dc20c356f87', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14948#discussion_r4376678525', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-10-25T23:12:00.932236	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14948, 'hash': 'b3b5f02be632541fa6939c75dedc2dc20c356f87', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14948#discussion_r4372879923', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-10-25T16:21:26.799656	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'created', 'id': 14783, 'hash': '46bc6735c24535c4f35da715199e7093a3045613', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14783#discussion_r4371498807', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-10-25T10:40:34.817160	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'created', 'id': 14948, 'hash': 'c36fdcf8b3ce40a218197731a496748384789ee1', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14948#discussion_r4370539017', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-10-25T09:48:21.662774	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'created', 'id': 14948, 'hash': '56cae13e30a840ca44b9b1ef3e1a07ca384a3a1f', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14948#discussion_r4370388099', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-10-25T06:56:00.505347	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14814, 'hash': 'ac62f6b970cf94bc0d258eb2c6288b98c84cf991', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14814#discussion_r4369958773', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}

Recent 'gh_pull_request_review' events

2026-10-28T22:54:03.817326	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14877, 'pr_title': 'PerformanceTracker: Small cleanup, properly use RunningVariance for the standard deviation', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14877#pullrequestreview-5690760986', 'comments': [], 'type': 'gh_pull_request_review'}
2026-10-28T19:38:00.155903	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 12318, 'pr_title': 'Change Sensor Bar Position Default to Bottom', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/12318#pullrequestreview-5688630935', 'comments': [], 'type': 'gh_pull_request_review'}
2026-10-28T19:37:16.495496	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'submitted', 'pr_id': 14951, 'pr_title': 'Core/TimePlayed: Decouple the TimePlayed tracker thread from CPUManager.', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14951#pullrequestreview-5688621943', 'comments': [], 'type': 'gh_pull_request_review'}
2026-10-28T19:35:08.271003	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 12848, 'pr_title': 'Add unit test coverage for `Rectangle::ClampUL`, and remove the unused `ClampLL` function', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/12848#pullrequestreview-5688595525', 'comments': [], 'type': 'gh_pull_request_review'}
2026-10-28T19:31:25.636291	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'submitted', 'pr_id': 13704, 'pr_title': 'CMake: Use CMAKE_CURRENT_SOURCE_DIR instead of CMAKE_SOURCE_DIR', 'state': 'changes_requested', 'url': 'https://github.com/dolphin-emu/dolphin/pull/13704#pullrequestreview-5688548206', 'comments': [], 'type': 'gh_pull_request_review'}
2026-10-28T18:02:56.950466	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14951, 'pr_title': 'Core/TimePlayed: Decouple the TimePlayed tracker thread from CPUManager.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14951#pullrequestreview-5687392027', 'comments': [{'id': 4404260369, 'node_id': 'PRRC_kwDOALCn2M8AAAABBoOuEQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4404260369', 'pull_request_review_id': 5687392027, 'diff_hunk': '@@ -340,6 +284,7 @@ void CPUManager::Break()\n   // finish resulting in the CPU loop never terminating.\n   SetStateLocked(State::Stepping);\n   RunAdjacentSystems(false);\n+  Core::NotifyStateChanged(Core::State::Paused);', 'path': 'Source/Core/Core/HW/CPU.cpp', 'position': 103, 'original_position': 103, 'commit_id': '6f63dd0f44bc9696e73fbcf2cbae766f902fac50', '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': '`CpuThread` sets it to `Running`/`Paused` from `CPUSetInitialExecutionState` so it LGTM.', 'created_at': '2026-10-28T18:02:54Z', 'updated_at': '2026-10-28T18:02:55Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14951#discussion_r4404260369', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14951', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4404260369'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14951#discussion_r4404260369'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14951'}}, 'original_commit_id': 'bed47bb5c92217246eb96181de1286cef37eab9f', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4404260369/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4402746253, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-10-28T15:44:47.152379	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'submitted', 'pr_id': 14951, 'pr_title': 'Core/TimePlayed: Decouple the TimePlayed tracker thread from CPUManager.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14951#pullrequestreview-5685484903', 'comments': [{'id': 4402746253, 'node_id': 'PRRC_kwDOALCn2M8AAAABBmyTjQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4402746253', 'pull_request_review_id': 5685484903, 'diff_hunk': '@@ -340,6 +284,7 @@ void CPUManager::Break()\n   // finish resulting in the CPU loop never terminating.\n   SetStateLocked(State::Stepping);\n   RunAdjacentSystems(false);\n+  Core::NotifyStateChanged(Core::State::Paused);', 'path': 'Source/Core/Core/HW/CPU.cpp', 'position': 103, 'original_position': 103, 'commit_id': 'bed47bb5c92217246eb96181de1286cef37eab9f', '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 believe this line in Core.cpp needs to be removed, or this would fire twice:\nhttps://github.com/jordan-woyak/dolphin/blob/bed47bb5c92217246eb96181de1286cef37eab9f/Source/Core/Core/Core.cpp#L895\n\nBreak is also called in EmuThread, which might override `State::Starting`? I'm not super familiar with this area of the codebase so I'm not sure if this is an issue though", 'created_at': '2026-10-28T15:44:44Z', 'updated_at': '2026-10-28T15:44:44Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14951#discussion_r4402746253', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14951', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4402746253'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14951#discussion_r4402746253'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14951'}}, 'original_commit_id': 'bed47bb5c92217246eb96181de1286cef37eab9f', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4402746253/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-10-28T04:56:17.467564	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'mbc07', 'action': 'submitted', 'pr_id': 14848, 'pr_title': 'Qt: Add support for static builds', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14848#pullrequestreview-5677960686', 'comments': [], 'type': 'gh_pull_request_review'}
2026-10-28T02:17:03.228634	{'source': 'ghhookparser', 'repo': 'dolphin-emu/ext-win-qt', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 25, 'pr_title': 'Change how we build Qt and make it static', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/ext-win-qt/pull/25#pullrequestreview-5676959830', 'comments': [], 'type': 'gh_pull_request_review'}
2026-10-28T02:15:34.587942	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14848, 'pr_title': 'Qt: Add support for static builds', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14848#pullrequestreview-5676951138', 'comments': [], 'type': 'gh_pull_request_review'}
2026-10-28T00:50:00.726198	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14933, 'pr_title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#pullrequestreview-5676441213', 'comments': [{'id': 4395816787, 'node_id': 'PRRC_kwDOALCn2M8AAAABBgLXUw', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395816787', 'pull_request_review_id': 5676441213, 'diff_hunk': '@@ -43,102 +59,276 @@ using EventHook = std::unique_ptr<HookBase>;\n //   my_lovely_event.Trigger("Hello world", 42);\n //\n \n-template <typename... CallbackArgs>\n-class HookableEvent\n+// A container of EventHook objects.\n+// If any held EventHook become disconnected the internal container is appropriately adjusted.\n+//\n+// HookableEvent<> event;\n+// HookHolder holder;\n+//\n+// holder.Connect(event, [&] { fmt::print("triggered 1"); });\n+//\n+// WeakEventHook hook = holder.Connect(event, [&] { fmt::print("triggered 2"); });\n+// holder.Disconnect(hook);\n+//\n+class HookHolder\n {\n-public:\n-  using CallbackType = std::function<void(CallbackArgs...)>;\n+  template <typename... CallbackArgs>\n+  friend class HookableEvent;\n \n-  // Returns a handle that will unregister the listener when destroyed.\n-  [[nodiscard]] EventHook Register(CallbackType callback)\n+public:\n+  // Registers an EventHook that is stored internally.\n+  // Returns a WeakEventHook that can disconnect or extend the life of the hook.\n+  template <typename... CallbackArgs>\n+  WeakEventHook Connect(HookableEvent<CallbackArgs...>& event,\n+                        HookableEvent<CallbackArgs...>::CallbackType callback)\n   {\n-    DEBUG_LOG_FMT(COMMON, "Registering event hook handler");\n-    std::lock_guard lg(m_storage->listeners_mutex);\n+    return event.AddHook(std::move(callback), this);\n+  }\n \n-    auto& new_listener =\n-        m_storage->listeners.emplace_back(std::make_unique<Listener>(std::move(callback)));\n+  // These are just convenience functions to invoke EventHook::Disconnect()\n+  void Disconnect(EventHook& conn) { conn->Disconnect(); }\n+  void Disconnect(WeakEventHook& conn)\n+  {\n+    if (auto c = conn.lock())\n+      Disconnect(c);\n+  }\n \n-    return std::make_unique<HookImpl>(m_storage, new_listener.get());\n+  std::size_t GetConnectionCount() const\n+  {\n+    std::lock_guard lk{m_mutex};\n+    return m_hooks.size();\n   }\n \n-  // Invokes all registered callbacks.\n-  // Hooks added from within a callback will be invoked.\n-  // Hooks removed from within a callback will be skipped,\n-  //  but destruction of the hook\'s callback will be delayed until Trigger() completes.\n-  void Trigger(const CallbackArgs&... args)\n+  // Disconnect all held connections regardless of externally held EventHook.\n+  void DisconnectAll()\n   {\n-    std::lock_guard lg(m_storage->listeners_mutex);\n-    m_storage->is_triggering = true;\n+    for (std::unique_lock lk{m_mutex}; !m_hooks.empty(); lk.lock())\n+    {\n+      const EventHook hook = std::move(m_hooks.back());', 'path': 'Source/Core/Common/HookableEvent.h', 'position': 119, 'original_position': 119, 'commit_id': 'e212bcdf6384b22ee8559b51bd932da0e0d5e008', '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': 'Okie, I added the nullptr check. Thanks for finding the problem.', 'created_at': '2026-10-28T00:49:58Z', 'updated_at': '2026-10-28T00:49:58Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395816787', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395816787'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395816787'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933'}}, 'original_commit_id': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395816787/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4395262287, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-10-28T00:37:45.863840	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14933, 'pr_title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#pullrequestreview-5676364843', 'comments': [{'id': 4395750502, 'node_id': 'PRRC_kwDOALCn2M8AAAABBgHUZg', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395750502', 'pull_request_review_id': 5676364843, 'diff_hunk': '@@ -43,102 +59,276 @@ using EventHook = std::unique_ptr<HookBase>;\n //   my_lovely_event.Trigger("Hello world", 42);\n //\n \n-template <typename... CallbackArgs>\n-class HookableEvent\n+// A container of EventHook objects.\n+// If any held EventHook become disconnected the internal container is appropriately adjusted.\n+//\n+// HookableEvent<> event;\n+// HookHolder holder;\n+//\n+// holder.Connect(event, [&] { fmt::print("triggered 1"); });\n+//\n+// WeakEventHook hook = holder.Connect(event, [&] { fmt::print("triggered 2"); });\n+// holder.Disconnect(hook);\n+//\n+class HookHolder\n {\n-public:\n-  using CallbackType = std::function<void(CallbackArgs...)>;\n+  template <typename... CallbackArgs>\n+  friend class HookableEvent;\n \n-  // Returns a handle that will unregister the listener when destroyed.\n-  [[nodiscard]] EventHook Register(CallbackType callback)\n+public:\n+  // Registers an EventHook that is stored internally.\n+  // Returns a WeakEventHook that can disconnect or extend the life of the hook.\n+  template <typename... CallbackArgs>\n+  WeakEventHook Connect(HookableEvent<CallbackArgs...>& event,\n+                        HookableEvent<CallbackArgs...>::CallbackType callback)\n   {\n-    DEBUG_LOG_FMT(COMMON, "Registering event hook handler");\n-    std::lock_guard lg(m_storage->listeners_mutex);\n+    return event.AddHook(std::move(callback), this);\n+  }\n \n-    auto& new_listener =\n-        m_storage->listeners.emplace_back(std::make_unique<Listener>(std::move(callback)));\n+  // These are just convenience functions to invoke EventHook::Disconnect()\n+  void Disconnect(EventHook& conn) { conn->Disconnect(); }\n+  void Disconnect(WeakEventHook& conn)\n+  {\n+    if (auto c = conn.lock())\n+      Disconnect(c);\n+  }\n \n-    return std::make_unique<HookImpl>(m_storage, new_listener.get());\n+  std::size_t GetConnectionCount() const\n+  {\n+    std::lock_guard lk{m_mutex};\n+    return m_hooks.size();\n   }\n \n-  // Invokes all registered callbacks.\n-  // Hooks added from within a callback will be invoked.\n-  // Hooks removed from within a callback will be skipped,\n-  //  but destruction of the hook\'s callback will be delayed until Trigger() completes.\n-  void Trigger(const CallbackArgs&... args)\n+  // Disconnect all held connections regardless of externally held EventHook.\n+  void DisconnectAll()\n   {\n-    std::lock_guard lg(m_storage->listeners_mutex);\n-    m_storage->is_triggering = true;\n+    for (std::unique_lock lk{m_mutex}; !m_hooks.empty(); lk.lock())\n+    {\n+      const EventHook hook = std::move(m_hooks.back());', 'path': 'Source/Core/Common/HookableEvent.h', 'position': 119, 'original_position': 119, 'commit_id': 'dc10176e2c77b1ba897d8dd4d3b6947d8fe427df', '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': 'Alternatively we could copy the `shared_ptr` from `m_hooks.back()` rather than `std::move`ing, though that is marginally more expensive, but I think it would solve the transient "wrong" count and null item issue.', 'created_at': '2026-10-28T00:37:43Z', 'updated_at': '2026-10-28T00:37:44Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395750502', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395750502'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395750502'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933'}}, 'original_commit_id': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395750502/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4395262287, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-10-28T00:36:11.329300	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'submitted', 'pr_id': 14933, 'pr_title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#pullrequestreview-5676355574', 'comments': [{'id': 4395742741, 'node_id': 'PRRC_kwDOALCn2M8AAAABBgG2FQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395742741', 'pull_request_review_id': 5676355574, 'diff_hunk': '@@ -43,102 +59,276 @@ using EventHook = std::unique_ptr<HookBase>;\n //   my_lovely_event.Trigger("Hello world", 42);\n //\n \n-template <typename... CallbackArgs>\n-class HookableEvent\n+// A container of EventHook objects.\n+// If any held EventHook become disconnected the internal container is appropriately adjusted.\n+//\n+// HookableEvent<> event;\n+// HookHolder holder;\n+//\n+// holder.Connect(event, [&] { fmt::print("triggered 1"); });\n+//\n+// WeakEventHook hook = holder.Connect(event, [&] { fmt::print("triggered 2"); });\n+// holder.Disconnect(hook);\n+//\n+class HookHolder\n {\n-public:\n-  using CallbackType = std::function<void(CallbackArgs...)>;\n+  template <typename... CallbackArgs>\n+  friend class HookableEvent;\n \n-  // Returns a handle that will unregister the listener when destroyed.\n-  [[nodiscard]] EventHook Register(CallbackType callback)\n+public:\n+  // Registers an EventHook that is stored internally.\n+  // Returns a WeakEventHook that can disconnect or extend the life of the hook.\n+  template <typename... CallbackArgs>\n+  WeakEventHook Connect(HookableEvent<CallbackArgs...>& event,\n+                        HookableEvent<CallbackArgs...>::CallbackType callback)\n   {\n-    DEBUG_LOG_FMT(COMMON, "Registering event hook handler");\n-    std::lock_guard lg(m_storage->listeners_mutex);\n+    return event.AddHook(std::move(callback), this);\n+  }\n \n-    auto& new_listener =\n-        m_storage->listeners.emplace_back(std::make_unique<Listener>(std::move(callback)));\n+  // These are just convenience functions to invoke EventHook::Disconnect()\n+  void Disconnect(EventHook& conn) { conn->Disconnect(); }\n+  void Disconnect(WeakEventHook& conn)\n+  {\n+    if (auto c = conn.lock())\n+      Disconnect(c);\n+  }\n \n-    return std::make_unique<HookImpl>(m_storage, new_listener.get());\n+  std::size_t GetConnectionCount() const\n+  {\n+    std::lock_guard lk{m_mutex};\n+    return m_hooks.size();\n   }\n \n-  // Invokes all registered callbacks.\n-  // Hooks added from within a callback will be invoked.\n-  // Hooks removed from within a callback will be skipped,\n-  //  but destruction of the hook\'s callback will be delayed until Trigger() completes.\n-  void Trigger(const CallbackArgs&... args)\n+  // Disconnect all held connections regardless of externally held EventHook.\n+  void DisconnectAll()\n   {\n-    std::lock_guard lg(m_storage->listeners_mutex);\n-    m_storage->is_triggering = true;\n+    for (std::unique_lock lk{m_mutex}; !m_hooks.empty(); lk.lock())\n+    {\n+      const EventHook hook = std::move(m_hooks.back());', 'path': 'Source/Core/Common/HookableEvent.h', 'position': 119, 'original_position': 119, 'commit_id': 'dc10176e2c77b1ba897d8dd4d3b6947d8fe427df', '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': 'Yeah, the `nullptr` check will be good enough.  Thanks!', 'created_at': '2026-10-28T00:36:09Z', 'updated_at': '2026-10-28T00:36:09Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395742741', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395742741'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395742741'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933'}}, 'original_commit_id': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395742741/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4395262287, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-10-28T00:34:31.811362	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14933, 'pr_title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#pullrequestreview-5676345335', 'comments': [{'id': 4395734156, 'node_id': 'PRRC_kwDOALCn2M8AAAABBgGUjA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395734156', 'pull_request_review_id': 5676345335, 'diff_hunk': '@@ -43,102 +59,276 @@ using EventHook = std::unique_ptr<HookBase>;\n //   my_lovely_event.Trigger("Hello world", 42);\n //\n \n-template <typename... CallbackArgs>\n-class HookableEvent\n+// A container of EventHook objects.\n+// If any held EventHook become disconnected the internal container is appropriately adjusted.\n+//\n+// HookableEvent<> event;\n+// HookHolder holder;\n+//\n+// holder.Connect(event, [&] { fmt::print("triggered 1"); });\n+//\n+// WeakEventHook hook = holder.Connect(event, [&] { fmt::print("triggered 2"); });\n+// holder.Disconnect(hook);\n+//\n+class HookHolder\n {\n-public:\n-  using CallbackType = std::function<void(CallbackArgs...)>;\n+  template <typename... CallbackArgs>\n+  friend class HookableEvent;\n \n-  // Returns a handle that will unregister the listener when destroyed.\n-  [[nodiscard]] EventHook Register(CallbackType callback)\n+public:\n+  // Registers an EventHook that is stored internally.\n+  // Returns a WeakEventHook that can disconnect or extend the life of the hook.\n+  template <typename... CallbackArgs>\n+  WeakEventHook Connect(HookableEvent<CallbackArgs...>& event,\n+                        HookableEvent<CallbackArgs...>::CallbackType callback)\n   {\n-    DEBUG_LOG_FMT(COMMON, "Registering event hook handler");\n-    std::lock_guard lg(m_storage->listeners_mutex);\n+    return event.AddHook(std::move(callback), this);\n+  }\n \n-    auto& new_listener =\n-        m_storage->listeners.emplace_back(std::make_unique<Listener>(std::move(callback)));\n+  // These are just convenience functions to invoke EventHook::Disconnect()\n+  void Disconnect(EventHook& conn) { conn->Disconnect(); }\n+  void Disconnect(WeakEventHook& conn)\n+  {\n+    if (auto c = conn.lock())\n+      Disconnect(c);\n+  }\n \n-    return std::make_unique<HookImpl>(m_storage, new_listener.get());\n+  std::size_t GetConnectionCount() const\n+  {\n+    std::lock_guard lk{m_mutex};\n+    return m_hooks.size();\n   }\n \n-  // Invokes all registered callbacks.\n-  // Hooks added from within a callback will be invoked.\n-  // Hooks removed from within a callback will be skipped,\n-  //  but destruction of the hook\'s callback will be delayed until Trigger() completes.\n-  void Trigger(const CallbackArgs&... args)\n+  // Disconnect all held connections regardless of externally held EventHook.\n+  void DisconnectAll()\n   {\n-    std::lock_guard lg(m_storage->listeners_mutex);\n-    m_storage->is_triggering = true;\n+    for (std::unique_lock lk{m_mutex}; !m_hooks.empty(); lk.lock())\n+    {\n+      const EventHook hook = std::move(m_hooks.back());', 'path': 'Source/Core/Common/HookableEvent.h', 'position': 119, 'original_position': 119, 'commit_id': 'dc10176e2c77b1ba897d8dd4d3b6947d8fe427df', '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': "`GetConnectionCount` could also specifically count the non-null entries, making it O(N), but I'd rather have that be O(N) than make disconnection O(N). But again, I think concurrent wrong `GetConnectionCount` is a non-issue.", 'created_at': '2026-10-28T00:34:27Z', 'updated_at': '2026-10-28T00:34:27Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395734156', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395734156'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395734156'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933'}}, 'original_commit_id': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395734156/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4395262287, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-10-28T00:31:24.839825	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14933, 'pr_title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#pullrequestreview-5676326366', 'comments': [{'id': 4395718468, 'node_id': 'PRRC_kwDOALCn2M8AAAABBgFXRA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395718468', 'pull_request_review_id': 5676326366, 'diff_hunk': '@@ -43,102 +59,276 @@ using EventHook = std::unique_ptr<HookBase>;\n //   my_lovely_event.Trigger("Hello world", 42);\n //\n \n-template <typename... CallbackArgs>\n-class HookableEvent\n+// A container of EventHook objects.\n+// If any held EventHook become disconnected the internal container is appropriately adjusted.\n+//\n+// HookableEvent<> event;\n+// HookHolder holder;\n+//\n+// holder.Connect(event, [&] { fmt::print("triggered 1"); });\n+//\n+// WeakEventHook hook = holder.Connect(event, [&] { fmt::print("triggered 2"); });\n+// holder.Disconnect(hook);\n+//\n+class HookHolder\n {\n-public:\n-  using CallbackType = std::function<void(CallbackArgs...)>;\n+  template <typename... CallbackArgs>\n+  friend class HookableEvent;\n \n-  // Returns a handle that will unregister the listener when destroyed.\n-  [[nodiscard]] EventHook Register(CallbackType callback)\n+public:\n+  // Registers an EventHook that is stored internally.\n+  // Returns a WeakEventHook that can disconnect or extend the life of the hook.\n+  template <typename... CallbackArgs>\n+  WeakEventHook Connect(HookableEvent<CallbackArgs...>& event,\n+                        HookableEvent<CallbackArgs...>::CallbackType callback)\n   {\n-    DEBUG_LOG_FMT(COMMON, "Registering event hook handler");\n-    std::lock_guard lg(m_storage->listeners_mutex);\n+    return event.AddHook(std::move(callback), this);\n+  }\n \n-    auto& new_listener =\n-        m_storage->listeners.emplace_back(std::make_unique<Listener>(std::move(callback)));\n+  // These are just convenience functions to invoke EventHook::Disconnect()\n+  void Disconnect(EventHook& conn) { conn->Disconnect(); }\n+  void Disconnect(WeakEventHook& conn)\n+  {\n+    if (auto c = conn.lock())\n+      Disconnect(c);\n+  }\n \n-    return std::make_unique<HookImpl>(m_storage, new_listener.get());\n+  std::size_t GetConnectionCount() const\n+  {\n+    std::lock_guard lk{m_mutex};\n+    return m_hooks.size();\n   }\n \n-  // Invokes all registered callbacks.\n-  // Hooks added from within a callback will be invoked.\n-  // Hooks removed from within a callback will be skipped,\n-  //  but destruction of the hook\'s callback will be delayed until Trigger() completes.\n-  void Trigger(const CallbackArgs&... args)\n+  // Disconnect all held connections regardless of externally held EventHook.\n+  void DisconnectAll()\n   {\n-    std::lock_guard lg(m_storage->listeners_mutex);\n-    m_storage->is_triggering = true;\n+    for (std::unique_lock lk{m_mutex}; !m_hooks.empty(); lk.lock())\n+    {\n+      const EventHook hook = std::move(m_hooks.back());', 'path': 'Source/Core/Common/HookableEvent.h', 'position': 119, 'original_position': 119, 'commit_id': 'dc10176e2c77b1ba897d8dd4d3b6947d8fe427df', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "Oh, I think we do need an `if (hook != nullptr)` after the `unlock` in case of concurrent disconnections, because yeah, we will have a `nullptr` in the list for a bit, which other than the thing I'm about to fix, and the transient wrong count, I think that's fine?", 'created_at': '2026-10-28T00:31:22Z', 'updated_at': '2026-10-28T00:31:22Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395718468', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395718468'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395718468'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933'}}, 'original_commit_id': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395718468/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4395262287, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-10-28T00:26:04.088332	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'submitted', 'pr_id': 14933, 'pr_title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#pullrequestreview-5676293019', 'comments': [{'id': 4395689626, 'node_id': 'PRRC_kwDOALCn2M8AAAABBgDmmg', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395689626', 'pull_request_review_id': 5676293019, 'diff_hunk': '@@ -43,102 +59,276 @@ using EventHook = std::unique_ptr<HookBase>;\n //   my_lovely_event.Trigger("Hello world", 42);\n //\n \n-template <typename... CallbackArgs>\n-class HookableEvent\n+// A container of EventHook objects.\n+// If any held EventHook become disconnected the internal container is appropriately adjusted.\n+//\n+// HookableEvent<> event;\n+// HookHolder holder;\n+//\n+// holder.Connect(event, [&] { fmt::print("triggered 1"); });\n+//\n+// WeakEventHook hook = holder.Connect(event, [&] { fmt::print("triggered 2"); });\n+// holder.Disconnect(hook);\n+//\n+class HookHolder\n {\n-public:\n-  using CallbackType = std::function<void(CallbackArgs...)>;\n+  template <typename... CallbackArgs>\n+  friend class HookableEvent;\n \n-  // Returns a handle that will unregister the listener when destroyed.\n-  [[nodiscard]] EventHook Register(CallbackType callback)\n+public:\n+  // Registers an EventHook that is stored internally.\n+  // Returns a WeakEventHook that can disconnect or extend the life of the hook.\n+  template <typename... CallbackArgs>\n+  WeakEventHook Connect(HookableEvent<CallbackArgs...>& event,\n+                        HookableEvent<CallbackArgs...>::CallbackType callback)\n   {\n-    DEBUG_LOG_FMT(COMMON, "Registering event hook handler");\n-    std::lock_guard lg(m_storage->listeners_mutex);\n+    return event.AddHook(std::move(callback), this);\n+  }\n \n-    auto& new_listener =\n-        m_storage->listeners.emplace_back(std::make_unique<Listener>(std::move(callback)));\n+  // These are just convenience functions to invoke EventHook::Disconnect()\n+  void Disconnect(EventHook& conn) { conn->Disconnect(); }\n+  void Disconnect(WeakEventHook& conn)\n+  {\n+    if (auto c = conn.lock())\n+      Disconnect(c);\n+  }\n \n-    return std::make_unique<HookImpl>(m_storage, new_listener.get());\n+  std::size_t GetConnectionCount() const\n+  {\n+    std::lock_guard lk{m_mutex};\n+    return m_hooks.size();\n   }\n \n-  // Invokes all registered callbacks.\n-  // Hooks added from within a callback will be invoked.\n-  // Hooks removed from within a callback will be skipped,\n-  //  but destruction of the hook\'s callback will be delayed until Trigger() completes.\n-  void Trigger(const CallbackArgs&... args)\n+  // Disconnect all held connections regardless of externally held EventHook.\n+  void DisconnectAll()\n   {\n-    std::lock_guard lg(m_storage->listeners_mutex);\n-    m_storage->is_triggering = true;\n+    for (std::unique_lock lk{m_mutex}; !m_hooks.empty(); lk.lock())\n+    {\n+      const EventHook hook = std::move(m_hooks.back());', 'path': 'Source/Core/Common/HookableEvent.h', 'position': 119, 'original_position': 119, 'commit_id': 'dc10176e2c77b1ba897d8dd4d3b6947d8fe427df', 'user': {'login': 'iwubcode', 'id': 15224722, 'node_id': 'MDQ6VXNlcjE1MjI0NzIy', 'avatar_url': 'https://avatars.githubusercontent.com/u/15224722?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/iwubcode', 'html_url': 'https://github.com/iwubcode', 'followers_url': 'https://api.github.com/users/iwubcode/followers', 'following_url': 'https://api.github.com/users/iwubcode/following{/other_user}', 'gists_url': 'https://api.github.com/users/iwubcode/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/iwubcode/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/iwubcode/subscriptions', 'organizations_url': 'https://api.github.com/users/iwubcode/orgs', 'repos_url': 'https://api.github.com/users/iwubcode/repos', 'events_url': 'https://api.github.com/users/iwubcode/events{/privacy}', 'received_events_url': 'https://api.github.com/users/iwubcode/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': '> I guess by "momentarily be wrong" you mean that in the middle of DisconnectAll a concurrent GetConnectionCount call may "count" hooks that are moved from the list, and about to be destructed?\r\n\r\nYes, though I think there are other implications besides `GetConnectionCount()` being wrong.  You are potentially holding onto a nullptr while another thread could be using it?\r\n\r\n>I\'m not sure if that solves anything. Now you can have a stale pointer? And also now the operation is O(N) instead of O(1) ?\r\n\r\nThe advantage is you remove the issue I just described.  So yes you have O(1) but you have a dangerous O(1).  A O(N) for what is generally a small set of callbacks that is safe, is much better imo.', 'created_at': '2026-10-28T00:26:01Z', 'updated_at': '2026-10-28T00:26:02Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395689626', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395689626'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395689626'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933'}}, 'original_commit_id': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395689626/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4395262287, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-10-28T00:20:14.688517	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14933, 'pr_title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#pullrequestreview-5676256145', 'comments': [{'id': 4395658286, 'node_id': 'PRRC_kwDOALCn2M8AAAABBgBsLg', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395658286', 'pull_request_review_id': 5676256145, 'diff_hunk': '@@ -43,102 +59,276 @@ using EventHook = std::unique_ptr<HookBase>;\n //   my_lovely_event.Trigger("Hello world", 42);\n //\n \n-template <typename... CallbackArgs>\n-class HookableEvent\n+// A container of EventHook objects.\n+// If any held EventHook become disconnected the internal container is appropriately adjusted.\n+//\n+// HookableEvent<> event;\n+// HookHolder holder;\n+//\n+// holder.Connect(event, [&] { fmt::print("triggered 1"); });\n+//\n+// WeakEventHook hook = holder.Connect(event, [&] { fmt::print("triggered 2"); });\n+// holder.Disconnect(hook);\n+//\n+class HookHolder\n {\n-public:\n-  using CallbackType = std::function<void(CallbackArgs...)>;\n+  template <typename... CallbackArgs>\n+  friend class HookableEvent;\n \n-  // Returns a handle that will unregister the listener when destroyed.\n-  [[nodiscard]] EventHook Register(CallbackType callback)\n+public:\n+  // Registers an EventHook that is stored internally.\n+  // Returns a WeakEventHook that can disconnect or extend the life of the hook.\n+  template <typename... CallbackArgs>\n+  WeakEventHook Connect(HookableEvent<CallbackArgs...>& event,\n+                        HookableEvent<CallbackArgs...>::CallbackType callback)\n   {\n-    DEBUG_LOG_FMT(COMMON, "Registering event hook handler");\n-    std::lock_guard lg(m_storage->listeners_mutex);\n+    return event.AddHook(std::move(callback), this);\n+  }\n \n-    auto& new_listener =\n-        m_storage->listeners.emplace_back(std::make_unique<Listener>(std::move(callback)));\n+  // These are just convenience functions to invoke EventHook::Disconnect()\n+  void Disconnect(EventHook& conn) { conn->Disconnect(); }\n+  void Disconnect(WeakEventHook& conn)\n+  {\n+    if (auto c = conn.lock())\n+      Disconnect(c);\n+  }\n \n-    return std::make_unique<HookImpl>(m_storage, new_listener.get());\n+  std::size_t GetConnectionCount() const\n+  {\n+    std::lock_guard lk{m_mutex};\n+    return m_hooks.size();\n   }\n \n-  // Invokes all registered callbacks.\n-  // Hooks added from within a callback will be invoked.\n-  // Hooks removed from within a callback will be skipped,\n-  //  but destruction of the hook\'s callback will be delayed until Trigger() completes.\n-  void Trigger(const CallbackArgs&... args)\n+  // Disconnect all held connections regardless of externally held EventHook.\n+  void DisconnectAll()\n   {\n-    std::lock_guard lg(m_storage->listeners_mutex);\n-    m_storage->is_triggering = true;\n+    for (std::unique_lock lk{m_mutex}; !m_hooks.empty(); lk.lock())\n+    {\n+      const EventHook hook = std::move(m_hooks.back());\n+      lk.unlock();  // Avoid deadlock from different lock orders.\n+      hook->Disconnect();\n+    }\n+  }\n \n-    // Avoiding an actual iterator because the container may be modified.\n-    for (std::size_t i = 0; i != m_storage->listeners.size(); ++i)\n+  // Destruction only removes internal references.\n+  // Any externally held EventHook can keep a connection alive.\n+  ~HookHolder()\n+  {\n+    for (std::unique_lock lk{m_mutex}; !m_hooks.empty(); lk.lock())\n     {\n-      auto& listener = m_storage->listeners[i];\n+      const EventHook hook = std::move(m_hooks.back());\n+      lk.unlock();  // Avoid deadlock from different lock orders.\n+      hook->ForgetHolder();\n+    }\n+  }\n+\n+private:\n+  mutable std::mutex m_mutex;\n \n-      if (listener->is_pending_removal)\n-        continue;\n+  using ConnectedHooks = std::list<EventHook>;\n+  ConnectedHooks m_hooks;\n+\n+  ConnectedHooks::iterator AddHook(EventHook hook)\n+  {\n+    std::lock_guard lk{m_mutex};\n+    return m_hooks.emplace(m_hooks.end(), std::move(hook));\n+  }\n \n-      std::invoke(listener->callback, args...);\n+  void RemoveHook(ConnectedHooks::iterator it)\n+  {\n+    const EventHook hook = std::move(*it);', 'path': 'Source/Core/Common/HookableEvent.h', 'position': 1, 'original_position': 157, 'commit_id': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'I think you were right that it was smelly.\r\nI think it was some broken thing I came up with before introducing `shared_from_this()` to `Hook::Disconnect()`.\r\nIt should be fixed now.', 'created_at': '2026-10-28T00:20:06Z', 'updated_at': '2026-10-28T00:20:07Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395658286', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395658286'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395658286'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933'}}, 'original_commit_id': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395658286/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4395085881, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-10-28T00:10:36.601245	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14933, 'pr_title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#pullrequestreview-5676177215', 'comments': [{'id': 4395603757, 'node_id': 'PRRC_kwDOALCn2M8AAAABBf-XLQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395603757', 'pull_request_review_id': 5676177215, 'diff_hunk': '@@ -43,102 +59,276 @@ using EventHook = std::unique_ptr<HookBase>;\n //   my_lovely_event.Trigger("Hello world", 42);\n //\n \n-template <typename... CallbackArgs>\n-class HookableEvent\n+// A container of EventHook objects.\n+// If any held EventHook become disconnected the internal container is appropriately adjusted.\n+//\n+// HookableEvent<> event;\n+// HookHolder holder;\n+//\n+// holder.Connect(event, [&] { fmt::print("triggered 1"); });\n+//\n+// WeakEventHook hook = holder.Connect(event, [&] { fmt::print("triggered 2"); });\n+// holder.Disconnect(hook);\n+//\n+class HookHolder\n {\n-public:\n-  using CallbackType = std::function<void(CallbackArgs...)>;\n+  template <typename... CallbackArgs>\n+  friend class HookableEvent;\n \n-  // Returns a handle that will unregister the listener when destroyed.\n-  [[nodiscard]] EventHook Register(CallbackType callback)\n+public:\n+  // Registers an EventHook that is stored internally.\n+  // Returns a WeakEventHook that can disconnect or extend the life of the hook.\n+  template <typename... CallbackArgs>\n+  WeakEventHook Connect(HookableEvent<CallbackArgs...>& event,\n+                        HookableEvent<CallbackArgs...>::CallbackType callback)\n   {\n-    DEBUG_LOG_FMT(COMMON, "Registering event hook handler");\n-    std::lock_guard lg(m_storage->listeners_mutex);\n+    return event.AddHook(std::move(callback), this);\n+  }\n \n-    auto& new_listener =\n-        m_storage->listeners.emplace_back(std::make_unique<Listener>(std::move(callback)));\n+  // These are just convenience functions to invoke EventHook::Disconnect()\n+  void Disconnect(EventHook& conn) { conn->Disconnect(); }\n+  void Disconnect(WeakEventHook& conn)\n+  {\n+    if (auto c = conn.lock())\n+      Disconnect(c);\n+  }\n \n-    return std::make_unique<HookImpl>(m_storage, new_listener.get());\n+  std::size_t GetConnectionCount() const\n+  {\n+    std::lock_guard lk{m_mutex};\n+    return m_hooks.size();\n   }\n \n-  // Invokes all registered callbacks.\n-  // Hooks added from within a callback will be invoked.\n-  // Hooks removed from within a callback will be skipped,\n-  //  but destruction of the hook\'s callback will be delayed until Trigger() completes.\n-  void Trigger(const CallbackArgs&... args)\n+  // Disconnect all held connections regardless of externally held EventHook.\n+  void DisconnectAll()\n   {\n-    std::lock_guard lg(m_storage->listeners_mutex);\n-    m_storage->is_triggering = true;\n+    for (std::unique_lock lk{m_mutex}; !m_hooks.empty(); lk.lock())\n+    {\n+      const EventHook hook = std::move(m_hooks.back());', 'path': 'Source/Core/Common/HookableEvent.h', 'position': 119, 'original_position': 119, 'commit_id': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', '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 means if two threads access this holder, the hooks size will potentially momentarily be wrong ( GetConnectionCount() ).\r\n\r\nI guess by "momentarily be wrong" you mean that in the middle of `DisconnectAll` a concurrent `GetConnectionCount` call may "count" hooks that are moved from the list, and about to be destructed? I think that\'s a "benign race". I think there\'s nothing of risk that can actually be done with that count if the other threads are not under your control. It\'s just a diagnostic value. I even considered making `GetConnectionCount` private if not for the unit tests. I think everything is fine so long as the count is zero when `DisconnectAll` returns.\r\n\r\n> And I guess we don\'t remove the hook from the list here because it would stale the iterator that the hook holds onto?\r\n\r\nYes.\r\n\r\n> It\'d be slightly less cheap but instead of erasing by iterator, you could erase by pointer. That\'d allow you to erase from this list (and not need to store the iterator, cleaning up some of the code)\r\n\r\nI\'m not sure if that solves anything. Now you can have a stale pointer? And also now the operation is O(N) instead of O(1) ?', 'created_at': '2026-10-28T00:10:34Z', 'updated_at': '2026-10-28T00:10:34Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395603757', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395603757'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395603757'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933'}}, 'original_commit_id': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395603757/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4395262287, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-10-27T23:35:23.866203	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14933, 'pr_title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#pullrequestreview-5675867124', 'comments': [{'id': 4395376474, 'node_id': 'PRRC_kwDOALCn2M8AAAABBfwfWg', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395376474', 'pull_request_review_id': 5675867124, 'diff_hunk': '@@ -0,0 +1,500 @@\n+// Copyright 2026 Dolphin Emulator Project\n+// SPDX-License-Identifier: GPL-2.0-or-later\n+\n+#include <gtest/gtest.h>\n+\n+#include <thread>\n+\n+#include "Common/HookableEvent.h"\n+#include "Common/ScopeGuard.h"\n+\n+using Common::EventHook;\n+using Common::HookableEvent;\n+using Common::HookHolder;\n+using Common::WeakEventHook;\n+\n+TEST(HookableEvent, Basic)\n+{\n+  int x = 0;\n+\n+  HookableEvent<> event;\n+  EventHook hook = event.Register([&] { x = 1; });\n+\n+  EXPECT_EQ(event.GetConnectionCount(), 1);\n+\n+  // Callbacks stay connected as long as hook is in scope.\n+  event.Trigger();\n+  EXPECT_EQ(x, 1);\n+\n+  x = 0;\n+\n+  hook.reset();\n+\n+  // Callback is gone because the hook was reset.\n+  EXPECT_EQ(event.GetConnectionCount(), 0);\n+  event.Trigger();\n+  EXPECT_EQ(x, 0);\n+\n+  // Events can be stored in a container.\n+  HookHolder holder;\n+  constexpr int CONNECTION_COUNT = 55;\n+  for (int i = 0; i != CONNECTION_COUNT; ++i)\n+    holder.Connect(event, [&x, i] { x = i; });\n+\n+  // Callbacks are invoked in connection order.\n+  EXPECT_EQ(holder.GetConnectionCount(), CONNECTION_COUNT);\n+  event.Trigger();\n+  EXPECT_EQ(x, CONNECTION_COUNT - 1);\n+\n+  x = 0;\n+\n+  // Callbacks can be disconnected.\n+  holder.DisconnectAll();\n+\n+  WeakEventHook conn_x2 = holder.Connect(event, [&] { x = 2; });\n+  WeakEventHook conn_x1 = holder.Connect(event, [&] { x = 1; });\n+\n+  holder.Disconnect(conn_x1);\n+  EXPECT_EQ(holder.GetConnectionCount(), 1);\n+  event.Trigger();\n+  EXPECT_EQ(x, 2);\n+\n+  x = 0;\n+\n+  EventHook strong_conn_x2 = conn_x2.lock();\n+  EXPECT_TRUE(strong_conn_x2->IsConnected());\n+  strong_conn_x2->Disconnect();\n+  EXPECT_FALSE(strong_conn_x2->IsConnected());\n+\n+  EXPECT_EQ(event.GetConnectionCount(), 0);\n+  event.Trigger();\n+  EXPECT_EQ(x, 0);\n+}\n+\n+TEST(HookableEvent, TypedParameters)\n+{\n+  HookableEvent<int, std::string> event;\n+  HookHolder holder;\n+\n+  int x = 0;\n+  std::string y;\n+  holder.Connect(event, [&](int i, std::string s) {\n+    x = i;\n+    y = s;\n+  });\n+\n+  event.Trigger(7, "hello");\n+  EXPECT_EQ(x, 7);\n+  EXPECT_EQ(y, "hello");\n+\n+  // References work.\n+  HookableEvent<int&, std::string&> event2;\n+  holder.Connect(event2, [&](int& i, std::string& s) {\n+    i = x;\n+    s = y;\n+  });\n+\n+  int x2 = 0;\n+  std::string y2;\n+  event2.Trigger(x2, y2);\n+\n+  EXPECT_EQ(x2, 7);\n+  EXPECT_EQ(y2, "hello");\n+}\n+\n+TEST(HookableEvent, HolderOutlived)\n+{\n+  int x = 0;\n+\n+  HookableEvent<> event;\n+  EXPECT_EQ(event.GetConnectionCount(), 0);\n+\n+  constexpr int CONNECTION_COUNT = 5;\n+\n+  {\n+    HookHolder holder;\n+    EXPECT_EQ(holder.GetConnectionCount(), 0);\n+\n+    for (int y = 1; y <= CONNECTION_COUNT; ++y)\n+      holder.Connect(event, [&x, y] { x = y; });\n+\n+    EXPECT_EQ(holder.GetConnectionCount(), CONNECTION_COUNT);\n+    EXPECT_EQ(event.GetConnectionCount(), CONNECTION_COUNT);\n+\n+    EXPECT_EQ(x, 0);\n+    event.Trigger();\n+    EXPECT_EQ(x, CONNECTION_COUNT);\n+  }\n+\n+  // If the holder dies, the connections are removed.\n+  EXPECT_EQ(event.GetConnectionCount(), 0);\n+\n+  x = 0;\n+  event.Trigger();\n+  EXPECT_EQ(x, 0);\n+}\n+\n+TEST(HookableEvent, EventOutlived)\n+{\n+  int x = 0;\n+\n+  HookHolder holder;\n+\n+  EXPECT_EQ(holder.GetConnectionCount(), 0);\n+\n+  constexpr int connect_count = 5;\n+\n+  {\n+    HookableEvent<> event;\n+    EXPECT_EQ(event.GetConnectionCount(), 0);\n+\n+    for (int y = 1; y <= connect_count; ++y)\n+      holder.Connect(event, [&x, y] { x = y; });\n+\n+    EXPECT_EQ(holder.GetConnectionCount(), connect_count);\n+    EXPECT_EQ(event.GetConnectionCount(), connect_count);\n+\n+    EXPECT_EQ(x, 0);\n+    event.Trigger();\n+    EXPECT_EQ(x, connect_count);\n+  }\n+\n+  // If the event dies, the connections are removed.\n+  EXPECT_EQ(holder.GetConnectionCount(), 0);\n+}\n+\n+// Connections made from within Trigger are not invoked until next Trigger.\n+TEST(HookableEvent, ConnectWithinTrigger)\n+{\n+  int x = 0;\n+  HookHolder holder;\n+\n+  HookableEvent<> event;\n+  holder.Connect(event, [&] {\n+    holder.Connect(event, [&] { x = 3; });\n+    x = 1;\n+  });\n+  holder.Connect(event, [&] { x = 2; });\n+\n+  EXPECT_EQ(x, 0);\n+  EXPECT_EQ(holder.GetConnectionCount(), 2);\n+\n+  event.Trigger();\n+  EXPECT_EQ(x, 2);\n+  EXPECT_EQ(holder.GetConnectionCount(), 3);\n+\n+  event.Trigger();\n+  EXPECT_EQ(x, 3);\n+  EXPECT_EQ(holder.GetConnectionCount(), 4);\n+}\n+\n+// Connections removed from within Trigger are not invoked.\n+TEST(HookableEvent, DisconnectWithinTrigger)\n+{\n+  HookHolder holder;\n+\n+  HookableEvent<> event;\n+\n+  WeakEventHook conn_x2;\n+\n+  int x = 0;\n+\n+  auto conn_x1 = holder.Connect(event, [&] {\n+    holder.Disconnect(conn_x2);\n+    x = 1;\n+  });\n+\n+  conn_x2 = holder.Connect(event, [&] { x = 2; });\n+\n+  EXPECT_EQ(x, 0);\n+  EXPECT_EQ(holder.GetConnectionCount(), 2);\n+\n+  event.Trigger();\n+  EXPECT_EQ(x, 1);\n+  EXPECT_EQ(holder.GetConnectionCount(), 1);\n+\n+  x = 0;\n+  int y = 0;\n+\n+  // Note that callback destruction timing is immediately on Disconnect.\n+  // (Triggered by the Disconnect in the conn_x1 event)\n+  conn_x2 = holder.Connect(event, [&, sg = Common::ScopeGuard{[&] {\n+                                        y = 1;\n+                                        x = 99;\n+                                      }}] {\n+    x = 99;\n+    y = 99;\n+  });\n+\n+  event.Trigger();\n+  EXPECT_EQ(x, 1);\n+  EXPECT_EQ(y, 1);\n+  EXPECT_EQ(holder.GetConnectionCount(), 1);\n+}\n+\n+// Recursive Trigger is allowed.\n+TEST(HookableEvent, RecursiveTrigger)\n+{\n+  int x = 0;\n+  HookHolder holder;\n+  HookableEvent<int> event;\n+\n+  holder.Connect(event, [&](int p) {\n+    ++x;\n+    if (p > 1)\n+      event.Trigger(p - 1);\n+  });\n+\n+  event.Trigger(10);\n+  EXPECT_EQ(x, 10);\n+\n+  holder.DisconnectAll();\n+\n+  x = 0;\n+  int y = 0;\n+\n+  holder.Connect(event, [&](int p) {\n+    ++x;\n+    if (p == 1)\n+    {\n+      holder.Connect(event, [&](int) { ++y; });\n+      event.Trigger(0);\n+      event.DisconnectAll();\n+    }\n+  });\n+\n+  event.Trigger(1);\n+  EXPECT_EQ(x, 2);\n+  EXPECT_EQ(y, 1);\n+}\n+\n+TEST(HookableEvent, SelfDisconnect)\n+{\n+  int x = 0;\n+\n+  HookableEvent<int> event;\n+\n+  struct Obj\n+  {\n+    EventHook hook;\n+  };\n+  auto obj = std::make_shared<Obj>();\n+\n+  // Hook removes itself when passed a 7.\n+  obj->hook = event.Register([&x, obj](int p) mutable {\n+    x = p;\n+    if (p == 7)\n+      obj.reset();', 'path': 'Source/UnitTests/Common/HookableEventTest.cpp', 'position': 287, 'original_position': 287, 'commit_id': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', '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': "Additional data would not be usable after the `reset`. Like you said, this causes everything to be destroyed.\r\n\r\nI'd say it's similar to a lambda assigning-to or destroying a `std::function` that currently holds that very lambda. Even the lambda captures would be illegal to use at that point.\r\nPeople that do this certainly need to be careful. They are generally going to want to immediately return from the function, like what's done here, to avoid UB.\r\n\r\nI don't expect this to be a typical use case, but I think it's good that it's possible. ", 'created_at': '2026-10-27T23:35:21Z', 'updated_at': '2026-10-27T23:35:22Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395376474', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395376474'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395376474'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933'}}, 'original_commit_id': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395376474/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4395078816, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-10-27T23:18:25.773841	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'submitted', 'pr_id': 14933, 'pr_title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933#pullrequestreview-5675506969', 'comments': [{'id': 4395078816, 'node_id': 'PRRC_kwDOALCn2M8AAAABBfeUoA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395078816', 'pull_request_review_id': 5675506969, 'diff_hunk': '@@ -0,0 +1,500 @@\n+// Copyright 2026 Dolphin Emulator Project\n+// SPDX-License-Identifier: GPL-2.0-or-later\n+\n+#include <gtest/gtest.h>\n+\n+#include <thread>\n+\n+#include "Common/HookableEvent.h"\n+#include "Common/ScopeGuard.h"\n+\n+using Common::EventHook;\n+using Common::HookableEvent;\n+using Common::HookHolder;\n+using Common::WeakEventHook;\n+\n+TEST(HookableEvent, Basic)\n+{\n+  int x = 0;\n+\n+  HookableEvent<> event;\n+  EventHook hook = event.Register([&] { x = 1; });\n+\n+  EXPECT_EQ(event.GetConnectionCount(), 1);\n+\n+  // Callbacks stay connected as long as hook is in scope.\n+  event.Trigger();\n+  EXPECT_EQ(x, 1);\n+\n+  x = 0;\n+\n+  hook.reset();\n+\n+  // Callback is gone because the hook was reset.\n+  EXPECT_EQ(event.GetConnectionCount(), 0);\n+  event.Trigger();\n+  EXPECT_EQ(x, 0);\n+\n+  // Events can be stored in a container.\n+  HookHolder holder;\n+  constexpr int CONNECTION_COUNT = 55;\n+  for (int i = 0; i != CONNECTION_COUNT; ++i)\n+    holder.Connect(event, [&x, i] { x = i; });\n+\n+  // Callbacks are invoked in connection order.\n+  EXPECT_EQ(holder.GetConnectionCount(), CONNECTION_COUNT);\n+  event.Trigger();\n+  EXPECT_EQ(x, CONNECTION_COUNT - 1);\n+\n+  x = 0;\n+\n+  // Callbacks can be disconnected.\n+  holder.DisconnectAll();\n+\n+  WeakEventHook conn_x2 = holder.Connect(event, [&] { x = 2; });\n+  WeakEventHook conn_x1 = holder.Connect(event, [&] { x = 1; });\n+\n+  holder.Disconnect(conn_x1);\n+  EXPECT_EQ(holder.GetConnectionCount(), 1);\n+  event.Trigger();\n+  EXPECT_EQ(x, 2);\n+\n+  x = 0;\n+\n+  EventHook strong_conn_x2 = conn_x2.lock();\n+  EXPECT_TRUE(strong_conn_x2->IsConnected());\n+  strong_conn_x2->Disconnect();\n+  EXPECT_FALSE(strong_conn_x2->IsConnected());\n+\n+  EXPECT_EQ(event.GetConnectionCount(), 0);\n+  event.Trigger();\n+  EXPECT_EQ(x, 0);\n+}\n+\n+TEST(HookableEvent, TypedParameters)\n+{\n+  HookableEvent<int, std::string> event;\n+  HookHolder holder;\n+\n+  int x = 0;\n+  std::string y;\n+  holder.Connect(event, [&](int i, std::string s) {\n+    x = i;\n+    y = s;\n+  });\n+\n+  event.Trigger(7, "hello");\n+  EXPECT_EQ(x, 7);\n+  EXPECT_EQ(y, "hello");\n+\n+  // References work.\n+  HookableEvent<int&, std::string&> event2;\n+  holder.Connect(event2, [&](int& i, std::string& s) {\n+    i = x;\n+    s = y;\n+  });\n+\n+  int x2 = 0;\n+  std::string y2;\n+  event2.Trigger(x2, y2);\n+\n+  EXPECT_EQ(x2, 7);\n+  EXPECT_EQ(y2, "hello");\n+}\n+\n+TEST(HookableEvent, HolderOutlived)\n+{\n+  int x = 0;\n+\n+  HookableEvent<> event;\n+  EXPECT_EQ(event.GetConnectionCount(), 0);\n+\n+  constexpr int CONNECTION_COUNT = 5;\n+\n+  {\n+    HookHolder holder;\n+    EXPECT_EQ(holder.GetConnectionCount(), 0);\n+\n+    for (int y = 1; y <= CONNECTION_COUNT; ++y)\n+      holder.Connect(event, [&x, y] { x = y; });\n+\n+    EXPECT_EQ(holder.GetConnectionCount(), CONNECTION_COUNT);\n+    EXPECT_EQ(event.GetConnectionCount(), CONNECTION_COUNT);\n+\n+    EXPECT_EQ(x, 0);\n+    event.Trigger();\n+    EXPECT_EQ(x, CONNECTION_COUNT);\n+  }\n+\n+  // If the holder dies, the connections are removed.\n+  EXPECT_EQ(event.GetConnectionCount(), 0);\n+\n+  x = 0;\n+  event.Trigger();\n+  EXPECT_EQ(x, 0);\n+}\n+\n+TEST(HookableEvent, EventOutlived)\n+{\n+  int x = 0;\n+\n+  HookHolder holder;\n+\n+  EXPECT_EQ(holder.GetConnectionCount(), 0);\n+\n+  constexpr int connect_count = 5;\n+\n+  {\n+    HookableEvent<> event;\n+    EXPECT_EQ(event.GetConnectionCount(), 0);\n+\n+    for (int y = 1; y <= connect_count; ++y)\n+      holder.Connect(event, [&x, y] { x = y; });\n+\n+    EXPECT_EQ(holder.GetConnectionCount(), connect_count);\n+    EXPECT_EQ(event.GetConnectionCount(), connect_count);\n+\n+    EXPECT_EQ(x, 0);\n+    event.Trigger();\n+    EXPECT_EQ(x, connect_count);\n+  }\n+\n+  // If the event dies, the connections are removed.\n+  EXPECT_EQ(holder.GetConnectionCount(), 0);\n+}\n+\n+// Connections made from within Trigger are not invoked until next Trigger.\n+TEST(HookableEvent, ConnectWithinTrigger)\n+{\n+  int x = 0;\n+  HookHolder holder;\n+\n+  HookableEvent<> event;\n+  holder.Connect(event, [&] {\n+    holder.Connect(event, [&] { x = 3; });\n+    x = 1;\n+  });\n+  holder.Connect(event, [&] { x = 2; });\n+\n+  EXPECT_EQ(x, 0);\n+  EXPECT_EQ(holder.GetConnectionCount(), 2);\n+\n+  event.Trigger();\n+  EXPECT_EQ(x, 2);\n+  EXPECT_EQ(holder.GetConnectionCount(), 3);\n+\n+  event.Trigger();\n+  EXPECT_EQ(x, 3);\n+  EXPECT_EQ(holder.GetConnectionCount(), 4);\n+}\n+\n+// Connections removed from within Trigger are not invoked.\n+TEST(HookableEvent, DisconnectWithinTrigger)\n+{\n+  HookHolder holder;\n+\n+  HookableEvent<> event;\n+\n+  WeakEventHook conn_x2;\n+\n+  int x = 0;\n+\n+  auto conn_x1 = holder.Connect(event, [&] {\n+    holder.Disconnect(conn_x2);\n+    x = 1;\n+  });\n+\n+  conn_x2 = holder.Connect(event, [&] { x = 2; });\n+\n+  EXPECT_EQ(x, 0);\n+  EXPECT_EQ(holder.GetConnectionCount(), 2);\n+\n+  event.Trigger();\n+  EXPECT_EQ(x, 1);\n+  EXPECT_EQ(holder.GetConnectionCount(), 1);\n+\n+  x = 0;\n+  int y = 0;\n+\n+  // Note that callback destruction timing is immediately on Disconnect.\n+  // (Triggered by the Disconnect in the conn_x1 event)\n+  conn_x2 = holder.Connect(event, [&, sg = Common::ScopeGuard{[&] {\n+                                        y = 1;\n+                                        x = 99;\n+                                      }}] {\n+    x = 99;\n+    y = 99;\n+  });\n+\n+  event.Trigger();\n+  EXPECT_EQ(x, 1);\n+  EXPECT_EQ(y, 1);\n+  EXPECT_EQ(holder.GetConnectionCount(), 1);\n+}\n+\n+// Recursive Trigger is allowed.\n+TEST(HookableEvent, RecursiveTrigger)\n+{\n+  int x = 0;\n+  HookHolder holder;\n+  HookableEvent<int> event;\n+\n+  holder.Connect(event, [&](int p) {\n+    ++x;\n+    if (p > 1)\n+      event.Trigger(p - 1);\n+  });\n+\n+  event.Trigger(10);\n+  EXPECT_EQ(x, 10);\n+\n+  holder.DisconnectAll();\n+\n+  x = 0;\n+  int y = 0;\n+\n+  holder.Connect(event, [&](int p) {\n+    ++x;\n+    if (p == 1)\n+    {\n+      holder.Connect(event, [&](int) { ++y; });\n+      event.Trigger(0);\n+      event.DisconnectAll();\n+    }\n+  });\n+\n+  event.Trigger(1);\n+  EXPECT_EQ(x, 2);\n+  EXPECT_EQ(y, 1);\n+}\n+\n+TEST(HookableEvent, SelfDisconnect)\n+{\n+  int x = 0;\n+\n+  HookableEvent<int> event;\n+\n+  struct Obj\n+  {\n+    EventHook hook;\n+  };\n+  auto obj = std::make_shared<Obj>();\n+\n+  // Hook removes itself when passed a 7.\n+  obj->hook = event.Register([&x, obj](int p) mutable {\n+    x = p;\n+    if (p == 7)\n+      obj.reset();', 'path': 'Source/UnitTests/Common/HookableEventTest.cpp', 'position': 287, 'original_position': 287, 'commit_id': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', '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': 'What if `obj` had data on it, would that be accessible after the hook reset?  The reset will unregister the hook which will destroy the lambda and therefore `obj`?', 'created_at': '2026-10-27T22:54:52Z', 'updated_at': '2026-10-27T23:18:22Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395078816', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395078816'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395078816'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933'}}, 'original_commit_id': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395078816/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': 4395085881, 'node_id': 'PRRC_kwDOALCn2M8AAAABBfewOQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395085881', 'pull_request_review_id': 5675506969, 'diff_hunk': '@@ -43,102 +59,276 @@ using EventHook = std::unique_ptr<HookBase>;\n //   my_lovely_event.Trigger("Hello world", 42);\n //\n \n-template <typename... CallbackArgs>\n-class HookableEvent\n+// A container of EventHook objects.\n+// If any held EventHook become disconnected the internal container is appropriately adjusted.\n+//\n+// HookableEvent<> event;\n+// HookHolder holder;\n+//\n+// holder.Connect(event, [&] { fmt::print("triggered 1"); });\n+//\n+// WeakEventHook hook = holder.Connect(event, [&] { fmt::print("triggered 2"); });\n+// holder.Disconnect(hook);\n+//\n+class HookHolder\n {\n-public:\n-  using CallbackType = std::function<void(CallbackArgs...)>;\n+  template <typename... CallbackArgs>\n+  friend class HookableEvent;\n \n-  // Returns a handle that will unregister the listener when destroyed.\n-  [[nodiscard]] EventHook Register(CallbackType callback)\n+public:\n+  // Registers an EventHook that is stored internally.\n+  // Returns a WeakEventHook that can disconnect or extend the life of the hook.\n+  template <typename... CallbackArgs>\n+  WeakEventHook Connect(HookableEvent<CallbackArgs...>& event,\n+                        HookableEvent<CallbackArgs...>::CallbackType callback)\n   {\n-    DEBUG_LOG_FMT(COMMON, "Registering event hook handler");\n-    std::lock_guard lg(m_storage->listeners_mutex);\n+    return event.AddHook(std::move(callback), this);\n+  }\n \n-    auto& new_listener =\n-        m_storage->listeners.emplace_back(std::make_unique<Listener>(std::move(callback)));\n+  // These are just convenience functions to invoke EventHook::Disconnect()\n+  void Disconnect(EventHook& conn) { conn->Disconnect(); }\n+  void Disconnect(WeakEventHook& conn)\n+  {\n+    if (auto c = conn.lock())\n+      Disconnect(c);\n+  }\n \n-    return std::make_unique<HookImpl>(m_storage, new_listener.get());\n+  std::size_t GetConnectionCount() const\n+  {\n+    std::lock_guard lk{m_mutex};\n+    return m_hooks.size();\n   }\n \n-  // Invokes all registered callbacks.\n-  // Hooks added from within a callback will be invoked.\n-  // Hooks removed from within a callback will be skipped,\n-  //  but destruction of the hook\'s callback will be delayed until Trigger() completes.\n-  void Trigger(const CallbackArgs&... args)\n+  // Disconnect all held connections regardless of externally held EventHook.\n+  void DisconnectAll()\n   {\n-    std::lock_guard lg(m_storage->listeners_mutex);\n-    m_storage->is_triggering = true;\n+    for (std::unique_lock lk{m_mutex}; !m_hooks.empty(); lk.lock())\n+    {\n+      const EventHook hook = std::move(m_hooks.back());\n+      lk.unlock();  // Avoid deadlock from different lock orders.\n+      hook->Disconnect();\n+    }\n+  }\n \n-    // Avoiding an actual iterator because the container may be modified.\n-    for (std::size_t i = 0; i != m_storage->listeners.size(); ++i)\n+  // Destruction only removes internal references.\n+  // Any externally held EventHook can keep a connection alive.\n+  ~HookHolder()\n+  {\n+    for (std::unique_lock lk{m_mutex}; !m_hooks.empty(); lk.lock())\n     {\n-      auto& listener = m_storage->listeners[i];\n+      const EventHook hook = std::move(m_hooks.back());\n+      lk.unlock();  // Avoid deadlock from different lock orders.\n+      hook->ForgetHolder();\n+    }\n+  }\n+\n+private:\n+  mutable std::mutex m_mutex;\n \n-      if (listener->is_pending_removal)\n-        continue;\n+  using ConnectedHooks = std::list<EventHook>;\n+  ConnectedHooks m_hooks;\n+\n+  ConnectedHooks::iterator AddHook(EventHook hook)\n+  {\n+    std::lock_guard lk{m_mutex};\n+    return m_hooks.emplace(m_hooks.end(), std::move(hook));\n+  }\n \n-      std::invoke(listener->callback, args...);\n+  void RemoveHook(ConnectedHooks::iterator it)\n+  {\n+    const EventHook hook = std::move(*it);', 'path': 'Source/Core/Common/HookableEvent.h', 'position': 157, 'original_position': 157, 'commit_id': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', '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': "This feels smelly to me.  Is there a reason this is needed?  This variable isn't even used?", 'created_at': '2026-10-27T22:55:54Z', 'updated_at': '2026-10-27T23:18:22Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395085881', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395085881'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395085881'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933'}}, 'original_commit_id': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395085881/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': 4395262287, 'node_id': 'PRRC_kwDOALCn2M8AAAABBfphTw', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395262287', 'pull_request_review_id': 5675506969, 'diff_hunk': '@@ -43,102 +59,276 @@ using EventHook = std::unique_ptr<HookBase>;\n //   my_lovely_event.Trigger("Hello world", 42);\n //\n \n-template <typename... CallbackArgs>\n-class HookableEvent\n+// A container of EventHook objects.\n+// If any held EventHook become disconnected the internal container is appropriately adjusted.\n+//\n+// HookableEvent<> event;\n+// HookHolder holder;\n+//\n+// holder.Connect(event, [&] { fmt::print("triggered 1"); });\n+//\n+// WeakEventHook hook = holder.Connect(event, [&] { fmt::print("triggered 2"); });\n+// holder.Disconnect(hook);\n+//\n+class HookHolder\n {\n-public:\n-  using CallbackType = std::function<void(CallbackArgs...)>;\n+  template <typename... CallbackArgs>\n+  friend class HookableEvent;\n \n-  // Returns a handle that will unregister the listener when destroyed.\n-  [[nodiscard]] EventHook Register(CallbackType callback)\n+public:\n+  // Registers an EventHook that is stored internally.\n+  // Returns a WeakEventHook that can disconnect or extend the life of the hook.\n+  template <typename... CallbackArgs>\n+  WeakEventHook Connect(HookableEvent<CallbackArgs...>& event,\n+                        HookableEvent<CallbackArgs...>::CallbackType callback)\n   {\n-    DEBUG_LOG_FMT(COMMON, "Registering event hook handler");\n-    std::lock_guard lg(m_storage->listeners_mutex);\n+    return event.AddHook(std::move(callback), this);\n+  }\n \n-    auto& new_listener =\n-        m_storage->listeners.emplace_back(std::make_unique<Listener>(std::move(callback)));\n+  // These are just convenience functions to invoke EventHook::Disconnect()\n+  void Disconnect(EventHook& conn) { conn->Disconnect(); }\n+  void Disconnect(WeakEventHook& conn)\n+  {\n+    if (auto c = conn.lock())\n+      Disconnect(c);\n+  }\n \n-    return std::make_unique<HookImpl>(m_storage, new_listener.get());\n+  std::size_t GetConnectionCount() const\n+  {\n+    std::lock_guard lk{m_mutex};\n+    return m_hooks.size();\n   }\n \n-  // Invokes all registered callbacks.\n-  // Hooks added from within a callback will be invoked.\n-  // Hooks removed from within a callback will be skipped,\n-  //  but destruction of the hook\'s callback will be delayed until Trigger() completes.\n-  void Trigger(const CallbackArgs&... args)\n+  // Disconnect all held connections regardless of externally held EventHook.\n+  void DisconnectAll()\n   {\n-    std::lock_guard lg(m_storage->listeners_mutex);\n-    m_storage->is_triggering = true;\n+    for (std::unique_lock lk{m_mutex}; !m_hooks.empty(); lk.lock())\n+    {\n+      const EventHook hook = std::move(m_hooks.back());', 'path': 'Source/Core/Common/HookableEvent.h', 'position': 119, 'original_position': 119, 'commit_id': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'user': {'login': 'iwubcode', 'id': 15224722, 'node_id': 'MDQ6VXNlcjE1MjI0NzIy', 'avatar_url': 'https://avatars.githubusercontent.com/u/15224722?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/iwubcode', 'html_url': 'https://github.com/iwubcode', 'followers_url': 'https://api.github.com/users/iwubcode/followers', 'following_url': 'https://api.github.com/users/iwubcode/following{/other_user}', 'gists_url': 'https://api.github.com/users/iwubcode/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/iwubcode/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/iwubcode/subscriptions', 'organizations_url': 'https://api.github.com/users/iwubcode/orgs', 'repos_url': 'https://api.github.com/users/iwubcode/repos', 'events_url': 'https://api.github.com/users/iwubcode/events{/privacy}', 'received_events_url': 'https://api.github.com/users/iwubcode/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "I *think* this means if two threads access this holder, the hooks size will potentially momentarily be wrong ( `GetConnectionCount()` ).  And I guess we don't remove the hook from the list here because it would stale the iterator that the hook holds onto?\n\nIt'd be slightly less cheap but instead of erasing by iterator, you could erase by pointer.  That'd allow you to erase from this list.", 'created_at': '2026-10-27T23:17:13Z', 'updated_at': '2026-10-27T23:18:22Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395262287', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395262287'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14933#discussion_r4395262287'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933'}}, 'original_commit_id': 'de776988b7f306f4b0b8fe8e5568615eb8e0f3dc', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4395262287/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-10-27T13:15:54.223222	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'tygyh', 'action': 'submitted', 'pr_id': 14783, 'pr_title': 'Remove unused includes', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14783#pullrequestreview-5667622157', 'comments': [{'id': 4389105840, 'node_id': 'PRRC_kwDOALCn2M8AAAABBZxwsA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4389105840', 'pull_request_review_id': 5667622157, 'diff_hunk': '@@ -3,7 +3,6 @@\n \n #include "VideoCommon/CPMemory.h"\n \n-#include <cstring>', 'path': 'Source/Core/VideoCommon/CPMemory.cpp', 'position': 1, 'original_position': 4, 'commit_id': '1742b5c8bb0fffae0e7012b317222ad2e3f434f2', '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}, 'body': "This PR comes from my IDE marking the includes as unused. How come the CI doesn't fail its tests?", 'created_at': '2026-10-27T13:15:51Z', 'updated_at': '2026-10-27T13:15:52Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14783#discussion_r4389105840', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14783', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4389105840'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14783#discussion_r4389105840'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14783'}}, 'original_commit_id': '1742b5c8bb0fffae0e7012b317222ad2e3f434f2', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4389105840/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4376774084, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-10-27T12:00:01.265867	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'submitted', 'pr_id': 14783, 'pr_title': 'Remove unused includes', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14783#pullrequestreview-5666688614', 'comments': [{'id': 4388399307, 'node_id': 'PRRC_kwDOALCn2M8AAAABBZGoyw', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4388399307', 'pull_request_review_id': 5666688614, 'diff_hunk': '@@ -3,7 +3,6 @@\n \n #include "VideoCommon/CPMemory.h"\n \n-#include <cstring>', 'path': 'Source/Core/VideoCommon/CPMemory.cpp', 'position': 1, 'original_position': 4, 'commit_id': '1742b5c8bb0fffae0e7012b317222ad2e3f434f2', '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': 'In your build environments, cstring is probably being pulled in transitively. This is not something we can or should rely on. If a source file uses `std::memcpy`, said file should also contain `#include <cstring>`. Like DataReader.h should not have cstring removed among others...', 'created_at': '2026-10-27T11:59:58Z', 'updated_at': '2026-10-27T11:59:59Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14783#discussion_r4388399307', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14783', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4388399307'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14783#discussion_r4388399307'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14783'}}, 'original_commit_id': '1742b5c8bb0fffae0e7012b317222ad2e3f434f2', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4388399307/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4376774084, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-10-27T11:40:10.293023	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'tygyh', 'action': 'submitted', 'pr_id': 14783, 'pr_title': 'Remove unused includes', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14783#pullrequestreview-5666466107', 'comments': [{'id': 4388231277, 'node_id': 'PRRC_kwDOALCn2M8AAAABBY8YbQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4388231277', 'pull_request_review_id': 5666466107, 'diff_hunk': '@@ -3,7 +3,6 @@\n \n #include "VideoCommon/CPMemory.h"\n \n-#include <cstring>', 'path': 'Source/Core/VideoCommon/CPMemory.cpp', 'position': 4, 'original_position': 4, 'commit_id': '1742b5c8bb0fffae0e7012b317222ad2e3f434f2', '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}, 'body': "That's really weird. I can build without issues. I'll readd the include either way.", 'created_at': '2026-10-27T11:40:07Z', 'updated_at': '2026-10-27T11:40:08Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14783#discussion_r4388231277', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14783', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4388231277'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14783#discussion_r4388231277'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14783'}}, 'original_commit_id': '1742b5c8bb0fffae0e7012b317222ad2e3f434f2', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4388231277/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4376774084, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-10-27T00:02:23.707134	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14948, 'pr_title': 'CMake: Only trim flags on MSVC, be a little more selective of what to remove', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14948#pullrequestreview-5660693533', 'comments': [], 'type': 'gh_pull_request_review'}
2026-10-26T11:36:58.577805	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'submitted', 'pr_id': 14783, 'pr_title': 'Remove unused includes', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14783#pullrequestreview-5651346582', 'comments': [{'id': 4376774084, 'node_id': 'PRRC_kwDOALCn2M8AAAABBOBFxA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4376774084', 'pull_request_review_id': 5651346582, 'diff_hunk': '@@ -3,7 +3,6 @@\n \n #include "VideoCommon/CPMemory.h"\n \n-#include <cstring>', 'path': 'Source/Core/VideoCommon/CPMemory.cpp', 'position': 4, 'original_position': 4, 'commit_id': '1742b5c8bb0fffae0e7012b317222ad2e3f434f2', '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 also not an unused header:\n\n```\nFAILED: [code=1] Source/Core/VideoCommon/CMakeFiles/videocommon.dir/CPMemory.cpp.o\n/usr/sbin/ccache /usr/sbin/g++ -DAUTOUPDATE=1 -DDATA_DIR=\\"/usr/local/share/dolphin-emu/\\" -DGLSLANG_IS_SHARED_LIBRARY=1 -DHAS_OPENGL -DHAS_VULKAN -DHAVE_CPPIPC -DHAVE_EGL=1 -DHAVE_FFMPEG -DHAVE_LIBEVDEV=1 -DHAVE_LIBSYSTEMD -DHAVE_LIBUDEV=1 -DHAVE_SDL3 -DHAVE_X11=1 -DHAVE_XRANDR=1 -DIMGUI_USER_CONFIG=\\"imgui_user_config.h\\" -DRC_CLIENT_SUPPORTS_HASH -DTINYGLTF_NOEXCEPTION -DTINYGLTF_NO_EXTERNAL_IMAGE -DTINYGLTF_USE_CPP14 -DUSE_ANALYTICS=1 -DUSE_MEMORYWATCHER=1 -DUSE_PIPES=1 -DUSE_RETRO_ACHIEVEMENTS -DUSE_UPNP -D_ARCH_64=1 -D_DEFAULT_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_M_X86_64=1 -D__LIBUSB__ -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I/dolphin/Source/Core -I/dolphin/Externals/discord-rpc/include -I/dolphin/Externals/picojson -I/build/Source/Core -I/dolphin/Externals/mbedtls/include -I/dolphin/Externals/expr/include -I/dolphin/Externals/rcheevos -I/dolphin/Externals/imgui -I/dolphin/Externals/imgui/imgui -I/dolphin/Externals/implot/implot -I/dolphin/Externals/tinygltf -isystem /usr/include/minizip-ng -isystem /usr/include/libusb-1.0 -isystem /usr/include/hidapi -O3 -DNDEBUG -std=c++23   -I/usr/include -msse2 -fdiagnostics-color -fno-strict-aliasing -fno-exceptions -fvisibility-inlines-hidden -fvisibility=hidden -fomit-frame-pointer -Wall -Wtype-limits -Wsign-compare -Wignored-qualifiers -Wuninitialized -Wlogical-op -Wshadow -Winit-self -Wmissing-declarations -Wimplicit-fallthrough -Wno-stringop-truncation -Werror=format -Wno-trigraphs -DWITH_GZFILEOP -MD -MT Source/Core/VideoCommon/CMakeFiles/videocommon.dir/CPMemory.cpp.o -MF Source/Core/VideoCommon/CMakeFiles/videocommon.dir/CPMemory.cpp.o.d -o Source/Core/VideoCommon/CMakeFiles/videocommon.dir/CPMemory.cpp.o -c /dolphin/Source/Core/VideoCommon/CPMemory.cpp\n/dolphin/Source/Core/VideoCommon/CPMemory.cpp: In function ‘void CopyPreprocessCPStateFromMain()’:\n/dolphin/Source/Core/VideoCommon/CPMemory.cpp:21:8: error: ‘memcpy’ is not a member of ‘std’; did you mean ‘wmemcpy’?\n   21 |   std::memcpy(static_cast<void*>(&g_preprocess_cp_state),\n      |        ^~~~~~\n      |        wmemcpy\n```\n\nThere may be other instances of this, I stopped at the first build failure.', 'created_at': '2026-10-26T11:36:55Z', 'updated_at': '2026-10-26T11:36:55Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14783#discussion_r4376774084', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14783', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4376774084'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14783#discussion_r4376774084'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14783'}}, 'original_commit_id': '1742b5c8bb0fffae0e7012b317222ad2e3f434f2', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4376774084/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-10-25T12:40:26.192265	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'AdmiralCurtiss', 'before_sha': 'edce78926fc20cea65a0599637788715e03644be', 'after_sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'commits': [{'author': {'name': 'Martino Fontana', 'email': 'tinozzo123@gmail.com', 'date': '2026-09-27T10:48:19+02:00', 'username': 'SuperSamus'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/PowerPC/PPCAnalyst.cpp'], 'removed': [], 'message': "PPCAnalyst: Avoid using strncmp\n\nIts usage appears in the profiler, and while small, it's not completely insignificant.", 'url': 'https://github.com/dolphin-emu/dolphin/commit/786d91da28c31c6431a9f079971acb25eb23c925', 'hash': '786d91da28c31c6431a9f079971acb25eb23c925'}, {'author': {'name': 'Admiral H. Curtiss', 'email': 'pikachu025@gmail.com', 'date': '2026-10-25T13:40:23+01:00', 'username': 'AdmiralCurtiss'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Core/PowerPC/PPCAnalyst.cpp'], 'removed': [], 'message': 'Merge pull request #14939 from SuperSamus/ppc-analyst-no-strncmp\n\nPPCAnalyst: Avoid using strncmp', 'url': 'https://github.com/dolphin-emu/dolphin/commit/3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'hash': '3eb30c7620b4475b2e0404228ba0d2b238a132f1'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-25T11:30:03.758817	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'JosJuice', 'before_sha': 'f8e6bed381f52fba6015fbda0568e447e1a984b2', 'after_sha': 'edce78926fc20cea65a0599637788715e03644be', 'commits': [{'author': {'name': 'Martino Fontana', 'email': 'tinozzo123@gmail.com', 'date': '2026-09-05T00:23:14+02:00', 'username': 'SuperSamus'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/PowerPC/Jit64/Jit.cpp', 'Source/Core/Core/PowerPC/Jit64Common/EmuCodeBlock.cpp', 'Source/Core/Core/PowerPC/Jit64Common/TrampolineInfo.h'], 'removed': [], 'message': "Jit64: Merge m_exception_handler_at_loc in TrampolineInfo\n\nIf MMU is enabled, there's an m_exception_handler_at_loc entry for almost every entry in m_back_patch_info, so keeping them separate is a huge waste: hashmaps aren't free.\nBrings a decent improvement to codegen performance when MMU is enabled.\n\nIf MMU is disabled, however, this increases the size of TrampolineInfo by 8 bytes. It's a little sad, but it's important to prioritize the worst-case performance.\nAlso, it simplifies the next commit, which will reduce the memory usage anyway.", 'url': 'https://github.com/dolphin-emu/dolphin/commit/f0eb5d60b50d01f0609cb26a81136dc6d52beef7', 'hash': 'f0eb5d60b50d01f0609cb26a81136dc6d52beef7'}, {'author': {'name': 'Martino Fontana', 'email': 'tinozzo123@gmail.com', 'date': '2026-09-06T18:14:36+02:00', 'username': 'SuperSamus'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/PowerPC/Jit64/Jit.cpp', 'Source/Core/Core/PowerPC/Jit64Common/EmuCodeBlock.cpp', 'Source/Core/Core/PowerPC/Jit64Common/EmuCodeBlock.h', 'Source/Core/Core/PowerPC/JitArm64/Jit.cpp', 'Source/Core/Core/PowerPC/JitArm64/Jit.h', 'Source/Core/Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp', 'Source/Core/Core/PowerPC/JitCommon/JitBase.h'], 'removed': [], 'message': "Jit: Refactor m_back_patch_info/m_fault_to_handler's maps to store a vector per block\n\n(Tested NBA Live 2005)\nProfiling codegen performance showed that one of the slower functions was inserting elements to this map.\nBy inserting instead a vector of all the entries of a block, this disappears from the profiling, and the improvement is noticeable (tested the match intro sequence, though exact numbers are hard to gather).\n\nOn x86 (ARM was already doing it), now erasing a block will also delete the corresponding entries from the map.", 'url': 'https://github.com/dolphin-emu/dolphin/commit/4c9019d6fb53ea81e49f6ed1ffeb70c52418a300', 'hash': '4c9019d6fb53ea81e49f6ed1ffeb70c52418a300'}, {'author': {'name': 'JosJuice', 'email': 'josjuice@gmail.com', 'date': '2026-10-25T12:30:00+01:00', 'username': 'JosJuice'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Core/PowerPC/Jit64/Jit.cpp', 'Source/Core/Core/PowerPC/Jit64Common/EmuCodeBlock.cpp', 'Source/Core/Core/PowerPC/Jit64Common/EmuCodeBlock.h', 'Source/Core/Core/PowerPC/Jit64Common/TrampolineInfo.h', 'Source/Core/Core/PowerPC/JitArm64/Jit.cpp', 'Source/Core/Core/PowerPC/JitArm64/Jit.h', 'Source/Core/Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp', 'Source/Core/Core/PowerPC/JitCommon/JitBase.h'], 'removed': [], 'message': 'Merge pull request #14853 from SuperSamus/jit-trampoline-info-optimize\n\nJit: Optimize trampoline info allocation', 'url': 'https://github.com/dolphin-emu/dolphin/commit/edce78926fc20cea65a0599637788715e03644be', 'hash': 'edce78926fc20cea65a0599637788715e03644be'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-25T11:00:47.273693	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'JosJuice', 'before_sha': '22b581c670d84e60d11c1b02d38e1c7789ae2dfa', 'after_sha': 'f8e6bed381f52fba6015fbda0568e447e1a984b2', 'commits': [{'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-10-25T01:26:26-05:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Common/Thread.cpp', 'Source/Core/Common/Thread.h'], 'removed': [], 'message': 'Common/Thread: Remove unused SwitchCurrentThread function.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/d7c0fdebad493f3244aebfcab9e38a24f6594bde', 'hash': 'd7c0fdebad493f3244aebfcab9e38a24f6594bde'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-10-25T01:27:52-05:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Common/Thread.h'], 'removed': [], 'message': 'Common/Thread: Remove unused non-Windows INFINITE macro.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/fa108cf559250aff9d8d0ec812d5bdebf075b7b0', 'hash': 'fa108cf559250aff9d8d0ec812d5bdebf075b7b0'}, {'author': {'name': 'JosJuice', 'email': 'josjuice@gmail.com', 'date': '2026-10-25T12:00:44+01:00', 'username': 'JosJuice'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Common/Thread.cpp', 'Source/Core/Common/Thread.h'], 'removed': [], 'message': 'Merge pull request #14952 from jordan-woyak/common-thread-remove-unused\n\nCommon/Thread: Remove some unused things.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/f8e6bed381f52fba6015fbda0568e447e1a984b2', 'hash': 'f8e6bed381f52fba6015fbda0568e447e1a984b2'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-24T20:04:27.940617	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': 'b5f580e6f9b5ba442248ac62a25cb4db246aa69c', 'after_sha': '22b581c670d84e60d11c1b02d38e1c7789ae2dfa', 'commits': [{'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-10-19T12:34:12-05:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/UnitTests/Core/CoreTimingTest.cpp'], 'removed': [], 'message': 'UnitTests: Fix CoreTiming.SharedSlot test so it can run independently.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/3c72f4d5425875e32d809dab9821afe9bb1d042e', 'hash': '3c72f4d5425875e32d809dab9821afe9bb1d042e'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-10-24T15:04:25-05:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/UnitTests/Core/CoreTimingTest.cpp'], 'removed': [], 'message': 'Merge pull request #14940 from jordan-woyak/CoreTimingTest-fix\n\nUnitTests: Fix CoreTiming.SharedSlot test so it can run independently.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/22b581c670d84e60d11c1b02d38e1c7789ae2dfa', 'hash': '22b581c670d84e60d11c1b02d38e1c7789ae2dfa'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-24T18:22:26.784936	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'iwubcode', 'before_sha': 'c12121f419c40f99eeb65a9039d9fc95be72e94a', 'after_sha': 'b5f580e6f9b5ba442248ac62a25cb4db246aa69c', 'commits': [{'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-23T11:49:22-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Common/Timer.cpp'], 'removed': [], 'message': 'Revert "msvc: use std::chrono for GetLocalTimeSinceJan1970"\n\nThis reverts commit 86da6c98fbd229d87de7cf8b9c7eb94c16923829.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/5ef181ba4dffd6d3d5de47d90de0c22f02657215', 'hash': '5ef181ba4dffd6d3d5de47d90de0c22f02657215'}, {'author': {'name': 'iwubcode', 'email': 'iwubcode@users.noreply.github.com', 'date': '2026-10-24T13:22:24-05:00', 'username': 'iwubcode'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Common/Timer.cpp'], 'removed': [], 'message': 'Merge pull request #14946 from OatmealDome/revert-win-std-chrono\n\nRevert "msvc: use std::chrono for GetLocalTimeSinceJan1970"', 'url': 'https://github.com/dolphin-emu/dolphin/commit/b5f580e6f9b5ba442248ac62a25cb4db246aa69c', 'hash': 'b5f580e6f9b5ba442248ac62a25cb4db246aa69c'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-24T12:16:24.669085	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'JosJuice', 'before_sha': 'e1d35f666cc35f6ead55d32ea2679df44d04da72', 'after_sha': 'c12121f419c40f99eeb65a9039d9fc95be72e94a', 'commits': [{'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-10-04T22:33:27-05:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/IOS/USB/Emulated/Skylanders/SkylanderFigure.cpp', 'Source/Core/Core/IOS/USB/Emulated/Skylanders/SkylanderFigure.h'], 'removed': [], 'message': 'Skylanders: Replace mbedtls_aes usage with Common::AES and minor warning cleanups.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/e56740eabce91b58119ad7a03f5a42db16a3e077', 'hash': 'e56740eabce91b58119ad7a03f5a42db16a3e077'}, {'author': {'name': 'JosJuice', 'email': 'josjuice@gmail.com', 'date': '2026-10-24T14:16:21+02:00', 'username': 'JosJuice'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Core/IOS/USB/Emulated/Skylanders/SkylanderFigure.cpp', 'Source/Core/Core/IOS/USB/Emulated/Skylanders/SkylanderFigure.h'], 'removed': [], 'message': 'Merge pull request #14917 from jordan-woyak/skylanders-common-aes\n\nSkylanders: Replace mbedtls_aes usage with Common::AES.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/c12121f419c40f99eeb65a9039d9fc95be72e94a', 'hash': 'c12121f419c40f99eeb65a9039d9fc95be72e94a'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-23T23:43:13.829132	{'source': 'ghhookparser', 'repo': 'dolphin-emu/fifoci', 'pusher': 'dependabot[bot]', 'before_sha': '0000000000000000000000000000000000000000', 'after_sha': '3b2b272b9e30ee9272e98a082bb177828b55aea1', 'commits': [{'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com', 'date': '2026-10-23T23:43:10Z', 'username': 'dependabot[bot]'}, 'distinct': True, 'added': [], 'modified': ['fifoci/runner/uv.lock'], 'removed': [], 'message': 'build(deps-dev): bump black from 26.5.1 to 26.10.1 in /fifoci/runner\n\nBumps [black](https://github.com/psf/black) from 26.5.1 to 26.10.1.\n- [Release notes](https://github.com/psf/black/releases)\n- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)\n- [Commits](https://github.com/psf/black/compare/26.5.1...26.10.1)\n\n---\nupdated-dependencies:\n- dependency-name: black\n  dependency-version: 26.10.1\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>', 'url': 'https://github.com/dolphin-emu/fifoci/commit/3b2b272b9e30ee9272e98a082bb177828b55aea1', 'hash': '3b2b272b9e30ee9272e98a082bb177828b55aea1'}], 'base_ref_name': None, 'ref_name': 'dependabot/uv/fifoci/runner/black-26.10.1', 'ref_type': 'heads', 'created': True, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-23T00:10:39.440717	{'source': 'ghhookparser', 'repo': 'dolphin-emu/central', 'pusher': 'dependabot[bot]', 'before_sha': '0000000000000000000000000000000000000000', 'after_sha': '6ad4b6953af25fade92abf42a6c20548eddffffb', 'commits': [{'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com', 'date': '2026-10-23T00:10:37Z', 'username': 'dependabot[bot]'}, 'distinct': True, 'added': [], 'modified': ['uv.lock'], 'removed': [], 'message': 'build(deps): bump certifi from 2026.7.22 to 2026.10.19\n\nBumps [certifi](https://github.com/certifi/python-certifi) from 2026.7.22 to 2026.10.19.\n- [Commits](https://github.com/certifi/python-certifi/compare/2026.07.22...2026.10.19)\n\n---\nupdated-dependencies:\n- dependency-name: certifi\n  dependency-version: 2026.10.19\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>', 'url': 'https://github.com/dolphin-emu/central/commit/6ad4b6953af25fade92abf42a6c20548eddffffb', 'hash': '6ad4b6953af25fade92abf42a6c20548eddffffb'}], 'base_ref_name': None, 'ref_name': 'dependabot/uv/certifi-2026.10.19', 'ref_type': 'heads', 'created': True, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-23T00:10:36.300805	{'source': 'ghhookparser', 'repo': 'dolphin-emu/central', 'pusher': 'dependabot[bot]', 'before_sha': '0000000000000000000000000000000000000000', 'after_sha': '623c06e836606b5b2d6b5a4bfcac08bc3f34925e', 'commits': [{'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com', 'date': '2026-10-23T00:10:33Z', 'username': 'dependabot[bot]'}, 'distinct': True, 'added': [], 'modified': ['uv.lock'], 'removed': [], 'message': 'build(deps-dev): bump black from 26.5.1 to 26.10.1\n\nBumps [black](https://github.com/psf/black) from 26.5.1 to 26.10.1.\n- [Release notes](https://github.com/psf/black/releases)\n- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)\n- [Commits](https://github.com/psf/black/compare/26.5.1...26.10.1)\n\n---\nupdated-dependencies:\n- dependency-name: black\n  dependency-version: 26.10.1\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>', 'url': 'https://github.com/dolphin-emu/central/commit/623c06e836606b5b2d6b5a4bfcac08bc3f34925e', 'hash': '623c06e836606b5b2d6b5a4bfcac08bc3f34925e'}], 'base_ref_name': None, 'ref_name': 'dependabot/uv/black-26.10.1', 'ref_type': 'heads', 'created': True, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-22T23:56:03.195102	{'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'pusher': 'dependabot[bot]', 'before_sha': '0000000000000000000000000000000000000000', 'after_sha': '8c26dcef9aaaae7181e2f59d7f56a5d3e852e68f', 'commits': [{'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com', 'date': '2026-10-22T23:56:00Z', 'username': 'dependabot[bot]'}, 'distinct': True, 'added': [], 'modified': ['uv.lock'], 'removed': [], 'message': 'build(deps): bump certifi from 2026.7.22 to 2026.10.19\n\nBumps [certifi](https://github.com/certifi/python-certifi) from 2026.7.22 to 2026.10.19.\n- [Commits](https://github.com/certifi/python-certifi/compare/2026.07.22...2026.10.19)\n\n---\nupdated-dependencies:\n- dependency-name: certifi\n  dependency-version: 2026.10.19\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>', 'url': 'https://github.com/dolphin-emu/netplay-index/commit/8c26dcef9aaaae7181e2f59d7f56a5d3e852e68f', 'hash': '8c26dcef9aaaae7181e2f59d7f56a5d3e852e68f'}], 'base_ref_name': None, 'ref_name': 'dependabot/uv/certifi-2026.10.19', 'ref_type': 'heads', 'created': True, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-22T23:56:01.607794	{'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'pusher': 'dependabot[bot]', 'before_sha': '0000000000000000000000000000000000000000', 'after_sha': '70b6d66b9dde12acf21a57fc84dc83bc1ff3249a', 'commits': [{'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com', 'date': '2026-10-22T23:55:59Z', 'username': 'dependabot[bot]'}, 'distinct': True, 'added': [], 'modified': ['uv.lock'], 'removed': [], 'message': 'build(deps-dev): bump black from 26.5.1 to 26.10.1\n\nBumps [black](https://github.com/psf/black) from 26.5.1 to 26.10.1.\n- [Release notes](https://github.com/psf/black/releases)\n- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)\n- [Commits](https://github.com/psf/black/compare/26.5.1...26.10.1)\n\n---\nupdated-dependencies:\n- dependency-name: black\n  dependency-version: 26.10.1\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>', 'url': 'https://github.com/dolphin-emu/netplay-index/commit/70b6d66b9dde12acf21a57fc84dc83bc1ff3249a', 'hash': '70b6d66b9dde12acf21a57fc84dc83bc1ff3249a'}], 'base_ref_name': None, 'ref_name': 'dependabot/uv/black-26.10.1', 'ref_type': 'heads', 'created': True, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-22T20:05:25.812213	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': '10d958e66bb5d7574166a10f57839a288c5a7c64', 'after_sha': 'e1d35f666cc35f6ead55d32ea2679df44d04da72', 'commits': [{'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-10-04T16:04:21-05:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Common/Hash.cpp', 'Source/Core/Common/Hash.h'], 'removed': [], 'message': 'Common: Create MD5Context class and ComputeMD5 function to minimize exposure to mbedtls throughout the project.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/db5bbbd6cf340fd8e77244ad452089fae0ff33ae', 'hash': 'db5bbbd6cf340fd8e77244ad452089fae0ff33ae'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-10-04T16:04:42-05:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/HW/WiiSave.cpp'], 'removed': [], 'message': 'WiiSave: Use Common::ComputeMD5 instead of mbedtls.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/58a0864d035ccc690698fb76063f2936906bd714', 'hash': '58a0864d035ccc690698fb76063f2936906bd714'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-10-04T16:05:05-05:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/IOS/USB/Emulated/Skylanders/SkylanderFigure.cpp'], 'removed': [], 'message': 'SkylanderFigure: Use Common::ComputeMD5 instead of mbedtls.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/304086d3179d5c9f3bc94c4487e943ec449280ab', 'hash': '304086d3179d5c9f3bc94c4487e943ec449280ab'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-10-04T16:05:09-05:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/DiscIO/VolumeVerifier.cpp', 'Source/Core/DiscIO/VolumeVerifier.h'], 'removed': [], 'message': 'DiscIO/VolumeVerifier: Use Common::MD5Context instead of mbedtls.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/7e46e85e8fb3cff68f05bc160c7ac3ed77b1414b', 'hash': '7e46e85e8fb3cff68f05bc160c7ac3ed77b1414b'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-10-22T15:05:23-05:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Common/Hash.cpp', 'Source/Core/Common/Hash.h', 'Source/Core/Core/HW/WiiSave.cpp', 'Source/Core/Core/IOS/USB/Emulated/Skylanders/SkylanderFigure.cpp', 'Source/Core/DiscIO/VolumeVerifier.cpp', 'Source/Core/DiscIO/VolumeVerifier.h'], 'removed': [], 'message': 'Merge pull request #14913 from jordan-woyak/md5\n\nCommon: Introduce MD5Context class and ComputeMD5 function to minimize mbedtls dependence.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/e1d35f666cc35f6ead55d32ea2679df44d04da72', 'hash': 'e1d35f666cc35f6ead55d32ea2679df44d04da72'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-22T19:14:49.767406	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': '2c805fee8f232d090c454381bb1b8422242345e1', 'after_sha': '10d958e66bb5d7574166a10f57839a288c5a7c64', 'commits': [{'author': {'name': 'Dentomologist', 'email': 'dentomologist@gmail.com', 'date': '2026-10-20T14:20:23-07:00', 'username': 'Dentomologist'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/DolphinQt/CMakeLists.txt'], 'removed': [], 'message': "CMake: Enforce minimum Qt version 6.2\n\nQt 6.2 has been de facto required since\nafa6e26e5de58e942c8e7ef3a02632ccfb851d3d added a call to\nQPixmap::deviceIndependentSize which was introduced in that Qt version.\n\nQt 6.2 was released 5 years ago and we've required 6.2+ for over 2\nyears, so let's make that requirement explicit in CMakeLists.txt instead\nof having an apparently random compile error if anyone happens to try\nbuilding with an older Qt version.", 'url': 'https://github.com/dolphin-emu/dolphin/commit/33ad9ed02f0f66b5c202a87e4c0896f96c57ff87', 'hash': '33ad9ed02f0f66b5c202a87e4c0896f96c57ff87'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-10-22T14:14:47-05:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/DolphinQt/CMakeLists.txt'], 'removed': [], 'message': 'Merge pull request #14942 from Dentomologist/cmake_add_explicit_check_for_minimum_qt_version\n\nCMake: Enforce minimum Qt version 6.2', 'url': 'https://github.com/dolphin-emu/dolphin/commit/10d958e66bb5d7574166a10f57839a288c5a7c64', 'hash': '10d958e66bb5d7574166a10f57839a288c5a7c64'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-22T17:12:38.072700	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'JMC47', 'before_sha': 'cf5cb7ef81c3e8e7af5c9d566334219ffda9f68b', 'after_sha': '2c805fee8f232d090c454381bb1b8422242345e1', 'commits': [{'author': {'name': 'Tom Pratt', 'email': 'tom.pratt@outlook.com', 'date': '2026-05-11T09:01:20-07:00', 'username': 'tom-pratt'}, 'distinct': False, 'added': [], 'modified': ['Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/NetplaySession.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/GameDigestProgress.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/NetplayViewModel.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/ui/NetplayActivity.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/ui/NetplayScreen.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/theme/DolphinTheme.kt', 'Source/Android/app/src/main/res/values/strings.xml', 'Source/Android/jni/NetPlay/NetPlayUICallbacks.h', 'Source/Android/jni/NetPlay/Netplay.cpp'], 'removed': [], 'message': 'Android: Trigger netplay game digest check\n\nAlso trigger abort / dismiss from the host when closing the dialog.\nAdd explicit "finished" property to GameDigestProgress since the UI is different depending on this state.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/66657167e357597b99b0957a4ee27a0da8b36571', 'hash': '66657167e357597b99b0957a4ee27a0da8b36571'}, {'author': {'name': 'JMC47', 'email': 'JMC4789@gmail.com', 'date': '2026-10-22T13:12:33-04:00', 'username': 'JMC47'}, 'distinct': True, 'added': [], 'modified': ['Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/NetplaySession.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/GameDigestProgress.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/NetplayViewModel.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/ui/NetplayActivity.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/ui/NetplayScreen.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/theme/DolphinTheme.kt', 'Source/Android/app/src/main/res/values/strings.xml', 'Source/Android/jni/NetPlay/NetPlayUICallbacks.h', 'Source/Android/jni/NetPlay/Netplay.cpp'], 'removed': [], 'message': 'Merge pull request #14734 from tom-pratt/trigger-game-digest-check\n\nAndroid: Trigger netplay game digest check', 'url': 'https://github.com/dolphin-emu/dolphin/commit/2c805fee8f232d090c454381bb1b8422242345e1', 'hash': '2c805fee8f232d090c454381bb1b8422242345e1'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-22T12:26:38.608172	{'source': 'ghhookparser', 'repo': 'dolphin-emu/sadm', 'pusher': 'OatmealDome', 'before_sha': 'd3c0d0059a15878511b86aecc51b488392e0e184', 'after_sha': '983c9bd664a2a83971d33b37f57189e99d10a7e9', 'commits': [{'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-22T08:25:03-04:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['.github/workflows/containers.yml'], 'removed': [], 'message': 'Actions: Add workflow dispatch to build containers workflow', 'url': 'https://github.com/dolphin-emu/sadm/commit/ac077f40caa97d98924f2a6eaa49aec3669a7d0f', 'hash': 'ac077f40caa97d98924f2a6eaa49aec3669a7d0f'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-22T08:25:36-04:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['flake.lock'], 'removed': [], 'message': "flake.lock: Update\n\nFlake lock file updates:\n\n• Updated input 'agenix':\n    'github:ryantm/agenix/3daa710894355fa2fad8243380af373a2b4046ef?narHash=sha256-n7wew722m1OTBT9DOIMxNX/NF4zfsSUABAO5eW3wikE%3D' (2026-09-30)\n  → 'github:ryantm/agenix/5e5b88a0c8e56f291a108c2fe9934054d9745b2e?narHash=sha256-8tKjSQajD3mUND1GaAuaWTcuyUpgcGsh5V%2Bl4ibzC7U%3D' (2026-10-20)\n• Updated input 'nixpkgs':\n    'github:NixOS/nixpkgs/7993f34ee47e28a3d607a525aadc6c94b73be728?narHash=sha256-ZGq3ptZzA%2BoO0N/Wi/F%2BGbuTijLkYExD01LvpNFAvr0%3D' (2026-10-12)\n  → 'github:NixOS/nixpkgs/da6dc0e7b26060f2f71ce3ef7088fb56ee44fa36?narHash=sha256-MlvRfa1O5Cqc2/a%2BgG%2Bl9TSuowEoCKCmrJ1d9oAVm0I%3D' (2026-10-21)\n• Updated input 'pyproject-build-systems':\n    'github:pyproject-nix/build-system-pkgs/953d35d03a51dbecaf3feb3fb679eb63e90ebeb4?narHash=sha256-pyru9MpuXRiyq0Bd4q0nHpL4T6HCuZT4B%2BalcgAYE4A%3D' (2026-10-05)\n  → 'github:pyproject-nix/build-system-pkgs/a17819c85163988e063806ffc4f6d2716bc8ead8?narHash=sha256-mGOkvueuMGSRiD75ccxFzfEvSlIU9ztjFluHMKOtogY%3D' (2026-10-20)\n• Updated input 'pyproject-build-systems/uv2nix':\n    'github:pyproject-nix/uv2nix/a24323e9e6ecbbf305c238845ff6c612d50467c0?narHash=sha256-wFnDm/o/4OebDlpGFyVXP8DLUx0/gR/jUFuGqmTwsQg%3D' (2026-09-25)\n  → 'github:pyproject-nix/uv2nix/7aba73a3d85454f1118f8cf9de97979b4d26bcac?narHash=sha256-PMtgvHuGijoIAtPtrBm7kJOI6fxzX4LYPAIK%2BQVGY%2BY%3D' (2026-10-16)\n• Updated input 'rust-overlay':\n    'github:oxalica/rust-overlay/3100cf6ff140fb298f09192de610f4037d3bab0f?narHash=sha256-7KXUW3FKbZAstFiK09LJ1sUnPN2dO5RX9ROCZgGbeZw%3D' (2026-10-13)\n  → 'github:oxalica/rust-overlay/5f267b7f323a4d6df0b9c0e3eaa043cbe85386f2?narHash=sha256-E8zFJilWlORqzIUJizyhZ/0WKBOizuM6s1nRSgPRomo%3D' (2026-10-22)\n• Updated input 'uv2nix':\n    'github:pyproject-nix/uv2nix/37462fae7b37be45d78f754d1c39e8813ede0f80?narHash=sha256-39EtILDexiwJqShYD/yu1B73OvF6DigAqF040egC07g%3D' (2026-10-12)\n  → 'github:pyproject-nix/uv2nix/0fdaa03ea3c3c16dbb1fe4d69108f07227a4b42d?narHash=sha256-UWo7wDPi00YXOI1Io7g4vGKuCSPJ863kHJVDzsgqtoM%3D' (2026-10-22)", 'url': 'https://github.com/dolphin-emu/sadm/commit/983c9bd664a2a83971d33b37f57189e99d10a7e9', 'hash': '983c9bd664a2a83971d33b37f57189e99d10a7e9'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-20T10:19:25.215424	{'source': 'ghhookparser', 'repo': 'dolphin-emu/central', 'pusher': 'dependabot[bot]', 'before_sha': '0000000000000000000000000000000000000000', 'after_sha': '9d545400dc491ebcbf08ce45d17550bf1262fed4', 'commits': [{'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com', 'date': '2026-10-20T10:19:21Z', 'username': 'dependabot[bot]'}, 'distinct': True, 'added': [], 'modified': ['uv.lock'], 'removed': [], 'message': 'build(deps): bump multidict from 6.7.1 to 6.9.1\n\nBumps [multidict](https://github.com/aio-libs/multidict) from 6.7.1 to 6.9.1.\n- [Release notes](https://github.com/aio-libs/multidict/releases)\n- [Changelog](https://github.com/aio-libs/multidict/blob/master/CHANGES.rst)\n- [Commits](https://github.com/aio-libs/multidict/compare/v6.7.1...v6.9.1)\n\n---\nupdated-dependencies:\n- dependency-name: multidict\n  dependency-version: 6.9.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>', 'url': 'https://github.com/dolphin-emu/central/commit/9d545400dc491ebcbf08ce45d17550bf1262fed4', 'hash': '9d545400dc491ebcbf08ce45d17550bf1262fed4'}], 'base_ref_name': None, 'ref_name': 'dependabot/uv/multidict-6.9.1', 'ref_type': 'heads', 'created': True, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-20T09:45:59.112048	{'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'pusher': 'dependabot[bot]', 'before_sha': '0000000000000000000000000000000000000000', 'after_sha': 'dfd09f29f1b90c318de05bdbf38356d337dcbc4d', 'commits': [{'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com', 'date': '2026-10-20T09:45:56Z', 'username': 'dependabot[bot]'}, 'distinct': True, 'added': [], 'modified': ['uv.lock'], 'removed': [], 'message': 'build(deps): bump multidict from 6.7.1 to 6.9.1\n\nBumps [multidict](https://github.com/aio-libs/multidict) from 6.7.1 to 6.9.1.\n- [Release notes](https://github.com/aio-libs/multidict/releases)\n- [Changelog](https://github.com/aio-libs/multidict/blob/master/CHANGES.rst)\n- [Commits](https://github.com/aio-libs/multidict/compare/v6.7.1...v6.9.1)\n\n---\nupdated-dependencies:\n- dependency-name: multidict\n  dependency-version: 6.9.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>', 'url': 'https://github.com/dolphin-emu/netplay-index/commit/dfd09f29f1b90c318de05bdbf38356d337dcbc4d', 'hash': 'dfd09f29f1b90c318de05bdbf38356d337dcbc4d'}], 'base_ref_name': None, 'ref_name': 'dependabot/uv/multidict-6.9.1', 'ref_type': 'heads', 'created': True, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-20T06:10:03.224634	{'source': 'ghhookparser', 'repo': 'dolphin-emu/central', 'pusher': 'dependabot[bot]', 'before_sha': '0000000000000000000000000000000000000000', 'after_sha': '6ea630e5224e19d89f7b3c2601ef51e038962fe3', 'commits': [{'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com', 'date': '2026-10-20T06:10:00Z', 'username': 'dependabot[bot]'}, 'distinct': True, 'added': [], 'modified': ['uv.lock'], 'removed': [], 'message': 'build(deps): bump aiohttp from 3.14.3 to 3.14.4\n\n---\nupdated-dependencies:\n- dependency-name: aiohttp\n  dependency-version: 3.14.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>', 'url': 'https://github.com/dolphin-emu/central/commit/6ea630e5224e19d89f7b3c2601ef51e038962fe3', 'hash': '6ea630e5224e19d89f7b3c2601ef51e038962fe3'}], 'base_ref_name': None, 'ref_name': 'dependabot/uv/aiohttp-3.14.4', 'ref_type': 'heads', 'created': True, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-20T04:23:47.430910	{'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'pusher': 'dependabot[bot]', 'before_sha': '0000000000000000000000000000000000000000', 'after_sha': 'c8cdb9edb91b5292fcefa1b834ca2116df47e8f0', 'commits': [{'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com', 'date': '2026-10-20T04:23:45Z', 'username': 'dependabot[bot]'}, 'distinct': True, 'added': [], 'modified': ['uv.lock'], 'removed': [], 'message': 'build(deps): bump aiohttp from 3.14.3 to 3.14.4\n\n---\nupdated-dependencies:\n- dependency-name: aiohttp\n  dependency-version: 3.14.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>', 'url': 'https://github.com/dolphin-emu/netplay-index/commit/c8cdb9edb91b5292fcefa1b834ca2116df47e8f0', 'hash': 'c8cdb9edb91b5292fcefa1b834ca2116df47e8f0'}], 'base_ref_name': None, 'ref_name': 'dependabot/uv/aiohttp-3.14.4', 'ref_type': 'heads', 'created': True, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-19T16:56:23.730113	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'JMC47', 'before_sha': '1822e3859f061c6f81076c94eb4ba7e6e0a3706c', 'after_sha': 'cf5cb7ef81c3e8e7af5c9d566334219ffda9f68b', 'commits': [{'author': {'name': 'Martino Fontana', 'email': 'tinozzo123@gmail.com', 'date': '2025-12-22T12:28:12+01:00', 'username': 'SuperSamus'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/PowerPC/CachedInterpreter/CachedInterpreter.cpp', 'Source/Core/Core/PowerPC/Jit64/Jit_Branch.cpp', 'Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp', 'Source/Core/Core/PowerPC/JitArm64/JitArm64_Branch.cpp', 'Source/Core/Core/PowerPC/PPCAnalyst.cpp', 'Source/Core/Core/PowerPC/PPCAnalyst.h'], 'removed': [], 'message': "Jit: Followed unconditional branches are a property added by the Analyzer, not something to assume\n\nIf an unconditional branch is not the last instruction of the block, assuming that this means that the branch must have been followed is an unsafe assumption on how the analyzer works that may not hold true in the future.\nAs a bonus: JitArm64, unlike x86, didn't skip followed `bcx`s. Now it does.", 'url': 'https://github.com/dolphin-emu/dolphin/commit/69b75fed12eae2d500da89d400d036739ff95b4c', 'hash': '69b75fed12eae2d500da89d400d036739ff95b4c'}, {'author': {'name': 'JMC47', 'email': 'JMC4789@gmail.com', 'date': '2026-10-19T12:56:21-04:00', 'username': 'JMC47'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Core/PowerPC/CachedInterpreter/CachedInterpreter.cpp', 'Source/Core/Core/PowerPC/Jit64/Jit_Branch.cpp', 'Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp', 'Source/Core/Core/PowerPC/JitArm64/JitArm64_Branch.cpp', 'Source/Core/Core/PowerPC/PPCAnalyst.cpp', 'Source/Core/Core/PowerPC/PPCAnalyst.h'], 'removed': [], 'message': 'Merge pull request #14388 from SuperSamus/jit-branch-follow-explicit\n\nJit: Followed unconditional branches are a property added by the Analyzer, not something to assume', 'url': 'https://github.com/dolphin-emu/dolphin/commit/cf5cb7ef81c3e8e7af5c9d566334219ffda9f68b', 'hash': 'cf5cb7ef81c3e8e7af5c9d566334219ffda9f68b'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-19T04:31:10.141871	{'source': 'ghhookparser', 'repo': 'dolphin-emu/sadm', 'pusher': 'OatmealDome', 'before_sha': '7605fd14fb447e2fa9e0faee4994dd631260c8e0', 'after_sha': 'd3c0d0059a15878511b86aecc51b488392e0e184', 'commits': [{'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-17T11:27:04-04:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['machines/altair/default.nix', 'roles/foreign-builders/default.nix'], 'removed': [], 'message': 'foreign-builder: Don\'t require the "-builder" suffix with image names', 'url': 'https://github.com/dolphin-emu/sadm/commit/fa6ce2e376f9977d58cabf1658a2364ac4f5e601', 'hash': 'fa6ce2e376f9977d58cabf1658a2364ac4f5e601'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-17T12:18:26-04:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': ['secrets/container-altair-appimage-env.age', 'secrets/container-android-env.age', 'secrets/container-debian-env.age', 'secrets/container-steamrt-env.age', 'secrets/container-ubuntu-lts-env.age'], 'modified': ['roles/foreign-builders/default.nix', 'secrets/secrets.nix'], 'removed': [], 'message': 'foreign-builders: Have one password file for each container', 'url': 'https://github.com/dolphin-emu/sadm/commit/15ee72a373cc26aba8bf6f8f77bd38f032a5a944', 'hash': '15ee72a373cc26aba8bf6f8f77bd38f032a5a944'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-17T12:18:44-04:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['machines/altair/default.nix'], 'removed': [], 'message': 'machines/altair: Reformat android container definition', 'url': 'https://github.com/dolphin-emu/sadm/commit/2e212152a9d280ee49bb22f04895ca960461f89a', 'hash': '2e212152a9d280ee49bb22f04895ca960461f89a'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-17T12:22:32-04:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['secrets/oci-registry-password.age'], 'removed': [], 'message': 'secrets: Re-encrypt oci-registry-password with support for deneb', 'url': 'https://github.com/dolphin-emu/sadm/commit/a00c4b68a511011c8070a5ed92229322439737e7', 'hash': 'a00c4b68a511011c8070a5ed92229322439737e7'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-17T12:23:02-04:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': ['secrets/container-deneb-appimage-env.age'], 'modified': ['machines/deneb/default.nix', 'secrets/secrets.nix'], 'removed': [], 'message': 'machines/deneb: Add AppImage arm64 builder', 'url': 'https://github.com/dolphin-emu/sadm/commit/c1383d702fe381d84bb243e24a7943182e1b2717', 'hash': 'c1383d702fe381d84bb243e24a7943182e1b2717'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-17T12:24:34-04:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['roles/buildbot/etc/master.cfg', 'roles/central/default.nix', 'secrets/buildbot-workers-passwords.age'], 'removed': [], 'message': 'buildbot: Add AppImage arm64 builder', 'url': 'https://github.com/dolphin-emu/sadm/commit/4c9ac430e0ecc21179545d0266e238716cd56304', 'hash': '4c9ac430e0ecc21179545d0266e238716cd56304'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-18T12:19:03-04:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['roles/buildbot/etc/master.cfg'], 'removed': [], 'message': 'buildbot: Add support for dev and release AppImage builds', 'url': 'https://github.com/dolphin-emu/sadm/commit/9e9552c060ed8459f9b10fea619f128389915eb7', 'hash': '9e9552c060ed8459f9b10fea619f128389915eb7'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-18T16:14:53-04:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['roles/foreign-builders/default.nix'], 'removed': [], 'message': 'foreign-builders: Allow individual builders to specify their own extra options', 'url': 'https://github.com/dolphin-emu/sadm/commit/849f1b98d00c650e8256396c5418f2093188ea67', 'hash': '849f1b98d00c650e8256396c5418f2093188ea67'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-19T00:30:02-04:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['machines/altair/default.nix', 'roles/foreign-builders/default.nix'], 'removed': [], 'message': 'machines/altair: Move /dev/kvm flag to be specific to the Android builder', 'url': 'https://github.com/dolphin-emu/sadm/commit/e2ad180e9f9bf14b25bd8b46ff7cf3712f03d75f', 'hash': 'e2ad180e9f9bf14b25bd8b46ff7cf3712f03d75f'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-19T00:30:22-04:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['roles/buildbot/etc/master.cfg'], 'removed': [], 'message': 'buildbot: Correct path for deleting the existing AppDir', 'url': 'https://github.com/dolphin-emu/sadm/commit/d3c0d0059a15878511b86aecc51b488392e0e184', 'hash': 'd3c0d0059a15878511b86aecc51b488392e0e184'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-18T18:26:45.010021	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': '41460454e9600f909950fddf0abd13a138430162', 'after_sha': '1822e3859f061c6f81076c94eb4ba7e6e0a3706c', 'commits': [{'author': {'name': 'iwubcode', 'email': 'iwubcode@users.noreply.github.com', 'date': '2026-10-16T01:04:33-05:00', 'username': 'iwubcode'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/PowerPC/MMU.cpp', 'Source/Core/VideoBackends/Null/NullGfx.cpp', 'Source/Core/VideoBackends/Null/NullGfx.h', 'Source/Core/VideoBackends/Software/SWEfbInterface.cpp', 'Source/Core/VideoBackends/Software/SWEfbInterface.h', 'Source/Core/VideoCommon/BPFunctions.cpp', 'Source/Core/VideoCommon/EFBInterface.cpp', 'Source/Core/VideoCommon/EFBInterface.h'], 'removed': [], 'message': 'VideoCommon: remove global framebuffer manager from EFBInterface and instead pass it in', 'url': 'https://github.com/dolphin-emu/dolphin/commit/f71b0a48b352379a213a65a0a796cac5aab4ba3f', 'hash': 'f71b0a48b352379a213a65a0a796cac5aab4ba3f'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-10-18T13:26:42-05:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Core/PowerPC/MMU.cpp', 'Source/Core/VideoBackends/Null/NullGfx.cpp', 'Source/Core/VideoBackends/Null/NullGfx.h', 'Source/Core/VideoBackends/Software/SWEfbInterface.cpp', 'Source/Core/VideoBackends/Software/SWEfbInterface.h', 'Source/Core/VideoCommon/BPFunctions.cpp', 'Source/Core/VideoCommon/EFBInterface.cpp', 'Source/Core/VideoCommon/EFBInterface.h'], 'removed': [], 'message': 'Merge pull request #14934 from iwubcode/efb_interface_remove_global\n\nVideoCommon: remove global framebuffer manager from EFBInterface', 'url': 'https://github.com/dolphin-emu/dolphin/commit/1822e3859f061c6f81076c94eb4ba7e6e0a3706c', 'hash': '1822e3859f061c6f81076c94eb4ba7e6e0a3706c'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-18T12:51:21.237475	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'JosJuice', 'before_sha': '8c19346fa956c37264751868a8ac4d674bfff6de', 'after_sha': '41460454e9600f909950fddf0abd13a138430162', 'commits': [{'author': {'name': 'Acts1631', 'email': 'acts1631kjv@proton.me', 'date': '2026-08-04T11:47:51-04:00', 'username': 'acts-1631'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Common/TraversalServer.cpp'], 'removed': [], 'message': 'Traversal: update pending-packet time on socket timeout\n\nPending traversal packets were only expired after receive events. If a\nclient did not acknowledge a response and no more packets arrived, the\nserver retained the pending entry indefinitely.\n\nUpdate the current time before handling socket timeouts. Pending packets\nwill then retry and expire while the server is idle.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/93097f65ea9ae8c2c9c85481ba2cf7d0139480cb', 'hash': '93097f65ea9ae8c2c9c85481ba2cf7d0139480cb'}, {'author': {'name': 'JosJuice', 'email': 'josjuice@gmail.com', 'date': '2026-10-18T14:51:18+02:00', 'username': 'JosJuice'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Common/TraversalServer.cpp'], 'removed': [], 'message': 'Merge pull request #14796 from acts-1631/security/traversal-pending-timeout\n\nTraversal: update pending-packet time on socket timeout', 'url': 'https://github.com/dolphin-emu/dolphin/commit/41460454e9600f909950fddf0abd13a138430162', 'hash': '41460454e9600f909950fddf0abd13a138430162'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-18T10:25:49.009860	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'JosJuice', 'before_sha': 'b869a2ab2035f0ff0c0ca71becb4e33131ebb1b7', 'after_sha': '8c19346fa956c37264751868a8ac4d674bfff6de', 'commits': [{'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-10-09T14:50:48-05:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['CMakeLists.txt'], 'removed': [], 'message': 'CMakeLists: Bump version requirements to allow use of std::jthread.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/5bcd55eef5323db2d83bd181f128409edc1d902e', 'hash': '5bcd55eef5323db2d83bd181f128409edc1d902e'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-10-09T14:51:43-05:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/CMakeLists.txt'], 'removed': [], 'message': 'CMakeLists: Add -fexperimental-library to allow use of std::jthread with libc++ 18.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/0f56e58742a64a993e4f2f7b34cbafccb613ebcd', 'hash': '0f56e58742a64a993e4f2f7b34cbafccb613ebcd'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-10-09T14:52:08-05:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/DiscIO/CachedBlob.cpp'], 'removed': [], 'message': 'DiscIO/CachedBlob: Minor cleanup by replacing std::thread with std::jthread.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/1acbcaceffdf11d5b6d90fe2c864a8683b930908', 'hash': '1acbcaceffdf11d5b6d90fe2c864a8683b930908'}, {'author': {'name': 'JosJuice', 'email': 'josjuice@gmail.com', 'date': '2026-10-18T12:25:46+02:00', 'username': 'JosJuice'}, 'distinct': True, 'added': [], 'modified': ['CMakeLists.txt', 'Source/CMakeLists.txt', 'Source/Core/DiscIO/CachedBlob.cpp'], 'removed': [], 'message': 'Merge pull request #14621 from jordan-woyak/cached-blob-jthread\n\nDiscIO/CachedBlob: Minor cleanup by replacing std::thread with std::jthread.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/8c19346fa956c37264751868a8ac4d674bfff6de', 'hash': '8c19346fa956c37264751868a8ac4d674bfff6de'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-18T10:12:03.828555	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'JosJuice', 'before_sha': '38d619b07691231f54e6f037fcf30a3b64fdd5a5', 'after_sha': 'b869a2ab2035f0ff0c0ca71becb4e33131ebb1b7', 'commits': [{'author': {'name': 'Joshua Vandaële', 'email': 'joshua@vandaele.software', 'date': '2026-08-03T18:50:13+02:00', 'username': 'JoshuaVandaele'}, 'distinct': False, 'added': ['CMake/DolphinDisableWarnings.cmake'], 'modified': ['CMake/DolphinLibraryTools.cmake', 'CMakeLists.txt', 'Externals/Bochs_disasm/CMakeLists.txt', 'Externals/FreeSurround/CMakeLists.txt', 'Externals/LZO/CMakeLists.txt', 'Externals/SDL/CMakeLists.txt', 'Externals/SFML/CMakeLists.txt', 'Externals/bzip2/CMakeLists.txt', 'Externals/cpp-ipc/CMakeLists.txt', 'Externals/cpp-optparse/CMakeLists.txt', 'Externals/cubeb/CMakeLists.txt', 'Externals/discord-rpc/src/CMakeLists.txt', 'Externals/ed25519/CMakeLists.txt', 'Externals/enet/CMakeLists.txt', 'Externals/fmt/CMakeLists.txt', 'Externals/glslang/CMakeLists.txt', 'Externals/hidapi/CMakeLists.txt', 'Externals/imgui/CMakeLists.txt', 'Externals/implot/CMakeLists.txt', 'Externals/libiconv/CMakeLists.txt', 'Externals/liblzma/CMakeLists.txt', 'Externals/libusb/CMakeLists.txt', 'Externals/lz4/CMakeLists.txt', 'Externals/mGBA/CMakeLists.txt', 'Externals/mbedtls/library/CMakeLists.txt', 'Externals/miniupnpc/CMakeLists.txt', 'Externals/minizip-ng/CMakeLists.txt', 'Externals/pugixml/CMakeLists.txt', 'Externals/rcheevos/CMakeLists.txt', 'Externals/spirv_cross/CMakeLists.txt', 'Externals/tinygltf/CMakeLists.txt', 'Externals/xxhash/CMakeLists.txt', 'Externals/zlib-ng/CMakeLists.txt', 'Externals/zstd/CMakeLists.txt'], 'removed': ['CMake/DolphinDisableWarningsMSVC.cmake'], 'message': 'CMake: Automatically disable warnings for Externals', 'url': 'https://github.com/dolphin-emu/dolphin/commit/89660f5beae0a3f307ac1587c016e93a4efaed63', 'hash': '89660f5beae0a3f307ac1587c016e93a4efaed63'}, {'author': {'name': 'JosJuice', 'email': 'josjuice@gmail.com', 'date': '2026-10-18T12:12:01+02:00', 'username': 'JosJuice'}, 'distinct': True, 'added': ['CMake/DolphinDisableWarnings.cmake'], 'modified': ['CMake/DolphinLibraryTools.cmake', 'CMakeLists.txt', 'Externals/Bochs_disasm/CMakeLists.txt', 'Externals/FreeSurround/CMakeLists.txt', 'Externals/LZO/CMakeLists.txt', 'Externals/SDL/CMakeLists.txt', 'Externals/SFML/CMakeLists.txt', 'Externals/bzip2/CMakeLists.txt', 'Externals/cpp-ipc/CMakeLists.txt', 'Externals/cpp-optparse/CMakeLists.txt', 'Externals/cubeb/CMakeLists.txt', 'Externals/discord-rpc/src/CMakeLists.txt', 'Externals/ed25519/CMakeLists.txt', 'Externals/enet/CMakeLists.txt', 'Externals/fmt/CMakeLists.txt', 'Externals/glslang/CMakeLists.txt', 'Externals/hidapi/CMakeLists.txt', 'Externals/imgui/CMakeLists.txt', 'Externals/implot/CMakeLists.txt', 'Externals/libiconv/CMakeLists.txt', 'Externals/liblzma/CMakeLists.txt', 'Externals/libusb/CMakeLists.txt', 'Externals/lz4/CMakeLists.txt', 'Externals/mGBA/CMakeLists.txt', 'Externals/mbedtls/library/CMakeLists.txt', 'Externals/miniupnpc/CMakeLists.txt', 'Externals/minizip-ng/CMakeLists.txt', 'Externals/pugixml/CMakeLists.txt', 'Externals/rcheevos/CMakeLists.txt', 'Externals/spirv_cross/CMakeLists.txt', 'Externals/tinygltf/CMakeLists.txt', 'Externals/xxhash/CMakeLists.txt', 'Externals/zlib-ng/CMakeLists.txt', 'Externals/zstd/CMakeLists.txt'], 'removed': ['CMake/DolphinDisableWarningsMSVC.cmake'], 'message': 'Merge pull request #14793 from JoshuaVandaele/auto-off-warns\n\nCMake: Automatically disable warnings for Externals', 'url': 'https://github.com/dolphin-emu/dolphin/commit/b869a2ab2035f0ff0c0ca71becb4e33131ebb1b7', 'hash': 'b869a2ab2035f0ff0c0ca71becb4e33131ebb1b7'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}

Recent 'internal_log' events

2026-10-29T04:09:54.557351	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'dreamsyntax,TryTwo,corwin-mcknight,nickbeth,PatrickFerry,linkmauve,RachelBryk,jloehr,cristian64,adamdmoss,gwicks,jjdelvalle,JordanTheToaster,VampireFlower,unknownbrackets,JosJuice,ShimmerGlass,CrossVR,ligfx,kayru,Tilka,mahdihijazi,mathieui,hdcmeta,Lobsterzelda,Sintendo,Zopolis4,CelestialAmber,hrydgard,mmastrac,neobrain,Sam-Belliveau,Sir-Walrus,JoshuaVandaele,crediar,endrift,AdmiralCurtiss,magcius,Ebola16,spxtr,zopieux,jezze,nullgemm,DacoTaco,iwubcode,spycrab,mitaclaw,malleoz,RisingFog,mbc07,Filoppi,Linkinworm,leoetlino,K0bin,riking,randomstuff,hthh,cscd98,zackhow,marcan,Ziek,CookiePLMonster,delroth,Stevoisiak,SuperSamus,Starsam80,yourWaifu,TellowKrinkle,NanoByte011,LAGonauta,aldelaro5,CasualPokePlayer,tygyh,JMC47,Hydr8gon,CrystalGamma,shonumi,galop1n,Dentomologist,orbea,jordan-woyak,Tinob,OatmealDome,Orphis,lioncash,OrN,bentley,sepalani,moncefmechri,kamiyo,EmptyChaos,Buddybenj,Geotale,Parlane,BhaaLseN,archshift,Phatcat,LPFaint99,rlnilsen,smurf3tte,Linktothepast,noahpistilli,Simonx22,skylersaleh,merryhime,MayImilae,SirMangler,ColinDTaylor,LillyJadeKatrin,comex,magumagu,Pokechu22,hackbar,aroulin,glennricster,mandar1jn,Helios747,Gamer64ytb,tom-pratt,skidau,phire,mrgreywater,mimimi085181,deReeperJosh,meffij,degasus,vladfi1,Techjar,krnlyng,FioraAeterna,rukai,booto')", 'type': 'internal_log'}
2026-10-29T04:09:52.854349	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-10-29T04:04:52.854020	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'dreamsyntax,TryTwo,corwin-mcknight,nickbeth,PatrickFerry,linkmauve,RachelBryk,jloehr,cristian64,adamdmoss,gwicks,jjdelvalle,JordanTheToaster,VampireFlower,unknownbrackets,JosJuice,ShimmerGlass,CrossVR,ligfx,kayru,Tilka,mahdihijazi,mathieui,hdcmeta,Lobsterzelda,Sintendo,Zopolis4,CelestialAmber,hrydgard,mmastrac,neobrain,Sam-Belliveau,Sir-Walrus,JoshuaVandaele,crediar,endrift,AdmiralCurtiss,magcius,Ebola16,spxtr,zopieux,jezze,nullgemm,DacoTaco,iwubcode,spycrab,mitaclaw,malleoz,RisingFog,mbc07,Filoppi,Linkinworm,leoetlino,K0bin,riking,randomstuff,hthh,cscd98,zackhow,marcan,Ziek,CookiePLMonster,delroth,Stevoisiak,SuperSamus,Starsam80,yourWaifu,TellowKrinkle,NanoByte011,LAGonauta,aldelaro5,CasualPokePlayer,tygyh,JMC47,Hydr8gon,CrystalGamma,shonumi,galop1n,Dentomologist,orbea,jordan-woyak,Tinob,OatmealDome,Orphis,lioncash,OrN,bentley,sepalani,moncefmechri,kamiyo,EmptyChaos,Buddybenj,Geotale,Parlane,BhaaLseN,archshift,Phatcat,LPFaint99,rlnilsen,smurf3tte,Linktothepast,noahpistilli,Simonx22,skylersaleh,merryhime,MayImilae,SirMangler,ColinDTaylor,LillyJadeKatrin,comex,magumagu,Pokechu22,hackbar,aroulin,glennricster,mandar1jn,Helios747,Gamer64ytb,tom-pratt,skidau,phire,mrgreywater,mimimi085181,deReeperJosh,meffij,degasus,vladfi1,Techjar,krnlyng,FioraAeterna,rukai,booto')", 'type': 'internal_log'}
2026-10-29T04:04:51.282511	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-10-29T04:03:45.096912	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'degasus,leoetlino,CrossVR,Tilka,Pokechu22,iwubcode,OatmealDome,Dentomologist,jordan-woyak,JosJuice,phire,linkmauve,AdmiralCurtiss')", 'type': 'internal_log'}
2026-10-29T04:03:44.745533	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
2026-10-29T03:59:51.282184	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'dreamsyntax,TryTwo,corwin-mcknight,nickbeth,PatrickFerry,linkmauve,RachelBryk,jloehr,cristian64,adamdmoss,gwicks,jjdelvalle,JordanTheToaster,VampireFlower,unknownbrackets,JosJuice,ShimmerGlass,CrossVR,ligfx,kayru,Tilka,mahdihijazi,mathieui,hdcmeta,Lobsterzelda,Sintendo,Zopolis4,CelestialAmber,hrydgard,mmastrac,neobrain,Sam-Belliveau,Sir-Walrus,JoshuaVandaele,crediar,endrift,AdmiralCurtiss,magcius,Ebola16,spxtr,zopieux,jezze,nullgemm,DacoTaco,iwubcode,spycrab,mitaclaw,malleoz,RisingFog,mbc07,Filoppi,Linkinworm,leoetlino,K0bin,riking,randomstuff,hthh,cscd98,zackhow,marcan,Ziek,CookiePLMonster,delroth,Stevoisiak,SuperSamus,Starsam80,yourWaifu,TellowKrinkle,NanoByte011,LAGonauta,aldelaro5,CasualPokePlayer,tygyh,JMC47,Hydr8gon,CrystalGamma,shonumi,galop1n,Dentomologist,orbea,jordan-woyak,Tinob,OatmealDome,Orphis,lioncash,OrN,bentley,sepalani,moncefmechri,kamiyo,EmptyChaos,Buddybenj,Geotale,Parlane,BhaaLseN,archshift,Phatcat,LPFaint99,rlnilsen,smurf3tte,Linktothepast,noahpistilli,Simonx22,skylersaleh,merryhime,MayImilae,SirMangler,ColinDTaylor,LillyJadeKatrin,comex,magumagu,Pokechu22,hackbar,aroulin,glennricster,mandar1jn,Helios747,Gamer64ytb,tom-pratt,skidau,phire,mrgreywater,mimimi085181,deReeperJosh,meffij,degasus,vladfi1,Techjar,krnlyng,FioraAeterna,rukai,booto')", 'type': 'internal_log'}
2026-10-29T03:59:49.698953	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-10-29T03:54:49.698651	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'dreamsyntax,TryTwo,corwin-mcknight,nickbeth,PatrickFerry,linkmauve,RachelBryk,jloehr,cristian64,adamdmoss,gwicks,jjdelvalle,JordanTheToaster,VampireFlower,unknownbrackets,JosJuice,ShimmerGlass,CrossVR,ligfx,kayru,Tilka,mahdihijazi,mathieui,hdcmeta,Lobsterzelda,Sintendo,Zopolis4,CelestialAmber,hrydgard,mmastrac,neobrain,Sam-Belliveau,Sir-Walrus,JoshuaVandaele,crediar,endrift,AdmiralCurtiss,magcius,Ebola16,spxtr,zopieux,jezze,nullgemm,DacoTaco,iwubcode,spycrab,mitaclaw,malleoz,RisingFog,mbc07,Filoppi,Linkinworm,leoetlino,K0bin,riking,randomstuff,hthh,cscd98,zackhow,marcan,Ziek,CookiePLMonster,delroth,Stevoisiak,SuperSamus,Starsam80,yourWaifu,TellowKrinkle,NanoByte011,LAGonauta,aldelaro5,CasualPokePlayer,tygyh,JMC47,Hydr8gon,CrystalGamma,shonumi,galop1n,Dentomologist,orbea,jordan-woyak,Tinob,OatmealDome,Orphis,lioncash,OrN,bentley,sepalani,moncefmechri,kamiyo,EmptyChaos,Buddybenj,Geotale,Parlane,BhaaLseN,archshift,Phatcat,LPFaint99,rlnilsen,smurf3tte,Linktothepast,noahpistilli,Simonx22,skylersaleh,merryhime,MayImilae,SirMangler,ColinDTaylor,LillyJadeKatrin,comex,magumagu,Pokechu22,hackbar,aroulin,glennricster,mandar1jn,Helios747,Gamer64ytb,tom-pratt,skidau,phire,mrgreywater,mimimi085181,deReeperJosh,meffij,degasus,vladfi1,Techjar,krnlyng,FioraAeterna,rukai,booto')", 'type': 'internal_log'}
2026-10-29T03:54:48.080677	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-10-29T03:53:44.745282	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'degasus,leoetlino,CrossVR,Tilka,Pokechu22,iwubcode,OatmealDome,Dentomologist,jordan-woyak,JosJuice,phire,linkmauve,AdmiralCurtiss')", 'type': 'internal_log'}
2026-10-29T03:53:44.390578	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
2026-10-29T03:49:48.080339	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'dreamsyntax,TryTwo,corwin-mcknight,nickbeth,PatrickFerry,linkmauve,RachelBryk,jloehr,cristian64,adamdmoss,gwicks,jjdelvalle,JordanTheToaster,VampireFlower,unknownbrackets,JosJuice,ShimmerGlass,CrossVR,ligfx,kayru,Tilka,mahdihijazi,mathieui,hdcmeta,Lobsterzelda,Sintendo,Zopolis4,CelestialAmber,hrydgard,mmastrac,neobrain,Sam-Belliveau,Sir-Walrus,JoshuaVandaele,crediar,endrift,AdmiralCurtiss,magcius,Ebola16,spxtr,zopieux,jezze,nullgemm,DacoTaco,iwubcode,spycrab,mitaclaw,malleoz,RisingFog,mbc07,Filoppi,Linkinworm,leoetlino,K0bin,riking,randomstuff,hthh,cscd98,zackhow,marcan,Ziek,CookiePLMonster,delroth,Stevoisiak,SuperSamus,Starsam80,yourWaifu,TellowKrinkle,NanoByte011,LAGonauta,aldelaro5,CasualPokePlayer,tygyh,JMC47,Hydr8gon,CrystalGamma,shonumi,galop1n,Dentomologist,orbea,jordan-woyak,Tinob,OatmealDome,Orphis,lioncash,OrN,bentley,sepalani,moncefmechri,kamiyo,EmptyChaos,Buddybenj,Geotale,Parlane,BhaaLseN,archshift,Phatcat,LPFaint99,rlnilsen,smurf3tte,Linktothepast,noahpistilli,Simonx22,skylersaleh,merryhime,MayImilae,SirMangler,ColinDTaylor,LillyJadeKatrin,comex,magumagu,Pokechu22,hackbar,aroulin,glennricster,mandar1jn,Helios747,Gamer64ytb,tom-pratt,skidau,phire,mrgreywater,mimimi085181,deReeperJosh,meffij,degasus,vladfi1,Techjar,krnlyng,FioraAeterna,rukai,booto')", 'type': 'internal_log'}
2026-10-29T03:49:46.492592	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-10-29T03:44:46.492282	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'dreamsyntax,TryTwo,corwin-mcknight,nickbeth,PatrickFerry,linkmauve,RachelBryk,jloehr,cristian64,adamdmoss,gwicks,jjdelvalle,JordanTheToaster,VampireFlower,unknownbrackets,JosJuice,ShimmerGlass,CrossVR,ligfx,kayru,Tilka,mahdihijazi,mathieui,hdcmeta,Lobsterzelda,Sintendo,Zopolis4,CelestialAmber,hrydgard,mmastrac,neobrain,Sam-Belliveau,Sir-Walrus,JoshuaVandaele,crediar,endrift,AdmiralCurtiss,magcius,Ebola16,spxtr,zopieux,jezze,nullgemm,DacoTaco,iwubcode,spycrab,mitaclaw,malleoz,RisingFog,mbc07,Filoppi,Linkinworm,leoetlino,K0bin,riking,randomstuff,hthh,cscd98,zackhow,marcan,Ziek,CookiePLMonster,delroth,Stevoisiak,SuperSamus,Starsam80,yourWaifu,TellowKrinkle,NanoByte011,LAGonauta,aldelaro5,CasualPokePlayer,tygyh,JMC47,Hydr8gon,CrystalGamma,shonumi,galop1n,Dentomologist,orbea,jordan-woyak,Tinob,OatmealDome,Orphis,lioncash,OrN,bentley,sepalani,moncefmechri,kamiyo,EmptyChaos,Buddybenj,Geotale,Parlane,BhaaLseN,archshift,Phatcat,LPFaint99,rlnilsen,smurf3tte,Linktothepast,noahpistilli,Simonx22,skylersaleh,merryhime,MayImilae,SirMangler,ColinDTaylor,LillyJadeKatrin,comex,magumagu,Pokechu22,hackbar,aroulin,glennricster,mandar1jn,Helios747,Gamer64ytb,tom-pratt,skidau,phire,mrgreywater,mimimi085181,deReeperJosh,meffij,degasus,vladfi1,Techjar,krnlyng,FioraAeterna,rukai,booto')", 'type': 'internal_log'}
2026-10-29T03:44:44.655246	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-10-29T03:43:44.390326	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'degasus,leoetlino,CrossVR,Tilka,Pokechu22,iwubcode,OatmealDome,Dentomologist,jordan-woyak,JosJuice,phire,linkmauve,AdmiralCurtiss')", 'type': 'internal_log'}
2026-10-29T03:43:43.928734	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
2026-10-29T03:39:44.654922	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'dreamsyntax,TryTwo,corwin-mcknight,nickbeth,PatrickFerry,linkmauve,RachelBryk,jloehr,cristian64,adamdmoss,gwicks,jjdelvalle,JordanTheToaster,VampireFlower,unknownbrackets,JosJuice,ShimmerGlass,CrossVR,ligfx,kayru,Tilka,mahdihijazi,mathieui,hdcmeta,Lobsterzelda,Sintendo,Zopolis4,CelestialAmber,hrydgard,mmastrac,neobrain,Sam-Belliveau,Sir-Walrus,JoshuaVandaele,crediar,endrift,AdmiralCurtiss,magcius,Ebola16,spxtr,zopieux,jezze,nullgemm,DacoTaco,iwubcode,spycrab,mitaclaw,malleoz,RisingFog,mbc07,Filoppi,Linkinworm,leoetlino,K0bin,riking,randomstuff,hthh,cscd98,zackhow,marcan,Ziek,CookiePLMonster,delroth,Stevoisiak,SuperSamus,Starsam80,yourWaifu,TellowKrinkle,NanoByte011,LAGonauta,aldelaro5,CasualPokePlayer,tygyh,JMC47,Hydr8gon,CrystalGamma,shonumi,galop1n,Dentomologist,orbea,jordan-woyak,Tinob,OatmealDome,Orphis,lioncash,OrN,bentley,sepalani,moncefmechri,kamiyo,EmptyChaos,Buddybenj,Geotale,Parlane,BhaaLseN,archshift,Phatcat,LPFaint99,rlnilsen,smurf3tte,Linktothepast,noahpistilli,Simonx22,skylersaleh,merryhime,MayImilae,SirMangler,ColinDTaylor,LillyJadeKatrin,comex,magumagu,Pokechu22,hackbar,aroulin,glennricster,mandar1jn,Helios747,Gamer64ytb,tom-pratt,skidau,phire,mrgreywater,mimimi085181,deReeperJosh,meffij,degasus,vladfi1,Techjar,krnlyng,FioraAeterna,rukai,booto')", 'type': 'internal_log'}
2026-10-29T03:39:42.966568	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-10-29T03:34:42.966243	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'dreamsyntax,TryTwo,corwin-mcknight,nickbeth,PatrickFerry,linkmauve,RachelBryk,jloehr,cristian64,adamdmoss,gwicks,jjdelvalle,JordanTheToaster,VampireFlower,unknownbrackets,JosJuice,ShimmerGlass,CrossVR,ligfx,kayru,Tilka,mahdihijazi,mathieui,hdcmeta,Lobsterzelda,Sintendo,Zopolis4,CelestialAmber,hrydgard,mmastrac,neobrain,Sam-Belliveau,Sir-Walrus,JoshuaVandaele,crediar,endrift,AdmiralCurtiss,magcius,Ebola16,spxtr,zopieux,jezze,nullgemm,DacoTaco,iwubcode,spycrab,mitaclaw,malleoz,RisingFog,mbc07,Filoppi,Linkinworm,leoetlino,K0bin,riking,randomstuff,hthh,cscd98,zackhow,marcan,Ziek,CookiePLMonster,delroth,Stevoisiak,SuperSamus,Starsam80,yourWaifu,TellowKrinkle,NanoByte011,LAGonauta,aldelaro5,CasualPokePlayer,tygyh,JMC47,Hydr8gon,CrystalGamma,shonumi,galop1n,Dentomologist,orbea,jordan-woyak,Tinob,OatmealDome,Orphis,lioncash,OrN,bentley,sepalani,moncefmechri,kamiyo,EmptyChaos,Buddybenj,Geotale,Parlane,BhaaLseN,archshift,Phatcat,LPFaint99,rlnilsen,smurf3tte,Linktothepast,noahpistilli,Simonx22,skylersaleh,merryhime,MayImilae,SirMangler,ColinDTaylor,LillyJadeKatrin,comex,magumagu,Pokechu22,hackbar,aroulin,glennricster,mandar1jn,Helios747,Gamer64ytb,tom-pratt,skidau,phire,mrgreywater,mimimi085181,deReeperJosh,meffij,degasus,vladfi1,Techjar,krnlyng,FioraAeterna,rukai,booto')", 'type': 'internal_log'}
2026-10-29T03:34:41.376382	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-10-29T03:33:43.928501	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'degasus,leoetlino,CrossVR,Tilka,Pokechu22,iwubcode,OatmealDome,Dentomologist,jordan-woyak,JosJuice,phire,linkmauve,AdmiralCurtiss')", 'type': 'internal_log'}
2026-10-29T03:33:43.591280	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
2026-10-29T03:29:41.376002	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'dreamsyntax,TryTwo,corwin-mcknight,nickbeth,PatrickFerry,linkmauve,RachelBryk,jloehr,cristian64,adamdmoss,gwicks,jjdelvalle,JordanTheToaster,VampireFlower,unknownbrackets,JosJuice,ShimmerGlass,CrossVR,ligfx,kayru,Tilka,mahdihijazi,mathieui,hdcmeta,Lobsterzelda,Sintendo,Zopolis4,CelestialAmber,hrydgard,mmastrac,neobrain,Sam-Belliveau,Sir-Walrus,JoshuaVandaele,crediar,endrift,AdmiralCurtiss,magcius,Ebola16,spxtr,zopieux,jezze,nullgemm,DacoTaco,iwubcode,spycrab,mitaclaw,malleoz,RisingFog,mbc07,Filoppi,Linkinworm,leoetlino,K0bin,riking,randomstuff,hthh,cscd98,zackhow,marcan,Ziek,CookiePLMonster,delroth,Stevoisiak,SuperSamus,Starsam80,yourWaifu,TellowKrinkle,NanoByte011,LAGonauta,aldelaro5,CasualPokePlayer,tygyh,JMC47,Hydr8gon,CrystalGamma,shonumi,galop1n,Dentomologist,orbea,jordan-woyak,Tinob,OatmealDome,Orphis,lioncash,OrN,bentley,sepalani,moncefmechri,kamiyo,EmptyChaos,Buddybenj,Geotale,Parlane,BhaaLseN,archshift,Phatcat,LPFaint99,rlnilsen,smurf3tte,Linktothepast,noahpistilli,Simonx22,skylersaleh,merryhime,MayImilae,SirMangler,ColinDTaylor,LillyJadeKatrin,comex,magumagu,Pokechu22,hackbar,aroulin,glennricster,mandar1jn,Helios747,Gamer64ytb,tom-pratt,skidau,phire,mrgreywater,mimimi085181,deReeperJosh,meffij,degasus,vladfi1,Techjar,krnlyng,FioraAeterna,rukai,booto')", 'type': 'internal_log'}

Recent 'issue' events

2026-10-28T16:43:09.194001	{'source': 'redmine', 'new': False, 'update': 2, 'issue': 14171, 'title': '[Android] Add ability to specify options for Turnip driver', 'author': 'JosJuice', 'type': 'issue'}
2026-10-27T10:46:25.718676	{'source': 'redmine', 'new': True, 'update': 0, 'issue': 14171, 'title': '[Android] Add ability to specify options for Turnip driver', 'author': 'markk', 'type': 'issue'}
2026-10-26T19:39:43.894348	{'source': 'redmine', 'new': False, 'update': 2, 'issue': 14170, 'title': '[Android] Dolphin fails to install some GPU drivers', 'author': 'JosJuice', 'type': 'issue'}
2026-10-26T19:23:53.850003	{'source': 'redmine', 'new': True, 'update': 0, 'issue': 14170, 'title': '[Android] Dolphin fails to install some GPU drivers', 'author': 'markk', 'type': 'issue'}
2026-10-26T03:52:08.153658	{'source': 'redmine', 'new': False, 'update': 7, 'issue': 13754, 'title': 'SDL conflicts with native GC Adapter handling on Linux', 'author': 'Billiard26', 'type': 'issue'}
2026-10-26T03:42:57.556606	{'source': 'redmine', 'new': False, 'update': 6, 'issue': 13754, 'title': 'SDL conflicts with native GC Adapter handling on Linux', 'author': 'DrZ2A', 'type': 'issue'}
2026-10-24T21:15:34.901809	{'source': 'redmine', 'new': False, 'update': 27, 'issue': 14143, 'title': "Games Can't Start Without Crashing Dolphin", 'author': 'Dentomologist', 'type': 'issue'}
2026-10-24T18:28:54.224107	{'source': 'redmine', 'new': False, 'update': 6, 'issue': 14166, 'title': 'Crash Launching Any Game When Set To New Time Zone "Pacific Time (British Columbia)"', 'author': 'JosJuice', 'type': 'issue'}
2026-10-24T08:42:34.709036	{'source': 'redmine', 'new': True, 'update': 0, 'issue': 14169, 'title': 'Having Wii Remote 1/2/3/4 in the Controllers menu set to "Real Wii Remote" makes opening and closing games as well as connecting a Wii Remote take much longer than usual', 'author': 'Nia', 'type': 'issue'}
2026-10-24T02:32:49.117018	{'source': 'redmine', 'new': False, 'update': 2, 'issue': 14168, 'title': 'Issue with Manitoban Time Zone Addition in Microsoft Windows', 'author': 'Billiard26', 'type': 'issue'}
2026-10-24T02:26:45.619599	{'source': 'redmine', 'new': True, 'update': 0, 'issue': 14168, 'title': 'Issue with Manitoban Time Zone Addition in Microsoft Windows', 'author': 'FermentedPeach', 'type': 'issue'}
2026-10-23T22:05:03.797277	{'source': 'redmine', 'new': True, 'update': 0, 'issue': 14167, 'title': 'WII remote will not reconnect after going into sleep mode ', 'author': 'Rjoe', 'type': 'issue'}
2026-10-23T19:51:28.124502	{'source': 'redmine', 'new': False, 'update': 3, 'issue': 12839, 'title': 'Dolphin Updater looks broken at higher Windows Scaling Settings', 'author': 'WiiGamer56473829', 'type': 'issue'}
2026-10-22T16:26:10.311709	{'source': 'redmine', 'new': False, 'update': 5, 'issue': 14166, 'title': 'Crash Launching Any Game When Set To New Time Zone "Pacific Time (British Columbia)"', 'author': 'TakahashiAkira', 'type': 'issue'}
2026-10-22T14:43:01.631652	{'source': 'redmine', 'new': False, 'update': 26, 'issue': 14143, 'title': "Games Can't Start Without Crashing Dolphin", 'author': 'TakahashiAkira', 'type': 'issue'}
2026-10-22T04:57:38.617248	{'source': 'redmine', 'new': False, 'update': 4, 'issue': 14166, 'title': 'Crash Launching Any Game When Set To New Time Zone "Pacific Time (British Columbia)"', 'author': 'Dentomologist', 'type': 'issue'}
2026-10-21T21:29:31.381766	{'source': 'redmine', 'new': False, 'update': 16, 'issue': 5977, 'title': 'Older Wiimotes (Pre -TR) have broken audio in emulated Bluetooth', 'author': 'Billiard26', 'type': 'issue'}
2026-10-21T21:01:26.151585	{'source': 'redmine', 'new': False, 'update': 15, 'issue': 5977, 'title': 'Older Wiimotes (Pre -TR) have broken audio in emulated Bluetooth', 'author': 'mardy', 'type': 'issue'}
2026-10-21T20:21:58.374940	{'source': 'redmine', 'new': False, 'update': 4, 'issue': 12073, 'title': 'Feature request - Cropping 16:9 letterboxed games', 'author': 'Billiard26', 'type': 'issue'}
2026-10-21T19:46:35.815073	{'source': 'redmine', 'new': False, 'update': 3, 'issue': 12073, 'title': 'Feature request - Cropping 16:9 letterboxed games', 'author': 'WiiGamer56473829', 'type': 'issue'}
2026-10-21T19:16:24.473818	{'source': 'redmine', 'new': False, 'update': 3, 'issue': 14166, 'title': 'Crash Launching Any Game When Set To New Time Zone "Pacific Time (British Columbia)"', 'author': 'Billiard26', 'type': 'issue'}
2026-10-21T18:21:57.352709	{'source': 'redmine', 'new': False, 'update': 2, 'issue': 14166, 'title': 'Crash Launching Any Game When Set To New Time Zone "Pacific Time (British Columbia)"', 'author': 'tehgooch', 'type': 'issue'}
2026-10-21T16:09:25.241751	{'source': 'redmine', 'new': True, 'update': 0, 'issue': 14166, 'title': 'Crash Launching Any Game When Set To New Time Zone "Pacific Time (British Columbia)"', 'author': 'tehgooch', 'type': 'issue'}
2026-10-19T16:12:10.962205	{'source': 'redmine', 'new': True, 'update': 0, 'issue': 14165, 'title': "Motion sometimes don't recognized in 3 WarioWare Smooth Moves mini-games (spin/rotation - Emulated controllers)", 'author': 'GaussTek', 'type': 'issue'}
2026-10-19T00:51:12.815927	{'source': 'redmine', 'new': False, 'update': 3, 'issue': 14141, 'title': 'Emulator Closes/Crashes If I Do Anything Since Update  (Even If I Install a Different Version)', 'author': 'oftheseaisme', 'type': 'issue'}

Recent 'new_dev_version' events

2026-10-25T12:40:28.012701	{'source': 'repomanager', 'hash': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'branch': 'master', 'shortrev': '2609-127', 'author': 'Admiral H. Curtiss', 'message': 'Merge pull request #14939 from SuperSamus/ppc-analyst-no-strncmp\n\nPPCAnalyst: Avoid using strncmp', 'url': 'https://github.com/dolphin-emu/dolphin/commit/3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'type': 'new_dev_version'}
2026-10-25T11:30:05.226936	{'source': 'repomanager', 'hash': 'edce78926fc20cea65a0599637788715e03644be', 'branch': 'master', 'shortrev': '2609-125', 'author': 'JosJuice', 'message': 'Merge pull request #14853 from SuperSamus/jit-trampoline-info-optimize\n\nJit: Optimize trampoline info allocation', 'url': 'https://github.com/dolphin-emu/dolphin/commit/edce78926fc20cea65a0599637788715e03644be', 'type': 'new_dev_version'}
2026-10-25T11:00:49.123302	{'source': 'repomanager', 'hash': 'f8e6bed381f52fba6015fbda0568e447e1a984b2', 'branch': 'master', 'shortrev': '2609-122', 'author': 'JosJuice', 'message': 'Merge pull request #14952 from jordan-woyak/common-thread-remove-unused\n\nCommon/Thread: Remove some unused things.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/f8e6bed381f52fba6015fbda0568e447e1a984b2', 'type': 'new_dev_version'}
2026-10-24T20:04:29.776886	{'source': 'repomanager', 'hash': '22b581c670d84e60d11c1b02d38e1c7789ae2dfa', 'branch': 'master', 'shortrev': '2609-119', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14940 from jordan-woyak/CoreTimingTest-fix\n\nUnitTests: Fix CoreTiming.SharedSlot test so it can run independently.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/22b581c670d84e60d11c1b02d38e1c7789ae2dfa', 'type': 'new_dev_version'}
2026-10-24T18:22:28.219221	{'source': 'repomanager', 'hash': 'b5f580e6f9b5ba442248ac62a25cb4db246aa69c', 'branch': 'master', 'shortrev': '2609-117', 'author': 'iwubcode', 'message': 'Merge pull request #14946 from OatmealDome/revert-win-std-chrono\n\nRevert "msvc: use std::chrono for GetLocalTimeSinceJan1970"', 'url': 'https://github.com/dolphin-emu/dolphin/commit/b5f580e6f9b5ba442248ac62a25cb4db246aa69c', 'type': 'new_dev_version'}
2026-10-24T12:16:26.358764	{'source': 'repomanager', 'hash': 'c12121f419c40f99eeb65a9039d9fc95be72e94a', 'branch': 'master', 'shortrev': '2609-115', 'author': 'JosJuice', 'message': 'Merge pull request #14917 from jordan-woyak/skylanders-common-aes\n\nSkylanders: Replace mbedtls_aes usage with Common::AES.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/c12121f419c40f99eeb65a9039d9fc95be72e94a', 'type': 'new_dev_version'}
2026-10-22T20:05:27.906534	{'source': 'repomanager', 'hash': 'e1d35f666cc35f6ead55d32ea2679df44d04da72', 'branch': 'master', 'shortrev': '2609-113', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14913 from jordan-woyak/md5\n\nCommon: Introduce MD5Context class and ComputeMD5 function to minimize mbedtls dependence.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/e1d35f666cc35f6ead55d32ea2679df44d04da72', 'type': 'new_dev_version'}
2026-10-22T19:14:51.363992	{'source': 'repomanager', 'hash': '10d958e66bb5d7574166a10f57839a288c5a7c64', 'branch': 'master', 'shortrev': '2609-108', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14942 from Dentomologist/cmake_add_explicit_check_for_minimum_qt_version\n\nCMake: Enforce minimum Qt version 6.2', 'url': 'https://github.com/dolphin-emu/dolphin/commit/10d958e66bb5d7574166a10f57839a288c5a7c64', 'type': 'new_dev_version'}
2026-10-22T17:12:39.717300	{'source': 'repomanager', 'hash': '2c805fee8f232d090c454381bb1b8422242345e1', 'branch': 'master', 'shortrev': '2609-106', 'author': 'JMC47', 'message': 'Merge pull request #14734 from tom-pratt/trigger-game-digest-check\n\nAndroid: Trigger netplay game digest check', 'url': 'https://github.com/dolphin-emu/dolphin/commit/2c805fee8f232d090c454381bb1b8422242345e1', 'type': 'new_dev_version'}
2026-10-19T16:56:25.522321	{'source': 'repomanager', 'hash': 'cf5cb7ef81c3e8e7af5c9d566334219ffda9f68b', 'branch': 'master', 'shortrev': '2609-104', 'author': 'JMC47', 'message': 'Merge pull request #14388 from SuperSamus/jit-branch-follow-explicit\n\nJit: Followed unconditional branches are a property added by the Analyzer, not something to assume', 'url': 'https://github.com/dolphin-emu/dolphin/commit/cf5cb7ef81c3e8e7af5c9d566334219ffda9f68b', 'type': 'new_dev_version'}
2026-10-18T18:26:46.939067	{'source': 'repomanager', 'hash': '1822e3859f061c6f81076c94eb4ba7e6e0a3706c', 'branch': 'master', 'shortrev': '2609-102', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14934 from iwubcode/efb_interface_remove_global\n\nVideoCommon: remove global framebuffer manager from EFBInterface', 'url': 'https://github.com/dolphin-emu/dolphin/commit/1822e3859f061c6f81076c94eb4ba7e6e0a3706c', 'type': 'new_dev_version'}
2026-10-18T12:51:22.655287	{'source': 'repomanager', 'hash': '41460454e9600f909950fddf0abd13a138430162', 'branch': 'master', 'shortrev': '2609-100', 'author': 'JosJuice', 'message': 'Merge pull request #14796 from acts-1631/security/traversal-pending-timeout\n\nTraversal: update pending-packet time on socket timeout', 'url': 'https://github.com/dolphin-emu/dolphin/commit/41460454e9600f909950fddf0abd13a138430162', 'type': 'new_dev_version'}
2026-10-18T10:25:50.493181	{'source': 'repomanager', 'hash': '8c19346fa956c37264751868a8ac4d674bfff6de', 'branch': 'master', 'shortrev': '2609-98', 'author': 'JosJuice', 'message': 'Merge pull request #14621 from jordan-woyak/cached-blob-jthread\n\nDiscIO/CachedBlob: Minor cleanup by replacing std::thread with std::jthread.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/8c19346fa956c37264751868a8ac4d674bfff6de', 'type': 'new_dev_version'}
2026-10-18T10:12:05.349589	{'source': 'repomanager', 'hash': 'b869a2ab2035f0ff0c0ca71becb4e33131ebb1b7', 'branch': 'master', 'shortrev': '2609-94', 'author': 'JosJuice', 'message': 'Merge pull request #14793 from JoshuaVandaele/auto-off-warns\n\nCMake: Automatically disable warnings for Externals', 'url': 'https://github.com/dolphin-emu/dolphin/commit/b869a2ab2035f0ff0c0ca71becb4e33131ebb1b7', 'type': 'new_dev_version'}
2026-10-17T17:14:14.679192	{'source': 'repomanager', 'hash': '38d619b07691231f54e6f037fcf30a3b64fdd5a5', 'branch': 'master', 'shortrev': '2609-92', 'author': 'JosJuice', 'message': 'Merge pull request #14804 from JosJuice/jit-set-lazy-memory-region\n\nJit: Use LazyMemoryRegion-backed bit sets', 'url': 'https://github.com/dolphin-emu/dolphin/commit/38d619b07691231f54e6f037fcf30a3b64fdd5a5', 'type': 'new_dev_version'}
2026-10-17T17:12:50.776242	{'source': 'repomanager', 'hash': '1cf8f6d92c95504b3fa41cdf92e1706cfb0d9928', 'branch': 'master', 'shortrev': '2609-87', 'author': 'JosJuice', 'message': 'Merge pull request #14397 from sepalani/tri-accept\n\nAMMediaboard: Change accept non-blocking logic', 'url': 'https://github.com/dolphin-emu/dolphin/commit/1cf8f6d92c95504b3fa41cdf92e1706cfb0d9928', 'type': 'new_dev_version'}

Recent 'notification' events

2026-10-29T02:17:36.601615	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303P\ufeffokechu22\x03 commented on #11354 (DSPHLE: Add Desert Bus libasnd ucode variants): \x1f\x0302https://dolp.in/pr11354#issuecomment-6486057909\x03\x1f', 'type': 'notification'}
2026-10-29T02:10:44.626783	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 edited a comment on #14956 (Common/Timer: Make "Precision Frame Timing" use x86 TPAUSE/MWAITX instead of spin waiting when available.): \x1f\x0302https://dolp.in/pr14956#issuecomment-6485838659\x03\x1f', 'type': 'notification'}
2026-10-29T02:03:02.427291	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 commented on #14956 (Common/Timer: Make "Precision Frame Timing" use x86 TPAUSE/MWAITX instead of spin waiting when available.): \x1f\x0302https://dolp.in/pr14956#issuecomment-6485838659\x03\x1f', 'type': 'notification'}
2026-10-29T01:59:57.107546	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 synchronized pull request #14956: Common/Timer: Make "Precision Frame Timing" use x86 TPAUSE/MWAITX instead of spin waiting when available. (\x0306master\x03...\x0306tsc-sleep\x03): \x1f\x0302https://dolp.in/pr14956\x03\x1f', 'type': 'notification'}
2026-10-29T01:48:24.882680	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 assigned pull request #14909: WiimoteEmu: improve Swing simulation and support relative input (\x0306master\x03...\x0306codex/mouse-wiimote-motion\x03): \x1f\x0302https://dolp.in/pr14909\x03\x1f', 'type': 'notification'}
2026-10-28T23:02:43.151196	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #14958 \x0304failed\x03 on builders [default]: \x1f\x0302<no url>\x03\x1f', 'type': 'notification'}
2026-10-28T23:02:12.069349	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303b\ufeffmdhacks\x03 opened pull request #14958: Vulkan: Allow custom drivers on Mali devices (\x0306master\x03...\x0306mali-custom-driver\x03): \x1f\x0302https://dolp.in/pr14958\x03\x1f', 'type': 'notification'}
2026-10-28T23:00:04.938044	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303c\ufeffitrusella\x03 commented on #11354 (DSPHLE: Add Desert Bus libasnd ucode variants): \x1f\x0302https://dolp.in/pr11354#issuecomment-6482900630\x03\x1f', 'type': 'notification'}
2026-10-28T22:54:03.817784	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 approved pull request #14877 (PerformanceTracker: Small cleanup, properly use RunningVariance for the standard deviation): \x1f\x0302https://dolp.in/pr14877#pullrequestreview-5690760986\x03\x1f', 'type': 'notification'}
2026-10-28T22:10:44.892493	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303s\ufeffepalani\x03 edited pull request #14774: Refactor the GameCube microphone code (\x0306master\x03...\x0306mic-dedup2\x03): \x1f\x0302https://dolp.in/pr14774\x03\x1f', 'type': 'notification'}
2026-10-28T22:07:20.852803	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #14774 \x0304failed\x03 on builders [lint]: \x1f\x0302https://dolphin.ci/#/builders/9/builds/10854\x03\x1f', 'type': 'notification'}
2026-10-28T22:06:29.731522	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303s\ufeffepalani\x03 synchronized pull request #14774: Refactor the GameCube microphone code (\x0306master\x03...\x0306mic-dedup2\x03): \x1f\x0302https://dolp.in/pr14774\x03\x1f', 'type': 'notification'}
2026-10-28T21:55:20.818281	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303S\ufeffuperSamus\x03 edited a comment on #14877 (PerformanceTracker: Small cleanup, properly use RunningVariance for the standard deviation): \x1f\x0302https://dolp.in/pr14877#issuecomment-6481465058\x03\x1f', 'type': 'notification'}
2026-10-28T21:46:02.208313	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303S\ufeffuperSamus\x03 commented on #14877 (PerformanceTracker: Small cleanup, properly use RunningVariance for the standard deviation): \x1f\x0302https://dolp.in/pr14877#issuecomment-6481465058\x03\x1f', 'type': 'notification'}
2026-10-28T21:03:54.242760	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #12014 \x0304failed\x03 on builders [pr-win-dbg-x64]: \x1f\x0302https://dolphin.ci/#/builders/31/builds/10857\x03\x1f', 'type': 'notification'}
2026-10-28T21:01:17.394752	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #12014 \x0304failed\x03 on builders [pr-win-x64]: \x1f\x0302https://dolphin.ci/#/builders/2/builds/10850\x03\x1f', 'type': 'notification'}
2026-10-28T20:56:24.412483	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #12014 \x0304failed\x03 on builders [pr-deb-dbg-x64]: \x1f\x0302https://dolphin.ci/#/builders/1/builds/10848\x03\x1f', 'type': 'notification'}
2026-10-28T20:53:04.147902	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 requested a review from iwubcode for pull request #12014: Add CRT shaders (\x0306master\x03...\x0306master\x03): \x1f\x0302https://dolp.in/pr12014\x03\x1f', 'type': 'notification'}
2026-10-28T20:52:10.267687	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 synchronized pull request #12014: Add CRT shaders (\x0306master\x03...\x0306master\x03): \x1f\x0302https://dolp.in/pr12014\x03\x1f', 'type': 'notification'}
2026-10-28T20:48:16.877775	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 commented on #12014 (Add CRT shaders): \x1f\x0302https://dolp.in/pr12014#issuecomment-6480328861\x03\x1f', 'type': 'notification'}
2026-10-28T20:46:02.449145	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 synchronized pull request #12014: Add CRT shaders (\x0306master\x03...\x0306master\x03): \x1f\x0302https://dolp.in/pr12014\x03\x1f', 'type': 'notification'}
2026-10-28T19:45:02.276001	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303T\ufeffellowKrinkle\x03 commented on #13704 (CMake: Use CMAKE_CURRENT_SOURCE_DIR instead of CMAKE_SOURCE_DIR): \x1f\x0302https://dolp.in/pr13704#issuecomment-6478904803\x03\x1f', 'type': 'notification'}
2026-10-28T19:38:00.156166	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 approved pull request #12318 (Change Sensor Bar Position Default to Bottom): \x1f\x0302https://dolp.in/pr12318#pullrequestreview-5688630935\x03\x1f', 'type': 'notification'}
2026-10-28T19:37:16.495760	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303J\ufeffoshuaVandaele\x03 approved pull request #14951 (Core/TimePlayed: Decouple the TimePlayed tracker thread from CPUManager.): \x1f\x0302https://dolp.in/pr14951#pullrequestreview-5688621943\x03\x1f', 'type': 'notification'}
2026-10-28T19:35:08.271208	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 approved pull request #12848 (Add unit test coverage for `Rectangle::ClampUL`, and remove the unused `ClampLL` function): \x1f\x0302https://dolp.in/pr12848#pullrequestreview-5688595525\x03\x1f', 'type': 'notification'}

Recent 'pull_request_fifoci_status' events

2026-10-29T02:52:14.272612	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14956, 'type': 'pull_request_fifoci_status'}
2026-10-29T02:43:02.385569	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 14956, 'type': 'pull_request_fifoci_status'}
2026-10-29T02:34:20.061497	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 14956, 'type': 'pull_request_fifoci_status'}
2026-10-29T02:29:08.422016	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14956, 'type': 'pull_request_fifoci_status'}
2026-10-29T02:23:24.083783	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 14956, 'type': 'pull_request_fifoci_status'}
2026-10-28T23:57:51.820571	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'a8fc326a6b0e9945919b174aed09a9639b5b10a0', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14958, 'type': 'pull_request_fifoci_status'}
2026-10-28T23:49:02.378365	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'a8fc326a6b0e9945919b174aed09a9639b5b10a0', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 14958, 'type': 'pull_request_fifoci_status'}
2026-10-28T23:39:01.117378	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'a8fc326a6b0e9945919b174aed09a9639b5b10a0', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 14958, 'type': 'pull_request_fifoci_status'}
2026-10-28T23:35:37.935161	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'a8fc326a6b0e9945919b174aed09a9639b5b10a0', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14958, 'type': 'pull_request_fifoci_status'}
2026-10-28T23:28:17.669598	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'a8fc326a6b0e9945919b174aed09a9639b5b10a0', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 14958, 'type': 'pull_request_fifoci_status'}
2026-10-28T23:00:19.902886	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'e24e65914b2fd310cfe72beeb590923b54f0e329', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14774, 'type': 'pull_request_fifoci_status'}
2026-10-28T22:51:15.903522	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'e24e65914b2fd310cfe72beeb590923b54f0e329', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 14774, 'type': 'pull_request_fifoci_status'}
2026-10-28T22:43:11.153207	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'e24e65914b2fd310cfe72beeb590923b54f0e329', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 14774, 'type': 'pull_request_fifoci_status'}
2026-10-28T22:37:47.132881	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'e24e65914b2fd310cfe72beeb590923b54f0e329', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14774, 'type': 'pull_request_fifoci_status'}
2026-10-28T22:32:20.520553	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'e24e65914b2fd310cfe72beeb590923b54f0e329', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 14774, 'type': 'pull_request_fifoci_status'}
2026-10-28T21:34:29.642751	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 12014, 'type': 'pull_request_fifoci_status'}
2026-10-28T21:31:37.907620	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 12014, 'type': 'pull_request_fifoci_status'}
2026-10-28T21:25:37.852995	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 12014, 'type': 'pull_request_fifoci_status'}
2026-10-28T21:20:48.742838	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 12014, 'type': 'pull_request_fifoci_status'}
2026-10-28T21:12:30.135191	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 12014, 'type': 'pull_request_fifoci_status'}
2026-10-28T18:49:33.698914	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '6f63dd0f44bc9696e73fbcf2cbae766f902fac50', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14951, 'type': 'pull_request_fifoci_status'}
2026-10-28T18:41:06.378445	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '6f63dd0f44bc9696e73fbcf2cbae766f902fac50', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 14951, 'type': 'pull_request_fifoci_status'}
2026-10-28T18:40:50.680902	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '6f63dd0f44bc9696e73fbcf2cbae766f902fac50', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 14951, 'type': 'pull_request_fifoci_status'}
2026-10-28T18:29:59.791389	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '6f63dd0f44bc9696e73fbcf2cbae766f902fac50', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 14951, 'type': 'pull_request_fifoci_status'}
2026-10-28T18:27:57.910665	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '6f63dd0f44bc9696e73fbcf2cbae766f902fac50', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14951, 'type': 'pull_request_fifoci_status'}

Recent 'raw_bb_hook' events

2026-10-29T02:52:13.625593	{'source': 'webserver', 'raw': {'buildid': 194875, 'number': 9509, 'builderid': 35, 'buildrequestid': 195454, 'workerid': 5, 'masterid': 1, 'started_at': 1793241781, 'complete_at': 1793242333, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'builddir': ['/var/lib/fifoci-worker/worker/pr-fifoci-sw-lin-mesa', 'Worker'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Trigger'], 'pr_id': [14956, 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'builderid': [35, 'Builder'], 'buildnumber': [9509, 'Build'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'codebase': ['', 'Build'], 'warnings-count': [4, 'WarningCountingShellCommand'], 'branchname': ['pr-14956', 'Trigger'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'basedir': ['/var/lib/fifoci-worker/worker', 'Worker'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['05ce31', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-sw-lin-mesa', 'Builder'], 'workername': ['altair-fifoci', 'Worker'], 'branch': ['refs/pull/14956/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'got_revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 195454, 'buildsetid': 43823, 'builderid': 35, 'priority': 0, 'claimed': True, 'claimed_at': 1793241781, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239788, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43823, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1793239788, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194867, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, 'patch': None}]}, 'parentbuild': {'buildid': 194867, 'number': 10853, 'builderid': 27, 'buildrequestid': 195447, 'workerid': 10, 'masterid': 1, 'started_at': 1793239215, 'complete_at': 1793239788, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 27, 'name': 'pr-ubu-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 35, 'name': 'pr-fifoci-sw-lin-mesa', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/35/builds/9509'}, 'type': 'raw_bb_hook'}
2026-10-29T02:43:01.892344	{'source': 'webserver', 'raw': {'buildid': 194875, 'number': 9509, 'builderid': 35, 'buildrequestid': 195454, 'workerid': 5, 'masterid': 1, 'started_at': 1793241781, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Trigger'], 'pr_id': [14956, 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'builderid': [35, 'Builder'], 'buildnumber': [9509, 'Build'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'codebase': ['', 'Build'], 'branchname': ['pr-14956', 'Trigger'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['05ce31', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-sw-lin-mesa', 'Builder'], 'workername': ['altair-fifoci', 'Worker'], 'branch': ['refs/pull/14956/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 195454, 'buildsetid': 43823, 'builderid': 35, 'priority': 0, 'claimed': True, 'claimed_at': 1793241781, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239788, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43823, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1793239788, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194867, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, 'patch': None}]}, 'parentbuild': {'buildid': 194867, 'number': 10853, 'builderid': 27, 'buildrequestid': 195447, 'workerid': 10, 'masterid': 1, 'started_at': 1793239215, 'complete_at': 1793239788, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 27, 'name': 'pr-ubu-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 35, 'name': 'pr-fifoci-sw-lin-mesa', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/35/builds/9509'}, 'type': 'raw_bb_hook'}
2026-10-29T02:43:01.734073	{'source': 'webserver', 'raw': {'buildid': 194874, 'number': 5496, 'builderid': 41, 'buildrequestid': 195455, 'workerid': 5, 'masterid': 1, 'started_at': 1793240947, 'complete_at': 1793241781, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'workername': ['altair-fifoci', 'Worker'], 'codebase': ['', 'Build'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Trigger'], 'buildername': ['pr-fifoci-vk-lin-mesa', 'Builder'], 'repository': ['', 'Build'], 'got_revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'GitNoBranch'], 'warnings-count': [4, 'WarningCountingShellCommand'], 'branchname': ['pr-14956', 'Trigger'], 'shortrev': ['05ce31', 'Trigger'], 'pr_id': [14956, 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'builderid': [41, 'Builder'], 'branch': ['refs/pull/14956/head', 'Build'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'builddir': ['/var/lib/fifoci-worker/worker/pr-fifoci-vk-lin-mesa', 'Worker'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildnumber': [5496, 'Build'], 'project': ['', 'Build'], 'basedir': ['/var/lib/fifoci-worker/worker', 'Worker']}, 'buildrequest': {'buildrequestid': 195455, 'buildsetid': 43823, 'builderid': 41, 'priority': 0, 'claimed': True, 'claimed_at': 1793240947, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239788, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43823, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1793239788, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194867, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, 'patch': None}]}, 'parentbuild': {'buildid': 194867, 'number': 10853, 'builderid': 27, 'buildrequestid': 195447, 'workerid': 10, 'masterid': 1, 'started_at': 1793239215, 'complete_at': 1793239788, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 27, 'name': 'pr-ubu-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 41, 'name': 'pr-fifoci-vk-lin-mesa', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/41/builds/5496'}, 'type': 'raw_bb_hook'}
2026-10-29T02:34:19.389886	{'source': 'webserver', 'raw': {'buildid': 194873, 'number': 9205, 'builderid': 21, 'buildrequestid': 195457, 'workerid': 8, 'masterid': 1, 'started_at': 1793240603, 'complete_at': 1793241259, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Trigger'], 'pr_id': [14956, 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'builderid': [21, 'Builder'], 'buildnumber': [9205, 'Build'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'branchname': ['pr-14956', 'Trigger'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['05ce31', 'Trigger'], 'got_revision': ['ca98b3030bcc70e67158ce899a5589aa2ec65d32', 'GitNoBranch'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-mtl-osx-m1', 'Builder'], 'workername': ['osx-m1', 'Worker'], 'branch': ['refs/pull/14956/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'builddir': ['/Users/ci/worker/base/pr-fifoci-mtl-osx-m1', 'Worker'], 'warnings-count': [114, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 195457, 'buildsetid': 43824, 'builderid': 21, 'priority': 0, 'claimed': True, 'claimed_at': 1793240603, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239945, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43824, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1793239945, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194863, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, 'patch': None}]}, 'parentbuild': {'buildid': 194863, 'number': 10871, 'builderid': 7, 'buildrequestid': 195441, 'workerid': 8, 'masterid': 1, 'started_at': 1793239210, 'complete_at': 1793239945, '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/9205'}, 'type': 'raw_bb_hook'}
2026-10-29T02:29:07.798065	{'source': 'webserver', 'raw': {'buildid': 194874, 'number': 5496, 'builderid': 41, 'buildrequestid': 195455, 'workerid': 5, 'masterid': 1, 'started_at': 1793240947, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'workername': ['altair-fifoci', 'Worker'], 'codebase': ['', 'Build'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Trigger'], 'buildername': ['pr-fifoci-vk-lin-mesa', 'Builder'], 'repository': ['', 'Build'], 'branchname': ['pr-14956', 'Trigger'], 'shortrev': ['05ce31', 'Trigger'], 'pr_id': [14956, 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'builderid': [41, 'Builder'], 'branch': ['refs/pull/14956/head', 'Build'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildnumber': [5496, 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 195455, 'buildsetid': 43823, 'builderid': 41, 'priority': 0, 'claimed': True, 'claimed_at': 1793240947, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239788, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43823, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1793239788, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194867, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, 'patch': None}]}, 'parentbuild': {'buildid': 194867, 'number': 10853, 'builderid': 27, 'buildrequestid': 195447, 'workerid': 10, 'masterid': 1, 'started_at': 1793239215, 'complete_at': 1793239788, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 27, 'name': 'pr-ubu-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 41, 'name': 'pr-fifoci-vk-lin-mesa', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/41/builds/5496'}, 'type': 'raw_bb_hook'}
2026-10-29T02:29:07.744017	{'source': 'webserver', 'raw': {'buildid': 194868, 'number': 9509, 'builderid': 10, 'buildrequestid': 195453, 'workerid': 5, 'masterid': 1, 'started_at': 1793239788, 'complete_at': 1793240947, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Trigger'], 'buildername': ['pr-fifoci-ogl-lin-mesa', 'Builder'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'pr_id': [14956, 'Trigger'], 'workername': ['altair-fifoci', 'Worker'], 'codebase': ['', 'Build'], 'got_revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'GitNoBranch'], 'shortrev': ['05ce31', 'Trigger'], 'builderid': [10, 'Builder'], 'repository': ['', 'Build'], 'basedir': ['/var/lib/fifoci-worker/worker', 'Worker'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'branch': ['refs/pull/14956/head', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'builddir': ['/var/lib/fifoci-worker/worker/pr-fifoci-ogl-lin-mesa', 'Worker'], 'warnings-count': [4, 'WarningCountingShellCommand'], 'branchname': ['pr-14956', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildnumber': [9509, 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 195453, 'buildsetid': 43823, 'builderid': 10, 'priority': 0, 'claimed': True, 'claimed_at': 1793239788, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239788, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43823, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1793239788, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194867, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, 'patch': None}]}, 'parentbuild': {'buildid': 194867, 'number': 10853, 'builderid': 27, 'buildrequestid': 195447, 'workerid': 10, 'masterid': 1, 'started_at': 1793239215, 'complete_at': 1793239788, '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/9509'}, 'type': 'raw_bb_hook'}
2026-10-29T02:23:23.488505	{'source': 'webserver', 'raw': {'buildid': 194873, 'number': 9205, 'builderid': 21, 'buildrequestid': 195457, 'workerid': 8, 'masterid': 1, 'started_at': 1793240603, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Trigger'], 'pr_id': [14956, 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'builderid': [21, 'Builder'], 'buildnumber': [9205, 'Build'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'branchname': ['pr-14956', 'Trigger'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['05ce31', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-mtl-osx-m1', 'Builder'], 'workername': ['osx-m1', 'Worker'], 'branch': ['refs/pull/14956/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 195457, 'buildsetid': 43824, 'builderid': 21, 'priority': 0, 'claimed': True, 'claimed_at': 1793240603, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239945, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43824, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1793239945, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194863, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, 'patch': None}]}, 'parentbuild': {'buildid': 194863, 'number': 10871, 'builderid': 7, 'buildrequestid': 195441, 'workerid': 8, 'masterid': 1, 'started_at': 1793239210, 'complete_at': 1793239945, '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/9205'}, 'type': 'raw_bb_hook'}
2026-10-29T02:23:23.369220	{'source': 'webserver', 'raw': {'buildid': 194871, 'number': 9203, 'builderid': 19, 'buildrequestid': 195456, 'workerid': 8, 'masterid': 1, 'started_at': 1793239945, 'complete_at': 1793240603, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'buildername': ['pr-fifoci-mvk-osx-m1', 'Builder'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'builddir': ['/Users/ci/worker/base/pr-fifoci-mvk-osx-m1', 'Worker'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Trigger'], 'pr_id': [14956, 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'buildnumber': [9203, 'Build'], 'project': ['', 'Build'], 'got_revision': ['ca98b3030bcc70e67158ce899a5589aa2ec65d32', 'GitNoBranch'], 'shortrev': ['05ce31', 'Trigger'], 'workername': ['osx-m1', 'Worker'], 'codebase': ['', 'Build'], 'branchname': ['pr-14956', 'Trigger'], 'branch': ['refs/pull/14956/head', 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'warnings-count': [114, 'WarningCountingShellCommand'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'builderid': [19, 'Builder'], 'repository': ['', 'Build']}, 'buildrequest': {'buildrequestid': 195456, 'buildsetid': 43824, 'builderid': 19, 'priority': 0, 'claimed': True, 'claimed_at': 1793239945, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239945, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43824, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1793239945, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194863, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, 'patch': None}]}, 'parentbuild': {'buildid': 194863, 'number': 10871, 'builderid': 7, 'buildrequestid': 195441, 'workerid': 8, 'masterid': 1, 'started_at': 1793239210, 'complete_at': 1793239945, '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/9203'}, 'type': 'raw_bb_hook'}
2026-10-29T02:19:28.902289	{'source': 'webserver', 'raw': {'buildid': 194872, 'number': 10861, 'builderid': 31, 'buildrequestid': 195448, 'workerid': 4, 'masterid': 1, 'started_at': 1793240153, 'complete_at': 1793240368, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['05ce31', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'branch': ['refs/pull/14956/head', 'Build'], 'warnings-count': [7, 'WarningCountingShellCommand'], 'branchname': ['pr-14956', 'Change'], 'builderid': [31, 'Builder'], 'repository': ['', 'Build'], 'builddir': ['c:\\buildbot\\pr-win-dbg-x64', 'Worker'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-win-dbg-x64', 'Builder'], 'buildnumber': [10861, 'Build'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'basedir': ['c:\\buildbot', 'Worker'], 'build_url': ['https://dl.dolphin-emu.org/prs/7e/38/pr-14956-dolphin-latest-dbg-x64.7z', 'SetProperty'], 'pr_id': [14956, 'Change'], 'workername': ['windows', 'Worker'], 'codebase': ['', 'Build'], 'got_revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'GitNoBranch'], 'sln_exists': ['false', 'SetPropertyFromCommand Step']}, 'buildrequest': {'buildrequestid': 195448, 'buildsetid': 43822, 'builderid': 31, 'priority': 0, 'claimed': True, 'claimed_at': 1793240153, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239210, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43822, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793239210, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 31, 'name': 'pr-win-dbg-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/31/builds/10861'}, 'type': 'raw_bb_hook'}
2026-10-29T02:17:41.200154	{'source': 'webserver', 'raw': {'buildid': 194870, 'number': 10852, 'builderid': 1, 'buildrequestid': 195439, 'workerid': 9, 'masterid': 1, 'started_at': 1793239802, 'complete_at': 1793240261, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'scheduler': ['pr', 'Scheduler'], 'branch': ['refs/pull/14956/head', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'pr_id': [14956, 'Change'], 'buildername': ['pr-deb-dbg-x64', 'Builder'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'basedir': ['/buildbot', 'Worker'], 'branchname': ['pr-14956', 'Change'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Change'], 'workername': ['debian', 'Worker'], 'codebase': ['', 'Build'], 'got_revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'GitNoBranch'], 'shortrev': ['05ce31', 'Change'], 'builderid': [1, 'Builder'], 'repository': ['', 'Build'], 'builddir': ['/buildbot/pr-deb-dbg-x64', 'Worker'], 'warnings-count': [4, 'WarningCountingShellCommand'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildnumber': [10852, 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 195439, 'buildsetid': 43822, 'builderid': 1, 'priority': 0, 'claimed': True, 'claimed_at': 1793239802, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239210, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43822, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793239210, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, '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/10852'}, 'type': 'raw_bb_hook'}
2026-10-29T02:15:53.270048	{'source': 'webserver', 'raw': {'buildid': 194872, 'number': 10861, 'builderid': 31, 'buildrequestid': 195448, 'workerid': 4, 'masterid': 1, 'started_at': 1793240153, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['05ce31', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'branch': ['refs/pull/14956/head', 'Build'], 'branchname': ['pr-14956', 'Change'], 'builderid': [31, 'Builder'], 'repository': ['', 'Build'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-win-dbg-x64', 'Builder'], 'buildnumber': [10861, 'Build'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'pr_id': [14956, 'Change'], 'workername': ['windows', 'Worker'], 'codebase': ['', 'Build']}, 'buildrequest': {'buildrequestid': 195448, 'buildsetid': 43822, 'builderid': 31, 'priority': 0, 'claimed': True, 'claimed_at': 1793240153, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239210, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43822, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793239210, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 31, 'name': 'pr-win-dbg-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/31/builds/10861'}, 'type': 'raw_bb_hook'}
2026-10-29T02:15:53.138984	{'source': 'webserver', 'raw': {'buildid': 194869, 'number': 10854, 'builderid': 2, 'buildrequestid': 195440, 'workerid': 4, 'masterid': 1, 'started_at': 1793239800, 'complete_at': 1793240153, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'repo': ['dolphin-emu/dolphin', 'Change'], 'buildnumber': [10854, 'Build'], 'project': ['', 'Build'], 'got_revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'GitNoBranch'], 'sln_exists': ['false', 'SetPropertyFromCommand Step'], 'warnings-count': [7, 'WarningCountingShellCommand'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['05ce31', 'Change'], 'buildername': ['pr-win-x64', 'Builder'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'basedir': ['c:\\buildbot', 'Worker'], 'build_url': ['https://dl.dolphin-emu.org/prs/ae/41/pr-14956-dolphin-latest-x64.7z', 'SetProperty'], 'branchname': ['pr-14956', 'Change'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Change'], 'builderid': [2, 'Builder'], 'repository': ['', 'Build'], 'pr_id': [14956, 'Change'], 'workername': ['windows', 'Worker'], 'codebase': ['', 'Build'], 'scheduler': ['pr', 'Scheduler'], 'branch': ['refs/pull/14956/head', 'Build'], 'builddir': ['c:\\buildbot\\pr-win-x64', 'Worker']}, 'buildrequest': {'buildrequestid': 195440, 'buildsetid': 43822, 'builderid': 2, 'priority': 0, 'claimed': True, 'claimed_at': 1793239800, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239210, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43822, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793239210, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 2, 'name': 'pr-win-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/2/builds/10854'}, 'type': 'raw_bb_hook'}
2026-10-29T02:12:25.855991	{'source': 'webserver', 'raw': {'buildid': 194871, 'number': 9203, 'builderid': 19, 'buildrequestid': 195456, 'workerid': 8, 'masterid': 1, 'started_at': 1793239945, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'buildername': ['pr-fifoci-mvk-osx-m1', 'Builder'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Trigger'], 'pr_id': [14956, 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'buildnumber': [9203, 'Build'], 'project': ['', 'Build'], 'shortrev': ['05ce31', 'Trigger'], 'workername': ['osx-m1', 'Worker'], 'codebase': ['', 'Build'], 'branchname': ['pr-14956', 'Trigger'], 'branch': ['refs/pull/14956/head', 'Build'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'builderid': [19, 'Builder'], 'repository': ['', 'Build']}, 'buildrequest': {'buildrequestid': 195456, 'buildsetid': 43824, 'builderid': 19, 'priority': 0, 'claimed': True, 'claimed_at': 1793239945, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239945, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43824, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1793239945, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194863, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, 'patch': None}]}, 'parentbuild': {'buildid': 194863, 'number': 10871, 'builderid': 7, 'buildrequestid': 195441, 'workerid': 8, 'masterid': 1, 'started_at': 1793239210, 'complete_at': 1793239945, '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/9203'}, 'type': 'raw_bb_hook'}
2026-10-29T02:12:25.697468	{'source': 'webserver', 'raw': {'buildid': 194863, 'number': 10871, 'builderid': 7, 'buildrequestid': 195441, 'workerid': 8, 'masterid': 1, 'started_at': 1793239210, 'complete_at': 1793239945, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'scheduler': ['pr', 'Scheduler'], 'workername': ['osx-m1', 'Worker'], 'buildnumber': [10871, 'Build'], 'branchname': ['pr-14956', 'Change'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'pr_id': [14956, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Change'], 'shortrev': ['05ce31', 'Change'], 'buildername': ['pr-osx-universal', 'Builder'], 'builderid': [7, 'Builder'], 'branch': ['refs/pull/14956/head', 'Build'], 'repository': ['', 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'builddir': ['/Users/ci/worker/base/pr-osx-universal', 'Worker'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'got_revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'GitNoBranch'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build']}, 'buildrequest': {'buildrequestid': 195441, 'buildsetid': 43822, 'builderid': 7, 'priority': 0, 'claimed': True, 'claimed_at': 1793239210, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239210, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43822, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793239210, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, '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/10871'}, 'type': 'raw_bb_hook'}
2026-10-29T02:10:40.902892	{'source': 'webserver', 'raw': {'buildid': 194866, 'number': 105, 'builderid': 49, 'buildrequestid': 195451, 'workerid': 15, 'masterid': 1, 'started_at': 1793239211, 'complete_at': 1793239840, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'buildername': ['pr-appimage-x64', 'Builder'], 'buildnumber': [105, 'Build'], 'branch': ['refs/pull/14956/head', 'Build'], 'codebase': ['', 'Build'], 'basedir': ['/buildbot', 'Worker'], 'got_revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'GitNoBranch'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Change'], 'project': ['', 'Build'], 'warnings-count': [11, 'WarningCountingShellCommand'], 'builddir': ['/buildbot/pr-appimage-x64', 'Worker'], 'branchname': ['pr-14956', 'Change'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['05ce31', 'Change'], 'builderid': [49, 'Builder'], 'workername': ['altair-appimage', 'Worker'], 'pr_id': [14956, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'repository': ['', 'Build'], 'scheduler': ['pr', 'Scheduler'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build']}, 'buildrequest': {'buildrequestid': 195451, 'buildsetid': 43822, 'builderid': 49, 'priority': 0, 'claimed': True, 'claimed_at': 1793239211, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239210, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43822, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793239210, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, '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/105'}, 'type': 'raw_bb_hook'}
2026-10-29T02:10:02.694334	{'source': 'webserver', 'raw': {'buildid': 194870, 'number': 10852, 'builderid': 1, 'buildrequestid': 195439, 'workerid': 9, 'masterid': 1, 'started_at': 1793239802, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'scheduler': ['pr', 'Scheduler'], 'branch': ['refs/pull/14956/head', 'Build'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'pr_id': [14956, 'Change'], 'buildername': ['pr-deb-dbg-x64', 'Builder'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'branchname': ['pr-14956', 'Change'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Change'], 'workername': ['debian', 'Worker'], 'codebase': ['', 'Build'], 'shortrev': ['05ce31', 'Change'], 'builderid': [1, 'Builder'], 'repository': ['', 'Build'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildnumber': [10852, 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 195439, 'buildsetid': 43822, 'builderid': 1, 'priority': 0, 'claimed': True, 'claimed_at': 1793239802, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239210, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43822, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793239210, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, '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/10852'}, 'type': 'raw_bb_hook'}
2026-10-29T02:10:02.593261	{'source': 'webserver', 'raw': {'buildid': 194858, 'number': 10851, 'builderid': 26, 'buildrequestid': 195446, 'workerid': 9, 'masterid': 1, 'started_at': 1793239210, 'complete_at': 1793239802, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-deb-x64', 'Builder'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'branchname': ['pr-14956', 'Change'], 'pr_id': [14956, 'Change'], 'builderid': [26, 'Builder'], 'branch': ['refs/pull/14956/head', 'Build'], 'buildnumber': [10851, 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Change'], 'shortrev': ['05ce31', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'codebase': ['', 'Build'], 'workername': ['debian', 'Worker'], 'project': ['', 'Build'], 'repository': ['', 'Build'], 'got_revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'GitNoBranch'], 'basedir': ['/buildbot', 'Worker'], 'warnings-count': [5, 'WarningCountingShellCommand'], 'builddir': ['/buildbot/pr-deb-x64', 'Worker']}, 'buildrequest': {'buildrequestid': 195446, 'buildsetid': 43822, 'builderid': 26, 'priority': 0, 'claimed': True, 'claimed_at': 1793239210, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239210, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43822, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793239210, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, '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/10851'}, 'type': 'raw_bb_hook'}
2026-10-29T02:10:00.295362	{'source': 'webserver', 'raw': {'buildid': 194869, 'number': 10854, 'builderid': 2, 'buildrequestid': 195440, 'workerid': 4, 'masterid': 1, 'started_at': 1793239800, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'repo': ['dolphin-emu/dolphin', 'Change'], 'buildnumber': [10854, 'Build'], 'project': ['', 'Build'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['05ce31', 'Change'], 'buildername': ['pr-win-x64', 'Builder'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'branchname': ['pr-14956', 'Change'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Change'], 'builderid': [2, 'Builder'], 'repository': ['', 'Build'], 'pr_id': [14956, 'Change'], 'workername': ['windows', 'Worker'], 'codebase': ['', 'Build'], 'scheduler': ['pr', 'Scheduler'], 'branch': ['refs/pull/14956/head', 'Build']}, 'buildrequest': {'buildrequestid': 195440, 'buildsetid': 43822, 'builderid': 2, 'priority': 0, 'claimed': True, 'claimed_at': 1793239800, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239210, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43822, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793239210, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 2, 'name': 'pr-win-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/2/builds/10854'}, 'type': 'raw_bb_hook'}
2026-10-29T02:10:00.184735	{'source': 'webserver', 'raw': {'buildid': 194860, 'number': 10852, 'builderid': 13, 'buildrequestid': 195444, 'workerid': 4, 'masterid': 1, 'started_at': 1793239210, 'complete_at': 1793239800, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'scheduler': ['pr', 'Scheduler'], 'branchname': ['pr-14956', 'Change'], 'shortrev': ['05ce31', 'Change'], 'builderid': [13, 'Builder'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'workername': ['windows', 'Worker'], 'buildnumber': [10852, 'Build'], 'branch': ['refs/pull/14956/head', 'Build'], 'pr_id': [14956, 'Change'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-win-arm64', 'Builder'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'project': ['', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'builddir': ['c:\\buildbot\\pr-win-arm64', 'Worker'], 'got_revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'GitNoBranch'], 'build_url': ['https://dl.dolphin-emu.org/prs/4a/47/pr-14956-dolphin-latest-arm64.7z', 'SetProperty'], 'sln_exists': ['false', 'SetPropertyFromCommand Step'], 'basedir': ['c:\\buildbot', 'Worker'], 'warnings-count': [7, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 195444, 'buildsetid': 43822, 'builderid': 13, 'priority': 0, 'claimed': True, 'claimed_at': 1793239210, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239210, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43822, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793239210, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, '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/10852'}, 'type': 'raw_bb_hook'}
2026-10-29T02:09:48.899010	{'source': 'webserver', 'raw': {'buildid': 194868, 'number': 9509, 'builderid': 10, 'buildrequestid': 195453, 'workerid': 5, 'masterid': 1, 'started_at': 1793239788, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Trigger'], 'buildername': ['pr-fifoci-ogl-lin-mesa', 'Builder'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'pr_id': [14956, 'Trigger'], 'workername': ['altair-fifoci', 'Worker'], 'codebase': ['', 'Build'], 'shortrev': ['05ce31', 'Trigger'], 'builderid': [10, 'Builder'], 'repository': ['', 'Build'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'branch': ['refs/pull/14956/head', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'branchname': ['pr-14956', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildnumber': [9509, 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 195453, 'buildsetid': 43823, 'builderid': 10, 'priority': 0, 'claimed': True, 'claimed_at': 1793239788, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239788, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43823, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1793239788, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194867, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, 'patch': None}]}, 'parentbuild': {'buildid': 194867, 'number': 10853, 'builderid': 27, 'buildrequestid': 195447, 'workerid': 10, 'masterid': 1, 'started_at': 1793239215, 'complete_at': 1793239788, '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/9509'}, 'type': 'raw_bb_hook'}
2026-10-29T02:09:48.709167	{'source': 'webserver', 'raw': {'buildid': 194867, 'number': 10853, 'builderid': 27, 'buildrequestid': 195447, 'workerid': 10, 'masterid': 1, 'started_at': 1793239215, 'complete_at': 1793239788, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-14956', 'Change'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'pr_id': [14956, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-ubu-x64', 'Builder'], 'branch': ['refs/pull/14956/head', 'Build'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'basedir': ['/buildbot', 'Worker'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Change'], 'workername': ['ubuntu-lts', 'Worker'], 'repository': ['', 'Build'], 'builddir': ['/buildbot/pr-ubu-x64', 'Worker'], 'warnings-count': [4, 'WarningCountingShellCommand'], 'shortrev': ['05ce31', 'Change'], 'builderid': [27, 'Builder'], 'project': ['', 'Build'], 'got_revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'GitNoBranch'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildnumber': [10853, 'Build']}, 'buildrequest': {'buildrequestid': 195447, 'buildsetid': 43822, 'builderid': 27, 'priority': 0, 'claimed': True, 'claimed_at': 1793239215, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239210, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43822, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793239210, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, '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/10853'}, 'type': 'raw_bb_hook'}
2026-10-29T02:09:34.567345	{'source': 'webserver', 'raw': {'buildid': 194861, 'number': 10858, 'builderid': 22, 'buildrequestid': 195445, 'workerid': 12, 'masterid': 1, 'started_at': 1793239210, 'complete_at': 1793239774, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['05ce31', 'Change'], 'pr_id': [14956, 'Change'], 'buildername': ['pr-android', 'Builder'], 'builderid': [22, 'Builder'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'branchname': ['pr-14956', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'buildnumber': [10858, 'Build'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Change'], 'workername': ['android', 'Worker'], 'branch': ['refs/pull/14956/head', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'builddir': ['/buildbot/pr-android', 'Worker'], 'got_revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'GitNoBranch'], 'basedir': ['/buildbot', 'Worker']}, 'buildrequest': {'buildrequestid': 195445, 'buildsetid': 43822, 'builderid': 22, 'priority': 0, 'claimed': True, 'claimed_at': 1793239210, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239210, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43822, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793239210, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, '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/10858'}, 'type': 'raw_bb_hook'}
2026-10-29T02:08:56.199572	{'source': 'webserver', 'raw': {'buildid': 194859, 'number': 99, 'builderid': 50, 'buildrequestid': 195452, 'workerid': 16, 'masterid': 1, 'started_at': 1793239210, 'complete_at': 1793239736, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'branch': ['refs/pull/14956/head', 'Build'], 'branchname': ['pr-14956', 'Change'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['05ce31', 'Change'], 'buildnumber': [99, 'Build'], 'pr_id': [14956, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'project': ['', 'Build'], 'workername': ['deneb-appimage', 'Worker'], 'buildername': ['pr-appimage-arm64', 'Builder'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'builderid': [50, 'Builder'], 'basedir': ['/buildbot', 'Worker'], 'warnings-count': [11, 'WarningCountingShellCommand'], 'builddir': ['/buildbot/pr-appimage-arm64', 'Worker'], 'got_revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 195452, 'buildsetid': 43822, 'builderid': 50, 'priority': 0, 'claimed': True, 'claimed_at': 1793239210, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239210, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43822, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793239210, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, '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/99'}, 'type': 'raw_bb_hook'}
2026-10-29T02:07:41.093223	{'source': 'webserver', 'raw': {'buildid': 194864, 'number': 5941, 'builderid': 44, 'buildrequestid': 195450, 'workerid': 14, 'masterid': 1, 'started_at': 1793239210, 'complete_at': 1793239660, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'pr_id': [14956, 'Change'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'builderid': [44, 'Builder'], 'branchname': ['pr-14956', 'Change'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Change'], 'shortrev': ['05ce31', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-flatpak-arm64', 'Builder'], 'buildnumber': [5941, 'Build'], 'workername': ['deneb-flatpak', 'Worker'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'builddir': ['/var/lib/flatpak-worker/worker/pr-flatpak-arm64', 'Worker'], 'fm_build_url': ['https://flat-manager.dolphin-emu.org/api/v1/build/13264', 'SetPropertyFromCommand Step'], 'got_revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'GitNoBranch'], 'branch': ['refs/pull/14956/head', 'Build'], 'basedir': ['/var/lib/flatpak-worker/worker', 'Worker'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'codebase': ['', 'Build']}, 'buildrequest': {'buildrequestid': 195450, 'buildsetid': 43822, 'builderid': 44, 'priority': 0, 'claimed': True, 'claimed_at': 1793239210, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239210, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43822, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793239210, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, '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/5941'}, 'type': 'raw_bb_hook'}
2026-10-29T02:07:01.016557	{'source': 'webserver', 'raw': {'buildid': 194865, 'number': 6001, 'builderid': 43, 'buildrequestid': 195449, 'workerid': 13, 'masterid': 1, 'started_at': 1793239211, 'complete_at': 1793239620, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-14956', 'Change'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'headrev': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Change'], 'shortrev': ['05ce31', 'Change'], 'buildername': ['pr-flatpak-x64', 'Builder'], 'project': ['', 'Build'], 'fm_build_url': ['https://flat-manager.dolphin-emu.org/api/v1/build/13263', 'SetPropertyFromCommand Step'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'pr_id': [14956, 'Change'], 'builddir': ['/var/lib/flatpak-worker/worker/pr-flatpak-x64', 'Worker'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'got_revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'GitNoBranch'], 'basedir': ['/var/lib/flatpak-worker/worker', 'Worker'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [43, 'Builder'], 'workername': ['altair-flatpak', 'Worker'], 'buildnumber': [6001, 'Build'], 'branch': ['refs/pull/14956/head', 'Build'], 'revision': ['05ce316fc5671172107bfd39b0e20fc806a3ec08', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build']}, 'buildrequest': {'buildrequestid': 195449, 'buildsetid': 43822, 'builderid': 43, 'priority': 0, 'claimed': True, 'claimed_at': 1793239210, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793239210, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43822, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793239210, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13159, 'branch': 'refs/pull/14956/head', 'revision': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793239210, '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/6001'}, 'type': 'raw_bb_hook'}

Recent 'raw_gh_hook' events

2026-10-29T02:17:36.601328	{'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/11354', 'id': 1504075512, 'node_id': 'PR_kwDOALCn2M5F15eI', 'number': 11354, 'title': 'DSPHLE: Add Desert Bus libasnd ucode variants', 'user': {'login': 'Pokechu22', 'id': 8334194, 'node_id': 'MDQ6VXNlcjgzMzQxOTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8334194?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Pokechu22', 'html_url': 'https://github.com/Pokechu22', 'followers_url': 'https://api.github.com/users/Pokechu22/followers', 'following_url': 'https://api.github.com/users/Pokechu22/following{/other_user}', 'gists_url': 'https://api.github.com/users/Pokechu22/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Pokechu22/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Pokechu22/subscriptions', 'organizations_url': 'https://api.github.com/users/Pokechu22/orgs', 'repos_url': 'https://api.github.com/users/Pokechu22/repos', 'events_url': 'https://api.github.com/users/Pokechu22/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Pokechu22/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'closed', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 2, 'created_at': '2022-12-20T06:57:41Z', 'updated_at': '2026-10-29T02:17:34Z', 'closed_at': '2022-12-20T19:01:22Z', '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/11354', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/11354', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/11354.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/11354.patch', 'merged_at': '2022-12-20T19:01:22Z'}, 'body': "The [Desert Bus homebrew](https://wiibrew.org/wiki/Desert_Bus) uses custom libasnd DSP ucode. Specifically, v1.0.4 and v1.0.5 are modified versions of the ucode that was added to the libogc repo in devkitpro/libogc@b1b8ecab3af3745c8df0b401abd512bdf5fcc011 (although the binary that was added in that commit does not match the code, and a matching binary only started being used in 2020 - see #10763 for my other notes). That libogc patch is attributed to the author of the homebrew, for what it's worth.\r\n\r\n<details><summary>The difference between the libogc code and v1.0.4 is this, which swaps the left and right channels for stereo audio:</summary>\r\n\r\n```diff\r\ndiff --git a/dsp_mixer.s b/dsp_mixer_desert_bus_v1.0.4.s\r\nindex 3b52614..9de5b84 100644\r\n--- a/dsp_mixer.s\r\n+++ b/dsp_mixer_v1.0.4.s\r\n@@ -834,10 +834,10 @@ stereo_8bits:\r\n        lrri $ACL0, @$AR2\r\n        mrr  $ACM0, $ACL0\r\n        andi $ACM0, #0xff00\r\n-       mrr  $AXH1, $ACM0\r\n+       mrr  $AXH0, $ACM0\r\n        lsl  $ACC0, #8\r\n\r\n-       mrr  $AXH0, $ACL0\r\n+       mrr  $AXH1, $ACL0\r\n        jmp     out_samp\r\n\r\n mono_16bits:\r\n@@ -852,8 +852,8 @@ stereo_16bits:\r\n\r\n // 16 bits stereo\r\n\r\n-       lrri $AXH1, @$AR2\r\n        lrri $AXH0, @$AR2\r\n+       lrri $AXH1, @$AR2\r\n        jmp     out_samp\r\n\r\n mono_8bits_unsigned:\r\n@@ -892,10 +892,10 @@ stereo_8bits_unsigned:\r\n        xori $ACM0, #0x8080 // convert unsigned->signed\r\n        mrr  $ACL0, $ACM0\r\n        andi $ACM0, #0xff00\r\n-       mrr  $AXH1, $ACM0\r\n+       mrr  $AXH0, $ACM0\r\n        lsl  $ACC0, #8\r\n\r\n-       mrr  $AXH0, $ACL0\r\n+       mrr  $AXH1, $ACL0\r\n        jmp     out_samp\r\n\r\n stereo_16bits_le:\r\n@@ -908,8 +908,8 @@ stereo_16bits_le:\r\n        lsl  $ACC1, #8 // byteswap\r\n        lsl  $ACC0, #8\r\n\r\n-       mrr  $AXH1, $ACM1\r\n-       mrr  $AXH0, $ACM0\r\n+       mrr  $AXH0, $ACM1\r\n+       mrr  $AXH1, $ACM0\r\n        //jmp   out_samp\r\n\r\n out_samp:\r\n```\r\n\r\n</details><details><summary>The difference between v1.0.4 and v1.0.5 is this:</summary>\r\n\r\n```diff\r\ndiff --git a/dsp_mixer_desert_bus_v1.0.4.s b/dsp_mixer_desert_bus_v1.0.5.s\r\nindex 9de5b84..9f5d428 100644\r\n--- a/dsp_mixer_desert_bus_v1.0.4.s\r\n+++ b/dsp_mixer_desert_bus_v1.0.5.s\r\n@@ -190,6 +190,14 @@ MEM_SND:\tequ\tdata_end ; it need 2048 words (4096 bytes)\r\n \tjmp\texception6\r\n \tjmp\texception7\r\n \r\n+\t; decodes as sbclr #0x04\r\n+\t; (note that sbclr has unused/ignored bits currently, and the canon version would be 1204)\r\n+\tcw 0x1234\r\n+\t; decodes as subr'l $ACC0, $AX1.H : $AC1.M, @$AR0\r\n+\tcw 0x5678\r\n+\t; decodes as bloopi #0x11, 0x2222\r\n+\tcw 0x1111\r\n+\tcw 0x2222\r\n \tlri     $CONFIG, #0xff\r\n \tlri\t$SR,#0\r\n \ts16         \r\n```\r\n\r\n</details>\r\n\r\nv1.0.0 and v1.0.3 seem to be lost. They would have originally existed at https://wiibrew.org/wiki/Media:Desertbus.zip but this was not archived; [both versions were uploaded to this location](https://wiibrew.org/w/index.php?title=Special:Log&page=File%3ADesertbus.zip).\r\n\r\nThis change does not impact desert bus booting; see #11350 for that. I'm creating a separate PR so that it can be reviewed faster.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354/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/11354/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6486057909', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/11354#issuecomment-6486057909', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354', 'id': 6486057909, 'node_id': 'IC_kwDOALCn2M8AAAABgpljtQ', 'user': {'login': 'Pokechu22', 'id': 8334194, 'node_id': 'MDQ6VXNlcjgzMzQxOTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8334194?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Pokechu22', 'html_url': 'https://github.com/Pokechu22', 'followers_url': 'https://api.github.com/users/Pokechu22/followers', 'following_url': 'https://api.github.com/users/Pokechu22/following{/other_user}', 'gists_url': 'https://api.github.com/users/Pokechu22/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Pokechu22/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Pokechu22/subscriptions', 'organizations_url': 'https://api.github.com/users/Pokechu22/orgs', 'repos_url': 'https://api.github.com/users/Pokechu22/repos', 'events_url': 'https://api.github.com/users/Pokechu22/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Pokechu22/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-29T02:17:34Z', 'updated_at': '2026-10-29T02:17:34Z', 'body': "> (I came across this because I'm having issues running Desert Bus on Dolphin and decided to snoop around Github to figure out if it's something I'm doing.)\r\n\r\nSee #11350. I don't entirely remember what I was doing there though.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6486057909/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-29T01:35:27Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15735, 'watchers_count': 15735, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3362, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 485, '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': 3362, 'open_issues': 485, 'watchers': 15735, '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': 'Pokechu22', 'id': 8334194, 'node_id': 'MDQ6VXNlcjgzMzQxOTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8334194?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Pokechu22', 'html_url': 'https://github.com/Pokechu22', 'followers_url': 'https://api.github.com/users/Pokechu22/followers', 'following_url': 'https://api.github.com/users/Pokechu22/following{/other_user}', 'gists_url': 'https://api.github.com/users/Pokechu22/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Pokechu22/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Pokechu22/subscriptions', 'organizations_url': 'https://api.github.com/users/Pokechu22/orgs', 'repos_url': 'https://api.github.com/users/Pokechu22/repos', 'events_url': 'https://api.github.com/users/Pokechu22/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Pokechu22/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-29T02:10:44.626599	{'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'edited', 'changes': {'body': {'from': '>58:48:892 Common/Timer.cpp:230 D[COMMON]: HardwareSleepUntil via MWAITX. TSC: 4392 MHz\r\n\r\nYou should see logs like this in spammed in debug builds while a game is running (COMMON type, DEBUG verbosity).\r\nThe TSC rate will generally align with the frequency of your CPU.\r\n'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14956', 'id': 6050000199, 'node_id': 'PR_kwDOALCn2M8AAAABK5W55Q', 'number': 14956, 'title': 'Common/Timer: Make "Precision Frame Timing" use x86 TPAUSE/MWAITX instead of spin waiting when available.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 3, 'created_at': '2026-10-26T23:29:19Z', 'updated_at': '2026-10-29T02:03:00Z', '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/14956', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14956', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14956.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14956.patch', 'merged_at': None}, 'body': '"Precision Frame Timing" should no longer be as power hungry on x86.\nTSC rate for TPAUSE/MWAITX is read from CPUID when available (Intel) or measured otherwise (AMD).\n\nPlease test Intel CPUs.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956/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/14956/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6485838659', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14956#issuecomment-6485838659', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956', 'id': 6485838659, 'node_id': 'IC_kwDOALCn2M8AAAABgpYLQw', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-29T02:03:00Z', 'updated_at': '2026-10-29T02:10:43Z', 'body': '>58:48:892 Common/Timer.cpp:230 D[COMMON]: HardwareSleepUntil via MWAITX. TSC: 4392 MHz\r\n\r\nYou should now see logs like this in spammed in debug builds while a game is running (COMMON type, DEBUG verbosity).\r\nThe TSC rate will generally align with the frequency of your CPU.\r\n', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6485838659/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-29T01:35:27Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15735, 'watchers_count': 15735, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3362, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 485, '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': 3362, 'open_issues': 485, 'watchers': 15735, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-29T02:03:02.426264	{'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14956', 'id': 6050000199, 'node_id': 'PR_kwDOALCn2M8AAAABK5W55Q', 'number': 14956, 'title': 'Common/Timer: Make "Precision Frame Timing" use x86 TPAUSE/MWAITX instead of spin waiting when available.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 3, 'created_at': '2026-10-26T23:29:19Z', 'updated_at': '2026-10-29T02:03:00Z', '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/14956', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14956', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14956.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14956.patch', 'merged_at': None}, 'body': '"Precision Frame Timing" should no longer be as power hungry on x86.\nTSC rate for TPAUSE/MWAITX is read from CPUID when available (Intel) or measured otherwise (AMD).\n\nPlease test Intel CPUs.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956/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/14956/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6485838659', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14956#issuecomment-6485838659', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956', 'id': 6485838659, 'node_id': 'IC_kwDOALCn2M8AAAABgpYLQw', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-29T02:03:00Z', 'updated_at': '2026-10-29T02:03:00Z', 'body': '>58:48:892 Common/Timer.cpp:230 D[COMMON]: HardwareSleepUntil via MWAITX. TSC: 4392 MHz\r\n\r\nYou should see logs like this in spammed in debug builds while a game is running (COMMON type, DEBUG verbosity).\r\nThe TSC rate will generally align with the frequency of your CPU.\r\n', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6485838659/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-29T01:35:27Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15735, 'watchers_count': 15735, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3362, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 485, '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': 3362, 'open_issues': 485, 'watchers': 15735, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-29T01:59:57.107258	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'synchronize', 'number': 14956, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14956', 'id': 5026200037, 'node_id': 'PR_kwDOALCn2M8AAAABK5W55Q', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14956', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14956.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14956.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956', 'number': 14956, 'state': 'open', 'locked': False, 'title': 'Common/Timer: Make "Precision Frame Timing" use x86 TPAUSE/MWAITX instead of spin waiting when available.', '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': '"Precision Frame Timing" should no longer be as power hungry on x86.\nTSC rate for TPAUSE/MWAITX is read from CPUID when available (Intel) or measured otherwise (AMD).\n\nPlease test Intel CPUs.', 'created_at': '2026-10-26T23:29:19Z', 'updated_at': '2026-10-29T01:59:55Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'b0c24d12692d7ee83febc421d0e02da988bd1bb1', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14956/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14956/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/14956/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/05ce316fc5671172107bfd39b0e20fc806a3ec08', 'head': {'label': 'jordan-woyak:tsc-sleep', 'ref': 'tsc-sleep', 'sha': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 16818408, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNjgxODQwOA==', 'name': 'dolphin', 'full_name': 'jordan-woyak/dolphin', 'private': False, 'owner': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/jordan-woyak/dolphin', 'description': 'Dolphin is a GameCube/Wii emulator, allowing you to play games for these two platforms on PC, with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/jordan-woyak/dolphin', 'forks_url': 'https://api.github.com/repos/jordan-woyak/dolphin/forks', 'keys_url': 'https://api.github.com/repos/jordan-woyak/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/jordan-woyak/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/jordan-woyak/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/jordan-woyak/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/jordan-woyak/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/jordan-woyak/dolphin/events', 'assignees_url': 'https://api.github.com/repos/jordan-woyak/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/jordan-woyak/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/jordan-woyak/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/jordan-woyak/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/jordan-woyak/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/jordan-woyak/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/jordan-woyak/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/jordan-woyak/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/jordan-woyak/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/jordan-woyak/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/jordan-woyak/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/jordan-woyak/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/jordan-woyak/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/jordan-woyak/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/jordan-woyak/dolphin/merges', 'archive_url': 'https://api.github.com/repos/jordan-woyak/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/jordan-woyak/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/jordan-woyak/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/jordan-woyak/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/jordan-woyak/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/jordan-woyak/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/jordan-woyak/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/jordan-woyak/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/jordan-woyak/dolphin/deployments', 'created_at': '2014-02-13T21:50:38Z', 'updated_at': '2026-06-27T21:22:47Z', 'pushed_at': '2026-10-29T01:59:54Z', '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': 529922, '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': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-29T01:35:27Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15735, 'watchers_count': 15735, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3362, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 485, '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': 3362, 'open_issues': 485, 'watchers': 15735, '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/14956'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14956'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14956/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/14956/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/05ce316fc5671172107bfd39b0e20fc806a3ec08'}}, 'author_association': 'MEMBER', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': None, 'rebaseable': None, 'mergeable_state': 'unknown', 'merged_by': None, 'comments': 2, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 3, 'additions': 186, 'deletions': 3, 'changed_files': 5}, 'before': 'c9157c4063cb071ebfb15966d8502c6a6544242b', 'after': '05ce316fc5671172107bfd39b0e20fc806a3ec08', 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-29T01:35:27Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15735, 'watchers_count': 15735, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3362, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 485, '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': 3362, 'open_issues': 485, 'watchers': 15735, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-29T01:48:24.882431	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'assigned', 'number': 14909, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14909', 'id': 4735865502, 'node_id': 'PR_kwDOALCn2M8AAAABGkeSng', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14909', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14909.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14909.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14909', 'number': 14909, 'state': 'open', 'locked': False, 'title': 'WiimoteEmu: improve Swing simulation and support relative input', 'user': {'login': 'endercodezz', 'id': 156020274, 'node_id': 'U_kgDOCUyuMg', 'avatar_url': 'https://avatars.githubusercontent.com/u/156020274?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/endercodezz', 'html_url': 'https://github.com/endercodezz', 'followers_url': 'https://api.github.com/users/endercodezz/followers', 'following_url': 'https://api.github.com/users/endercodezz/following{/other_user}', 'gists_url': 'https://api.github.com/users/endercodezz/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/endercodezz/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/endercodezz/subscriptions', 'organizations_url': 'https://api.github.com/users/endercodezz/orgs', 'repos_url': 'https://api.github.com/users/endercodezz/repos', 'events_url': 'https://api.github.com/users/endercodezz/events{/privacy}', 'received_events_url': 'https://api.github.com/users/endercodezz/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "## Relative input for the existing Swing mappings\n\nSwing currently interprets its direction bindings as a target position and generates a movement using configured outward/return speeds. That does not directly preserve the travel and speed of a relative mouse gesture. This adds an optional **Relative Input** mode to the existing ControllerEmu::Force / Swing group, disabled by default. Existing position-based Swing bindings remain supported and now use the same improved arm model as relative input.\n\nIn relative mode, the same six configurable direction bindings supply displacement per update. Left/right and up/down drive a bounded arm rotation; forward/backward drive translation. Physical travel controls pose, and physical movement speed controls gyro and acceleration. Motion Hold separates gestures from pointer use; it and Recenter are ordinary editable bindings. An empty Motion Hold binding allows continuous motion, so this is usable with gamepad axes/buttons or other expression inputs as well as mice.\n\n### Implementation\n\n- Removes the prototype Mouse Motion group, internal fixed input references, MouseMotionState, independent EmulateMouseMotion path and the later EmulateRelativeSwing path. **EmulateSwing now has one shared solver**: absolute position targets and relative displacements are converted to requested rates, then use the same rate filter, bounded arm pose and sensor derivatives. Swing no longer uses ApproachPositionWithJerk; small absolute movements produce proportionally small acceleration. The existing MotionState, sensor/report pipeline and Swing configuration are reused.\n- Force reads relative bindings without absolute-position reshaping or unit-radius clamping and provides overall/horizontal/vertical sensitivity under **SettingVisibility::Advanced**. Relative input has explicit displacement semantics rather than guessing the device type.\n- Wii Remote emulation no longer inspects backend names, discovers mouse devices, rescales backend-specific values or hardcodes the new feature's mouse input/button names.\n- DInput and XInput2 expose relative mouse axes on the same count/8 scale. XInput2 reuses the existing per-input-channel RelativeInputState to preserve displacement across GUI/emulation polling. Both backends expose a consistent Mouse Side Button alias. Existing smoothed Axis and absolute Cursor inputs are unchanged; DInput clears stale relative samples after acquisition failure.\n- Qt provides **Use Mouse Controlled Swing**, following the existing mouse-pointing preset pattern. This assigns public Swing direction/modifier/recenter bindings and enables Relative Input; it imposes no mouse-only restriction on emulation. It requires relative mouse inputs, currently supported by DInput and XInput2.\n- The shared arm model retains the tested prototype's default scale (0.2 degrees/count), 50 cm arm, 20 ms rate smoothing, 20 rad/s cap, fixed axes and 85-degree bounds. Quaternion differences produce gyro consistent with the actual pose, and arm motion produces tangential/centripetal acceleration. Existing Swing Distance, Angle, Speed and Return Speed constrain the relative model. Nunchuk's Swing uses the same orientation calculation for both input modes.\n- IR and motion sensors share the relative Swing pose. Holding the modifier freezes the Point target; releasing it returns smoothly to pointing without full-arm acceleration. Input gating and update-gap checks discard stale displacement after focus changes/pauses.\n- Serializes the added MotionState fields and gesture flags and increments STATE_VERSION. Older savestates, including prototype savestates, are incompatible. Prototype Mouse Motion profile keys are removed; users apply the Swing preset and reapply any customized sensitivity.\n\nSetup and the manual regression checklist are in **docs/RelativeSwing.md**. There is no game-specific detection, report-format change or console calibration/MotionPlus protocol change. A two-axis mouse cannot independently measure roll or full six-degree-of-freedom motion. macOS/Wayland mouse presets and a Linux/X11 build have not been validated.\n\n### Validation\n\n- The PR author manually tested the previous working prototype in **Wii Sports Resort Golf**, completed a natural mouse backswing/stroke and successfully hit the ball. This establishes the prototype acceptance baseline; **the reworked Swing build still needs a fresh manual Golf regression test**.\n- **Latest manual test:** The PR author successfully retested **Wii Sports Resort Swordplay** with the latest unified Swing model. The previous reworked controls also played very well in Swordplay. Golf regression on the unified model is still pending.\n- Windows x64 MSVC Release build: DolphinQt and unit tests built successfully.\n- 32 Swing regression/integration tests pass. The prototype trajectories now exercise the public Force direction bindings and EmulateSwing, covering direction/intensity, fixed-axis bounds, reversal, closed paths, gyro consistency, recentering, pointer parity/stability and modifier transitions. Additional tests cover generic analog bindings, forward/backward translation, settings persistence, default absolute Swing returning to neutral, proportional acceleration for tiny absolute inputs, absolute gyro/arm consistency and forward velocity/acceleration at target arrival.\n- Full available unit-test executable: 1385 tests pass.\n- Required clang-format 19.1.7 and git diff whitespace checks pass; the accidental FOV degree-symbol corruption has been removed from the final diff.\n\n### Upstream CI\n\nUpstream has not run builds because the contributor is not auto-trusted: `PR not built because endercodezz is not auto-trusted.` A maintainer needs to authorize the CI build. Local validation does not replace upstream Linux/platform checks.\n\n### AI assistance disclosure\n\nThe host-side relative Swing input mapping/motion synthesis, configuration and Qt preset, backend relative-input normalization/channel handling, save-state additions, regression tests and documentation were developed with AI assistance. Existing console report formats, calibration and MotionPlus protocol implementations were not changed. Per CONTRIBUTING.md, the submitting human contributor must review, understand and take responsibility for these changes.\n\n\n", 'created_at': '2026-10-04T16:25:44Z', 'updated_at': '2026-10-29T01:48:23Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '2846288dd73e50195b5dfa07347f716199b17a86', 'assignees': [{'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}], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14909/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14909/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/14909/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/d6db9c0cd3aab7026f6dbda4077ae86406fbeb33', 'head': {'label': 'endercodezz:codex/mouse-wiimote-motion', 'ref': 'codex/mouse-wiimote-motion', 'sha': 'd6db9c0cd3aab7026f6dbda4077ae86406fbeb33', 'user': {'login': 'endercodezz', 'id': 156020274, 'node_id': 'U_kgDOCUyuMg', 'avatar_url': 'https://avatars.githubusercontent.com/u/156020274?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/endercodezz', 'html_url': 'https://github.com/endercodezz', 'followers_url': 'https://api.github.com/users/endercodezz/followers', 'following_url': 'https://api.github.com/users/endercodezz/following{/other_user}', 'gists_url': 'https://api.github.com/users/endercodezz/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/endercodezz/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/endercodezz/subscriptions', 'organizations_url': 'https://api.github.com/users/endercodezz/orgs', 'repos_url': 'https://api.github.com/users/endercodezz/repos', 'events_url': 'https://api.github.com/users/endercodezz/events{/privacy}', 'received_events_url': 'https://api.github.com/users/endercodezz/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1404419038, 'node_id': 'R_kgDOU7W73g', 'name': 'dolphin', 'full_name': 'endercodezz/dolphin', 'private': False, 'owner': {'login': 'endercodezz', 'id': 156020274, 'node_id': 'U_kgDOCUyuMg', 'avatar_url': 'https://avatars.githubusercontent.com/u/156020274?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/endercodezz', 'html_url': 'https://github.com/endercodezz', 'followers_url': 'https://api.github.com/users/endercodezz/followers', 'following_url': 'https://api.github.com/users/endercodezz/following{/other_user}', 'gists_url': 'https://api.github.com/users/endercodezz/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/endercodezz/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/endercodezz/subscriptions', 'organizations_url': 'https://api.github.com/users/endercodezz/orgs', 'repos_url': 'https://api.github.com/users/endercodezz/repos', 'events_url': 'https://api.github.com/users/endercodezz/events{/privacy}', 'received_events_url': 'https://api.github.com/users/endercodezz/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/endercodezz/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/endercodezz/dolphin', 'forks_url': 'https://api.github.com/repos/endercodezz/dolphin/forks', 'keys_url': 'https://api.github.com/repos/endercodezz/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/endercodezz/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/endercodezz/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/endercodezz/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/endercodezz/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/endercodezz/dolphin/events', 'assignees_url': 'https://api.github.com/repos/endercodezz/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/endercodezz/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/endercodezz/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/endercodezz/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/endercodezz/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/endercodezz/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/endercodezz/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/endercodezz/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/endercodezz/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/endercodezz/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/endercodezz/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/endercodezz/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/endercodezz/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/endercodezz/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/endercodezz/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/endercodezz/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/endercodezz/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/endercodezz/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/endercodezz/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/endercodezz/dolphin/merges', 'archive_url': 'https://api.github.com/repos/endercodezz/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/endercodezz/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/endercodezz/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/endercodezz/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/endercodezz/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/endercodezz/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/endercodezz/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/endercodezz/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/endercodezz/dolphin/deployments', 'created_at': '2026-10-04T13:08:09Z', 'updated_at': '2026-10-04T13:08:09Z', 'pushed_at': '2026-10-05T11:36:53Z', 'git_url': 'git://github.com/endercodezz/dolphin.git', 'ssh_url': 'git@github.com:endercodezz/dolphin.git', 'clone_url': 'https://github.com/endercodezz/dolphin.git', 'svn_url': 'https://github.com/endercodezz/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 518398, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': [], 'visibility': 'public', 'forks': 0, 'open_issues': 0, 'watchers': 0, 'default_branch': 'master', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': 'eb236466c4f0ec8bef619add0972353d3996fe6c', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-29T01:35:27Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15735, 'watchers_count': 15735, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3362, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 485, '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': 3362, 'open_issues': 485, 'watchers': 15735, '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/14909'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14909'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14909'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14909/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14909/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/14909/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/d6db9c0cd3aab7026f6dbda4077ae86406fbeb33'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': {'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}, 'active_lock_reason': None, 'merged': False, 'mergeable': True, 'rebaseable': False, 'mergeable_state': 'unstable', 'merged_by': None, 'comments': 3, 'review_comments': 3, 'maintainer_can_modify': True, 'commits': 5, 'additions': 970, 'deletions': 105, 'changed_files': 17}, 'assignee': {'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}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-29T01:35:27Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15735, 'watchers_count': 15735, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3362, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 485, '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': 3362, 'open_issues': 485, 'watchers': 15735, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-28T23:02:12.068420	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'opened', 'number': 14958, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14958', 'id': 5059067500, 'node_id': 'PR_kwDOALCn2M8AAAABLYs-bA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14958', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14958.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14958.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14958', 'number': 14958, 'state': 'open', 'locked': False, 'title': 'Vulkan: Allow custom drivers on Mali devices', 'user': {'login': 'bmdhacks', 'id': 1010987, 'node_id': 'MDQ6VXNlcjEwMTA5ODc=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1010987?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/bmdhacks', 'html_url': 'https://github.com/bmdhacks', 'followers_url': 'https://api.github.com/users/bmdhacks/followers', 'following_url': 'https://api.github.com/users/bmdhacks/following{/other_user}', 'gists_url': 'https://api.github.com/users/bmdhacks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/bmdhacks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/bmdhacks/subscriptions', 'organizations_url': 'https://api.github.com/users/bmdhacks/orgs', 'repos_url': 'https://api.github.com/users/bmdhacks/repos', 'events_url': 'https://api.github.com/users/bmdhacks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/bmdhacks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Custom drivers that target mali kbase API are popping up.  This allows their usage.\nTested on an Anbernic rg476h with malisx2 driver. \nI have read the contributing guidelines.', 'created_at': '2026-10-28T23:02:09Z', 'updated_at': '2026-10-28T23:02:09Z', '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/14958/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14958/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/14958/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/a8fc326a6b0e9945919b174aed09a9639b5b10a0', 'head': {'label': 'bmdhacks:mali-custom-driver', 'ref': 'mali-custom-driver', 'sha': 'a8fc326a6b0e9945919b174aed09a9639b5b10a0', 'user': {'login': 'bmdhacks', 'id': 1010987, 'node_id': 'MDQ6VXNlcjEwMTA5ODc=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1010987?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/bmdhacks', 'html_url': 'https://github.com/bmdhacks', 'followers_url': 'https://api.github.com/users/bmdhacks/followers', 'following_url': 'https://api.github.com/users/bmdhacks/following{/other_user}', 'gists_url': 'https://api.github.com/users/bmdhacks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/bmdhacks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/bmdhacks/subscriptions', 'organizations_url': 'https://api.github.com/users/bmdhacks/orgs', 'repos_url': 'https://api.github.com/users/bmdhacks/repos', 'events_url': 'https://api.github.com/users/bmdhacks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/bmdhacks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1437712343, 'node_id': 'R_kgDOVbG_1w', 'name': 'dolphin', 'full_name': 'bmdhacks/dolphin', 'private': False, 'owner': {'login': 'bmdhacks', 'id': 1010987, 'node_id': 'MDQ6VXNlcjEwMTA5ODc=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1010987?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/bmdhacks', 'html_url': 'https://github.com/bmdhacks', 'followers_url': 'https://api.github.com/users/bmdhacks/followers', 'following_url': 'https://api.github.com/users/bmdhacks/following{/other_user}', 'gists_url': 'https://api.github.com/users/bmdhacks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/bmdhacks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/bmdhacks/subscriptions', 'organizations_url': 'https://api.github.com/users/bmdhacks/orgs', 'repos_url': 'https://api.github.com/users/bmdhacks/repos', 'events_url': 'https://api.github.com/users/bmdhacks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/bmdhacks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/bmdhacks/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/bmdhacks/dolphin', 'forks_url': 'https://api.github.com/repos/bmdhacks/dolphin/forks', 'keys_url': 'https://api.github.com/repos/bmdhacks/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/bmdhacks/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/bmdhacks/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/bmdhacks/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/bmdhacks/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/bmdhacks/dolphin/events', 'assignees_url': 'https://api.github.com/repos/bmdhacks/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/bmdhacks/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/bmdhacks/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/bmdhacks/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/bmdhacks/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/bmdhacks/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/bmdhacks/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/bmdhacks/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/bmdhacks/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/bmdhacks/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/bmdhacks/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/bmdhacks/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/bmdhacks/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/bmdhacks/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/bmdhacks/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/bmdhacks/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/bmdhacks/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/bmdhacks/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/bmdhacks/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/bmdhacks/dolphin/merges', 'archive_url': 'https://api.github.com/repos/bmdhacks/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/bmdhacks/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/bmdhacks/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/bmdhacks/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/bmdhacks/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/bmdhacks/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/bmdhacks/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/bmdhacks/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/bmdhacks/dolphin/deployments', 'created_at': '2026-10-28T22:51:38Z', 'updated_at': '2026-10-28T22:51:38Z', 'pushed_at': '2026-10-28T22:54:43Z', 'git_url': 'git://github.com/bmdhacks/dolphin.git', 'ssh_url': 'git@github.com:bmdhacks/dolphin.git', 'clone_url': 'https://github.com/bmdhacks/dolphin.git', 'svn_url': 'https://github.com/bmdhacks/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 561403, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': [], 'visibility': 'public', 'forks': 0, 'open_issues': 0, 'watchers': 0, 'default_branch': 'master', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T22:39:26Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15733, 'watchers_count': 15733, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3361, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 485, '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': 3361, 'open_issues': 485, 'watchers': 15733, '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/14958'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14958'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14958'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14958/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14958/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/14958/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/a8fc326a6b0e9945919b174aed09a9639b5b10a0'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': None, 'rebaseable': None, 'mergeable_state': 'unknown', 'merged_by': None, 'comments': 0, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 1, 'additions': 10, 'deletions': 2, 'changed_files': 2}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T22:39:26Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15733, 'watchers_count': 15733, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3361, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 485, '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': 3361, 'open_issues': 485, 'watchers': 15733, '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': 'bmdhacks', 'id': 1010987, 'node_id': 'MDQ6VXNlcjEwMTA5ODc=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1010987?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/bmdhacks', 'html_url': 'https://github.com/bmdhacks', 'followers_url': 'https://api.github.com/users/bmdhacks/followers', 'following_url': 'https://api.github.com/users/bmdhacks/following{/other_user}', 'gists_url': 'https://api.github.com/users/bmdhacks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/bmdhacks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/bmdhacks/subscriptions', 'organizations_url': 'https://api.github.com/users/bmdhacks/orgs', 'repos_url': 'https://api.github.com/users/bmdhacks/repos', 'events_url': 'https://api.github.com/users/bmdhacks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/bmdhacks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-28T23:00:04.937818	{'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/11354', 'id': 1504075512, 'node_id': 'PR_kwDOALCn2M5F15eI', 'number': 11354, 'title': 'DSPHLE: Add Desert Bus libasnd ucode variants', 'user': {'login': 'Pokechu22', 'id': 8334194, 'node_id': 'MDQ6VXNlcjgzMzQxOTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8334194?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Pokechu22', 'html_url': 'https://github.com/Pokechu22', 'followers_url': 'https://api.github.com/users/Pokechu22/followers', 'following_url': 'https://api.github.com/users/Pokechu22/following{/other_user}', 'gists_url': 'https://api.github.com/users/Pokechu22/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Pokechu22/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Pokechu22/subscriptions', 'organizations_url': 'https://api.github.com/users/Pokechu22/orgs', 'repos_url': 'https://api.github.com/users/Pokechu22/repos', 'events_url': 'https://api.github.com/users/Pokechu22/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Pokechu22/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'closed', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 1, 'created_at': '2022-12-20T06:57:41Z', 'updated_at': '2026-10-28T23:00:02Z', 'closed_at': '2022-12-20T19:01:22Z', '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/11354', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/11354', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/11354.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/11354.patch', 'merged_at': '2022-12-20T19:01:22Z'}, 'body': "The [Desert Bus homebrew](https://wiibrew.org/wiki/Desert_Bus) uses custom libasnd DSP ucode. Specifically, v1.0.4 and v1.0.5 are modified versions of the ucode that was added to the libogc repo in devkitpro/libogc@b1b8ecab3af3745c8df0b401abd512bdf5fcc011 (although the binary that was added in that commit does not match the code, and a matching binary only started being used in 2020 - see #10763 for my other notes). That libogc patch is attributed to the author of the homebrew, for what it's worth.\r\n\r\n<details><summary>The difference between the libogc code and v1.0.4 is this, which swaps the left and right channels for stereo audio:</summary>\r\n\r\n```diff\r\ndiff --git a/dsp_mixer.s b/dsp_mixer_desert_bus_v1.0.4.s\r\nindex 3b52614..9de5b84 100644\r\n--- a/dsp_mixer.s\r\n+++ b/dsp_mixer_v1.0.4.s\r\n@@ -834,10 +834,10 @@ stereo_8bits:\r\n        lrri $ACL0, @$AR2\r\n        mrr  $ACM0, $ACL0\r\n        andi $ACM0, #0xff00\r\n-       mrr  $AXH1, $ACM0\r\n+       mrr  $AXH0, $ACM0\r\n        lsl  $ACC0, #8\r\n\r\n-       mrr  $AXH0, $ACL0\r\n+       mrr  $AXH1, $ACL0\r\n        jmp     out_samp\r\n\r\n mono_16bits:\r\n@@ -852,8 +852,8 @@ stereo_16bits:\r\n\r\n // 16 bits stereo\r\n\r\n-       lrri $AXH1, @$AR2\r\n        lrri $AXH0, @$AR2\r\n+       lrri $AXH1, @$AR2\r\n        jmp     out_samp\r\n\r\n mono_8bits_unsigned:\r\n@@ -892,10 +892,10 @@ stereo_8bits_unsigned:\r\n        xori $ACM0, #0x8080 // convert unsigned->signed\r\n        mrr  $ACL0, $ACM0\r\n        andi $ACM0, #0xff00\r\n-       mrr  $AXH1, $ACM0\r\n+       mrr  $AXH0, $ACM0\r\n        lsl  $ACC0, #8\r\n\r\n-       mrr  $AXH0, $ACL0\r\n+       mrr  $AXH1, $ACL0\r\n        jmp     out_samp\r\n\r\n stereo_16bits_le:\r\n@@ -908,8 +908,8 @@ stereo_16bits_le:\r\n        lsl  $ACC1, #8 // byteswap\r\n        lsl  $ACC0, #8\r\n\r\n-       mrr  $AXH1, $ACM1\r\n-       mrr  $AXH0, $ACM0\r\n+       mrr  $AXH0, $ACM1\r\n+       mrr  $AXH1, $ACM0\r\n        //jmp   out_samp\r\n\r\n out_samp:\r\n```\r\n\r\n</details><details><summary>The difference between v1.0.4 and v1.0.5 is this:</summary>\r\n\r\n```diff\r\ndiff --git a/dsp_mixer_desert_bus_v1.0.4.s b/dsp_mixer_desert_bus_v1.0.5.s\r\nindex 9de5b84..9f5d428 100644\r\n--- a/dsp_mixer_desert_bus_v1.0.4.s\r\n+++ b/dsp_mixer_desert_bus_v1.0.5.s\r\n@@ -190,6 +190,14 @@ MEM_SND:\tequ\tdata_end ; it need 2048 words (4096 bytes)\r\n \tjmp\texception6\r\n \tjmp\texception7\r\n \r\n+\t; decodes as sbclr #0x04\r\n+\t; (note that sbclr has unused/ignored bits currently, and the canon version would be 1204)\r\n+\tcw 0x1234\r\n+\t; decodes as subr'l $ACC0, $AX1.H : $AC1.M, @$AR0\r\n+\tcw 0x5678\r\n+\t; decodes as bloopi #0x11, 0x2222\r\n+\tcw 0x1111\r\n+\tcw 0x2222\r\n \tlri     $CONFIG, #0xff\r\n \tlri\t$SR,#0\r\n \ts16         \r\n```\r\n\r\n</details>\r\n\r\nv1.0.0 and v1.0.3 seem to be lost. They would have originally existed at https://wiibrew.org/wiki/Media:Desertbus.zip but this was not archived; [both versions were uploaded to this location](https://wiibrew.org/w/index.php?title=Special:Log&page=File%3ADesertbus.zip).\r\n\r\nThis change does not impact desert bus booting; see #11350 for that. I'm creating a separate PR so that it can be reviewed faster.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354/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/11354/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6482900630', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/11354#issuecomment-6482900630', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/11354', 'id': 6482900630, 'node_id': 'IC_kwDOALCn2M8AAAABgmk2lg', 'user': {'login': 'citrusella', 'id': 14182450, 'node_id': 'MDQ6VXNlcjE0MTgyNDUw', 'avatar_url': 'https://avatars.githubusercontent.com/u/14182450?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/citrusella', 'html_url': 'https://github.com/citrusella', 'followers_url': 'https://api.github.com/users/citrusella/followers', 'following_url': 'https://api.github.com/users/citrusella/following{/other_user}', 'gists_url': 'https://api.github.com/users/citrusella/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/citrusella/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/citrusella/subscriptions', 'organizations_url': 'https://api.github.com/users/citrusella/orgs', 'repos_url': 'https://api.github.com/users/citrusella/repos', 'events_url': 'https://api.github.com/users/citrusella/events{/privacy}', 'received_events_url': 'https://api.github.com/users/citrusella/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-28T23:00:02Z', 'updated_at': '2026-10-28T23:00:02Z', 'body': "> v1.0.0 and v1.0.3 seem to be lost. They would have originally existed at https://wiibrew.org/wiki/Media:Desertbus.zip but this was not archived; [both versions were uploaded to this location](https://wiibrew.org/w/index.php?title=Special:Log&page=File%3ADesertbus.zip).\r\n\r\nJust so you know, a lot of times files are still stored on-server when deleted in MediaWiki and can be undeleted by an [administrator](https://wiibrew.org/wiki/Special:ListUsers?username=&group=sysop&wpsubmit=&wpFormIdentifier=mw-listusers-form&limit=50), though they'd have to agree to do it. So it's possible they're not *fully lost*.\r\n\r\n(I came across this because I'm having issues running Desert Bus on Dolphin and decided to snoop around Github to figure out if it's something I'm doing.)", 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6482900630/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T22:39:26Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15733, 'watchers_count': 15733, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3361, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3361, 'open_issues': 484, 'watchers': 15733, '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': 'citrusella', 'id': 14182450, 'node_id': 'MDQ6VXNlcjE0MTgyNDUw', 'avatar_url': 'https://avatars.githubusercontent.com/u/14182450?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/citrusella', 'html_url': 'https://github.com/citrusella', 'followers_url': 'https://api.github.com/users/citrusella/followers', 'following_url': 'https://api.github.com/users/citrusella/following{/other_user}', 'gists_url': 'https://api.github.com/users/citrusella/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/citrusella/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/citrusella/subscriptions', 'organizations_url': 'https://api.github.com/users/citrusella/orgs', 'repos_url': 'https://api.github.com/users/citrusella/repos', 'events_url': 'https://api.github.com/users/citrusella/events{/privacy}', 'received_events_url': 'https://api.github.com/users/citrusella/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-28T22:54:03.817485	{'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5690760986, 'node_id': 'PRR_kwDOALCn2M8AAAABUzIfGg', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': None, 'commit_id': '6a8e52e8216656eb0af6caa019010664202606d5', 'state': 'approved', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14877#pullrequestreview-5690760986', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14877', '_links': {'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14877#pullrequestreview-5690760986'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14877'}}, 'submitted_at': '2026-10-28T22:54:02Z', 'updated_at': '2026-10-28T22:54:02Z', 'author_association': 'MEMBER'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14877', 'id': 4570062946, 'node_id': 'PR_kwDOALCn2M8AAAABEGWgYg', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14877', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14877.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14877.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877', 'number': 14877, 'state': 'open', 'locked': False, 'title': 'PerformanceTracker: Small cleanup, properly use RunningVariance for the standard deviation', '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': '`UpdateStats()` was calculating the standard deviation from the entirety of `m_dt_queue`, which has a noticeable performance impact when the frame rates are very high.\r\nOn a scene so light it runs at 3000 FPS, `UpdateStats()` was taking around 5% of the profiling (at default 1s sample window). Now it doesn\'t.\r\n\r\nI\'m not opening this PR with confidence.\r\nMainly I\'m not a fan of using `MathUtil::RunningVariance<double>` (I mean with `double` specifically, see the comment) since the `static_cast`s are ugly, but I have no better idea other than "the conditions to get an overflow with `DT::rep` are unlikely enough that there\'s no need to care".\r\nBut on the other hand, `double` causes the risk of the measurements getting less and less accurate over time.', 'created_at': '2026-09-18T15:06:30Z', 'updated_at': '2026-10-28T21:55:19Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '1133b2faafd0d5b8f9c306f480fe15e2d9c1b85f', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14877/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14877/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/14877/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/6a8e52e8216656eb0af6caa019010664202606d5', 'head': {'label': 'SuperSamus:performance-tracker-variance-fixup', 'ref': 'performance-tracker-variance-fixup', 'sha': '6a8e52e8216656eb0af6caa019010664202606d5', 'user': {'login': 'SuperSamus', 'id': 40663462, 'node_id': 'MDQ6VXNlcjQwNjYzNDYy', 'avatar_url': 'https://avatars.githubusercontent.com/u/40663462?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/SuperSamus', 'html_url': 'https://github.com/SuperSamus', 'followers_url': 'https://api.github.com/users/SuperSamus/followers', 'following_url': 'https://api.github.com/users/SuperSamus/following{/other_user}', 'gists_url': 'https://api.github.com/users/SuperSamus/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/SuperSamus/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/SuperSamus/subscriptions', 'organizations_url': 'https://api.github.com/users/SuperSamus/orgs', 'repos_url': 'https://api.github.com/users/SuperSamus/repos', 'events_url': 'https://api.github.com/users/SuperSamus/events{/privacy}', 'received_events_url': 'https://api.github.com/users/SuperSamus/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 622923789, 'node_id': 'R_kgDOJSEQDQ', 'name': 'dolphin', 'full_name': 'SuperSamus/dolphin', 'private': False, 'owner': {'login': 'SuperSamus', 'id': 40663462, 'node_id': 'MDQ6VXNlcjQwNjYzNDYy', 'avatar_url': 'https://avatars.githubusercontent.com/u/40663462?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/SuperSamus', 'html_url': 'https://github.com/SuperSamus', 'followers_url': 'https://api.github.com/users/SuperSamus/followers', 'following_url': 'https://api.github.com/users/SuperSamus/following{/other_user}', 'gists_url': 'https://api.github.com/users/SuperSamus/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/SuperSamus/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/SuperSamus/subscriptions', 'organizations_url': 'https://api.github.com/users/SuperSamus/orgs', 'repos_url': 'https://api.github.com/users/SuperSamus/repos', 'events_url': 'https://api.github.com/users/SuperSamus/events{/privacy}', 'received_events_url': 'https://api.github.com/users/SuperSamus/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/SuperSamus/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/SuperSamus/dolphin', 'forks_url': 'https://api.github.com/repos/SuperSamus/dolphin/forks', 'keys_url': 'https://api.github.com/repos/SuperSamus/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/SuperSamus/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/SuperSamus/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/SuperSamus/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/SuperSamus/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/SuperSamus/dolphin/events', 'assignees_url': 'https://api.github.com/repos/SuperSamus/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/SuperSamus/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/SuperSamus/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/SuperSamus/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/SuperSamus/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/SuperSamus/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/SuperSamus/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/SuperSamus/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/SuperSamus/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/SuperSamus/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/SuperSamus/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/SuperSamus/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/SuperSamus/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/SuperSamus/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/SuperSamus/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/SuperSamus/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/SuperSamus/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/SuperSamus/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/SuperSamus/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/SuperSamus/dolphin/merges', 'archive_url': 'https://api.github.com/repos/SuperSamus/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/SuperSamus/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/SuperSamus/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/SuperSamus/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/SuperSamus/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/SuperSamus/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/SuperSamus/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/SuperSamus/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/SuperSamus/dolphin/deployments', 'created_at': '2023-04-03T10:43:10Z', 'updated_at': '2026-10-25T14:44:37Z', 'pushed_at': '2026-10-28T16:14:19Z', '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': 520795, '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': 'ee018d00e60b9eb727489908a8daec5c537f44a8', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T22:39:26Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15733, 'watchers_count': 15733, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3361, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3361, 'open_issues': 484, 'watchers': 15733, '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/14877'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14877'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14877/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/14877/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/6a8e52e8216656eb0af6caa019010664202606d5'}}, 'author_association': 'CONTRIBUTOR', '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-10-28T22:39:26Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15733, 'watchers_count': 15733, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3361, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3361, 'open_issues': 484, 'watchers': 15733, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-28T22:10:44.892130	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'edited', 'number': 14774, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14774', 'id': 4155273629, 'node_id': 'PR_kwDOALCn2M73rHGd', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14774', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14774.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14774.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14774', 'number': 14774, 'state': 'open', 'locked': False, 'title': 'Refactor the GameCube microphone code', '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 PR replaces https://github.com/dolphin-emu/dolphin/pull/14203 and is based on https://github.com/dolphin-emu/dolphin/pull/14772. It deduplicates the Wii and GameCube microphones code. I'll put it as a draft for now, as I'd like to implement some more features:\r\n - [x] Move the code to AudioCommon\r\n - [x] Refactor the GC microphone code\r\n - [ ] Check the GC microphone code for regressions/improvements\r\n   * _I haven't seen nor heard regression so far_\r\n - [x] Allow to configure the GC microphone device (like WiiSpeak/Logitech USB)\r\n - [ ] Ensure 2 GC microphones can work simultaneously\r\n\r\nI'm able to test the following GC games:\r\n - [ ] Karaoke Revolution Party\r\n    - You can hear your voice back\r\n    - It supports 2 microphones when playing duet songs\r\n - [ ] Mario Party 6\r\n - [ ] Mario Party 7\r\n\r\nI also have several Wii games compatible with the Wii Speak and USB microphones.\r\n\r\nReady to be reviewed & tested.", 'created_at': '2026-07-28T21:29:25Z', 'updated_at': '2026-10-28T22:10:41Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '43b3c8037cb43b91c082dc3df28ea88e72ce439a', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': True, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14774/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14774/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/14774/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e24e65914b2fd310cfe72beeb590923b54f0e329', 'head': {'label': 'sepalani:mic-dedup2', 'ref': 'mic-dedup2', 'sha': 'e24e65914b2fd310cfe72beeb590923b54f0e329', '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}, 'repo': {'id': 36597702, 'node_id': 'MDEwOlJlcG9zaXRvcnkzNjU5NzcwMg==', 'name': 'dolphin', 'full_name': 'sepalani/dolphin', 'private': False, 'owner': {'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}, 'html_url': 'https://github.com/sepalani/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/sepalani/dolphin', 'forks_url': 'https://api.github.com/repos/sepalani/dolphin/forks', 'keys_url': 'https://api.github.com/repos/sepalani/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/sepalani/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/sepalani/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/sepalani/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/sepalani/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/sepalani/dolphin/events', 'assignees_url': 'https://api.github.com/repos/sepalani/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/sepalani/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/sepalani/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/sepalani/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/sepalani/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/sepalani/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/sepalani/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/sepalani/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/sepalani/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/sepalani/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/sepalani/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/sepalani/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/sepalani/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/sepalani/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/sepalani/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/sepalani/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/sepalani/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/sepalani/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/sepalani/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/sepalani/dolphin/merges', 'archive_url': 'https://api.github.com/repos/sepalani/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/sepalani/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/sepalani/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/sepalani/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/sepalani/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/sepalani/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/sepalani/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/sepalani/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/sepalani/dolphin/deployments', 'created_at': '2015-05-31T10:13:24Z', 'updated_at': '2026-10-23T11:01:33Z', 'pushed_at': '2026-10-28T22:06:26Z', 'git_url': 'git://github.com/sepalani/dolphin.git', 'ssh_url': 'git@github.com:sepalani/dolphin.git', 'clone_url': 'https://github.com/sepalani/dolphin.git', 'svn_url': 'https://github.com/sepalani/dolphin', 'homepage': 'https://dolphin-emu.org/', 'size': 523737, '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': '22b581c670d84e60d11c1b02d38e1c7789ae2dfa', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T20:58:48Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15732, 'watchers_count': 15732, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15732, '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/14774'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14774'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14774'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14774/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14774/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/14774/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e24e65914b2fd310cfe72beeb590923b54f0e329'}}, 'author_association': 'CONTRIBUTOR', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': True, 'rebaseable': False, 'mergeable_state': 'unstable', 'merged_by': None, 'comments': 0, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 4, 'additions': 325, 'deletions': 363, 'changed_files': 21}, 'changes': {'body': {'from': "This PR replaces https://github.com/dolphin-emu/dolphin/pull/14203 and is based on https://github.com/dolphin-emu/dolphin/pull/14772. It deduplicates the Wii and GameCube microphones code. I'll put it as a draft for now, as I'd like to implement some more features:\r\n - [x] Move the code to AudioCommon\r\n - [x] Refactor the GC microphone code\r\n - [ ] Check the GC microphone code for regressions/improvements\r\n   * _I haven't seen nor heard regression so far_\r\n - [ ] Allow to configure the GC microphone device (like WiiSpeak/Logitech USB)\r\n - [ ] Ensure 2 GC microphones can work simultaneously\r\n\r\nI'm able to test the following GC games:\r\n - [ ] Karaoke Revolution Party\r\n    - You can hear your voice back\r\n    - It supports 2 microphones when playing duet songs\r\n - [ ] Mario Party 6\r\n - [ ] Mario Party 7\r\n\r\nI also have several Wii games compatible with the Wii Speak and USB microphones.\r\n\r\nReady to be reviewed & tested."}}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T20:58:48Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15732, 'watchers_count': 15732, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15732, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'sepalani', 'id': 7890055, 'node_id': 'MDQ6VXNlcjc4OTAwNTU=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7890055?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/sepalani', 'html_url': 'https://github.com/sepalani', 'followers_url': 'https://api.github.com/users/sepalani/followers', 'following_url': 'https://api.github.com/users/sepalani/following{/other_user}', 'gists_url': 'https://api.github.com/users/sepalani/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/sepalani/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/sepalani/subscriptions', 'organizations_url': 'https://api.github.com/users/sepalani/orgs', 'repos_url': 'https://api.github.com/users/sepalani/repos', 'events_url': 'https://api.github.com/users/sepalani/events{/privacy}', 'received_events_url': 'https://api.github.com/users/sepalani/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-28T22:06:29.730575	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'synchronize', 'number': 14774, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14774', 'id': 4155273629, 'node_id': 'PR_kwDOALCn2M73rHGd', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14774', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14774.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14774.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14774', 'number': 14774, 'state': 'open', 'locked': False, 'title': 'Refactor the GameCube microphone code', '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 PR replaces https://github.com/dolphin-emu/dolphin/pull/14203 and is based on https://github.com/dolphin-emu/dolphin/pull/14772. It deduplicates the Wii and GameCube microphones code. I'll put it as a draft for now, as I'd like to implement some more features:\r\n - [x] Move the code to AudioCommon\r\n - [x] Refactor the GC microphone code\r\n - [ ] Check the GC microphone code for regressions/improvements\r\n   * _I haven't seen nor heard regression so far_\r\n - [ ] Allow to configure the GC microphone device (like WiiSpeak/Logitech USB)\r\n - [ ] Ensure 2 GC microphones can work simultaneously\r\n\r\nI'm able to test the following GC games:\r\n - [ ] Karaoke Revolution Party\r\n    - You can hear your voice back\r\n    - It supports 2 microphones when playing duet songs\r\n - [ ] Mario Party 6\r\n - [ ] Mario Party 7\r\n\r\nI also have several Wii games compatible with the Wii Speak and USB microphones.\r\n\r\nReady to be reviewed & tested.", 'created_at': '2026-07-28T21:29:25Z', 'updated_at': '2026-10-28T22:06:27Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'eb8203c78b28f535564a096a0ed53137392be1ea', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': True, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14774/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14774/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/14774/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e24e65914b2fd310cfe72beeb590923b54f0e329', 'head': {'label': 'sepalani:mic-dedup2', 'ref': 'mic-dedup2', 'sha': 'e24e65914b2fd310cfe72beeb590923b54f0e329', '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}, 'repo': {'id': 36597702, 'node_id': 'MDEwOlJlcG9zaXRvcnkzNjU5NzcwMg==', 'name': 'dolphin', 'full_name': 'sepalani/dolphin', 'private': False, 'owner': {'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}, 'html_url': 'https://github.com/sepalani/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/sepalani/dolphin', 'forks_url': 'https://api.github.com/repos/sepalani/dolphin/forks', 'keys_url': 'https://api.github.com/repos/sepalani/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/sepalani/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/sepalani/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/sepalani/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/sepalani/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/sepalani/dolphin/events', 'assignees_url': 'https://api.github.com/repos/sepalani/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/sepalani/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/sepalani/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/sepalani/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/sepalani/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/sepalani/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/sepalani/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/sepalani/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/sepalani/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/sepalani/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/sepalani/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/sepalani/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/sepalani/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/sepalani/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/sepalani/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/sepalani/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/sepalani/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/sepalani/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/sepalani/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/sepalani/dolphin/merges', 'archive_url': 'https://api.github.com/repos/sepalani/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/sepalani/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/sepalani/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/sepalani/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/sepalani/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/sepalani/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/sepalani/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/sepalani/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/sepalani/dolphin/deployments', 'created_at': '2015-05-31T10:13:24Z', 'updated_at': '2026-10-23T11:01:33Z', 'pushed_at': '2026-10-28T22:06:26Z', 'git_url': 'git://github.com/sepalani/dolphin.git', 'ssh_url': 'git@github.com:sepalani/dolphin.git', 'clone_url': 'https://github.com/sepalani/dolphin.git', 'svn_url': 'https://github.com/sepalani/dolphin', 'homepage': 'https://dolphin-emu.org/', 'size': 523737, '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': '22b581c670d84e60d11c1b02d38e1c7789ae2dfa', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T20:58:48Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15732, 'watchers_count': 15732, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15732, '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/14774'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14774'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14774'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14774/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14774/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/14774/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e24e65914b2fd310cfe72beeb590923b54f0e329'}}, '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': 4, 'additions': 325, 'deletions': 363, 'changed_files': 21}, 'before': 'a8a1d092f7c76fac5f54c9e7cf3c6438c8e4117d', 'after': 'e24e65914b2fd310cfe72beeb590923b54f0e329', 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T20:58:48Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15732, 'watchers_count': 15732, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15732, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'sepalani', 'id': 7890055, 'node_id': 'MDQ6VXNlcjc4OTAwNTU=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7890055?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/sepalani', 'html_url': 'https://github.com/sepalani', 'followers_url': 'https://api.github.com/users/sepalani/followers', 'following_url': 'https://api.github.com/users/sepalani/following{/other_user}', 'gists_url': 'https://api.github.com/users/sepalani/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/sepalani/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/sepalani/subscriptions', 'organizations_url': 'https://api.github.com/users/sepalani/orgs', 'repos_url': 'https://api.github.com/users/sepalani/repos', 'events_url': 'https://api.github.com/users/sepalani/events{/privacy}', 'received_events_url': 'https://api.github.com/users/sepalani/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-28T21:55:20.817975	{'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'edited', 'changes': {'body': {'from': 'Why do math, when you can just test out a bad-case scenario?\r\n\r\nTesting a code that creates a random array of very unstable frametimes, and a few stutters randomly inserted:\r\n```cpp\r\nstatic constexpr std::size_t MAX_DT_QUEUE_SIZE = 4096;\r\n\r\nstatic constexpr double ACTUAL_FRAME_DT = 1.0 / 60.0;\r\nstatic constexpr double ACTUAL_FRAME_ERR = 0.002;\r\nstatic constexpr double STUTTER_FRAME_DT = 0.55;\r\nstatic constexpr double STUTTER_FRAME_ERR = 0.5;\r\n\r\n// If the game actually ran with no stutters at 60 FPS (and the stutter frames were just an illusion\r\n// for Dolphin), this would take 80 days.\r\nstatic constexpr std::size_t TOTAL_FRAMES = MAX_DT_QUEUE_SIZE * 100000;\r\nstatic constexpr std::size_t AVG_N_FRAMES_PER_STUTTER = TOTAL_FRAMES / 3600;\r\n```\r\n\r\nHow close is the final running std, compared to calculating it from scratch in the queue?\r\nRunning a few times, and...\r\n```\r\nActual std is 0.0011613785790244263 seconds\r\nRunning std   0.0011613785791494136, diff 1.2498726012499795e-13\r\n\r\nActual std is 0.0011512422871999381 seconds\r\nRunning std   0.0011512422871978918, diff 2.046323180349141e-15\r\n\r\nActual std is 0.005481212866823841 seconds\r\nRunning std   0.00548121286682146, diff 2.3809079707781677e-15\r\n\r\nActual std is 0.00969206635198026 seconds\r\nRunning std   0.009692066351979268, diff 9.922618282587337e-16\r\n``` \r\n\r\nSo... I suppose nothing to worry about.\r\n\r\n<details>\r\n<summary>Code used for testing</summary>\r\n```cpp\r\n#include <algorithm>\r\n#include <cassert>\r\n#include <cmath>\r\n#include <concepts>\r\n#include <cstddef>\r\n#include <print>\r\n#include <random>\r\n#include <ranges>\r\n#include <span>\r\n#include <vector>\r\n\r\ntemplate <typename T>\r\nclass RunningMean\r\n{\r\npublic:\r\n  constexpr void Clear() { *this = {}; }\r\n\r\n  constexpr void Push(T x) { m_mean = m_mean + (x - m_mean) / ++m_count; }\r\n  constexpr void Pop(T x)\r\n  {\r\n    if (m_count <= 1)\r\n    {\r\n      Clear();\r\n      return;\r\n    }\r\n    m_mean = m_mean - (x - m_mean) / --m_count;\r\n  }\r\n\r\n  constexpr size_t Count() const { return m_count; }\r\n  constexpr T Mean() const { return m_mean; }\r\n  constexpr T Total() const { return m_mean * m_count; }\r\n\r\nprivate:\r\n  size_t m_count = 0;\r\n  T m_mean{};\r\n};\r\n\r\ntemplate <typename T>\r\nclass RunningVariance\r\n{\r\npublic:\r\n  constexpr void Clear() { *this = {}; }\r\n\r\n  constexpr void Push(T x)\r\n  {\r\n    const auto old_mean = m_running_mean.Mean();\r\n    m_running_mean.Push(x);\r\n    m_variance += (x - old_mean) * (x - m_running_mean.Mean());\r\n  }\r\n  constexpr void Pop(T x)\r\n  {\r\n    if (m_running_mean.Count() <= 1)\r\n    {\r\n      Clear();\r\n      return;\r\n    }\r\n\r\n    const T old_mean = m_running_mean.Mean();\r\n    m_running_mean.Pop(x);\r\n    m_variance -= (x - old_mean) * (x - m_running_mean.Mean());\r\n  }\r\n\r\n  constexpr size_t Count() const { return m_running_mean.Count(); }\r\n  constexpr T Mean() const { return m_running_mean.Mean(); }\r\n  constexpr T Total() const { return m_running_mean.Total(); }\r\n\r\n  constexpr T Variance() const { return m_variance / (Count() - 1); }\r\n  T StandardDeviation() const { return std::sqrt(Variance()); }\r\n\r\n  constexpr T PopulationVariance() const { return m_variance / Count(); }\r\n  T PopulationStandardDeviation() const { return std::sqrt(PopulationVariance()); }\r\n\r\nprivate:\r\n  RunningMean<T> m_running_mean;\r\n  T m_variance{};\r\n};\r\n\r\n// Function slopped with AI\r\ntemplate <std::floating_point T>\r\nvoid populate_random(std::span<T> arr, T C, T e, T B, T d, std::size_t M, std::mt19937& rng)\r\n{\r\n  std::uniform_real_distribution<T> U(T{-1}, T{1});\r\n  auto jitter = [&](T center, T limit) { return center + U(rng) * limit; };\r\n\r\n  // 1) Fill everything with C ± e\r\n  std::ranges::generate(arr, [&] { return jitter(C, e); });\r\n\r\n  // 2) Sample M distinct indices, then overwrite those with B ± d\r\n  std::vector<std::size_t> picked;\r\n  picked.reserve(M);\r\n  std::ranges::sample(std::views::iota(std::size_t{0}, arr.size()), std::back_inserter(picked), M,\r\n                      rng);\r\n\r\n  for (std::size_t i : picked)\r\n    arr[i] = jitter(B, d);\r\n}\r\n\r\nstatic constexpr std::size_t MAX_DT_QUEUE_SIZE = 4096;\r\n\r\nstatic constexpr double ACTUAL_FRAME_DT = 1.0 / 60.0;\r\nstatic constexpr double ACTUAL_FRAME_ERR = 0.002;\r\nstatic constexpr double STUTTER_FRAME_DT = 0.55;\r\nstatic constexpr double STUTTER_FRAME_ERR = 0.5;\r\n\r\n// If the game actually ran with no stutters at 60 FPS (and the stutter frames were just an illusion\r\n// for Dolphin), this would take 80 days.\r\nstatic constexpr std::size_t TOTAL_FRAMES = MAX_DT_QUEUE_SIZE * 100000;\r\nstatic constexpr std::size_t AVG_N_FRAMES_PER_STUTTER = TOTAL_FRAMES / 3600;\r\n\r\nint main()\r\n{\r\n  std::mt19937 rng(std::random_device{}());\r\n  // I apologise for allocating an entire vector (which would only be necessary for the final span)\r\n  // instead of generating the random dt on the fly. I\'m lazy.\r\n  std::vector<double> dts(TOTAL_FRAMES);\r\n  populate_random(std::span(dts), ACTUAL_FRAME_DT, ACTUAL_FRAME_ERR, STUTTER_FRAME_DT,\r\n                  STUTTER_FRAME_ERR, AVG_N_FRAMES_PER_STUTTER, rng);\r\n\r\n  const auto end_span = std::span(dts).last(MAX_DT_QUEUE_SIZE);\r\n  const double avg = std::ranges::fold_left(end_span, 0.0, std::plus{}) / MAX_DT_QUEUE_SIZE;\r\n  const double accurate_std = std::sqrt(\r\n      std::ranges::fold_left(\r\n          end_span, 0.0, [avg](double s2, double dt) { return s2 + ((dt - avg) * (dt - avg)); }) /\r\n      (MAX_DT_QUEUE_SIZE - 1));\r\n\r\n  std::println("Actual std is {} seconds", accurate_std);\r\n\r\n  RunningVariance<double> running_variance;\r\n\r\n  for (double dt : std::span(dts).first(MAX_DT_QUEUE_SIZE))\r\n  {\r\n    running_variance.Push(dt);\r\n  }\r\n  for (std::size_t i = MAX_DT_QUEUE_SIZE; i < dts.size(); ++i)\r\n  {\r\n    running_variance.Pop(dts[i - MAX_DT_QUEUE_SIZE]);\r\n    running_variance.Push(dts[i]);\r\n  }\r\n\r\n  std::println("Running std   {}, diff {}", running_variance.StandardDeviation(),\r\n               std::abs(accurate_std - running_variance.StandardDeviation()));\r\n}\r\n```\r\n</details>'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14877', 'id': 5501153399, 'node_id': 'PR_kwDOALCn2M8AAAABEGWgYg', 'number': 14877, 'title': 'PerformanceTracker: Small cleanup, properly use RunningVariance for the standard deviation', '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}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 5, 'created_at': '2026-09-18T15:06:30Z', 'updated_at': '2026-10-28T21:46:00Z', '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/14877', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14877', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14877.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14877.patch', 'merged_at': None}, 'body': '`UpdateStats()` was calculating the standard deviation from the entirety of `m_dt_queue`, which has a noticeable performance impact when the frame rates are very high.\r\nOn a scene so light it runs at 3000 FPS, `UpdateStats()` was taking around 5% of the profiling (at default 1s sample window). Now it doesn\'t.\r\n\r\nI\'m not opening this PR with confidence.\r\nMainly I\'m not a fan of using `MathUtil::RunningVariance<double>` (I mean with `double` specifically, see the comment) since the `static_cast`s are ugly, but I have no better idea other than "the conditions to get an overflow with `DT::rep` are unlikely enough that there\'s no need to care".\r\nBut on the other hand, `double` causes the risk of the measurements getting less and less accurate over time.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/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/14877/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6481465058', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14877#issuecomment-6481465058', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877', 'id': 6481465058, 'node_id': 'IC_kwDOALCn2M8AAAABglNO4g', 'user': {'login': 'SuperSamus', 'id': 40663462, 'node_id': 'MDQ6VXNlcjQwNjYzNDYy', 'avatar_url': 'https://avatars.githubusercontent.com/u/40663462?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/SuperSamus', 'html_url': 'https://github.com/SuperSamus', 'followers_url': 'https://api.github.com/users/SuperSamus/followers', 'following_url': 'https://api.github.com/users/SuperSamus/following{/other_user}', 'gists_url': 'https://api.github.com/users/SuperSamus/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/SuperSamus/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/SuperSamus/subscriptions', 'organizations_url': 'https://api.github.com/users/SuperSamus/orgs', 'repos_url': 'https://api.github.com/users/SuperSamus/repos', 'events_url': 'https://api.github.com/users/SuperSamus/events{/privacy}', 'received_events_url': 'https://api.github.com/users/SuperSamus/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-28T21:45:59Z', 'updated_at': '2026-10-28T21:55:19Z', 'body': 'Why do math, when you can just test out a bad-case scenario?\r\n\r\nTesting a code that creates a random array of very unstable frametimes, and a few stutters randomly inserted:\r\n```cpp\r\nstatic constexpr std::size_t MAX_DT_QUEUE_SIZE = 4096;\r\n\r\nstatic constexpr double ACTUAL_FRAME_DT = 1.0 / 60.0;\r\nstatic constexpr double ACTUAL_FRAME_ERR = 0.002;\r\nstatic constexpr double STUTTER_FRAME_DT = 0.55;\r\nstatic constexpr double STUTTER_FRAME_ERR = 0.5;\r\n\r\n// If the game actually ran with no stutters at 60 FPS (and the stutter frames were just an illusion\r\n// for Dolphin), this would take 80 days.\r\nstatic constexpr std::size_t TOTAL_FRAMES = MAX_DT_QUEUE_SIZE * 100000;\r\nstatic constexpr std::size_t AVG_N_FRAMES_PER_STUTTER = TOTAL_FRAMES / 3600;\r\n```\r\n\r\nHow close is the final running std, compared to calculating it from scratch in the queue?\r\nRunning a few times, and...\r\n```\r\nActual std is 0.0011613785790244263 seconds\r\nRunning std   0.0011613785791494136, diff 1.2498726012499795e-13\r\n\r\nActual std is 0.0011512422871999381 seconds\r\nRunning std   0.0011512422871978918, diff 2.046323180349141e-15\r\n\r\nActual std is 0.005481212866823841 seconds\r\nRunning std   0.00548121286682146, diff 2.3809079707781677e-15\r\n\r\nActual std is 0.00969206635198026 seconds\r\nRunning std   0.009692066351979268, diff 9.922618282587337e-16\r\n``` \r\n\r\nSo... I suppose nothing to worry about.\r\n\r\n<details>\r\n<summary>Code used for testing</summary>\r\n\r\n```cpp\r\n#include <algorithm>\r\n#include <cassert>\r\n#include <cmath>\r\n#include <concepts>\r\n#include <cstddef>\r\n#include <print>\r\n#include <random>\r\n#include <ranges>\r\n#include <span>\r\n#include <vector>\r\n\r\ntemplate <typename T>\r\nclass RunningMean\r\n{\r\npublic:\r\n  constexpr void Clear() { *this = {}; }\r\n\r\n  constexpr void Push(T x) { m_mean = m_mean + (x - m_mean) / ++m_count; }\r\n  constexpr void Pop(T x)\r\n  {\r\n    if (m_count <= 1)\r\n    {\r\n      Clear();\r\n      return;\r\n    }\r\n    m_mean = m_mean - (x - m_mean) / --m_count;\r\n  }\r\n\r\n  constexpr size_t Count() const { return m_count; }\r\n  constexpr T Mean() const { return m_mean; }\r\n  constexpr T Total() const { return m_mean * m_count; }\r\n\r\nprivate:\r\n  size_t m_count = 0;\r\n  T m_mean{};\r\n};\r\n\r\ntemplate <typename T>\r\nclass RunningVariance\r\n{\r\npublic:\r\n  constexpr void Clear() { *this = {}; }\r\n\r\n  constexpr void Push(T x)\r\n  {\r\n    const auto old_mean = m_running_mean.Mean();\r\n    m_running_mean.Push(x);\r\n    m_variance += (x - old_mean) * (x - m_running_mean.Mean());\r\n  }\r\n  constexpr void Pop(T x)\r\n  {\r\n    if (m_running_mean.Count() <= 1)\r\n    {\r\n      Clear();\r\n      return;\r\n    }\r\n\r\n    const T old_mean = m_running_mean.Mean();\r\n    m_running_mean.Pop(x);\r\n    m_variance -= (x - old_mean) * (x - m_running_mean.Mean());\r\n  }\r\n\r\n  constexpr size_t Count() const { return m_running_mean.Count(); }\r\n  constexpr T Mean() const { return m_running_mean.Mean(); }\r\n  constexpr T Total() const { return m_running_mean.Total(); }\r\n\r\n  constexpr T Variance() const { return m_variance / (Count() - 1); }\r\n  T StandardDeviation() const { return std::sqrt(Variance()); }\r\n\r\n  constexpr T PopulationVariance() const { return m_variance / Count(); }\r\n  T PopulationStandardDeviation() const { return std::sqrt(PopulationVariance()); }\r\n\r\nprivate:\r\n  RunningMean<T> m_running_mean;\r\n  T m_variance{};\r\n};\r\n\r\n// Function slopped with AI\r\ntemplate <std::floating_point T>\r\nvoid populate_random(std::span<T> arr, T C, T e, T B, T d, std::size_t M, std::mt19937& rng)\r\n{\r\n  std::uniform_real_distribution<T> U(T{-1}, T{1});\r\n  auto jitter = [&](T center, T limit) { return center + U(rng) * limit; };\r\n\r\n  // 1) Fill everything with C ± e\r\n  std::ranges::generate(arr, [&] { return jitter(C, e); });\r\n\r\n  // 2) Sample M distinct indices, then overwrite those with B ± d\r\n  std::vector<std::size_t> picked;\r\n  picked.reserve(M);\r\n  std::ranges::sample(std::views::iota(std::size_t{0}, arr.size()), std::back_inserter(picked), M,\r\n                      rng);\r\n\r\n  for (std::size_t i : picked)\r\n    arr[i] = jitter(B, d);\r\n}\r\n\r\nstatic constexpr std::size_t MAX_DT_QUEUE_SIZE = 4096;\r\n\r\nstatic constexpr double ACTUAL_FRAME_DT = 1.0 / 60.0;\r\nstatic constexpr double ACTUAL_FRAME_ERR = 0.002;\r\nstatic constexpr double STUTTER_FRAME_DT = 0.55;\r\nstatic constexpr double STUTTER_FRAME_ERR = 0.5;\r\n\r\n// If the game actually ran with no stutters at 60 FPS (and the stutter frames were just an illusion\r\n// for Dolphin), this would take 80 days.\r\nstatic constexpr std::size_t TOTAL_FRAMES = MAX_DT_QUEUE_SIZE * 100000;\r\nstatic constexpr std::size_t AVG_N_FRAMES_PER_STUTTER = TOTAL_FRAMES / 3600;\r\n\r\nint main()\r\n{\r\n  std::mt19937 rng(std::random_device{}());\r\n  // I apologise for allocating an entire vector (which would only be necessary for the final span)\r\n  // instead of generating the random dt on the fly. I\'m lazy.\r\n  std::vector<double> dts(TOTAL_FRAMES);\r\n  populate_random(std::span(dts), ACTUAL_FRAME_DT, ACTUAL_FRAME_ERR, STUTTER_FRAME_DT,\r\n                  STUTTER_FRAME_ERR, AVG_N_FRAMES_PER_STUTTER, rng);\r\n\r\n  const auto end_span = std::span(dts).last(MAX_DT_QUEUE_SIZE);\r\n  const double avg = std::ranges::fold_left(end_span, 0.0, std::plus{}) / MAX_DT_QUEUE_SIZE;\r\n  const double accurate_std = std::sqrt(\r\n      std::ranges::fold_left(\r\n          end_span, 0.0, [avg](double s2, double dt) { return s2 + ((dt - avg) * (dt - avg)); }) /\r\n      (MAX_DT_QUEUE_SIZE - 1));\r\n\r\n  std::println("Actual std is {} seconds", accurate_std);\r\n\r\n  RunningVariance<double> running_variance;\r\n\r\n  for (double dt : std::span(dts).first(MAX_DT_QUEUE_SIZE))\r\n  {\r\n    running_variance.Push(dt);\r\n  }\r\n  for (std::size_t i = MAX_DT_QUEUE_SIZE; i < dts.size(); ++i)\r\n  {\r\n    running_variance.Pop(dts[i - MAX_DT_QUEUE_SIZE]);\r\n    running_variance.Push(dts[i]);\r\n  }\r\n\r\n  std::println("Running std   {}, diff {}", running_variance.StandardDeviation(),\r\n               std::abs(accurate_std - running_variance.StandardDeviation()));\r\n}\r\n```\r\n</details>', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6481465058/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T20:58:48Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15732, 'watchers_count': 15732, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15732, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'SuperSamus', 'id': 40663462, 'node_id': 'MDQ6VXNlcjQwNjYzNDYy', 'avatar_url': 'https://avatars.githubusercontent.com/u/40663462?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/SuperSamus', 'html_url': 'https://github.com/SuperSamus', 'followers_url': 'https://api.github.com/users/SuperSamus/followers', 'following_url': 'https://api.github.com/users/SuperSamus/following{/other_user}', 'gists_url': 'https://api.github.com/users/SuperSamus/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/SuperSamus/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/SuperSamus/subscriptions', 'organizations_url': 'https://api.github.com/users/SuperSamus/orgs', 'repos_url': 'https://api.github.com/users/SuperSamus/repos', 'events_url': 'https://api.github.com/users/SuperSamus/events{/privacy}', 'received_events_url': 'https://api.github.com/users/SuperSamus/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-28T21:46:02.208091	{'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14877', 'id': 5501153399, 'node_id': 'PR_kwDOALCn2M8AAAABEGWgYg', 'number': 14877, 'title': 'PerformanceTracker: Small cleanup, properly use RunningVariance for the standard deviation', '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}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 5, 'created_at': '2026-09-18T15:06:30Z', 'updated_at': '2026-10-28T21:46:00Z', '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/14877', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14877', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14877.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14877.patch', 'merged_at': None}, 'body': '`UpdateStats()` was calculating the standard deviation from the entirety of `m_dt_queue`, which has a noticeable performance impact when the frame rates are very high.\r\nOn a scene so light it runs at 3000 FPS, `UpdateStats()` was taking around 5% of the profiling (at default 1s sample window). Now it doesn\'t.\r\n\r\nI\'m not opening this PR with confidence.\r\nMainly I\'m not a fan of using `MathUtil::RunningVariance<double>` (I mean with `double` specifically, see the comment) since the `static_cast`s are ugly, but I have no better idea other than "the conditions to get an overflow with `DT::rep` are unlikely enough that there\'s no need to care".\r\nBut on the other hand, `double` causes the risk of the measurements getting less and less accurate over time.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877/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/14877/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6481465058', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14877#issuecomment-6481465058', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14877', 'id': 6481465058, 'node_id': 'IC_kwDOALCn2M8AAAABglNO4g', 'user': {'login': 'SuperSamus', 'id': 40663462, 'node_id': 'MDQ6VXNlcjQwNjYzNDYy', 'avatar_url': 'https://avatars.githubusercontent.com/u/40663462?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/SuperSamus', 'html_url': 'https://github.com/SuperSamus', 'followers_url': 'https://api.github.com/users/SuperSamus/followers', 'following_url': 'https://api.github.com/users/SuperSamus/following{/other_user}', 'gists_url': 'https://api.github.com/users/SuperSamus/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/SuperSamus/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/SuperSamus/subscriptions', 'organizations_url': 'https://api.github.com/users/SuperSamus/orgs', 'repos_url': 'https://api.github.com/users/SuperSamus/repos', 'events_url': 'https://api.github.com/users/SuperSamus/events{/privacy}', 'received_events_url': 'https://api.github.com/users/SuperSamus/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-28T21:45:59Z', 'updated_at': '2026-10-28T21:45:59Z', 'body': 'Why do math, when you can just test out a bad-case scenario?\r\n\r\nTesting a code that creates a random array of very unstable frametimes, and a few stutters randomly inserted:\r\n```cpp\r\nstatic constexpr std::size_t MAX_DT_QUEUE_SIZE = 4096;\r\n\r\nstatic constexpr double ACTUAL_FRAME_DT = 1.0 / 60.0;\r\nstatic constexpr double ACTUAL_FRAME_ERR = 0.002;\r\nstatic constexpr double STUTTER_FRAME_DT = 0.55;\r\nstatic constexpr double STUTTER_FRAME_ERR = 0.5;\r\n\r\n// If the game actually ran with no stutters at 60 FPS (and the stutter frames were just an illusion\r\n// for Dolphin), this would take 80 days.\r\nstatic constexpr std::size_t TOTAL_FRAMES = MAX_DT_QUEUE_SIZE * 100000;\r\nstatic constexpr std::size_t AVG_N_FRAMES_PER_STUTTER = TOTAL_FRAMES / 3600;\r\n```\r\n\r\nHow close is the final running std, compared to calculating it from scratch in the queue?\r\nRunning a few times, and...\r\n```\r\nActual std is 0.0011613785790244263 seconds\r\nRunning std   0.0011613785791494136, diff 1.2498726012499795e-13\r\n\r\nActual std is 0.0011512422871999381 seconds\r\nRunning std   0.0011512422871978918, diff 2.046323180349141e-15\r\n\r\nActual std is 0.005481212866823841 seconds\r\nRunning std   0.00548121286682146, diff 2.3809079707781677e-15\r\n\r\nActual std is 0.00969206635198026 seconds\r\nRunning std   0.009692066351979268, diff 9.922618282587337e-16\r\n``` \r\n\r\nSo... I suppose nothing to worry about.\r\n\r\n<details>\r\n<summary>Code used for testing</summary>\r\n```cpp\r\n#include <algorithm>\r\n#include <cassert>\r\n#include <cmath>\r\n#include <concepts>\r\n#include <cstddef>\r\n#include <print>\r\n#include <random>\r\n#include <ranges>\r\n#include <span>\r\n#include <vector>\r\n\r\ntemplate <typename T>\r\nclass RunningMean\r\n{\r\npublic:\r\n  constexpr void Clear() { *this = {}; }\r\n\r\n  constexpr void Push(T x) { m_mean = m_mean + (x - m_mean) / ++m_count; }\r\n  constexpr void Pop(T x)\r\n  {\r\n    if (m_count <= 1)\r\n    {\r\n      Clear();\r\n      return;\r\n    }\r\n    m_mean = m_mean - (x - m_mean) / --m_count;\r\n  }\r\n\r\n  constexpr size_t Count() const { return m_count; }\r\n  constexpr T Mean() const { return m_mean; }\r\n  constexpr T Total() const { return m_mean * m_count; }\r\n\r\nprivate:\r\n  size_t m_count = 0;\r\n  T m_mean{};\r\n};\r\n\r\ntemplate <typename T>\r\nclass RunningVariance\r\n{\r\npublic:\r\n  constexpr void Clear() { *this = {}; }\r\n\r\n  constexpr void Push(T x)\r\n  {\r\n    const auto old_mean = m_running_mean.Mean();\r\n    m_running_mean.Push(x);\r\n    m_variance += (x - old_mean) * (x - m_running_mean.Mean());\r\n  }\r\n  constexpr void Pop(T x)\r\n  {\r\n    if (m_running_mean.Count() <= 1)\r\n    {\r\n      Clear();\r\n      return;\r\n    }\r\n\r\n    const T old_mean = m_running_mean.Mean();\r\n    m_running_mean.Pop(x);\r\n    m_variance -= (x - old_mean) * (x - m_running_mean.Mean());\r\n  }\r\n\r\n  constexpr size_t Count() const { return m_running_mean.Count(); }\r\n  constexpr T Mean() const { return m_running_mean.Mean(); }\r\n  constexpr T Total() const { return m_running_mean.Total(); }\r\n\r\n  constexpr T Variance() const { return m_variance / (Count() - 1); }\r\n  T StandardDeviation() const { return std::sqrt(Variance()); }\r\n\r\n  constexpr T PopulationVariance() const { return m_variance / Count(); }\r\n  T PopulationStandardDeviation() const { return std::sqrt(PopulationVariance()); }\r\n\r\nprivate:\r\n  RunningMean<T> m_running_mean;\r\n  T m_variance{};\r\n};\r\n\r\n// Function slopped with AI\r\ntemplate <std::floating_point T>\r\nvoid populate_random(std::span<T> arr, T C, T e, T B, T d, std::size_t M, std::mt19937& rng)\r\n{\r\n  std::uniform_real_distribution<T> U(T{-1}, T{1});\r\n  auto jitter = [&](T center, T limit) { return center + U(rng) * limit; };\r\n\r\n  // 1) Fill everything with C ± e\r\n  std::ranges::generate(arr, [&] { return jitter(C, e); });\r\n\r\n  // 2) Sample M distinct indices, then overwrite those with B ± d\r\n  std::vector<std::size_t> picked;\r\n  picked.reserve(M);\r\n  std::ranges::sample(std::views::iota(std::size_t{0}, arr.size()), std::back_inserter(picked), M,\r\n                      rng);\r\n\r\n  for (std::size_t i : picked)\r\n    arr[i] = jitter(B, d);\r\n}\r\n\r\nstatic constexpr std::size_t MAX_DT_QUEUE_SIZE = 4096;\r\n\r\nstatic constexpr double ACTUAL_FRAME_DT = 1.0 / 60.0;\r\nstatic constexpr double ACTUAL_FRAME_ERR = 0.002;\r\nstatic constexpr double STUTTER_FRAME_DT = 0.55;\r\nstatic constexpr double STUTTER_FRAME_ERR = 0.5;\r\n\r\n// If the game actually ran with no stutters at 60 FPS (and the stutter frames were just an illusion\r\n// for Dolphin), this would take 80 days.\r\nstatic constexpr std::size_t TOTAL_FRAMES = MAX_DT_QUEUE_SIZE * 100000;\r\nstatic constexpr std::size_t AVG_N_FRAMES_PER_STUTTER = TOTAL_FRAMES / 3600;\r\n\r\nint main()\r\n{\r\n  std::mt19937 rng(std::random_device{}());\r\n  // I apologise for allocating an entire vector (which would only be necessary for the final span)\r\n  // instead of generating the random dt on the fly. I\'m lazy.\r\n  std::vector<double> dts(TOTAL_FRAMES);\r\n  populate_random(std::span(dts), ACTUAL_FRAME_DT, ACTUAL_FRAME_ERR, STUTTER_FRAME_DT,\r\n                  STUTTER_FRAME_ERR, AVG_N_FRAMES_PER_STUTTER, rng);\r\n\r\n  const auto end_span = std::span(dts).last(MAX_DT_QUEUE_SIZE);\r\n  const double avg = std::ranges::fold_left(end_span, 0.0, std::plus{}) / MAX_DT_QUEUE_SIZE;\r\n  const double accurate_std = std::sqrt(\r\n      std::ranges::fold_left(\r\n          end_span, 0.0, [avg](double s2, double dt) { return s2 + ((dt - avg) * (dt - avg)); }) /\r\n      (MAX_DT_QUEUE_SIZE - 1));\r\n\r\n  std::println("Actual std is {} seconds", accurate_std);\r\n\r\n  RunningVariance<double> running_variance;\r\n\r\n  for (double dt : std::span(dts).first(MAX_DT_QUEUE_SIZE))\r\n  {\r\n    running_variance.Push(dt);\r\n  }\r\n  for (std::size_t i = MAX_DT_QUEUE_SIZE; i < dts.size(); ++i)\r\n  {\r\n    running_variance.Pop(dts[i - MAX_DT_QUEUE_SIZE]);\r\n    running_variance.Push(dts[i]);\r\n  }\r\n\r\n  std::println("Running std   {}, diff {}", running_variance.StandardDeviation(),\r\n               std::abs(accurate_std - running_variance.StandardDeviation()));\r\n}\r\n```\r\n</details>', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6481465058/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T20:58:48Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15732, 'watchers_count': 15732, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15732, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'SuperSamus', 'id': 40663462, 'node_id': 'MDQ6VXNlcjQwNjYzNDYy', 'avatar_url': 'https://avatars.githubusercontent.com/u/40663462?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/SuperSamus', 'html_url': 'https://github.com/SuperSamus', 'followers_url': 'https://api.github.com/users/SuperSamus/followers', 'following_url': 'https://api.github.com/users/SuperSamus/following{/other_user}', 'gists_url': 'https://api.github.com/users/SuperSamus/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/SuperSamus/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/SuperSamus/subscriptions', 'organizations_url': 'https://api.github.com/users/SuperSamus/orgs', 'repos_url': 'https://api.github.com/users/SuperSamus/repos', 'events_url': 'https://api.github.com/users/SuperSamus/events{/privacy}', 'received_events_url': 'https://api.github.com/users/SuperSamus/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-28T20:53:04.145937	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'review_requested', 'number': 12014, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12014', 'id': 1413909600, 'node_id': 'PR_kwDOALCn2M5URoxg', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12014', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/12014.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/12014.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014', 'number': 12014, 'state': 'open', 'locked': False, 'title': 'Add CRT shaders', 'user': {'login': 'Clownacy', 'id': 7667009, 'node_id': 'MDQ6VXNlcjc2NjcwMDk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7667009?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Clownacy', 'html_url': 'https://github.com/Clownacy', 'followers_url': 'https://api.github.com/users/Clownacy/followers', 'following_url': 'https://api.github.com/users/Clownacy/following{/other_user}', 'gists_url': 'https://api.github.com/users/Clownacy/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Clownacy/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Clownacy/subscriptions', 'organizations_url': 'https://api.github.com/users/Clownacy/orgs', 'repos_url': 'https://api.github.com/users/Clownacy/repos', 'events_url': 'https://api.github.com/users/Clownacy/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Clownacy/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "I've ported a couple of shaders from RetroArch - particularly the crt-pi and crt-lottes-fast ones. Unlike other shaders such as crt-royale, these shaders are single-pass, allowing them to work within Dolphin's framework. These look pretty good when paired with native resolution and SSAA.\r\n\r\ncrt-lottes-fast:\r\n![image](https://github.com/dolphin-emu/dolphin/assets/7667009/8108b7e1-d140-4d26-bc84-6b612b85ee8f)\r\n\r\nunfiltered:\r\n![image](https://github.com/dolphin-emu/dolphin/assets/7667009/5483d46a-4e15-4062-bb14-adb7c8d40d2b)\r\n\r\ncrt-pi:\r\n![image](https://github.com/dolphin-emu/dolphin/assets/7667009/9cfd1152-908c-4d42-94e0-908a1fa83c1f)\r\n\r\nUnfortunately, I only noticed #11888 after I had already ported crt-pi. Still, crt-pi is specifically optimised for lower-end hardware (Raspberry Pis, in particular), so perhaps these shaders still have some utility.\r\n\r\nVarious settings have been exposed through Dolphin's configuration API, crt-pi in particular boasts extra options that even the RetroArch version does not due to being hardcoded within the GLSL code itself.\r\n\r\nBoth crt-pi and crt-lottes-fast run with every backend that I have tested (OpenGL, Vulkan, Direct3D 11, and Direct3D 12).", 'created_at': '2023-06-29T20:23:15Z', 'updated_at': '2026-10-28T20:53:02Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'fd3bed29d69d3c5fdc0c2e188382d74c3a336445', 'assignees': [], 'requested_reviewers': [{'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}], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12014/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12014/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/12014/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/471988131524e6856d83ac3672d7853659abe0ce', 'head': {'label': 'Clownacy:master', 'ref': 'master', 'sha': '471988131524e6856d83ac3672d7853659abe0ce', 'user': {'login': 'Clownacy', 'id': 7667009, 'node_id': 'MDQ6VXNlcjc2NjcwMDk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7667009?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Clownacy', 'html_url': 'https://github.com/Clownacy', 'followers_url': 'https://api.github.com/users/Clownacy/followers', 'following_url': 'https://api.github.com/users/Clownacy/following{/other_user}', 'gists_url': 'https://api.github.com/users/Clownacy/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Clownacy/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Clownacy/subscriptions', 'organizations_url': 'https://api.github.com/users/Clownacy/orgs', 'repos_url': 'https://api.github.com/users/Clownacy/repos', 'events_url': 'https://api.github.com/users/Clownacy/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Clownacy/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 659696135, 'node_id': 'R_kgDOJ1IqBw', 'name': 'dolphin', 'full_name': 'Clownacy/dolphin', 'private': False, 'owner': {'login': 'Clownacy', 'id': 7667009, 'node_id': 'MDQ6VXNlcjc2NjcwMDk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7667009?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Clownacy', 'html_url': 'https://github.com/Clownacy', 'followers_url': 'https://api.github.com/users/Clownacy/followers', 'following_url': 'https://api.github.com/users/Clownacy/following{/other_user}', 'gists_url': 'https://api.github.com/users/Clownacy/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Clownacy/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Clownacy/subscriptions', 'organizations_url': 'https://api.github.com/users/Clownacy/orgs', 'repos_url': 'https://api.github.com/users/Clownacy/repos', 'events_url': 'https://api.github.com/users/Clownacy/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Clownacy/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/Clownacy/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/Clownacy/dolphin', 'forks_url': 'https://api.github.com/repos/Clownacy/dolphin/forks', 'keys_url': 'https://api.github.com/repos/Clownacy/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/Clownacy/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/Clownacy/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/Clownacy/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/Clownacy/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/Clownacy/dolphin/events', 'assignees_url': 'https://api.github.com/repos/Clownacy/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/Clownacy/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/Clownacy/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/Clownacy/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/Clownacy/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/Clownacy/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/Clownacy/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/Clownacy/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/Clownacy/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/Clownacy/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/Clownacy/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/Clownacy/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/Clownacy/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/Clownacy/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/Clownacy/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/Clownacy/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/Clownacy/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/Clownacy/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/Clownacy/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/Clownacy/dolphin/merges', 'archive_url': 'https://api.github.com/repos/Clownacy/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/Clownacy/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/Clownacy/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/Clownacy/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/Clownacy/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/Clownacy/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/Clownacy/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/Clownacy/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/Clownacy/dolphin/deployments', 'created_at': '2023-06-28T11:15:09Z', 'updated_at': '2026-10-28T20:52:19Z', 'pushed_at': '2026-10-28T20:52:06Z', 'git_url': 'git://github.com/Clownacy/dolphin.git', 'ssh_url': 'git@github.com:Clownacy/dolphin.git', 'clone_url': 'https://github.com/Clownacy/dolphin.git', 'svn_url': 'https://github.com/Clownacy/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 517171, 'stargazers_count': 1, 'watchers_count': 1, 'language': 'C++', 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': [], 'visibility': 'public', 'forks': 0, 'open_issues': 0, 'watchers': 1, 'default_branch': 'master', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T20:48:59Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15731, 'watchers_count': 15731, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15731, '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/12014'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/12014'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12014/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/12014/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/471988131524e6856d83ac3672d7853659abe0ce'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': True, 'rebaseable': False, 'mergeable_state': 'unstable', 'merged_by': None, 'comments': 42, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 2, 'additions': 979, 'deletions': 0, 'changed_files': 2}, 'requested_reviewer': {'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}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T20:48:59Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15731, 'watchers_count': 15731, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15731, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-28T20:52:10.261897	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'synchronize', 'number': 12014, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12014', 'id': 1413909600, 'node_id': 'PR_kwDOALCn2M5URoxg', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12014', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/12014.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/12014.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014', 'number': 12014, 'state': 'open', 'locked': False, 'title': 'Add CRT shaders', 'user': {'login': 'Clownacy', 'id': 7667009, 'node_id': 'MDQ6VXNlcjc2NjcwMDk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7667009?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Clownacy', 'html_url': 'https://github.com/Clownacy', 'followers_url': 'https://api.github.com/users/Clownacy/followers', 'following_url': 'https://api.github.com/users/Clownacy/following{/other_user}', 'gists_url': 'https://api.github.com/users/Clownacy/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Clownacy/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Clownacy/subscriptions', 'organizations_url': 'https://api.github.com/users/Clownacy/orgs', 'repos_url': 'https://api.github.com/users/Clownacy/repos', 'events_url': 'https://api.github.com/users/Clownacy/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Clownacy/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "I've ported a couple of shaders from RetroArch - particularly the crt-pi and crt-lottes-fast ones. Unlike other shaders such as crt-royale, these shaders are single-pass, allowing them to work within Dolphin's framework. These look pretty good when paired with native resolution and SSAA.\r\n\r\ncrt-lottes-fast:\r\n![image](https://github.com/dolphin-emu/dolphin/assets/7667009/8108b7e1-d140-4d26-bc84-6b612b85ee8f)\r\n\r\nunfiltered:\r\n![image](https://github.com/dolphin-emu/dolphin/assets/7667009/5483d46a-4e15-4062-bb14-adb7c8d40d2b)\r\n\r\ncrt-pi:\r\n![image](https://github.com/dolphin-emu/dolphin/assets/7667009/9cfd1152-908c-4d42-94e0-908a1fa83c1f)\r\n\r\nUnfortunately, I only noticed #11888 after I had already ported crt-pi. Still, crt-pi is specifically optimised for lower-end hardware (Raspberry Pis, in particular), so perhaps these shaders still have some utility.\r\n\r\nVarious settings have been exposed through Dolphin's configuration API, crt-pi in particular boasts extra options that even the RetroArch version does not due to being hardcoded within the GLSL code itself.\r\n\r\nBoth crt-pi and crt-lottes-fast run with every backend that I have tested (OpenGL, Vulkan, Direct3D 11, and Direct3D 12).", 'created_at': '2023-06-29T20:23:15Z', 'updated_at': '2026-10-28T20:52:08Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '1c67321351c8b3f234bf118cc099c3ae3cbcf36f', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12014/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12014/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/12014/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/471988131524e6856d83ac3672d7853659abe0ce', 'head': {'label': 'Clownacy:master', 'ref': 'master', 'sha': '471988131524e6856d83ac3672d7853659abe0ce', 'user': {'login': 'Clownacy', 'id': 7667009, 'node_id': 'MDQ6VXNlcjc2NjcwMDk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7667009?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Clownacy', 'html_url': 'https://github.com/Clownacy', 'followers_url': 'https://api.github.com/users/Clownacy/followers', 'following_url': 'https://api.github.com/users/Clownacy/following{/other_user}', 'gists_url': 'https://api.github.com/users/Clownacy/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Clownacy/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Clownacy/subscriptions', 'organizations_url': 'https://api.github.com/users/Clownacy/orgs', 'repos_url': 'https://api.github.com/users/Clownacy/repos', 'events_url': 'https://api.github.com/users/Clownacy/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Clownacy/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 659696135, 'node_id': 'R_kgDOJ1IqBw', 'name': 'dolphin', 'full_name': 'Clownacy/dolphin', 'private': False, 'owner': {'login': 'Clownacy', 'id': 7667009, 'node_id': 'MDQ6VXNlcjc2NjcwMDk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7667009?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Clownacy', 'html_url': 'https://github.com/Clownacy', 'followers_url': 'https://api.github.com/users/Clownacy/followers', 'following_url': 'https://api.github.com/users/Clownacy/following{/other_user}', 'gists_url': 'https://api.github.com/users/Clownacy/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Clownacy/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Clownacy/subscriptions', 'organizations_url': 'https://api.github.com/users/Clownacy/orgs', 'repos_url': 'https://api.github.com/users/Clownacy/repos', 'events_url': 'https://api.github.com/users/Clownacy/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Clownacy/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/Clownacy/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/Clownacy/dolphin', 'forks_url': 'https://api.github.com/repos/Clownacy/dolphin/forks', 'keys_url': 'https://api.github.com/repos/Clownacy/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/Clownacy/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/Clownacy/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/Clownacy/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/Clownacy/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/Clownacy/dolphin/events', 'assignees_url': 'https://api.github.com/repos/Clownacy/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/Clownacy/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/Clownacy/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/Clownacy/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/Clownacy/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/Clownacy/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/Clownacy/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/Clownacy/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/Clownacy/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/Clownacy/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/Clownacy/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/Clownacy/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/Clownacy/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/Clownacy/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/Clownacy/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/Clownacy/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/Clownacy/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/Clownacy/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/Clownacy/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/Clownacy/dolphin/merges', 'archive_url': 'https://api.github.com/repos/Clownacy/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/Clownacy/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/Clownacy/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/Clownacy/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/Clownacy/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/Clownacy/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/Clownacy/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/Clownacy/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/Clownacy/dolphin/deployments', 'created_at': '2023-06-28T11:15:09Z', 'updated_at': '2026-10-28T20:46:50Z', 'pushed_at': '2026-10-28T20:52:06Z', 'git_url': 'git://github.com/Clownacy/dolphin.git', 'ssh_url': 'git@github.com:Clownacy/dolphin.git', 'clone_url': 'https://github.com/Clownacy/dolphin.git', 'svn_url': 'https://github.com/Clownacy/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 517171, 'stargazers_count': 1, 'watchers_count': 1, 'language': 'C++', 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': [], 'visibility': 'public', 'forks': 0, 'open_issues': 0, 'watchers': 1, 'default_branch': 'master', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T20:48:59Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15731, 'watchers_count': 15731, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15731, '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/12014'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/12014'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12014/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/12014/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/471988131524e6856d83ac3672d7853659abe0ce'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': None, 'rebaseable': None, 'mergeable_state': 'unknown', 'merged_by': None, 'comments': 42, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 2, 'additions': 979, 'deletions': 0, 'changed_files': 2}, 'before': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'after': '471988131524e6856d83ac3672d7853659abe0ce', 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T20:48:59Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15731, 'watchers_count': 15731, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15731, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-28T20:48:16.877322	{'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12014', 'id': 1781462996, 'node_id': 'PR_kwDOALCn2M5URoxg', 'number': 12014, 'title': 'Add CRT shaders', 'user': {'login': 'Clownacy', 'id': 7667009, 'node_id': 'MDQ6VXNlcjc2NjcwMDk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7667009?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Clownacy', 'html_url': 'https://github.com/Clownacy', 'followers_url': 'https://api.github.com/users/Clownacy/followers', 'following_url': 'https://api.github.com/users/Clownacy/following{/other_user}', 'gists_url': 'https://api.github.com/users/Clownacy/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Clownacy/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Clownacy/subscriptions', 'organizations_url': 'https://api.github.com/users/Clownacy/orgs', 'repos_url': 'https://api.github.com/users/Clownacy/repos', 'events_url': 'https://api.github.com/users/Clownacy/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Clownacy/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 42, 'created_at': '2023-06-29T20:23:15Z', 'updated_at': '2026-10-28T20:48:14Z', '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/12014', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12014', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/12014.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/12014.patch', 'merged_at': None}, 'body': "I've ported a couple of shaders from RetroArch - particularly the crt-pi and crt-lottes-fast ones. Unlike other shaders such as crt-royale, these shaders are single-pass, allowing them to work within Dolphin's framework. These look pretty good when paired with native resolution and SSAA.\r\n\r\ncrt-lottes-fast:\r\n![image](https://github.com/dolphin-emu/dolphin/assets/7667009/8108b7e1-d140-4d26-bc84-6b612b85ee8f)\r\n\r\nunfiltered:\r\n![image](https://github.com/dolphin-emu/dolphin/assets/7667009/5483d46a-4e15-4062-bb14-adb7c8d40d2b)\r\n\r\ncrt-pi:\r\n![image](https://github.com/dolphin-emu/dolphin/assets/7667009/9cfd1152-908c-4d42-94e0-908a1fa83c1f)\r\n\r\nUnfortunately, I only noticed #11888 after I had already ported crt-pi. Still, crt-pi is specifically optimised for lower-end hardware (Raspberry Pis, in particular), so perhaps these shaders still have some utility.\r\n\r\nVarious settings have been exposed through Dolphin's configuration API, crt-pi in particular boasts extra options that even the RetroArch version does not due to being hardcoded within the GLSL code itself.\r\n\r\nBoth crt-pi and crt-lottes-fast run with every backend that I have tested (OpenGL, Vulkan, Direct3D 11, and Direct3D 12).", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/reactions', 'total_count': 34, '+1': 16, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 18, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6480328861', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12014#issuecomment-6480328861', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014', 'id': 6480328861, 'node_id': 'IC_kwDOALCn2M8AAAABgkH4nQ', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-28T20:48:14Z', 'updated_at': '2026-10-28T20:48:14Z', 'body': 'Since this PR has aged, I\'ve added a minor change to "crt_pi" so the number of scanlines is fixed, which I think resolves the moiré problem I mentioned.\r\nI think I was mistaken about "crt-lottes-fast" and it seems to already work properly with higher IRs so long as bilinear filtering is used.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6480328861/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-28T20:46:02.448210	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'synchronize', 'number': 12014, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12014', 'id': 1413909600, 'node_id': 'PR_kwDOALCn2M5URoxg', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12014', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/12014.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/12014.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014', 'number': 12014, 'state': 'open', 'locked': False, 'title': 'Add CRT shaders', 'user': {'login': 'Clownacy', 'id': 7667009, 'node_id': 'MDQ6VXNlcjc2NjcwMDk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7667009?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Clownacy', 'html_url': 'https://github.com/Clownacy', 'followers_url': 'https://api.github.com/users/Clownacy/followers', 'following_url': 'https://api.github.com/users/Clownacy/following{/other_user}', 'gists_url': 'https://api.github.com/users/Clownacy/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Clownacy/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Clownacy/subscriptions', 'organizations_url': 'https://api.github.com/users/Clownacy/orgs', 'repos_url': 'https://api.github.com/users/Clownacy/repos', 'events_url': 'https://api.github.com/users/Clownacy/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Clownacy/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "I've ported a couple of shaders from RetroArch - particularly the crt-pi and crt-lottes-fast ones. Unlike other shaders such as crt-royale, these shaders are single-pass, allowing them to work within Dolphin's framework. These look pretty good when paired with native resolution and SSAA.\r\n\r\ncrt-lottes-fast:\r\n![image](https://github.com/dolphin-emu/dolphin/assets/7667009/8108b7e1-d140-4d26-bc84-6b612b85ee8f)\r\n\r\nunfiltered:\r\n![image](https://github.com/dolphin-emu/dolphin/assets/7667009/5483d46a-4e15-4062-bb14-adb7c8d40d2b)\r\n\r\ncrt-pi:\r\n![image](https://github.com/dolphin-emu/dolphin/assets/7667009/9cfd1152-908c-4d42-94e0-908a1fa83c1f)\r\n\r\nUnfortunately, I only noticed #11888 after I had already ported crt-pi. Still, crt-pi is specifically optimised for lower-end hardware (Raspberry Pis, in particular), so perhaps these shaders still have some utility.\r\n\r\nVarious settings have been exposed through Dolphin's configuration API, crt-pi in particular boasts extra options that even the RetroArch version does not due to being hardcoded within the GLSL code itself.\r\n\r\nBoth crt-pi and crt-lottes-fast run with every backend that I have tested (OpenGL, Vulkan, Direct3D 11, and Direct3D 12).", 'created_at': '2023-06-29T20:23:15Z', 'updated_at': '2026-10-28T20:46:00Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '74e0ca444e3f0925184cfcadf8bde07350ad038b', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12014/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12014/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/12014/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/50fc2a8741cef4199df86072fb92345ad0cc6242', 'head': {'label': 'Clownacy:master', 'ref': 'master', 'sha': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'user': {'login': 'Clownacy', 'id': 7667009, 'node_id': 'MDQ6VXNlcjc2NjcwMDk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7667009?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Clownacy', 'html_url': 'https://github.com/Clownacy', 'followers_url': 'https://api.github.com/users/Clownacy/followers', 'following_url': 'https://api.github.com/users/Clownacy/following{/other_user}', 'gists_url': 'https://api.github.com/users/Clownacy/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Clownacy/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Clownacy/subscriptions', 'organizations_url': 'https://api.github.com/users/Clownacy/orgs', 'repos_url': 'https://api.github.com/users/Clownacy/repos', 'events_url': 'https://api.github.com/users/Clownacy/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Clownacy/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 659696135, 'node_id': 'R_kgDOJ1IqBw', 'name': 'dolphin', 'full_name': 'Clownacy/dolphin', 'private': False, 'owner': {'login': 'Clownacy', 'id': 7667009, 'node_id': 'MDQ6VXNlcjc2NjcwMDk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7667009?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Clownacy', 'html_url': 'https://github.com/Clownacy', 'followers_url': 'https://api.github.com/users/Clownacy/followers', 'following_url': 'https://api.github.com/users/Clownacy/following{/other_user}', 'gists_url': 'https://api.github.com/users/Clownacy/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Clownacy/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Clownacy/subscriptions', 'organizations_url': 'https://api.github.com/users/Clownacy/orgs', 'repos_url': 'https://api.github.com/users/Clownacy/repos', 'events_url': 'https://api.github.com/users/Clownacy/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Clownacy/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/Clownacy/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/Clownacy/dolphin', 'forks_url': 'https://api.github.com/repos/Clownacy/dolphin/forks', 'keys_url': 'https://api.github.com/repos/Clownacy/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/Clownacy/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/Clownacy/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/Clownacy/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/Clownacy/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/Clownacy/dolphin/events', 'assignees_url': 'https://api.github.com/repos/Clownacy/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/Clownacy/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/Clownacy/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/Clownacy/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/Clownacy/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/Clownacy/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/Clownacy/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/Clownacy/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/Clownacy/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/Clownacy/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/Clownacy/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/Clownacy/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/Clownacy/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/Clownacy/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/Clownacy/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/Clownacy/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/Clownacy/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/Clownacy/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/Clownacy/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/Clownacy/dolphin/merges', 'archive_url': 'https://api.github.com/repos/Clownacy/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/Clownacy/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/Clownacy/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/Clownacy/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/Clownacy/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/Clownacy/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/Clownacy/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/Clownacy/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/Clownacy/dolphin/deployments', 'created_at': '2023-06-28T11:15:09Z', 'updated_at': '2025-07-12T23:50:23Z', 'pushed_at': '2026-10-28T20:45:54Z', 'git_url': 'git://github.com/Clownacy/dolphin.git', 'ssh_url': 'git@github.com:Clownacy/dolphin.git', 'clone_url': 'https://github.com/Clownacy/dolphin.git', 'svn_url': 'https://github.com/Clownacy/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 517171, 'stargazers_count': 1, 'watchers_count': 1, 'language': 'C++', 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': [], 'visibility': 'public', 'forks': 0, 'open_issues': 0, 'watchers': 1, 'default_branch': 'master', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, '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/12014'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/12014'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12014/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/12014/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/50fc2a8741cef4199df86072fb92345ad0cc6242'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': None, 'rebaseable': None, 'mergeable_state': 'unknown', 'merged_by': None, 'comments': 41, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 2, 'additions': 978, 'deletions': 0, 'changed_files': 2}, 'before': '0b7b82759450bbe33a7c19c1190039b0470cde4a', 'after': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-28T19:45:02.275782	{'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13704', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13704/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13704/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13704/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13704', 'id': 3087454631, 'node_id': 'PR_kwDOALCn2M6Xci1N', 'number': 13704, 'title': 'CMake: Use CMAKE_CURRENT_SOURCE_DIR instead of CMAKE_SOURCE_DIR', 'user': {'login': 'unexploredtest', 'id': 53617231, 'node_id': 'MDQ6VXNlcjUzNjE3MjMx', 'avatar_url': 'https://avatars.githubusercontent.com/u/53617231?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/unexploredtest', 'html_url': 'https://github.com/unexploredtest', 'followers_url': 'https://api.github.com/users/unexploredtest/followers', 'following_url': 'https://api.github.com/users/unexploredtest/following{/other_user}', 'gists_url': 'https://api.github.com/users/unexploredtest/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/unexploredtest/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/unexploredtest/subscriptions', 'organizations_url': 'https://api.github.com/users/unexploredtest/orgs', 'repos_url': 'https://api.github.com/users/unexploredtest/repos', 'events_url': 'https://api.github.com/users/unexploredtest/events{/privacy}', 'received_events_url': 'https://api.github.com/users/unexploredtest/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [{'id': 1667502011, 'node_id': 'MDU6TGFiZWwxNjY3NTAyMDEx', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels/needs%20rebase', 'name': 'needs rebase', 'color': '053663', 'default': False, 'description': '', 'archived_at': None, 'archived_by': None}], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 3, 'created_at': '2025-05-23T20:22:21Z', 'updated_at': '2026-10-28T19:44:59Z', '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/13704', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13704', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/13704.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/13704.patch', 'merged_at': None}, 'body': "Currently Dolphin uses CMAKE_SOURCE_DIR in several places for building the project which causes issues if included as an external project. Replacing CMAKE_SOURCE_DIR variables with the appropriate CMAKE_CURRENT_SOURCE_DIR equivalent fixes the issue and also doesn't change the behavior at all.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13704/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/13704/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6478904803', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13704#issuecomment-6478904803', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13704', 'id': 6478904803, 'node_id': 'IC_kwDOALCn2M8AAAABgiw94w', 'user': {'login': 'TellowKrinkle', 'id': 3315070, 'node_id': 'MDQ6VXNlcjMzMTUwNzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3315070?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/TellowKrinkle', 'html_url': 'https://github.com/TellowKrinkle', 'followers_url': 'https://api.github.com/users/TellowKrinkle/followers', 'following_url': 'https://api.github.com/users/TellowKrinkle/following{/other_user}', 'gists_url': 'https://api.github.com/users/TellowKrinkle/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/TellowKrinkle/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/TellowKrinkle/subscriptions', 'organizations_url': 'https://api.github.com/users/TellowKrinkle/orgs', 'repos_url': 'https://api.github.com/users/TellowKrinkle/repos', 'events_url': 'https://api.github.com/users/TellowKrinkle/events{/privacy}', 'received_events_url': 'https://api.github.com/users/TellowKrinkle/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-28T19:44:59Z', 'updated_at': '2026-10-28T19:44:59Z', 'body': "How many of these actually need the explicit reference to `CMAKE_CURRENT_SOURCE_DIR`?  I'm pretty sure a number of those functions default to the current source dir if you give them a relative path.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6478904803/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, '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': 'TellowKrinkle', 'id': 3315070, 'node_id': 'MDQ6VXNlcjMzMTUwNzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3315070?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/TellowKrinkle', 'html_url': 'https://github.com/TellowKrinkle', 'followers_url': 'https://api.github.com/users/TellowKrinkle/followers', 'following_url': 'https://api.github.com/users/TellowKrinkle/following{/other_user}', 'gists_url': 'https://api.github.com/users/TellowKrinkle/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/TellowKrinkle/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/TellowKrinkle/subscriptions', 'organizations_url': 'https://api.github.com/users/TellowKrinkle/orgs', 'repos_url': 'https://api.github.com/users/TellowKrinkle/repos', 'events_url': 'https://api.github.com/users/TellowKrinkle/events{/privacy}', 'received_events_url': 'https://api.github.com/users/TellowKrinkle/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-28T19:38:00.155921	{'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5688630935, 'node_id': 'PRR_kwDOALCn2M8AAAABUxGelw', '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 sounds fine to me.', 'commit_id': 'ae4134ebc5948244c0204d7e2168606b87297994', 'state': 'approved', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12318#pullrequestreview-5688630935', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12318', '_links': {'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/12318#pullrequestreview-5688630935'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12318'}}, 'submitted_at': '2026-10-28T19:37:58Z', 'updated_at': '2026-10-28T19:37:58Z', 'author_association': 'MEMBER'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12318', 'id': 1616625700, 'node_id': 'PR_kwDOALCn2M5gW8Ak', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12318', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/12318.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/12318.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12318', 'number': 12318, 'state': 'open', 'locked': False, 'title': 'Change Sensor Bar Position Default to Bottom', 'user': {'login': 'PatrickFerry', 'id': 8967997, 'node_id': 'MDQ6VXNlcjg5Njc5OTc=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8967997?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/PatrickFerry', 'html_url': 'https://github.com/PatrickFerry', 'followers_url': 'https://api.github.com/users/PatrickFerry/followers', 'following_url': 'https://api.github.com/users/PatrickFerry/following{/other_user}', 'gists_url': 'https://api.github.com/users/PatrickFerry/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/PatrickFerry/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/PatrickFerry/subscriptions', 'organizations_url': 'https://api.github.com/users/PatrickFerry/orgs', 'repos_url': 'https://api.github.com/users/PatrickFerry/repos', 'events_url': 'https://api.github.com/users/PatrickFerry/events{/privacy}', 'received_events_url': 'https://api.github.com/users/PatrickFerry/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'The default from running the Wii system menu is bottom so change Dolphin\'s default sensor position too.\r\n\r\nTo see the issue, start Dolphin from scratch like from a portable build from master and do the same from a portable build based on this PR. Then perform an online system update and load the Wii system menu.\r\n\r\nYou will observe the sensor bar position defaults to "Bottom", so I made the change to match this observation.', 'created_at': '2023-11-25T15:34:06Z', 'updated_at': '2023-11-25T15:52:08Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'd1d72a16d336c7400330502d65e1efe498884181', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12318/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12318/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/12318/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ae4134ebc5948244c0204d7e2168606b87297994', 'head': {'label': 'PatrickFerry:sensor-bar-position-default-bottom', 'ref': 'sensor-bar-position-default-bottom', 'sha': 'ae4134ebc5948244c0204d7e2168606b87297994', 'user': {'login': 'PatrickFerry', 'id': 8967997, 'node_id': 'MDQ6VXNlcjg5Njc5OTc=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8967997?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/PatrickFerry', 'html_url': 'https://github.com/PatrickFerry', 'followers_url': 'https://api.github.com/users/PatrickFerry/followers', 'following_url': 'https://api.github.com/users/PatrickFerry/following{/other_user}', 'gists_url': 'https://api.github.com/users/PatrickFerry/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/PatrickFerry/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/PatrickFerry/subscriptions', 'organizations_url': 'https://api.github.com/users/PatrickFerry/orgs', 'repos_url': 'https://api.github.com/users/PatrickFerry/repos', 'events_url': 'https://api.github.com/users/PatrickFerry/events{/privacy}', 'received_events_url': 'https://api.github.com/users/PatrickFerry/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 29178710, 'node_id': 'MDEwOlJlcG9zaXRvcnkyOTE3ODcxMA==', 'name': 'dolphin', 'full_name': 'PatrickFerry/dolphin', 'private': False, 'owner': {'login': 'PatrickFerry', 'id': 8967997, 'node_id': 'MDQ6VXNlcjg5Njc5OTc=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8967997?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/PatrickFerry', 'html_url': 'https://github.com/PatrickFerry', 'followers_url': 'https://api.github.com/users/PatrickFerry/followers', 'following_url': 'https://api.github.com/users/PatrickFerry/following{/other_user}', 'gists_url': 'https://api.github.com/users/PatrickFerry/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/PatrickFerry/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/PatrickFerry/subscriptions', 'organizations_url': 'https://api.github.com/users/PatrickFerry/orgs', 'repos_url': 'https://api.github.com/users/PatrickFerry/repos', 'events_url': 'https://api.github.com/users/PatrickFerry/events{/privacy}', 'received_events_url': 'https://api.github.com/users/PatrickFerry/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/PatrickFerry/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/PatrickFerry/dolphin', 'forks_url': 'https://api.github.com/repos/PatrickFerry/dolphin/forks', 'keys_url': 'https://api.github.com/repos/PatrickFerry/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/PatrickFerry/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/PatrickFerry/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/PatrickFerry/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/PatrickFerry/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/PatrickFerry/dolphin/events', 'assignees_url': 'https://api.github.com/repos/PatrickFerry/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/PatrickFerry/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/PatrickFerry/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/PatrickFerry/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/PatrickFerry/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/PatrickFerry/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/PatrickFerry/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/PatrickFerry/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/PatrickFerry/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/PatrickFerry/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/PatrickFerry/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/PatrickFerry/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/PatrickFerry/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/PatrickFerry/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/PatrickFerry/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/PatrickFerry/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/PatrickFerry/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/PatrickFerry/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/PatrickFerry/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/PatrickFerry/dolphin/merges', 'archive_url': 'https://api.github.com/repos/PatrickFerry/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/PatrickFerry/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/PatrickFerry/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/PatrickFerry/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/PatrickFerry/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/PatrickFerry/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/PatrickFerry/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/PatrickFerry/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/PatrickFerry/dolphin/deployments', 'created_at': '2015-01-13T07:47:08Z', 'updated_at': '2025-10-13T18:20:07Z', 'pushed_at': '2025-10-13T18:20:03Z', 'git_url': 'git://github.com/PatrickFerry/dolphin.git', 'ssh_url': 'git@github.com:PatrickFerry/dolphin.git', 'clone_url': 'https://github.com/PatrickFerry/dolphin.git', 'svn_url': 'https://github.com/PatrickFerry/dolphin', 'homepage': None, 'size': 499830, 'stargazers_count': 0, 'watchers_count': 0, 'language': 'C++', 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': False, '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': 'd89a0423d191931b31cafd8c2256a5258778dcb4', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, '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/12318'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/12318'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12318'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12318/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12318/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/12318/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ae4134ebc5948244c0204d7e2168606b87297994'}}, '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-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-28T19:37:16.495513	{'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5688621943, 'node_id': 'PRR_kwDOALCn2M8AAAABUxF7dw', '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': 'LGTM, everything seems to work as expected.', 'commit_id': '6f63dd0f44bc9696e73fbcf2cbae766f902fac50', 'state': 'approved', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14951#pullrequestreview-5688621943', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14951', '_links': {'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14951#pullrequestreview-5688621943'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14951'}}, 'submitted_at': '2026-10-28T19:37:14Z', 'updated_at': '2026-10-28T19:37:14Z', 'author_association': 'CONTRIBUTOR'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14951', 'id': 5001640510, 'node_id': 'PR_kwDOALCn2M8AAAABKh76Pg', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14951', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14951.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14951.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14951', 'number': 14951, 'state': 'open', 'locked': False, 'title': 'Core/TimePlayed: Decouple the TimePlayed tracker thread from CPUManager.', '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 the play time tracking functionality was too tightly integrated with CPUManager.\n\nIt's now very separate and uses state change callbacks to start and stop tracking.", 'created_at': '2026-10-25T04:00:52Z', 'updated_at': '2026-10-28T18:02:55Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '47d09d3edeb164c7146f27484db5c6519bd98f62', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14951/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14951/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/14951/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/6f63dd0f44bc9696e73fbcf2cbae766f902fac50', 'head': {'label': 'jordan-woyak:time-played-cpumanager-decouple', 'ref': 'time-played-cpumanager-decouple', 'sha': '6f63dd0f44bc9696e73fbcf2cbae766f902fac50', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 16818408, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNjgxODQwOA==', 'name': 'dolphin', 'full_name': 'jordan-woyak/dolphin', 'private': False, 'owner': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/jordan-woyak/dolphin', 'description': 'Dolphin is a GameCube/Wii emulator, allowing you to play games for these two platforms on PC, with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/jordan-woyak/dolphin', 'forks_url': 'https://api.github.com/repos/jordan-woyak/dolphin/forks', 'keys_url': 'https://api.github.com/repos/jordan-woyak/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/jordan-woyak/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/jordan-woyak/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/jordan-woyak/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/jordan-woyak/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/jordan-woyak/dolphin/events', 'assignees_url': 'https://api.github.com/repos/jordan-woyak/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/jordan-woyak/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/jordan-woyak/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/jordan-woyak/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/jordan-woyak/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/jordan-woyak/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/jordan-woyak/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/jordan-woyak/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/jordan-woyak/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/jordan-woyak/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/jordan-woyak/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/jordan-woyak/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/jordan-woyak/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/jordan-woyak/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/jordan-woyak/dolphin/merges', 'archive_url': 'https://api.github.com/repos/jordan-woyak/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/jordan-woyak/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/jordan-woyak/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/jordan-woyak/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/jordan-woyak/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/jordan-woyak/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/jordan-woyak/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/jordan-woyak/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/jordan-woyak/dolphin/deployments', 'created_at': '2014-02-13T21:50:38Z', 'updated_at': '2026-06-27T21:22:47Z', 'pushed_at': '2026-10-28T18:02:51Z', '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': 529922, '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': '3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, '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/14951'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14951'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14951'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14951/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14951/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/14951/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/6f63dd0f44bc9696e73fbcf2cbae766f902fac50'}}, '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-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, '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': 'raw_gh_hook'}
2026-10-28T19:35:08.271013	{'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5688595525, 'node_id': 'PRR_kwDOALCn2M8AAAABUxEURQ', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': None, 'commit_id': 'fa722bbe96f436f0b2ad212a28d34f4898ebf342', 'state': 'approved', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12848#pullrequestreview-5688595525', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12848', '_links': {'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/12848#pullrequestreview-5688595525'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12848'}}, 'submitted_at': '2026-10-28T19:35:06Z', 'updated_at': '2026-10-28T19:35:06Z', 'author_association': 'MEMBER'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12848', 'id': 1913536663, 'node_id': 'PR_kwDOALCn2M5yDkCX', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12848', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/12848.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/12848.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12848', 'number': 12848, 'state': 'open', 'locked': False, 'title': 'Add unit test coverage for `Rectangle::ClampUL`, and remove the unused `ClampLL` function', 'user': {'login': 'nlebeck', 'id': 3935447, 'node_id': 'MDQ6VXNlcjM5MzU0NDc=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3935447?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/nlebeck', 'html_url': 'https://github.com/nlebeck', 'followers_url': 'https://api.github.com/users/nlebeck/followers', 'following_url': 'https://api.github.com/users/nlebeck/following{/other_user}', 'gists_url': 'https://api.github.com/users/nlebeck/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/nlebeck/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/nlebeck/subscriptions', 'organizations_url': 'https://api.github.com/users/nlebeck/orgs', 'repos_url': 'https://api.github.com/users/nlebeck/repos', 'events_url': 'https://api.github.com/users/nlebeck/events{/privacy}', 'received_events_url': 'https://api.github.com/users/nlebeck/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "All this unit test coverage for the `Rectangle` class might be silly, but hopefully it doesn't hurt as long as the tests are maintainable!\r\n\r\nPlease nitpick, especially the documentation tweak. (I don't have a ton of experience with graphics programming, but as far as I can tell, `ClampUL` does the right thing even if the rectangle on which it is invoked is not itself in an upper-left coordinate system.)", 'created_at': '2024-06-11T04:44:33Z', 'updated_at': '2025-01-30T06:02:07Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'df7a1db6edb9df6936cc47e4ebd96e8c384f0a8f', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12848/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12848/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/12848/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/fa722bbe96f436f0b2ad212a28d34f4898ebf342', 'head': {'label': 'nlebeck:more-rectangle-tests', 'ref': 'more-rectangle-tests', 'sha': 'fa722bbe96f436f0b2ad212a28d34f4898ebf342', 'user': {'login': 'nlebeck', 'id': 3935447, 'node_id': 'MDQ6VXNlcjM5MzU0NDc=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3935447?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/nlebeck', 'html_url': 'https://github.com/nlebeck', 'followers_url': 'https://api.github.com/users/nlebeck/followers', 'following_url': 'https://api.github.com/users/nlebeck/following{/other_user}', 'gists_url': 'https://api.github.com/users/nlebeck/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/nlebeck/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/nlebeck/subscriptions', 'organizations_url': 'https://api.github.com/users/nlebeck/orgs', 'repos_url': 'https://api.github.com/users/nlebeck/repos', 'events_url': 'https://api.github.com/users/nlebeck/events{/privacy}', 'received_events_url': 'https://api.github.com/users/nlebeck/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 763883339, 'node_id': 'R_kgDOLYfvSw', 'name': 'dolphin', 'full_name': 'nlebeck/dolphin', 'private': False, 'owner': {'login': 'nlebeck', 'id': 3935447, 'node_id': 'MDQ6VXNlcjM5MzU0NDc=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3935447?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/nlebeck', 'html_url': 'https://github.com/nlebeck', 'followers_url': 'https://api.github.com/users/nlebeck/followers', 'following_url': 'https://api.github.com/users/nlebeck/following{/other_user}', 'gists_url': 'https://api.github.com/users/nlebeck/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/nlebeck/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/nlebeck/subscriptions', 'organizations_url': 'https://api.github.com/users/nlebeck/orgs', 'repos_url': 'https://api.github.com/users/nlebeck/repos', 'events_url': 'https://api.github.com/users/nlebeck/events{/privacy}', 'received_events_url': 'https://api.github.com/users/nlebeck/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/nlebeck/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/nlebeck/dolphin', 'forks_url': 'https://api.github.com/repos/nlebeck/dolphin/forks', 'keys_url': 'https://api.github.com/repos/nlebeck/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/nlebeck/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/nlebeck/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/nlebeck/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/nlebeck/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/nlebeck/dolphin/events', 'assignees_url': 'https://api.github.com/repos/nlebeck/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/nlebeck/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/nlebeck/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/nlebeck/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/nlebeck/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/nlebeck/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/nlebeck/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/nlebeck/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/nlebeck/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/nlebeck/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/nlebeck/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/nlebeck/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/nlebeck/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/nlebeck/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/nlebeck/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/nlebeck/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/nlebeck/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/nlebeck/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/nlebeck/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/nlebeck/dolphin/merges', 'archive_url': 'https://api.github.com/repos/nlebeck/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/nlebeck/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/nlebeck/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/nlebeck/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/nlebeck/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/nlebeck/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/nlebeck/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/nlebeck/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/nlebeck/dolphin/deployments', 'created_at': '2024-02-27T04:50:14Z', 'updated_at': '2026-05-25T19:11:35Z', 'pushed_at': '2026-05-25T19:09:32Z', 'git_url': 'git://github.com/nlebeck/dolphin.git', 'ssh_url': 'git@github.com:nlebeck/dolphin.git', 'clone_url': 'https://github.com/nlebeck/dolphin.git', 'svn_url': 'https://github.com/nlebeck/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 507086, 'stargazers_count': 1, 'watchers_count': 1, 'language': 'C++', 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': [], 'visibility': 'public', 'forks': 0, 'open_issues': 0, 'watchers': 1, 'default_branch': 'master', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': 'b5a0d293ae60ff979961589bbfaa18dce0958cc8', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, '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/12848'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/12848'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12848'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12848/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12848/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/12848/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/fa722bbe96f436f0b2ad212a28d34f4898ebf342'}}, 'author_association': 'CONTRIBUTOR', '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-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-28T19:31:25.636305	{'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5688548206, 'node_id': 'PRR_kwDOALCn2M8AAAABUxBbbg', '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': 'It might make more sense to use `PROJECT_SOURCE_DIR` and/or `dolphin-emu_SOURCE_DIR` instead of relying on path traversal', 'commit_id': '6c98e7b538e22faa1e1fcf7027241b318989f7ee', 'state': 'changes_requested', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13704#pullrequestreview-5688548206', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13704', '_links': {'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/13704#pullrequestreview-5688548206'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13704'}}, 'submitted_at': '2026-10-28T19:31:23Z', 'updated_at': '2026-10-28T19:31:23Z', 'author_association': 'CONTRIBUTOR'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13704', 'id': 2540842317, 'node_id': 'PR_kwDOALCn2M6Xci1N', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13704', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/13704.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/13704.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13704', 'number': 13704, 'state': 'open', 'locked': False, 'title': 'CMake: Use CMAKE_CURRENT_SOURCE_DIR instead of CMAKE_SOURCE_DIR', 'user': {'login': 'unexploredtest', 'id': 53617231, 'node_id': 'MDQ6VXNlcjUzNjE3MjMx', 'avatar_url': 'https://avatars.githubusercontent.com/u/53617231?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/unexploredtest', 'html_url': 'https://github.com/unexploredtest', 'followers_url': 'https://api.github.com/users/unexploredtest/followers', 'following_url': 'https://api.github.com/users/unexploredtest/following{/other_user}', 'gists_url': 'https://api.github.com/users/unexploredtest/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/unexploredtest/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/unexploredtest/subscriptions', 'organizations_url': 'https://api.github.com/users/unexploredtest/orgs', 'repos_url': 'https://api.github.com/users/unexploredtest/repos', 'events_url': 'https://api.github.com/users/unexploredtest/events{/privacy}', 'received_events_url': 'https://api.github.com/users/unexploredtest/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "Currently Dolphin uses CMAKE_SOURCE_DIR in several places for building the project which causes issues if included as an external project. Replacing CMAKE_SOURCE_DIR variables with the appropriate CMAKE_CURRENT_SOURCE_DIR equivalent fixes the issue and also doesn't change the behavior at all.", 'created_at': '2025-05-23T20:22:21Z', 'updated_at': '2026-10-28T19:28:51Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': None, 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [{'id': 1667502011, 'node_id': 'MDU6TGFiZWwxNjY3NTAyMDEx', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels/needs%20rebase', 'name': 'needs rebase', 'color': '053663', 'default': False, 'description': '', 'archived_at': None, 'archived_by': None}], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13704/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13704/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/13704/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/6c98e7b538e22faa1e1fcf7027241b318989f7ee', 'head': {'label': 'unexploredtest:cmake_source', 'ref': 'cmake_source', 'sha': '6c98e7b538e22faa1e1fcf7027241b318989f7ee', 'user': {'login': 'unexploredtest', 'id': 53617231, 'node_id': 'MDQ6VXNlcjUzNjE3MjMx', 'avatar_url': 'https://avatars.githubusercontent.com/u/53617231?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/unexploredtest', 'html_url': 'https://github.com/unexploredtest', 'followers_url': 'https://api.github.com/users/unexploredtest/followers', 'following_url': 'https://api.github.com/users/unexploredtest/following{/other_user}', 'gists_url': 'https://api.github.com/users/unexploredtest/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/unexploredtest/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/unexploredtest/subscriptions', 'organizations_url': 'https://api.github.com/users/unexploredtest/orgs', 'repos_url': 'https://api.github.com/users/unexploredtest/repos', 'events_url': 'https://api.github.com/users/unexploredtest/events{/privacy}', 'received_events_url': 'https://api.github.com/users/unexploredtest/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 989095804, 'node_id': 'R_kgDOOvRnfA', 'name': 'dolphin', 'full_name': 'unexploredtest/dolphin', 'private': False, 'owner': {'login': 'unexploredtest', 'id': 53617231, 'node_id': 'MDQ6VXNlcjUzNjE3MjMx', 'avatar_url': 'https://avatars.githubusercontent.com/u/53617231?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/unexploredtest', 'html_url': 'https://github.com/unexploredtest', 'followers_url': 'https://api.github.com/users/unexploredtest/followers', 'following_url': 'https://api.github.com/users/unexploredtest/following{/other_user}', 'gists_url': 'https://api.github.com/users/unexploredtest/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/unexploredtest/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/unexploredtest/subscriptions', 'organizations_url': 'https://api.github.com/users/unexploredtest/orgs', 'repos_url': 'https://api.github.com/users/unexploredtest/repos', 'events_url': 'https://api.github.com/users/unexploredtest/events{/privacy}', 'received_events_url': 'https://api.github.com/users/unexploredtest/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/unexploredtest/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/unexploredtest/dolphin', 'forks_url': 'https://api.github.com/repos/unexploredtest/dolphin/forks', 'keys_url': 'https://api.github.com/repos/unexploredtest/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/unexploredtest/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/unexploredtest/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/unexploredtest/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/unexploredtest/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/unexploredtest/dolphin/events', 'assignees_url': 'https://api.github.com/repos/unexploredtest/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/unexploredtest/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/unexploredtest/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/unexploredtest/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/unexploredtest/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/unexploredtest/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/unexploredtest/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/unexploredtest/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/unexploredtest/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/unexploredtest/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/unexploredtest/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/unexploredtest/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/unexploredtest/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/unexploredtest/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/unexploredtest/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/unexploredtest/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/unexploredtest/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/unexploredtest/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/unexploredtest/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/unexploredtest/dolphin/merges', 'archive_url': 'https://api.github.com/repos/unexploredtest/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/unexploredtest/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/unexploredtest/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/unexploredtest/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/unexploredtest/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/unexploredtest/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/unexploredtest/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/unexploredtest/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/unexploredtest/dolphin/deployments', 'created_at': '2025-05-23T14:47:44Z', 'updated_at': '2025-05-26T19:09:14Z', 'pushed_at': '2026-06-05T21:36:00Z', 'git_url': 'git://github.com/unexploredtest/dolphin.git', 'ssh_url': 'git@github.com:unexploredtest/dolphin.git', 'clone_url': 'https://github.com/unexploredtest/dolphin.git', 'svn_url': 'https://github.com/unexploredtest/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 490105, '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': 1, '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': 1, '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': 'da8610e76fc1ae09562df3152a28be7f50d6e317', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, '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/13704'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/13704'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13704'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13704/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13704/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/13704/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/6c98e7b538e22faa1e1fcf7027241b318989f7ee'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, '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': 'raw_gh_hook'}
2026-10-28T19:28:53.703499	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'labeled', 'number': 13704, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13704', 'id': 2540842317, 'node_id': 'PR_kwDOALCn2M6Xci1N', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13704', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/13704.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/13704.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13704', 'number': 13704, 'state': 'open', 'locked': False, 'title': 'CMake: Use CMAKE_CURRENT_SOURCE_DIR instead of CMAKE_SOURCE_DIR', 'user': {'login': 'unexploredtest', 'id': 53617231, 'node_id': 'MDQ6VXNlcjUzNjE3MjMx', 'avatar_url': 'https://avatars.githubusercontent.com/u/53617231?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/unexploredtest', 'html_url': 'https://github.com/unexploredtest', 'followers_url': 'https://api.github.com/users/unexploredtest/followers', 'following_url': 'https://api.github.com/users/unexploredtest/following{/other_user}', 'gists_url': 'https://api.github.com/users/unexploredtest/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/unexploredtest/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/unexploredtest/subscriptions', 'organizations_url': 'https://api.github.com/users/unexploredtest/orgs', 'repos_url': 'https://api.github.com/users/unexploredtest/repos', 'events_url': 'https://api.github.com/users/unexploredtest/events{/privacy}', 'received_events_url': 'https://api.github.com/users/unexploredtest/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "Currently Dolphin uses CMAKE_SOURCE_DIR in several places for building the project which causes issues if included as an external project. Replacing CMAKE_SOURCE_DIR variables with the appropriate CMAKE_CURRENT_SOURCE_DIR equivalent fixes the issue and also doesn't change the behavior at all.", 'created_at': '2025-05-23T20:22:21Z', 'updated_at': '2026-10-28T19:28:51Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': None, 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [{'id': 1667502011, 'node_id': 'MDU6TGFiZWwxNjY3NTAyMDEx', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels/needs%20rebase', 'name': 'needs rebase', 'color': '053663', 'default': False, 'description': '', 'archived_at': None, 'archived_by': None}], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13704/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13704/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/13704/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/6c98e7b538e22faa1e1fcf7027241b318989f7ee', 'head': {'label': 'unexploredtest:cmake_source', 'ref': 'cmake_source', 'sha': '6c98e7b538e22faa1e1fcf7027241b318989f7ee', 'user': {'login': 'unexploredtest', 'id': 53617231, 'node_id': 'MDQ6VXNlcjUzNjE3MjMx', 'avatar_url': 'https://avatars.githubusercontent.com/u/53617231?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/unexploredtest', 'html_url': 'https://github.com/unexploredtest', 'followers_url': 'https://api.github.com/users/unexploredtest/followers', 'following_url': 'https://api.github.com/users/unexploredtest/following{/other_user}', 'gists_url': 'https://api.github.com/users/unexploredtest/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/unexploredtest/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/unexploredtest/subscriptions', 'organizations_url': 'https://api.github.com/users/unexploredtest/orgs', 'repos_url': 'https://api.github.com/users/unexploredtest/repos', 'events_url': 'https://api.github.com/users/unexploredtest/events{/privacy}', 'received_events_url': 'https://api.github.com/users/unexploredtest/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 989095804, 'node_id': 'R_kgDOOvRnfA', 'name': 'dolphin', 'full_name': 'unexploredtest/dolphin', 'private': False, 'owner': {'login': 'unexploredtest', 'id': 53617231, 'node_id': 'MDQ6VXNlcjUzNjE3MjMx', 'avatar_url': 'https://avatars.githubusercontent.com/u/53617231?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/unexploredtest', 'html_url': 'https://github.com/unexploredtest', 'followers_url': 'https://api.github.com/users/unexploredtest/followers', 'following_url': 'https://api.github.com/users/unexploredtest/following{/other_user}', 'gists_url': 'https://api.github.com/users/unexploredtest/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/unexploredtest/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/unexploredtest/subscriptions', 'organizations_url': 'https://api.github.com/users/unexploredtest/orgs', 'repos_url': 'https://api.github.com/users/unexploredtest/repos', 'events_url': 'https://api.github.com/users/unexploredtest/events{/privacy}', 'received_events_url': 'https://api.github.com/users/unexploredtest/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/unexploredtest/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/unexploredtest/dolphin', 'forks_url': 'https://api.github.com/repos/unexploredtest/dolphin/forks', 'keys_url': 'https://api.github.com/repos/unexploredtest/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/unexploredtest/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/unexploredtest/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/unexploredtest/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/unexploredtest/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/unexploredtest/dolphin/events', 'assignees_url': 'https://api.github.com/repos/unexploredtest/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/unexploredtest/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/unexploredtest/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/unexploredtest/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/unexploredtest/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/unexploredtest/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/unexploredtest/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/unexploredtest/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/unexploredtest/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/unexploredtest/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/unexploredtest/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/unexploredtest/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/unexploredtest/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/unexploredtest/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/unexploredtest/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/unexploredtest/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/unexploredtest/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/unexploredtest/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/unexploredtest/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/unexploredtest/dolphin/merges', 'archive_url': 'https://api.github.com/repos/unexploredtest/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/unexploredtest/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/unexploredtest/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/unexploredtest/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/unexploredtest/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/unexploredtest/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/unexploredtest/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/unexploredtest/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/unexploredtest/dolphin/deployments', 'created_at': '2025-05-23T14:47:44Z', 'updated_at': '2025-05-26T19:09:14Z', 'pushed_at': '2026-06-05T21:36:00Z', 'git_url': 'git://github.com/unexploredtest/dolphin.git', 'ssh_url': 'git@github.com:unexploredtest/dolphin.git', 'clone_url': 'https://github.com/unexploredtest/dolphin.git', 'svn_url': 'https://github.com/unexploredtest/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 490105, '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': 1, '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': 1, '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': 'da8610e76fc1ae09562df3152a28be7f50d6e317', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, '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/13704'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/13704'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13704'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13704/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13704/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/13704/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/6c98e7b538e22faa1e1fcf7027241b318989f7ee'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': False, 'rebaseable': False, 'mergeable_state': 'dirty', 'merged_by': None, 'comments': 2, 'review_comments': 2, 'maintainer_can_modify': True, 'commits': 2, 'additions': 42, 'deletions': 42, 'changed_files': 9}, 'label': {'id': 1667502011, 'node_id': 'MDU6TGFiZWwxNjY3NTAyMDEx', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels/needs%20rebase', 'name': 'needs rebase', 'color': '053663', 'default': False, 'description': '', 'archived_at': None, 'archived_by': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-28T19:26:25.216909	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'labeled', 'number': 13824, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13824', 'id': 2690833560, 'node_id': 'PR_kwDOALCn2M6gYtyY', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13824', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/13824.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/13824.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13824', 'number': 13824, 'state': 'open', 'locked': False, 'title': 'Dolphin/allow system tinygltf', 'user': {'login': 'apteryks', 'id': 8332263, 'node_id': 'MDQ6VXNlcjgzMzIyNjM=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8332263?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/apteryks', 'html_url': 'https://github.com/apteryks', 'followers_url': 'https://api.github.com/users/apteryks/followers', 'following_url': 'https://api.github.com/users/apteryks/following{/other_user}', 'gists_url': 'https://api.github.com/users/apteryks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/apteryks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/apteryks/subscriptions', 'organizations_url': 'https://api.github.com/users/apteryks/orgs', 'repos_url': 'https://api.github.com/users/apteryks/repos', 'events_url': 'https://api.github.com/users/apteryks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/apteryks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'This makes it possible to use a system provided tinygltf library instead of the bundled one.', 'created_at': '2025-07-24T05:47:53Z', 'updated_at': '2026-10-28T19:26:23Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': None, 'assignees': [], 'requested_reviewers': [{'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}], 'requested_teams': [], 'labels': [{'id': 1667502011, 'node_id': 'MDU6TGFiZWwxNjY3NTAyMDEx', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels/needs%20rebase', 'name': 'needs rebase', 'color': '053663', 'default': False, 'description': '', 'archived_at': None, 'archived_by': None}], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13824/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13824/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/13824/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/7fe76c71e33c9444e7060fc90dd2f4013764d8c3', 'head': {'label': 'apteryks:dolphin/allow-system-tinygltf', 'ref': 'dolphin/allow-system-tinygltf', 'sha': '7fe76c71e33c9444e7060fc90dd2f4013764d8c3', 'user': {'login': 'apteryks', 'id': 8332263, 'node_id': 'MDQ6VXNlcjgzMzIyNjM=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8332263?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/apteryks', 'html_url': 'https://github.com/apteryks', 'followers_url': 'https://api.github.com/users/apteryks/followers', 'following_url': 'https://api.github.com/users/apteryks/following{/other_user}', 'gists_url': 'https://api.github.com/users/apteryks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/apteryks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/apteryks/subscriptions', 'organizations_url': 'https://api.github.com/users/apteryks/orgs', 'repos_url': 'https://api.github.com/users/apteryks/repos', 'events_url': 'https://api.github.com/users/apteryks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/apteryks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 919284382, 'node_id': 'R_kgDONssqng', 'name': 'libretro-dolphin', 'full_name': 'apteryks/libretro-dolphin', 'private': False, 'owner': {'login': 'apteryks', 'id': 8332263, 'node_id': 'MDQ6VXNlcjgzMzIyNjM=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8332263?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/apteryks', 'html_url': 'https://github.com/apteryks', 'followers_url': 'https://api.github.com/users/apteryks/followers', 'following_url': 'https://api.github.com/users/apteryks/following{/other_user}', 'gists_url': 'https://api.github.com/users/apteryks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/apteryks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/apteryks/subscriptions', 'organizations_url': 'https://api.github.com/users/apteryks/orgs', 'repos_url': 'https://api.github.com/users/apteryks/repos', 'events_url': 'https://api.github.com/users/apteryks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/apteryks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/apteryks/libretro-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/apteryks/libretro-dolphin', 'forks_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/forks', 'keys_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/teams', 'hooks_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/events', 'assignees_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/tags', 'blobs_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/subscription', 'commits_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/merges', 'archive_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/downloads', 'issues_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/apteryks/libretro-dolphin/deployments', 'created_at': '2025-01-20T05:33:56Z', 'updated_at': '2025-01-20T05:33:56Z', 'pushed_at': '2026-09-03T14:04:40Z', 'git_url': 'git://github.com/apteryks/libretro-dolphin.git', 'ssh_url': 'git@github.com:apteryks/libretro-dolphin.git', 'clone_url': 'https://github.com/apteryks/libretro-dolphin.git', 'svn_url': 'https://github.com/apteryks/libretro-dolphin', 'homepage': 'https://dolphin-emu.org/', 'size': 518369, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'gpl-2.0', 'name': 'GNU General Public License v2.0', 'spdx_id': 'GPL-2.0', 'url': 'https://api.github.com/licenses/gpl-2.0', 'node_id': 'MDc6TGljZW5zZTg='}, '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': 'a1e636d72c8469acf747ac6542f0b7ace7cea02f', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, '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/13824'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/13824'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13824'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13824/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13824/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/13824/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/7fe76c71e33c9444e7060fc90dd2f4013764d8c3'}}, 'author_association': 'CONTRIBUTOR', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': False, 'rebaseable': False, 'mergeable_state': 'dirty', 'merged_by': None, 'comments': 11, 'review_comments': 15, 'maintainer_can_modify': True, 'commits': 2, 'additions': 8, 'deletions': 16, 'changed_files': 5}, 'label': {'id': 1667502011, 'node_id': 'MDU6TGFiZWwxNjY3NTAyMDEx', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels/needs%20rebase', 'name': 'needs rebase', 'color': '053663', 'default': False, 'description': '', 'archived_at': None, 'archived_by': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-28T19:24:08.053354	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'unlabeled', 'number': 14322, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14322', 'id': 3249473391, 'node_id': 'PR_kwDOALCn2M7Brwdv', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14322', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14322.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14322.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14322', 'number': 14322, 'state': 'open', 'locked': False, 'title': 'IOS/USB: Add "Connect USB Keyboard" support for HID', 'user': {'login': 'sepalani', 'id': 7890055, 'node_id': 'MDQ6VXNlcjc4OTAwNTU=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7890055?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/sepalani', 'html_url': 'https://github.com/sepalani', 'followers_url': 'https://api.github.com/users/sepalani/followers', 'following_url': 'https://api.github.com/users/sepalani/following{/other_user}', 'gists_url': 'https://api.github.com/users/sepalani/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/sepalani/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/sepalani/subscriptions', 'organizations_url': 'https://api.github.com/users/sepalani/orgs', 'repos_url': 'https://api.github.com/users/sepalani/repos', 'events_url': 'https://api.github.com/users/sepalani/events{/privacy}', 'received_events_url': 'https://api.github.com/users/sepalani/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "A split version of https://github.com/dolphin-emu/dolphin/pull/13708, based on https://github.com/dolphin-emu/dolphin/pull/14321.\r\n\r\nThis enables keyboard emulation to work with HID games like Dragon Quest X, Monster Hunter G, and Monster Hunter Tri.\r\n![image](https://github.com/user-attachments/assets/71517a2f-f3ec-480f-a935-d07385712283)\r\n\r\nThe supported OSes are based on `Common::KeyboardContext` actual support _(currently Windows only)_. Supporting new OSes won't necessitate changes to this PR as this will be entirely handled by the KeyboardContext class.\r\n\r\nReady to be reviewed and merged.", 'created_at': '2026-02-05T10:06:11Z', 'updated_at': '2026-10-28T19:24:05Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '60006729284f8e3def8fd29f83be4a2aff1cdc99', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': True, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14322/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14322/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/14322/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/b88891fb3534760504517dc0c062a138ef5065ac', 'head': {'label': 'sepalani:kbd-hid', 'ref': 'kbd-hid', 'sha': 'b88891fb3534760504517dc0c062a138ef5065ac', '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}, 'repo': {'id': 36597702, 'node_id': 'MDEwOlJlcG9zaXRvcnkzNjU5NzcwMg==', 'name': 'dolphin', 'full_name': 'sepalani/dolphin', 'private': False, 'owner': {'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}, 'html_url': 'https://github.com/sepalani/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/sepalani/dolphin', 'forks_url': 'https://api.github.com/repos/sepalani/dolphin/forks', 'keys_url': 'https://api.github.com/repos/sepalani/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/sepalani/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/sepalani/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/sepalani/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/sepalani/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/sepalani/dolphin/events', 'assignees_url': 'https://api.github.com/repos/sepalani/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/sepalani/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/sepalani/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/sepalani/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/sepalani/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/sepalani/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/sepalani/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/sepalani/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/sepalani/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/sepalani/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/sepalani/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/sepalani/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/sepalani/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/sepalani/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/sepalani/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/sepalani/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/sepalani/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/sepalani/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/sepalani/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/sepalani/dolphin/merges', 'archive_url': 'https://api.github.com/repos/sepalani/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/sepalani/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/sepalani/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/sepalani/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/sepalani/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/sepalani/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/sepalani/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/sepalani/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/sepalani/dolphin/deployments', 'created_at': '2015-05-31T10:13:24Z', 'updated_at': '2026-10-23T11:01:33Z', 'pushed_at': '2026-10-25T10:49:15Z', 'git_url': 'git://github.com/sepalani/dolphin.git', 'ssh_url': 'git@github.com:sepalani/dolphin.git', 'clone_url': 'https://github.com/sepalani/dolphin.git', 'svn_url': 'https://github.com/sepalani/dolphin', 'homepage': 'https://dolphin-emu.org/', 'size': 523737, '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': 'b5f580e6f9b5ba442248ac62a25cb4db246aa69c', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, '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/14322'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14322'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14322'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14322/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14322/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/14322/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/b88891fb3534760504517dc0c062a138ef5065ac'}}, 'author_association': 'CONTRIBUTOR', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': True, 'rebaseable': False, 'mergeable_state': 'clean', 'merged_by': None, 'comments': 5, 'review_comments': 2, 'maintainer_can_modify': True, 'commits': 2, 'additions': 939, 'deletions': 276, 'changed_files': 14}, 'label': {'id': 1667502011, 'node_id': 'MDU6TGFiZWwxNjY3NTAyMDEx', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels/needs%20rebase', 'name': 'needs rebase', 'color': '053663', 'default': False, 'description': '', 'archived_at': None, 'archived_by': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-28T19:23:55.771492	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'unlabeled', 'number': 14321, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14321', 'id': 3249178775, 'node_id': 'PR_kwDOALCn2M7BqoiX', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14321', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14321.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14321.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14321', 'number': 14321, 'state': 'open', 'locked': False, 'title': 'IOS/KBD: Move keyboard logic to InputCommon', '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': 'A split version of https://github.com/dolphin-emu/dolphin/pull/13623. This PR only moves the keyboard logic to Common/Keyboard.\r\n\r\nIn other words, the Wii\'s `Connect USB Keyboard` feature is still Windows only. It can be tested on the Wii Menu Message Board\'s Create Message, then Memo, and click on the Write a memo card:\r\n<img width="1383" height="1051" alt="image" src="https://github.com/user-attachments/assets/e39ae86c-72c3-48d8-9188-1faa8598559f" />\r\n<img width="1383" height="1053" alt="image" src="https://github.com/user-attachments/assets/b6579703-0ba4-4308-9eb0-8805a6bc639a" />\r\n\r\nReady to be reviewed & merged.', 'created_at': '2026-02-05T08:47:02Z', 'updated_at': '2026-10-28T19:23:53Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '95767ab70850b7d9d964dbb87b3d516dcefd5077', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14321/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14321/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/14321/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ea0ce01a69863223c5703f3e8eb90658e185a9a5', 'head': {'label': 'sepalani:kbd-base', 'ref': 'kbd-base', 'sha': 'ea0ce01a69863223c5703f3e8eb90658e185a9a5', '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}, 'repo': {'id': 36597702, 'node_id': 'MDEwOlJlcG9zaXRvcnkzNjU5NzcwMg==', 'name': 'dolphin', 'full_name': 'sepalani/dolphin', 'private': False, 'owner': {'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}, 'html_url': 'https://github.com/sepalani/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/sepalani/dolphin', 'forks_url': 'https://api.github.com/repos/sepalani/dolphin/forks', 'keys_url': 'https://api.github.com/repos/sepalani/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/sepalani/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/sepalani/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/sepalani/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/sepalani/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/sepalani/dolphin/events', 'assignees_url': 'https://api.github.com/repos/sepalani/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/sepalani/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/sepalani/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/sepalani/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/sepalani/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/sepalani/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/sepalani/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/sepalani/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/sepalani/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/sepalani/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/sepalani/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/sepalani/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/sepalani/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/sepalani/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/sepalani/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/sepalani/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/sepalani/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/sepalani/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/sepalani/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/sepalani/dolphin/merges', 'archive_url': 'https://api.github.com/repos/sepalani/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/sepalani/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/sepalani/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/sepalani/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/sepalani/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/sepalani/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/sepalani/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/sepalani/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/sepalani/dolphin/deployments', 'created_at': '2015-05-31T10:13:24Z', 'updated_at': '2026-10-23T11:01:33Z', 'pushed_at': '2026-10-25T10:49:15Z', 'git_url': 'git://github.com/sepalani/dolphin.git', 'ssh_url': 'git@github.com:sepalani/dolphin.git', 'clone_url': 'https://github.com/sepalani/dolphin.git', 'svn_url': 'https://github.com/sepalani/dolphin', 'homepage': 'https://dolphin-emu.org/', 'size': 523737, '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': 'e1d35f666cc35f6ead55d32ea2679df44d04da72', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, '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/14321'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14321'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14321'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14321/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14321/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/14321/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ea0ce01a69863223c5703f3e8eb90658e185a9a5'}}, 'author_association': 'CONTRIBUTOR', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': True, 'rebaseable': False, 'mergeable_state': 'clean', 'merged_by': None, 'comments': 1, 'review_comments': 2, 'maintainer_can_modify': True, 'commits': 1, 'additions': 441, 'deletions': 276, 'changed_files': 9}, 'label': {'id': 1667502011, 'node_id': 'MDU6TGFiZWwxNjY3NTAyMDEx', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels/needs%20rebase', 'name': 'needs rebase', 'color': '053663', 'default': False, 'description': '', 'archived_at': None, 'archived_by': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-10-28T11:56:18Z', 'pushed_at': '2026-10-25T12:40:23Z', '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': 561403, 'stargazers_count': 15730, 'watchers_count': 15730, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3360, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3360, 'open_issues': 484, 'watchers': 15730, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}