{"componentChunkName":"component---src-templates-post-jsx","path":"/blog/polypane-21-1/","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 21.1\",\n  \"cover\": \"/img/mail/icon.svg\",\n  \"date\": \"2024-09-02\",\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 21.1 adds scroll syncing to all scrollable areas as well as various improvements and fixes.`), mdx(PolypaneIntro, {\n    mdxType: \"PolypaneIntro\"\n  }), mdx(\"h2\", {\n    \"id\": \"scroll-syncing-for-all-scrollable-areas\"\n  }, `Scroll syncing for all scrollable areas`), mdx(\"p\", null, `Polypane always synced the main vertical scroll position of a page (the browser-optimized `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `scrollingElement`), `).`), mdx(\"p\", null, `We now also sync the scroll position of `, mdx(\"strong\", {\n    parentName: \"p\"\n  }, `any scrollable element`), ` on the page, as well as the `, mdx(\"strong\", {\n    parentName: \"p\"\n  }, `horizontal scroll`), ` position.`), mdx(\"p\", null, `I always make a `, mdx(\"del\", null, `beautiful`), ` test page to build and test new features, so here's a video of that very page syncing the horizontal scroll position, and the scroll position (both directions) inside a scrollable area:`), mdx(\"video\", {\n    src: scrollarea,\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, `Of course, it also works really well in `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/portal/\"\n  }), `Polypane Portal`), `:`), mdx(\"video\", {\n    src: scrollarea2,\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\": \"other-updates\"\n  }, `Other updates`), mdx(\"p\", null, `We have mostly small convenience changes that make your life a little easier.`), mdx(\"h3\", {\n    \"id\": \"loading-error-messages-in-the-browse-panel\"\n  }, `Loading error messages in the browse panel`), mdx(\"p\", null, `We added loading error messages to `, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/blog/polypane-20-browser-features-and-performance/#load-failure-messages\"\n  }), `Polypane 20`), ` and now we've also enabled them for the browse panel.`), mdx(\"img\", {\n    src: loaderror,\n    className: \"imgshadow\",\n    alt: \"A page load error in the browse panel\"\n  }), mdx(\"p\", null, mdx(\"em\", {\n    parentName: \"p\"\n  }, `Still no game though, sorry.`)), mdx(\"h3\", {\n    \"id\": \"devtools-panel\"\n  }, `Devtools panel`), mdx(\"p\", null, `When you have a single pane visible (or are using the focus or full layout), opening the devtools panel now automatically starts the devtools for that pane so you no longer have to manually select the single pane from the dropdown.`), mdx(\"h3\", {\n    \"id\": \"discord-preview-improvements\"\n  }, `Discord preview improvements`), mdx(\"p\", null, `Discord completely strips out HTML-like parts from an `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `og:title`), `, in contrast to other social media platforms that encode it.`), mdx(\"p\", null, `That means that if you have a title like \"Do you know about `, `<`, `input type=\"number\"`, `>`, `?\" it will show up as \"Do you know about ?\" in Discord.`), mdx(\"p\", null, `The meta panel now also strip out those parts so it closely matches what Discord shows.`), mdx(\"h3\", {\n    \"id\": \"subgrid-badge\"\n  }, `Subgrid badge`), mdx(\"p\", null, `The elements panel now shows differentiates between regular grid and subgrid elements and shows a separate badge for subgrid elements.`), mdx(\"img\", {\n    src: subgrid,\n    className: \"imgshadow\",\n    alt: \"Subgrid badges in the Elements Panel\"\n  }), mdx(\"h2\", {\n    \"id\": \"get-polypane-211\"\n  }, `Get Polypane 21.1`), mdx(\"p\", null, `Polypane is available for Windows, Mac and Linux (.deb or AppImage) in both 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(\"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-211-changelog\"\n  }, `Polypane 21.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`), ` Sync all scroll areas`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Sync horizontal scroll positions`)), 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`), ` Screenshot editor: Improve zooming speed`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Devtools panel: For single-pane tabs we now automatically open devtools when focusing the panel`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Browse panel: Show loading errors`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Meta panel: Discord title now strips HTML-like parts`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Elements panel: New Subgrid badge`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Pane load performance`)), 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`), ` Portal syncing for servers with uncompressed pages`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Show ARIA overlay display (Thanks Dash!)`)));\n}\n;\nMDXContent.isMDXComponent = true;","timeToRead":2,"tableOfContents":{"items":[{"url":"#scroll-syncing-for-all-scrollable-areas","title":"Scroll syncing for all scrollable areas"},{"url":"#other-updates","title":"Other updates","items":[{"url":"#loading-error-messages-in-the-browse-panel","title":"Loading error messages in the browse panel"},{"url":"#devtools-panel","title":"Devtools panel"},{"url":"#discord-preview-improvements","title":"Discord preview improvements"},{"url":"#subgrid-badge","title":"Subgrid badge"}]},{"url":"#get-polypane-211","title":"Get Polypane 21.1"},{"url":"#polypane-211-changelog","title":"Polypane 21.1 Changelog"}]},"excerpt":"Polypane 21.1 adds scroll syncing to all scrollable areas as well as various improvements and fixes. Scroll syncing for all scrollable areas Polypane always…","frontmatter":{"title":"Polypane 21.1","cover":"/img/mail/icon.svg","date":"2024-09-02","updated":null},"fields":{"slug":"/blog/polypane-21-1/","date":"2024-09-01T22:00:00.000Z","ogFileName":"polypane-21-1"}}},"pageContext":{"slug":"/blog/polypane-21-1/"}},"staticQueryHashes":["4164364741","425175329"]}