2020 was an incredibly busy and productive year for us characterized by innovation & integration, growth & service, and stability. Our team not only supported and served our customers but we also made significant leaps and strides into the future of our business and product. Our Hybrid Headless CMS grew its customer base substantially and our team integrated the platform with Microsoft for SSO. Additionally, we rearchitected and refactored Zesty.io's code base, redesigned the content manager, expanded our templating language Parsley, and much more.
From accomplishing smaller tasks like refreshing our email design to releasing larger items like the rebuilt Web IDE, we've collected the highlights by quarter below:
Q1: users can add instances to an ecosystem upon creation, major updates to underlying architecture to support future features, custom email sender for business class cloud customers and enterprise customers, Settings use new endpoints & user friendly interface refresh
Q2: refreshed auto-generated email design with more detailed instructions for new users, instance invites, and more, redesigned/re-architected Web IDE release, access tokens, Chrome extension release, Atom plugin Version 0.46.5 released & support for developer tokens, support for Akamai edge tags released, Web engine and accounts API now allow business class users to run multiple instances to a single domain by using subdirectories, global head tags released, instances allowed to have multiple domains on live/dev branches, use Parsley {{ include }} for custom endpoints, Node SDK can be used to upload media
Q3: Microsoft SSO, released Zesty.io new user flow, item relationships have jump links to allow for easier editing
Q4: Manager UI release, GroupBy Page Accelerator
A Year by the Stats
- 2 Major releases
- 19 New features
- 40 Bugs fixed
- 75 New and updated documentation articles
The List
A full list of our 2020 release notes can be found below.
If you're looking for a specific bug from our Manager UI or Accounts UI you can search our public Github repos:
GroupBy Page Accelerator
We're excited to announce that we've partnered with ecommerce giant Groupby to offer their customers instant page rendering speeds for any product in GroupBy’s eCommerce Search Suite. Read the press release for more information. (December)
Microsoft SSO Feature
Zesty.io has released our Microsoft SSO integration. This will support new Zesty.io account creation with Microsoft logins for their Azure Active Directory, Live.com and Xbox account products. In addition those with existing Zesty.io accounts whose emails map to an Active Directory organization will be able to login with the new integration and link their Zesty.io account with their Azure AD org.This new integration acts as another way to authenticate with Zesty.io(July)
Web Engine:
Announcement: In March 2020 we will be releasing new underlying architecture which will allow for new password protection options for the preview URL. (February)
- Announcement: Web IDE release - full announcement article here https://www.zesty.io/mindshare/product-announcements/zesty-io-web-ide/#post-release-notes (May)
New Feature: A new Instance Setting show_domain_in_title under the General category that appends domain to the meta title.(January)
New Feature: Overwrite automated head tags gives developers the option to overwrite the automated meta, title, and og:tags <head> tags with a Parsley snippet file. Read the documentation: https://zesty.org/services/web-engine/meta-tags/custom-head-overwrite(January)
New Feature: Custom email sender for business class cloud customers and enterprise customers. (February)
New Feature: Added support for cookies up to 16kb in total size, up from 8kb. With RFC minimum at 4kb, we are 4x the minimum. (February)
New Feature (business class users only): Web engine and accounts API now allow business class users to run multiple instances to a single domain by using subdirectories. (February)
New Feature: Web Engine now checks if an Instance has HTTPS settings for its production URLs, and uses those settings to set HTTP/HTTPS for its preview URL. (April)
New Feature: Support for Akamai edge tags. (April)
Improvement: Stage preview rendering times are quicker through optimizing some outputs and connections. (February)
Improvement & Redesign: Zesty.io's email templates for auto-generated emails have been updated with a refreshed design and more instructions and help for customers who are just starting out with Zesty.io. (June)
Improvement: unresolved placeholder media tokens (#@#MEDIA_PLACEHOLDER_3#@#) are no longer cached. (July)
Improvement: Active preview has been redesigned with a new UI for easier usability. (November)
Update: Our preview URLs have changed from
preview.zestyio.com
topreview.zesty.io
(April)Update: All non-HTTPS are being routed through new WebEngine. (May)
Update to webengine to account for curly braces in wysiwygs - won't try to parse them. (November)
Bug Fix: Settings Fonts now includes validation so only user specified font weights are installed. (February)
Bug Fix: On instance creation blueprint field settings (show-in-table, relational fields, and dropdown options) are now set according to plate.xml file. (February)
Bug Fix: Media section no longer duplicates asset files and folder structures. (February)
Bug Fix: Web Engine
live
production logic now behaves correctly when handling customers who route sub-directories to seperate Zesty.io instances. For example:examples.com/blog/
andexamples.com/store-locator/
domains can now be supported and routed as "stage", not just live. (April)Bug Fix: HTTP to HTTPS redirects will now behave consistently with or without WWW. (April)
Bug Fix: forms submitted on an instance's preview URL are now being captured by the Leads section. (June)
Bug Fix: Parsley bypass-error routing now routes users correcty with domain in tact (instead of routing to path-part only). (June)
Bug Fix: auto-generated head tags that consume the domain now show the domain, rather than undefined. (June)
Bug Fix: Parsley truepath is now works inline. (June)
Bug Fix: Custom API endpoint routing from zestyio.com to zesty.io. (August)
Manager UI
Announcement: March 2020 we will be releasing a new web IDE to replace our current IDE. (February)
Announcement: In the third week of March 2020 a new Manager App will be available in beta for customer review and feedback. (February)
New Feature: Global Headtags, to be released early April 2020: There will be a user interface for users to manage head tags of their html pages. This was traditionally done through our API or at a single-page level through the user interface. Users will be able to create 3 types of global head tags via the Settings section under the Head Tags subsection: meta, script, and link. Global head tags allow users to set global (site-wide) head tags for an instance. (March)
New Feature: Global head tags are now live! Currently supported head tags are
meta
,link
, andscript
. Users also now have complete control over the sort order of default and custom head tags through this interface which is accessed via the Settings section -> Head Tags category. Additionally, users will notice that they can now see and access head tags that were previously not shown and can be removed/updated based on user's preference. All user created tags at the Instance level will now include adata-scope=instance
attribute. This allows for easy understanding of where head tags are managed and applied. Along with this feature comes cleaner JavaScript access to these values on the front-end using the DOMdataset
. We'll be taking this concept ofdata-scope
and applying to both model (coming soon) and item level head tags. (April)New Feature: one to one and one to many relationships now allow users to link to the related entry. Click the pencil icon on the related item to jump to item and edit it. (August)
Improved Settings section. We've visually overhauled the Settings section which now uses API endpoints behind the scenes. This design overhaul uses the Zesty.io design system which streamlines design elements and usability across the platform.
Expect a different interface: the buttons are now toggles, a new color picker with more flexibility and choices, and a new interface for selecting fonts. Two new subsections have been added: Fonts and Account Settings. Learn how to access your Settings: https://zesty.org/services/web-engine/interface/settings. Learn more about the Instance Settings subsection: https://zesty.org/services/web-engine/interface/settings/instance-settings (January)Improvement: The code diffing now defaults to comparing the local changes with the live version (only if the file has been previously published). (June)
Improvement: Directories are no longer separate from the rest of the views. They are displayed along with top-level files in alphabetical order. Likewise top-level and directory child nodes are now shown in alphabetical order. (June)
Performance Improvement: The navigation bar state has been split from files to avoid the navigation bar rerendering on code changes which improves performance. (June)
Improvement: Add hover state for view unpublished files. The orange arrow turns white on hover.
(October)Improvement: Englarge tool tip icons for visibility and easier access. (November)
Improvement: Table view now scrolls more smoothly with a significant number of entries. (November)
Improvement: SEO section actions will no longer fail silently - errors will be shown. (November)
Update: Name Update to a Settings category. The LESS Variables category is now called Styles. This name update reflects the function of these variables as LESS and Sass/SCSS variables./, (January)
Updated feature: The new code app is close to release. It can be previewed from your manager by visting HASH.manage.zesty.io/#!/code/. (March)
Bug Fix: Since our release of the new Settings section in January we have iterated through the following user reported UX bugs: (February)
Styles colors are now set according to the the blueprint's colors.
Styles colors save showing the user's selection(s).
Settings section Styles save button is now available after a save event.
Settings section Font saving error corrected reflecting successful save events when fonts are added to an instance.
Settings section extra save button removed.
Bug fix: The analytics cloud function has been fixed and analytics are once again available through the content manager dashboard (as long as a user has set them up). (March)
Bug Fix: Installed Fonts now do not show on Styles settings because there was an issue generated from a previously fixed bug in which corrupted data could still be in the database or a custom font was loaded via head tags. We added a validation that ignores those values. (June)
Bug Fix: Installed Fonts page show an error when loading. Similar to the error above, we added a validation to avoid the app from breaking if the format the font was saved in was invalid. (June)
Bug Fix: Web IDE side bar navigation parent collapses as expected. (June)
Bug Fix: Reordering a head tag would previously trigger the reorder instantly and it would appear that it was disappearing. However, this was more of an improvement that was reported as a bug. We updated the way we work with the store so that the sorting doesn't get triggered visually the moment the store gets updated, so it will only re-order after the request gets done. (June)
Bug Fix: Internal/External link items' Parent and Links To dropdowns no longer show headless content model items and repetitive links have been removed. (August)
Bug Fix: Media fields that have been locked to a specific media folder can now be unlocked. (August)
Bug Fix: Allow commas in redirect URLs. (September)
Bug Fix: Windows OS exported CSVs are now recognized as valid file type for redirect uploads. (September)
Bug Fix: Redirects no longer show after they are removed. (November)
Bug Fix: show Content section publish button for appropriate roles. (November)
Bug Fix: Headless items nest as expected in the Content Section. (December)
Bug Fix: Scheduled-to-publish items now schedule expected. (December)
Accounts UI
Improvement: the login modal, which a user will see once their session has expired, now autofocuses the cursor in the email field and allows the user to navigate the modal through the keyboard for a mouse-free experience. (December)
Announcement: We've released a new user sign up flow which helps users refine their needs and get building. New users can sign up at https://start.zesty.io/ (July)
Announcement: The redesigned content manager link is now avalable in beta for a segment of our customers to test (github: https://github.com/zesty-io/
accounts-ui/pull/161 ) (November) New EcoSystem Feature: Instances can be added to an EcoSystem during the creation process. EcoSystems allow for asset sharing between instances through a bin in the Media section as well as some behind-the-scenes architectural permissions. (March)
New Feature: Instances can now have multiple domains added and managed from the accounts app (April)
New Feature: the Access tokens UI is now live. It allows users to create access tokens through the UI rather than through the API alone. (May)
Bug Fix: EcoSystem dropdown selection corrected to navigate to user selection. (April)
Bug Fix: when a new instance is created and "None" is selected from the EcoSystem dropdown instance creation no longer errs. (July)
Bug Fix: instance card globe icon live link no longer shows deleted domains. (July)
Bug Fix: Team invites that are cancelled will no longer show in the list of team members. (November)
Bug Fix: Favorited instances save and behave consistently. (November)
Architecture
Announcement: Many underlying architectual changes were released this month which users cannot see. These changes and updates were made to set the foundation for the upcoming Manager UI release which we will be previewing to power users in late April. (March)
Atom Plugin
Announcement: Version 0.46.5 has been released. A patch was made to the ATOM plugin to account for the Sectigo AddTrust root certificate expiration. More information about the certificate is located here: https://support.sectigo.com/articles/Knowledge/Sectigo-AddTrust-External-CA-Root-Expiring-May-30-2020 (May)
New Feature: The Atom Plugin now offers developer token support. The Zesty.io package for the Atom editor was updated to support developer tokens outside the zesty.json file. To set and save a developer token in the Zestyio Atom editor navigate to the main menu -> Preferences -> Packages -> Zestyio-atom -> Settings. Don't forget to update your package - the current package version is 0.46.2. (April)
New Feature: Improved invalid session checking to trigger a login. (April)
Parsley:
New Feature: Parsley's
{{ include }}
call can now be used to include custom endpoints in your Views. To include a custom endpoint declare{{ include }}
and then follow it by the name of your endpoint; for example{{ include /my/file.html }}
. (April)New updates listed below are available in preview, but not in production (published, live URLs). If you'd like early access to these function on your production URL, please reach out to support at support@zesty.io (July)
- New feature: Parsley now allows for wildcard routing. Learn more about wildcard routing with this article. (July)
New function: response.path() gets the full path of a URL. (July)
New function: request.pathPart(num) allows users to access specific paths in a URL. (July)
New function: request.queryParam(num) allows users to access a URLs query parameters. (July)
Improvement: truepath() can now be used in each loops and with Parsley variables. (July)
New Calls: Instance calls (formerly:
{{ site }}
calls) host_preview, host_live, host_env, host_relative, host_protocol. (June)New Calls: Each loops have a new attribute for grouping items with the keyword
group
. Learn how to use it with our Each Loop documentation. (June)Update: All
{{ site }}
calls are now{{ instance }}
calls. Read the documentation to learn more. https://zesty.org/services/web-engine/introduction-to-parsley/parsley-instance-functions (June)Bug Fix: Parsley's {{ navigation }} functions no longer show unpublished items. (July)
Bug Fix: Parsley's {{ navigation }} function accounts for unique internal/external link item types. (July)
Bug Fix: .getImageTitle() has been corrected to pull in the Media section asset Title and update when the Title field is updated. (May)
Instances API:
New Feature: Stylesheet variable endpoints allow users to use instances-API to update stylesheet variable endpoints. Read the REST API documentation: https://instances-api.zesty.org/?version=latest#036c41d0-1c20-42fa-a935-3c3e49444cd4 (January)
Bug Fix: Stylesheet transpiling was corrected so that empty files are validated and no longer throw errors. (January)
Bug Fix: View publishing version sequence corrected for view publish endpoint. (January)
AUTH API
New Feature: Developer Tokens. The Developer Token is used in place of a Session Token when making API requests. Learn more about this feature by reading our documentation: https://zesty.org/apis/auth-api#developer-tokens. Read the Auth API documentation https://accounts-api.zesty.org/?version=latest#2d602695-3f14-44c2-b97a-212c402250f6. (January)
Update: The auth API URL changed from svc.zesty.io/auth to auth.api.zesty.io. Developers running scripts that leverage Ruby or Node Zesty API wrappers/SDKs need to update their packages by June 1, 2020. (March)
API Functionality
Bug fix: There was a TLS connection issue related to the Sectigo expiration on our end with this external functionality https://us-central1-zesty-prod.cloudfunctions.net/publishAllModelContent . The TLS issue has been resolved. (June)
Node API Wrapper
The Node API wrapper has been deprecated in favor of the Node SDK. The Node SDK documentation is located on GitHub: https://github.com/zesty-io/node-sdk/wiki. We will continue to support the API wrapper until June 2021.
(March)
Node SDK
New Feature: media can be uploaded with the Node SDK. [ask Stu for details...] We now have a code example of uploading media to an instance using the
node-sdk
. Master code example: https://github.com/zesty-io/node-sdk/tree/master/examples/upload doc: https://zesty.org/tools/node-sdk (April)
Chrome Extension
- New Feature: Learn about how our Chrome Extension can support your development on Zesty.io https://zesty.org/tools/chrome-extension Install the extension from the Chrome Web Store. https://chrome.google.com/webstore/detail/zestyio-webengine-view-ex/mnkmogppmhhmafgfljgckpkapodofjob (May)
Sneak Preview
Redefine how you work in Zesty.io's web IDE with the new Code Editor. Target release date May 11, 2020. (April)
Get a glimpse of our new Manager UI. Target release date June 2020. (April)
We've been working diligently on redesigning the Manager UI experience. Check out the sneak preview below. (August)
Global search is located at the top of the Manager and allows for a quick and easy way to find the content you're looking for.
Whenever you open an item a tab will stay open at the top of the Manager making it easy to jump back and forth between items. If you no longer need a tab, simply close it out.
Audit Trail shows more records and will be searchable thus making it easy to find models and understand who has edited what.
Check out our redesigned Manager UI to be released later this year. Once the new UI is released there will be a period of overlap while the current UI is sunsetted. We're currently making only hot fixes to the current UI while focusing on making the most robust experience for the new UI. (September)
Content
Settings
Audit Trail
We're busy making updates and improvements to the redesigned UI including (September):
Content CSV batch import to support large CSVs
Global Help Menu shows contextual help based on what sub-app the user is on and shows some zesty.org articles for each app to show there
Audit Trail filter by date and search
New and Updated Documentation
Building Schema and Adding Fields (January)
Content Entry and Publishing Basics (January)
Accessing your Settings (January)
Instance settings overview (January)
Custom Head Overwrite (January)
Developer Tokens Feature Description (January)
Auth API Developer Tokens (January)
Settings Section: Styles (February)
Settings Section: Fonts (February)
Account Settings Overview (March)
Instance Settings Overview (March)
The connection between Schema, Content, and Code (Editor) (March)
Editor and Coding Basics (March)
Glossary entry: Snippet (March)
Adding instances to EcoSystems (March)
Include : Use Parsley's include call to include custom endpoints (April)
Updated Node SDK Docs https://zesty.org/tools/node-sdk (April)
Updated ReadMe Setup Docs on GitHub https://github.com/zesty-io/zestyio-atom
APR - API Overview (April)
Accounts Interface Overview (April)
Blueprints Overview (April)
Teams Overview (April)
User Account Settings (April)
Launching your instance (April)
Parsley If-conditionals (April)
How to create a lead form (April)
Verifying Google Analytics Setup (April)
Glossary: Instance Settings Drawer (April)
String Modifiers: Substring (April)
- Bottom Loading JavaScript (May)
Roles and Permissions (May)
Image Modifiers (May)
Adding Image Alt Text (May)
Instance Settings Drawer (May)
Instance calls (formerly site calls) https://zesty.org/services/web-engine/introduction-to-parsley/parsley-instance-functions (June)
Style Sheets: single line comments might break compilation (June)
Reordering child items in a Parsley auto-generated navigation bar (June)
Parsley: response.path() (available in preview) (July)
Parsley: response.pathPart(num) (available in preview) (July)
Parsley: request.queryParam(num)(available in preview) (July)
- Parsley: truepath() (July)
Hybrid CDN Setup (for hybrid customers only) (July)
How to use Snippets (July)
- Web IDE (July)
Wildcard Routing (available in preview) (July)
Instance Security Settings (August)
Learn about the Leads Section (August)
Learn about Redirects (August)
Users can access redirects, robots.txt, and site crawler in the Health section (August)
Setting Request Headers for CORS (September)
Accepting an invite to a team (September)
Parsley's .trim_zeros() (September)
Parsley's .seo_link_title (September)
Parsley's seo_meta_title (September)
Accessing an item's meta information (September)
User Roles and Permissions (September)
Parsley: case sensitive (October)
Redirects (October)
Launching an Instance (October)
Parsley: navigation call (October)
https://zesty.org/services/manager-ui/editor/custom-file-types-endpoints use production endpoints or relative links for endpoints becasuse preview links are not cached. (November)
Images Added: https://zesty.org/services/manager-ui/media (November)
Swapping out domains: https://zesty.org/guides/how-to-launch-an-instance#swapping-out-domains (December)
Getting Started in MultiLang (December)
By Randy Apuzzo
Randy has had a penchant for computer programming from an early age and started applying his skills to build business software in 2004. Randy's stack of skills range from programming, system architecture, business know-how, to typographic design; which lends to a truly customer-centric and business effective software design. He leads the Zesty.io team as CEO.