* Implement moving cells with keyboard shortcuts
* Add tests for cell movement operation
* Refactor
* Does not mark cells as stale if Elixir cells did not change order
* Prototype standalone mode with mix
* Move runtime initialization into separate LiveViews
* Make standalone node initialization async
* Refactor async node initialization
* Automatically scroll to the bottom of output
* Refactor streaming output
* Move MessageEmitter under Utils
* Add path selector to the mix runtime picker
* Update runtime descriptions
* Add successful or error message at the end of output
* Run formatter
* Rename Standalone to ElixirStandalone for consistency
* Show only directories when looking for a mix project
* Update docs
* Extract shared standalone logic
* Make the remote primary process monitor Manager instead of session
* Further refactoring and docs
* Add tests for collectable Callback
* Add missing macro doc
* Apply review suggestions
* Decouple sending asynchronous notifications from the runtime initialization
* Apply suggestions
* Ignore compilation warnings in the Evaluator tests
* Make Cmd + Enter evaluate cell even in navigation mode
* Fix homepage responsiveness
* Improve setting insert mode with mouse
* Extend LiveMarkdown format to support Elixir snippets in Markdown cells
* Highlight Markdown code blocks using Monaco editor API
* Use livebook metadata for forcing markdown as well
* Keep track of connected clients in session data
* Add API for confirming and purging deltas
* Send delta confirmation from clients once received
* Update naming
* Fix and extend Data tests
* Update naming
* Basic filesystem navigation
* Add file picker modal
* Implement autosave when dirty and show the status
* Add hompage link in the session view
* Improve file picker and use in both places
* Move session list to homepage
* Some refactoring
* Show import messages if any
* Fix and extend tests
* Show a message when there are no sessions running
* Rename import to fork and make that clear in notebook name
* Fix old route
* Show info when no file is connected to the given session
* Show runtime type next to filename
* Show button for joining session when a running path is selected
* Move modal components to SessionLive namespace
* Add FileGuard to lock files used for notebook persistence
* Use radio for specifying persistence type
* Don't lock nil path
* Simplify FileGuard implementation
* Test notebook persistence
* Fix typo
* Further simplify FileGuard
* Improve file listing
* Don't show parent dir when there's a basename being typed
* Add path component tests
* Tiny UI improvements
* Add icon for entering insert mode on a markdown cell
* Highlight selected section
* Improve contenteditable elements
* Highlight notebook/section name while editing
* Update keybindings and add help modal
* Add more evaluation shortcuts
* Add shortcut to the help modal
* Show appropriate shortcuts depending on the user system
* Handle missing user-agent header
* Conditionally render shortcut based on user agent
* Implement vim-style navigation
* Remove warning
* Determine platform based on socket on mount
* Improve shortcuts list UI
* Initial file import/export
* Add renderer tests
* Refactor renderer
* Depend only on EarmarkParser
* Add test for export
* Add import tests
* Improve import
* Document the ExMd file format
* Rename ExMd to ExMarkdown
* Rename ExMarkdown to LiveMarkdown
* Build iodata when exporting a notebook
* Persist metadata as a single JSON object
* Move Markdown to LiveMarkdown.MarkdownHelpers
* Make LiveMarkdown private
* Always move primary heading to the top during import
* Hint the user not to use heading 1 and 2
* Return a list of messages from the import function
* Update headings warning
* Add import and export test for non-elixir snippets
* Merge markdown renderer into MarkdownHelpers
* Add import messages on AST rewrites
* Isolate evaluation in separate node for each session
* Start new remote upon first evaluation and handle nodedown
* Add UI for managing evaluation node, improve naming and structure
* Show runtime initialization errors and some fixes
* Improve standalone node initialization
* Correctly handle multiple sessions connecting to the same node
* Fix session tests concerning evaluation
* Documentation and some refactoring
* Various improvements
* Configure schedulers to get to sleep immediately after evaluation
* Move EvaluatorSpervisor into the Remote namespace
* Fix evaluators cleanup
* Add tests
* Improve flash messages
* Introduce remote genserver taking care of cleanup
* Redefine the Runtime protocol to serve as an interface for evaluation
* Cleanup operations
* Use reference for communication with a standalone node
* Use shortnames for distribution by default
* Update node configuration and make sure epmd is running
* Rename Remote to ErlDist
* Adjust result length
* Add more keyboard navigation actions
* Improve inserted/deleted cells focus and add some tests
* Some refactoring
* Run formatter
* Render evaluation outputs and result
* Fix auto-scrolling to not be interrupted by editor focus
* Add cell output tests
* Run formatter
* Show cell status
* Apply review suggestions
* Change EEx strings to Live EEx
* Set up markdown rendering, update theme.
* Improve focus and handle expanding for markdown cells
* Add keybindings for expanding/navigating cells
* Improve editor autofocus when navigating with shortcuts
* Add tests
* Render markdown on the client
* Don't render cell initial data and make a request instead
* Set up editor and client side delta handling
* Synchronize deltas on the server
* Document the client code, add more tests
* Implement delta on the server, use compact representation when transmitting changes
* Simplify transformation implementation and add documentation
* Add session and data tests
* Add more delta tests
* Clean up evaluator tests wait timeout
* Sync session data within LV client
* Add basic session UI
* Add operations for setting notebook and section name
* Update notebook and section name from the UI
* Some cleanup
* Return current data upon client registartion to avoid race conditions
* Small fixes
* Define session data structure and some operations
* Make code evaluation request async, so that we don't need an intermediary process
* Simplify id typespecs
* Make operation application composable
* Keep a separate evaluation queue per section and actually support concurrent evaluation
* Small fixes
* Validate queued cell type and set evaluation timestamp
* Apply review suggestions
* Add tests
* Store evaluating_cell_id instead of section status
* Add dynamic supervisor for managing evaluator processes
* Some fixes
* Refactor operation application
* Upon cell deletion mark dependent cells as stale
* Add code evaluation server
* Capture evaluator standard output and send to the caller
* Return full error info from evaluator
* Add support for deleting evaluation from hitory
* Fix a typo
* Start IOProxy once per Evalutor
* Apply review suggestions