{"componentChunkName":"component---src-templates-post-jsx","path":"/blog/polypane-27-projects-a-snippets-panel-and-chromium-142/","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 27: Projects, a Snippets Panel and Chromium 142\",\n  \"cover\": \"/img/mail/icon.svg\",\n  \"date\": \"2025-11-20\",\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 27 is out! This release brings a new project-focused workflow, a new snippets panel, improved DOM editing and is built on Chromium 142. Here's everything that's new in Polypane 27.`), mdx(PolypaneIntro, {\n    mdxType: \"PolypaneIntro\"\n  }), mdx(\"h2\", {\n    \"id\": \"polypane-projects\"\n  }, `Polypane Projects`), mdx(\"p\", null, `A project-based workflow has been one of the most requested features for Polypane, and it took me a while to find the right approach. Starting with Polypane 27, Projects are now a core part of Polypane.`), mdx(\"p\", null, `A new button in the top left of the app shows you the project you're currently working on, and clicking it opens the project overview.`), mdx(\"img\", {\n    src: projectoverview,\n    className: \"imgshadow\",\n    alt: \"Project Selector\"\n  }), mdx(\"p\", null, `Your projects control the entire browser. Create a project for each of your websites or clients and switch between them easily. All tabs, bookmarks, sessions and other settings are stored per project so you never have to spend time re-configuring Polypane when switching between different tasks.`), mdx(\"p\", null, `Did you notice that said bookmarks? Yes, Polypane has bookmarks now! All the relevant pages and URLs can be added to your Project bookmarks and quickly opened from the new Bookmarks button, in regular tabs or in the Browse panel.`), mdx(\"img\", {\n    src: bookmarksoverview,\n    className: \"imgshadow\",\n    alt: \"Bookmarks dropdown\"\n  }), mdx(\"p\", null, `Projects is set up in a way that's very easy to get started with (you can even ignore it if you want, or only use the bookmarks part) and very powerful for everyone that works on multiple projects.`), mdx(\"p\", null, `Check out the `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/projects/\"\n  }), `Projects documentation`), ` to learn more.`), mdx(\"h2\", {\n    \"id\": \"snippets-panel\"\n  }, `Snippets Panel`), mdx(\"p\", null, `Over five years ago `, mdx(\"strong\", {\n    parentName: \"p\"\n  }, `Polypane 2.1 (!)`), ` introduced the Live CSS panel, which let you add CSS that would be applied to all panes in Polypane. While it was a great way to quickly test CSS changes, the Elements panel has caught up and exceeded it in functionality.`), mdx(\"p\", null, `In 27, the Live CSS panel has been rebuilt into the new `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/snippets/\"\n  }), `Snippets panel`), `. The Snippets panel lets you add both CSS and JavaScript snippets that can be saved, edited and run on any page you visit.`), mdx(\"img\", {\n    src: snippetspanel,\n    className: \"imgshadow\",\n    alt: \"Project Selector\"\n  }), mdx(\"p\", null, `It's filled with clever features that make it a joy to use, like code completion for CSS and JS, smart bookmarklet support and grouping of snippets to quickly toggle an entire set of snippets on and off.`), mdx(\"p\", null, `There's also a robust importing/exporting system that lets you share snippets between different Polypane installations and across your team, or import bookmarklets from other browsers. Expect more snippet sharing in the future!`), mdx(\"h2\", {\n    \"id\": \"new-macos-icon\"\n  }, `New macOS Icon`), mdx(\"p\", null, `Polypane 27 ships with a new macOS icon that uses the new Liquid Glass style, with special styles for light, dark and tinted mode.`), mdx(\"video\", {\n    src: liquidglassicon,\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, `The `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/elements-panel/\"\n  }), `Elements Panel`), ` has received several improvements in Polypane 27 to make it easier to use and more powerful.`), mdx(\"h3\", {\n    \"id\": \"line-numbers-for-css-styles\"\n  }, `Line numbers for CSS Styles`), mdx(\"p\", null, `The CSS Styles section in the Elements panel now shows line numbers for each CSS rule, making it easier to identify where styles are coming from.`), mdx(\"img\", {\n    src: linenumbers,\n    className: \"imgshadow\",\n    alt: \"Line numbers in CSS Styles\"\n  }), mdx(\"p\", null, `An often requested feature that was really complex to implement, but our line number detection is on par with other major browser devtools now.`), mdx(\"h3\", {\n    \"id\": \"force-starting-style\"\n  }, `Force @starting-style`), mdx(\"p\", null, `The Elements panel now has a \"Force starting style\" feature in the toggle element states dropdown that lets you see the styles that would be applied to an element when it's added to the dom.`), mdx(\"img\", {\n    src: forcestartingstyle,\n    className: \"imgshadow\",\n    alt: \"Force starting style feature\"\n  }), mdx(\"p\", null, `When turned on, the starting styles will be applied and the element will get a special badge in the tree view to indicate that it's using the starting styles.`), mdx(\"p\", null, `This build ons on the support for editing `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `@starting-style`), ` (also visible in the screenshot) that we added in `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/blog/polypane-20-browser-features-and-performance/#starting-style-support\"\n  }), `Polypane 20`), ` back in June of 2024.`), mdx(\"h3\", {\n    \"id\": \"updated-hide-element-shortcut-on-macos\"\n  }, `Updated hide element shortcut (on macOS)`), mdx(\"p\", null, `In `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/blog/polypane-26-accurate-device-emulation-with-safe-area-and-small-viewport-units/\"\n  }), `Polypane 26`), ` we added a \"Hide element\" shortcut to quickly hide the selected element in the elements panel. On macOS this was set to use CMD + H, but this conflicted with the system-wide shortcut that hides the current application.`), mdx(\"p\", null, `In Polypane 27, we've changed the shortcut to `, mdx(ShortCutDisplay, {\n    ctrlKey: true,\n    letter: \"h\",\n    mdxType: \"ShortCutDisplay\"\n  }), ` to prevent this conflict. On Windows and Linux, this was already set to `, mdx(ShortCutDisplay, {\n    ctrlKey: true,\n    letter: \"h\",\n    mdxType: \"ShortCutDisplay\"\n  }), ` and remains unchanged.`), mdx(\"h3\", {\n    \"id\": \"duplicate-and-remove-elements\"\n  }, `Duplicate and remove elements`), mdx(\"p\", null, `You can now right-click any element in the tree view to duplicate or remove it from the DOM. This makes it easy to quickly test changes to the DOM structure without needing to write code.`), mdx(\"p\", null, `Unlike other browser devtools, right-clicking an element in the tree view won't also select that element so you never lose context when working with the Elements panel.`), mdx(\"h3\", {\n    \"id\": \"other-context-menu-options\"\n  }, `Other context menu options`), mdx(\"p\", null, `The new context menu on the elements now also quickly lets you select, hide or copy the element (as innerHTML, outerHTML, CSS selector or XPath) without needing to select the element first.`), mdx(\"h2\", {\n    \"id\": \"meta-panel\"\n  }, `Meta panel`), mdx(\"p\", null, `We've split out `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `alternate`), ` links in the `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/meta-information/\"\n  }), `Meta panel`), ` into their own section separately from other link elements. `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `alternate`), ` links can be used for things like RSS feeds, alternate language versions of a page and other resources related to the current page. Thanks Charlie for the suggestion!`), mdx(\"img\", {\n    src: alternates,\n    className: \"imgshadow\",\n    alt: \"Alternates in Meta panel\"\n  }), mdx(\"p\", null, mdx(\"em\", {\n    parentName: \"p\"\n  }, `The alternate links for apple.com. Note: truncated`)), mdx(\"p\", null, `As you're used to from Polypane, we'll automatically check for duplicates and issues with your alternate links and show warnings when something is amiss.`), mdx(\"p\", null, `Slack ditched their small-image design for link previews recently, so we've updated the Meta panel design to match their new look as well.`), mdx(\"h2\", {\n    \"id\": \"new-debug-tools\"\n  }, `New debug tools`), mdx(\"p\", null, `We've added two new `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/debug-tools/\"\n  }), `debug tools`), ` to Polypane 27 to help you test and debug your sites.`), mdx(\"h3\", {\n    \"id\": \"slow-down-view-transitions\"\n  }, `Slow down view transitions`), mdx(\"p\", null, `The view transitions debugging debug tool will slow down all your view transitions and highlight the incoming and outgoing elements, making it easier to see what's going on during the transition without having to edit your own CSS.`), mdx(\"h3\", {\n    \"id\": \"force-hover-styling\"\n  }, `Force hover styling`), mdx(\"p\", null, `The new force hover styling debug tool will apply the `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `:hover`), ` styles to all interactive elements on the page, much like the already existing `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `focus`), ` and `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `focus-visible`), ` debug tools.`), mdx(\"p\", null, `This makes it easy to test hover styles across your entire site without needing to hover over each element individually. Thanks Ron for suggesting this one!`), mdx(\"h2\", {\n    \"id\": \"punycode-domain-support\"\n  }, `Punycode domain support`), mdx(\"p\", null, `When it comes to browsers there's always more \"weird\" stuff that you need to handle, and one of those things is punycode or IDN domains.`), mdx(\"p\", null, `Regular domains can only use ASCII characters, but IDN (Internationalized Domain Names) allow the use of non-ASCII characters in domain names. things like accents on letters, non-latin characters and even emojis can be encoded in domain names starting with `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `xn--`), ` to make them work in the DNS system.`), mdx(\"p\", null, `Polypane 27 now has full support for punycode domains, so you can visit and work with sites that use these characters in their domain names without any issues and Polypane will display the nice looking version of the domain in the address bar. Thanks Christian for reporting this one!`), mdx(\"h2\", {\n    \"id\": \"download-notifications\"\n  }, `Download notifications`), mdx(\"p\", null, `we've improved the download experience by adding start, end and error notifications for downloads, so you always know when a download has started and finished, or if there was an issue downloading a file.`), mdx(\"p\", null, `Let us know if a full download manager is something you'd like to see in Polypane!`), mdx(\"h2\", {\n    \"id\": \"notable-bug-fixes\"\n  }, `Notable bug Fixes`), mdx(\"h3\", {\n    \"id\": \"widevine-drm-launch-fix\"\n  }, `Widevine DRM launch fix`), mdx(\"p\", null, `On Monday and Tuesday of this week, the Widevine CDM servers were down, which caused issues across many browsers that rely on Widevine but can't bundle it like Google itself does with Chrome. Unfortunately for Polypane, downloading the Widevine CDM is part of the launch process, and when the download failed, Polypane would stall during launch.`), mdx(\"p\", null, `The issue got resolved on Widevine's side, but to prevent this from happening again Polypane 27 now has a fallback mechanism that allows it to launch even when Widevine can't be downloaded. I want to give a big shoutout to Alexandra for being the first to report this issue and for helping debug the cause. Thanks Alexandra!`), mdx(\"h3\", {\n    \"id\": \"page-zoom-shortcuts-on-windows\"\n  }, `Page zoom shortcuts on Windows`), mdx(\"p\", null, `The page zoom shortcuts no longer worked on Windows 11 due to ...something. We've switched the shortcut registration method and now it works again. Thanks Ron for reporting this one!`), mdx(\"h3\", {\n    \"id\": \"consolelogundefined-fix\"\n  }, `Console.log(undefined) fix`), mdx(\"p\", null, `To prevent noise in the console, Polypane didn't print 'undefined' to the console when that was logged. This helps with noise, but is annoying when you need to verify if something is actually undefined. In Polypane 27, we've fixed this so that `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `console.log(undefined)`), ` now correctly prints `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `undefined`), ` to the console. Thanks Luke for reporting this one!`), mdx(\"h2\", {\n    \"id\": \"chromium-142\"\n  }, `Chromium 142`), mdx(\"p\", null, `Polypane 27 is built on Chromium 142. 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-27\"\n  }, `Get Polypane 27`), 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-2702-changelog\"\n  }, `Polypane 27.0.2 Changelog`), 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`), ` Issue where launching Polypane with a URL would return an error`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Search icons disappearing after app updates`)), mdx(\"h2\", {\n    \"id\": \"polypane-2701-changelog\"\n  }, `Polypane 27.0.1 Changelog`), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, `Notes`)), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Note`), ` Widevine DRM has been disabled for this release`)), 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`), ` Inspection and snippet logic for frameworks that use full page hydration (Thanks Rick!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Improve computed name resolution for links with titles (Thanks Ron!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Snippets panel: Design Alignment`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Updated list of supported Google Fonts`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Chromium version 142.0.7444.175`)), 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`), ` Prevent crashes on macOS when accessing certain menu items`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Projects and bookmarks dropdown and Project editor no longer falls behind browse panel (Thanks Eric!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Selecting project favicon could result in Google icon being shown (Thanks Eric!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Alignment issues with project button on macOS Tahoe`)), mdx(\"h2\", {\n    \"id\": \"polypane-27-changelog\"\n  }, `Polypane 27 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`), ` Projects to group tabs, bookmarks and sessions`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Snippets panel to save and run JS and CSS snippets`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Meta panel: Show overview of alternate links (Thanks Charlie!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Elements panel: Duplicate and remove elements`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` MacOS Liquid Glass icon`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Chromium 142`)), 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: shows line numbers for CSS Styles`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Elements panel: Hide and copy element in context menu`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Elements panel: Force starting style feature`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Download start and end notifications`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Support for punycode domains (Thanks Christian!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Browse panel: Automatically uses the tab or project session`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Full page layout now uses the page title as name instead of \"new pane\"`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Debug tools: Slow down view transitions tool`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Debug tools: New force hover styling debug tool (Thanks Ron!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Measure rectangle is now called Area`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Area screenshot now activate areas when not visible`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Meta panel: Slack design update`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Don't ask for confirmation when importing workspace into empty slot`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Accessible name calculation for form elements (Thanks Ron!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Extensions: Now open new tabs in main UI instead of browse panel (Thanks Ron!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Performance across the app thanks to react-compiler`)), 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`), ` Prevent stalled application launch when Widevine DRM can't be downloaded (Thanks Alexandra!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Noticeable white corners in dark mode for error views`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Emulation icon no longer always has an active dot (Thanks Randall!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Console: console.log(undefined) is now printed in the console (Thanks Luke!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Page zoom shortcuts on Windows now work again (Thanks Ron!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Replace cmd + h to hide element with ctrl + h on Mac (Thanks Michel!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Horizontal layout no longer can be dragged in certain configurations`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Fix 'paste and go' context menu option on Address bar`)));\n}\n;\nMDXContent.isMDXComponent = true;","timeToRead":7,"tableOfContents":{"items":[{"url":"#polypane-projects","title":"Polypane Projects"},{"url":"#snippets-panel","title":"Snippets Panel"},{"url":"#new-macos-icon","title":"New macOS Icon"},{"url":"#elements-panel-updates","title":"Elements panel updates","items":[{"url":"#line-numbers-for-css-styles","title":"Line numbers for CSS Styles"},{"url":"#force-starting-style","title":"Force @starting-style"},{"url":"#updated-hide-element-shortcut-on-macos","title":"Updated hide element shortcut (on macOS)"},{"url":"#duplicate-and-remove-elements","title":"Duplicate and remove elements"},{"url":"#other-context-menu-options","title":"Other context menu options"}]},{"url":"#meta-panel","title":"Meta panel"},{"url":"#new-debug-tools","title":"New debug tools","items":[{"url":"#slow-down-view-transitions","title":"Slow down view transitions"},{"url":"#force-hover-styling","title":"Force hover styling"}]},{"url":"#punycode-domain-support","title":"Punycode domain support"},{"url":"#download-notifications","title":"Download notifications"},{"url":"#notable-bug-fixes","title":"Notable bug Fixes","items":[{"url":"#widevine-drm-launch-fix","title":"Widevine DRM launch fix"},{"url":"#page-zoom-shortcuts-on-windows","title":"Page zoom shortcuts on Windows"},{"url":"#consolelogundefined-fix","title":"Console.log(undefined) fix"}]},{"url":"#chromium-142","title":"Chromium 142"},{"url":"#get-polypane-27","title":"Get Polypane 27"},{"url":"#polypane-2702-changelog","title":"Polypane 27.0.2 Changelog"},{"url":"#polypane-2701-changelog","title":"Polypane 27.0.1 Changelog"},{"url":"#polypane-27-changelog","title":"Polypane 27 Changelog"}]},"excerpt":"Polypane 27 is out! This release brings a new project-focused workflow, a new snippets panel, improved DOM editing and is built on Chromium 142. Here's…","frontmatter":{"title":"Polypane 27: Projects, a Snippets Panel and Chromium 142","cover":"/img/mail/icon.svg","date":"2025-11-20","updated":null},"fields":{"slug":"/blog/polypane-27-projects-a-snippets-panel-and-chromium-142/","date":"2025-11-19T23:00:00.000Z","ogFileName":"polypane-27-projects-a-snippets-panel-and-chromium-142"}}},"pageContext":{"slug":"/blog/polypane-27-projects-a-snippets-panel-and-chromium-142/"}},"staticQueryHashes":["4164364741","425175329"]}