Releases: keystonejs/keystone
✨ 15th June 2021
What's New
Keystone Next now has a new core 🤖, unblocking many of the features you’ve been waiting for!
After months of work deep in the codebase, it’ll be much easier for us to ship roadmap features like custom field types, GraphQL Schema extensions, and more.
"@keystone-next/admin-ui-utils": "5.0.2",
"@keystone-next/auth": "27.0.0",
"@keystone-next/cloudinary": "6.0.0",
"@keystone-next/fields-document": "7.0.0",
"@keystone-next/fields": "11.0.0",
"@keystone-next/keystone": "20.0.0",
"@keystone-next/test-utils-legacy": "21.0.0",
"@keystone-next/types": "20.0.0",
"@keystone-next/utils-legacy": "12.0.0",
"@keystone-ui/core": "3.1.0",
"@keystone-ui/fields": "4.1.1",
"@keystone-ui/segmented-control": "4.0.1",
New Core 🤖
The core of Keystone has been re-implemented to make building fields and new features in Keystone easier. While the observable changes for most users should be minimal, there could be breakage 🤖.
@keystone-next/fields
package for inspiration on how to do this.
Password tweaks 🔒
The password
field type now adds a GraphQL type PasswordState
to the GraphQL output type instead of adding ${fieldKey}_is_set
, exposing a isSet
boolean.
type User {
password: PasswordState
}
type PasswordState {
isSet: Boolean!
}
Access control operations 👑
List level create
, update
and delete
access control is now called for each operation in a many operation rather than on all of the operations as a whole.
This means that rather than receiving originalInput
as an array with itemIds
, your access control functions will always be called with just an itemId
and/or originalInput
(depending on which access control function it is).
itemIds
and originalInput
as an array, to fix that, you should stop handling that case).
In addition, filters returned from access control now go through GraphQL validation and coercion like filters that you pass in through the GraphQL API, this will produce better errors when you return invalid values.
Virtual field input 🔣
The API to configure virtual
fields has changed to accept a field
using the schema
API exported from @keystone-next/types
rather than GraphQL SDL.
Schema reorder 🍡
The ordering of relationships fields in the generated Prisma schema has changed so that it aligns with the order specified in the list config with the opposites to one-sided relationships added at the end.
The name of one-to-one and one-to-many relationships has also changed to include _
between the list key and field key to align with many-to-many relationships.
schema.prisma
file will need to be updated with keystone-next dev
or keystone-next postinstall --fix
.
Text and integer filtering 🪡
A long awaited feature, you can now find an item by a unique field! Filtering now works for text
and integer
fields that have isUnique: true
set, for example:
query {
Post(where: { slug: "something-something-something" }) {
id
title
content
}
}
UI Accessibility 🏷️
A number of updates have been made in this release to improve accessibility in the Admin UI — updates to the DatePicker
labels, relationship fields and more, including visual updates to the segment control (when no value is selected).
Prisma update ⬆️
We've updated our Prisma dependencies to 2.24.1
, check out the Prisma releases page for more information.
Enjoying Keystone?
Star this repo 🌟 ☝️ or connect to Keystone on Twitter and in Slack.
View verbose release notes
Releases
@keystone-next/auth@27.0.0
Major Changes
-
#5665
a3b07ea16
Thanks @mitchellhamilton! - The core of Keystone has been re-implemented to make implementing fields and new features in Keystone easier. While the observable changes for most users should be minimal, there could be breakage. If you implemented a custom field type, you will need to change it to the new API, see fields in the@keystone-next/fields
package for inspiration on how to do this. -
#5665
a3b07ea16
Thanks @mitchellhamilton! - The way that the implementations ofgenerateHash
andcompare
are passed from the password field to auth has changed to be in the extensions object of the GraphQL output field. Unless you've written your own password field implementation or you're using mismatching versions of @keystone-next/auth and @keystone-next/fields, this won't affect you.
Patch Changes
- Updated dependencies [
a3b07ea16
,7eabb4dee
,df7d7b6f6
,5227234a0
,a3b07ea16
,e4c19f808
,4995c682d
,a3b07ea16
,a3b07ea16
,a3b07ea16
,a3b07ea16
,a3b07ea16
,881c9ffb7
,ef14e77ce
,df7d7b6f6
,a3b07ea16
,84a5e7f3b
,a3b07ea16
,a3b07ea16
,a3b07ea16
,8958704ec
,a3b07ea16
,97fd5e05d
,a3b07ea16
]:- @keystone-next/keystone@20.0.0
- @keystone-next/fields@11.0.0
- @keystone-next/types@20.0.0
- @keystone-ui/fields@4.1.1
- @keystone-ui/core@3.1.0
- @keystone-next/admin-ui-utils@5.0.2
@keystone-next/cloudinary@6.0.0
Major Changes
- #5665
a3b07ea16
Thanks @mitchellhamilton! - The core of Keystone has been re-implemented to make implementing fields and new features in Keystone easier. While the observable changes for most users should be minimal, there could be breakage. If you implemented a custom field type, you will need to change it to the new API, see fields in the@keystone-next/fields
package for inspiration on how to do this.
Patch Changes
✨ 2nd June 2021
What's New
We have a new JSON field ✨, a bunch of new learning resources, and plenty of under the hood optimisations in this big release. 💪
JSON Field 👩🏻💻
Thanks to the new json
field, you can now represent JSON blobs in your backend. Check out the JSON example project to learn more.
Package: list({
fields: {
pkgjson: json({ isRequired: true }),
isPrivate: checkbox(),
ownedBy: relationship({ ref: 'Person.packages', many: false }),
},
}),
More Learning Resources 🧑🏫
In addition to the JSON one above, we added new examples for:
- Setting Default Values for fields.
- Extending the GraphQL Schema with custom queries and mutations.
We also published a tutorial that shows you how to embed Keystone and SQLite in a Next.js app. The end result is an app with a queryable GraphQL endpoint based on your Keystone schema that you can run live on Vercel – for free! 🚀
sortBy
deprecated with improvements to orderBy
🤹♂️
We deprecated the sortBy
GraphQL filter and updated the orderBy
GraphQL filter with an improved API.
Previously a User
list's allUsers
query would have the argument:
orderBy: String
The new API gives it the argument:
orderBy: [UserOrderByInput!]! = []
where
input UserOrderByInput {
id: OrderDirection
name: OrderDirection
score: OrderDirection
}
enum OrderDirection {
asc
desc
}
Rather than writing allUsers(orderBy: "name_ASC")
you now write allUsers(orderBy: { name: asc })
. You can also order by multiple fields, e.g. allUsers(orderBy: [{ score: asc }, { name: asc }])
.
Note: each UserOrderByInput
must have exactly one key, or else an error will be returned.
withItemData
replaced with sessionData
🔧
We removed withItemData
in favour of a sessionData
option to the createAuth()
function.
Previously, withItemData
would be used to wrap the config.session
argument:
import { config, createSchema, list } from '@keystone-next/keystone/schema';
import { statelessSessions, withAuthData } from '@keystone-next/keystone/session';
import { text, password, checkbox } from '@keystone-next/fields';
import { createAuth } from '@keystone-next/auth';
const { withAuth } = createAuth({
listKey: 'User',
identityField: 'email',
secretField: 'password',
});
const session = statelessSessions({ secret: '-- EXAMPLE COOKIE SECRET; CHANGE ME --' });
export default withAuth(
config({
lists: createSchema({
fields: {
email: text({ isUnique: true }),
password: password(),
isAdmin: checkbox(),
},
}),
session: withItemData(session, { User: 'id isAdmin' }),
}),
})
);
Now, the fields to populate are configured on sessionData
in createAuth
, and withItemData
is completely removed. 🧹
import { config, createSchema, list } from '@keystone-next/keystone/schema';
import { statelessSessions } from '@keystone-next/keystone/session';
import { text, password, checkbox } from '@keystone-next/fields';
import { createAuth } from '@keystone-next/auth';
const { withAuth } = createAuth({
listKey: 'User',
identityField: 'email',
secretField: 'password',
sessionData: 'id isAdmin',
});
const session = statelessSessions({ secret: '-- EXAMPLE COOKIE SECRET; CHANGE ME --' });
export default withAuth(
config({
lists: createSchema({
fields: {
email: text({ isUnique: true }),
password: password(),
isAdmin: checkbox(),
},
}),
session,
}),
})
);
More consistent and predictable createItems
, updateItems
, and deleteItems
mutations 🧘♀️
We fixed the behaviour of createItems
, updateItems
, and deleteItems
mutations to be consistent and predictable.
Previously, these mutations could return items in an arbitrary order. They now return items in the same order they were provided to the mutation.
Previously, if there was an error (e.g. validation) on one or more of the items – the return value would be null
and a single top level error would be returned. The state of the database in this case was non-deterministic.
The new behaviour is to return values for all items created, with null
values for those that had errors. These errors are returned in the errors
array and have paths which correctly point to the null
values in the returned array. All the valid operations will be completed, leaving the database in a deterministic state.
Previously, if items were filtered out by declarative access control, then no error would be returned, and only those accessible items would be returned. Now the returned data will contain null
values for those items which couldn't accessed, and the errors
array will contain errors with paths which correctly point to the null
values in the returned array.
Previously, if static access control denied access to the mutation, then null
was returned, and a single error
was returned. Now, an array of null
s is returned, with a separate error for each object. This makes the behaviour of static and declarative access control consistent.
Counts Improved 🔢
The GraphQL field _all<path>Meta { count }
generated for many
relationships has been deprecated in favour of a new field <path>Count
, which directly returns the count.
A posts
relationship field would have the following field added to the API:
postsCount(where: PostWhereInput! = {}): Int
Prisma updated to 2.24.0
⬆️
We've updated our Prisma dependency from 2.22.1
to 2.24.0
! Check out the Prisma release notes for more details.
Credits 🎉
-
Thanks @jonowu for adding a
sameSite
option to the session options for cookies. Can be one of true, false, 'strict', 'lax' or 'none' as per Mozilla docs. See the PR for more details! -
Thanks @gabrielkuettel for fixing a typo Database Items API page!
Enjoying Keystone?
Star this repo 🌟 ☝️ or connect to Keystone on Twitter and in Slack.
View verbose release notes
Releases
@keystone-next/auth@26.0.0
Major Changes
-
#5806
0eadba2ba
Thanks [@list({](https://github.com/list({), [@list({](https://github.com/list({)! - RemovedwithItemData
in favour of asessionData
option to thecreateAuth()
function.Previously,
withItemData
would be used to wrap theconfig.session
argument:import { config, createSchema, list } from '@keystone-next/keystone/schema'; import { statelessSessions, withAuthData } from '@keystone-next/keystone/session'; import { text, password, checkbox } from '@keystone-next/fields'; import { createAuth } from '@keystone-next/auth'; const { withAuth } = createAuth({ listKey: 'User', identityField: 'email', secretField: 'password', }); const session = statelessSessions({ secret: '-- EXAMPLE COOKIE SECRET; CHANGE ME --' }); export default withAuth( config({ lists: createSchema({ fields: { email: text({ isUnique: true }), password: password(), isAdmin: checkbox(), }, }), session: withItemData(session, { User: 'id isAdmin' }), }), }) );
Now, the fields to populate are configured on
sessionData
increateAuth
, andwithItemData
is completely removed.import { config, createSchema, list } from '@keystone-next/keystone/schema'; import { statelessSessions } from '@keystone-next/keystone/session'; import { text, password, checkbox } from '@keystone-next/fields'; import { createAuth } from '@keystone-next/auth'; const { withAuth } = createAuth({ listKey: 'User', identityField: 'email', secretField: 'password', sessionData: 'id isAdmin', }); const session = statelessSessions({ secret: '-- EXAMPLE COOKIE SECRET; CHANGE ME --' }); export default withAuth( config({ lists: createSchema({ fields: { email: text({ isUnique: true }), password: password(), isAdmin: checkbox(), }, }), session, }), }) );
-
#5787
bb4f4ac91
Thanks @timleslie! - Replacedreq, session, createContext
args toconfig.ui.pageMiddleware
with acontext
arg.
Patch Changes
-
#5766
a2553ab82
Thanks @gwyneplaine! - Added visually hidden labels to signin / welcome fields for better screen reader experience.
✨ 19th May 2021
What's New
Node updates 🚀
Node.JS engines in our packages have been updated to 12.x
and 14.x
to keep up to date with the latest versions of our dependencies.
Admin UI package moved 🚚
@keystone-next/admin-ui
now lives inside @keystone-next/keystone/admin-ui
.
If you were directly importing from @keystone-next/admin-ui
you can now import the same items from @keystone-next/keystone/admin-ui
.
@keystone-next/admin-ui
in your package.json
files.
Enjoying Keystone?
Star this repo 🌟 ☝️ or connect to Keystone on Twitter and in Slack.
View verbose release notes
Releases
@keystone-ui/button@5.0.0
Major Changes
- #5746
19750d2dc
Thanks @timleslie! - Update Node.js dependency to^12.20 || >= 14.13
.
Patch Changes
- Updated dependencies [
19750d2dc
]:- @keystone-ui/core@3.0.0
- @keystone-ui/icons@4.0.0
- @keystone-ui/loading@4.0.0
@keystone-ui/core@3.0.0
Major Changes
- #5746
19750d2dc
Thanks @timleslie! - Update Node.js dependency to^12.20 || >= 14.13
.
@keystone-ui/fields@4.0.0
Major Changes
- #5746
19750d2dc
Thanks @timleslie! - Update Node.js dependency to^12.20 || >= 14.13
.
Patch Changes
- Updated dependencies [
19750d2dc
]:- @keystone-ui/core@3.0.0
- @keystone-ui/icons@4.0.0
- @keystone-ui/popover@4.0.0
@keystone-ui/icons@4.0.0
Major Changes
- #5746
19750d2dc
Thanks @timleslie! - Update Node.js dependency to^12.20 || >= 14.13
.
Patch Changes
- Updated dependencies [
19750d2dc
]:- @keystone-ui/core@3.0.0
@keystone-ui/loading@4.0.0
Major Changes
- #5746
19750d2dc
Thanks @timleslie! - Update Node.js dependency to^12.20 || >= 14.13
.
Patch Changes
- Updated dependencies [
19750d2dc
]:- @keystone-ui/core@3.0.0
@keystone-ui/modals@4.0.0
Major Changes
- #5746
19750d2dc
Thanks @timleslie! - Update Node.js dependency to^12.20 || >= 14.13
.
Patch Changes
- Updated dependencies [
19750d2dc
]:- @keystone-ui/button@5.0.0
- @keystone-ui/core@3.0.0
@keystone-ui/notice@4.0.0
Major Changes
- #5746
19750d2dc
Thanks @timleslie! - Update Node.js dependency to^12.20 || >= 14.13
.
Patch Changes
- Updated dependencies [
19750d2dc
]:- @keystone-ui/button@5.0.0
- @keystone-ui/core@3.0.0
- @keystone-ui/icons@4.0.0
@keystone-ui/options@4.0.0
Major Changes
- #5746
19750d2dc
Thanks @timleslie! - Update Node.js dependency to^12.20 || >= 14.13
.
Patch Changes
- Updated dependencies [
19750d2dc
]:- @keystone-ui/core@3.0.0
- @keystone-ui/fields@4.0.0
- @keystone-ui/icons@4.0.0
@keystone-ui/pill@4.0.0
Major Changes
- #5746
19750d2dc
Thanks @timleslie! - Update Node.js dependency to^12.20 || >= 14.13
.
Patch Changes
- Updated dependencies [
19750d2dc
]:- @keystone-ui/core@3.0.0
- @keystone-ui/icons@4.0.0
@keystone-ui/popover@4.0.0
Major Changes
- #5746
19750d2dc
Thanks @timleslie! - Update Node.js dependency to^12.20 || >= 14.13
.
Patch Changes
- Updated dependencies [
19750d2dc
]:- @keystone-ui/core@3.0.0
@keystone-ui/segmented-control@4.0.0
Major Changes
- #5746
19750d2dc
Thanks @timleslie! - Update Node.js dependency to^12.20 || >= 14.13
.
Patch Changes
- Updated dependencies [
19750d2dc
]:- @keystone-ui/core@3.0.0
@keystone-ui/toast@4.0.0
Major Changes
- #5746
19750d2dc
Thanks @timleslie! - Update Node.js dependency to^12.20 || >= 14.13
.
Patch Changes
- Updated dependencies [
19750d2dc
]:- @keystone-ui/core@3.0.0
- @keystone-ui/icons@4.0.0
@keystone-ui/tooltip@4.0.0
Major Changes
- #5746
19750d2dc
Thanks @timleslie! - Update Node.js dependency to^12.20 || >= 14.13
.
Patch Changes
- Updated dependencies [
19750d2dc
]:- @keystone-ui/core@3.0.0
- @keystone-ui/popover@4.0.0
@keystone-next/admin-ui@15.0.0
Major Changes
-
#5677
e2232a553
Thanks @timleslie! - Consolidated the@keystone-next/admin-ui
package into@keystone-next/keystone
.If you were directly importing from
@keystone-next/admin-ui
you can now import the same items from@keystone-next/keystone/admin-ui
.
If you have@keystone-next/admin-ui
in yourpackage.json
you should remove it.
@keystone-next/admin-ui-utils@5.0.0
Major Changes
- #5746
19750d2dc
Thanks @timleslie! - Update Node.js dependency to^12.20 || >= 14.13
.
Patch Changes
- Updated dependencies [
19750d2dc
]:- @keystone-ui/core@3.0.0
- @keystone-next/types@18.0.0
@keystone-next/auth@25.0.0
Major Changes
-
#5746
19750d2dc
Thanks @timleslie! - Update Node.js dependency to^12.20 || >= 14.13
. -
#5677
e2232a553
Thanks @timleslie! - Consolidated the@keystone-next/admin-ui
package into@keystone-next/keystone
.If you were directly importing from
@keystone-next/admin-ui
you can now import the same items from@keystone-next/keystone/admin-ui
.
If you have@keystone-next/admin-ui
in yourpackage.json
you should remove it.
Patch Changes
✨ 17th May 2021
What's New
Apollo cache hinting can now be configured on a per list or field basis — which can dramatically improve your applications performance 🔥.
Implementing basic authentication? We've got another example using withAuth
from the auth
package to get you started 🔒.
Focus control is now handled better in the Keystone UI, see the PR for the before and after 👀!
Thanks to @cameronbraid for spotting a session issue and resolving it 🐛.
Enjoying Keystone?
Star this repo 🌟 ☝️ or connect to Keystone on Twitter and in Slack.
View verbose release notes
Releases
@keystone-next/test-utils-legacy@18.0.0
Major Changes
- #5694
b1baeaba1
Thanks @timleslie! - TheSetup
type, returned bysetupFromConfig
and passed into test functions inmultiAdapterRunners
now hasconnect
anddisconnect
functions, rather than akeystone
object.
Patch Changes
@keystone-ui/popover@3.1.0
Minor Changes
- #5670
669f0d8ac
Thanks @gwyneplaine! - Added focustrap to the PopoverDialog component, when the PopoverDialog is open, browser focus is now trapped within it till the dialog is closed.
@keystone-next/keystone@17.2.0
Minor Changes
- #5143
1ef9986dd
Thanks @timleslie! - Addedgraphql.cacheHint
configuration for lists and fields.
Patch Changes
-
#5727
737b3e6e5
Thanks @cameronbraid! - Fixed a bug instoredSessions
not correctly identifying the currentsessionId
. -
#5686
62e68c8e5
Thanks @timleslie! - Reduced the explicit dependence on the internal Keystone object when creating context objects. -
#5673
deb7f9504
Thanks @timleslie! - Refactored code to parseconfig.db
. No functional changes. -
Updated dependencies [
62e68c8e5
,deb7f9504
,1ef9986dd
,669f0d8ac
]:- @keystone-next/types@17.1.0
- @keystone-next/admin-ui@14.1.3
@keystone-next/types@17.1.0
Minor Changes
- #5143
1ef9986dd
Thanks @timleslie! - Addedgraphql.cacheHint
configuration for lists and fields.
Patch Changes
-
#5686
62e68c8e5
Thanks @timleslie! - Reduced the explicit dependence on the internal Keystone object when creating context objects. -
#5673
deb7f9504
Thanks @timleslie! - Refactored code to parseconfig.db
. No functional changes.
@keystone-next/admin-ui@14.1.3
Patch Changes
-
#5670
669f0d8ac
Thanks @gwyneplaine! - Patch update to @keystone-ui/popover. -
Updated dependencies [
669f0d8ac
,737b3e6e5
,62e68c8e5
,deb7f9504
,1ef9986dd
]:- @keystone-ui/popover@3.1.0
- @keystone-next/keystone@17.2.0
- @keystone-next/types@17.1.0
@keystone-next/auth@24.0.0
Patch Changes
- Updated dependencies [
737b3e6e5
,62e68c8e5
,deb7f9504
,1ef9986dd
,669f0d8ac
]:- @keystone-next/keystone@17.2.0
- @keystone-next/types@17.1.0
- @keystone-next/admin-ui@14.1.3
@keystone-next/example-with-auth@1.0.0
Major Changes
- #5612
5606e5965
Thanks @timleslie! - Initial version of thewithAuth
example.
Patch Changes
- Updated dependencies [
737b3e6e5
,62e68c8e5
,deb7f9504
,1ef9986dd
]:- @keystone-next/keystone@17.2.0
- @keystone-next/auth@24.0.0
@keystone-next/example-auth@3.0.3
Patch Changes
- Updated dependencies [
737b3e6e5
,62e68c8e5
,deb7f9504
,1ef9986dd
,669f0d8ac
]:- @keystone-next/keystone@17.2.0
- @keystone-next/admin-ui@14.1.3
- @keystone-next/auth@24.0.0
@keystone-next/app-basic@3.0.4
Patch Changes
- Updated dependencies [
737b3e6e5
,62e68c8e5
,deb7f9504
,1ef9986dd
,669f0d8ac
]:- @keystone-next/keystone@17.2.0
- @keystone-next/types@17.1.0
- @keystone-next/admin-ui@14.1.3
- @keystone-next/auth@24.0.0
@keystone-next/example-ecommerce@3.0.3
Patch Changes
- Updated dependencies [
737b3e6e5
,62e68c8e5
,deb7f9504
,1ef9986dd
,669f0d8ac
]:- @keystone-next/keystone@17.2.0
- @keystone-next/types@17.1.0
- @keystone-next/admin-ui@14.1.3
- @keystone-next/auth@24.0.0
keystone-next-app@0.0.9
Patch Changes
- Updated dependencies [[
737b3e6e5
](h...
✨ 11th May 2021
What's New
A bunch of admin UI tweaks in this release 🖥️, among other minor fixes. We also have the initial stages of a new blog example and a sweet new admin UI logo.
Enjoying Keystone?
Star this repo 🌟 ☝️ or connect to Keystone on Twitter and in Slack.
View verbose release notes
Releases
@keystone-next/fields@8.2.0
Minor Changes
- #5630
79a0844b9
Thanks @mitchellhamilton! - Addedui.displayMode: 'count'
tomany
relationship fields
Patch Changes
-
#5629
11814ce98
Thanks @gwyneplaine! - Updated docs link to next.keystonejs.com. -
#5639
400d88257
Thanks @timleslie! - Fixed Admin UI issues when usingselect
fields withdataType: 'integer'
. -
#5622
bb8920843
Thanks @timleslie! - Disabled sorting for relationship fields. -
Updated dependencies [
3aea3b12f
,11814ce98
,b0a72a112
,2b3efc8a8
,fc9c3d55d
,dbe831976
,53225b0ef
,79d092afc
]:- @keystone-next/admin-ui@14.1.2
- @keystone-ui/core@2.0.3
@keystone-ui/core@2.0.3
Patch Changes
- #5642
dbe831976
Thanks @malitov! - Added hover state to theOptionPrimitive
in Admin UI and updated css colors
@keystone-ui/options@3.0.1
Patch Changes
-
#5642
dbe831976
Thanks @malitov! - Added hover state to theOptionPrimitive
in Admin UI and updated css colors -
Updated dependencies [
dbe831976
]:- @keystone-ui/core@2.0.3
@keystone-next/admin-ui@14.1.2
Patch Changes
-
#5666
3aea3b12f
Thanks @gwyneplaine! - Prettified the logo in the admin-ui. -
#5629
11814ce98
Thanks @gwyneplaine! - Updated docs link to point to next.keystonejs.com. -
#5623
b0a72a112
Thanks @timleslie! - Improved the default value forui.initialColumns
to show the first three fields, rather than just the label field. -
#5633
2b3efc8a8
Thanks @gwyneplaine! - Added minor fixes to filters dialog. -
#5655
fc9c3d55d
Thanks @JedWatson! - Fixed navigation margin when session isn't configured -
#5642
dbe831976
Thanks @malitov! - Added hover state to theOptionPrimitive
in Admin UI and updated css colors -
#5631
53225b0ef
Thanks @gwyneplaine! - Fixed cache querying logic and added explicit query clearing flow to admin-ui. -
#5638
79d092afc
Thanks @timleslie! - Added atitle
value to the create new item button on the dashboard. -
Updated dependencies [
85dfdfb1e
,dbe831976
]:- @keystone-next/keystone@17.1.1
- @keystone-ui/core@2.0.3
- @keystone-ui/options@3.0.1
@keystone-next/auth@23.0.1
Patch Changes
-
#5614
483932276
Thanks @timleslie! - UpdatedwithAuth
to respectconfig.ui.isDisabled
. Now works as expected whenconfig.ui
is undefined. -
#5624
868d89f29
Thanks @timleslie! - Disabled theForgot your password
button on the signin page, which is not yet functional. -
Updated dependencies [
3aea3b12f
,11814ce98
,b0a72a112
,79a0844b9
,11814ce98
,2b3efc8a8
,85dfdfb1e
,fc9c3d55d
,400d88257
,dbe831976
,53225b0ef
,79d092afc
,bb8920843
]:- @keystone-next/admin-ui@14.1.2
- @keystone-next/fields@8.2.0
- @keystone-next/keystone@17.1.1
- @keystone-ui/core@2.0.3
@keystone-next/fields-document@5.0.2
Patch Changes
-
#5618
7e24b9c2a
Thanks @gwyneplaine! - Added logic to ensure the block-menu in the toolbar is hidden when no component blocks or relationships are provided. -
Updated dependencies [
3aea3b12f
,11814ce98
,b0a72a112
,79a0844b9
,11814ce98
,2b3efc8a8
,fc9c3d55d
,400d88257
,dbe831976
,53225b0ef
,79d092afc
, [bb8920843
](bb8920843a1e0d803b8238bd17...
✨ Release - 5th May 2021
What's New
Aside from dependency updates 😴, we added an isIndexed
config option to the text
, integer
, float
, select
, and timestamp
field types.
If you look closely you’ll see the core team working on example projects to share Keystone some best-practices. Keep an eye out for those in the not too distant future 🔮.
Enjoying Keystone?
Star this repo 🌟 ☝️ or connect to Keystone on Twitter and in Slack.
View verbose release notes
Releases
@keystone-next/fields@8.1.0
Minor Changes
- #5616
3d3894679
Thanks @timleslie! - Added anisIndexed
config option to thetext
,integer
,float
,select
, andtimestamp
field types.
Patch Changes
- Updated dependencies [
3d3894679
,8b77b6971
]:- @keystone-next/adapter-prisma-legacy@6.1.0
- @keystone-next/admin-ui@14.1.1
@keystone-next/keystone@17.1.0
Minor Changes
Patch Changes
-
#5601
8b77b6971
Thanks @renovate! - Updated Next.js dependency to^10.2.0
. -
#5592
1043243ff
Thanks @gwyneplaine! - Fixed uncaught exception in file stream. -
Updated dependencies [
3d3894679
,8b77b6971
]:- @keystone-next/fields@8.1.0
- @keystone-next/adapter-prisma-legacy@6.1.0
- @keystone-next/admin-ui@14.1.1
@keystone-next/adapter-prisma-legacy@6.1.0
Minor Changes
- #5616
3d3894679
Thanks @timleslie! - Added anisIndexed
config option to thetext
,integer
,float
,select
, andtimestamp
field types.
Patch Changes
- Updated dependencies [
3d3894679
]:- @keystone-next/fields@8.1.0
@keystone-next/admin-ui@14.1.1
Patch Changes
-
#5601
8b77b6971
Thanks @renovate! - Updated Next.js dependency to^10.2.0
. -
Updated dependencies [
1c0265171
,8b77b6971
,1043243ff
]:- @keystone-next/keystone@17.1.0
@keystone-next/auth@23.0.0
Patch Changes
- Updated dependencies [
1c0265171
,3d3894679
,8b77b6971
,1043243ff
]:- @keystone-next/keystone@17.1.0
- @keystone-next/fields@8.1.0
- @keystone-next/admin-ui@14.1.1
@keystone-next/test-utils-legacy@17.0.2
Patch Changes
- Updated dependencies [
1c0265171
,3d3894679
,8b77b6971
,1043243ff
]:- @keystone-next/keystone@17.1.0
- @keystone-next/adapter-prisma-legacy@6.1.0
@keystone-next/example-todo@3.0.0
Major Changes
- #5591
44c1f9494
Thanks @timleslie! - Simplified the Todo application to just the basics to allow other examples to build on it.
Patch Changes
-
#5594
a3d56570e
Thanks @timleslie! - Updated example projects to only use the sqlite provider. -
#5601
8b77b6971
Thanks @renovate! - Updated Next.js dependency to^10.2.0
. -
Updated dependencies [
1c0265171
,3d3894679
,8b77b6971
,1043243ff
]:- @keystone-next/keystone@17.1.0
- @keystone-next/fields@8.1.0
@keystone-ui/website@2.0.1
Patch Changes
@keystone-next/website@2.0.2
Patch Changes
@keystone-next/example-auth@3.0.2
Patch Changes
-
#5594
a3d56570e
Thanks @timleslie! - Updated example projects to only use the sqlite provider. -
#5601
8b77b6971
Thanks @renovate! - Updated Next.js dependency to^10.2.0
. -
Updated dependencies [
1c0265171
,3d3894679
,8b77b6971
,1043243ff
]:- @keystone-next/keystone@17.1.0
- @keystone-next/fields@8.1.0
- @keystone-next/admin-ui@14.1.1
- @keystone-next/auth@23.0.0
@keystone-next/app-basic@3.0.2
Patch Changes
-
#5594
a3d56570e
Thanks @timleslie! - Updated example projects to only use the sqlite provider. -
#5601
8b77b6971
Thanks @renovate! - Updated Next.js dependency to^10.2.0
. -
Updated dependencies [
1c0265171
,3d3894679
,8b77b6971
,1043243ff
]:- @keystone-next/keystone@17.1.0
- @keystone-next/fields@8.1.0
- @keystone-next/admin-ui@14.1.1
- @keystone-next/auth@23.0.0
@keystone-next/example-ecommerce@3.0.2
Patch Changes
✨ 3rd May 2021
What's New
This release involved a bunch of busywork behind the scenes in Keystone Next 🔧. Stripping away all the things we don't need now that we're using Prisma exclusively. The end of the cleanup is in sight, and we're getting closer to the point where we can start working on some great new features.
Files in Keystone Next 📁. Now you can use Admin UI to upload local files to your repo using SQLite. We also added a maxFileSize
property for easier project config.
Enjoying Keystone?
Star this repo 🌟 ☝️ or connect to Keystone on Twitter and in Slack.
View verbose release notes
Releases
@keystone-next/fields@8.0.0
Major Changes
-
#5578
f7d4c9b9f
Thanks @mitchellhamilton! - Replacedmode
field onImageFieldOutput
GraphQL type with makingImageFieldOutput
an interface and having aLocalImageFieldOutput
type that implementsImageFieldOutput
. -
#5582
49dd46843
Thanks @gwyneplaine! - Changed image ref to now be${mode}:image:${id}
.
Minor Changes
- #5529
b7aeb232d
Thanks @gwyneplaine! - Added file field type.
Patch Changes
-
#5514
8577eb3ba
Thanks @timleslie! - The field hooks API has deprecated theaddFieldValidationError
argument. It has been replaced with the argumentaddValidationError
, and will be removed in a future release. -
#5587
3e33cd3ff
Thanks @timleslie! - Simplified image input resolver. -
Updated dependencies [
b7aeb232d
,7e81b52b0
,fddeacf79
,fdebf79cc
,dbc62ff7c
,05d4883ee
,a0c5aa307
,9fd7cc62a
,b7aeb232d
,49dd46843
,74fed41e2
]:- @keystone-next/admin-ui@14.1.0
- @keystone-next/types@17.0.1
- @keystone-next/adapter-prisma-legacy@6.0.1
- @keystone-next/utils-legacy@10.0.0
- @keystone-next/access-control-legacy@10.0.1
@keystone-next/keystone@17.0.0
Major Changes
- #5582
49dd46843
Thanks @gwyneplaine! - Changed image ref to now be${mode}:image:${id}
.
Minor Changes
- #5570
2df2fa021
Thanks @gwyneplaine! - AddedmaxFileSize
property to keystone config.
Patch Changes
-
#5547
18ae28bde
Thanks @timleslie! - Consolidate the code from the@keystone-next/server-side-graphql-client-legacy
package into the main package. -
#5518
fddeacf79
Thanks @timleslie! - Updated the list item and db item APIs to include an empty default for.findMany()
and.count()
. -
#5522
fbf5f77c5
Thanks @timleslie! - Moved the call tocreateImagesContext
intomakeCreateContext()
. -
#5514
8577eb3ba
Thanks @timleslie! - The field hooks API has deprecated theaddFieldValidationError
argument. It has been replaced with the argumentaddValidationError
, and will be removed in a future release. -
#5523
91e603d7a
Thanks @timleslie! - Moved internal code into subdirectories for easier navigation. -
#5517
a6cdf3da8
Thanks @timleslie! - Fixed a bug using the items API to create/updateimage
field items. -
#5552
a0c5aa307
Thanks @timleslie! - Updatecontext.lists.<list>.count()
to use the GraphQL API rather than directly calling the resolver. -
#5524
ddf51724a
Thanks @timleslie! - Removed un-implemented exportsingleton
fromschema/
. -
#5569
d216fd04c
Thanks @mitchellhamilton! - Refactored implementation of db lists API -
#5515
f76938ac2
Thanks @timleslie! - Simplified the implementation of the images context API. -
Updated dependencies [
b7aeb232d
,b7aeb232d
,f7d4c9b9f
,7e81b52b0
,fddeacf79
,fdebf79cc
,dbc62ff7c
,8577eb3ba
,05d4883ee
,a0c5aa307
,9fd7cc62a
,3e33cd3ff
,b7aeb232d
,49dd46843
,49dd46843
,74fed41e2
]:- @keystone-next/admin-ui@14.1.0
- @keystone-next/fields@8.0.0
- @keystone-next/types@17.0.1
- @keystone-next/adapter-prisma-legacy@6.0.1
- @keystone-next/utils-legacy@10.0.0
- @keystone-next/access-control-legacy@10.0.1
@keystone-next/utils-legacy@10.0.0
Major Changes
- #5582
49dd46843
Thanks @gwyneplaine! - Updated parseImageRef and getRef to accept a different signature for the image ref.
Minor Changes
- #5529 [
b7aeb232d
](https://github.com/...
✨ Release - 20th April 2021
What's New
Improvements to the Lists API
To make the Lists API (i.e context.lists.{List}
) more intuitive to use, we deprecated the resolveFields
option in favour of two new methods 🔧:
1. Specify a string of fields to return with the new query
option:
Use this when you want to query for resolved field values (including querying relationships and virtual fields). This replaces the resolveFields: false
use case. Now you can query a Post like so:
const [post] = await context.lists.Post.findMany({
where: { slug },
query: `
title
content
image {
src
width
height
}`,
});
2. Return the unresolved item data with read hooks
This replaces the resolveFields: boolean
use case. We now have a new set of APIs on context.db.lists.{List}
which return unresolved item data from your database (but with read hooks applied). They can be referenced directly or returned from a custom mutation or query in the GraphQL API to be handled by the Field resolvers.
For example, to query for the raw data stored in the database:
const [post] = await context.db.lists.Post.findMany({
where: { slug },
});
Enjoying Keystone?
Star this repo 🌟 ☝️ or connect to Keystone on Twitter and in Slack.
View verbose release notes
Releases
@keystone-ui/button@4.0.0
Major Changes
- #5397
a5627304b
Thanks @bladey! - Updated Node engine version to 12.x due to 10.x reaching EOL on 2021-04-30.
Patch Changes
- Updated dependencies [
a5627304b
]:- @keystone-ui/icons@3.0.0
- @keystone-ui/loading@3.0.0
@keystone-ui/fields@3.0.0
Major Changes
- #5397
a5627304b
Thanks @bladey! - Updated Node engine version to 12.x due to 10.x reaching EOL on 2021-04-30.
Patch Changes
- Updated dependencies [
a5627304b
]:- @keystone-ui/icons@3.0.0
- @keystone-ui/popover@3.0.0
@keystone-ui/icons@3.0.0
Major Changes
- #5397
a5627304b
Thanks @bladey! - Updated Node engine version to 12.x due to 10.x reaching EOL on 2021-04-30.
@keystone-ui/loading@3.0.0
Major Changes
- #5397
a5627304b
Thanks @bladey! - Updated Node engine version to 12.x due to 10.x reaching EOL on 2021-04-30.
@keystone-ui/modals@3.0.0
Major Changes
- #5397
a5627304b
Thanks @bladey! - Updated Node engine version to 12.x due to 10.x reaching EOL on 2021-04-30.
Patch Changes
- Updated dependencies [
a5627304b
]:- @keystone-ui/button@4.0.0
@keystone-ui/notice@3.0.0
Major Changes
- #5397
a5627304b
Thanks @bladey! - Updated Node engine version to 12.x due to 10.x reaching EOL on 2021-04-30.
Patch Changes
- Updated dependencies [
a5627304b
]:- @keystone-ui/button@4.0.0
- @keystone-ui/icons@3.0.0
@keystone-ui/options@3.0.0
Major Changes
- #5397
a5627304b
Thanks @bladey! - Updated Node engine version to 12.x due to 10.x reaching EOL on 2021-04-30.
Patch Changes
- Updated dependencies [
a5627304b
]:- @keystone-ui/fields@3.0.0
- @keystone-ui/icons@3.0.0
@keystone-ui/pill@3.0.0
Major Changes
- #5397
a5627304b
Thanks @bladey! - Updated Node engine version to 12.x due to 10.x reaching EOL on 2021-04-30.
Patch Changes
- Updated dependencies [
a5627304b
]:- @keystone-ui/icons@3.0.0
@keystone-ui/popover@3.0.0
Major Changes
- #5397
a5627304b
Thanks @bladey! - Updated Node engine version to 12.x due to 10.x reaching EOL on 2021-04-30.
@keystone-ui/segmented-control@3.0.0
Major Changes
- #5397
a5627304b
Thanks @bladey! - Updated Node engine version to 12.x due to 10.x reaching EOL on 2021-04-30.
@keystone-ui/toast@3.0.0
Major Changes
- #5397
a5627304b
Thanks @bladey! - Updated Node engine version to 12.x due to 10.x reaching EOL on 2021-04-30.
Patch Changes
- Updated dependencies [
a5627304b
]:- @keystone-ui/icons@3.0.0
@keystone-ui/tooltip@3.0.0
Major Changes
- #5397
a5627304b
Thanks @bladey! - Updated Node engine version to 12.x due to 10.x reaching EOL on 2021-04-30.
Patch Changes
- Updated dependencies [
a5627304b
]:- @keystone-ui/popover@3.0.0
@keystone-next/admin-ui@14.0.0
Major Changes
- #5397
a5627304b
Thanks @bladey! - Updated Node engine version to 12.x due to 10.x reaching EOL on 2021-04-30.
Minor Changes
- #5396
be60812f2
Thanks @rohan-deshpande! - Reflected next/image exports from admin-ui for use in other relevant keystone-next packages.
Patch Changes
-
#5451
9e060fe83
Thanks @JedWatson! - With the goal of making the Lists API (i.econtext.lists.{List}
) more intuitive to use, theresolveFields
option has been deprecated in favor of two new methods:(1) You can specify a string of fields to return with the new
query
option, when you want to query for resolved field values (including querying relationships and virtual fields). This replaces theresolveFields: false
use case.For example, to query a Post you would now write:
const [post] = await context.lists.Post.findMany({ where: { slug }, query: ` title content image { src width height }`, });
(2) Alternatively, there is a new set of APIs on
context.db.lists.{List}
which will return the unresolved item data from the database (but with read hooks applied), which can then be referenced directly or returned from a custom mutation or query in the GraphQL API to be handled by the Field resolvers. This replaces theresolveFields: boolean
use case.For example, to query for the raw data stored in the database, you would write:
const [post] = await context.db.lists.Post.findMany({ where: { slug }, });
-
#5366
115b06130
Thanks @renovate! - Updated Next.js dependency to^10.1.3
. -
Updated dependencies [
9e060fe83
, [3d3fb860f
](3d3fb860faa303cbfe7...
✨ 6th April 2021
What's New
Controlled code demolition 🏗️ 👷♀️
We pruned a lot of code from the Keystone garden – cutting out the dead wood to make way for a more efficient and productive core in Keystone 6. Notable changes include:
- Removed Keystone‘s DB adapters and the
db.adapter
config option (now that Keystone 6 uses Prisma under the hood). - Said goodbye to a bunch of redundant methods and arguments for the same reasons as above.
- Exchanged
deploy
,reset
andgenerate
commands forkeystone-next prisma
e.g:keystone-next deploy
->keystone-next prisma migrate deploy
Better pagination in Admin UI ⏭️ ✨
Pagination in the Admin UI has fresh styles and is easier to use.
Enjoying Keystone?
Star this repo 🌟 ☝️ or connect to Keystone on Twitter and in Slack.
View verbose release notes
Releases
@keystone-next/admin-ui@13.0.0
Major Changes
- #5266
c28e765d1
Thanks @mitchellhamilton! - Updated Next API route template to usecreateSystem
without thedotKeystonePath
argument and import from the new Prisma Client location.
Minor Changes
- #5286
bc21855a7
Thanks @gwyneplaine! - Added styling and quality of life updates to the pagination component.
Patch Changes
-
#5322
d93bab17b
Thanks @gwyneplaine! - Added padding to the select input in the Pagination component in @keystone-next/admin-ui. -
#5280
9e450d6b3
Thanks @timleslie! - Removed theadapters-mongoose-legacy
packages dependency. -
Updated dependencies [
901817fed
,c28e765d1
,c28e765d1
,c28e765d1
,95fefaf81
,c28e765d1
,1a4db6c87
,b40016301
,5c4b48636
,192393d0d
,c28e765d1
,1886b4323
,c28e765d1
,1886b4323
,399e6db39
,5cd94b2a3
,9e450d6b3
,1e6d12f47
,c28e765d1
,d93bab17b
]:- @keystone-next/keystone@15.0.0
- @keystone-next/types@16.0.0
- @keystone-ui/fields@2.1.0
- @keystone-next/admin-ui-utils@3.0.3
@keystone-next/fields@6.0.0
Major Changes
-
#5256
399e6db39
Thanks @timleslie! - Removed support for themongoId
field type. -
#5275
8665cfe66
Thanks @timleslie! - Removed themongoId
field type. -
#5256
399e6db39
Thanks @timleslie! - Removed support for theknex
andmongoose
database adapters. We now only supportprisma_postgresql
andprisma_sqlite
.
Patch Changes
-
#5280
9e450d6b3
Thanks @timleslie! - Removed theadapters-mongoose-legacy
packages dependency. -
Updated dependencies [
e702fea44
,c28e765d1
,b40016301
,192393d0d
,c28e765d1
,1886b4323
,8665cfe66
,fda82869c
,4fa66ac1f
,399e6db39
,d93bab17b
,9e450d6b3
,bc21855a7
,d93bab17b
]:- @keystone-next/fields-legacy@25.0.0
- @keystone-next/types@16.0.0
- @keystone-next/admin-ui@13.0.0
- @keystone-next/fields-auto-increment-legacy@10.0.0
- @keystone-ui/fields@2.1.0
- @keystone-next/admin-ui-utils@3.0.3
@keystone-next/fields-document@4.0.0
Major Changes
- #5273
4fa66ac1f
Thanks @timleslie! - Removed support for theknex
andmongoose
field adapters.
Patch Changes
✨ 30th March 2021
What's New
Goodbye legacy code 👋 🌇
We removed a few legacy items including:
- Field types
CalendarDay
,DateTime
,Slug
,Url
, andUuid
. - Arguments
cookieSecret
,cookie
, andsessionStore
from the Keystone constructor. - Arguments
schemaName
,schemaNames
,keystoneOptions
, andgraphqlOptions
were unused and have been removed from thesetupServer()
function (which we also removed).
Improved select
field type 🔽
It now uses the correct underlying type, which lets you make use of { dataType: 'enum' } and { dataType: 'integer'}.
Squashed bugs 🐛
We fixed a bug that existed in updateMany
on lists with declarative access control.
Enjoying Keystone?
Star this repo 🌟 ☝️ or connect to Keystone on Twitter and in Slack.
View verbose release notes
Releases
@keystone-next/fields-legacy@24.0.0
Major Changes
-
#5196
ca1be4156
Thanks @timleslie! - Removed legacy method.getAdminMeta
fromKeystone
,List
andField
classes. -
#5208
4d405390c
Thanks @timleslie! - Removed legacy propertyList.views
and methodField.extendAdminViews()
. -
#5194
a8be4c860
Thanks @timleslie! - Removed legacy Admin UI views. -
#5244
0e1487385
Thanks @timleslie! - Removed the legacy argumentsadminDoc
andadminConfig
, and the methodextendAdminMeta
. -
#5186
aa76102c1
Thanks @timleslie! - Removedapp-admin-ui-legacy
package. -
#5234
f448a8b3a
Thanks @timleslie! - Removed the legacy field typesCalendarDay
,DateTime
,Slug
,Url
, andUuid
.
Patch Changes
- Updated dependencies [
0e01f471d
,76e5c7bd3
,97609a623
,da900777a
]:- @keystone-next/fields@5.4.0
- @keystone-next/utils-legacy@8.0.0
- @keystone-next/adapter-knex-legacy@13.2.3
- @keystone-next/adapter-mongoose-legacy@11.1.3
- @keystone-next/adapter-prisma-legacy@4.0.1
- @keystone-next/access-control-legacy@9.0.1
@keystone-next/fields-auto-increment-legacy@9.0.0
Major Changes
- #5192
9e78d8818
Thanks @timleslie! - Removedviews
export, which was used to provide functionality to the legacy Admin UI.
Patch Changes
- Updated dependencies [
ca1be4156
,4d405390c
,a8be4c860
,0e1487385
,aa76102c1
,f448a8b3a
]:- @keystone-next/fields-legacy@24.0.0
- @keystone-next/adapter-knex-legacy@13.2.3
- @keystone-next/adapter-prisma-legacy@4.0.1
@keystone-next/fields-cloudinary-image-legacy@4.0.0
Major Changes
-
#5244
0e1487385
Thanks @timleslie! - Removed the legacy argumentsadminDoc
andadminConfig
, and the methodextendAdminMeta
. -
#5193
eb39fa37d
Thanks @timleslie! - Removedviews
export, which was used to provide functionality to the legacy Admin UI.
Patch Changes
- Updated dependencies [
ca1be4156
,4d405390c
,a8be4c860
,0e1487385
,aa76102c1
,f448a8b3a
]:- @keystone-next/fields-legacy@24.0.0
- @keystone-next/adapter-knex-legacy@13.2.3
- @keystone-next/adapter-mongoose-legacy@11.1.3
@keystone-next/fields-mongoid-legacy@10.0.0
Major Changes
- #5192
9e78d8818
Thanks @timleslie! - Removedviews
export, which was used to provide functionality to the legacy Admin UI.
Patch Changes
- Updated dependencies [
ca1be4156
,4d405390c
,a8be4c860
,0e1487385
,aa76102c1
,f448a8b3a
]:- @keystone-next/fields-legacy@24.0.0
- @keystone-next/adapter-knex-legacy@13.2.3
- @keystone-next/adapter-mongoose-legacy@11.1.3
- @keystone-next/adapter-prisma-legacy@4.0.1
@keystone-next/file-adapters-legacy@8.0.0
Major Changes
- #5228
7bf269057
Thanks @timleslie! - Removed legacyS3Adapter
.
@keystone-next/keystone-legacy@22.0.0
Major Changes
-
#5250
e944b1ebb
Thanks @timleslie! - Removed legacy methodkeystone.createContext()
. -
#5196
ca1be4156
Thanks @timleslie! - Removed legacy method.getAdminMeta
fromKeystone
,List
andField
classes. -
#5220
7ae452ad1
Thanks @timleslie! - Removed the legacykeystone.createAuthStrategy()
method. -
#5226
45272d0b1
Thanks @timleslie! - Removed legacy methodkeystone.prepare()
. -
#5248
ade638de0
Thanks @timleslie! - Removed support for legacyplugins
argument toList
config. -
#5247
2a1fc416e
Thanks @timleslie! - Removed legacy methodkeystone.executeGraphQL()
. -
#5208
4d405390c
Thanks @timleslie! - Removed legacy propertyList.views
and methodField.extendAdminViews()
.