{"action":"closed","issue":{"url":"https://api.github.com/repos/neovim/neovim/issues/1625","labels_url":"https://api.github.com/repos/neovim/neovim/issues/1625/labels{/name}","comments_url":"https://api.github.com/repos/neovim/neovim/issues/1625/comments","events_url":"https://api.github.com/repos/neovim/neovim/issues/1625/events","html_url":"https://github.com/neovim/neovim/issues/1625","id":51217589,"number":1625,"title":"[RFC] Preparing for the first release","user":{"login":"tarruda","id":842846,"avatar_url":"https://avatars.githubusercontent.com/u/842846?v=3","gravatar_id":"","url":"https://api.github.com/users/tarruda","html_url":"https://github.com/tarruda","followers_url":"https://api.github.com/users/tarruda/followers","following_url":"https://api.github.com/users/tarruda/following{/other_user}","gists_url":"https://api.github.com/users/tarruda/gists{/gist_id}","starred_url":"https://api.github.com/users/tarruda/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tarruda/subscriptions","organizations_url":"https://api.github.com/users/tarruda/orgs","repos_url":"https://api.github.com/users/tarruda/repos","events_url":"https://api.github.com/users/tarruda/events{/privacy}","received_events_url":"https://api.github.com/users/tarruda/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/neovim/neovim/labels/discuss","name":"discuss","color":"d4c5f9"}],"state":"closed","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/neovim/neovim/milestones/5","html_url":"https://github.com/neovim/neovim/milestones/0.1-first-public-release","labels_url":"https://api.github.com/repos/neovim/neovim/milestones/5/labels","id":652241,"number":5,"title":"0.1-first-public-release","description":"beta release, codename: \"whoa\"","creator":{"login":"justinmk","id":1359421,"avatar_url":"https://avatars.githubusercontent.com/u/1359421?v=3","gravatar_id":"","url":"https://api.github.com/users/justinmk","html_url":"https://github.com/justinmk","followers_url":"https://api.github.com/users/justinmk/followers","following_url":"https://api.github.com/users/justinmk/following{/other_user}","gists_url":"https://api.github.com/users/justinmk/gists{/gist_id}","starred_url":"https://api.github.com/users/justinmk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/justinmk/subscriptions","organizations_url":"https://api.github.com/users/justinmk/orgs","repos_url":"https://api.github.com/users/justinmk/repos","events_url":"https://api.github.com/users/justinmk/events{/privacy}","received_events_url":"https://api.github.com/users/justinmk/received_events","type":"User","site_admin":false},"open_issues":44,"closed_issues":87,"state":"open","created_at":"2014-05-07T21:37:18Z","updated_at":"2015-09-10T22:29:41Z","due_on":"2015-10-31T04:00:00Z","closed_at":null},"comments":49,"created_at":"2014-12-07T13:16:31Z","updated_at":"2015-09-10T22:29:42Z","closed_at":"2015-09-10T22:29:41Z","body":"#1605 paves the way for a completely refactored UI and this means Neovim is getting close to its first release. I'm opening this issue to draw a line for which tasks must be performed before Neovim becomes beta.\r\n\r\n#1605 exposes a new UI API based on the ideas of how Vim GUI is implemented: A custom termcap parser that is fed with data passed to ui_write(which normally simply writes to the screen) and calls UI update functions in ui.c. This scenario is hacky and far from ideal(in essence Nvim is parsing its own output), but it will let us do the migration in smaller steps, especially because #1605 introduces a nice way of testing screen state. \r\n\r\nWith that said, here's what I have planned for the first release:\r\n\r\n- [x] Merge #1605\r\n- [x] Add more screen tests\r\n- [x] Refactor the builtin terminal UI for the new UI architecture. The new TUI is based on [unibilium](https://github.com/mauke/unibilium) and [libtermkey](http://www.leonerd.org.uk/code/libtermkey/)\r\n- [x] Remove term.c, term.h and term_defs.h and replace all calls to out_str that output terminal codes by direct calls to ui.c functions. This will remove the termcap hack introduced in #1605 \r\n- [ ] Add a new implementation of the UI layer based on a GUI toolkit. I still haven't chosen a GUI library so suggestions are welcome as long as the library meets these requirements: \r\n  - is implemented in pure C\r\n  - is very lightweight, Nvim doesn't need advanced GUI features, just enough to implement a RGB terminal-like grid.\r\n  - is cross platform(windows/unix)\r\n- [x] Implement an alternative way of handling commands that require a terminal(#1496/#1528). Fixed by #2076.\r\n- [ ] Make the necessary changes to build/run on Windows(@equalsraf seems to have done a lot of the work already)\r\n\r\nNote that even though libtermkey is incompatible with Windows, we are still going to use it for Neovim. The reason is simple: Windows console is a pain and there's no need to maintain a terminal version  that is windows-compatible because no one will ever use it.\r\n\r\nIf anyone remembers something critical that should be added to the above list just let me know"}}