{"componentChunkName":"component---src-templates-post-jsx","path":"/blog/polypane-6-1-readability-content-chaos-and-rewritten-event-sync-engine/","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 6.1: Readability, Content Chaos and rewritten event sync engine\",\n  \"cover\": \"/img/mail/icon.svg\",\n  \"date\": \"2021-06-01\",\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 6.1 adds two new debug tools and a much more performant, completely rewritten interaction syncing engine along with numerous smaller improvements and bug fixes.`), mdx(PolypaneIntro, {\n    mdxType: \"PolypaneIntro\"\n  }), mdx(\"h2\", {\n    \"id\": \"readability-debug-tool\"\n  }, `Readability debug tool`), mdx(\"p\", null, `The readability debug tool will calculate how difficult each sentence on your page is. Darker, redder sentences are harder to understand while lighter, greener sentences are easier to read.`), mdx(\"p\", null, `We calculate this using the Automated Readability Index (ARI), which works well for most western, European languages. For pages in Arabic it uses the Automatic Arabic Readability Index (AARI). If you know of other languages that have a Readability Index algorithm, please let us know!`), mdx(\"p\", null, mdx(\"img\", _extends({\n    parentName: \"p\"\n  }, {\n    \"src\": \"/doc-img/overlays/readability.png\",\n    \"alt\": \"Polypane screenshot of the docs page with Readability active\"\n  }))), mdx(\"p\", null, `This is a really neat way to check which of your sentences might be a little on the complex sites and should be rewritten.`), mdx(\"h2\", {\n    \"id\": \"content-chaos-debug-tool\"\n  }, `Content chaos debug tool`), mdx(\"p\", null, `The Content chaos debug tool will randomly halve, double or triple the content of each text node on your page. This is a perfect way to test if your layout wont break when there is unexpected text content (such as much longer titles for things than were used in the design, or languages that take significant more or less space).`), mdx(\"p\", null, mdx(\"img\", _extends({\n    parentName: \"p\"\n  }, {\n    \"src\": \"/doc-img/overlays/contentchaos.png\",\n    \"alt\": \"Polypane screenshot of the docs page with Content Chaos active\"\n  }))), mdx(\"h2\", {\n    \"id\": \"rewritten-interaction-event-sync-engine\"\n  }, `Rewritten interaction event sync engine`), mdx(\"p\", null, `Polypane is the only browser that syncs `, mdx(\"strong\", {\n    parentName: \"p\"\n  }, `all`), ` your user interactions out of the box: scrolling, clicking, keyboard input, form events, typing and hovers. Making this feature performant is a difficult problem, since you need the same thing to happen at the same time across all panes.`), mdx(\"p\", null, `In 6.1 we have completely rewritten our syncing engine (bringing it up to the third engine we've built for this). We were able to take out an intermediate component that improves performance a lot and at the same time is able to more accurately sync interaction events across panes.`), mdx(\"p\", null, `In particular, you'll notice a higher frame rate for scrolling and animations on hover are much smoother across panes.`), mdx(\"h3\", {\n    \"id\": \"about-browsersync\"\n  }, `About Browsersync`), mdx(\"p\", null, `Starting in Polypane 6.1, we will automatically disable the built-in syncing when we detect Browsersync with `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `ghostMode`), ` turned on.`), mdx(\"p\", null, `Browsersync has always been slightly slower than Polypane's internal syncing, and what was essentially happening was that Browsersync was continuously resetting the scroll position after Polypane had updated it, leading to a very janky experience.`), mdx(\"p\", null, `Polypane has been showing a warning but unfortunately not many people are aware of the option to turn off `, mdx(\"code\", _extends({\n    parentName: \"p\"\n  }, {\n    \"className\": \"language-text\"\n  }), `ghostMode`), `, or even realise they have Browsersync running in their project in the first place. That's why we decided it was better to instead disable the scroll syncing in Polypane, even though it is more performant.`), mdx(\"img\", {\n    alt: \"Image overview outline panel\",\n    src: \"/blogs/polypane-6-1/imagepanel.png\",\n    className: \"imgshadow\",\n    style: {\n      margin: '2rem 0 2rem 1rem',\n      display: 'block',\n      width: 330,\n      maxWidth: '100%',\n      float: 'right'\n    }\n  }), mdx(\"h2\", {\n    \"id\": \"images-overview-in-outline-panel\"\n  }, `Images overview in outline panel`), mdx(\"p\", null, `The online panel now gives you a list of all the images on a page along with their current source, alt text, title, shown dimensions, aspect ratio and actual dimensions when they differ from the shown dimensions.`), mdx(\"p\", null, `When the alt text is missing we'll show a warning, and you can right-click any image to save it to disk.`), mdx(\"p\", null, `Like the node tooltip, we'll only show the actual size when it differs from the shown dimensions, and we only show the aspect ratio if it's not the same as the pixel value.`), mdx(\"h2\", {\n    \"id\": \"smaller-improvements\"\n  }, `Smaller improvements`), mdx(\"p\", null, `Polypane inlines stylesheets to enable access to them from the elements panel. We've made this optional which can be\nslightly faster, at the expense of not showing all the styles in the elements panel. Starting in 6.1 we also rewrite\ninlined stylesheet so that linked resources (like background images) work correctly.`), mdx(\"p\", null, `Polypane now includes the Angular DevTools in the selection of devtools extensions.`), mdx(\"p\", null, `We updated our color handling throughout the application making it much more performant. This is most noticable when editing a color\nin the Elements panel.`), mdx(\"p\", null, `It's now no longer possible to navigate to a Facebook, Twitter or Instagram URL in Polypane. We did this `, mdx(\"del\", {\n    parentName: \"p\"\n  }, `as a productivity measure`), `\nbecause these sites have server security settings that make Electron applications (of which Polypane is one) crash. We could\ndisable the security settings for these sites but we would rather wait for Electron to be fixed, so we're keeping a close eye on that.`), mdx(\"p\", null, `Logging in with Google was broken in Polypane 6 but it now works again.`), mdx(\"p\", null, `Read through the full changelog to see the other improvements made.`), mdx(\"h2\", {\n    \"id\": \"get-polypane-61\"\n  }, `Get Polypane 6.1`), mdx(\"p\", null, `Polypane will automatically update on Mac and Windows. Linux users need to download the new version from\n`, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/download/\"\n  }), `the download page`), ` and if you're on Mac and Windows but don't want to wait on the update popup, find\nyour download there as well.`), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, `Don't have Polypane yet? There is a free 14 day trial available. `, mdx(\"a\", _extends({\n    parentName: \"strong\"\n  }, {\n    \"href\": \"https://dashboard.polypane.app/register\"\n  }), `Get it here`), `.`)), mdx(\"h2\", {\n    \"id\": \"full-changelog\"\n  }, `Full Changelog`), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, `New features`)), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Readability debug tool`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Content chaos testing debug tool (Thanks Rik!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Interaction syncing engine rewritten to v3`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Images overview in outline panel`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Option to disable inlining stylesheets`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `New`), ` Angular DevTools now available in the devtools extensions installer`)), 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`), ` Pane load performance improvements`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Remove jank when animating hover styles`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Clicks are not synced when they create a new tab (when cmd or ctrl is pressed)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Support shorthand notation in combination with custom properties for hover syncing`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Prevent Polypane from opening urls that are known to cause crashes`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Inlined stylesheets no longer overwrite background images`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Increase opacity for unfocused scrollbar (Thanks Sam!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Form elements now use the Polypane accent color`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Improve performance of color picker in elements panel`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Upgrade Chromium version`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Better color consistency for dark mode`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Outline Link checking now ignores javascript, blob and data links`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Polypane shows a warning when a site wants Location API access but there is no Google API key (Thanks Eric!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Mode switcher shortcut is changed so cmd + m for minimize works (Thanks Charlie!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Improved`), ` Scroll syncing is now disabled when Browsersync with ghostMode is detected`)), 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`), ` Log in with Google works again`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Fix auto reloading not starting immediately`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` CSS injection in Live reload for Default mode (Thanks Winston!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Disabling hover sync also blocked showing the target url on hover`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Copy button for empty description was missing (Thanks Charlie!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Alignment issues in the Outline panel on Mac`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Editing text nodes in elements panel sometimes didn't work`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Prevent tooltip overlay misalignment on some sites`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Prevent duplicate inlining of stylesheets`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Polypane console can now print 'null' messages`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Escape HTML in attributes in overlay tooltip`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Missing rel=\"noopener\" warning was sometimes shown incorrectly`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Replace panes button for custom workspaces now replaces panes again (Thanks Sam!)`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Elements panel not always showing background image declarations`), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, `Fix`), ` Show correct version number in getting started page`)));\n}\n;\nMDXContent.isMDXComponent = true;","timeToRead":4,"tableOfContents":{"items":[{"url":"#readability-debug-tool","title":"Readability debug tool"},{"url":"#content-chaos-debug-tool","title":"Content chaos debug tool"},{"url":"#rewritten-interaction-event-sync-engine","title":"Rewritten interaction event sync engine","items":[{"url":"#about-browsersync","title":"About Browsersync"}]},{"url":"#images-overview-in-outline-panel","title":"Images overview in outline panel"},{"url":"#smaller-improvements","title":"Smaller improvements"},{"url":"#get-polypane-61","title":"Get Polypane 6.1"},{"url":"#full-changelog","title":"Full Changelog"}]},"excerpt":"Polypane 6.1 adds two new debug tools and a much more performant, completely rewritten interaction syncing engine along with numerous smaller improvements and…","frontmatter":{"title":"Polypane 6.1: Readability, Content Chaos and rewritten event sync engine","cover":"/img/mail/icon.svg","date":"2021-06-01","updated":null},"fields":{"slug":"/blog/polypane-6-1-readability-content-chaos-and-rewritten-event-sync-engine/","date":"2021-05-31T22:00:00.000Z","ogFileName":"polypane-6-1-readability-content-chaos-and-rewritten-event-sync-engine"}}},"pageContext":{"slug":"/blog/polypane-6-1-readability-content-chaos-and-rewritten-event-sync-engine/"}},"staticQueryHashes":["4164364741","425175329"]}