{"componentChunkName":"component---src-templates-post-jsx","path":"/blog/polypane-28-project-improvements-elements-panel-updates-and-chromium-146/","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 28: Project improvements, Elements panel updates and Chromium 146\",\n  \"cover\": \"/img/mail/icon.svg\",\n  \"date\": \"2026-02-10\",\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, `The first release of 2026 comes with plenty of improvements to Projects, the new Environments feature prevents you from confusing production for localhost, the Elements panel is faster and more powerful than ever, and Polypane now runs on Chromium 146.`), mdx(PolypaneIntro, {\n    mdxType: \"PolypaneIntro\"\n  }), mdx(\"h2\", {\n    \"id\": \"projects\"\n  }, `Projects`), mdx(\"p\", null, `We continue to get really good feedback and user requests on Projects, which helps us prioritize what to work on next. In Polypane 28, we're introducing a new Environments option, Bookmarks are now available in the Browse panel too and Projects, Bookmarks and Environments can now be re-ordered with Drag and Drop, so you get to decide what order they appear in.`), mdx(\"h3\", {\n    \"id\": \"project-environments\"\n  }, `Project Environments`), mdx(\"p\", null, `When working on any project, you probably have it running in multiple places: locally on your machine, on a staging server/acceptance environment and in production. And you switch between them depending on what you're working on.`), mdx(\"p\", null, `And maybe more often than you'd like to admit, you accidentally keep refreshing production in utter frustration because the changes you made on localhost aren't showing up. (yeah, absolutely never happens to me neither).`), mdx(\"p\", null, `With the new Projects environments, not only is it incredibly easy to quickly switch between your different environments, the color indicators in the tab and address bar let you see at a glance which environment you're currently working in. For example, my localhost is always yellow:`), mdx(\"img\", {\n    src: yellowlocalhost,\n    className: \"imgshadow\",\n    alt: \"Add environment dialog\"\n  }), mdx(\"p\", null, `Each environment can have its own color that is shown in the tab, the address bar and the environment switcher. At a glance you immediately know which environment you're working in, and you're never stuck refreshing production waiting for changes you've made on localhost to show up.`), mdx(\"img\", {\n    src: addproject,\n    className: \"imgshadow\",\n    alt: \"Add environment dialog\"\n  }), mdx(\"p\", null, `Switching between environments makes it easy to keep the same context while testing your site in different setups: switching the environment will keep you on the same page, just on the different domain.`), mdx(\"p\", null, `Switch to specific environments using the environment switcher, or middle click the icon to simply advance to the next environment in the list.`), mdx(\"img\", {\n    src: environments,\n    className: \"imgshadow\",\n    alt: \"Environments dropdown\"\n  }), mdx(\"p\", null, `This feature has been on our backlog since early 2025 and having used it in the past few weeks I can say it's a much bigger productivity boost than I anticipated.`), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, `Want to try Environments?`), ` `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://dashboard.polypane.app/register\"\n  }), `Start your free 14-day trial`), `. No credit card required.`)), mdx(\"p\", null, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/projects/#environments\"\n  }), `Learn more about Project Environments →`)), mdx(\"h3\", {\n    \"id\": \"project-bookmarks-and-environment-reordering\"\n  }, `Project, bookmarks and environment reordering`), mdx(\"p\", null, `You can now reorder Projects, Bookmarks and Environments using drag and drop. Just grab the item you want to move and drag it to the desired position in the list.`), mdx(\"p\", null, `For projects, this can be done right in the project switcher so you can put the projects with the highest priority on top.`), mdx(\"video\", {\n    src: sortprojects,\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(ThanksCallout, {\n    name: \"Michael\",\n    mdxType: \"ThanksCallout\"\n  }, \"for requesting project reordering\"), mdx(\"p\", null, `Bookmarks and environments can be reordered in the Project editor, again using drag and drop:`), mdx(\"video\", {\n    src: sortbookmarks,\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(\"h3\", {\n    \"id\": \"color-indicator-for-panes\"\n  }, `Color indicator for panes`), mdx(\"p\", null, `The color indicators for domain and tab overrides were only shown in the tab and address bar. In Polypane 28 we now also show this for any pane that has `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/showing-multiple-urls/#decoupling-panes-for-different-urls\"\n  }), `navigation sync`), ` disabled. When you're comparing multiple environments in a single tab, this makes it easy to see which environment you're currently viewing.`), mdx(\"img\", {\n    src: panecolor,\n    className: \"imgshadow\",\n    alt: \"Pane environment colors\"\n  }), mdx(\"h3\", {\n    \"id\": \"be-inclusive-integration\"\n  }, `Be Inclusive integration`), mdx(\"p\", null, `Thr accessibility auditing tool `, mdx(\"a\", {\n    href: \"https://beinclusive.app\"\n  }, `Be Inclusive`), ` can now export audit reports as Polypane projects, making it super easy to import your audits into Polypane.`), mdx(\"p\", null, `Export your audit from Be Inclusive and load it into Polypane. The target samples you specified in Be Inclusive are automatically added as bookmarks in your project, so you can quickly jump to those pages and test your fixes.`), mdx(\"img\", {\n    \"src\": \"https://beinclusive.app/img/ogimage.png\",\n    \"className\": \"imgshadow\",\n    \"alt\": \"Be Inclusive\"\n  }), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, `Polypane subscribers get a `, mdx(\"strong\", {\n    parentName: \"p\"\n  }, `15% discount on Be Inclusive`), `! If you have an active subscription, find a discount code on our `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://dashboard.polypane.app/deals\"\n  }), `Deals page`), `.`)), mdx(\"h2\", {\n    \"id\": \"cli-options\"\n  }, `CLI options`), mdx(\"p\", null, `Polypane now has several new and improved command line options, including a completely new `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `--help`), `/`, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `-h`), ` overview that shows all available options:`), mdx(\"img\", {\n    src: polycli,\n    alt: \"Polypane CLI help output\",\n    className: \"imgshadow\",\n    style: {\n      \"margin\": \"2rem auto\",\n      \"maxWidth\": \"100%\"\n    }\n  }), mdx(\"p\", null, `You can now open as many URLs as you want when starting Polypane from the command line. Just add them after any options and they will be opened in tabs in the current project.`), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"sh\"\n  }, mdx(\"pre\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"language-sh\"\n  }), mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-sh\"\n  }), `$ polypane https://polypane.com/docs/ https://polypane.app/support/`))), mdx(\"p\", null, `You can use `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `--project`), ` to switch to a specific project when opening Polypane from the command line,`), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"sh\"\n  }, mdx(\"pre\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"language-sh\"\n  }), mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-sh\"\n  }), `$ polypane `, mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token parameter variable\"\n  }), `--project`), mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), `=`), `projectname`))), mdx(\"p\", null, `or you can open a URL directly in a specific project`), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"sh\"\n  }, mdx(\"pre\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"language-sh\"\n  }), mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-sh\"\n  }), `$ polypane `, mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token parameter variable\"\n  }), `--project`), mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), `=`), `projectname https://polypane.com/docs/`))), mdx(ThanksCallout, {\n    name: \"Marc\",\n    mdxType: \"ThanksCallout\"\n  }, \"for requesting this\"), mdx(\"p\", null, `When you try to open a project that doesn't exist, Polypane will now ask if you want to create it. You can also automatically create the project without prompt by adding the `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `--create`), ` flag. That will create the project if it doesn't exist yet, and open any URLs in the newly created project.`), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"sh\"\n  }, mdx(\"pre\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"language-sh\"\n  }), mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-sh\"\n  }), `$ polypane `, mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token parameter variable\"\n  }), `--project`), mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), `=`), `projectname `, mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token parameter variable\"\n  }), `--create`), ` https://polypane.com/docs/`))), mdx(\"p\", null, `Altogether this makes for an incredibly easy way to quickly instantiate new projects from the command line. You could even add this to your scaffolding scripts for new projects and automate the creation workflow entirely.`), mdx(\"p\", null, `This new set of CLI options also makes it easy to integrate Polypane in your existing workflows, for example by `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/blog/always-open-localhost-in-your-development-browser/\"\n  }), `always opening specific urls in a specific project`), `.`), mdx(\"p\", null, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/command-line-options/\"\n  }), `Learn more about CLI options →`)), mdx(\"h3\", {\n    \"id\": \"traydock-options\"\n  }, `Tray/Dock options`), mdx(\"p\", null, `On macOS and Windows, you can now right-click the Polypane icon in the Dock/Tray to quickly open or switch to a specific project. This makes it easy to switch projects without having to open the project switcher first.`), mdx(ThanksCallout, {\n    name: \"Benoit\",\n    mdxType: \"ThanksCallout\"\n  }, \"for suggesting this improvement\"), mdx(\"p\", null, `This feature is not available on Linux because it's not possible to populate a .desktop file with dynamic menu items.`), mdx(\"h2\", {\n    \"id\": \"disabled-cache-logic-improvements\"\n  }, `Disabled cache logic improvements`), mdx(\"p\", null, `Polypane's cache disabling logic has been improved in Polypane 28. Instead of applying cache disabling to sessions, which could lead to unexpected cache handling in specific panes, we now apply cache disabling directly on the web content instances of individual panes.`), mdx(\"p\", null, `What you will notice is that a disabled cache behaves more consistently across all panes and tabs, and that there are fewer instances of stale caching on normal reloads. With this change, cache disabling is more predictable and in line with the 'disable cache' button in the Chrome devtools.`), mdx(\"h3\", {\n    \"id\": \"cache-is-still-enabled-by-default\"\n  }, `Cache is still enabled by default`), mdx(\"p\", null, `Polypane continues to have caching `, mdx(\"em\", {\n    parentName: \"p\"\n  }, `enabled`), ` by default. I strongly think the Chromium Devtools feature that automatically disables caching is harming web developers more than it helps them.`), mdx(\"p\", null, `It obscures real-world issues that only appear when caching is enabled, and it gives a false sense of security that your site works correctly when in reality it might be broken for your users.`), mdx(\"h2\", {\n    \"id\": \"console-panel-consolegroup-support\"\n  }, `Console panel: console.group support`), mdx(\"p\", null, `The Console panel now supports `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `console.group`), `, `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `console.groupCollapsed`), ` and `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `console.groupEnd`), `, making it easier to structure your console output when debugging.`), mdx(\"img\", {\n    src: consolegroup,\n    className: \"imgshadow\",\n    alt: \"Console group example\"\n  }), mdx(\"p\", null, `Polypane's console is built from the ground up and shares no code with Chrome DevTools so we can support collecting console messages from all panes. Since we can't re-use existing code it took us a while to get this feature in while making sure that the console clearly shows where messages come from and consolidating groups across panes correctly.`), mdx(ThanksCallout, {\n    name: \"Giles\",\n    mdxType: \"ThanksCallout\"\n  }, \"for requesting this feature\"), mdx(\"h2\", {\n    \"id\": \"elements-panel\"\n  }, `Elements panel`), mdx(\"p\", null, `When using the Elements panel in Polypane 28 you'll notice how much quicker it shows styles when inspecting elements. What took a few hundred ms now takes less than 50ms for the majority of pages. We've made several performance improvements under the hood that make inspecting elements and switching between them much faster, especially on pages with a lot of styles.`), mdx(\"h3\", {\n    \"id\": \"editing-css-selectors\"\n  }, `Editing CSS selectors`), mdx(\"p\", null, `New in Polypane 28 is that you can click on any CSS selector in the Styles pane to edit it. This makes it easy to refine your selectors or re-apply styles to other elements by changing the selector to match those elements.`), mdx(\"video\", {\n    src: editselector,\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(\"p\", null, `Other browser devtools also have this feature, but of course the Polypane developer tools apply the changes live across all panes, so you can see how your changes affect different viewports and devices immediately.`), mdx(\"h3\", {\n    \"id\": \"improved-important-visibility\"\n  }, `Improved `, mdx(\"code\", _extends({\n    parentName: \"h3\"\n  }, {\n    \"className\": \"language-text\"\n  }), `!important`), ` visibility`), mdx(\"p\", null, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `!important`), ` css properties now have a new design that makes them much more visible than the previous design.`), mdx(\"img\", {\n    src: importantstyling,\n    className: \"imgshadow\",\n    alt: \"Important styling example\"\n  }), mdx(\"p\", null, `In Polypane 28 both the property name and value have a different color when you use !important, making them much more visible in the list of styles. `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `!important`), ` is best avoided of course, but sometimes it's the most practical solution. With this new style highlighting, figuring out what's going on with your styles is a bit easier.`), mdx(\"h3\", {\n    \"id\": \"notable-fixes-and-improvements\"\n  }, `Notable Fixes and improvements`), mdx(\"p\", null, `Editing styles on parents nodes were not being applied in Polypane 27.x. This has been fixed in Polypane 28, so changing styles on parent elements now works as expected.`), mdx(ThanksCallout, {\n    name: \"Scott\",\n    mdxType: \"ThanksCallout\"\n  }, \"for reporting this issue\"), mdx(\"p\", null, `When you're editing the HTML of an element you no longer have to click 'Apply changes', you can also press `, mdx(ShortCutDisplay, {\n    cmdKey: true,\n    letter: \"Enter\",\n    mdxType: \"ShortCutDisplay\"\n  }), ` so you don't have to leave your keyboard.`), mdx(\"p\", null, `There were some sites where a specific border-radius style would cause an issue with our box model visualisation (which also shows border radius, shadows and positioning). This has been fixed in Polypane 28 so the box model now always renders correctly.`), mdx(\"img\", {\n    src: boxmodel28,\n    className: \"imgshadow\",\n    alt: \"Box model with border radius\"\n  }), mdx(\"p\", null, `The attributes tab will now check the `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `autocomplete`), ` values on input elements and show a warning when an invalid value is used. This makes it easier to spot typos or incorrect values that prevent browsers from autofilling forms correctly.`), mdx(\"p\", null, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/elements-panel/\"\n  }), `Learn more about the Elements panel →`)), mdx(\"h2\", {\n    \"id\": \"ui-updates\"\n  }, `UI updates`), mdx(\"p\", null, `Polypane 28 includes several UI updates to improve usability and consistency throughout the app.`), mdx(\"h3\", {\n    \"id\": \"new-macos-installer-background\"\n  }, `New macOS installer background`), mdx(\"p\", null, `Our macOS installer now features a new background image that aligns with the updated Polypane branding, and we've also made the icons larger.`), mdx(\"img\", {\n    src: newinstaller,\n    alt: \"New macOS installer\"\n  }), mdx(\"h3\", {\n    \"id\": \"panel-design-updates\"\n  }, `Panel design updates`), mdx(\"p\", null, `Several panels have received design updates to improve their usability and visual consistency. The outline panel has a completely new design for when it's bottom-aligned to make much better use of the space.`), mdx(\"p\", null, `The meta panel now keeps the social media preview header visible as you scroll, so you can quickly switch between light and dark previews, overwrite with different domains or reorder and hide specific previews.`), mdx(\"h3\", {\n    \"id\": \"live-reload-redesign\"\n  }, `Live reload redesign`), mdx(\"p\", null, `The live reload panel has been in Polypane since 2019, and it's a beloved feature for many users because it makes testing changes so easy without having to build complex setups.`), mdx(\"img\", {\n    src: livereload,\n    className: \"imgshadow\",\n    alt: \"\"\n  }), mdx(\"p\", null, `In Polypane 28, we've redesigned the live reload panel to better fit with the overall Polypane UI. It's now more consistent with the other panels in Polypane and provides more context on the available options.`), mdx(\"p\", null, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/live-auto-reloading/\"\n  }), `Learn more about Live reload →`)), mdx(\"h2\", {\n    \"id\": \"browse-panel\"\n  }, `Browse panel`), mdx(\"p\", null, `The Browse panel has received several improvements to its ergonomics in Polypane 28. The new bookmarks button lets you quickly open your bookmarks in the Browse panel (even if you've hidden the Project selector). The Browse panel now also has better focus handling for keyboard users, supports default browser shortcuts when focused, and has a new Find in page feature.`), mdx(\"h3\", {\n    \"id\": \"bookmarks-in-browse-panel\"\n  }, `Bookmarks in Browse panel`), mdx(\"p\", null, `The Browse panel now has a new drop down showing your bookmarks for the current project. This makes it easy to open your bookmarked pages directly in the Browse panel.`), mdx(\"img\", {\n    src: browsebookmarks,\n    alt: \"\",\n    className: \"imgshadow\",\n    style: {\n      \"margin\": \"2rem auto\",\n      \"maxWidth\": \"100%\"\n    }\n  }), mdx(\"p\", null, `Additionally, if you've decided to hide the Project Selector in the tab bar, you can still access your bookmarks from the Browse panel.`), mdx(ThanksCallout, {\n    name: \"Matija\",\n    mdxType: \"ThanksCallout\"\n  }, \"for suggesting this improvement\"), mdx(\"h3\", {\n    \"id\": \"shortcuts\"\n  }, `Shortcuts`), mdx(\"p\", null, `When the Browse panel has focus, 'normal' browser shortcuts, like opening and closing tabs or focusing the address bar, work as expected in the Browse panel instead of triggering Polypane-wide shortcuts. This makes it easier to use the Browse panel as a full browser experience without leaving your keyboard.`), mdx(\"h3\", {\n    \"id\": \"search-in-page\"\n  }, `Search in page`), mdx(\"p\", null, `With the Browse panels primary goal of being a supplemental browser where you can have your docs and references open, having a search feature has been a frequently requested feature. In Polypane 28, you can search in the Browse panel using `, mdx(ShortCutDisplay, {\n    cmdKey: true,\n    letter: \"F\",\n    mdxType: \"ShortCutDisplay\"\n  }), ` when it's focused to quickly find text on the page.`), mdx(\"img\", {\n    src: browsefindinpage,\n    alt: \"\",\n    className: \"imgshadow\",\n    style: {\n      \"margin\": \"2rem auto\",\n      \"maxWidth\": \"100%\"\n    }\n  }), mdx(\"p\", null, `Both text and HTML search are supported, and the search results are highlighted on the page as you type.`), mdx(\"p\", null, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/browse/\"\n  }), `Learn more about the Browse panel →`)), mdx(\"h2\", {\n    \"id\": \"meta-panel\"\n  }, `Meta panel`), mdx(\"p\", null, `We've added several nice improvements to the meta panel along with the design update mentioned earlier.`), mdx(\"h3\", {\n    \"id\": \"new-bluesky-preview-for-pages-without-og-image\"\n  }, `New Bluesky preview for pages without OG image`), mdx(\"p\", null, `When a website doesn't have an OG image defined, Bluesky uses either the description or the page content to create a rich preview. This is quite different from other social media sites, and now Polypane replicates this behavior in the Meta panel. That way, you see exactly what your users see.`), mdx(\"img\", {\n    src: bskytxt,\n    className: \"imgshadow\",\n    alt: \"Bluesky text preview\"\n  }), mdx(\"h3\", {\n    \"id\": \"securitytxt-warning\"\n  }, `Security.txt warning`), mdx(\"p\", null, `A while back, the security.txt of our website expired and we failed to notice it until someone reached out to us about it. Polypane 28 now checks the expires date of your security.txt and warns you if it's expired, or if it's about to expire in the next 30 days.`), mdx(\"p\", null, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/meta-information/\"\n  }), `Learn more about the Meta panel →`)), mdx(\"h2\", {\n    \"id\": \"outline-panel\"\n  }, `Outline panel`), mdx(\"p\", null, `We've made various updates to the form overview in the outline panel to make testing forms easier.`), mdx(\"h3\", {\n    \"id\": \"autocomplete-value\"\n  }, `Autocomplete value`), mdx(\"p\", null, `The autocomplete value is now always visible directly below the label, so you can quickly assess if the correct value is being used.`), mdx(\"p\", null, `Autocomplete values are automatically checked against a list of valid values for a particular input type and that list is now also aware of the `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `shipping`), ` and `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `billing`), ` prefixes for address related values.\nWhen an invalid value is used, a warning icon shows next to the value so you can see which fields need your attention.`), mdx(\"img\", {\n    src: autocompletes,\n    className: \"imgshadow\",\n    alt: \"Autocomplete warnings\"\n  }), mdx(\"p\", null, `The form overlay now also shows these warnings, making it easier to spot issues when inspecting forms.`), mdx(ThanksCallout, {\n    name: \"Jules\",\n    mdxType: \"ThanksCallout\"\n  }, \"for suggesting this improvement\"), mdx(\"h3\", {\n    \"id\": \"form-outline-now-warns-about-small-font-sizes\"\n  }, `Form outline now warns about small font sizes`), mdx(\"p\", null, `The form outline now checks the font size of text input elements and warns you when the font size is smaller than 16px, which causes the page to zoom in on iOS devices on input focus. This is a poor user experience on mobile devices, so the warning helps you catch and fix it early.`), mdx(\"h4\", {\n    \"id\": \"form-outline-expand-all-details-option\"\n  }, `Form outline expand all details option`), mdx(\"p\", null, `You can now click the 'details' header in the form outline to expand or collapse all details sections at once. This makes it easier to get an overview of all issues or warnings in your forms without having to open each section individually.`), mdx(\"p\", null, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/outline-panel/\"\n  }), `Learn more about the Outline panel →`)), mdx(\"h2\", {\n    \"id\": \"snippets-from-the-command-bar\"\n  }, `Snippets from the command bar`), mdx(\"p\", null, `You can now activate and deactivate snippets directly from the command bar. Just open the command bar with `, mdx(ShortCutDisplay, {\n    cmdKey: true,\n    letter: \"K\",\n    mdxType: \"ShortCutDisplay\"\n  }), ` and type the name of your snippet to quickly toggle it on or off, or activate it.`), mdx(ThanksCallout, {\n    name: \"Eric\",\n    mdxType: \"ThanksCallout\"\n  }, \"for suggesting this improvement\"), mdx(\"img\", {\n    src: snippetscommand,\n    className: \"imgshadow\",\n    alt: \"Snippets command bar\"\n  }), mdx(\"p\", null, `This lets you quickly apply (and remove) snippets without having to open the snippets manager, and it's all accessible from your keyboard.`), mdx(\"p\", null, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/docs/snippets/\"\n  }), `Learn more about snippets →`)), mdx(\"h2\", {\n    \"id\": \"page-load-performance\"\n  }, `Page Load performance`), mdx(\"p\", null, `We've made several improvements specifically to the page load performance in Polypane 28. Polypane now does less work setting up its various listeners and indexers when loading a page, resulting in faster load times, especially on pages with a lot of elements or complex structures.`), mdx(\"h2\", {\n    \"id\": \"polypane-and-wcag-updates\"\n  }, `Polypane and WCAG updates`), mdx(\"p\", null, `Accessibility consultant `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://www.200ok.nl/\"\n  }), `Jules Ernst`), ` has updated his overview of WCAG success criteria and how Polypane helps you test for them.`), mdx(\"p\", null, `Check out the updated `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://www.200ok.nl/tips/polypane-and-wcag/\"\n  }), `Polypane and WCAG overview`), ` on his site for the latest information.`), mdx(ThanksCallout, {\n    name: \"Jules\",\n    mdxType: \"ThanksCallout\"\n  }, \"for keeping this overview up to date\"), mdx(\"h2\", {\n    \"id\": \"chromium-146\"\n  }, `Chromium 146`), mdx(\"p\", null, `Polypane 28 is built on Chromium 146. 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-28\"\n  }, `Get Polypane 28`), 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-2803-changelog\"\n  }, `Polypane 28.0.3 Changelog`), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Issue preventing Mac users from auto-updating`)), mdx(\"h2\", {\n    \"id\": \"polypane-2802-changelog\"\n  }, `Polypane 28.0.2 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`), ` Added cmd/ctrl+shift+d shortcut to reload all debug tools (Thanks Florian!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Snippet manager UI improvements`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Outline panel: now ignores hidden headings for duplicate content checks`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Outline panel: Improved logic for aside elements in sectioning content (Thanks Eric!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` More resilient build and update internals`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Elements panel: Improve performance for large DOM trees`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Context menu performance in browse panel`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Peek now shows the currentSrc for videos`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Meta panel: Warn when the og:url is not the same as the canonical or page url`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Breakpoints no longer list negative value widths`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Breakpoint panes adhere to the minimum pane width`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Reduced installer download size by an average of 25%`), 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 146.0.7680.31`)), 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 Polypane shortcuts overwriting global ones on app launch (Thanks Benoit!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Elements panel: issue where autocomplete cleared the typed value when adding attributes or css values`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Color picker not setting correct background color when inspecting from Elements panel`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Snippets: Last save location is now correctly remembered when saving snippets`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Install extensions from suggestion box when you have multiple sessions`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Reinstate sync engine after main window reopen on macOS`)), mdx(\"h2\", {\n    \"id\": \"polypane-2801-changelog\"\n  }, `Polypane 28.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`), ` Environments switcher: Add cmd + click as option to cycle through environments for mac (Thanks Nicolas!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Meta panel: Improved Bluesky preview for pages with missing og info (Thanks Matija!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Outline panel: Form list now also indexes role=form`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Address bar now recognises localhost paths as valid urls (Thanks Harald!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Portal: You can now middle-click the icon to close the portal`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Peek: Improved area rendering logic`)), 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: prevent collecting styles too fast for CSS-in-JS libraries to apply (Thanks Lara!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Elements panel: Show force starting-style option for styles nested inside starting style`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Elements panel: Calculation error in box model (Thanks Bramus!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Elements panel: Currently selected element could not be collapsed by mouseclick (Thanks Harald!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Meta panel: Breadcrumbslist microdata with single item would break updates (Thanks Marc!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Environments dropdown: Prevent horizontal scroll in dropdown`)), mdx(\"h2\", {\n    \"id\": \"polypane-28-changelog\"\n  }, `Polypane 28 Changelog`), mdx(\"p\", null, `Full changelog (yes, there's more!):`), 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`), ` Environments for Projects`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Elements panel: Edit CSS Selectors`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Console: Support for console.group (Thanks Giles!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Command bar: Activate or deactivate snippets from the command bar (Thanks Eric!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Chromium 146.0.7650.0`)), 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`), ` Projects, Bookmarks and Environments can now be re-ordered (Thanks Michael!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Projects: Open or switch from the CLI (Thanks Marc!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Projects: Open or switch from the macOS and windows dock/taskbar (Thanks Benoit!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Elements panel: Constructed stylesheets no longer open browse tabs when clicked`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Elements panel: Updated performance when inspecting elements`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Elements panel: make !important styles more visible`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Elements panel: press `, mdx(ShortCutDisplay, {\n    cmdKey: true,\n    letter: \"Enter\",\n    mdxType: \"ShortCutDisplay\"\n  }), ` when editing HTML to apply it`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Elements panel: Show warning for invalid autocomplete values`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Elements panel: Support for `, mdx(\"code\", _extends({\n    parentName: \"li\"\n  }, {\n    \"className\": \"language-text\"\n  }), `::search-text`), ` pseudo-element styling`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Meta panel: Improved UI`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Meta panel: Handle broken link tags on pages`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Meta panel: Link meta tags containing URLS are now clickable`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Meta panel: Show the type of 'alternate' link tags`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Meta panel: New Bluesky preview for pages without OG image`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Meta panel: Show warning if security.txt is expired`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Meta panel: Allow webp for og images`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Meta panel: Updated Discord designs`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Outline panel: Form outline warns about small font sizes`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Outline panel: New bottom-aligned panel layout`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Outline panel: Support shipping and billing values in Form autocomplete`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Outline panel: Expand all details option (Thanks Jules!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Outline panel: show autocomplete warnings in form overlay`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Context menu: Hold `, mdx(ShortCutDisplay, {\n    cmdKey: true,\n    mdxType: \"ShortCutDisplay\"\n  }), ` when clicking 'reload pane' to do a hard reload`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Cache: Disable cache now applies to panes instead of sessions`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Improved page load performance`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Improved tab creation performance`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Debug tools: Polypane UI is excluded from placeholdifier debug tool (Thanks Dave!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Browse/devtools panel: Improve resize performance`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Browse panel: Show bookmarks in Browse panel (Thanks Matija!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Live reload: Redesigned to fit better with Polypane UI`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Consistent 'clear input' UI throughout the app`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` New macOS installer background`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Tab customisation UI redesign`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Panes without navigation sync now get a color indicator when environments or domains match`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Browse panel: Search in page (Thanks Matija!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Browse panel: Better focus handling for keyboard users (Thanks Matija!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Browse panel: Support for default browser shortcuts when focused`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Rulers: Middle click button to disable rulers quickly`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Reference image: updated UI`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` When setting a new default new pane, the default new layout is updated too (Thanks Michael!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Form autofilling now has Dutch and Canadian postal code formats (Thanks Maarten!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` We no longer hide the browse and devtools panels when drop downs overlay them`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Emoji pickers now always start with search, and default to Unicode 16 emojis`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Accessibility panel: Update ruleset`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Updated list of Google fonts`)), 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 UI from breaking when there are many open tabs (Thanks Ron!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Projects: prevent duplicate project names`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Browse panel: Prevent issue where new tabs could not be created`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Snippet panel: Prevent stale focus outlines after use`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Elements panel: Box model would sometimes not render (Thanks Scott!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Elements panel: Updating parent styles works again (Thanks Scott!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Outline panel: Make sure numbering and focus arrows are visible again`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Outline panel: Prevent link errors from being clipped`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Outline panel: Show broken links now filters list again`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Outline panel: Tracking button in detached panel works again`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Outline panel: Detached panel did not always get new data`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Outline panel: add missing `, mdx(\"code\", _extends({\n    parentName: \"li\"\n  }, {\n    \"className\": \"language-text\"\n  }), `street-address`), ` autocomplete value`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Outline panel: correctly support autocomplete on implicitly typed input elements`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Storage panel: Fix bug where session could not be accessed for initial panes`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Meta panel: Robots.txt duplicate warning layout issue`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Bookmarks: Middle clicks open new tab`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Context menus in Chrome devtools panel not showing`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Emulation: Correctly show the current network throttling profile`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Emulation: scrolled settings no longer prevent tabs from being clickable (Thanks Dave!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Update measured screenshot button correctly on activation`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Background color of overview screenshots did not match UI`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Request new permission on launch to allow sites to use desktopCapture on macOS`)));\n}\n;\nMDXContent.isMDXComponent = true;","timeToRead":13,"tableOfContents":{"items":[{"url":"#projects","title":"Projects","items":[{"url":"#project-environments","title":"Project Environments"},{"url":"#project-bookmarks-and-environment-reordering","title":"Project, bookmarks and environment reordering"},{"url":"#color-indicator-for-panes","title":"Color indicator for panes"},{"url":"#be-inclusive-integration","title":"Be Inclusive integration"}]},{"url":"#cli-options","title":"CLI options","items":[{"url":"#traydock-options","title":"Tray/Dock options"}]},{"url":"#disabled-cache-logic-improvements","title":"Disabled cache logic improvements","items":[{"url":"#cache-is-still-enabled-by-default","title":"Cache is still enabled by default"}]},{"url":"#console-panel-consolegroup-support","title":"Console panel: console.group support"},{"url":"#elements-panel","title":"Elements panel","items":[{"url":"#editing-css-selectors","title":"Editing CSS selectors"},{"url":"#improved-important-visibility","title":"Improved !important visibility"},{"url":"#notable-fixes-and-improvements","title":"Notable Fixes and improvements"}]},{"url":"#ui-updates","title":"UI updates","items":[{"url":"#new-macos-installer-background","title":"New macOS installer background"},{"url":"#panel-design-updates","title":"Panel design updates"},{"url":"#live-reload-redesign","title":"Live reload redesign"}]},{"url":"#browse-panel","title":"Browse panel","items":[{"url":"#bookmarks-in-browse-panel","title":"Bookmarks in Browse panel"},{"url":"#shortcuts","title":"Shortcuts"},{"url":"#search-in-page","title":"Search in page"}]},{"url":"#meta-panel","title":"Meta panel","items":[{"url":"#new-bluesky-preview-for-pages-without-og-image","title":"New Bluesky preview for pages without OG image"},{"url":"#securitytxt-warning","title":"Security.txt warning"}]},{"url":"#outline-panel","title":"Outline panel","items":[{"url":"#autocomplete-value","title":"Autocomplete value"},{"url":"#form-outline-now-warns-about-small-font-sizes","title":"Form outline now warns about small font sizes","items":[{"url":"#form-outline-expand-all-details-option","title":"Form outline expand all details option"}]}]},{"url":"#snippets-from-the-command-bar","title":"Snippets from the command bar"},{"url":"#page-load-performance","title":"Page Load performance"},{"url":"#polypane-and-wcag-updates","title":"Polypane and WCAG updates"},{"url":"#chromium-146","title":"Chromium 146"},{"url":"#get-polypane-28","title":"Get Polypane 28"},{"url":"#polypane-2803-changelog","title":"Polypane 28.0.3 Changelog"},{"url":"#polypane-2802-changelog","title":"Polypane 28.0.2 Changelog"},{"url":"#polypane-2801-changelog","title":"Polypane 28.0.1 Changelog"},{"url":"#polypane-28-changelog","title":"Polypane 28 Changelog"}]},"excerpt":"The first release of 2026 comes with plenty of improvements to Projects, the new Environments feature prevents you from confusing production for localhost, the…","frontmatter":{"title":"Polypane 28: Project improvements, Elements panel updates and Chromium 146","cover":"/img/mail/icon.svg","date":"2026-02-10","updated":null},"fields":{"slug":"/blog/polypane-28-project-improvements-elements-panel-updates-and-chromium-146/","date":"2026-02-09T23:00:00.000Z","ogFileName":"polypane-28-project-improvements-elements-panel-updates-and-chromium-146"}}},"pageContext":{"slug":"/blog/polypane-28-project-improvements-elements-panel-updates-and-chromium-146/"}},"staticQueryHashes":["4164364741","425175329"]}