Prior to this PR the HTML head was being
included twice on the password auth page.
One from root.html and another from the
error page, so we decoupled those.
1. Do not use nouse_stdio as it causes slowdowns when IEx
is also running
2. Reduce the amount of generated random atoms by using the
child_node as the name of the parent process
3. Do not pass quoted strings nor newlines to Windows to eval,
use argv instead
Closes#194.
* Link to live dashboard for each running session to show process info
* Update lib/livebook_web/live/home_live/sessions_component.ex
Co-authored-by: José Valim <jose.valim@dashbit.co>
Co-authored-by: José Valim <jose.valim@dashbit.co>
* 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 full logo to the homepage
* Update sidebar active icon style
* Update lib/livebook_web/live/home_live.ex
Co-authored-by: José Valim <jose.valim@dashbit.co>
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Render modal components at the end of live views
* Add error pages
* Restructure web module
* Update lib/livebook_web/templates/error/500.html.eex
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Update lib/livebook_web/templates/error/500.html.eex
Co-authored-by: José Valim <jose.valim@dashbit.co>
* Update lib/livebook_web/views/error_view.ex
Co-authored-by: José Valim <jose.valim@dashbit.co>
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>
* Reduce space between section header and first paragraph
* Remove mb-1 on markdown
Because of line height, there is already enough spacing
between the buttons and the content.
* Make buttons group component back stateful
* Move buttons rendering to the buttons group component
* Move cell status to its own component
* Revert cell status component
* Add section insertion button
* Add shortcut for inserting section
* Pass buttons to the component
* Add mix alias for running both formatter
* Adjustments
* Make the buttons group component stateless
* 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
* Virtualize output lines
* Remove unused dependency
* Remove VirtualizedLinesComponent
* Pass lines as HTML nodes and use as template
* Validate hook children
* Refactor markup
* 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