Status for Dolphin Central

Recent events

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: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-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-28T21:43:31.895829	{'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-28T21:43:31.573310	{'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-28T21:42:45.782628	{'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-28T21:42:44.155652	{'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-28T21:37:44.155337	{'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-28T21:37:42.525338	{'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-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:34:28.614252	{'source': 'webserver', 'raw': {'buildid': 194817, 'number': 9506, 'builderid': 35, 'buildrequestid': 195394, 'workerid': 5, 'masterid': 1, 'started_at': 1793222732, 'complete_at': 1793223264, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildnumber': [9506, 'Build'], 'project': ['', 'Build'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['471988', 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'builderid': [35, 'Builder'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'basedir': ['/var/lib/fifoci-worker/worker', 'Worker'], 'builddir': ['/var/lib/fifoci-worker/worker/pr-fifoci-sw-lin-mesa', 'Worker'], 'warnings-count': [1, 'WarningCountingShellCommand'], 'branchname': ['pr-12014', 'Trigger'], 'pr_id': [12014, 'Trigger'], 'workername': ['altair-fifoci', 'Worker'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'got_revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'GitNoBranch'], 'buildername': ['pr-fifoci-sw-lin-mesa', 'Builder'], 'branch': ['refs/pull/12014/head', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build']}, 'buildrequest': {'buildrequestid': 195394, 'buildsetid': 43809, 'builderid': 35, 'priority': 0, 'claimed': True, 'claimed_at': 1793222732, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220935, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43809, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1793220935, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194801, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, 'patch': None}]}, 'parentbuild': {'buildid': 194801, 'number': 10850, 'builderid': 27, 'buildrequestid': 195384, 'workerid': 10, 'masterid': 1, 'started_at': 1793220860, 'complete_at': 1793220935, '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/9506'}, 'type': 'raw_bb_hook'}
2026-10-28T21:33:31.573092	{'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-28T21:33:31.231809	{'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-28T21:32:42.525006	{'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-28T21:32:40.828588	{'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-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:31:36.861742	{'source': 'webserver', 'raw': {'buildid': 194816, 'number': 9202, 'builderid': 21, 'buildrequestid': 195399, 'workerid': 8, 'masterid': 1, 'started_at': 1793222446, 'complete_at': 1793223093, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'builderid': [21, 'Builder'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'shortrev': ['471988', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'branch': ['refs/pull/12014/head', 'Build'], 'repository': ['', 'Build'], 'got_revision': ['ca98b3030bcc70e67158ce899a5589aa2ec65d32', 'GitNoBranch'], 'branchname': ['pr-12014', 'Trigger'], 'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Trigger'], 'buildnumber': [9202, 'Build'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'codebase': ['', 'Build'], 'builddir': ['/Users/ci/worker/base/pr-fifoci-mtl-osx-m1', 'Worker'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'pr_id': [12014, 'Trigger'], 'buildername': ['pr-fifoci-mtl-osx-m1', 'Builder'], 'workername': ['osx-m1', 'Worker'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'warnings-count': [114, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 195399, 'buildsetid': 43812, 'builderid': 21, 'priority': 0, 'claimed': True, 'claimed_at': 1793222446, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793221785, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43812, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1793221785, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194808, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, 'patch': None}]}, 'parentbuild': {'buildid': 194808, 'number': 10868, 'builderid': 7, 'buildrequestid': 195378, 'workerid': 8, 'masterid': 1, 'started_at': 1793221096, 'complete_at': 1793221785, '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/9202'}, 'type': 'raw_bb_hook'}
2026-10-28T21:27:40.828155	{'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-28T21:27:39.162075	{'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-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:25:37.068273	{'source': 'webserver', 'raw': {'buildid': 194817, 'number': 9506, 'builderid': 35, 'buildrequestid': 195394, 'workerid': 5, 'masterid': 1, 'started_at': 1793222732, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildnumber': [9506, 'Build'], 'project': ['', 'Build'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['471988', 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'builderid': [35, 'Builder'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'branchname': ['pr-12014', 'Trigger'], 'pr_id': [12014, 'Trigger'], 'workername': ['altair-fifoci', 'Worker'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'buildername': ['pr-fifoci-sw-lin-mesa', 'Builder'], 'branch': ['refs/pull/12014/head', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build']}, 'buildrequest': {'buildrequestid': 195394, 'buildsetid': 43809, 'builderid': 35, 'priority': 0, 'claimed': True, 'claimed_at': 1793222732, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220935, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43809, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1793220935, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194801, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, 'patch': None}]}, 'parentbuild': {'buildid': 194801, 'number': 10850, 'builderid': 27, 'buildrequestid': 195384, 'workerid': 10, 'masterid': 1, 'started_at': 1793220860, 'complete_at': 1793220935, '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/9506'}, 'type': 'raw_bb_hook'}
2026-10-28T21:25:36.857376	{'source': 'webserver', 'raw': {'buildid': 194814, 'number': 5493, 'builderid': 41, 'buildrequestid': 195395, 'workerid': 5, 'masterid': 1, 'started_at': 1793221944, 'complete_at': 1793222732, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Trigger'], 'pr_id': [12014, 'Trigger'], 'codebase': ['', 'Build'], 'basedir': ['/var/lib/fifoci-worker/worker', 'Worker'], 'got_revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'GitNoBranch'], 'builderid': [41, 'Builder'], 'branch': ['refs/pull/12014/head', 'Build'], 'repository': ['', 'Build'], 'warnings-count': [1, 'WarningCountingShellCommand'], 'branchname': ['pr-12014', 'Trigger'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['471988', 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'workername': ['altair-fifoci', 'Worker'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-vk-lin-mesa', 'Builder'], 'buildnumber': [5493, 'Build'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'project': ['', 'Build'], 'builddir': ['/var/lib/fifoci-worker/worker/pr-fifoci-vk-lin-mesa', 'Worker']}, 'buildrequest': {'buildrequestid': 195395, 'buildsetid': 43809, 'builderid': 41, 'priority': 0, 'claimed': True, 'claimed_at': 1793221944, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220935, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43809, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1793220935, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194801, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, 'patch': None}]}, 'parentbuild': {'buildid': 194801, 'number': 10850, 'builderid': 27, 'buildrequestid': 195384, 'workerid': 10, 'masterid': 1, 'started_at': 1793220860, 'complete_at': 1793220935, '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/5493'}, 'type': 'raw_bb_hook'}
2026-10-28T21:23:31.231555	{'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-28T21:23:30.906687	{'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-28T21:22:39.161652	{'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-28T21:09:46.650509	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'shortrev': '471988', 'service': 'pr-osx-universal', 'pr': 12014, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/7/builds/10868', 'description': 'Build succeeded on builder pr-osx-universal', 'type': 'build_status'}
2026-10-28T21:06:02.076025	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'shortrev': '471988', 'service': 'pr-win-dbg-x64', 'pr': 12014, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/31/builds/10858', 'description': 'Build succeeded on builder pr-win-dbg-x64', 'type': 'build_status'}
2026-10-28T21:03:24.242420	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'shortrev': '50fc2a', 'service': 'pr-win-dbg-x64', 'pr': 12014, 'success': False, 'pending': False, 'url': 'https://dolphin.ci/#/builders/31/builds/10857', 'description': 'Build failed on builder pr-win-dbg-x64', 'type': 'build_status'}
2026-10-28T21:03:21.593089	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'shortrev': '471988', 'service': 'pr-win-dbg-x64', 'pr': 12014, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/31/builds/10858', 'description': 'Auto build in progress on builder pr-win-dbg-x64', 'type': 'build_status'}
2026-10-28T21:03:20.914504	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'shortrev': '471988', 'service': 'pr-win-x64', 'pr': 12014, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/2/builds/10851', 'description': 'Build succeeded on builder pr-win-x64', 'type': 'build_status'}
2026-10-28T21:03:20.014858	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'shortrev': '50fc2a', 'service': 'pr-win-dbg-x64', 'pr': 12014, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/31/builds/10857', 'description': 'Auto build in progress on builder pr-win-dbg-x64', 'type': 'build_status'}
2026-10-28T21:01:25.421352	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'shortrev': '471988', 'service': 'pr-deb-dbg-x64', 'pr': 12014, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/1/builds/10849', 'description': 'Build succeeded on builder pr-deb-dbg-x64', 'type': 'build_status'}
2026-10-28T21:00:47.394402	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'shortrev': '50fc2a', 'service': 'pr-win-x64', 'pr': 12014, 'success': False, 'pending': False, 'url': 'https://dolphin.ci/#/builders/2/builds/10850', 'description': 'Build failed on builder pr-win-x64', 'type': 'build_status'}
2026-10-28T21:00:43.640558	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'shortrev': '471988', 'service': 'pr-win-x64', 'pr': 12014, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/2/builds/10851', 'description': 'Auto build in progress on builder pr-win-x64', 'type': 'build_status'}
2026-10-28T21:00:41.868171	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'shortrev': '50fc2a', 'service': 'pr-win-x64', 'pr': 12014, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/2/builds/10850', 'description': 'Auto build in progress on builder pr-win-x64', 'type': 'build_status'}
2026-10-28T21:00:35.646471	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'shortrev': '471988', 'service': 'pr-win-arm64', 'pr': 12014, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/13/builds/10849', 'description': 'Build succeeded on builder pr-win-arm64', 'type': 'build_status'}
2026-10-28T20:58:28.474798	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'shortrev': '471988', 'service': 'pr-flatpak-arm64', 'pr': 12014, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/44/builds/5938', 'description': 'Build succeeded on builder pr-flatpak-arm64', 'type': 'build_status'}
2026-10-28T20:58:27.511258	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'shortrev': '50fc2a', 'service': 'pr-osx-universal', 'pr': 12014, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/7/builds/10867', 'description': 'Build succeeded on builder pr-osx-universal', 'type': 'build_status'}
2026-10-28T20:58:17.295159	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'shortrev': '471988', 'service': 'pr-osx-universal', 'pr': 12014, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/7/builds/10868', 'description': 'Auto build in progress on builder pr-osx-universal', 'type': 'build_status'}
2026-10-28T20:57:55.583096	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'shortrev': '50fc2a', 'service': 'pr-win-arm64', 'pr': 12014, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/13/builds/10848', 'description': 'Build succeeded on builder pr-win-arm64', 'type': 'build_status'}
2026-10-28T20:57:46.295996	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'shortrev': '471988', 'service': 'pr-win-arm64', 'pr': 12014, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/13/builds/10849', 'description': 'Auto build in progress on builder pr-win-arm64', 'type': 'build_status'}
2026-10-28T20:57:27.053637	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'shortrev': '471988', 'service': 'pr-flatpak-x64', 'pr': 12014, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/43/builds/5998', 'description': 'Build succeeded on builder pr-flatpak-x64', 'type': 'build_status'}
2026-10-28T20:57:00.048714	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'shortrev': '471988', 'service': 'pr-appimage-x64', 'pr': 12014, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/49/builds/102', 'description': 'Build succeeded on builder pr-appimage-x64', 'type': 'build_status'}
2026-10-28T20:55:54.412135	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'shortrev': '50fc2a', 'service': 'pr-deb-dbg-x64', 'pr': 12014, 'success': False, 'pending': False, 'url': 'https://dolphin.ci/#/builders/1/builds/10848', 'description': 'Build failed on builder pr-deb-dbg-x64', 'type': 'build_status'}
2026-10-28T20:55:46.667545	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'shortrev': '471988', 'service': 'pr-deb-dbg-x64', 'pr': 12014, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/1/builds/10849', 'description': 'Auto build in progress on builder pr-deb-dbg-x64', 'type': 'build_status'}
2026-10-28T20:55:45.545340	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'shortrev': '50fc2a', 'service': 'pr-deb-dbg-x64', 'pr': 12014, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/1/builds/10848', 'description': 'Auto build in progress on builder pr-deb-dbg-x64', 'type': 'build_status'}
2026-10-28T20:55:36.901980	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'shortrev': '471988', 'service': 'pr-ubu-x64', 'pr': 12014, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/27/builds/10850', 'description': 'Build succeeded on builder pr-ubu-x64', 'type': 'build_status'}
2026-10-28T20:55:33.200303	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'shortrev': '471988', 'service': 'pr-deb-x64', 'pr': 12014, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/26/builds/10848', 'description': 'Build succeeded on builder pr-deb-x64', 'type': 'build_status'}
2026-10-28T20:55:28.628459	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '471988131524e6856d83ac3672d7853659abe0ce', 'shortrev': '471988', 'service': 'pr-appimage-arm64', 'pr': 12014, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/50/builds/96', 'description': 'Build succeeded on builder pr-appimage-arm64', 'type': 'build_status'}
2026-10-28T20:55:08.291202	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'shortrev': '50fc2a', 'service': 'pr-appimage-x64', 'pr': 12014, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/49/builds/101', 'description': 'Build succeeded on builder pr-appimage-x64', 'type': 'build_status'}

Recent 'command_message' events

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-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'}
2026-10-28T12:30:19.886587	{'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/ 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."}}, '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:27: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:18Z', '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/ 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': 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-28T12:27:20.924430	{'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.", '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. "}}, '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:10:55Z', '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:27:18Z', '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.", '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': 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-28T12:10:58.432690	{'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-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. ", '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': 5, 'created_at': '2026-10-27T06:43:26Z', 'updated_at': '2026-10-28T12:10:55Z', '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:10:55Z', '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. ", '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': 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-28T11:14:13.667848	{'source': 'ghhookparser', 'repo': 'dolphin-emu/sadm', 'author': 'JoshuaVandaele', 'action': 'created', 'id': 208, 'title': 'buildbot: cancel superseded PR builds', 'url': 'https://github.com/dolphin-emu/sadm/pull/208#issuecomment-6467523832', 'safe_author': True, 'body': "The GitHub workflows fails but I'm not sure this is anything I can act on", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/208', 'repository_url': 'https://api.github.com/repos/dolphin-emu/sadm', 'labels_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/208/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/208/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/208/events', 'html_url': 'https://github.com/dolphin-emu/sadm/pull/208', 'id': 6077532402, 'node_id': 'PR_kwDOALAO3s8AAAABLPY2OA', 'number': 208, 'title': 'buildbot: cancel superseded PR builds', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 1, 'created_at': '2026-10-28T10:56:40Z', 'updated_at': '2026-10-28T11:14:12Z', '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/sadm/pulls/208', 'html_url': 'https://github.com/dolphin-emu/sadm/pull/208', 'diff_url': 'https://github.com/dolphin-emu/sadm/pull/208.diff', 'patch_url': 'https://github.com/dolphin-emu/sadm/pull/208.patch', 'merged_at': None}, 'body': "This should cancel earlier jobs that are running after multiple consecutive pushes to the same PR in a short amount of time, which currently hog builders.\nThis is untested since I can't run this locally, but I think this is all that is needed?", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/208/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/sadm/issues/208/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/comments/6467523832', 'html_url': 'https://github.com/dolphin-emu/sadm/pull/208#issuecomment-6467523832', 'issue_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/208', 'id': 6467523832, 'node_id': 'IC_kwDOALAO3s8AAAABgX6U-A', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-28T11:14:11Z', 'updated_at': '2026-10-28T11:14:11Z', 'body': "The GitHub workflows fails but I'm not sure this is anything I can act on", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/comments/6467523832/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11538142, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTUzODE0Mg==', 'name': 'sadm', 'full_name': 'dolphin-emu/sadm', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/sadm', 'description': 'Scripts and configurations for the Dolphin Emulator infrastructure', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/sadm', 'forks_url': 'https://api.github.com/repos/dolphin-emu/sadm/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/sadm/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/sadm/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/sadm/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/sadm/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/sadm/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/sadm/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/sadm/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/sadm/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/sadm/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/sadm/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/sadm/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/sadm/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/sadm/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/sadm/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/sadm/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/sadm/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/sadm/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/sadm/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/sadm/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/sadm/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/sadm/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/sadm/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/sadm/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/sadm/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/sadm/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/sadm/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/sadm/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/sadm/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/sadm/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/sadm/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/sadm/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/sadm/deployments', 'created_at': '2013-07-19T22:07:05Z', 'updated_at': '2026-10-22T12:26:35Z', 'pushed_at': '2026-10-22T12:26:31Z', 'git_url': 'git://github.com/dolphin-emu/sadm.git', 'ssh_url': 'git@github.com:dolphin-emu/sadm.git', 'clone_url': 'https://github.com/dolphin-emu/sadm.git', 'svn_url': 'https://github.com/dolphin-emu/sadm', 'homepage': '', 'size': 1333, 'stargazers_count': 50, 'watchers_count': 50, 'language': 'Nix', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 42, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 4, 'license': {'key': 'mit', 'name': 'MIT License', 'spdx_id': 'MIT', 'url': 'https://api.github.com/licenses/mit', 'node_id': 'MDc6TGljZW5zZTEz'}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': [], 'visibility': 'public', 'forks': 42, 'open_issues': 4, 'watchers': 50, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-28T05:36:36.084465	{'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-6461551396', 'safe_author': True, 'body': '> How exactly should we test this? I\'m currently using a Intel CPU...\r\n\r\n<img width="250" height="47" alt="image" src="https://github.com/user-attachments/assets/1f986321-1527-4429-95c6-ce14565f49f8" />\r\n\r\nMmmm, I suppose outside of seeing if the "Precision Frame Timing" setting produces the same or better frame time variance (smoother line here with a low ± number), with the ImmediateXFB and RushFramePresentation settings off, it would be good to know if `tsc_mhz` is being calculated properly in "x64CPUDetect.cpp", but that would require running dolphin in a debugger because the values aren\'t logged anywhere right now.. :(', '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': 2, 'created_at': '2026-10-26T23:29:19Z', 'updated_at': '2026-10-28T05:36:33Z', 'closed_at': None, 'assignee': None, 'author_association': 'MEMBER', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/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/6461551396', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14956#issuecomment-6461551396', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14956', 'id': 6461551396, 'node_id': 'IC_kwDOALCn2M8AAAABgSNzJA', '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-28T05:36:33Z', 'updated_at': '2026-10-28T05:36:33Z', 'body': '> How exactly should we test this? I\'m currently using a Intel CPU...\r\n\r\n<img width="250" height="47" alt="image" src="https://github.com/user-attachments/assets/1f986321-1527-4429-95c6-ce14565f49f8" />\r\n\r\nMmmm, I suppose outside of seeing if the "Precision Frame Timing" setting produces the same or better frame time variance (smoother line here with a low ± number), with the ImmediateXFB and RushFramePresentation settings off, it would be good to know if `tsc_mhz` is being calculated properly in "x64CPUDetect.cpp", but that would require running dolphin in a debugger because the values aren\'t logged anywhere right now.. :(', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6461551396/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-28T03:31:20Z', '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': 3356, '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': 3356, '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': 'gh_issue_comment'}

Recent 'gh_pull_request' events

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'}
2026-10-27T23:19:16.451300	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'synchronize', '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-27T21:15:19.870428	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'unlabeled', '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': '7dcd15880ec709c893258191919f513e0f4ae200', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-27T21:11:18.684824	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'synchronize', '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': '7dcd15880ec709c893258191919f513e0f4ae200', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-27T21:09:51.518651	{'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': '78e41a2311b02dd0f892cb7bbe56bba8afca6f89', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-27T21:09:26.310394	{'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': '78e41a2311b02dd0f892cb7bbe56bba8afca6f89', '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-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'}
2026-10-26T11:24:31.799175	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'submitted', 'pr_id': 14948, 'pr_title': 'CMake: Only trim flags on MSVC, be a little more selective of what to remove', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14948#pullrequestreview-5651221163', 'comments': [{'id': 4376678525, 'node_id': 'PRRC_kwDOALCn2M8AAAABBN7QfQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4376678525', 'pull_request_review_id': 5651221163, 'diff_hunk': '@@ -1,17 +1,30 @@\n function(dolphin_disable_warnings target)\n-  get_target_property(target_flags ${target} COMPILE_OPTIONS)\n-  set(new_flags)\n-  foreach(flag IN LISTS target_flags)\n-    # all warning flags start with "/W" or "/w" or "-W" or "-w"\n-    if (NOT flag MATCHES "^[-/][Ww]")\n-      list(APPEND new_flags "${flag}")\n-    endif()\n-  endforeach()\n-  set_target_properties(${target} PROPERTIES COMPILE_OPTIONS "${new_flags}")\n+  if(MSVC)\n+    # MSVC warns with D9025 if multiple contradicting warning flags co-exist\n+    get_target_property(target_flags ${target} COMPILE_OPTIONS)\n+    if(target_flags)\n+      # This should match /external:W0, /Wall, /w, /wd4326, /Wv:17, but not /Work\n+      set(warn_re "/(external:)?[Ww](([0-4Xvdeo]|all)[0-9:-]*)?")\n+      # This should match /W4 in $<$<CONFIG:Debug>:/W4>, only /W4 in $<IF:$<CONFIG:Debug>,/F,/W4>, nothing in $<$<CONFIG:Debug>:/I:C:/Work>\n+      set(expres_re "(,|>:)(${warn_re})([,>])")\n+      set(new_flags)\n+      foreach(flag IN LISTS target_flags)\n+        if("${flag}" MATCHES "^${warn_re}$")\n+          continue()\n+        endif()\n+\n+        if("${flag}" MATCHES "^\\\\$<")\n+          while("${flag}" MATCHES "${expres_re}")\n+            string(REGEX REPLACE "${expres_re}" "\\\\1\\\\${CMAKE_MATCH_COUNT}" flag "${flag}")', 'path': 'CMake/DolphinDisableWarnings.cmake', 'position': 27, 'original_position': 27, 'commit_id': 'b3b5f02be632541fa6939c75dedc2dc20c356f87', '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 was convenient while working on it since `CMAKE_MATCH_COUNT` always points at the last matching group (which in this case is always the character right after the warning flag). I could change it to be hardcoded to `\\\\1\\\\6` but I don't think it's worth it (i.e. if someone changes `warn_re` in the future it would silently fail while this would account for that).", 'created_at': '2026-10-26T11:24:29Z', 'updated_at': '2026-10-26T11:24:29Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14948#discussion_r4376678525', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14948', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4376678525'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14948#discussion_r4376678525'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14948'}}, 'original_commit_id': 'b3b5f02be632541fa6939c75dedc2dc20c356f87', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4376678525/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4372879923, '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-28T21:43:31.895829	{'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-28T21:43:31.573310	{'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-28T21:42:45.782628	{'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-28T21:42:44.155652	{'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-28T21:37:44.155337	{'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-28T21:37:42.525338	{'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-28T21:33:31.573092	{'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-28T21:33:31.231809	{'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-28T21:32:42.525006	{'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-28T21:32:40.828588	{'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-28T21:27:40.828155	{'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-28T21:27:39.162075	{'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-28T21:23:31.231555	{'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-28T21:23:30.906687	{'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-28T21:22:39.161652	{'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-28T21:22:37.497498	{'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-28T21:17:37.497112	{'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-28T21:17:35.747213	{'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-28T21:13:30.906462	{'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-28T21:13:30.509441	{'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-28T21:12:35.746842	{'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-28T21:12:34.103479	{'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-28T21:07:34.103123	{'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-28T21:07:32.389535	{'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-28T21:03:30.509126	{'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'}

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-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'}
2026-10-28T19:31:25.636573	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303J\ufeffoshuaVandaele\x03 requested changes to pull request #13704 (CMake: Use CMAKE_CURRENT_SOURCE_DIR instead of CMAKE_SOURCE_DIR): \x1f\x0302https://dolp.in/pr13704#pullrequestreview-5688548206\x03\x1f', 'type': 'notification'}
2026-10-28T19:28:53.703767	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 labeled pull request #13704: CMake: Use CMAKE_CURRENT_SOURCE_DIR instead of CMAKE_SOURCE_DIR (\x0306master\x03...\x0306cmake_source\x03): \x1f\x0302https://dolp.in/pr13704\x03\x1f', 'type': 'notification'}
2026-10-28T19:26:25.217157	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 labeled pull request #13824: Dolphin/allow system tinygltf (\x0306master\x03...\x0306dolphin/allow-system-tinygltf\x03): \x1f\x0302https://dolp.in/pr13824\x03\x1f', 'type': 'notification'}
2026-10-28T19:24:08.053627	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 unlabeled pull request #14322: IOS/USB: Add "Connect USB Keyboard" support for HID (\x0306master\x03...\x0306kbd-hid\x03): \x1f\x0302https://dolp.in/pr14322\x03\x1f', 'type': 'notification'}
2026-10-28T19:23:55.771746	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 unlabeled pull request #14321: IOS/KBD: Move keyboard logic to InputCommon (\x0306master\x03...\x0306kbd-base\x03): \x1f\x0302https://dolp.in/pr14321\x03\x1f', 'type': 'notification'}
2026-10-28T19:12:47.690209	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 commented on #14877 (PerformanceTracker: Small cleanup, properly use RunningVariance for the standard deviation): \x1f\x0302https://dolp.in/pr14877#issuecomment-6478216983\x03\x1f', 'type': 'notification'}
2026-10-28T18:18:56.261989	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 edited a comment on #14957 (Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.): \x1f\x0302https://dolp.in/pr14957#issuecomment-6477041510\x03\x1f', 'type': 'notification'}
2026-10-28T18:18:41.684683	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 commented on #14957 (Common/DolphinQt: Dynamically load FFmpeg and automate downloading of the DLLs.): \x1f\x0302https://dolp.in/pr14957#issuecomment-6477041510\x03\x1f', 'type': 'notification'}
2026-10-28T18:02:56.950682	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 commented on pull request #14951 (Core/TimePlayed: Decouple the TimePlayed tracker thread from CPUManager.): \x1f\x0302https://dolp.in/pr14951#pullrequestreview-5687392027\x03\x1f', 'type': 'notification'}
2026-10-28T18:02:56.320291	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 synchronized pull request #14951: Core/TimePlayed: Decouple the TimePlayed tracker thread from CPUManager. (\x0306master\x03...\x0306time-played-cpumanager-decouple\x03): \x1f\x0302https://dolp.in/pr14951\x03\x1f', 'type': 'notification'}
2026-10-28T16:43:09.195400	{'source': 'notifications', 'msg': 'Update 2 to issue 14171 ("[Android] Add ability to specify options for Turnip driver") by \x0303J\ufeffosJuice\x03 - \x1f\x0302https://dolp.in/i14171/2\x03\x1f', 'type': 'notification'}
2026-10-28T16:14:29.282131	{'source': 'notifications', 'msg': "[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303S\ufeffuperSamus\x03 marked ready for review pull request #14888: Jit: Don't invalidate instruction block cache with dcbx (\x0306master\x03...\x0306dcbx-dont-clear-icache\x03): \x1f\x0302https://dolp.in/pr14888\x03\x1f", 'type': 'notification'}
2026-10-28T16:14:26.634899	{'source': 'notifications', 'msg': "[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303S\ufeffuperSamus\x03 edited pull request #14888: Jit: Don't invalidate instruction block cache with dcbx (\x0306master\x03...\x0306dcbx-dont-clear-icache\x03): \x1f\x0302https://dolp.in/pr14888\x03\x1f", 'type': 'notification'}

Recent 'pull_request_fifoci_status' events

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'}
2026-10-28T17:35:55.943796	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'ffc287903e52f5c53b4e37c98eecc73784c0a66a', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14888, 'type': 'pull_request_fifoci_status'}
2026-10-28T17:24:01.233078	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'ffc287903e52f5c53b4e37c98eecc73784c0a66a', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 14888, 'type': 'pull_request_fifoci_status'}
2026-10-28T17:07:31.753525	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'ffc287903e52f5c53b4e37c98eecc73784c0a66a', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14888, 'type': 'pull_request_fifoci_status'}
2026-10-28T16:48:38.024516	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'ffc287903e52f5c53b4e37c98eecc73784c0a66a', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 14888, 'type': 'pull_request_fifoci_status'}
2026-10-28T16:37:48.361824	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'ffc287903e52f5c53b4e37c98eecc73784c0a66a', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 14888, 'type': 'pull_request_fifoci_status'}
2026-10-28T12:31:12.513809	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'ec0f2e64591fdce5b505b8fbf9b02328462194d0', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14927, 'type': 'pull_request_fifoci_status'}
2026-10-28T12:19:03.219008	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'ec0f2e64591fdce5b505b8fbf9b02328462194d0', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 14927, 'type': 'pull_request_fifoci_status'}
2026-10-28T12:00:21.042927	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'ec0f2e64591fdce5b505b8fbf9b02328462194d0', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14927, 'type': 'pull_request_fifoci_status'}
2026-10-28T11:49:27.163525	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'ec0f2e64591fdce5b505b8fbf9b02328462194d0', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 14927, 'type': 'pull_request_fifoci_status'}
2026-10-28T11:37:01.674887	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'ec0f2e64591fdce5b505b8fbf9b02328462194d0', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 14927, 'type': 'pull_request_fifoci_status'}
2026-10-28T01:57:52.595569	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'e212bcdf6384b22ee8559b51bd932da0e0d5e008', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14933, 'type': 'pull_request_fifoci_status'}
2026-10-28T01:48:13.868001	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'e212bcdf6384b22ee8559b51bd932da0e0d5e008', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 14933, 'type': 'pull_request_fifoci_status'}
2026-10-28T01:35:03.891416	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'e212bcdf6384b22ee8559b51bd932da0e0d5e008', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 14933, 'type': 'pull_request_fifoci_status'}
2026-10-28T01:33:46.993386	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'e212bcdf6384b22ee8559b51bd932da0e0d5e008', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14933, 'type': 'pull_request_fifoci_status'}
2026-10-28T01:24:10.980858	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'e212bcdf6384b22ee8559b51bd932da0e0d5e008', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 14933, 'type': 'pull_request_fifoci_status'}

