- fixed; Issues where the session store would not always wait for a database connection before initialising the web server
- fixed; Compatibility issues with changes made to the azure-storage blobservice.js, thanks Pete Amundson
- added; Mandrill templates and render support, thanks Ignacio Lago
- fixed; Issues with less middleware options when using multiple paths
- fixed; Error in Admin UI when filters are applied to a Relationship field, thanks Ignacio Lago
- added;
TextArray
andNumberArray
field types, thanks bardzusny - added; Markdown editor headers buttons and customisation, thanks Alberto Gasparin
- added;
filename
andformat
optionss for the s3file field, thanks Aleksej Kamynin - added; Support for array values for
less
andsass
options (allows multiple paths to be specified) - fixed; Invalid field types throw errors on init, making debugging easier
- fixed; Keystone throws a warning when you add fields to a List that are implemented by the
track
option - fixed; Errors returned by schema.pre('remove') middleware don't display in the Admin UI, thanks Ian Dilling
- fixed; Minor issued with the WYSIWYG editor in the Admin UI
- fixed; Do not crash process for schema validation errors, thanks David Banham
- fixed; localfiles implementation, thanks Darkin8
- fixed; whitespace issues in the Admin UI when in production mode
- added; proper ascending / descending UI for tracking sort
- added; sorting UI for tracking date fields
- added; can toggle display of created / updated dates in list view
- added; displaying tracked metadata in the Admin UI
- added; displaying current user in the footer
- fixed; cross-platform issues moving files into place, thanks Alan Shaw
- fixed; sortOrder type detection, thanks Darkin8
- fixed; use buttons where possible for accessibility
- added; thumbnail for embedly fields, thanks Pavel Vlasov
- fixed; various cloudinary issues, thanks Johnny Estilles
- added;
cloudinary folders
option, thanks Johnny Estilles - added; ability to filter relationship by any input field or _id, thanks Johnny Estilles
- fixed; notes are now displayed for name fields, thanks Ignacio Lago
- added; support for csrf headers, thanks Johnny Estilles
- fixed; consistency issues with
noedit
andinitial
options for fields - fixed; issues retaining entered values in the Admin UI's create form after validation failures
- fixed; all remaining jshint warnings :)
- fixed; exception when deleting item that has many-many relation from list view, thanks Thomas Pedersen
- fixed; issues related to sortOrder calculation, thanks Alberto Gasparin
- updated; Markdown visual editor (bootstrap-markdown.js) to (v2.5.0), thanks Alberto Gasparin
- improved; createItems is more robust when linking new items, thanks Carlos Colon
- fixed; remaining link to create new items when a list is set to
nocreate
- fixed; Field
watch
option issues, thanks Markus Padourek - added; more options to customise the WYSIWYG editor toolbar, thanks Michael Abadilla
- improved; users can no longer delete themselves, thanks Brett Newman
- added; new option
mongo replica set
for using a MongoDB Replica Set, thanks Ivan Fuyivara - added;
csv field delimiter
option to specify a custom CSV field delimiter, thanks Louis-Michel Couture - improved; redirects and error handlers are now the last items set up in
keystone.mount()
, thanks Brett Newman
- added; 'today' button in the datepicker for quick selection of the current day, thanks Markus Padourek
- fixed; linked to/not linked to toggle not respecting currently applied filter
- added; new
track
option forList
that enables tracking of standard metadata on documents, includingcreatedAt
,createdBy
,modifiedAt
,modifiedBy
, thanks Johnny Estilles - added;
_req_user
property is available on documents inpre('save')
middleware when theUpdateHandler
is used (which includes updates in the Admin UI), thanks Johnny Estilles - fixed; edge-case errors in
lib/core/mount
, thanks Johnny Estilles - fixed; AzureFile upload error, thanks Emmanuel Nelson
- added; more details, including document name, included for relationship fields in CSV download, thanks Michael Abadilla
- improved; general UI and code clean up
- fixed; regression of ipRangeRestrict option
- fixed; path nesting for
Boolean
fields works correctly - added;
additionalPlugins
andadditionalOptions
options forwysiwyg
fields - fixed; static value support for
Relationship
fieldfilters
option, thanks Johnny Estilles
- fixed; issue #492 - errors uploading to cloudinary fields, thanks Johnny Estilles
- fixed; issues starting with SSL
- fixed; issues saving location field values
- fixed; filtering on select fields was broken in the Admin UI
- added; list totals are recalculated after items are deleted, thanks Johnny Estilles
- added; feature to select images from cloudinary, thanks Johnny Estilles
- fixed; issues with field required / initial validation, thanks Oleg Shparber
- fixed; better handling of default / alt behaviour for remove / delete functionality with cloudinary fields
- improved; more Admin UI visual tweaks, thanks Joss Mackison
- fixed; allowing nested values to be provided to the UpdateHandler for name and location fields
- added; cloudinary folders feature, enabled with field option
folder
or defaulting to[prefix (if exists)]/[list path]/[path]
, thanks Johnny Estilles - added; ability to specify a field to use as the cloudinary public_id, thanks Johnny Estilles
- added; cloudinary image replace on upload option, thanks Johnny Estilles
- fixed; initial sortOrder on a sortable List, thanks Johnny Estilles
- added; ability to read multiple static files from an Array, thanks Mike Grabowski
- added; default values for text fields are displayed in the create items form now, thanks Brandon Taylor
- fixed; autokey being added with a unique index when not specified as unique, thanks trentmillar
- fixed; "bullet-proof" buttons in the email template were breaking because of a b/c in Jade 1.x, thanks Heracles Kasimis
- fixed; view cache issue (see #430), thanks Aleksej Kamynin
- added; new localfiles field type, thanks Tom Kremer
- added; new
file limit
option, passed toexpress.limit
middleware, thanks Fabrizio Fortunato - added; errorMessage option for
UpdateHandler.process()
, thanks Heracles Kasimis - added; support for
connect-mongostore
to support MongoDB replica sets as the session store database, thanks Abe - added; support for Redis as a session store via
connect-redis
- fixed; boolean fields with
default: true
are now checked when creating new items, thanks Aleksandr - updated;
less-middleware
is now updated to version1.0.3
(new API)
With this release, connect-mongo
has been removed from Keystone's package.json
and all three supported session store packages are optional. If you specify one, be sure to include it as a dependency in your project's package.json
(Keystone will warn you on startup if you haven't).
Because of the way npm resolved paths, if you are using Keystone in development mode (via npm link
) and using a session store, you have to npm install <session-store>
in your local Keystone folder as well or it won't find the package.
- updated; Admin UI visual tweaks by Joss Mackison
- added; new CSRF implementation for more granular control
- fixed; several UI and functionality issues with the new list recent-searches feature
- added; S3 file - ability to specify a protocol for the file url, thanks Cosmina
- added;
cookie signin
option to control session persistence - added;
session options
option for better control over keys and stores, also exposes the final configuration afterstart()
is called, thanks killerbobjr - improved; Keystone now throws an error when no cookie secret is provided
- added; recent searches UI and functionality in the Admin UI, thanks Benjamin Lupton
- fixed; strict type checking for field.options.required, see #393
- added;
CloudinaryImage.updateItem()
allows updates from data, thanks webteckie - added; native support for node-sass via the
sass
option, make sure you includenode-sass
in your project dependencies to use it. thanks Fabrizio Fortunato - fixed; field validation methods for location & password fields
- fixed;
keystone.createItems()
now creates items in series, not parallel - added; support for dynamic queries for relationship values in
keystone.createItems()
- added; verbose logging and strict ref checking options for
keystone.createItems()
- improved; performance when using the
id
property as part of a field's autokey
- added; ability to change the filename in Types.LocalFile by specifying the
filename: function() {}
option, thanks Stefan Aebischer - improved; read-only tinyMCE editor is used for htmlFields when noedit is true, thanks Frederic Beaudet
- fixed; Extracting and scoping
keystone.initAPI
to work correctly when used directly as middleware - improved; Added better MongoDB indexes for schemaPlugins
- improved; invalid config handling for fields
- fixed; relationship filters now work correctly
- added; ability to prefix all MongoDB Collection names, thanks David Björklund
- improved; output stack traces with error logs, thanks Benjamin Lupton
- fixed; issues signing in users by UserID directly (introduced in 0.2.18)
- fixed; users without passwords (auth via facebook / github / etc) will not have their sessions persisted outside of the memory store.
- added; support for using MongoDB as the session store. set
'session store': 'mongo'
to enable this feature. - deprecated; support for providing the
mongo
option as an array. Use a MongoDB connection string instead, e.g.'mongodb://localhost/db_name
- added; callbacks passed to
View.render()
are now passederr, req, res
- fixed; console logging is suppressed when the option
logger
isfalse
- fixed; issues relating to session cookies
- fixed; a lot of minor code issues and cleanup
- improved; test coverage
- added; between filtering to date, datetime, money, and number field types, thanks Benjamin Lupton
- added; new color field, thanks Frederic Beaudet
- added; automated unit tests with TravisCI, thanks James Allen and Andri Möll
- added; .jshintrc config and better settings for .editorconfig, thanks James Allen and Benjamin Lupton
- added; code documentation for
/lib/view.js
class, thanks Talon - added; coverage report and default gulp task, thanks James Allen
- fixed; issues with Keystone.prototype.import, see #348, thanks ashleycorker
- fixed; issues with geo handling in Location fields, see #344, thanks mandb
- fixed; Added note to fields that didnt have one, thanks Ötvös Richárd
- fixed; Only show "Open Keystone" link to admins, thanks John Beppu
- fixed; Password fields are formatted correctly on the list screen of the Admin UI
- added; Support for custom MongoDB collection names (and other Schema options, see #292)
- added; Support for clearing password fields (if not required)
- added; Password.compare is now available on the Field object
- added; Support for loading fixture data with
keystone.createItems()
and in update scripts, see this gist for an example - added; Basic support for redirects, see #303 for details
- added; Support for excluding the blank option in Select fields with the
emptyOption
option - improved; Nicer exception on EADDRINUSE error
- added; Warning when required fields aren't initial, see #300
- fixed; Truthy check for port breaks listening on any open port
- fixed; Changed how updates are discovered and included, fixes previous issues with .DS_Store files
- added; test script to package.json, spec reporter for Mocha tests and other test improvements, thanks David Banham
- added; cookie secret to environment defaults init, thanks Tom Walker
- added; separated Express setup from http server setup to enable easier Express sub-app mounting, thanks ryedin
- fixed; Errors are caught on item deletion, thanks fbeaudet
- fixed; Issues where
Email.send()
wasn't consistently async - added; Support for the argument
row
in customList.schema.methods.toCSV
implementations, provides the originaltoCSV
data for simpler customisation
...as well as several other miscellaneous fixes and improvements, thanks to all our contributors who keep making Keystone better!
Also; all dependencies are up to date with their latest published versions, except for express
and less-middleware
which require further testing to ensure compatibility.
- added; new
createItems()
method to quickly populate data, see this gist for usage instructions and examples - improved;
.toCSV()
method for lists now uses dependency injection and can be asynchronous (just passcallback
as the last argument) - added; basic implementation of field watching
- fixed; issue with dateTime fields not updating correctly
- added;
perPage
option for lists that controls the number of items displayed per page in the Admin UI, thanks Galaczi Endre Elek - added; gulp, and more tests! thanks Morgan Craft
- improved; link fields are now anchors in the Admin UI list view, thanks DrMoriarty
- fixed; height of admin header and signout link placement with a lot of lists in the navigation, thanks Ötvös Richárd
- added; support for adding additional toolbar buttons to tinymce, thanks Eric
- added;
onHttpServerCreated
andonHttpsServerCreated
events now fired duringkeystone.start()
, allows for integration of things like socket.io
- added; initial field support for HTML and Markdown fields
- improved; some client-side scripts (e.g. TinyMCE) are no longer included when they're not going to be used
- added;
.toCSV()
method now supported on schemas to transform data when exported in the Admin UI - added; image and uploadimage plugin support for TinyMCE
- added; cloudinary upload api for generic image uploads, thanks Branko Sekulic
- added; csrf middleware support, thanks Lasana Murray
- added;
express
is now available as a property ofkeystone
- added; optional support for a the
S3_REGION
environment variable, thanks DrMoriarty - added; IP address range restrictions, thanks Robert Medeiros
- added; support for express
trust proxy
setting, thanks Robert Medeiros - fixed; Boolean field notes were being escaped incorrectly
- added; new
AzureFile
field type, thanks Juan Benavides Romero - added; new toolbar and preview mode for
Markdown
fields, thanks Thomas Pedersen - fixed; issue with the 'new item' button on the item details page in the Admin UI triggering autocreate functionality incorrectly, thanks Thomas Pedersen
- fixed; redirect parameter for signin page now protects against open redirect attacks, thanks Oliver Jenkins
- fixed; 'host is undefined' issue with certain configurations, see #241
- fixed; accented characters are converted correctly when generating slugs, thanks to keystone-utils 0.1.7
(emergency version bump from 0.2.9 because of white-space issue with new Jade version)
- fixed; issues getting path options correctly on Windows (was causing update issues)
- fixed; support for tagging images uploaded to Cloudinary client-side in the Admin UI for
CloudinaryImages
fields, thanks Mike Causer - improved; filtering on
Number
fields can now find null values - fixed; height option now supported on
Markdown
andTextarea
field types - added; support for
PUT
andDELETE
http methods inView.on
- fixed; minor issues to improve auto-creation of items
- improved; ability to chain
keystone.pre
,keystone.init
,keystone.start
,keystone.static
,keystone.routes
andkeystone.bindEmailTestRoutes
- improved; callbacks / error handling in View class
- improved; handling of MongoDB errors before app starts (now much more debuggable)
- added; field notes are now parsed using
marked
so you can use markdown syntax if desired - added; new field type
Code
, uses the CodeMirror editor in the Admin UI, thanks Juan Benavides Romero - fixed; error thrown when requesting an invalid page in the Admin UI list view
- fixed; correctly trigger mongoose middleware when removing items, thanks Chris Dion
- added; ability to use custom paths for updates (issue #205)
- added; optional callback to View.render (issue #215)
- improved; tweaked some option keys, added a warning for deprecated options
- added; ability to specify signin and signout redirect paths or functions
- added; https server and ssl configuration now supported by keystone.start(), thanks snowkeeper
- improved; tweaks to native signin UI, thanks jossmackison
This version also contains the new docs and website developed by @jossmackison and @jedwatson. To view the docs locally, open keystone/docs
and run node docs
.
- improved; implementation of
hidden
option for fields - improved; refactored the Email class and implemented friendlier errors
- improved; email test route binding, including ability to use a function to provide template locals to tests
- added; custom template support in the Email class
- added; email button mixin supports default styling and style overrides
- improved; email locals and options can be combined in a single object argument
- fixed; location field auto-improve error
- fixed; relationship fields display old ID when related item is missing, thanks Mark Bayfield
- added;
autocreate
option for Lists (see issue #21) - improved; signin page looks better when you're alredy signed in
- improved;
location.requiredPaths
field option supports comma-delimited values - improved;
UpdateHandler
now updatesnoedit
fields when they are explicitly provided (issue #194) - added; ability to specify custom validation / required messages in the UpdateHandler (issue #195)
- added; ability to provide custom lists of required fields to the
UpdateHandler
(issue #196)
- improved; dropdown styles are nicer
- improved; default signin ui tweaks
- improved; hidden lists warn when included in
nav
config option - fixed; hidden lists are accessible through the API
- improved; warnings are thrown when autokey option config is invalid
- improved; autokey values are now included in CSV exports
- improved; markdown and html fields render nicely in the Admin UI list view
- improved; new sign in/out screen design, thanks jossmackison
- improved; the default error screen is now responsive, thanks jossmackison
- improved; additional supported file types for CloudinaryImage fields, thanks James Allen
- Supported types are [
image/gif
,image/png
,image/jpeg
,image/bmp
,image/x-icon
,application/pdf
,image/x-tiff
,image/x-tiff
,application/postscript
,image/vnd.adobe.photoshop
]
- Supported types are [
- improved; you can now use Relationship fields with
multi: true
asinitial
fields - added; Relationship fields can now be used as filters in the Admin UI
- fixed; scope issue in Relationship field type, thanks Tom Walker
- added; new
localFile
field type, thanks Alan Shaw - added;
hidden: true
option for lists - fixed; uploading works again for
cloudinaryImages
fields
- fixed; "moment not defined" error in S3File field type, thanks Olivier Vaillancourt
- added; ability to define attachments to emails via Mandrill, thanks Tom Walker
- improved; log formatting and error output
- fixed; default 404 handling, thanks Lepi
- added; new
keystone.import(path)
method for recusrively requiring all.js
/.coffee
files in a path relative to the project root, e.g.keystone.import('models')
. Similar to but simpler thankeystone.importer()
. - improved; the default 404 and 500 error handlers have been cleaned up, and have a simple HTML template
- added; filtering now implemented for location fields
- improved; the list download > csv feature in the Admin UI now respects the current filters
- added; more flexible environment variable defaults for mongo connection strings. It supports
env.MONGO_URI
,env.MONGO_URL
,env.MONGOLAB_URI
andenv.MONGOLAB_URL
, so whatever default you're using, it should be there. - added; the http server is now accessible as
keystone.httpServer
, thanks B. August - added; pre upload queue for s3file field type (set the
pre.upload
option, or call{list}.fields.{s3filefield}.pre('upload', ...)
) - added; initial (create form) support for location fields
- added; initial (create form) support for markdown fields, thanks Jimmy Hillis
- improved; much more flexible support for http server startup options, see #154
A bumper release for the new year! We've moved to v0.2.x because some packages have been updated to new minor versions that may cause compatibility issues, specifically:
KeystoneJS now requires mongoose 3.8.5+. Please test compatibility with your application before deploying this update to production.
This version also requires Jade 1.x, which includes some breaking changes from the 0.x branch, particularly to doctype definition. Updating your app should be simple, but again, be sure to test before deploying to production.
One of the other big changes in this release is the work done by Iulian Meghea breaking up all the field templates into individual files, in preparation for introducing field type plugins in the future.
- lots of website, readme and documentation improvements
- fixed; potential issue with flash errors erroring with TypeError: Cannot read property 'flash' of undefined, thanks James Allen
- improved; Add options to s3file field type to support allowedTypes, thanks James Allen
- added; host option to specify the ip address to listen on, thanks Jose Carvajal
- improved; better error handling, see #144
- fixed; placeholder for items without a name when creating a relationship in the admin UI, see #117
- fixed; keystone error on blank date / date time fields, thanks Mark Bayfield
- fixed; columns filter button position in development env, thanks Mike Causer
- added; mongo connection defaults, see #124
- improved; sign-out page text
- fixed; hard-to-debug errors in schemaPlugins when callbacks are omitted
- fixed; compatibility for location auto-improve w/ mongoose 3.8.2+
- added; gravatar functionality for email fields, including gravatar display in the Admin UI's list and edit views, and a
gravatarUrl
underscore method, thanks Mike Causer - fixed; try/catch for missing Pre-route middleware, thanks Mark Bayfield
- fixed; .env defaults for s3 config, see #143
- fixed; check for cloudinary config when
CloudinaryImage
fields are initialised, see #28 - added; current KeystoneJS version displayed in footer of Admin UI, see #130
- updated; marked v0.3.0
- updated; mongoose v0.8.5
- updated; keystone-utils v0.1.5
- updated; jade v1.1.5
- updated; async v0.2.10
- updated; moment v2.5.1
- updated; less-middleware v0.1.15
- fixed; incompatibility with mongoose 3.8.2+ for location fields has been resolved, thanks jbalde
- fixed; compatibibility issues with Jade 1.0.0, preparing for update
- improved; nicer default .env keys for mandrill and embedly api key config, falls back to legacy / heroku default key names
- fixed; problem with the new options implementation when cloudinary is not used
- fixed; correctly escaping HTML entities in names through the API
- updated; keystone-utils to 0.1.4
- fixed; better implementation of cloudinary config, fixes #69
- improved; more robust / consistent initialisation of options with process.env variables
- added; new
custom engine
option for using view engines not natively supported byexpress
, thanks JeremyFouriaux
- improved; the updateHandler will now allow required fields to be omitted from input data when an item already has a value for the field
- improved; relationship fields now support custom labels and notes, thanks mbayfield
- fixed; support for
heading
as a field path, thanks mbayfield
- fixed; res.apiError was broken (when using
keystone.initAPI
) - fixed; minor tweaks to the Email class and default template
- updated; keystone-utils to 0.1.3
- added;
moment
andparse
underscore methods for thedate
anddatetime
fields - fixed; bugs searching lists with name fields in the admin ui
- fixed; sorting by name fields in the admin ui was not working correctly
- added; you can now provide a
paths
option to theUpdateHandler
to map custom field names to item field paths for processing - improved; default email templates have been redesigned, with new theme options and defaults, thanks jossmackison
- improved; s3file fields expose a direct
uploadFile
underscore method, for use outside of anupdateHandler
, thanks bladey - fixed; support for extended characters in utils.pathToLabel (via
keystone-utils
), thanks itzaks
- added; new
s3file
field, thanks bladey
- added; new
list.getUniqueValue(path, generator, limit, callback)
method - added; lots of new documentation in the website
- fixed; updating relationship fields from arrays
- improved; updates to the Email class, adding default email templates (based on VIRB Ink, currently very basic)
- removed; br() method from Email template locals (vendor prefixes not necessary in modern browsers anymore)
If you are currently using the br
method in your email templates, make sure it is removed or your templates will break.
Note: To run the docs website locally, go to /docs
and run node web
. It will start up at http://localhost:8080
- misc bug fixes
- added; new
markdown
field type - improved; massive enhancements to the
cloudinaryimage(s)
fields, thanks bladey
- added;
keystone.content
class and the start of a page-content management framework - added; new functionality for integrating front-end editing
- fixed; minor issues with the list controls in the admin UI
- fixed; passing populateRelated string as 3rd argument of View.query
- improved; support for detecting presence of
req.body
/req.query
keys onView.on('post' || 'get')
- added; support for callbacks in the
keystone.View
class. available callbacks areerr
(when the first argument returned by the query callback is not null, takes a single argument which is the error),none
(when the results array is empty or the results argument is null),then
(called unlesserr
ornone
is present and called, takes three arguments:err
,results
,next
)- e.g.
view.query(as, query, { err: errorHandlerCallback, none: noResultsCallback })
or view.query(as, query).none(noResultsCallback).then(defaultCallback)
- e.g.
- added; autokey now supports a
unique
option- set to
true
for unique keys within the whole collection, or a filters object for unique keys within a specific set of documents
- set to
- improved; document id is now hidden in favour of the autokey (if there is one)
- press
alt
to see the document id
- press
- added; you can now navigate to the linked document in a relationship field (only updated on load, for now)
- improved; the
utils
library has been moved to its own npm package,keystone-utils
- changed; default date format changed from
YYYY-MM-DD
toDo MMM YYYY
, it's friendlier- the
format
option forDate
andDatetime
fields can be used to override this setting on a per-field basis
- the
- added; ability to use dependsOn with headers, thanks itzaks
- new syntax is
{ heading: 'Heading with dependency', dependsOn: { field: 'value'} }
- new syntax is
- added; url parameter for the admin list view that updates all items in a list, optionally with data
/keystone/list?update
/keystone/list?update={"field":"value"}
- added; ability to override
changedOn
value when using thestandard meta
fields - fixed; cell overflow is now hidden in the admin list view
- added; support for additional cloudinary transformations
- added; support for passing options to cloudinary transformation shortcut underscore methods
- fixed; the default field validator now trims strings before testing for length when determining validity
- changed; mongoose >3.6.20 is now required, allowing usage of 3.8 +
- improved; added webp and progressive jpeg options to
cloudinaryimage
field - improved; added ability to pass options to
cloudinaryimage
underscore shortcuts (limit
,fill
, etc.) - fixed; underscoreMethods for fields that implement their own addToSchema method (were missing .format, etc)
- improved;
format
function forlocation
fields now supports a list of fields to include
- added; new embedly field type
- added; client-side deleting of items in the list view
- added; ability to use custom validation methods with updatehandlers
- improved; autokeys can now build a key from multiple paths, and support format strings
- improved; autokeys now understand virtual paths (and will always regenerate if one is detected)
- improved; default format settings for uneditable date fields
- fixed; incorrect path in public underscore.map file
- site; minor updates
- changed; switched to bcrypt-nodejs module becase of build issues on windows, thanks sullivanpt
- improved; added intelliJ project files to .gitignore, thanks sullivanpt
- fixed; utils.htmlToText was removing without adding a space
- added; coffeescript file support in the importer, thanks itzaks