Statamic 2 Changelog


Released on August 14th, 2017
  • Fix Fix validation errors when saving and continuing a new page. #1545
  • Fix Fix an error in the template widget. #1548
  • Fix Fix pagination URLs. #1549
  • Fix Fix user role slug being overridden when manually specified. #1130
  • Fix old tags are now variables, which now makes conditional syntax much more natural.
  • Fix Fix fieldset listing being empty in some situations. #1547


Released on August 10th, 2017
  • New Replicator sets can be added in between existing sets. Like coins between couch cushions. 🛋 #1532
  • New The wrap modifier can now accept Emmet style classes.
  • New Partyline is now automatically bound inside addon commands (it's now easier for addons to say stuff in console output).
  • New Addon commands inherit some helper methods like checkLine() and crossLine(). #1533
  • New Image thumbnails now maintain their aspect ratio so you can see the whole thing. You asked, we delivered. #1491
  • Fix Nested Replicator reordering is now working properly. #1394
  • Fix Fix sorting of localized collections not account for default values. #1520
  • Fix Fix collection tag pagination URLs when used in a localized site. #1268
  • Fix Fix incorrect deleting in the table fieldtype. #1542
  • Fix Sanitize old values. Sounds like something you'd hear in a nursing home but isn't. #1521
  • Fix The 404 tag now works correctly again instead of throwing an exception. #1541
  • Fix Form fieldtype no longer unnecessarily loads submissions. #1346
  • Fix The CP nav no longer gets trimmed after addons have a chance to add items. #1540
  • Fix Sort fieldsets by title. Makes sense. #1526
  • Fix YAML fields get saved correctly as yaml instead of y_a_m_l. #1515
  • Fix Prevent logging an exception when a form is submitted without params.
  • Fix Users can now update their own account data in the CP without needing access to unnecessary extra permissions.


Released on August 3rd, 2017
  • Fix Plugged a sneaky little memory leak where the cache would grow every time content is saved in the CP. Performance gainz! 💪🏽 #1212, #1327
  • Fix The home page can now be displayed on its own in the page tree. #1483, #891
  • Fix Fixed an unauthorized error that could occur when updating taxonomy terms. #1534
  • Fix Fix nav tag error when using the include_entries parameter.
  • Fix Fix an oauth class not found error.


Released on July 20th, 2017
  • New Super users can delete addons from the CP listing.
  • New Addons can be deleted programatically.
  • Fix The free trial badge no longer appears locally when you have a valid license. #1503
  • Fix Fix error when trying to save addon settings. #1507
  • Fix Fix h3 masquerading like an h2 in the markdown cheatsheet. #1508
  • Fix Fix uploaded asset filenames appending extensions. Underscores don't get replaced by dashes. #1509
  • Fix Fix collection:next / :prev tag error and sorting issues. #1510
  • Fix Fix unauthorized error when publishing taxonomy terms. #1513
  • Fix Fix some scoping issues in the Redwood theme.


Released on July 18th, 2017


Static Caching


  • New Add Site Helpers. (Tags, Modifiers, Filters, Controllers)
  • New Controller methods can be referenced in routes. Hint: Should be great for making an API.
  • New Concept of "installed" addons. Fixes #1377
  • New Addons can be marked as commercial 💰, and automatically get a settings page with license key field.
  • New All addons get shown in the listing, regardless of whether they have a meta file.
  • New All addon aspects can use dependency injection. (We recommend this instead of using the init() method)
  • New Addons may now contain multiple fieldtypes, modifiers, controllers, and widgets.
  • New Added commands for running and creating tests.
  • New Added a handful of helper methods.
  • Fix Widgets use the parameter methods, just like Tags do.
  • Fix The getDirectory helper method will get the addon's root directory instead of the file's directory (unexpected behavior when a file is in a subdirectory)
  • Fix Fix test bootstrapping so you actually run your tests.
  • Fix Visiting a non-existent ! URL shows a 404 instead of keeping you in a weird nothingness.
  • Fix A Tasks class gets created when running php please make:addon.
  • Break Your extra addon classes should longer extend Addon. Instead, you can should use the Extensible trait to get access to helper methods.

...and More

  • New You can now install Statamic via the command line (although technically it's not part of Statamic.)
  • New You can now update via the command line using php please update.
  • New You can protect content with passwords, by IP addreses, and by authentication. #1434, #1001
  • New Added Partyline. ☎️🎉
  • New The CP can disabled per-environment by adding DISABLE_CP=true to your .env file. #1067
  • New Passwords can be reset from the CP login screen.
  • New Added an area to the CP for entering all your license keys in one place. You get to it through the unlicensed warning, or free trial badge.
  • New Added RSS feeds to Redwood. #1380
  • New Added the tap() helper method. 🚰
  • New A StatamicUpdated event will be dispatched upon updating, which deprecates system.updated.
  • New A RoutesMapping event will be dispatched just before mapping routes.
  • Fix Fix security issue where a user with CP access could potentially edit roles and reset passwords.
  • Fix Only super users can copy the password reset URL. Users with users:edit permission can still send the reset email.
  • Fix When using Save and Continue, it will remember and make that the default action.
  • Fix Submitting the publish form will keep you on the page. It feels faster and addresses #1468.
  • Fix The CP will nag you instead of blocking you, if you are unlicensed or if there's an outage. #1443 #902
  • Fix Double clicking assets will select them and close the dialog instead of editing them.
  • Fix Clicking another asset when max_files is 1 will select it, rather than needing to first unselect the old one.
  • Fix Asset filenames will get slugified when uploading.
  • Fix Fix issue where an unauthorized user could create a user or content.
  • Fix Fix a looped_tags output when encountering an empty array. #1236, #962
  • Fix Visiting the Glide route on its own now shows a 404 instead of an error.
  • Fix Updated Laravel Elixir's version that's used in php please make:theme.


Released on June 16th, 2017
  • New Added a nav:doesnt_exist tag. Naturally, it's the opposite of nav:exists.
  • New Added an extension modifier. It gets the file extension of a filename.
  • New Support sort="true" on basic indexed arrays.
  • Fix Supplement taxonomies within collection:next and :previous. #1433
  • Fix Supplement taxonomies within the nav tag.
  • Fix Prevent navigation confirmation within the Fieldset builder. #1424
  • Fix Fix error in pages fieldtype when a parent is selected. #1428
  • Fix Support localizing multiple locales with the same language #1423, #1031
  • Fix Fix bug where assets wouldn't show up in a second locale. #1440
  • Fix Sorted collections and taxonomies by title. #1426
  • Fix Singular taxonomy terms are automatically converted to arrays. #1391
  • Fix Improve handling of empty values within the Importer.
  • Fix Upgraded the Algolia client, which suppresses a warning in their dashboard. #1438
  • Fix Updated Laravel Socialite, which fixes an API related bug. #1467
  • Fix Updated a bunch of composer dependencies.


Released on May 16th, 2017
  • New If you navigate away from a publish page without saving, you will now get a confirmation prompt. #1092, #570
  • New The publish page will scroll up to the validation errors after submitting so you can see them.
  • New Automagic emails will now encode arrays as json. #720
  • New Full measure static caching can lock files for a specified amount of time, which can help high traffic sites avoid race conditions with static file caching. #1398
  • New Email builder now supports the common John Smith <> format to include names. #371
  • New You can use this same email format in formsets too.
  • Fix Entries get localized when used in the nav tag.
  • Fix Fix PHP error sometimes encountered when using assets.
  • Fix Redactor didn't like Chrome 58 and refused to bold, italicize, or otherwise affect selected text. Sometimes. It's fixed now.
  • Fix Fetching users by username/email is now case insensitive. #1381
  • Fix Fixed a bug in Glide where progressive JPGs were being saved as pjpg. #1409
  • Fix The users tag supports the taxonomy="true" parameter. #1405
  • Fix Fixed issue where driver: s3 was not being saved to asset containers. #1368
  • Fix Improved/fixed handling of S3 asset URLs. #1406
  • Fix Form widget shows the latest submissions again like it should.
  • Fix Changed the default CP pagination size to 50.


Released on April 21st, 2017
  • New A where modifier that lets you filter an array (like a Replicator field) to items where a key has a specific value. Much like conditions, but on variables!
  • Fix Prevented drafts from showing in an unwanted fashion. (a regression from v2.5.8)
  • Fix Users and Pages can now have relationships with Taxonomies again. They're so adorable together! 💕
  • Fix Empty responses will no longer be statically cached.
  • Fix The "Save" button on the publish page is now disabled while saving to prevent multiple submissions.
  • Fix Prevent pages with taxonomy data from appearing in a collection tag when using a taxonomy parameter. If that doesn't make sense it's okay, it's fixed and now you will never encounter it.
  • Fix Fix a localization issue. There is always just 1 more localization issue to be found. #1347
  • Fix Pages tag now properly injects taxonomies. #1387
  • Fix Localize the terms in the taxonomy tag. #1371
  • Fix Subtle adjustments to the installer. Show a recommended 256M memory limit.
  • Fix Prevent an ugly error when the updater widget cannot connect to the Outpost. To be clear, there is now no error, not simply a pretty one. 💄
  • Fix Prevent single value relate fields from losing their values when reordering replicator sets. #924
  • Fix Adding taxonomy="false" to a collection tag will now return the full, unfiltered data set. #1388


Released on April 7th, 2017
  • New The Importer has been re-engineered and simplified. You can now feed it JSON files that match the Statamic Spec and watch the magic happen.
  • New The Importer will only create taxonomy terms where necessary.
  • New The Importer now highlights duplicate entries and pages.
  • New The provider gets passed into OAuth related events.
  • New Added a absolute param to the glide tag to render absolute URLs.
  • New The breadcrumbs tag now supports routes, intelligently. #1150
  • New When deleting a collection or taxonomy, the corresponding route gets deleted. #611
  • New Added a lowercase alias of the lower modifier for better v1 backwards compatibility.
  • Fix Token mismatch exceptions are no longer logged. This is a Laravel standard we're happy to implement.
  • Fix Prevent formsets from being saved without a title. #1333
  • Fix Add some more missing translations.
  • Fix Set the Carbon locale for the CP, which fixes dates not being localized. #1330
  • Fix If you try to filter a collection by taxonomy without a value (eg. using an empty query param) you now just get an unfiltered collection, as one would expect.
  • Fix The math modifiers will only resolve their value from context if it's not a number. #1319
  • Fix The - subtraction modifier now works correctly (e.g. at all) again.
  • Fix Underscores in URLs were being converted to dashes. Underscores are ugly (our opinion) but certainly allowed, and now working as intended.
  • Fix Form submission now use the specified date format. #1359
  • Fix Form file field links now display correctly.
  • Fix By popular demand, those Form file links open in a new window.
  • Fix Fix issue where max_items stored as a string would not be recognized properly.
  • Fix Prevent the pages fieldtype's max_items setting from being saved as a string.
  • Fix The localizable toggle now saves correctly. #767
  • Fix Prevent Content::whereUri(null) from returning the home page.
  • Fix The default cache length setting label incorrectly said seconds. It's actually minutes, and now informs you thusly. #1358
  • Fix Prevent an error when a replicator set has no fields.
  • Fix Fixed a pesky taxonomies error in the Importer.
  • Fix Fixed pages not showing up when running in a subdirectory.
  • Fix Fixed some image/thumbnail related issues when running in a subdirectory.
  • Fix Changed the default resources route for new installs from resources to _resources to avoid potential URL conflicts.
  • Fix Fix grammar problems in the Harry Potter screenplay. It may be a bad screenplay, but at least it's grammatically correct. Niles is proud of his work.


Released on March 17th, 2017
  • New Ordered Collections now support the sort_dir option- The Redwood theme now properly excludes current entries in the "Next up" section, thus demonstrating the use of the url:not condition
  • New Added a new use_https setting to force your HTTP schema of choice #1140, #1306
  • Fix Added a number of missing translations, from buttons to email subject lines
  • Fix The addons:refresh command is now more Windows friendly #1169
  • Fix .DS_Store files are way less likely to squirm their way into things like Template select boxes
  • Fix Asset's max_files: 1 setting is now parsed as in integer correctly, resolving all sorts of weird glitches #1313, #1314
  • Fix Fieldset partials now show hidden fieldsets like they should.
  • Fix Fieldset partials no longer copy their fields into their parent fieldset upon edit. #1246
  • Fix $user->roles() now inherit roles from their User Groups.
  • Fix Issues involving saving empty Grid row data are obliterated like a watermelon filled with thermite #955
  • Fix Search results Tag now includes taxonomies properly
  • Fix Collection fields with null label config no longer affect the listing data #988, #1250
  • Fix Taxonomies with dashes don't cause weird issues anymore #1308
  • Fix Squashed an issue with the Markdown parser choking on filenames with spaces #1315
  • Fix The Asset browser no longer has a CSS overflow issue making it difficult to use properly #1323
  • Fix You can now mount a collection to the homepage in the CP #1311
  • Fix The timezone is now set early enough to not create log files in the future. Even though that was kind of cool. #458
  • Fix Taxonomy Term's Save & Continue and regular Save buttons are no longer flipped around. Can we claim dyslexia? #1283
  • Fix The Collection Widget header link now goes to the listing instead of the config screen #1008
  • Fix Form fields are now draggable
  • Fix Form Columns can now be set when creating a formset
  • Fix The Form builder's column config now uses inline toggles, which is a much better UX and fixes #365
  • Fix Fixed incompatibility with CRLF and Windows line endings #1274
  • Fix Made path helpers more Windows friendly #1170
  • Fix Glitches involving checkboxes in Grids have been given the People's Elbow 💪 #610
  • Fix The Date/Time fieldtype now handles bad/invalid/null data like a champion #1292
  • Fix The title field's display key is now respected #620
  • Fix You can now close the Asset Manager's New Folder modal and then, wait for it, open it again! #1298
  • Fix Numeric page titles now appear in the CP #315
  • Fix Zeroes in content were being treated as nulls and not being saved to file. #845
  • Fix Related, false values were also being stripped out. Now we only strip out nulls.
  • Break If you're using toggles and relying on a condition like isnt_set, since toggles now actually get saved as false, you should adjust your conditions.


Released on March 8th, 2017
  • Fix Fixed a PHP5 error introduced by the as modifier added in 2.5.4.


Released on March 7th, 2017
  • New Added validation for entry and page slugs to be unique within their respective sections.
  • New Added an output modifier that renders the raw contents of an asset. Useful for svgs.
  • New The partial modifier is now context aware, letting you pass in the name of a var
  • New We now have an aliasing "as" modifier for array vars
  • New There is now a retina-friendly favicon for the CP. It took Jack actually using his Retina Macbook Pro to realize we didn't have one.
  • New Although not very exciting, the Markdown helper cheatsheet now shows you how to make headers.
  • Fix The updater ran migrations regardless of the version. Now it it'll only run them when appropriate.
  • Fix The update from 2.x to 2.5 would not recognize terms as html files. Now they do.
  • Fix Drafts viewed on the front-end will no longer be statically cached.
  • Fix Fix the priority for variables passed into partials.
  • Fix Fix the CSV form submission exporter.
  • Fix Fix the search field when the Control Panel's URL is changed from cp.
  • Fix If you used taxonomy="true" but didn't have a taxonomy in your URL it would through an error. It no longer does that.
  • Fix Automagic emails no longer send extra, undesired data.
  • Fix Some font sizes in the CP got full of themselves and have been cut back to size.


Released on February 15th, 2017
  • New Added pagination to form submissions in the CP. #1233
  • New Formsets can have a date_format which overrides the one in cp.yaml.
  • New Addons may prevent form submissions but have them appear successful by throwing SilentFormFailureException. Useful for spam control addons. #1165
  • New User tags will now automatically transform taxonomies.
  • Fix The pre-2.5 migration will now adjust user files and replace Asset IDs automatically, as it should. #1258
  • Fix The Collection and Form widgets use the proper date_format. #1255
  • Fix Added support for excluding /.well-known in the sample htaccess and nginx.conf files. #1251
  • Fix Title field autofocuses properly again after having been distracted by sunsets over mountain streams. #1248
  • Fix Form submissions are now properly sorted again, without the need for a magical talking hat. #1247
  • Fix File fields inside form submissions now display correctly. #1214
  • Fix Icons in the CP nav are now perfectly aligned to the nanopixel, if indeed that is a thing. #1245
  • Fix When creating an S3 Asst Container the proper driver: s3 value is now saved. #1244
  • Fix The cascade order in the partial tag has been reprimanded and corrected. #1189
  • Fix Fixed a number of localization issues in the CP. #1186, [#1161][1161]
  • Fix Images with paths starting with img are now getting manipulated correctly. #729
  • Fix Fix taxonomy terms not being automagically transformed within the entries tag. #1254
  • Fix Fix FileNotFoundException being thrown when visiting an incorrect Glide URL. Now you get a 404.
  • Break Swapped HoneypotException with a new SilentFormFailureException.


Released on February 1st, 2017
  • Fix Fix 404 when creating child pages 2 or more levels deep. #1225
  • Fix Fix empty roles field when editing user groups. #1224
  • Fix The content field inside the default fieldset is now properly localizable. #1220
  • Fix A PHP 5.6+ only block of code snuck in there. It's now 5.5.9+ compatible again. #1213
  • Fix Fix ability to retrieve assets from a container by their path. #1206
  • Fix Fieldset dropdowns will no longer show hidden fieldsets. #1203
  • Fix Terms can be cast to strings, which will be their title. Fixes issues when using modifiers on them. #1195
  • Fix RedirectException's setUrl/setCode methods will return itself so you can chain methods. #1185
  • Fix Fix invisible menu button in Redwood theme. #1180
  • Fix Fix layout issue on the publish page with long titles. #1160
  • Fix Added a loading graphic to listings. Spoiler alert: it's animated but boring. #848
  • Fix Removed non-functional search box from the User listing. #1209
  • Fix Fix incorrect sorting in CP listings. #1201, #1149
  • Fix Disabled event tracking in the debug bar. It was causing massive storage files in some cases. #1219
  • Fix Fixed the focal point editor when working with images containing spaces in their filename. #1205
  • Fix Fix issue where the English locale would always be there, even if you didn't want it. 'Murica.
  • Fix Make a couple of caching settings editable in the CP. #1089
  • Fix Fix issue where taxonomy fields weren't being converted to terms inside the relate tag.
  • Fix urlencode and rawurlencode no longer encode the slashes, letting you use them on actual URLs. How neat!
  • Fix The CP's global search no longer says "Search for anything". It's just an icon you can click on and it works great.


Released on January 27th, 2017
  • New Taxonomy term's count variable is now relation_count (and aliased for backwards compatibility).
  • New Added Fieldset::exists().
  • New Added new choices for Amazon S3 regions.
  • Fix The Toggle field now works properly again
  • Fix Taxonomy terms in the CP are now properly sorted by title.
  • Fix Prevent the Fieldset fieldtype from overriding existing fieldsets.
  • Fix Fix the Fieldset Builder not displaying any taxonomies when creating.
  • Fix Prevent submission of the Fieldset Builder without a Title.
  • Fix Safari CSS issue that prevented the Asset Browser's list from showing.
  • Fix If you saved a new page that has a fieldset field in its fieldset, then you chose a different fieldset, it would get overridden. That's fixed. You betcha that's an edge case.


Released on January 26th, 2017

Note: Upgrading to 2.5 will modify your content.

The updater does makes a backup zip, but you should consider using git or testing the upgrade locally before deploying to production.

Asset IDs will be replaced by URLs. Taxonomy term IDs will be replaced by values. Asset and taxonomy configuration files will be relocated and adjusted. Taxonomy fields will be adjusted in your fieldsets.


  • New A completely redesigned end-to-end asset experience. From UI to UX and everything in between.
  • New You can now drag to reorder assets in the Assets fieldtype, the way God intended. #291
  • New We now use Asset URLs instead of IDs in content. And the heavens rejoice!
  • New You can now preview documents and media files inline.
  • New Creating an asset container in the uses a wizard-style workflow. No actual magic involved.
  • New Added php please make:asset-container if you're a CLI fan.
  • New You can create Image manipulation presets that run automatically when you upload new images. They can even be pushed off into a queue.
  • New You can rename and move assets in the CP. #699
  • New SVGs get thumbnails. #589
  • New You can now download your assets in the CP. #1063
  • New The Assets fieldtype: You can add restrict: true to prevent navigation through folders.
  • New The Redactor and Markdown fieldtypes can now add restrict_assets: true to prevent navigation through folders.
  • Fix Error messages are now useful about 99.5% of the time. The other .5% of the time they're sarcastic and lay around on the couch watching Netflix.
  • Fix S3 Containers were slow. You can now cache them. Whiz! Bang! Speed!
  • Fix Saying "Sync your assets" is something legacy users will say.
  • Fix Fixed some things. #513, #581, #710, #727, #745, #802, #901, #942, #945, #1090, #1106, #1154, #1146, #1192


Other Things!

  • New We now use system fonts in the CP for performance. We think it looks better too!
  • New Pagination in the control panel.
  • New Arrays can be referenced in routes. The first value will be used. This is useful for adding taxonomy terms.
  • New Tag parameters prefixed by colons will be evaluated from context. learn more.
  • New New Fieldset Fieldtype let's you pick and create Fieldsets.
  • New Add support for static_caching_invalidation: all where the whole static cache gets wiped.
  • New Statically cached content can now be invalidated without using the CP. ie. You just need to hit Statamic from an uncached URL or through the CLI.
  • New Static cache invalidation url rules can be added for pages, just like for collections.
  • New Added Helper::ensureInArray(), Str::fileSizeForHumans(), Str::deslugify(), File::move()
  • Fix Dev mode is now called Trial Mode for clarity. It doesn't give you special developer features. It just means you didn't pay yet.
  • Fix Fix a bunch of things when stache_always_update is off. #1134
  • Fix The Markdown fieldtype's preview is prettier. #554
  • Fix Instead of a big, ugly TokenMismatchException error, you will now be automatically redirected to the login page.
  • Fix The Redactor fieldtype's minHeight can be set. #821
  • Fix Fix bug where html files wouldn't get deleted when invalidating using full measure static caching.
  • Fix Deleting content will now delete the corresponding statically cached url. #1122
  • Fix Fix broken images in Redactor. #1154
  • Fix Fix broken images in Assets fieldtype. #1146
  • Break You need to prefix partial tag params if you want it to read from the context.


Released on January 10th, 2017
  • Fix The updater attempts to clear the cache earlier in the update process. Result? Better updating.
  • Fix Polyfill String.includes() because we made the silly assumption that IE was able to check if a string contains another string.
  • Fix Sanitize get, post, and get_post variables.
  • Fix Prevent an error when saving an empty taxonomy field.
  • Fix Regex conditions (matches|match|regex) now work on arrays.
  • Fix Fix number_format modifier. It's smarter now, and doesn't trip on irreverent commas.
  • Fix If and when stuck in the "meta refresh due to a cache building error", allow the console to work so you can clear the cache.
  • Fix Fix issue where only one collection gets localized. #886 (Thanks Remy!)
  • Fix Fix localizable routes. #1164 (Thanks Peter!)
  • Fix Fix issue when a localized route exists, any entries that have not been localized wouldn't work.
  • Fix Fix issue where updating a localized entry/term would override the default locale until the cache is cleared.
  • Fix List fieldtype now enters the current line on blur #1166
  • Fix Form submission view now escapes HTML properly #1145
  • Fix The "#" character is now valid inside tags, which enables and addresses numerous things, including #1112
  • Fix Template and Layout now show in the debug bar on 404 pages #690


Released on November 18th, 2016
  • New Improved the example starter nginx config.
  • New Add cc and bcc support to forms, because if there's one thing this world needs, it's more email. 💌 #1086
  • New "Old" data is now available as variables (instead of Tags) inside Form tags so you have more control over template output. #792
  • New Boolean based modifiers can now be used in conditions. #522
  • New You can retrieve Form errors individually like so {{ error:snorkle_size }}. #792
  • Fix Fix issue where Javascript based translations weren't respecting the user's locale preference. #1068
  • New The contains modifier now supports arrays.
  • Fix Form submissions with arrays will now show them in the control panel as JSON.
  • Fix Fix the old tag not recognizing colons for nested keys. The old tag now loves colons, which sounds weird but probably only in English.
  • Fix Only the drag handles in the page tree will now trigger dragging. Fixes #1076, #517
  • Fix The Form widget now shows newest submissions on top. Like a whipped cream, but less exciting. 🍨 #1075
  • Fix Fix the Date fieldtype layout inside Grids. #1043
  • Fix Fix html entities on "backing up" text inside the updater. #1024
  • Fix Fix time picker formatting in Firefox. #914
  • Fix Fix a significant performance issue regarding OAuth. #1096
  • Fix Fix subdirectory appearing in the URL when editing pages, when installed in a subdirectory. #937
  • Fix Fix "create page" redirect URL when running in a subdirectory. #977
  • Fix Fix single pages being duplicated when clicking them. They were just lonely and wanted a friend, ok? #1097, #1103
  • Fix Fixed something else probably
  • Fix Fix addon translations not being available in Javascript. #1064
  • Fix Fix form editor column saving issue. #789
  • Fix Add some common global vars to Form submission email templates (like date, site_url, etc). #1010
  • Fix Fix a CP search positioning issue in Safari, which is the new IE if you haven't heard. #904
  • Fix Path::tidy() will also normalize slashes. This fixes some Windows path issues. #1102, #888
  • Fix Fix the continue button link on installer.php on Windows. #953
  • Fix Fix protocol warning on installer.php when running https.


Released on October 27th, 2016
  • Fix Fix issue where saving a taxonomy term could sometimes throw an error. #1070
  • Fix Fix IE 11 not showing the Pages interface. It took us a while to find a copy of IE11. #1028
  • Fix Fix the links to form submissions in the dashboard widget.
  • Fix Nav:exists was having an existential crisis after reading Tolstoy. Therapy has fixed it and revoked its library card. #1069


Released on October 26th, 2016
  • New The get_content tag now supports IDs. #1058
  • New The get_content tag now supports a shorthand syntax too.
  • New You can now search the control panel with Algolia #827.
  • New You can now set Algolia's searchable attributes in the control panel.
  • New Added an event when a search is performed.
  • Fix Fix an issue where an error while building the Stache could result in an infinite redirect.
  • Fix Fix an issue where the redirect while the Stache is building would append itself repeatedly. Recursive grossness. #1042
  • Fix Fix issue where the user groups fieldtype would not be populated.
  • Fix Remove the undesired services settings tab that appeared in 2.1.15 like a g-g-g-ghost in a Scooby Doo cartoon. #1049
  • Fix Fix some translations in the CP when used through Javascript. We even did so without adding a new JS framework!
  • Fix Prevent a long title from wigging out the publish page like a loose tooth on a windy day. #837
  • Fix Fix honeypot link on the form page. #1041
  • Fix Put some methods in alphabetical order to satisfy Erin's self-proclaimed OCD. #1052
  • Fix Fix error in nav:count tag when there are no nav items. #1061
  • Fix Fix users fieldtype showing no data. #1032
  • Fix Fix an issue with the user groups fieldtype.
  • Fix The user groups and roles fieldtypes are only editable if the user has super permissions.
  • Fix The user groups and roles fieldtypes use a tag UI.
  • Fix Fix settings with interpolated .env being editable in the CP. #1059
  • Fix Fix a regression preventing you from overriding globals in your environment file. #1034
  • Fix Content::uriExists will ensure there's a leading slash for consistency.


Released on October 17th, 2016

This release adds some improved security suggestions to the sample server files (htaccess and nginx.conf) that you'll want to look at if you haven't already done so. Things like disallowing access to all . hidden files, not just .htaccess, and so on.

  • New Added a form fieldtype for choosing one (or more) of your forms.
  • New get and url modifiers work with array by grabbing the first item.
  • New Added a Please facade. Does the exact same thing as Artisan.
  • Fix Fix an issue where some people would see an infinitely refreshing page as the cache warmed up.
  • Fix Search API methods will catch exceptions and log them instead of breaking the site with an error display.
  • Fix Fix issue where services.yaml would not be recognized.
  • Fix Add some rules for protecting hidden files to the sample htaccess and nginx.conf files.
  • Fix Removed the collection of entries from taxonomy terms when converting to an array. Fixes an Algolia error saying too much data is being sent.
  • Fix Fix untranslated string in the updater.
  • Fix Fix an issue with the locale dropdown.
  • Fix Fix issue where addons weren't referencing their translation files when running above webroot #805
  • Fix Added an m4v filetype icon.


Released on October 6th, 2016
  • New Keyboard lovers should order a new pair of happy shoes because you can now tab your way all through the publish screens and custom fields. 🎶
  • Fix Updated the Markdown package, which should solve an issue where some heading IDs cause the page to disappear.
  • Fix Fix issue where partials with spaces and underscores weren't recognized. #1016
  • Fix The register method in a service provider is no longer required. #1012
  • Fix Fix issue where you couldn't create a user when login type is set to email. #966
  • Fix Add title when creating a formset.
  • Fix The taxonomy fieldtype saves a string when max_items is 1.
  • Fix Fix issue where asset tags referencing a field named img would self-destruct. #1013
  • Fix Fix issue where addon settings weren't being shown in the CP.
  • Fix Fixed Tag methods being sent as an argument.
  • Break Addon classes (Tags, Modifier, etc) no longer extend Addon. Neither should you. Instead, use the Extensible trait.
  • Break If you were relying on the tag method being sent as an argument, you can use $this->tag_method.
  • Break Removed the addon helper methods that were added in 2.1.13. If you were already using them, you're quick! The property versions are the best way to do this. We know why now.


Released on September 30th, 2016
  • New You may override translation files by placing them in site/lang/en. Like fr, for example. #991
  • New Added URL::isAncestor(). If you were a URL you could use this to find your grandpa.
  • New You can now set request headers in your front matter and/or routes.
  • New Arbitrary addon classes that want to leverage helpers no longer need to extend Addon. You can now use the Extensible trait.
  • New You can add redirect: 404 to front matter to trigger a 404, if you want to do that for some reason.
  • New Improved the validation when editing an Asset Container. #588
  • Fix Fix some issues where content wouldn't get completely parsed.
  • Fix Fix issue where actionUrl would be missing the addon name. #997
  • Fix Fix issue where addon service providers were booted twice. How can you boot that which is already booted? Think about it. #998
  • Fix Fix nav tags thinking similarly named sibling pages were parents. What are we, Targaryens? #993
  • Fix Fix $this->getConfig() returning null instead of an array.
  • Fix Add a translation. #992
  • Fix Added a search shorthand tag, which is exactly the same as search:results.
  • Fix When a Glide tag references a non existent value, it now outputs nothing instead of a potential error. Broken images are better than broken sites.
  • Fix Fix a derpy issue where some configs weren't getting merged with the defaults correctly. #990
  • Fix Fix issue where an extra | would sometimes appear in markdown fields. You might still need to fix existing cases manually, however. #930
  • Fix Fix an issue on large sites where data might be missing while the Stache is performing its initial warm up.
  • Fix Added $this->session->forget() addon helper.
  • Fix ~~All the addon context helpers ($this->blink, etc) are now also methods ($this->blink()).~~ Don't use this, it'll be gone in 2.1.14
  • Break Removed $this->flash() helper from Controllers (it now references $this->flash). If you used this, you can still just do session()->flash()


Released on September 26th, 2016
  • New The parent tag now supports arrays, and thereby all parent data. It's no longer your grandfather's tired tag.
  • New The pages tag can now use IDs in addition to URLs or folder names.
  • New Email values in formsets can now use environment variables.
  • New Loggers can now be managed through environments.
  • New The Control Panel is now fully translatable. All of our hardcoded strings have been wired up. Celebrate!
  • New Modals can now be closed with the escape key. #862
  • New The installer now makes the user super instead of just assigning role. You are a super developer and don't let anyone tell you otherwise.
  • Fix Fix paths in S3 based asset containers #975
  • Fix Fix an issue that caused the get modifier to not get...anything.
  • Fix Asset container syncing will now sync folders, which fixes some related issues too.
  • Fix Fix some issues with editing/deleting assets with stache_always_update: false.
  • Fix Fix an issue where the parent tag wouldn't work with multi word variables. #976
  • Fix Fix an error where the cache wouldn't clear properly after running the installer, thereby making first-time run experiences really derpy. Sorry about that.
  • Fix Improve slug auto-generation. #312
  • Fix Fix an error after deleting the last entry in a collection.
  • Fix Fix an error when using the syslog log handler.
  • Fix Fix the directory when using $this->email() #983


Released on September 21st, 2016
  • New Templates can use section and yield to inject into layout. Game changer, ya'll.
  • New Taxonomy listing pages can now have their columns customized, just like Collections.
  • New Added user:not_in tag. Yup, it's the opposite of user:in.
  • New Added a syslog logger.
  • New Cmd/Ctrl+s will now save changes to your page tree order.
  • New Niles is writing a screenplay.
  • New The save button in the page tree only appears after you reorder something. Simpler is better.
  • Fix Fix issues where the cache needed to be manually cleared for items to show up when Stache is was set to not update on every request.
  • Fix When running the clear:cache command, it no longer tells you the Stache was cleared. But don't worry, it still does.
  • Fix If you ever need to manually clear the Stache or Glide cache, they're now stored in their own folders.
  • Fix Added missing timezone field in system settings.
  • Fix Added .kml filetype icon.
  • Fix Context and parameters get passed into custom filters in taxonomy tags.
  • Fix The Auto Taxonomies feature is back.
  • Fix Uploaded assets first go to a temporary location. Fixes S3 assets being the incorrect MIME type.
  • Fix Fixed/added support for putting your site in maintenance mode.
  • Fix Fixed issue where users in a user group weren't being saved.
  • Fix Changed the users field in the user group form back to the panes mode.


Released on September 13th, 2016
  • Fix Globals are savable in the Control Panel once again. #948
  • Fix Redactor's "Open link in a new window" checkbox is now visible. #265


Released on September 9th, 2016
  • Fix Put the Stache in our hydraulic press and now it's half the size. Fixes some weird memory and serialization issues some people were experiencing.
  • Fix The Stache now also checks the version number for invalidating itself.


Released on September 8th, 2016
  • Fix Fix a search related error that popped up in 2.1.7
  • Fix Fix a syntax error you'd see if you are kickin' PHP ol' skool. #932
  • Fix Search auto-indexing doesn't happen when the cache is built from scratch.


Released on September 7th, 2016
  • New Added a convert:email-login command that converts user files from username to email.
  • New Added a performant pages:count tag.
  • New Added a new markdown:indent tag to let you wrap content in your templates.
  • New Added the ability to mix named and unnamed wildcards in routes.
  • New Added Search::insert() and delete() API methods.
  • New Added a parseNoResults() tag helper method that returns common useful variables.
  • New Search auto indexing is now much smarter and uses diffs. Removed the search.index_frequency setting. No longer necessary.
  • New Added a new setting to let you exclude URLs from CSRF protection.
  • Fix Fixed a long-standing bug that masqueraded as a feature that nobody liked. Empty values in loops where replaced by the previous iteration's values forcing the need to over-scope everything. It's fixed. 🎉 #514, #733, #786, #830, #889
  • Fix Fix a missing update_available variable error in addons. #906
  • Fix Add validation to user registration forms to prevent using an existing username.
  • Fix Improved username/email handling when login_type is set to email.
  • Fix The search:update command shows more useful output.
  • Fix Fixed regression where asset URLs with spaces were not encoded.
  • Fix Glide URLs with spaces now get encoded.
  • Fix Fix incorrect Glide URLs in the CP when using the cached setting.
  • Fix Fix an issue where assets were being included when fetching "content".
  • Fix When saving data programmatically, IDs will always be added if they aren't already there.
  • Fix Fixed up some issues with the get_value tag. #675
  • Fix Added pagination and a couple other useful little code examples to Redwood.