Recent 'raw_bb_hook' events

2026-10-28T21:34:28.614252	{'source': 'webserver', 'raw': {'buildid': 194817, 'number': 9506, 'builderid': 35, 'buildrequestid': 195394, 'workerid': 5, 'masterid': 1, 'started_at': 1793222732, 'complete_at': 1793223264, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildnumber': [9506, 'Build'], 'project': ['', 'Build'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['471988', 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'builderid': [35, 'Builder'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'basedir': ['/var/lib/fifoci-worker/worker', 'Worker'], 'builddir': ['/var/lib/fifoci-worker/worker/pr-fifoci-sw-lin-mesa', 'Worker'], 'warnings-count': [1, 'WarningCountingShellCommand'], 'branchname': ['pr-12014', 'Trigger'], 'pr_id': [12014, 'Trigger'], 'workername': ['altair-fifoci', 'Worker'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'got_revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'GitNoBranch'], 'buildername': ['pr-fifoci-sw-lin-mesa', 'Builder'], 'branch': ['refs/pull/12014/head', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build']}, 'buildrequest': {'buildrequestid': 195394, 'buildsetid': 43809, 'builderid': 35, 'priority': 0, 'claimed': True, 'claimed_at': 1793222732, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220935, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43809, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1793220935, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194801, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, 'patch': None}]}, 'parentbuild': {'buildid': 194801, 'number': 10850, 'builderid': 27, 'buildrequestid': 195384, 'workerid': 10, 'masterid': 1, 'started_at': 1793220860, 'complete_at': 1793220935, '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/9506'}, 'type': 'raw_bb_hook'}
2026-10-28T21:31:36.861742	{'source': 'webserver', 'raw': {'buildid': 194816, 'number': 9202, 'builderid': 21, 'buildrequestid': 195399, 'workerid': 8, 'masterid': 1, 'started_at': 1793222446, 'complete_at': 1793223093, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'builderid': [21, 'Builder'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'shortrev': ['471988', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'branch': ['refs/pull/12014/head', 'Build'], 'repository': ['', 'Build'], 'got_revision': ['ca98b3030bcc70e67158ce899a5589aa2ec65d32', 'GitNoBranch'], 'branchname': ['pr-12014', 'Trigger'], 'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Trigger'], 'buildnumber': [9202, 'Build'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'codebase': ['', 'Build'], 'builddir': ['/Users/ci/worker/base/pr-fifoci-mtl-osx-m1', 'Worker'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'pr_id': [12014, 'Trigger'], 'buildername': ['pr-fifoci-mtl-osx-m1', 'Builder'], 'workername': ['osx-m1', 'Worker'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'warnings-count': [114, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 195399, 'buildsetid': 43812, 'builderid': 21, 'priority': 0, 'claimed': True, 'claimed_at': 1793222446, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793221785, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43812, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1793221785, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194808, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, 'patch': None}]}, 'parentbuild': {'buildid': 194808, 'number': 10868, 'builderid': 7, 'buildrequestid': 195378, 'workerid': 8, 'masterid': 1, 'started_at': 1793221096, 'complete_at': 1793221785, '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/9202'}, 'type': 'raw_bb_hook'}
2026-10-28T21:25:37.068273	{'source': 'webserver', 'raw': {'buildid': 194817, 'number': 9506, 'builderid': 35, 'buildrequestid': 195394, 'workerid': 5, 'masterid': 1, 'started_at': 1793222732, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildnumber': [9506, 'Build'], 'project': ['', 'Build'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['471988', 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'builderid': [35, 'Builder'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'branchname': ['pr-12014', 'Trigger'], 'pr_id': [12014, 'Trigger'], 'workername': ['altair-fifoci', 'Worker'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'buildername': ['pr-fifoci-sw-lin-mesa', 'Builder'], 'branch': ['refs/pull/12014/head', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build']}, 'buildrequest': {'buildrequestid': 195394, 'buildsetid': 43809, 'builderid': 35, 'priority': 0, 'claimed': True, 'claimed_at': 1793222732, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220935, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43809, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1793220935, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194801, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, 'patch': None}]}, 'parentbuild': {'buildid': 194801, 'number': 10850, 'builderid': 27, 'buildrequestid': 195384, 'workerid': 10, 'masterid': 1, 'started_at': 1793220860, 'complete_at': 1793220935, '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/9506'}, 'type': 'raw_bb_hook'}
2026-10-28T21:25:36.857376	{'source': 'webserver', 'raw': {'buildid': 194814, 'number': 5493, 'builderid': 41, 'buildrequestid': 195395, 'workerid': 5, 'masterid': 1, 'started_at': 1793221944, 'complete_at': 1793222732, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Trigger'], 'pr_id': [12014, 'Trigger'], 'codebase': ['', 'Build'], 'basedir': ['/var/lib/fifoci-worker/worker', 'Worker'], 'got_revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'GitNoBranch'], 'builderid': [41, 'Builder'], 'branch': ['refs/pull/12014/head', 'Build'], 'repository': ['', 'Build'], 'warnings-count': [1, 'WarningCountingShellCommand'], 'branchname': ['pr-12014', 'Trigger'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['471988', 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'workername': ['altair-fifoci', 'Worker'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-vk-lin-mesa', 'Builder'], 'buildnumber': [5493, 'Build'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'project': ['', 'Build'], 'builddir': ['/var/lib/fifoci-worker/worker/pr-fifoci-vk-lin-mesa', 'Worker']}, 'buildrequest': {'buildrequestid': 195395, 'buildsetid': 43809, 'builderid': 41, 'priority': 0, 'claimed': True, 'claimed_at': 1793221944, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220935, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43809, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1793220935, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194801, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, 'patch': None}]}, 'parentbuild': {'buildid': 194801, 'number': 10850, 'builderid': 27, 'buildrequestid': 195384, 'workerid': 10, 'masterid': 1, 'started_at': 1793220860, 'complete_at': 1793220935, '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/5493'}, 'type': 'raw_bb_hook'}
2026-10-28T21:20:50.688035	{'source': 'webserver', 'raw': {'buildid': 194815, 'number': 9201, 'builderid': 21, 'buildrequestid': 195397, 'workerid': 8, 'masterid': 1, 'started_at': 1793222444, 'complete_at': 1793222446, 'locks_duration_s': 0, 'complete': True, 'state_string': 'failed update (failure)', 'results': 2, 'properties': {'branchname': ['pr-12014', 'Trigger'], 'shortrev': ['50fc2a', 'Trigger'], 'pr_id': [12014, 'Trigger'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'buildername': ['pr-fifoci-mtl-osx-m1', 'Builder'], 'workername': ['osx-m1', 'Worker'], 'headrev': ['50fc2a8741cef4199df86072fb92345ad0cc6242', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'builderid': [21, 'Builder'], 'branch': ['refs/pull/12014/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'buildnumber': [9201, 'Build'], 'revision': ['50fc2a8741cef4199df86072fb92345ad0cc6242', 'Build'], 'codebase': ['', 'Build'], 'builddir': ['/Users/ci/worker/base/pr-fifoci-mtl-osx-m1', 'Worker']}, 'buildrequest': {'buildrequestid': 195397, 'buildsetid': 43810, 'builderid': 21, 'priority': 0, 'claimed': True, 'claimed_at': 1793222444, 'claimed_by_masterid': 1, 'complete': True, 'results': 2, 'submitted_at': 1793221093, 'complete_at': 1793222446, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43810, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1793221093, 'complete': True, 'complete_at': 1793222446, 'results': 2, 'parent_buildid': 194786, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13155, 'branch': 'refs/pull/12014/head', 'revision': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220376, 'patch': None}]}, 'parentbuild': {'buildid': 194786, 'number': 10867, 'builderid': 7, 'buildrequestid': 195364, 'workerid': 8, 'masterid': 1, 'started_at': 1793220376, 'complete_at': 1793221093, '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/9201'}, 'type': 'raw_bb_hook'}
2026-10-28T21:20:49.574969	{'source': 'webserver', 'raw': {'buildid': 194816, 'number': 9202, 'builderid': 21, 'buildrequestid': 195399, 'workerid': 8, 'masterid': 1, 'started_at': 1793222446, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'builderid': [21, 'Builder'], 'shortrev': ['471988', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'branch': ['refs/pull/12014/head', 'Build'], 'repository': ['', 'Build'], 'branchname': ['pr-12014', 'Trigger'], 'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Trigger'], 'buildnumber': [9202, 'Build'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'codebase': ['', 'Build'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'pr_id': [12014, 'Trigger'], 'buildername': ['pr-fifoci-mtl-osx-m1', 'Builder'], 'workername': ['osx-m1', 'Worker'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build']}, 'buildrequest': {'buildrequestid': 195399, 'buildsetid': 43812, 'builderid': 21, 'priority': 0, 'claimed': True, 'claimed_at': 1793222446, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793221785, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43812, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1793221785, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194808, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, 'patch': None}]}, 'parentbuild': {'buildid': 194808, 'number': 10868, 'builderid': 7, 'buildrequestid': 195378, 'workerid': 8, 'masterid': 1, 'started_at': 1793221096, 'complete_at': 1793221785, '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/9202'}, 'type': 'raw_bb_hook'}
2026-10-28T21:20:47.815293	{'source': 'webserver', 'raw': {'buildid': 194815, 'number': 9201, 'builderid': 21, 'buildrequestid': 195397, 'workerid': 8, 'masterid': 1, 'started_at': 1793222444, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branchname': ['pr-12014', 'Trigger'], 'shortrev': ['50fc2a', 'Trigger'], 'pr_id': [12014, 'Trigger'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'buildername': ['pr-fifoci-mtl-osx-m1', 'Builder'], 'workername': ['osx-m1', 'Worker'], 'headrev': ['50fc2a8741cef4199df86072fb92345ad0cc6242', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'builderid': [21, 'Builder'], 'branch': ['refs/pull/12014/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'buildnumber': [9201, 'Build'], 'revision': ['50fc2a8741cef4199df86072fb92345ad0cc6242', 'Build'], 'codebase': ['', 'Build']}, 'buildrequest': {'buildrequestid': 195397, 'buildsetid': 43810, 'builderid': 21, 'priority': 0, 'claimed': True, 'claimed_at': 1793222444, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793221093, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43810, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1793221093, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194786, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13155, 'branch': 'refs/pull/12014/head', 'revision': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220376, 'patch': None}]}, 'parentbuild': {'buildid': 194786, 'number': 10867, 'builderid': 7, 'buildrequestid': 195364, 'workerid': 8, 'masterid': 1, 'started_at': 1793220376, 'complete_at': 1793221093, '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/9201'}, 'type': 'raw_bb_hook'}
2026-10-28T21:20:47.755268	{'source': 'webserver', 'raw': {'buildid': 194813, 'number': 9200, 'builderid': 19, 'buildrequestid': 195398, 'workerid': 8, 'masterid': 1, 'started_at': 1793221785, 'complete_at': 1793222444, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-12014', 'Trigger'], 'buildername': ['pr-fifoci-mvk-osx-m1', 'Builder'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'warnings-count': [114, 'WarningCountingShellCommand'], 'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Trigger'], 'builderid': [19, 'Builder'], 'repository': ['', 'Build'], 'shortrev': ['471988', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'buildnumber': [9200, 'Build'], 'branch': ['refs/pull/12014/head', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'builddir': ['/Users/ci/worker/base/pr-fifoci-mvk-osx-m1', 'Worker'], 'got_revision': ['ca98b3030bcc70e67158ce899a5589aa2ec65d32', 'GitNoBranch'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'pr_id': [12014, 'Trigger'], 'workername': ['osx-m1', 'Worker'], 'codebase': ['', 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker']}, 'buildrequest': {'buildrequestid': 195398, 'buildsetid': 43812, 'builderid': 19, 'priority': 0, 'claimed': True, 'claimed_at': 1793221785, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793221785, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43812, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1793221785, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194808, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, 'patch': None}]}, 'parentbuild': {'buildid': 194808, 'number': 10868, 'builderid': 7, 'buildrequestid': 195378, 'workerid': 8, 'masterid': 1, 'started_at': 1793221096, 'complete_at': 1793221785, '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/9200'}, 'type': 'raw_bb_hook'}
2026-10-28T21:12:29.093967	{'source': 'webserver', 'raw': {'buildid': 194805, 'number': 9506, 'builderid': 10, 'buildrequestid': 195393, 'workerid': 5, 'masterid': 1, 'started_at': 1793220935, 'complete_at': 1793221944, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Trigger'], 'shortrev': ['471988', 'Trigger'], 'pr_id': [12014, 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'buildnumber': [9506, 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'branchname': ['pr-12014', 'Trigger'], 'buildername': ['pr-fifoci-ogl-lin-mesa', 'Builder'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'project': ['', 'Build'], 'builderid': [10, 'Builder'], 'branch': ['refs/pull/12014/head', 'Build'], 'builddir': ['/var/lib/fifoci-worker/worker/pr-fifoci-ogl-lin-mesa', 'Worker'], 'workername': ['altair-fifoci', 'Worker'], 'repository': ['', 'Build'], 'basedir': ['/var/lib/fifoci-worker/worker', 'Worker'], 'got_revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'GitNoBranch'], 'warnings-count': [1, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 195393, 'buildsetid': 43809, 'builderid': 10, 'priority': 0, 'claimed': True, 'claimed_at': 1793220935, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220935, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43809, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1793220935, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194801, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, 'patch': None}]}, 'parentbuild': {'buildid': 194801, 'number': 10850, 'builderid': 27, 'buildrequestid': 195384, 'workerid': 10, 'masterid': 1, 'started_at': 1793220860, 'complete_at': 1793220935, '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/9506'}, 'type': 'raw_bb_hook'}
2026-10-28T21:12:29.087024	{'source': 'webserver', 'raw': {'buildid': 194814, 'number': 5493, 'builderid': 41, 'buildrequestid': 195395, 'workerid': 5, 'masterid': 1, 'started_at': 1793221944, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Trigger'], 'pr_id': [12014, 'Trigger'], 'codebase': ['', 'Build'], 'builderid': [41, 'Builder'], 'branch': ['refs/pull/12014/head', 'Build'], 'repository': ['', 'Build'], 'branchname': ['pr-12014', 'Trigger'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['471988', 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'workername': ['altair-fifoci', 'Worker'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-vk-lin-mesa', 'Builder'], 'buildnumber': [5493, 'Build'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 195395, 'buildsetid': 43809, 'builderid': 41, 'priority': 0, 'claimed': True, 'claimed_at': 1793221944, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220935, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43809, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1793220935, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194801, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, 'patch': None}]}, 'parentbuild': {'buildid': 194801, 'number': 10850, 'builderid': 27, 'buildrequestid': 195384, 'workerid': 10, 'masterid': 1, 'started_at': 1793220860, 'complete_at': 1793220935, '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/5493'}, 'type': 'raw_bb_hook'}
2026-10-28T21:09:48.812430	{'source': 'webserver', 'raw': {'buildid': 194813, 'number': 9200, 'builderid': 19, 'buildrequestid': 195398, 'workerid': 8, 'masterid': 1, 'started_at': 1793221785, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branchname': ['pr-12014', 'Trigger'], 'buildername': ['pr-fifoci-mvk-osx-m1', 'Builder'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Trigger'], 'builderid': [19, 'Builder'], 'repository': ['', 'Build'], 'shortrev': ['471988', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'buildnumber': [9200, 'Build'], 'branch': ['refs/pull/12014/head', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'pr_id': [12014, 'Trigger'], 'workername': ['osx-m1', 'Worker'], 'codebase': ['', 'Build']}, 'buildrequest': {'buildrequestid': 195398, 'buildsetid': 43812, 'builderid': 19, 'priority': 0, 'claimed': True, 'claimed_at': 1793221785, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793221785, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43812, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1793221785, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194808, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, 'patch': None}]}, 'parentbuild': {'buildid': 194808, 'number': 10868, 'builderid': 7, 'buildrequestid': 195378, 'workerid': 8, 'masterid': 1, 'started_at': 1793221096, 'complete_at': 1793221785, '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/9200'}, 'type': 'raw_bb_hook'}
2026-10-28T21:09:45.704352	{'source': 'webserver', 'raw': {'buildid': 194808, 'number': 10868, 'builderid': 7, 'buildrequestid': 195378, 'workerid': 8, 'masterid': 1, 'started_at': 1793221096, 'complete_at': 1793221785, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['471988', 'Change'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Change'], 'buildername': ['pr-osx-universal', 'Builder'], 'branchname': ['pr-12014', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'repository': ['', 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'pr_id': [12014, 'Change'], 'workername': ['osx-m1', 'Worker'], 'branch': ['refs/pull/12014/head', 'Build'], 'codebase': ['', 'Build'], 'builddir': ['/Users/ci/worker/base/pr-osx-universal', 'Worker'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [7, 'Builder'], 'buildnumber': [10868, 'Build'], 'got_revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 195378, 'buildsetid': 43807, 'builderid': 7, 'priority': 0, 'claimed': True, 'claimed_at': 1793221096, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220744, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43807, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793220744, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, '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/10868'}, 'type': 'raw_bb_hook'}
2026-10-28T21:06:01.102334	{'source': 'webserver', 'raw': {'buildid': 194812, 'number': 10858, 'builderid': 31, 'buildrequestid': 195385, 'workerid': 4, 'masterid': 1, 'started_at': 1793221395, 'complete_at': 1793221556, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-win-dbg-x64', 'Builder'], 'workername': ['windows', 'Worker'], 'repository': ['', 'Build'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'pr_id': [12014, 'Change'], 'buildnumber': [10858, 'Build'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'codebase': ['', 'Build'], 'builddir': ['c:\\buildbot\\pr-win-dbg-x64', 'Worker'], 'build_url': ['https://dl.dolphin-emu.org/prs/42/85/pr-12014-dolphin-latest-dbg-x64.7z', 'SetProperty'], 'branchname': ['pr-12014', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [31, 'Builder'], 'branch': ['refs/pull/12014/head', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'basedir': ['c:\\buildbot', 'Worker'], 'sln_exists': ['false', 'SetPropertyFromCommand Step'], 'warnings-count': [7, 'WarningCountingShellCommand'], 'shortrev': ['471988', 'Change'], 'got_revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 195385, 'buildsetid': 43807, 'builderid': 31, 'priority': 0, 'claimed': True, 'claimed_at': 1793221395, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220744, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43807, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793220744, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, '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/10858'}, 'type': 'raw_bb_hook'}
2026-10-28T21:03:23.497190	{'source': 'webserver', 'raw': {'buildid': 194811, 'number': 10857, 'builderid': 31, 'buildrequestid': 195371, 'workerid': 4, 'masterid': 1, 'started_at': 1793221394, 'complete_at': 1793221395, 'locks_duration_s': 0, 'complete': True, 'state_string': 'failed update (failure)', 'results': 2, 'properties': {'pr_id': [12014, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'workername': ['windows', 'Worker'], 'revision': ['50fc2a8741cef4199df86072fb92345ad0cc6242', 'Build'], 'project': ['', 'Build'], 'basedir': ['c:\\buildbot', 'Worker'], 'buildername': ['pr-win-dbg-x64', 'Builder'], 'buildnumber': [10857, 'Build'], 'repository': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'branchname': ['pr-12014', 'Change'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'headrev': ['50fc2a8741cef4199df86072fb92345ad0cc6242', 'Change'], 'shortrev': ['50fc2a', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'builderid': [31, 'Builder'], 'branch': ['refs/pull/12014/head', 'Build'], 'codebase': ['', 'Build'], 'builddir': ['c:\\buildbot\\pr-win-dbg-x64', 'Worker']}, 'buildrequest': {'buildrequestid': 195371, 'buildsetid': 43806, 'builderid': 31, 'priority': 0, 'claimed': True, 'claimed_at': 1793221394, 'claimed_by_masterid': 1, 'complete': True, 'results': 2, 'submitted_at': 1793220376, 'complete_at': 1793221395, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43806, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793220376, 'complete': True, 'complete_at': 1793221395, 'results': 2, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13155, 'branch': 'refs/pull/12014/head', 'revision': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220376, '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/10857'}, 'type': 'raw_bb_hook'}
2026-10-28T21:03:20.814617	{'source': 'webserver', 'raw': {'buildid': 194812, 'number': 10858, 'builderid': 31, 'buildrequestid': 195385, 'workerid': 4, 'masterid': 1, 'started_at': 1793221395, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-win-dbg-x64', 'Builder'], 'workername': ['windows', 'Worker'], 'repository': ['', 'Build'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'pr_id': [12014, 'Change'], 'buildnumber': [10858, 'Build'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'codebase': ['', 'Build'], 'branchname': ['pr-12014', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [31, 'Builder'], 'branch': ['refs/pull/12014/head', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'shortrev': ['471988', 'Change']}, 'buildrequest': {'buildrequestid': 195385, 'buildsetid': 43807, 'builderid': 31, 'priority': 0, 'claimed': True, 'claimed_at': 1793221395, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220744, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43807, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793220744, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, '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/10858'}, 'type': 'raw_bb_hook'}
2026-10-28T21:03:19.491264	{'source': 'webserver', 'raw': {'buildid': 194810, 'number': 10851, 'builderid': 2, 'buildrequestid': 195377, 'workerid': 4, 'masterid': 1, 'started_at': 1793221236, 'complete_at': 1793221394, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-12014', 'Change'], 'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Change'], 'codebase': ['', 'Build'], 'got_revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'GitNoBranch'], 'sln_exists': ['false', 'SetPropertyFromCommand Step'], 'pr_id': [12014, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [2, 'Builder'], 'basedir': ['c:\\buildbot', 'Worker'], 'buildnumber': [10851, 'Build'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'builddir': ['c:\\buildbot\\pr-win-x64', 'Worker'], 'warnings-count': [7, 'WarningCountingShellCommand'], 'build_url': ['https://dl.dolphin-emu.org/prs/10/28/pr-12014-dolphin-latest-x64.7z', 'SetProperty'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['471988', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-win-x64', 'Builder'], 'workername': ['windows', 'Worker'], 'branch': ['refs/pull/12014/head', 'Build'], 'repository': ['', 'Build']}, 'buildrequest': {'buildrequestid': 195377, 'buildsetid': 43807, 'builderid': 2, 'priority': 0, 'claimed': True, 'claimed_at': 1793221236, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220744, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43807, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793220744, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, '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/10851'}, 'type': 'raw_bb_hook'}
2026-10-28T21:03:19.297670	{'source': 'webserver', 'raw': {'buildid': 194811, 'number': 10857, 'builderid': 31, 'buildrequestid': 195371, 'workerid': 4, 'masterid': 1, 'started_at': 1793221394, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'pr_id': [12014, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'workername': ['windows', 'Worker'], 'revision': ['50fc2a8741cef4199df86072fb92345ad0cc6242', 'Build'], 'project': ['', 'Build'], 'buildername': ['pr-win-dbg-x64', 'Builder'], 'buildnumber': [10857, 'Build'], 'repository': ['', 'Build'], 'branchname': ['pr-12014', 'Change'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'headrev': ['50fc2a8741cef4199df86072fb92345ad0cc6242', 'Change'], 'shortrev': ['50fc2a', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'builderid': [31, 'Builder'], 'branch': ['refs/pull/12014/head', 'Build'], 'codebase': ['', 'Build']}, 'buildrequest': {'buildrequestid': 195371, 'buildsetid': 43806, 'builderid': 31, 'priority': 0, 'claimed': True, 'claimed_at': 1793221394, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220376, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43806, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793220376, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13155, 'branch': 'refs/pull/12014/head', 'revision': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220376, '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/10857'}, 'type': 'raw_bb_hook'}
2026-10-28T21:01:24.450922	{'source': 'webserver', 'raw': {'buildid': 194804, 'number': 10849, 'builderid': 1, 'buildrequestid': 195376, 'workerid': 9, 'masterid': 1, 'started_at': 1793220933, 'complete_at': 1793221279, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'pr_id': [12014, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [1, 'Builder'], 'buildnumber': [10849, 'Build'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Change'], 'codebase': ['', 'Build'], 'branchname': ['pr-12014', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-deb-dbg-x64', 'Builder'], 'workername': ['debian', 'Worker'], 'shortrev': ['471988', 'Change'], 'branch': ['refs/pull/12014/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'got_revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'GitNoBranch'], 'basedir': ['/buildbot', 'Worker'], 'builddir': ['/buildbot/pr-deb-dbg-x64', 'Worker'], 'warnings-count': [1, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 195376, 'buildsetid': 43807, 'builderid': 1, 'priority': 0, 'claimed': True, 'claimed_at': 1793220933, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220744, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43807, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793220744, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, '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/10849'}, 'type': 'raw_bb_hook'}
2026-10-28T21:00:46.582560	{'source': 'webserver', 'raw': {'buildid': 194809, 'number': 10850, 'builderid': 2, 'buildrequestid': 195363, 'workerid': 4, 'masterid': 1, 'started_at': 1793221234, 'complete_at': 1793221236, 'locks_duration_s': 0, 'complete': True, 'state_string': 'failed update (failure)', 'results': 2, 'properties': {'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'branch': ['refs/pull/12014/head', 'Build'], 'basedir': ['c:\\buildbot', 'Worker'], 'shortrev': ['50fc2a', 'Change'], 'builderid': [2, 'Builder'], 'repository': ['', 'Build'], 'builddir': ['c:\\buildbot\\pr-win-x64', 'Worker'], 'branchname': ['pr-12014', 'Change'], 'pr_id': [12014, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'workername': ['windows', 'Worker'], 'buildnumber': [10850, 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'headrev': ['50fc2a8741cef4199df86072fb92345ad0cc6242', 'Change'], 'buildername': ['pr-win-x64', 'Builder'], 'revision': ['50fc2a8741cef4199df86072fb92345ad0cc6242', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build']}, 'buildrequest': {'buildrequestid': 195363, 'buildsetid': 43806, 'builderid': 2, 'priority': 0, 'claimed': True, 'claimed_at': 1793221234, 'claimed_by_masterid': 1, 'complete': True, 'results': 2, 'submitted_at': 1793220376, 'complete_at': 1793221236, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43806, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793220376, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13155, 'branch': 'refs/pull/12014/head', 'revision': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220376, '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/10850'}, 'type': 'raw_bb_hook'}
2026-10-28T21:00:42.908358	{'source': 'webserver', 'raw': {'buildid': 194810, 'number': 10851, 'builderid': 2, 'buildrequestid': 195377, 'workerid': 4, 'masterid': 1, 'started_at': 1793221236, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branchname': ['pr-12014', 'Change'], 'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Change'], 'codebase': ['', 'Build'], 'pr_id': [12014, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [2, 'Builder'], 'buildnumber': [10851, 'Build'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'shortrev': ['471988', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-win-x64', 'Builder'], 'workername': ['windows', 'Worker'], 'branch': ['refs/pull/12014/head', 'Build'], 'repository': ['', 'Build']}, 'buildrequest': {'buildrequestid': 195377, 'buildsetid': 43807, 'builderid': 2, 'priority': 0, 'claimed': True, 'claimed_at': 1793221236, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220744, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43807, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793220744, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, '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/10851'}, 'type': 'raw_bb_hook'}
2026-10-28T21:00:41.136798	{'source': 'webserver', 'raw': {'buildid': 194809, 'number': 10850, 'builderid': 2, 'buildrequestid': 195363, 'workerid': 4, 'masterid': 1, 'started_at': 1793221234, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'branch': ['refs/pull/12014/head', 'Build'], 'shortrev': ['50fc2a', 'Change'], 'builderid': [2, 'Builder'], 'repository': ['', 'Build'], 'branchname': ['pr-12014', 'Change'], 'pr_id': [12014, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'workername': ['windows', 'Worker'], 'buildnumber': [10850, 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'headrev': ['50fc2a8741cef4199df86072fb92345ad0cc6242', 'Change'], 'buildername': ['pr-win-x64', 'Builder'], 'revision': ['50fc2a8741cef4199df86072fb92345ad0cc6242', 'Build']}, 'buildrequest': {'buildrequestid': 195363, 'buildsetid': 43806, 'builderid': 2, 'priority': 0, 'claimed': True, 'claimed_at': 1793221234, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220376, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43806, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793220376, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13155, 'branch': 'refs/pull/12014/head', 'revision': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220376, '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/10850'}, 'type': 'raw_bb_hook'}
2026-10-28T21:00:34.901187	{'source': 'webserver', 'raw': {'buildid': 194806, 'number': 10849, 'builderid': 13, 'buildrequestid': 195381, 'workerid': 4, 'masterid': 1, 'started_at': 1793221065, 'complete_at': 1793221234, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-12014', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [13, 'Builder'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'basedir': ['c:\\buildbot', 'Worker'], 'build_url': ['https://dl.dolphin-emu.org/prs/5f/14/pr-12014-dolphin-latest-arm64.7z', 'SetProperty'], 'pr_id': [12014, 'Change'], 'builddir': ['c:\\buildbot\\pr-win-arm64', 'Worker'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Change'], 'shortrev': ['471988', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-win-arm64', 'Builder'], 'workername': ['windows', 'Worker'], 'buildnumber': [10849, 'Build'], 'branch': ['refs/pull/12014/head', 'Build'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'got_revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'GitNoBranch'], 'sln_exists': ['false', 'SetPropertyFromCommand Step'], 'warnings-count': [7, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 195381, 'buildsetid': 43807, 'builderid': 13, 'priority': 0, 'claimed': True, 'claimed_at': 1793221065, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220744, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43807, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793220744, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, '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/10849'}, 'type': 'raw_bb_hook'}
2026-10-28T20:58:31.340133	{'source': 'webserver', 'raw': {'buildid': 194807, 'number': 9199, 'builderid': 19, 'buildrequestid': 195396, 'workerid': 8, 'masterid': 1, 'started_at': 1793221093, 'complete_at': 1793221096, 'locks_duration_s': 0, 'complete': True, 'state_string': 'update (failure)', 'results': 2, 'properties': {'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'workername': ['osx-m1', 'Worker'], 'revision': ['50fc2a8741cef4199df86072fb92345ad0cc6242', 'Build'], 'codebase': ['', 'Build'], 'branchname': ['pr-12014', 'Trigger'], 'headrev': ['50fc2a8741cef4199df86072fb92345ad0cc6242', 'Trigger'], 'branch': ['refs/pull/12014/head', 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'shortrev': ['50fc2a', 'Trigger'], 'pr_id': [12014, 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'buildername': ['pr-fifoci-mvk-osx-m1', 'Builder'], 'builderid': [19, 'Builder'], 'buildnumber': [9199, 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'builddir': ['/Users/ci/worker/base/pr-fifoci-mvk-osx-m1', 'Worker']}, 'buildrequest': {'buildrequestid': 195396, 'buildsetid': 43810, 'builderid': 19, 'priority': 0, 'claimed': True, 'claimed_at': 1793221093, 'claimed_by_masterid': 1, 'complete': True, 'results': 2, 'submitted_at': 1793221093, 'complete_at': 1793221096, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43810, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1793221093, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 194786, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13155, 'branch': 'refs/pull/12014/head', 'revision': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220376, 'patch': None}]}, 'parentbuild': {'buildid': 194786, 'number': 10867, 'builderid': 7, 'buildrequestid': 195364, 'workerid': 8, 'masterid': 1, 'started_at': 1793220376, 'complete_at': 1793221093, '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/9199'}, 'type': 'raw_bb_hook'}
2026-10-28T20:58:27.319795	{'source': 'webserver', 'raw': {'buildid': 194794, 'number': 5938, 'builderid': 44, 'buildrequestid': 195387, 'workerid': 14, 'masterid': 1, 'started_at': 1793220814, 'complete_at': 1793221107, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'headrev': ['471988131524e6856d83ac3672d7853659abe0ce', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'codebase': ['', 'Build'], 'branchname': ['pr-12014', 'Change'], 'buildername': ['pr-flatpak-arm64', 'Builder'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'shortrev': ['471988', 'Change'], 'builderid': [44, 'Builder'], 'buildnumber': [5938, 'Build'], 'revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'Build'], 'builddir': ['/var/lib/flatpak-worker/worker/pr-flatpak-arm64', 'Worker'], 'got_revision': ['471988131524e6856d83ac3672d7853659abe0ce', 'GitNoBranch'], 'pr_id': [12014, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'workername': ['deneb-flatpak', 'Worker'], 'basedir': ['/var/lib/flatpak-worker/worker', 'Worker'], 'branch': ['refs/pull/12014/head', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'fm_build_url': ['https://flat-manager.dolphin-emu.org/api/v1/build/13258', 'SetPropertyFromCommand Step']}, 'buildrequest': {'buildrequestid': 195387, 'buildsetid': 43807, 'builderid': 44, 'priority': 0, 'claimed': True, 'claimed_at': 1793220814, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220744, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43807, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793220744, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13156, 'branch': 'refs/pull/12014/head', 'revision': '471988131524e6856d83ac3672d7853659abe0ce', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220744, '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/5938'}, 'type': 'raw_bb_hook'}
2026-10-28T20:58:26.767361	{'source': 'webserver', 'raw': {'buildid': 194786, 'number': 10867, 'builderid': 7, 'buildrequestid': 195364, 'workerid': 8, 'masterid': 1, 'started_at': 1793220376, 'complete_at': 1793221093, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'scheduler': ['pr', 'Scheduler'], 'branchname': ['pr-12014', 'Change'], 'pr_id': [12014, 'Change'], 'baserev': ['3eb30c7620b4475b2e0404228ba0d2b238a132f1', 'Change'], 'headrev': ['50fc2a8741cef4199df86072fb92345ad0cc6242', 'Change'], 'shortrev': ['50fc2a', 'Change'], 'workername': ['osx-m1', 'Worker'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildnumber': [10867, 'Build'], 'buildername': ['pr-osx-universal', 'Builder'], 'branch': ['refs/pull/12014/head', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'builderid': [7, 'Builder'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'builddir': ['/Users/ci/worker/base/pr-osx-universal', 'Worker'], 'got_revision': ['50fc2a8741cef4199df86072fb92345ad0cc6242', 'GitNoBranch'], 'project': ['', 'Build'], 'revision': ['50fc2a8741cef4199df86072fb92345ad0cc6242', 'Build']}, 'buildrequest': {'buildrequestid': 195364, 'buildsetid': 43806, 'builderid': 7, 'priority': 0, 'claimed': True, 'claimed_at': 1793220376, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793220376, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43806, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793220376, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13155, 'branch': 'refs/pull/12014/head', 'revision': '50fc2a8741cef4199df86072fb92345ad0cc6242', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793220376, '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/10867'}, 'type': 'raw_bb_hook'}

Recent 'raw_gh_hook' events

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'}
2026-10-28T19:12:47.689979	{'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': 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': 'raw_gh_hook'}
2026-10-28T18:18:56.261741	{'source': 'webserver', 'gh_type': 'issue_comment', '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': 'raw_gh_hook'}
2026-10-28T18:18:41.684440	{'source': 'webserver', 'gh_type': 'issue_comment', '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': 'raw_gh_hook'}
2026-10-28T18:02:57.279735	{'source': 'webserver', 'gh_type': 'pull_request_review_comment', 'raw': {'action': 'created', 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4404260369', 'pull_request_review_id': 5687392027, 'id': 4404260369, 'node_id': 'PRRC_kwDOALCn2M8AAAABBoOuEQ', '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', 'commit_id': '6f63dd0f44bc9696e73fbcf2cbae766f902fac50', 'original_commit_id': 'bed47bb5c92217246eb96181de1286cef37eab9f', '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', '_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'}}, '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}, 'start_line': None, 'original_start_line': None, 'start_side': None, 'line': 287, 'original_line': 287, 'side': 'RIGHT', 'in_reply_to_id': 4402746253, 'author_association': 'MEMBER', 'original_position': 103, 'position': 103, 'subject_type': 'line'}, '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:53Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '138ca26e507de8d7784fa35ffee018d455d486ac', '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': 529907, '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': 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', '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': 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': 'raw_gh_hook'}
2026-10-28T18:02:56.950482	{'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5687392027, 'node_id': 'PRR_kwDOALCn2M8AAAABUv63Gw', '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': 'bed47bb5c92217246eb96181de1286cef37eab9f', 'state': 'commented', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14951#pullrequestreview-5687392027', '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-5687392027'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14951'}}, 'submitted_at': '2026-10-28T18:02:55Z', 'updated_at': '2026-10-28T18:02:55Z', 'author_association': 'MEMBER'}, '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:53Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '138ca26e507de8d7784fa35ffee018d455d486ac', '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': 529907, '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': 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', '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': 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': 'raw_gh_hook'}
2026-10-28T18:02:56.319297	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'synchronize', 'number': 14951, '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:53Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '138ca26e507de8d7784fa35ffee018d455d486ac', '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': 529907, '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': 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', '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, 'merged': False, 'mergeable': None, 'rebaseable': None, 'mergeable_state': 'unknown', 'merged_by': None, 'comments': 3, 'review_comments': 1, 'maintainer_can_modify': True, 'commits': 2, 'additions': 71, 'deletions': 61, 'changed_files': 5}, 'before': 'bed47bb5c92217246eb96181de1286cef37eab9f', 'after': '6f63dd0f44bc9696e73fbcf2cbae766f902fac50', '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': 'raw_gh_hook'}
2026-10-28T16:14:29.281879	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'ready_for_review', 'number': 14888, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14888', 'id': 4643121071, 'node_id': 'PR_kwDOALCn2M8AAAABFMBnrw', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14888', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14888.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14888.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14888', 'number': 14888, 'state': 'open', 'locked': False, 'title': "Jit: Don't invalidate instruction block cache with dcbx", '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': "(Note: this post is completely edited.)\r\n\r\nDolphin uses `dcbi` and `dcbst` as heuristics to invalidate the instruction block cache, as some games do not use `icbi` properly.\r\nHowever, no games are known to depend on this (unfortunately, the commits that introduced it, e03fd9a942e9851ca29b590b99c7f311b043c021 or b27f47148809ff027e7bdfef6cd0a16fb69a69eb, don't give any details).\r\n\r\nThe problem is that some games are known to be negatively affected by the unnecessary invalidation and suffer heavy stutters due to it (NBA Live 2005/06, Harry Potter and the Prisoner of Azkaban).\r\nRemoving the heuristic for these instructions completely fixes their stutters.\r\n\r\n`dcbf` also invalidates the block cache, but it's known to fix a crash after loading an area in games developed by Artificial Mind and Movement (Monster House, Scooby-Doo! Mystery Mayhem, Scooby-Doo! Unmasked), so this one is kept.\r\nMaybe this is not the best heuristic, but it's one that currently works.\r\n\r\nCloses https://bugs.dolphin-emu.org/issues/12825.", 'created_at': '2026-09-25T22:03:22Z', 'updated_at': '2026-10-28T16:14:26Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'f233b8c31fa4664a1dd5d0fb0a094e97a4c0be0a', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14888/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14888/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/14888/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ffc287903e52f5c53b4e37c98eecc73784c0a66a', 'head': {'label': 'SuperSamus:dcbx-dont-clear-icache', 'ref': 'dcbx-dont-clear-icache', 'sha': 'ffc287903e52f5c53b4e37c98eecc73784c0a66a', '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': 520792, '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': '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': 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', '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/14888'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14888'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14888'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14888/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14888/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/14888/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ffc287903e52f5c53b4e37c98eecc73784c0a66a'}}, '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': 3, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 1, 'additions': 24, 'deletions': 69, 'changed_files': 7}, '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': '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-28T16:14:26.634673	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'edited', 'number': 14888, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14888', 'id': 4643121071, 'node_id': 'PR_kwDOALCn2M8AAAABFMBnrw', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14888', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14888.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14888.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14888', 'number': 14888, 'state': 'open', 'locked': False, 'title': "Jit: Don't invalidate instruction block cache with dcbx", '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': "(Note: this post is completely edited.)\r\n\r\nDolphin uses `dcbi` and `dcbst` as heuristics to invalidate the instruction block cache, as some games do not use `icbi` properly.\r\nHowever, no games are known to depend on this (unfortunately, the commits that introduced it, e03fd9a942e9851ca29b590b99c7f311b043c021 or b27f47148809ff027e7bdfef6cd0a16fb69a69eb, don't give any details).\r\n\r\nThe problem is that some games are known to be negatively affected by the unnecessary invalidation and suffer heavy stutters due to it (NBA Live 2005/06, Harry Potter and the Prisoner of Azkaban).\r\nRemoving the heuristic for these instructions completely fixes their stutters.\r\n\r\n`dcbf` also invalidates the block cache, but it's known to fix a crash after loading an area in games developed by Artificial Mind and Movement (Monster House, Scooby-Doo! Mystery Mayhem, Scooby-Doo! Unmasked), so this one is kept.\r\nMaybe this is not the best heuristic, but it's one that currently works.\r\n\r\nCloses https://bugs.dolphin-emu.org/issues/12825.", 'created_at': '2026-09-25T22:03:22Z', 'updated_at': '2026-10-28T16:14:23Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'f233b8c31fa4664a1dd5d0fb0a094e97a4c0be0a', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': True, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14888/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14888/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/14888/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ffc287903e52f5c53b4e37c98eecc73784c0a66a', 'head': {'label': 'SuperSamus:dcbx-dont-clear-icache', 'ref': 'dcbx-dont-clear-icache', 'sha': 'ffc287903e52f5c53b4e37c98eecc73784c0a66a', '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': 520792, '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': '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': 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', '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/14888'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14888'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14888'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14888/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14888/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/14888/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ffc287903e52f5c53b4e37c98eecc73784c0a66a'}}, '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': 3, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 1, 'additions': 24, 'deletions': 69, 'changed_files': 7}, 'changes': {'body': {'from': "`dcbi`, `dcbf` (EDIT and `dcbst`) (commonly grouped as `dcbx`) are instructions that affect the data cache without affecting the instruction cache, yet on Dolphin they invalidate the instruction block cache.\r\nThis is a heuristic for poorly coded games that self-modify code but do not use `icbi`, according to 78b74101b0dc6cb7e2dc8424928e34138423c116 (I don't have, and thus I can't test, the games listed in the commit message).\r\n\r\nHowever, this has a disastrous performance impact on games that do not self-modify code but happen to continuously use `dcbx` on huge portion of code: **Harry Potter and the Prisoner of Azkaban** or **NBA Live 2005**/**06** are notoriously a stuttery mess only for this reason, and treating `dcbx` as a nop fixes their stutters completely.\r\n\r\nThe PR is a draft because currently it's just returning early from `dcbx` (and doesn't do anything to the interpreters).\r\nThis should likely be an option, but:\r\n- What should the default be? The one that makes the GameINI set the opposite of the default for the non-functioning games, or set the opposite for the stuttery games? <super><sub>I vote for the former.</sub></super>\r\n- How many games aren't a stuttery mess anymore thanks to this change? (Other than the ones listed above)\r\n- How many games don't work properly anymore?\r\n- Is `dcbx` as a block cache eraser a good heuristic in the first place? Are there better ways to fix the games that are worked around by `dcbx`? [Plus, there's to consider that it doesn't work around all games with ICache issues](https://bugs.dolphin-emu.org/issues/8037l). (Obviously, having a proper ICache implementation in the JIT would be hard.)\r\n\r\nSo... discussion time!"}}, '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': '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-28T16:14:25.139509	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'edited', 'number': 14888, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14888', 'id': 4643121071, 'node_id': 'PR_kwDOALCn2M8AAAABFMBnrw', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14888', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14888.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14888.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14888', 'number': 14888, 'state': 'open', 'locked': False, 'title': "Jit: Don't invalidate instruction block cache with dcbx", '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': "`dcbi`, `dcbf` (EDIT and `dcbst`) (commonly grouped as `dcbx`) are instructions that affect the data cache without affecting the instruction cache, yet on Dolphin they invalidate the instruction block cache.\r\nThis is a heuristic for poorly coded games that self-modify code but do not use `icbi`, according to 78b74101b0dc6cb7e2dc8424928e34138423c116 (I don't have, and thus I can't test, the games listed in the commit message).\r\n\r\nHowever, this has a disastrous performance impact on games that do not self-modify code but happen to continuously use `dcbx` on huge portion of code: **Harry Potter and the Prisoner of Azkaban** or **NBA Live 2005**/**06** are notoriously a stuttery mess only for this reason, and treating `dcbx` as a nop fixes their stutters completely.\r\n\r\nThe PR is a draft because currently it's just returning early from `dcbx` (and doesn't do anything to the interpreters).\r\nThis should likely be an option, but:\r\n- What should the default be? The one that makes the GameINI set the opposite of the default for the non-functioning games, or set the opposite for the stuttery games? <super><sub>I vote for the former.</sub></super>\r\n- How many games aren't a stuttery mess anymore thanks to this change? (Other than the ones listed above)\r\n- How many games don't work properly anymore?\r\n- Is `dcbx` as a block cache eraser a good heuristic in the first place? Are there better ways to fix the games that are worked around by `dcbx`? [Plus, there's to consider that it doesn't work around all games with ICache issues](https://bugs.dolphin-emu.org/issues/8037l). (Obviously, having a proper ICache implementation in the JIT would be hard.)\r\n\r\nSo... discussion time!", 'created_at': '2026-09-25T22:03:22Z', 'updated_at': '2026-10-28T16:14:22Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'cd2f54aa7669b9c27b551dc3597fe96b589282db', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': True, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14888/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14888/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/14888/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ffc287903e52f5c53b4e37c98eecc73784c0a66a', 'head': {'label': 'SuperSamus:dcbx-dont-clear-icache', 'ref': 'dcbx-dont-clear-icache', 'sha': 'ffc287903e52f5c53b4e37c98eecc73784c0a66a', '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': 520792, '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': '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': 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', '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/14888'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14888'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14888'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14888/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14888/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/14888/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ffc287903e52f5c53b4e37c98eecc73784c0a66a'}}, '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': 3, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 1, 'additions': 24, 'deletions': 69, 'changed_files': 7}, 'changes': {'title': {'from': "[Needs discussion] Jit: Don't invalidate instruction block cache with dcbx"}}, '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': '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-28T16:14:23.121219	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'synchronize', 'number': 14888, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14888', 'id': 4643121071, 'node_id': 'PR_kwDOALCn2M8AAAABFMBnrw', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14888', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14888.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14888.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14888', 'number': 14888, 'state': 'open', 'locked': False, 'title': "[Needs discussion] Jit: Don't invalidate instruction block cache with dcbx", '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': "`dcbi`, `dcbf` (EDIT and `dcbst`) (commonly grouped as `dcbx`) are instructions that affect the data cache without affecting the instruction cache, yet on Dolphin they invalidate the instruction block cache.\r\nThis is a heuristic for poorly coded games that self-modify code but do not use `icbi`, according to 78b74101b0dc6cb7e2dc8424928e34138423c116 (I don't have, and thus I can't test, the games listed in the commit message).\r\n\r\nHowever, this has a disastrous performance impact on games that do not self-modify code but happen to continuously use `dcbx` on huge portion of code: **Harry Potter and the Prisoner of Azkaban** or **NBA Live 2005**/**06** are notoriously a stuttery mess only for this reason, and treating `dcbx` as a nop fixes their stutters completely.\r\n\r\nThe PR is a draft because currently it's just returning early from `dcbx` (and doesn't do anything to the interpreters).\r\nThis should likely be an option, but:\r\n- What should the default be? The one that makes the GameINI set the opposite of the default for the non-functioning games, or set the opposite for the stuttery games? <super><sub>I vote for the former.</sub></super>\r\n- How many games aren't a stuttery mess anymore thanks to this change? (Other than the ones listed above)\r\n- How many games don't work properly anymore?\r\n- Is `dcbx` as a block cache eraser a good heuristic in the first place? Are there better ways to fix the games that are worked around by `dcbx`? [Plus, there's to consider that it doesn't work around all games with ICache issues](https://bugs.dolphin-emu.org/issues/8037l). (Obviously, having a proper ICache implementation in the JIT would be hard.)\r\n\r\nSo... discussion time!", 'created_at': '2026-09-25T22:03:22Z', 'updated_at': '2026-10-28T16:14:21Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'cd2f54aa7669b9c27b551dc3597fe96b589282db', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': True, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14888/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14888/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/14888/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ffc287903e52f5c53b4e37c98eecc73784c0a66a', 'head': {'label': 'SuperSamus:dcbx-dont-clear-icache', 'ref': 'dcbx-dont-clear-icache', 'sha': 'ffc287903e52f5c53b4e37c98eecc73784c0a66a', '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': 520792, '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': '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': 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', '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/14888'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14888'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14888'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14888/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14888/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/14888/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ffc287903e52f5c53b4e37c98eecc73784c0a66a'}}, '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': 3, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 1, 'additions': 24, 'deletions': 69, 'changed_files': 7}, 'before': 'f12a3af52c5d0191cf697ab788a3f56985edb8ce', 'after': 'ffc287903e52f5c53b4e37c98eecc73784c0a66a', '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': '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-28T15:44:47.153275	{'source': 'webserver', 'gh_type': 'pull_request_review_comment', 'raw': {'action': 'created', 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4402746253', 'pull_request_review_id': 5685484903, 'id': 4402746253, 'node_id': 'PRRC_kwDOALCn2M8AAAABBmyTjQ', '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', 'commit_id': 'bed47bb5c92217246eb96181de1286cef37eab9f', 'original_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', '_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'}}, '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}, 'start_line': None, 'original_start_line': None, 'start_side': None, 'line': 287, 'original_line': 287, 'side': 'RIGHT', 'author_association': 'CONTRIBUTOR', 'original_position': 103, 'position': 103, 'subject_type': 'line'}, '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-26T02:22:56Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '138ca26e507de8d7784fa35ffee018d455d486ac', '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/bed47bb5c92217246eb96181de1286cef37eab9f', 'head': {'label': 'jordan-woyak:time-played-cpumanager-decouple', 'ref': 'time-played-cpumanager-decouple', 'sha': 'bed47bb5c92217246eb96181de1286cef37eab9f', '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-28T00:49:34Z', 'git_url': 'git://github.com/jordan-woyak/dolphin.git', 'ssh_url': 'git@github.com:jordan-woyak/dolphin.git', 'clone_url': 'https://github.com/jordan-woyak/dolphin.git', 'svn_url': 'https://github.com/jordan-woyak/dolphin', 'homepage': None, 'size': 529907, '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': '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-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', '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/bed47bb5c92217246eb96181de1286cef37eab9f'}}, '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': 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': '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'}