Publii 0.39 update released: Plugins, UI translations and more
It's been a long time coming, but after many months of work, the latest Publii release, version 0.39, is finally ready for release. Including a number of improvements, the most important of which is implementation of Plugin support along with several initial plugins, providing a simple way to expand your site's features.
But that's not all; UI translations, improvements in areas of app accessibility (e.g. increasing the contrast of text and UI, more icons illustrating the button actions, etc. ), improvements to themes, menus, and Publii's text editors, as well as new variables and helpers for developers; this is an update that will allow us to continue to expand Publii's functionality and make it a diverse tool for many types of websites.
The biggest feature updates are user-focused, and here we'll cover all the important details so you can know how to get the most from your Publii site:
Plugin Support
The main feature in this release is the addition of Plugins, which makes it easy to add new, optional functions to your Publii site. In this initial release, we've created a set of simple, free plugins that cover some basic options that we feel users may want to be able to implement on their sites.
For example, comments, including popular comments solutions such as Facebook and Disqus comments, as well as other solutions such as GraphComment or the open-source and completely free Cusdis comments. Analytics are also represented, with plugins for both Google Analytics and Plausible Analytics integration. However, we have several plugins in development and plan to publish new plugins regularly; occasionally even several within a month, so be sure to check back often to see what new plugins are available for download.
This is only the first stage of plugin support; in the coming months we'll be polishing and perfecting the Plugin API and adding new functionality. For this reason, though developers may want to start playing around with testing creating their own plugins for their own sites, we recommend not investing significant resources into development until the API is finalized to ensure that there are no issues with your developed plugins and the final plugin API release.
How easy is it to get a plugin? It's as easy as downloading a theme! Via the Publii app, users can open the Plugin Marketplace and quickly download any plugin they want, then install it via the Publii interface, just like installing a theme. It will then appear in the Tools section of the app, which has been aptly renamed to Tools & Plugins.
Publii UI Translations
A long-awaited feature in Publii is allowing translation of the UI; with so many languages spoken around the world, our users have frequently asked if they could translate the Publii UI to make it easier for their fellows to use the app. With this release, users will be able to download and use multiple translations, switching between them as needed.
In order to use the language options they must first be enabled in the Experimental Features section of the App Settings menu, which can be found by clicking on the three-dot menu at the top-right of the app window, then clicking on 'App Settings'. Once enabled, a new Languages option will appear in the three-dot menu where you can download, install and enable alternative translations.
Unfortunately, we are not linguists, and thus we can only provide an English and Polish translation for the app. However, we're asking you, the Publii users, for help in providing app translations. If you are able to translate the language files to your native language, please do so and we'll add them to the available languages on the dedicated Github repo. Thank you so much for your support!
Multiple Improvements to the Publii Editors
Though there may be many options available in Publii, the main thing you'll be doing when building a website is writing, and so we've added a number of improvements to the various editors offered by Publii to make them easier and more intuitive to use.
First things first; the UI of the all the editors has been simplified to make it cleaner and fit more closely to Publii's aesthetic.
The WYSIWYG (Tiny) editor has been updated to version 5.10.3. We've added a feature to this editor so that double-clicking on an image when editing a post will open the Image Options pop-up, so you can easily adjust your image settings.
An option has also been added to Beautify Code when viewing the source code of your post in the WYSIWYG editor, which doesn't exactly make it beautiful, but does change the layout to make the code easier to read. This option can be enabled via an option in the editor itself, or your can make it automatic via the Experimental Features section of the App Settings, which can be access by clicking on the three-dot menu at the top-right of the app window.
The Markdown editor has been switched to a new engine; in previous versions of Publii the Markdown editor was provided via SimpleMDE, but now it uses EasyMDE. In the Block editor, when creating an image/gallery block the editor now automatically opens the block in edit mode after uploading images, rather than requiring additional clicks to modify the gallery layout.
More generally, we've updated the save options in edit mode so that it's more clear when the post your are editing is a draft; no need to double-check!
We've also added options where you can specify the font-family and font-size for the editor body, for more fine-control over your post aesthetics.
The Post Publication Date option has also been updated with a new picker that's more clear and intuitive than before.
Finally, the gallery options in all Publii's editors now support WebP, GIF and TFF formats too.
Making Menus More Manageable
Menus have got a little bit of love in this update too, making it a bit simpler to manage larger menus and get them in order. The drag & drop system has been improved, making it clearer to see where your menu items are going whenever you drop them.
New Move option has been added that gives greater control when specific actions are required; instead of battling the drag & drop system, you can instead just click on the Move option in the menu item, which displays a new set of options to all the other menu items; Before, After, and As Submenu. By clicking on the relevant button, you can move the selected menu to (wait for it...), before, after or as a submenu of another menu item. Its quick and convenient, and helpful if you've got a lot of menu items that makes dragging and dropping a bit unwieldy.
There's one more additional option worth mentioning too; a Duplicate option, which allows you to instantly duplicate the selected menu item; useful if you're building a big site with a lot of similar links.
Improving Themes with Locally-Loaded Fonts
Themes are what really make your website stand out, so its important that we continue to introduce new theme features to really make them shine. In this release, the standout feature for themes, other than the addition of comments support via plugins, is the new DynamicAssets feature added for developers which completely changes the way Publii deals with fonts. So what does that mean for our users?
Earlier versions of Publii utilized preselected Google Fonts, which offered some cool options, but weren't always the fastest-loading solution. Also, since resource-caching across sites and domains is no longer functional, we can’t rely on users already having the chosen fonts in their browser cache; the font-files will always need to be downloaded when visiting your site for the first time, bulking up the load time.
Now, with this new feature, Publii includes a set of over 40 variable fonts for our users to choose from, and only the specified fonts will be deployed to the server. This means that our fonts solution is now 100% GDPR-compliant since the fonts are loaded directly from your server rather than a third-party CDN, and has massive benefits to page-speed results (close to 100/100).
If you want the full lowdown on this new feature, you can check out our article on Publii fonts here: https://getpublii.com/docs/fonts.html
There's a few other cool things that come with this change too. Two fonts can be chosen, and these fonts can then be assigned to the headings, body content, logo and menu individually. Alternatively, you can also assign a third option called system-ui, which uses the base font assigned to the user's browser.
Another benefit of variable fonts is that it only needs to load a single font file for each font, rather than separate files for the normal and bold versions of the font. And since they're variable, you can use any font-weight (thickness) throughout the full range i.e. instead of only a normal weight such as 400 for the regular version, and a larger weight such as 600 for the bold version, you can set any font-weight in-between, such as, I don't know...let's say 478. This gives our users very specific control over exactly how their site content will look and feel on the page.
We've also made some improvements to the individual themes that are available for Publii; you can read a full changelog for each theme on its respective page in the marketplace, but for now we'd like to mention that the Simple theme now has a dark mode!
Other Changes for Users
There's a few other additions in this Publii release worth mentioning:
The 'dweb' protocol (that's 'dweb' not 'dweeb', if you happen to be a product of the 80s), refers to the 'Distributed Web', is the protocol used by the 'Distributed Web', which decentralizes the web and distributes it through a peer-to-peer network. With this support added, you can now select 'dweb' as the protocol for your website's address, if desired.
When changing the sites location via the Files Location option, there an added toggle to change the 'sites' storage location without copying the existing sites files to the new location; useful if you want to start afresh without losing your original site files.
The Publii file manager now supports both AVIF, webP, TIFF image formats.
Finally, a new position has been added for your Custom HTML; @commentsCustomCode, which allows users to add custom HTML code to the area where comments are displayed, whether using your own solution or one of the existing solutions provided by Publii's plugins.
The version 0.39 release also includes a number of improvements specifically for developers:
Advanced Preview
An option has been added to the App Settings → Options for Developers section of Publii, Enable Advanced Preview. When enabled, clicking the Preview Your Changes button will render the site files, but won't open your browser to display the preview.
New Variables, Helpers and Options
This update includes a host of new variables, helpers etc...that will help developers get even more from their Publii-based sites:
- New global variables added: @website.rootUrl, @website.mediaFileUrl, @website.tagsUrl, and @website.baseUrl.
- New helpers added: getAuthor and getAuthors.
- New helper 'asset' added, which returns asset paths.
- The Publii cookie banner now emits custom events for document.body, which allows plugins to react to user consent actions.
- Added a new option for themes, files.useDynamicAssets, and support for the new dynamic-assets-mapping.js file, which allows theme developers to avoid deploying files bundled with a theme.
Other Improvements
As always, there's more than just a bunch of new features; we've also made minor improvements in several areas to make Publii smoother and more user-friendly than ever. Below, you can find a full list of these additions:
- Changed manual deploy behavior; files are now saved in a separate directory (e.g. [SITENAME]-files) instead of clearing the destination URL.
- Improved missing sites directory detection.
- Improved the indicators for the backup creation and site duplication processes, to make them clearer to understand.
- Improved empty post title detection.
- Allowed use of postConfig and themeConfig with the visual-overrides.js and theme.variables.js files.
- Allowed the date helper to return raw text.
- Thumbnail regeneration can now be cancelled via the site settings.
- Better handling of CSS classes in galleries.
- Improved tooltip behavior in the block editor when creating a new block.
- Improved handling of the rows/cols parameters for the textarea field that are set in the options.
- Merged the block editor into the Publii core.
- Upgraded multiple dependencies.
- Updated Electron to 17.*
- General code improvements.
Bugfixes
Bugs. Can't live with them, can't live with them. So we've made an effort to squash various bugs that our users have reported. Full list below:
- Fixed issue with changing sites location.
- Fixed issue with embedding images in the Markdown editor.
- Fixed issues with in the block editor.
- Fixed issue when using multiple Netlify accounts.
- Fixed issue when using the Table of Contents generator in the block editor.
- Fixed unhandled promises issue when using SFTP.
- Fixed issue with tag list behavior in tag listings.
- Fixed issue with CSS compression that caused some CSS selectors to break.
- Fixed issue with the scrollbar in the Markdown editor.
- Fixed inconsistencies in the 'Read More' feature.
- Fixed an issue occurring with SSL certificate support.
- Fixed issue with missing author data in JSON-LD.
- Fixed issue with checkboxes in the menu manager when bulk deleting items.
- Fixed issue with missing dot files when deploying manually.
It's been a long road to this update, but we hope that the fruits of our labors will suffice! We'd like to thank our community for your patience and support ; with your guidance, we're able to improve Publii and make it a truly user-friendly, stable, and versatile app. We look forward to delivering more great updates in the future; make sure to keep an eye out as we'll be releasing several plugins throughout the coming year and finalizing the plugin API to get it just right.
In the meantime, if you'd like to follow development you can check out Publii's GitHub Page. And if you've got any questions, need a hand with the app, or want to report a bug or suggest a feature you'd like to see in the future, drop by the Publii Forums and let us know.