• Use Pusher for real-time project wide publishing notifications. Now all users will be notified of publication activity. Notifications initiated from the web client (soon also the CLI) will include the avatar and name of the project memeber who initiated a publish event. In addition, the publish buttons in the project menu and on the static sites page disable for all users during a publish event and have an animation to make the publish activity clearer. These updates give all project members more insight the publishing lifecycle.
    • Asset content types can be modified
    • s3Key is deprecated and replaced by path. s3Key will continue to work for the foreseeable future.
    • Added a version meta tag to the web client so you can now see what version of TakeShape you're running
    • Naked single content-type queries are deprecated
    • Projects now have a timezone option in the project settings page. Wherever times are shown in TS they are accompanied by a note showing the timezone. Datetime widgets now respect the project timezone.
    • Added a date only widget
    • Datetime widget has a streamlined UX
    • Added single line block canvas as a new field type
    • Making changes live on a static site is now referred to as publishing instead of deploying. (Templates are deployed, content is published)
    • Updated static site publish notification to include the site name
    • Various minor visual changes and improvments
    • "add" buttons on repeater widgets changed to "+" buttons
    • path and template properties in routes are now optional
    • ${var} is now supported in tsg.yml ex. path: /sitemaps/sitemap-${num}.xml
    • More detailed nunjucks error reporting for tsg cli
    • Add assets filter to handle assets that aren't image assets.

    Use {{ asset.s3Key | asset }}

    • Automatically hide the asset sidebar when navigating away from a content entry where the asset sidebar is open
    • Fields inside the Object field can now be marked as required
    • Billing system now supports coupon codes
    • Plan selector now shows plan entitlements
    • (Not burying the lead) TakeShape is soft launched!!!!! Removed required invite code from signup form.
    • In the content entry list views visually show if an entry is enabled or disabled
    • Allow static site configurations to be updated without reentering the secret key
    • Tons and tons and tons of work around logging. We're now using Timber.io for our logging system. It's super awesome and we highly recommend it.
    • Ensure project avatar images are vertically centered
    • Enable entitlement tracking for API quota, API rate limit, member limits, static sites
    • Add visual billing delinquency notices and permissions restrictions for delinquent projects.
    • Enable ActionNetwork oembed in the block canvas

    Irons in the fire

    • Support for user entered coupon codes
    • Scheduled publishing
    • Replacing draftjs with slatejs
    • Repeater Field - allow drag to select text inside of a repeater field
    • Clear search input in relationship field after entry selection
    • For a relationship configured as a multi relationship keep the dropdown selector open during keyboard selection.
    • For a relationship configured as a single relationship close the dropdown selector after keyboard selection
    • Display billing history on billing screen
    • Add "Add an API key" and "Add a project image" to setup steps
    • Fix query error when trying to sort by a datetime field
    • Add loader animations to Signup, login and create project buttons
    • Update GraphiQL to latest version and improve style
    • Prettier automatic query generated from "View in API Explorer" button
    • Add project settings page. Project title and avatar can now be edited. Project deletion has been moved from the project list to the project settings page. Very handy!
    • Add API keys settings page. It is now possible to provision and manage API keys for a project. Huge!
    • Update CLI to optionally watch for content changes and trigger a build. This feature is activated with a command line flag tsg build -W. All users will need to update their projects to the latest version of takeshape-cli. We've already found this feature to be extremely helpful.
    • Add link and open in external window fields to image blocks in the block canvas.
    • Fixed markdown formatting of field instructions
    • Improved error handling for credit card payments
    • Better error messages in the CLI tool
    • Fix "Save and Duplicate"
    • Add First Time Experience Dialog Slide Tour
    • Add First Time Experience Setup steps. To view your projects setup steps click on the floating "Help" menu in the - bottom right of the TakeShape web app
  • New

    • Inline content creation in relationship fields
    • Links to related items
    • Improved content preview with thumbnails for related items
    • Shape Books Project now has a "Demo" tag in the project list to improve discoverability
    • Empty state illustrations and instructions
    • Improved Dashboard design
    • Tweaked API websocket authentication timeouts

    Fixes

    • Fixed issue with query normalization which caused double fetching or missing content in the admin UI.
  • Happy New Year! The theme of this release is collaboration. We're setting the groundwork for exciting things to come in 2018 that make working together easier. We feel very strongly that creating great content is a team activity. To that end we are releasing two new features focused on collaboration that greatly improve the editorial experience.

    New

    • Visual collaborator indicator. When multiple users are logged into a project a visual indicator appears under the project name in the top left to show everyone who else is currently working with them. This basic feature belies a bunch of work under the hood that went into making this possible. Right now this
    • Content entry locking. When a user goes to a content entry that entry will be locked from editing by other users. Viewers will be able to see who has a content entry locked. Admis are able to break locks just in case.

    The secret sauce behind both of these features is the realtime heat beat provided by Pusher https://pusher.com/. This realtime communication happening between users is going to enable us to incorporate even more realtime features in the future. We have a bunch of neat ideas for collaboration and will share more details as they firm up.

    2018 is off to great start!

  • New

    • Pluralize nunjucks filter
    {{ 'post' | pluralize(num) }}
    

    This example will print "posts" if num is greater than 1 and "post" otherwise. The pluralize has support for english language pluralization and handles irregular rules such as ox -> oxen.

    Enhancements

    • Image description and title fields now appear in image blocks as alt and title attributes
    <figure class="{{alignment}} {{size}}">
        <img title="{{title}}" alt="{{description}}" src="{{url}}">
        <figcaption>
            <span class="caption">{{captionHtml}}</span>
            <span class="credit">{{creditHtml}}</span>
        </figcaption>
    </figure>
    

    Fixes

    • Only run the html compressor on .html files instead of running on any html or xml file.
  • New

    • Add Full Name to user profiles (We've gone ahead an back-filled this info for existing customers). You'll now see your name in the bottom left next to your avatar. New users will be able to sign up with there name. Everyone is now on a first name basis and the world is a better place

    Enhancements

    • Links in block canvas editor and inline block canvas now have a hover+link function.

    Coming Soon

    • Content locking
    • Presence. You'll never feel alone again. Soon you'll be able to see who else in working in a project with you! This is a neat feature made possible by using the Pusher (https://pusher.com/) service. Pusher is enabling us to do a few neat things. One being content locking. In this first phase we'll be rolling out content locking and a way to see who else is in a project at a global level. Eventually we'll be showing who your fellow collaborators are on individual content entires. From there we'll have even more real-time collaboration features!
    • Inline editing of relationships. Working out content locking and presence made us realize that there would be some complexities with inline relationships. This feature has been paused until we release the the above prerequisites.
  • Enhancements

    • Optional class prefixes for block canvas generated html
    query($imageConfig: JSON){
     home {
       blockCanvasHtml(classPrefix: "ts-")
     }
    }
    
    • Optimize webpack config to reduce the amount of redundant includes to reduce the JS payload on the takeshape client app
    • Alignment and customizable sizes for block canvas image blocks

    There is no intrinsic meaning to the image sizes. Small, medium and large sizes must be configured in the query. If a size isn't configured by the developer or selected by a content creator the default size is used.

    Defining image sizes in tsg.yml

    routes:
      homepage:
        path: /
        template: pages/homepage.html
        context:
          query: data/homepage.graphql
          variables:
            imageConfig:  # now deprecated
              w: 300
              h: 300
            images:       # new images parameter
              default:
                w: 300
                h: 300
              small:
                w: 200
                h: 200
              medium:
                w: 500
                h: 500
              large:
                w: 1000
                h: 1000
    

    Passing variables from the tsg.yml config to the query

    query($imageConfig: JSON){
     home {
       blockCanvasHtml(images: $images)
     }
    }
    

    Generated output

    <figure class="[center, left, right][,] [small, medium, large]"><img...></figure>
    

    Alignment classes have no intrinsic effect on your content. The TakeShape SSG will add center, left or right to the <figure> element that wraps images. You will need to define css styles in your site project.

    New

    • Support for s3 bucket prefixes in the static site generator. Add the prefix to the end of the destination bucket in your TS project's static site config.
    • New user accounts are provisioned with the "Shape Books Sample Project"
    • Add logout button to project chooser dashboard
  • New

    • Ability to expand and collapse repeater items! This is a UX improvmeent that we've really wanted to implement to make everyone's lives so so so much easier when using complext repeaters. This implmentation works for both the standard repeater field in the content editor and for repeated fields for configuring options for dropdowns, radio buttons and checkboxes in the content type editor. Another awesome side effect of the work that went into this functionality is that we've increased our code coverge by another 2%!

    Upcoming

    • Inline creation of related entries
    • Upgrades to Elastic Search cluster
    • Sample project and First Time Experience
  • Fixes

    • Move Label above Value for radio field configuration in Content Type editor sidebar

    Improvements

    • Improve design and position of filter on assets and content list pages
    • Add instruction text for the Related Name property on the relatioship field in the Content Type editor sidebar.
    • Improved error messages in takeshape-cli
    • Add vcs ignore warning to CLI to notify folks that they should add a few TS generated files to their ignore files.
    • tsg init now writes out graphql.config.json in addition to .graphqlrc to make developers lives easier when using graphql plugins in their IDE.
    • Support for -v in takeshape-cli to show the current version. tsg --version and tsg -v both work.
    • Add graphql, sass, scss, markdown, JSON to the Code Block in the Block Canvas.

    New

    • Sweet sweet performance optimizations brought to you by a brand new datalayer implementation. We've done a lot of work to deduplicate fetches in our data loading layer. Especially when building a complex site, one making use of a lot of relationships. On a typical TakeShape project we've seen 2x gains in static site deploy performance. This is the tip of the iceberg of our performance optimization work. More to come in the future!

    Upcoming!

    • We're implementing Redis on the backend to enable a bunch of features and improvments people have been requesting.
    • Updating the Elastic Search cluster and client libraries
    • New first time user experince
    • Inline creation of related content
    • Ability to collapse repeater cards.
  • New

    • Show / Hide pieces of the interface based on users' permissions. Extending the work done on the auth and permissions system we've done a lot of work in the background here to allow us to enable and disable parts of the TakeShape interface. Probably the first thing users who have permissions of "Editor" or "Viewer" will notice is that they no longer see the gear icon next to a content type name. We've applied this feature across many parts of TakeShape but there is still more to do here. In the future we will be making it so that if a user only has view permissions on a field they will see that field in a disabled state.

    Fixes

    • Conflicting field name and related field names are allowed.

    Coming Up!

    • Public API access tokens
    • New sample project
    • Additional languages supported by the block canvas code block
    • Inline creation of related resources
  • New

    • List queries (get<type>List) have now been upgraded to have pagination and filtering!
    • Takeshape will migrate existing static sites with List queries for you at runtime. The old query format will be supported until v5.
    • Takeshape CLI will warn you about usages of the old list query format so that you can update them in your site.
    • The SSG paginate property now has a new data property which takes a .graphql query. This new feature takes advantage of the new paginated version of get<type>List. The SSG will automatically page through all the results of this query. This new feature improves performance and allows for the SSG to generate routes with thousands of pages! It is recommended that you switch paginated routes to use this new property. See http://www.takeshape.io/docs/pagination/ for more info

    IMPORTANT! With the release of you must update your local development environment to takeshape-cli v4. Please run the following command: yarn add takeshape-cli As mentioned above existing deployed static sites (templates, queries) will continue to work properly.

  • Fixes

    • SSG prevents the generation of invalid paths and warns of broken paths in the CLI.
    • Prevent users from accidentally creating multiple projects during project creation.
    • Empty credits or captions on a block canvas asset output nothing instead of <p><br></p>.

    New When editing a piece of content there are now three new ways of saving accessible through a dropdown menu next to the word "Save":

    • Save and continue allows you to save the current state of your piece of content and keep editing that same piece of content assured that your state is now safe. No more being directed back to the listing page if you don't want to be!
    • Save and add another. Ever get into a groove and want to keep on truckin'. Now you can with "Save and add another" Save your current piece of content and immediately start creating a new piece of content of the same Content Type.
    • Save and Duplicate. Saves your current piece of content and creates a new content entry with identical contents for you to start working from. It's basically this cat.

    We hope that this new save functionality improves the experience of content creation until autosave functionality is built out

  • Fixes

    • Fix reset password and unit tests
    • Filter nulls from getXList queries
  • Improvments

    • Enable spellcheck on block canvas field

    New

    • Wrap geneated embed block html with with <div class="embed"></div>
  • Fixes

    • Fix the behavior of file uploader so it waits for a 200 response and won't abort the xhr unless the task is being cancelled.
    • Prevent extra progress actions from being dispatched in the file uploader.

    Improvements

    • Change title of image field to asset field to better reflect the usage of this field as usable for any file type availabe in the asset manager.
    • Adjust the line-height of titles of checkbox fields

    New

    • Drag and drop images directly into a block canvas from the asset sidebar or from your desktop
    • Enable "Last Deployed" activity in the static sites table
    • Enable custom path configuration for first page of paginated content
    story:
      path: /story/:title
      template: pages/stories/detail.html
      context: data/story.graphql
      paginate:
        pageSize: 12
        path: /blog/page-:num
        firstPage: /blog
        template: pages/stories/landing.html
        property: stories
        itemName: page
    

    Upcoming!

    • Enable spellcheck in the block canvas
    • Wrap generated html from embed block in <div class="embed"></div>
  • IMPORTANT! Today we are releasing billing functionality for TakeShape. This is an exciting day because integrating billing is an essential milestone for a more open beta and a public launch.

    Everyone's projects are starting out with a 14 day trial. By the end of the trial we ask that folks enter billing details for their projects. If you have any questions about plan levels or anything else regarding billing please don't hesitate to PM me or call me at 781-775-8338.

    Also, a big thanks to everyone for their questions and feedback about TakeShape. We're excited about the growing community we're developing and are looking forward to upcoming milestones in the not to distant future where this community group will grow rather quickly.

    Fixes

    • In the Block Canvas remove extra blank lines after image and embed blocks in the block
    • Fix table cells that were breaking to a second line even though they had plenty of room to display on a single line
    • Hide grid / list switcher in the asset manager

    Improvements

    • Add codecov code coverage reporting tool. Continuing the work from Jest, we now get sweet reports on how we're improving our unit tests with every commit.
    • Site deploys - poll for the status of a deploy instead of waiting for a response
    • Codeblock style on TakeShape marketing site
    • Cli - at the end of a successful site deploy provide useful summary info

    New

    • Billing system built on Stripe. We now able to charge for TakeShape. Starting today everyone's projects will start a 2 week trial.

    Coming Up!

    • Drag and Drop images from the asset sidebar to create image blocks in the block canvas
    • Activity log backend and last deployed column in static site list
    • Fix line-height of multiple choice checkboxes
    • Image Field renamed to Asset Field
    • Pagination for GraphQL queries
    • Save and Continue Editing a piece of content
  • Improvements

    • Sandbox Nunjucks template compliation.
    • Lock down security of Nunjucks lambda function. Security of Nunjucks templates was a large focus for this iteration. Nunjucks and just about any templating language, can be a real security bear. Our solution walls off the Nunjucks process nicely and we feel confident in the solution we engineered.

    New

    • FTP Deploy. In addition to setting up a static site to deploy to S3 or GCS you can now configure FTP as a deploy target. This is very handy for folks who aren't quite ready to move into the world of bucket storage.
    • Swap out Ava for Jest for testing. Switching to Jest is huge! Jest will allow us to run our tests faster, be more aware of code coverage for unit tests and allow us to do more unit testing on actual interface components. This was a big lift but worth it to build on for the future.

    Coming up!

    • A backend to support some pretty sweet Activity Logging features that will provide more contenxt to users about what is happening to content in TakeShape. The first small user-facing implementation of this backend will also be coming in the form of "Last Deployed" info for static sites. From there we imagine content activity being a very visible aspect of the TakeShape interface.
    • Improvements to the CLI to provide summary info after a successful site deploy
    • Drag and Drop images directly onto the block canvas
    • Paginated GrahpQL queries
    • Billing!
  • Fixes

    • Asset Library search box is short
    • After creating a project you must log in again
    • No space between user email address and the word "has" in project invite email
    • Content editor sidebar is collapsed into a short sidebar in Safari

    Improvements

    • Sandbox Nunjucks build process for improved security
    • Return basic stats when using tsg cli
    • Doing local dev no longer requiest a static site to be configured
    • Warn dev when the route filter fails

    New

    • Allow members who are admins or owners to remove other members from a project
  • IMPORTANT The latest build requires everyone to update to the latest version of takeshape-cli. For users who are using our starter project it's as simple as:

    1. yarn add takeshape-cli
    2. rm .tsgrc .graphqlrc
    3. yarn run init

    New

    • Assign members to roles
    • Initial ACL functionality
    • API endpoint is now based on project id instead of token
    • Relocate Save and Cancel buttons into sticky bar
    • Show a Content Type's description along with it's title
    • Multi-select and delete from content list view
    • Keyboard shortcut for <small> element
    • Show field descriptions in content editor
    • Add Array Union and Intersection filters to nunjucks
  • IMPORTANT The latest build requires everyone to update to the latest version of takeshape-cli. For users who are using our starter project it's as simple as:

    1. yarn add takeshape-cli
    2. rm .tsgrc .graphqlrc
    3. yarn run init

    Fixes

    • Clicks on certain navigation buttons visually indicate a click but do not actually register the click.
    • Object fields - field isn't spaced properly against other field types
    • Color fields - cannot select the hex value in the color chooser
    • GraphQL search query ignoring terms

    New

    • Optional HTML compression (TS uses Minimize, a highly configurable, well-tested, JavaScript-based HTML minifier. You can find detailed documentation on the (Minimize site)[https://github.com/Swaagie/minimize].)

    Options All options listed in the (Options section of the Minimize)[https://github.com/Swaagie/minimize#options-1] site may be set:

    Example in `tsg.yml:``

    htmlCompression:
    enabled: true
    options:
      empty: true
      comments: true
    

    Images blocks in Block Canvas (was WYSIWYG) are now configurable through graphql query variables.

    query(){
        home {
            blockCanvasHtml({w: 500})
        }
    }
    

    Pass variables to queries via tsg.yml.

    ...
    
    smallImageConfig: &smallImageConfig
       w: 25
       h: 25
    
    largeImageConfig: &largeImageConfig
       w: 500
       h: 500
    
    
    routes:
      homepage:
        path: /
        template: pages/homepage.html
        context:
          query: data/homepage.graphql
          variables:
            imageConfig:
              <<: *smallImageConfig
      about:
          path: /
          template: pages/about.html
          context:
            query: data/about.graphql
            variables:
              imageConfig:
                <<: *smallImageConfig
      gallery:
            path: /
            template: pages/gallery.html
            context:
              query: data/gallery.graphql
              variables:
                imageConfig:
                  <<: *largeImageConfig          
    
    ...
    
    query($imageConfig: JSON){
      home {
        blockCanvasHtml(imageConfig: $imageConfig)
      }
    }
    
  • Fixes

    • Use real links in the dashboard startup steps.
    • Content types with no text fields break search.
    • Remove Import/Export menu item until such time as the interface for this functionality has been built.

    Improvements

    • New style for WYSIWYG links
    • Add max-items constraint to repeater field.
    • WYSIWYG fields are now indexed.
    • Inconsistent behavior when dragging and dropped fields when editing a content type.
    • Add pullquote class to the <aside> element for pullquotes.

    New

    • Object Field Type
    • Link to the keyboard shortcuts docs page underneath the WYSIWYG field
    • Environment variables for each static site. Available in the template under the environmentVariables property.
  • Fixes

    • Use Content Type Title instead of Content Type Name for headings
    • Prevent spaces in the name field of relationship widgets

    Improvements

    • Show content type of each content item in relationship field entries

    New

    • On the project list screen show projects you're invited to but haven't joined yet. Allow the user to accecpt or reject the invitation
    • Link to pre-filled API explorer view
    • Add project member listing and invitation status to Members page
    • Allow bold, italic, underline and links in image captions and credits in asset manager and in WYSIWYG images
  • New Features

    • Highlight text and hit CMS+K to add a new link!
    • Links are now added directly in the toolbar instead of in a modal dialog
    • Support backtick markdown shortcut in WYSIWYG. If you've got inline code you can enclose it with backticks var = "like so;"
    • Support headings markdown shortcut in WYSIWYG. Now you can do things like type ### and it will automatically format the line in the WYSIWYG as an h3.
    • Color field type. A content type can now be configured with a color field allowing content creators to select a color from a color picker and for devs to use retrieve rgba, hex or hsl values of the selected color.

    Improvements

    • Improve Checkbox field styling

    Fixes

    • API Explorer...and a bunch of other functionality now works in Safari
    • Proplerly handle 401 Error When Cookie is Missing and redirect users to login again
    • minLength + required validation error for fields that aren't strings
    • If repearer field is required it now shows the required asterix
    • For a project invitation if a user's auth token has expired show a nice error message
  • New Feature

    • Add Pull Quote WYSIWYG

    Improvements

    • Add title attributes to buttons to clarify button name

    Fix

    • Properly position WYSIWYG inline toolbar when clicking to highlight text
  • Fixes

    • Fix reverse relationship filtering

    Improvements

    • Use default format and auto imgix filters for images used in image block in wysiwyg
    • Add required * to required fields when editing a content type
  • Improvements

    • When adding a link in wysiwyg, autofocus on url input when dialog opens
    • Implement markdown shortcuts for ordered and unordered list styling in wysiwyg
    • YAML highlighting in code blocks
    • Stacked inline toolbar provides a short term fix for the toolbar underlap

    Features

    • Add button to wysiwyg inline editing tool
    • Add
      block to wysiwyg
    • Add and buttons to wysiwyg inline editing tool
    • Added _contentTypeName property to GraphQL Schema
    • Implemented Account Settings > Change Password
    • Projects are now sorted alphabetically
    • Empty values in repeaters no longer cause an error
    • Wysiwyg html fields now properly return an empty string when the field is cleared
    • Creating relationships of type multiple no longer has issues
    • Adding new items to dropdown works properly again.
    • Content with the enabled switch disabled (_enabled === false) are filtered out of get<Type>List queries by default. You can set the parameter onlyEnabled to false to restore the original behavior.
    • Navigation sidebar design improvements.
    • Links now behave properly with Cmd + Click
    • Image block design improvements