mvmOS 0.31.0-beta: Apps bring their own browser-extension code
The Browser Extension Builder no longer keeps app-specific code inside mvmOS itself. An app now declares what it needs in extension.json — its popup scripts, background script, content scripts, keyboard commands and host permissions — and ships those files in its own extension folder. The builder validates the declaration and packages it; it no longer has to know what any particular app does.
For you this changes nothing about how extensions are downloaded or used, but it does mean an app can add browser features without waiting for an mvmOS release. Apps that ship an extension need to be updated once for the new format: reinstall mvmPasswordManager and mvm2factor from the App Store, then download their extension again, because every packaged file was renamed.
Declared scripts are checked before packaging: a path must stay inside the app's own extension folder, match patterns and permissions are restricted to an allowlist, and app files are prefixed so they can never overwrite the shared popup.