Changelog

  • Export and Import App Moved to Tools Tab

    Changes in: app Permalink

    The functionality of the import and export apps has been moved from the “Config” tab to the “Tools” tab.

    Export import tool

  • Field Type Translation Import Improvements

    Changes in: mapi Permalink

    In the past using the import and export app didn’t work quite well for users using the field type translation feature.

    With this update we improved the export and import functionality of field type translations.

    Improvements

    • When exporting from the target language (not default language) only fields that are defined as “Translatable” are exported.
    • The translation keys are the same in every target language (i18n codes have been removed).
    • The exported file contains all content from the default language.
    • When importing the translated file back the fields of the target language will be filled out.

    The recommended workflow is like following:

    1. Beginn by filling in content in the default language.
    2. Select the language you want to translate from the menu bar.
    3. Go to the config tab of the content item and click export.
    4. Use the exported file in the translation tool of your choice to translate the default language to your target language.
    5. Import the translated language using the import button with the target language selected from the menu bar.
  • Published & Unpublished Webhook moved to free plan

    Changes in: app api Permalink

    As you might already have noticed we’re sponsor at the first ever Zeit Hackathon and to enable you to build amazing integrations and connectors we’ve moved the server side webhooks of Storyblok that can be used to trigger builds, cache clearing and anything else that you want on publish and unpublish events into the free plan. Not only for a limited amount of time, but forever for all your spaces!

    Zeit & Storyblok

  • Default language translation label

    Changes in: app Permalink

    We’ve added another feature that has been requested by many of you that use our field level translations. It is now possible to enter a custom label for the “Default” language in your space settings.

    default language label

  • Language permissions

    Changes in: app mapi Permalink

    It’s now possible to add permissions for specific languages using roles. This let’s you for example control the access of a translator which will only be able to edit specific languages.

    Translation

  • Fixes Norwegian language parsing

    Changes in: api Permalink

    Fixes an issue that caused customers to receive a 404 or no results in collections on /no/ routes if the field level translation was used to define multiple languages.

  • Backwards text fix

    Changes in: app Permalink

    Some of you have noticed that sometimes the mouse cursor got stuck in the iframe causing your text field inputs being backwards.

    If you would have typed hello the outcome would be olleh, which was connected to that issue. Sometimes, Chrome kept the focus of your cursor inside the iframe resulting in your cursor being fixed on the left side. We’ve now introduced a fix for that, which removes that bug for Storyblok.

    sreecH, klobyrotS

  • Form Only Improvements, Quick Switch, Schema Definition Updates

    Changes in: app Permalink

    With our latest release, we’ve launched some new features and improved form only experience of Storyblok.

    Form Only with expandable components

    The form only just got so much better with our expandable components, allowing you to not only navigate through your components but also to quickly expand some of them without navigating into them.

    Expandable components

    Config, Status and Tools

    We’ve moved the top navigation to a tab navigation in the sidebar to introduce two new sections. Status which will be improved over the next couple of months into a Workflow feature. and Tools which will allow you to build a new type of apps to trigger tasks and/or the best place to integrate translation systems.

    New tabs

    Mobile Preview now in Preview URL bar

    preview

    Creating new Components

    Create new components in the new sidebar right in your compose mode or in the components menu.

    Creating new component

    Defining new Fields

    After sending out surveys to randomly picked customers we’ve now switched the order of new keys being added to your components, no need to reorder them all over again and again, they are not added at the bottom of your fields.

    New fields

  • Lookahead and collaborator invite

    Changes in: app Permalink

    We’ve removed the invite new users to your space feature for an undefined amount of time.

    To invite new users to your space, you will have them create their account on our signup form first. You can also register the account for them by defining their password. They will be able to change the password once their are logged in at their profile page.

    1. Sign up their account in our Sign-up Page. (You need to be logged out to reach that site, otherwise you will be redirected)
    2. Add them as collaborator
    3. Have them change their password
  • New Feature: Component Groups

    Changes in: mapi app Permalink

    With component groups you will be able to add a virtual structure to your list of components. This will make the organization within components easier.

    component-groups

    Besides the better organization of components adding a specific group as allowlist to the blocks field type, so one would not need to update block fields if a new component is introduced and a group is used for restrictions.

    Component group restrictions

  • Plugin subdomain for custom fields

    Changes in: app Permalink

    Plugins have received their custom subdomain for Storyblok so they no longer can access the app.storyblok.com context from within the field type. This was necessary to not allow field types to access localstorage and other app.storyblok.com information that are not intended to be shared with the plugins.

    Please update your configurations to allow plugins.storyblok.com rather than app.storyblok.com since all API calls will be done by that domain starting with 30.04.2019.

  • Improved multi browser tab title naming

    Changes in: app Permalink

    Feature Request: “Add space name into browser tab title. If you have opened multiple different spaces is hard to differ between the tabs. :) Thx! This small change would help a lot ;)”

    We’ve added the space name, plugin names, route names, and other useful information for all of you that love to life in multiple browser tabs.

  • Default asset folder for file field type

    Changes in: app Permalink

    You can now choose “Default Asset Folder” for the field type file which was previously only available for the type image.

  • Language codes added to space/me

    Changes in: api Permalink

    If you already use field level translations you know that you can configure the available languages in the settings tab. Now, you can also get it from Storyblok’s API in the call /v1/cdn/spaces/me.

    {
      "space": {
         ...
        "language_codes": [ "en", "de", "es" ]
      }
    }
    
  • App Store

    Changes in: app website Permalink

    The new Storyblok App Store has been launched!

    With the new app system developers can contribute with their own apps to extend Storyblok’s functionality.

    Storyblok App Store

  • Last author and is_published

    Changes in: mapi Permalink

    Introduced two new filter for the Management API:

    • v1/stories:
      • is_published (bool)
        • false to receive only entries that were never published (or were unpublished)
        • true for those that were published at least once
      • last_author is now available in the list call too.
  • Release Merged Webhook

    Changes in: app mapi Permalink

    A webhook for releases has been added and can be set in the space settings. Whenever a release gets merged into the content repository it will trigger a post request with following payload:

    {
      "text": "The release summer has been merged.",
      "release_id": 313,
      "space_id": 44953
    }
    

    With the release_id you can get a list of stories that have been in that release by making a call to the management api with the parameter from_release: https://www.storyblok.com/docs/api/management#core-resources/stories/retrieve-multiple-stories

  • Url resolving added to Content Delivery API

    Changes in: api Permalink

    The content delivery api has now the possibility for link resolving of items like global navigation items. With the parameter resolve_links and the values story and url the developer can now choose between resolving a link as “story” or as a smaller “url” object.

    Request without resolve_links=url

    {
      "story": {
        "content": {
          "link": {
            "id": "f5c956e6-66a9-4f0b-a530-2ae88b9689a6",
            "url": "", // entered URL if external link
            "linktype": "story",
            "fieldtype": "multilink",
            "cached_url": "my-folder/my-cached-url" // a cached URL based on time of publication
          }
        }
      }
    }
    

    Request with resolve_links=url

    {
      "story": {
        "content": {
          "link": {
            "id": "f5c956e6-66a9-4f0b-a530-2ae88b9689a6",
            "url": "", // entered URL if external link
            "linktype": "story",
            "fieldtype": "multilink",
            "cached_url": "my-folder/my-cached-url", // a cached URL based on time of publication
            "story": { // NEW story object inside the link field of yours
              "name": "My Linked Entry",
              "id": 669642,
              "uuid": "f5c956e6-66a9-4f0b-a530-2ae88b9689a6",
              "slug": "my-updated-url",
              "full_slug": "my-folder/my-updated-url", 
              "url": "my-folder/my-updated-url" // <-- URL that can be used for links and will stay up2date
            }
          }
        }
      }
    }
    
  • Real path added to Content Delivery API

    Changes in: api Permalink

    Many of you asked about having the Real Path added in the Story object so you can use that to generate your routes. Be aware that this path currently can’t be filter as its purpose is to change the path in Storyblok itself. However, for those of you who want to use that property outside the management API can now do that!

    {
      "story": {
        "name": 
        ...,
        "path":"your_real_path_value"
      }
    }
    
  • Datasource CDN Endpoint

    Changes in: api Permalink

    With the datasource CDN endpoint you are able to consume a list of datasources so that you can access their values by using the datasource_entries API endpoint by using the datasource slug.

    Read more at the Api Documentation

  • Delete and Unpublish Permissions

    Changes in: api app mapi Permalink

    The advanced roles have been extended with following rules:

    • Allow unpublishing content
    • Allow deleting content
  • Deeper relationship resolving

    Changes in: api Permalink

    We’ve introduced a new syntax for relationship resolving with the resolve_relations parameter.

    You can now pass the format COMPONENT_NAME.FIELD_NAME to resolve even nested components, allowing you to create a nested structure with single or multiple choices in repeatable components to be resolved. Before that only the root level fields of your content type where possible to be resolved. The old syntax will continue to work, for future implementation we recommend using the new one.

  • Improved Filter Query

    Changes in: api Permalink

    The parameter filter_query of the delivery api has been improved to check for empty values.

    Nested queries are now possible for all filter query types. To access nested attributes you need to use a point as path separator. Examples: seo.description, body.0.teaser_header

    Changes in operators

    1. gt-int, gt-int: When doing a greater than or less than query it no longer triggers an error when there are non numeric values in the content entries.
    2. in: When providing an empty string then the api returns all fields that have empty strings or null values.
  • Field level translations

    Changes in: app api mapi Permalink

    In the past the only way of creating multi-language content was through a multi tree folder structure. As this still is a good practise for a lot of our customers we also got a lot of feedback from customers that have a different requirement.

    That’s why we now offer an additional way to manage multiple languages in Storyblok.

    Field level translations

    Introducing “Field Level Translations”

    With “Field Level Translations” you can now store multi-language content on the field level. This means you only need one content tree. A single tree stores each translation as a property under the same content item.

    As long as your site content is very similar from one language to another, this is the best option. You will have fewer pages to manage and the system takes care of serving the correct language automatically.

    Highlights about this new feature:

    • Manage all your content under a single content tree
    • Decide for each individual field if you want to activate translation
    • Easily copy the default language value to the translation
    • Quick-Jump to Google Translate

    Read more at our documentation about internationalization.

  • First published at field

    Changes in: api app mapi Permalink

    The new field “first_published_at” for getting information about the date when an item has been published the first time has been added.

    First published date