{"componentChunkName":"component---src-templates-post-jsx","path":"/blog/polypane-25-browser-extensions-with-manifest-v-3-form-outlines-and-chromium-138/","result":{"data":{"mdx":{"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nconst _frontmatter = {\n  \"title\": \"Polypane 25: browser extensions with Manifest v3, form outlines and Chromium 138\",\n  \"cover\": \"/img/mail/icon.svg\",\n  \"date\": \"2025-06-30\",\n  \"type\": [\"announcement\"]\n};\nconst layoutProps = {\n  _frontmatter\n};\nconst MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  let {\n    components\n  } = _ref,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, `Polypane 25 is here! We've updated our browser extension implementation to support Manifest v3 so we support a ton more extensions, there's a new Form outline view that shows you the structure of your forms, and we've updated to Chromium 138 along with many fixes and updates to existing features.`), mdx(PolypaneIntro, {\n    mdxType: \"PolypaneIntro\"\n  }), mdx(\"h2\", {\n    \"id\": \"browser-extensions-with-manifest-v3\"\n  }, `Browser extensions with Manifest v3`), mdx(\"p\", null, `After adding regular extension support all the way back in 2023 with the `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://polypane.app/blog/polypane-13-css-nesting-extension-support-in-beta-search-by-selector-and-chromium-110/\"\n  }), `release of Polypane 13`), `, We've now updated our implementation to support Manifest v3 extensions. This means that you can now install and use a lot more extensions in Polypane.`), mdx(\"img\", {\n    src: extensionsv3,\n    alt: \"Four panes with 1password, VisBug, Dark Reader and WAVE extensions active\",\n    className: \"imgshadow\"\n  }), mdx(\"p\", null, `All `, mdx(\"del\", {\n    parentName: \"p\"\n  }, `your`), ` my favorites are still there, like VisBug, Grammarly, React Developer Tools and 1Password, but now you can also install extensions like `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://fixa11y.com\"\n  }), `Fix Contrast`), `, Dark Reader, Lighthouse, Stylus, WAVE and many more.`), mdx(\"p\", null, `On Mac and Linux you can even `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/1-password-setup-instructions/\"\n  }), `connect the 1Password desktop app to the browser extension`), `, so you can log in with a passkey and have the extension automatically unlock when you unlock the desktop app.`), mdx(\"p\", null, `With this update, you can now `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/browser-extensions/#install-extensions\"\n  }), `install extensions`), ` directly from the Chrome Web Store, and the updated `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/browser-extensions/#extension-manager\"\n  }), `extension manager`), ` will automatically keep them up to date.`), mdx(\"img\", {\n    src: extensions3,\n    alt: \"The extensions manager\",\n    className: \"imgshadow\"\n  }), mdx(\"p\", null, `Take note that, due to this update, you will have to reinstall your extensions, and existing manifest v2 extensions will no longer work in Polypane 25.`), mdx(\"h3\", {\n    \"id\": \"a-word-of-thanks\"\n  }, `A word of thanks`), mdx(\"p\", null, `Landing this feature took a lot of effort, and we want to give a big thanks to Pascal of `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://browser.horse/?ref=polypane\"\n  }), `Horse Browser`), `, `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://github.com/iamEvanYT\"\n  }), `Evan`), ` of `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://github.com/MultiboxLabs/flow-browser\"\n  }), `Flow browser`), ` and especially to `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://github.com/samuelmaddock\"\n  }), `Samuel`), `, the creator of `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://github.com/samuelmaddock/electron-browser-shell/tree/master/packages/electron-chrome-extensions\"\n  }), `electron-browser-shell`), `.`), mdx(\"h2\", {\n    \"id\": \"outline-panel-form-outline-view\"\n  }, `Outline panel: Form outline view`), mdx(\"p\", null, `The `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/outline-panel/\"\n  }), `outline panel`), ` now lists all the forms on your page. This gives you a quick overview of the form properties, its fields, fieldsets and buttons.`), mdx(\"p\", null, `Everything is updated in real-time, so as you interact with your form you can see the state update in the outline panel.`), mdx(\"img\", {\n    src: formsoutline,\n    alt: \"The form outline panel\",\n    className: \"imgshadow\"\n  }), mdx(\"p\", null, `Additionally, Polypane will flag issues it finds with your form, from missing labels to the use of `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `reset`), ` buttons, or typos in the `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `autocomplete`), ` attribute.`), mdx(\"img\", {\n    src: formsoutlinebad,\n    alt: \"The form outline panel showing warnings\",\n    className: \"imgshadow\"\n  }), mdx(\"p\", null, `Because everything is live you can immediately see the effect of your changes, and you can use the outline panel to quickly navigate to the form elements in the Elements panel. Read more about the `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/outline-panel/#forms\"\n  }), `form outline`), ` in our docs.`), mdx(\"p\", null, `While building this feature we've found issues with almost all of our forms 🫣 We hope this will help you find and fix issues with your forms as well.`), mdx(\"h3\", {\n    \"id\": \"free-online-html-form-inspector\"\n  }, `Free Online HTML form inspector`), mdx(\"p\", null, `While building this feature, we noticed that there are no online form inspectors available.`), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, `So we built one!`)), mdx(\"p\", null, `You can now inspect your forms online with our `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/form-inspector/\"\n  }), `HTML Form Inspector`), `: paste in your HTML or use one of our examples and see the form structure.`), mdx(\"a\", {\n    href: \"/form-inspector/\",\n    style: {\n      \"display\": \"block\",\n      \"maxWidth\": \"initial\",\n      \"borderRadius\": \"4px\"\n    }\n  }, mdx(\"img\", {\n    style: {\n      \"display\": \"block\"\n    },\n    src: forminspector,\n    alt: \"The HTML Form Inspector\",\n    className: \"imgshadow\"\n  })), mdx(\"p\", null, `This stripped-down version of our Form outline in the outline panel gives you a quick overview of your form, the configuration, the fields, fieldsets and buttons for a quick spot check.`), mdx(\"p\", null, `Use it to test the forms on your site, or check the structure of a form you found on another site.`), mdx(\"h3\", {\n    \"id\": \"other-outline-panel-updates\"\n  }, `Other outline panel updates`), mdx(\"p\", null, `We've improved the way the outline panel handles elements that are not visible so you get more accurate feedback on your page structure that takes into account how hiding and showing elements is perceived by accessible technologies.`), mdx(\"h2\", {\n    \"id\": \"emulation-reset-buttons\"\n  }, `Emulation reset buttons`), mdx(\"p\", null, `The `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/emulation/\"\n  }), `emulation settings`), ` now have a reset-to-defaults button. This allows you to quickly reset all emulation settings to their defaults with a single click. Thanks for the excellent suggestion Steve!`), mdx(\"img\", {\n    src: emureset,\n    alt: \"The extensions manager\",\n    className: \"imgshadow\"\n  }), mdx(\"h2\", {\n    \"id\": \"storage-panel-updates\"\n  }, `Storage panel updates`), mdx(\"p\", null, `The storage panel now automatically updates when you add, remove or change something in your localStorage or sessionStorage.`), mdx(\"p\", null, `This lets you see the changs as they happen, just like in the outline and elements panels.`), mdx(\"h2\", {\n    \"id\": \"debug-tools-updates\"\n  }, `Debug tools updates`), mdx(\"h3\", {\n    \"id\": \"updated-layout-debugging-colors\"\n  }, `Updated layout debugging colors`), mdx(\"p\", null, `We've updated the layout debugging colors to use P3 colors where available. This means that the colors are more vibrant and stand out more against the site making them easier to see. Thanks Dyna for the suggestion!`), mdx(\"h3\", {\n    \"id\": \"target-size-ui-position-toggle\"\n  }, `Target Size UI position toggle`), mdx(\"p\", null, `The target size debug tool adds a small UI to the top right of a pane where you can configure what it should test for. If the target you need to check is right behind that UI, that's very frustrating.`), mdx(\"p\", null, `We've added a toggle to move the target size UI out of the way, so you can see what you need to see. Thanks Emma for the suggestion!`), mdx(\"video\", {\n    src: targetsizetoggle,\n    muted: true,\n    controls: true,\n    preload: \"auto\",\n    loading: \"lazy\",\n    playsInline: true,\n    className: \"imgshadow\",\n    style: {\n      maxWidth: '100%'\n    }\n  }), mdx(\"h2\", {\n    \"id\": \"elements-panel-updates\"\n  }, `Elements panel updates`), mdx(\"p\", null, `With Chromium 138 there were new CSS properties, values and functions that we've added support for, and the suggestions for CSS properties are now sorted by popularity making it even faster to find the property you need.`), mdx(\"h3\", {\n    \"id\": \"notable-fixes\"\n  }, `Notable fixes`), mdx(\"p\", null, `The elements panel also has a number of fixes, including:`), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, `There was an issues parsing selectors with nested parentheses like `, mdx(\"code\", _extends({\n    parentName: \"li\"\n  }, {\n    \"className\": \"language-text\"\n  }), `:is(:not(.class))`), `, which has now been fixed.`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, `The tree view would sometimes incorrectly match parts of an HTML element, like values or element names as potential `, mdx(\"code\", _extends({\n    parentName: \"li\"\n  }, {\n    \"className\": \"language-text\"\n  }), `idref`), `s. We've updated our implementation to only check specific attributes for valid IDs.`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, `Sometimes the tree view would remain empty until first selecting an element. Polypane now more eagerly loads the DOM tree on page load.`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, `When using the Elements panel `, mdx(\"code\", _extends({\n    parentName: \"li\"\n  }, {\n    \"className\": \"language-text\"\n  }), `@layer`), ` overview, unnamed layers were not displayed correctly. This has been fixed.`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, `The color contrast checker in the A11y tab wasn't taking the font-size of the element into account when calculating the required contrast ratio, and this has been fixed.`)), mdx(\"h2\", {\n    \"id\": \"structureddata-validation-improvements\"\n  }, `StructuredData validation improvements`), mdx(\"p\", null, `The StructuredData validation in the `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/meta-information/\"\n  }), `Meta panel`), ` was too strict compared to Google's Structured Data Testing Tool, and we've improved it to handle cases where we would previously shown an error while things were actually working fine according to Google's tools. Thanks Josh for helping us find and fix this!`), mdx(\"h2\", {\n    \"id\": \"other-fixes-and-improvements\"\n  }, `Other Fixes and improvements`), mdx(\"p\", null, `Polypane lets you `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/browser-features/#hiding-the-header\"\n  }), `hide the header`), ` so you just see the panes, but on Mac you could run into an issue where the top icons for panes weren't clickable because of the drag area. This bug has been fixed. Thanks Trond for letting us know!`), mdx(\"p\", null, `You can now right-click the suggestion in the `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/color-picker/\"\n  }), `Color Picker`), ` to copy the value, but also to copy the entire suggestion sentence, which is useful for pasting into documentation or comments. Thanks Eric for requesting this!`), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, mdx(\"em\", {\n    parentName: \"p\"\n  }, `Example:`), ` Color Swatch #64b99d on #eff8f5 with contrast ratio 2.16:1 and foreground suggestion #02a17e`)), mdx(\"p\", null, `Unfocused tabs would collapse their panel causing unneeded resize events for pages in the browser layout. This is now prevented, so the unfocused tabs will no longer cause resize events.`), mdx(\"p\", null, `The `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://polypane.app/docs/source-panel/\"\n  }), `Source panel`), ` layout when the panel is in landscape mode has been improved, with a better distribution of the available space between the source code and the validation overview. Thanks Andreas for the request!`), mdx(\"h2\", {\n    \"id\": \"removal-of-scss-support\"\n  }, `Removal of SCSS support`), mdx(\"p\", null, `We've removed SCSS support in the `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://polypane.app/docs/snippets/\"\n  }), `Snippets`), ` Panel. With modern CSS the need for SCSS is greatly reduced, and maintaining support for it in Polypane took a lot of effort.`), mdx(\"p\", null, `Removing it also paves the way for some exciting new features for the Live CSS panel that we have planned for the future.`), mdx(\"h2\", {\n    \"id\": \"widevine-drm-support-postponed\"\n  }, `Widevine DRM support postponed`), mdx(\"p\", null, `Despite `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://bsky.app/profile/polypane.app/post/3lnuay4dtf225\"\n  }), `promising early results`), `, we have to postpone Widevine support in Polypane for the foreseeable future.`), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, `Widevine is the DRM (Digital Rights Management) technology offered by Google and used by many streaming services to protect their content. It would add support for playback of DRM-protected content from Spotify, Netflix, Disney+ and many others.`)), mdx(\"p\", null, `We had hoped to implement it in this release, but ironically we would have to lower our security standards to support it, which is not something we are willing to do.`), mdx(\"p\", null, `When adding Widevice support without lowering our security standards becomes possible, we'll add it to Polypane.`), mdx(\"h2\", {\n    \"id\": \"chromium-138\"\n  }, `Chromium 138`), mdx(\"p\", null, `Polypane 25 runs on Chromium 138. For all the experimental features enabled in this release, check out the `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/experimental-web-platform-features/\"\n  }), `experimental web platform features overview`), `.`), mdx(\"h2\", {\n    \"id\": \"get-polypane-25\"\n  }, `Get Polypane 25`), mdx(\"p\", null, `Polypane is available for Windows, Mac and Linux in 64 bit and ARM versions.`), mdx(\"p\", null, `Polypane automatically updates on Mac, Windows and on Linux when using the AppImage. Otherwise, go to `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/download/\"\n  }), `the download page`), ` to download the latest version!`), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, `Don't have Polypane yet? There is a 14 day trial available. `, mdx(\"br\", null), ` `, mdx(\"a\", _extends({\n    parentName: \"strong\"\n  }, {\n    \"href\": \"https://dashboard.polypane.app/register\"\n  }), `Try it for free`), `.`), ` No credit card needed.`)), mdx(\"h2\", {\n    \"id\": \"polypane-2501-changelog\"\n  }, `Polypane 25.0.1 Changelog`), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, `Improvements`)), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Elements panel now shows HTML comments in the tree view (Thanks Kim!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Extensions: better support for extension popups`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Recording: support recording of very large panes`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Updates list of Google fonts`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Updated Chromium 138.0.7204.97`)), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, `Fixes`)), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Context menu on color suggestion not being visible (Thanks Eric!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Outline panel: Fix issue where hidden buttons had an incorrect label`)), mdx(\"h2\", {\n    \"id\": \"polypane-25-changelog\"\n  }, `Polypane 25 Changelog`), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, `New`)), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Manifest v3 extensions support`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Outline panel: Form outline view`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Chromium 138.0.7204.35`)), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, `Improvements`)), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Elements panel: New CSS properties and attributes support`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Elements panel: CSS property suggestions are now sorted by popularity`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Meta panel: accuracy of StructuredData validation (Thanks Josh)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Storage panel: automatically updates when storage changes`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Outline panel: Prevent warning about duplicate landmarks when some are hidden`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Outline panel: more accurate detection of name for hidden elements`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Updated default sizing of some device presets`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` JSON and XML viewer now support URLs with TrustedHTML enabled`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Debug tools: Toggle option to move target size UI out of the way (Thanks Emma!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Layout debugging: we now use p3 colors where available (Thanks Dyna!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Emulation: Add a reset to defaults button (Thanks Steve!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Color picker: Right-click suggestion to copy value or full suggestion string (Thanks Eric!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Focus layout: Randomly resizing the pane now animates the resize`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Updated Web Vitals library`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Update Google fonts list`)), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, `Removals`)), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Removed`), ` SCSS parsing in the Live CSS Panel`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Removed`), ` Support for Manifest v2 extensions`)), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, `Fixes`)), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Elements panel: issue with selectors with nested parentheses`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Elements panel: Prevent non-values from being recognised as (in)valid IDs`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Elements panel: Fix occurances where the tree view would remain empty until selecting an element`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Elements panel: Unnamed layers weren't displayed correctly`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Elements panel: Color contrast checker in a11y tab now takes font-size into account again`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Source panel: Better layout in horizontal layout (Thanks Andreas!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Meta panel: prevent crash when adding an invalid URL as domain overwrite`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Undocked devtools opening when moving away from devtools panel`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Context menu not working after a hard reload`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Node highlights: prevent design leak issue with global CSS values`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Hiding the header on mac prevented top pane buttons from being clickable (Thanks Trond!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Remove space in front of color swatch screenshot default file name (Thanks Eric!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Prevent resize events for unfocused tabs`)));\n}\n;\nMDXContent.isMDXComponent = true;","timeToRead":7,"tableOfContents":{"items":[{"url":"#browser-extensions-with-manifest-v3","title":"Browser extensions with Manifest v3","items":[{"url":"#a-word-of-thanks","title":"A word of thanks"}]},{"url":"#outline-panel-form-outline-view","title":"Outline panel: Form outline view","items":[{"url":"#free-online-html-form-inspector","title":"Free Online HTML form inspector"},{"url":"#other-outline-panel-updates","title":"Other outline panel updates"}]},{"url":"#emulation-reset-buttons","title":"Emulation reset buttons"},{"url":"#storage-panel-updates","title":"Storage panel updates"},{"url":"#debug-tools-updates","title":"Debug tools updates","items":[{"url":"#updated-layout-debugging-colors","title":"Updated layout debugging colors"},{"url":"#target-size-ui-position-toggle","title":"Target Size UI position toggle"}]},{"url":"#elements-panel-updates","title":"Elements panel updates","items":[{"url":"#notable-fixes","title":"Notable fixes"}]},{"url":"#structureddata-validation-improvements","title":"StructuredData validation improvements"},{"url":"#other-fixes-and-improvements","title":"Other Fixes and improvements"},{"url":"#removal-of-scss-support","title":"Removal of SCSS support"},{"url":"#widevine-drm-support-postponed","title":"Widevine DRM support postponed"},{"url":"#chromium-138","title":"Chromium 138"},{"url":"#get-polypane-25","title":"Get Polypane 25"},{"url":"#polypane-2501-changelog","title":"Polypane 25.0.1 Changelog"},{"url":"#polypane-25-changelog","title":"Polypane 25 Changelog"}]},"excerpt":"Polypane 25 is here! We've updated our browser extension implementation to support Manifest v3 so we support a ton more extensions, there's a new Form outline…","frontmatter":{"title":"Polypane 25: browser extensions with Manifest v3, form outlines and Chromium 138","cover":"/img/mail/icon.svg","date":"2025-06-30","updated":null},"fields":{"slug":"/blog/polypane-25-browser-extensions-with-manifest-v-3-form-outlines-and-chromium-138/","date":"2025-06-29T22:00:00.000Z","ogFileName":"polypane-25-browser-extensions-with-manifest-v-3-form-outlines-and-chromium-138"}}},"pageContext":{"slug":"/blog/polypane-25-browser-extensions-with-manifest-v-3-form-outlines-and-chromium-138/"}},"staticQueryHashes":["4164364741","425175329"]}