* Buffer IO evaluation output
* Respect CR in IOProxy
* Handle CR when adding cell output rather than during each render
* Optimise CR handling in buffer
* Add token authentication
* Restructure CLI
* Allow port configuration
* Further refactoring
* Make sure livebook node starts with unique name
* Improve startup error handling
* Further refactoring
* Add authentication tests
* Add authentication view for entering the token
* Fix auth tests
* Always use random Livebook name for distribution
* Don't enable ANSI on Windows
* Define CLI Task behaviour and move generic logic to the main module
* Generalize convertion from cli arguments to configuration
* Randomly generate secret key base
* Update test/livebook_web/plugs/auth_plug_test.exs
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Override app config in persistent manner
* Update lib/litebook_cli.ex
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Move auth error to ErrorView
* Unify node name configuration and allow it via CLI
* Set all applications configs at once
* Move token generation to application.ex to work outside CLI
* Clean up overriding configuration
* Store auth token in separate cookies
* Update lib/livebook_cli/server.ex
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Update lib/livebook_web/endpoint.ex
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Update lib/livebook_web/plugs/auth_plug.ex
Co-authored-by: José Valim <jose.valim@dashbit.co>
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Add cell image upload modal
* Add controller for serving the images and handle this on markdown side
* Use per-session images dir
* Add etag header to session image responses
* Adjust markdown image styling
* Properly manage session images dir
* Add tests
* Set maximum file size for image uploads
* Move images dir specifics to the Session module
* Move images when nonpersistent session becomes persistent
* Update lib/livebook_web/live/session_live.ex
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Update lib/livebook_web/live/session_live.ex
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Update lib/livebook_web/live/session_live/cell_upload_component.ex
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Test that close gets rid of session temporary dir
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Add notebook indicators
* Make evaluation status button point to the corresponding cell
* Rename introductory notebook
* Update path highlight when chosen for saving
* Allow specifying nonexistent directories when saving and create those
* Update lib/livebook_web/live/session_live/indicators_component.ex
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Update lib/livebook_web/live/session_live/indicators_component.ex
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Update lib/livebook_web/live/session_live/indicators_component.ex
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Update lib/livebook_web/live/session_live/indicators_component.ex
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Update lib/livebook_web/live/session_live/indicators_component.ex
Co-authored-by: José Valim <jose.valim@dashbit.co>
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Limit module result to a single line
* Add introductory notebook to get started with
* Don't show tooltip on focused elements
* Update lib/livebook/notebook/hello_livebook.ex
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Update lib/livebook/notebook/hello_livebook.ex
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Update lib/livebook/notebook/hello_livebook.ex
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Update notebook settings reference
* Add note on package authors
* Add tests
* Update Phoenix version to git master
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Update cell actions
* Add new focus indicator
* Update headings typography
* Update cell actions and insert buttons
* Add sidebar menu
* Add settings modal
* Update homepage
* Update settings dialog
* Rename classes
* Add floating menu
* Update icon colors on hover
* Fix homepage tests
* Format assets source
* Update monaco editor
* Fix editor width on resize
* Add more padding to the notebook content
* Update settings dialog title
* Show reevaluate button when the cell is in evaluated state
* Show section actions on focus or hover only
* Pre-fill runtime selector with the current configuration
* Ignore cmd + enter in Markdown cells
* Set up Escript packaging
* Use MD5 digest sa ETAG
* Make sure changes to the static files recompile the relevant module
* Manually start the application in Escript
* Set up basic CLI
* Run formatter
* Start Elixir app before anything else
* Improve version output
* Build Escript to project root directory
* Improve assets handling
* Move plug related modules under plugs directory
* Include bundled assets in the repository
* Use the same plug with different static providers in prod and dev
* Refactor providers
* Rename StaticProvidedPlug to StaticPlug
* Show all sections and enable cross-section focus navigation
* Move focus to the client
* Add shortcut for evaluating all cells
* Fix and expand tests
* Make section links scroll to the given section
* 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