{"action":"created","issue":{"url":"https://api.github.com/repos/keystonejs/keystone/issues/1612","repository_url":"https://api.github.com/repos/keystonejs/keystone","labels_url":"https://api.github.com/repos/keystonejs/keystone/issues/1612/labels{/name}","comments_url":"https://api.github.com/repos/keystonejs/keystone/issues/1612/comments","events_url":"https://api.github.com/repos/keystonejs/keystone/issues/1612/events","html_url":"https://github.com/keystonejs/keystone/issues/1612","id":102948942,"number":1612,"title":"Version 0.4.0","user":{"login":"JedWatson","id":872310,"avatar_url":"https://avatars.githubusercontent.com/u/872310?v=3","gravatar_id":"","url":"https://api.github.com/users/JedWatson","html_url":"https://github.com/JedWatson","followers_url":"https://api.github.com/users/JedWatson/followers","following_url":"https://api.github.com/users/JedWatson/following{/other_user}","gists_url":"https://api.github.com/users/JedWatson/gists{/gist_id}","starred_url":"https://api.github.com/users/JedWatson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JedWatson/subscriptions","organizations_url":"https://api.github.com/users/JedWatson/orgs","repos_url":"https://api.github.com/users/JedWatson/repos","events_url":"https://api.github.com/users/JedWatson/events{/privacy}","received_events_url":"https://api.github.com/users/JedWatson/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":44,"created_at":"2015-08-25T05:01:04Z","updated_at":"2016-03-08T08:59:40Z","closed_at":null,"body":"Today, I'm really excited to be merging our work on the `elemental-integration` branch into master.\r\n\r\nWe're really close to releasing a major new version which will finish our transition to React for the Admin UI, and be a strong foundation for a lot we've been wanting to do with Keystone for a long time, including opening up the Admin UI for customisation, and making the project more modular.\r\n\r\nOnce this lands, I expect we'll move much more quickly through the next few minor releases (0.5, 0.6, ...) as we introduce new functionality and potentially some breaking changes while we refactor the project more thoroughly. Our 1.0.0 release will follow as soon as we're ready to lock down the customisation and other APIs for long term support.\r\n\r\nThis means that `master` may be unstable for a while as the new UI is finished, but getting the project into a state where it is easier for others to contribute to the effort, and for the broader community to engage with our progress is really important. Until we get through this push, PRs and issues will continue to come in against a version that we've really moved on from, and I don't want to waste any of the valuable time and effort that's being dedicated to this project.\r\n\r\nThe other change that will happen from today is we'll start creating issues to track our progress towards 0.4.0 more granularly, and that will make more sense when the primary working codebase is the `master`  branch. Up to now, @jossmac and I have worked largely behind the scenes on tasks that really only the two of us are across, and I'm keen to facilitate a much broader engagement with what's left to do. (we'll  be rearranging the milestones and issue tags a bit to better support this today as well)\r\n\r\nThere will be a new `0.3.14` release today with all the current work in `master` before the merge, and we'll create a `0.3.x` branch which we'll continue to release from if any critical issues pop up in that version.\r\n\r\nThanks everyone for your patience as we've been working towards this huge update, and for all your support and engagement over the last two years that Keystone has been out in the world. We're tremendously excited to get these changes we've been working on released, and move on to the next stage of Keystone's development.\r\n\r\nOnce this release settles down I'll be publishing a new roadmap for what's to come, and outline the vision we've got for the future of Keystone. In the meantime:\r\n\r\n#### 0.4.0 TODO\r\n\r\nThis list will be replaced with individual issues as we add them, but generally the entire Admin UI and back-end support for it has been rewritten. This means many features won't be completely working, and there's a few things left to add. The major areas are:\r\n\r\n- Finalising the new design (feedback please!)\r\n- Implementing `react-router` for complete client-side routing (plus possibly a flux/etc implementation)\r\n- Creating a new `items/update` API endpoint and using it to save item changes\r\n- Finishing the Filters implementation across all the field types\r\n- Finalising the React Fields\r\n\r\nAs a final, optional step there has been work done to centralise our Field types into a common Storage implementation. Because we're hoping to get this in, the different file field types (local, s3, etc) haven't had a _huge_ amount of attention. Hopefully this can all be done but if it's dragging we'll just clean up what's there and get the release out, and refactor our file fields and storage for 0.5.\r\n\r\nThis is an area I'd really like some help with so if that interests you please let me know.\r\n\r\n#### Changes\r\n\r\nWe'll be compiling a list of changes (particularly breaking changes) in the Wiki as we head towards release; please help by raising any upgrade issues you experience with your projects. Due to the scope of changes to Keystone's front end, we've tried to keep internal breaking changes to a minimum.\r\n\r\nOne of the big things worth calling out is we've updated to Mongoose v4.x, please see the [mongoose changelog](https://github.com/Automattic/mongoose/blob/master/History.md) for details on what that involves.\r\n\r\n#### Running Keystone 0.4.0 in development\r\n\r\nTo get up and running with the new version of Keystone, check out the `master` branch by specifying our github repo in your `package.json`:\r\n\r\n```\r\n\"keystone\": \"https://github.com/keystonejs/keystone.git\",\r\n```\r\n\r\nPlease let us know what you like, what you don't, and any issues that you find (there will be heaps to start with, we know)\r\n\r\nIf you want to run Keystone in development mode to debug issues or help finish the new features, fork / clone Keystone locally, then run `npm link` in your keystone folder, followed by `npm link keystone` in your project.\r\n\r\nThen to enable debug builds and file watching, start your project with the **KEYSTONE_DEV** environment variable:\r\n\r\n```\r\nKEYSTONE_DEV=true npm start\r\n```\r\n\r\n#### New Keystone Test Project\r\n\r\nWe have started a new project that can be used to test the various project and field configurations, and all the features supported in the Admin UI. It contains several models and init scripts that populate example data for testing against.\r\n\r\nYou can find it here: https://github.com/keystonejs/keystone-test-project\r\n\r\nThis is only a barebones project at the moment but we'll be adding a lot of lists, fields, data and options to it in the coming days and weeks. Ideas, additions and PRs for it are more than welcome.\r\n\r\n#### Complete Getting Started Guide\r\n\r\n```\r\ngit clone https://github.com/keystonejs/keystone.git\r\ncd keystone\r\nnpm link\r\ncd ..\r\ngit clone https://github.com/keystonejs/keystone-test-project.git\r\ncd keystone-test-project\r\nnpm install\r\nnpm link keystone\r\nKEYSTONE_DEV=true npm start\r\n```\r\n\r\n#### Developing Elemental UI\r\n\r\nThe new Keystone Admin UI is built on our [Elemental UI](http://elemental-ui.com) project. As the `master` branch of Keystone is developed, we'll be rapidly releasing new Elemental versions, so it will be important to keep up to date with the latest. If you experience problems with the development version of Keystone, check for an update to Elemental before looking into it further.\r\n\r\nIf you want to run against the master branch of Elemental (or make changes to that project for Keystone) you'll need to clone it, link it and run `npm watch` to build it with babel.\r\n\r\nFollowing on from the guide to developing Keystone above, set it up like this:\r\n\r\n```\r\ngit clone https://github.com/elementalui/elemental.git\r\ncd elemental\r\nnpm link\r\nnpm run watch\r\n```\r\n\r\nThen:\r\n\r\n```\r\ncd keystone\r\nnpm link elemental\r\ncd ../keystone-test-project\r\nKEYSTONE_DEV=true npm start\r\n```"},"comment":{"url":"https://api.github.com/repos/keystonejs/keystone/issues/comments/193671350","html_url":"https://github.com/keystonejs/keystone/issues/1612#issuecomment-193671350","issue_url":"https://api.github.com/repos/keystonejs/keystone/issues/1612","id":193671350,"user":{"login":"ericelliott","id":364727,"avatar_url":"https://avatars.githubusercontent.com/u/364727?v=3","gravatar_id":"","url":"https://api.github.com/users/ericelliott","html_url":"https://github.com/ericelliott","followers_url":"https://api.github.com/users/ericelliott/followers","following_url":"https://api.github.com/users/ericelliott/following{/other_user}","gists_url":"https://api.github.com/users/ericelliott/gists{/gist_id}","starred_url":"https://api.github.com/users/ericelliott/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ericelliott/subscriptions","organizations_url":"https://api.github.com/users/ericelliott/orgs","repos_url":"https://api.github.com/users/ericelliott/repos","events_url":"https://api.github.com/users/ericelliott/events{/privacy}","received_events_url":"https://api.github.com/users/ericelliott/received_events","type":"User","site_admin":false},"created_at":"2016-03-08T08:59:40Z","updated_at":"2016-03-08T08:59:40Z","body":"See the section on [resourceful routing](http://chimera.labs.oreilly.com/books/1234000000262/ch08.html#resourceful-routing) for a discussion on why I like to use PUT for both create & update (also supporting POST for Create).\r\n\r\nBasically, the mapping I prefer is:\r\n\r\n```\r\nGET     /albums           ->  index\r\nPOST    /albums           ->  create, return URI\r\nGET     /albums/:id       ->  show\r\nPUT     /albums/:id       ->  create or update\r\nDELETE  /albums/:id       ->  destroy\r\n```"}}