I wanted to use this with Chrome 151 but it was rejected because of the V2 manifest. Lazily I asked ChatGPT to solve the problem, which it did. Its report is as follows:
I found these required changes:
background.scripts must become an MV3 background.service_worker; browser_action becomes action; URL permissions move from permissions to host_permissions; web_accessible_resources uses the MV3 object form; and the content-security-policy field uses the MV3 format. The existing use of chrome.scripting is already appropriate for MV3.
background.js also uses sessionStorage. A Manifest V3 background service worker has no Web Storage API, so this is replaced with chrome.storage.session.
The less straightforward part is .guide interception. Version 0.9 uses webRequest.onHeadersReceived with "blocking" to redirect .guide files after checking their MIME type. Normal Manifest V3 extensions can no longer use webRequestBlocking. Declarative Net Request is not a straightforward substitute here because the viewer needs to redirect to an extension URL while passing the original URL to it.
The patch instead intercepts main-frame navigation with webNavigation.onBeforeNavigate. If the URL pathname identifies a .guide file, navigation is redirected to the viewer before the original navigation completes. This introduces one behavioral difference: the old code required both a .guide* filename and a text/plain or application/octet-stream MIME type, whereas the new code relies on the URL pathname alone. Signature-based detection through scan.js is unchanged.
Firefox-specific manifest settings and other unrelated parts of the extension are left unchanged.