{"componentChunkName":"component---src-templates-post-jsx","path":"/blog/polypane-25-1-drm-support-and-bug-fixes/","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.1: DRM support and bug fixes\",\n  \"cover\": \"/img/mail/icon.svg\",\n  \"date\": \"2025-07-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.1 is now available, and it brings DRM support through Widevine, a new reopen last closed tab feature and a number of improvements and fixes.`), mdx(PolypaneIntro, {\n    mdxType: \"PolypaneIntro\"\n  }), mdx(\"h2\", {\n    \"id\": \"drm-support\"\n  }, `DRM support`), mdx(\"p\", null, `Polypane 25.1 adds support for DRM through Widevine, which means you can now watch and listen to DRM protected content in Polypane. It took a few starts and stalls to get Widevine integrated into Polypane properly without compromising on the security of Polypane, but it's here now.`), mdx(\"img\", {\n    src: netflixdrm,\n    alt: \"Polypane playing a netflix DRM video\",\n    className: \"imgshadow\"\n  }), mdx(\"p\", null, mdx(\"em\", {\n    parentName: \"p\"\n  }, `That black rectangle when making a screenshot is the DRM protection in action.`)), mdx(\"p\", null, `We want to thank the team at `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://castlabs.com/\"\n  }), `CastLabs`), ` for their responsiveness and willingness to change their build process to get this working, as well as `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://github.com/mmaietta\"\n  }), `Mike Maietta`), ` for his help integrating the required features into our build system.`), mdx(\"h2\", {\n    \"id\": \"reopen-last-closed-tab\"\n  }, `Reopen last closed tab`), mdx(\"p\", null, `You can now re-open closed tabs with `, mdx(ShortCutDisplay, {\n    shiftKey: true,\n    cmdKey: true,\n    letter: \"T\",\n    mdxType: \"ShortCutDisplay\"\n  }), `.`), mdx(\"p\", null, `It won't help you build better websites, but it should save you some time when you accidentally close a tab you didn't mean to close. It's a small feature, but one that we hope will make your life just a little bit easier.`), mdx(\"h2\", {\n    \"id\": \"show-only-links-with-issues\"\n  }, `Show only Links with issues`), mdx(\"p\", null, `The `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/outline-panel/#links\"\n  }), `links outline`), ` now has an option to show only broken links so you can focus on just the links that have issues. This is especially useful for large pages with many links, as it allows you to quickly identify and fix broken or problematic links without having to scroll through all the working ones.`), mdx(\"img\", {\n    src: linkissues,\n    alt: \"Polypane showing only links with issues on this page\",\n    className: \"imgshadow\"\n  }), mdx(\"h2\", {\n    \"id\": \"form-autofilling-improvements\"\n  }, `Form autofilling improvements`), mdx(\"p\", null, `Our `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/form-autofill/\"\n  }), `form autofilling`), ` feature makes it really easy to quickly fill out an entire form with realistic data, but it also filled in `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `hidden`), ` inputs. Since those are often used to communicate extra data to the server, this could cause issues.`), mdx(\"p\", null, `Starting from 25.1 we leave those hidden inputs alone, which should make form autofilling more reliable. Thanks Mathieu for the request!`), mdx(\"h2\", {\n    \"id\": \"elements-panel-fixes\"\n  }, `Elements panel fixes`), mdx(\"p\", null, `We added support for comments in our `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/blog/polypane-25-browser-extensions-with-manifest-v-3-form-outlines-and-chromium-138/#polypane-2501-changelog\"\n  }), `25.0.1 release`), `, but in doing so accidentally broke support for inspecting web component internals in the Elements panel. This has been fixed, so you can now inspect shadow DOMs again. Thanks Mark for making us aware of this!`), mdx(\"img\", {\n    src: webcomponents251,\n    alt: \"Elements panel with an opened shadowRoot\",\n    className: \"imgshadow\"\n  }), mdx(\"p\", null, `We've also fixed an issue where some CSS wouldn't be shown because we couldn't parse the oklch color space correctly. Later this year we will roll out even more wide color space support across the app.`), mdx(\"h2\", {\n    \"id\": \"meta-panel-improvements\"\n  }, `Meta panel improvements`), mdx(\"p\", null, `The `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/meta-information/\"\n  }), `meta panel`), ` now warns you when a robots meta tag prevents indexing. While we already `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/meta-information/#robotstxt\"\n  }), `tested against your `, mdx(\"code\", _extends({\n    parentName: \"a\"\n  }, {\n    \"className\": \"language-text\"\n  }), `robots.txt`)), `, we now also test against the contents of the meta tag. Thanks Laurent for the suggestion!`), mdx(\"img\", {\n    src: robotsmeta,\n    alt: \"Meta panel showing a robots meta tag that prevents indexing\",\n    className: \"imgshadow\"\n  }), mdx(\"p\", null, `We've also solved various bugs that occurred for some people like the app freezing when trying to `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/meta-information/#hiding-and-sorting-the-social-card-previews\"\n  }), `hide social media previews`), ` (Thanks George!), more robust `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/meta-information/#structured-data\"\n  }), `testing of structured data`), ` (Thanks Laurent!) and a fix for microdata not always being shown despite being detected.`), mdx(\"h2\", {\n    \"id\": \"get-polypane-251\"\n  }, `Get Polypane 25.1`), 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-2511-changelog\"\n  }, `Polypane 25.1.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`), ` Prevent permission popups for DRM requests`)), 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`), ` DRM: Fix Spotify playback on Mac`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Color contrast now takes color-scheme settings into account (Thanks Karthik!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Elements panel: using arrow keys while editing attributes could result in the attribute being deleted`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Elements panel: Fix issue where shadow root couldn't be selected (Thanks Mark!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Elements panel: Show child nodes for elements that only have a shadowRoot as direct child`)), mdx(\"h2\", {\n    \"id\": \"polypane-251-changelog\"\n  }, `Polypane 25.1 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`), ` DRM support through Widevine`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Reopen last closed tab feature`)), 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`), ` Outline panel: Show only links with issues option (Thanks Anthony!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Form outline: prevent form element rows from being too tall`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Meta panel: Shows warning when a robots meta tag prevents indexing (Thanks Laurent!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Guides: Split view layout now has enough space for the vertical ruler`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Form autofilling no longer changes hidden fields (Thanks Mathieu!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Prevent generated screenshot names from becoming too long`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Polypane Peek: hide contrast value if no contrast is available`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Elements panel: Expand elements in the tree view if they have text content and pseudo elements (Thanks Laurent!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Extensions: Find extensions now opens in new tab`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Quick Start: shortcuts now no longer change when emulating different operating systems (Thanks Damien!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Updated list of Google Fonts`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Updated Chromium to 138.0.7204.157`)), 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: Show shadowRoot contents again (Thanks Mark!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Elements Panel: parsing of oklab/oklch text-shadows in elements panel and tooltips`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Guides: NaN values in guides for vertical ruler in split layout`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Closing popups in focus and full mode reopens devtools again (thanks Karl!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Adjusted panel text size was only applied in the first tab (Thanks Laurent!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Meta panel: catch errors when parsing faulty microdata (Thanks Laurent!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Meta panel: Now show microdata when available on its own rather than together with RDFa`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Meta panel: App freeze when trying to hide social media previews (Thanks George!)`)));\n}\n;\nMDXContent.isMDXComponent = true;","timeToRead":3,"tableOfContents":{"items":[{"url":"#drm-support","title":"DRM support"},{"url":"#reopen-last-closed-tab","title":"Reopen last closed tab"},{"url":"#show-only-links-with-issues","title":"Show only Links with issues"},{"url":"#form-autofilling-improvements","title":"Form autofilling improvements"},{"url":"#elements-panel-fixes","title":"Elements panel fixes"},{"url":"#meta-panel-improvements","title":"Meta panel improvements"},{"url":"#get-polypane-251","title":"Get Polypane 25.1"},{"url":"#polypane-2511-changelog","title":"Polypane 25.1.1 Changelog"},{"url":"#polypane-251-changelog","title":"Polypane 25.1 Changelog"}]},"excerpt":"Polypane 25.1 is now available, and it brings DRM support through Widevine, a new reopen last closed tab feature and a number of improvements and fixes. DRM…","frontmatter":{"title":"Polypane 25.1: DRM support and bug fixes","cover":"/img/mail/icon.svg","date":"2025-07-30","updated":null},"fields":{"slug":"/blog/polypane-25-1-drm-support-and-bug-fixes/","date":"2025-07-29T22:00:00.000Z","ogFileName":"polypane-25-1-drm-support-and-bug-fixes"}}},"pageContext":{"slug":"/blog/polypane-25-1-drm-support-and-bug-fixes/"}},"staticQueryHashes":["4164364741","425175329"]}