Commit graph

243 commits

Author SHA1 Message Date
Alexandre de Souza
d70764517f
Implements :origin field to Secret struct (#1667) 2023-01-31 19:17:05 -03:00
Jonatan Kłosko
86bf972c0d
Add support for sending frame updates to a specific client (#1662) 2023-01-28 00:34:31 +01:00
Alexandre de Souza
ae3a5661a8
Implement emojis instead of colors (#1636) 2023-01-12 17:37:12 -03:00
Alexandre de Souza
3b2ea3c8ce
Update Connection life-cycle and implement ChangesetError message (#1633) 2023-01-10 17:12:35 -03:00
Jonatan Kłosko
d6f758661b
Make automatic reevaluation more accessible (#1628) 2023-01-07 15:18:31 +01:00
Alexandre de Souza
b82e360df9
Implement Enterprise secret creation from Session (#1612) 2023-01-06 16:14:44 -03:00
Jonatan Kłosko
089cee395f Fix test on windows 2023-01-05 16:48:27 +01:00
Jonatan Kłosko
b60428c94d
Improve tests (#1627) 2023-01-05 16:12:45 +01:00
Jonatan Kłosko
17ab1ae472
Add support for file input (#1622) 2023-01-04 21:44:04 +01:00
Alexandre de Souza
d4bda6042c
Load LB_ env vars as app secrets (#1615) 2023-01-04 11:10:33 -03:00
Jonatan Kłosko
2e230c9deb
Add an option to run setup with no cache (#1616) 2023-01-03 12:24:22 +01:00
José Valim
190a4cffd3
Do not crash when giving token to password and vice-versa (#1574) 2022-12-12 11:52:45 +01:00
Alexandre de Souza
60bc7194ed
Improve Enterprise integration with real data (#1548) 2022-11-28 20:47:25 -03:00
Alexandre de Souza
e30213bc83
Update WebSocket error responses (#1524) 2022-11-11 12:00:47 -03:00
Alexandre de Souza
7b1addb7eb
Use WebSocket and Protobuf instead of GraphQL with Livebook Enterprise (#1504) 2022-11-03 13:49:07 -03:00
Alexandre de Souza
19773a0e36
Add Enterprise Hub (#1449) 2022-10-11 11:27:27 -03:00
José Valim
5c053a9573
Always sync livebook secrets with session (#1477) 2022-10-11 16:12:14 +02:00
José Valim
950982304d
Final touchups to secrets (#1464)
* Use font-mono on secret names
* Unify error handling with changesets
* Unify put_env/delete_env as set_env/unset_env
* Review text and descriptions
2022-10-06 21:44:04 +02:00
Cristine Guadelupe
4c83317453
Notebook secrets (#1457)
* Store secrets in the notebook

* Automatically grants access to secrets

* Put notebook secrets on session

* Shows secrets as a list

* Grant access message box

* Grant access confirmation on select

* Applying suggestions - grant access confirmation

* Handles unavailable secrets

* Toggle secrets

* Session only secrets

* Sync secrets

* Fix delete runtime secret

* Clean up

* Component helpers

* Does not store secrets in notebooks

* Store Livebook secrets

* Fix sync secrets

* Tests for secrets

* Doesn't refetch livebook_secrets

* Removes unused function

* More test for secrets

* Livebook secrets as maps

* Fix secret tests

* Applying suggestions

* All secrets as a map

* Shows grant access for missing secret errors

* Unifies grant access

* Fix set_runtime_secrets

* Applying suggestions

* Updates sync secrets tests

* Fix active secret

* Unifies prefill secret name
2022-10-06 13:41:26 -03:00
José Valim
e9149dc343
Require fewer clicks to save a notebook (#1458) 2022-10-04 10:56:11 +02:00
José Valim
6da00daffd
Update to LV 0.18 (#1426) 2022-10-04 08:46:55 +02:00
Jonatan Kłosko
b20ac022a8
Attempt to load a flat remote URL as a relative path fallback (#1428) 2022-09-22 15:11:29 +02:00
Paulo Valim
285bc923b7
Rename the Explore section to Learn (#1424)
Co-authored-by: José Valim <jose.valim@gmail.com>
2022-09-21 12:06:22 +02:00
Jonatan Kłosko
b5e8cd9b00 Fix PATH test on Windows 2022-09-19 21:05:08 +02:00
Cristine Guadelupe
52f7d7419b
Changes secrets wording form label to name (#1419) 2022-09-18 18:40:09 -03:00
Alexandre de Souza
2766cf3256
Final adjustments to env vars (#1418) 2022-09-16 20:37:01 -03:00
Alexandre de Souza
12f1cc0c3f
Load persisted environment variables from settings into session's runtime (#1409) 2022-09-16 14:22:27 -03:00
Alexandre de Souza
e539661189
Unify styling environment variables forms (#1403) 2022-09-14 13:24:32 -03:00
Alexandre de Souza
0b9f53a122
Implement global Environment Variables from Settings page (#1387) 2022-09-12 11:34:39 -03:00
José Valim
b6e28c5b43 Fix Fly Hub suite 2022-09-07 11:37:45 +02:00
José Valim
be862173a3
Unify several forms in the application (#1392)
* Define .input_wrapper and .hex_color_input components

* Define Tailwind variants from Phoenix v1.6 to help styling

* Make sure single-action modals redirect on save

* Add pill to session secrets in the "Secrets" session sidebar

* Fix alignments of "Users" in the session sidebar
2022-09-05 23:59:13 +02:00
Cristine Guadelupe
97efef52cc
Fix secrets form (#1379)
* Fix secrets form

* Update lib/livebook_web/live/session_live/secrets_component.ex

Co-authored-by: Jonatan Kłosko <jonatanklosko@gmail.com>

* Applying suggestions

Co-authored-by: Jonatan Kłosko <jonatanklosko@gmail.com>
2022-09-02 15:04:41 -03:00
Alexandre de Souza
ac71d08771
Add and Fetch secrets from Fly applications (#1361) 2022-09-02 12:54:28 -03:00
Cristine Guadelupe
443ff8bf9f
Unavailable secret error (#1371)
* Show an Add Secret button for System.EnvError

* Extracts render_formatted

* Rewrite the env error message

* Renames the env error type

* Applying suggestions

* Applying suggestions (live patch)

* Test for unavailable secrets

* Bump to rc.1

* Applying suggestions (error message)

* New error message

* Prefill the secret value

* Applying suggestions (error message output)

* Update test/livebook_web/live/session_live_test.exs

Co-authored-by: Jonatan Kłosko <jonatanklosko@gmail.com>

* Update lib/livebook/runtime.ex

Co-authored-by: Jonatan Kłosko <jonatanklosko@gmail.com>

Co-authored-by: Jonatan Kłosko <jonatanklosko@gmail.com>
2022-08-31 20:45:55 -03:00
Alexandre de Souza
2cbd81eaf5
Migrate HubLive to Phoenix format (#1373) 2022-08-30 11:32:48 -03:00
José Valim
ed9c0e5a1e Revamp explore section 2022-08-28 19:08:43 +02:00
Cristine Guadelupe
afcb2ff834
Livebook secrets (#1348)
* Add secrets to the sidebar

* Get and put secrets (naive)

* Secrets list - shortcut

* Validates secret name

* Livebook secrets as environment variables

* Restores secrets when necessary

* Minor adjustments

* Implements add_system_envs for NoopRuntime

* Moves secrets to session data

* Granular operations for secrets

* Minor adjustments

* Applying suggestions

* Test for add secrets

* Type for secret

* Applying suggestions

* Prevents duplicates

* Refactor to live_render

* Update lib/livebook/session/data.ex

Co-authored-by: Jonatan Kłosko <jonatanklosko@gmail.com>

* Sort secrets

* Applying suggestions

Co-authored-by: Jonatan Kłosko <jonatanklosko@gmail.com>
2022-08-25 17:24:24 -03:00
Alexandre de Souza
3a085a5d30
Minor Hub improvements (#1357) 2022-08-24 12:35:28 -03:00
Alexandre de Souza
77c8804d62
User and Hub forms with Changeset validations and input errors (#1347) 2022-08-22 18:12:54 -03:00
Alexandre de Souza
5c050e640f
Add Livebook Hub with Fly.IO integration (#1319) 2022-08-18 10:34:27 -03:00
Jonatan Kłosko
218bce5a63
Use binary ids for session clients (#1333) 2022-08-05 14:43:41 +02:00
Jonatan Kłosko
c68df08849
Handle direct event messages in JS view channel (#1332) 2022-08-04 23:01:09 +02:00
Jonatan Kłosko
75e47aa593
Reflect input change when clicking the reevaluate button (#1269) 2022-07-11 14:35:05 +02:00
Jonatan Kłosko
1757e21bca
Fix user profile edits to not crash on the homepage (#1268) 2022-07-10 20:16:55 +02:00
Jonatan Kłosko
a7d7e6332d
Change text inputs to apply change on blur (#1243) 2022-06-24 12:00:23 +02:00
Kian-Meng Ang
b18a93af93
Fix typos (#1222) 2022-06-12 18:10:37 +02:00
José Valim
49492771f3 Ignore asset directories if they are empty
macOS removes files from the temporary directory but
keeps the directory. This would cause LiveView to
misbehave as it would assume all assets are checked out.
2022-05-13 14:41:06 +02:00
Jonatan Kłosko
2a1d937189
Update wording around dependencies and packages (#1151) 2022-04-30 17:14:10 +02:00
Jonatan Kłosko
8f72d0175e
Update references to kino (#1148)
* Update references to kino

* Update changelog

* Make the Chart cell section branching

* Apply suggestions from code review

Co-authored-by: José Valim <jose.valim@dashbit.co>

* Capitalization

* Add link to the Iris dataset

* Pass keys to Process.info/2

Co-authored-by: José Valim <jose.valim@dashbit.co>
2022-04-29 13:45:33 +02:00
Jonatan Kłosko
f39699b65e
Update instructions in the Elixir export (#1144) 2022-04-25 13:37:15 +02:00
Jonatan Kłosko
609409e842
Encapsulate pubsub subscriptions (#1132) 2022-04-19 11:29:38 +02:00
ByeongUk Choi
120eb2d0ef
Redirect after authentication (#1112)
* auth token mode routes /authentication

* redirect after authentication with session

* Apply code review

* Apply suggestions from code review

* Apply suggestions from code review
2022-04-15 14:24:35 +02:00
ByeongUk Choi
5606326203
Handle token auth under the same /authenticate route as password (#1104)
* auth token mode routes /authentication

* Update lib/livebook_web/controllers/auth_controller.ex

Co-authored-by: Jonatan Kłosko <jonatanklosko@gmail.com>
2022-04-13 18:51:28 +02:00
Howard Su
31b0a9f7d0
Add windows version of ci (#1045)
* Add windows version of ci

Config autocrlf to input on Windows
start epmd in background

* Update .github/workflows/test.yaml

* Update .github/workflows/test.yaml

* Update .github/workflows/test.yaml

* Fix tests

* Fix ownership of cached files

* Fix tests

* Increase timeouts

* Run tests on Windows only on main

Co-authored-by: Jonatan Kłosko <jonatanklosko@gmail.com>
2022-04-11 20:34:31 +02:00
Jonatan Kłosko
902c993098
Adjustments (#1087)
* Fix horizontal scrollbar on smaller screens

* Apply navigation shortcuts without an additional roundtrip

* Shorten the data element selector

* Fix URL in changelog

* Return reference from handle_intellisense
2022-04-04 12:19:11 +02:00
Jonatan Kłosko
75eb031719
Automate searching and adding new dependencies (#1081)
* Automate searching and adding new dependencies

* Restructure runtime management

* Leave search restrictions up to the runtime

* Support predefined dependencies in Embedded runtime dependency search

* Use the embedded runtime for dependency search test

* Fix typo

* Use module for loading embedded runtime dependencies

* Improve naming
2022-04-01 20:13:37 +02:00
Jonatan Kłosko
df765f2dd3
List predefined smart cells and automatically add their dependencies (#1078)
* List predefined smart cells and automatically add their dependencies

* Generalize dependency insertion to multiple entries

* Add runtime setup modal

* Don't evaluate setup when restarting the runtime fails

* Automatically add vega_lite for chart builder

* Improve confirmation modal actions when the action is not destructive
2022-03-30 21:55:50 +02:00
Jonatan Kłosko
5476fd001d
Introduce a setup cell (#1075)
* Introduce a setup cell

* Don't collapse setup cell when dirty

* Collapse fresh setup cell when empty

* Reword collapsed setup cell text
2022-03-28 21:36:57 +02:00
Jonatan Kłosko
4369a45bd5
Regroup cell insert buttons (#1073)
* Regroup cell insert buttons

* Add spacing to divider

* Split into two menus

* Remove smart cell icon
2022-03-24 19:02:31 +01:00
Jonatan Kłosko
ac5a71bf85
Show a message when JS view data is not available (#1067)
* Multiplex initialization of JS views

* Show timeout message when JS view data fails to load

* Refactor JS view channel

* Update tests
2022-03-22 18:25:42 +01:00
Jonatan Kłosko
e27ff5a960
Rename Elixir cell to Code cell (#1035) 2022-03-02 12:48:02 +01:00
Jonatan Kłosko
aaeac6bb95
Add an action converting smart cell to elixir cell (#1030)
* Add an action converting smart cell to elixir cell

* Simplify tests setup

* Add confirmation

* Update lib/livebook_web/live/session_live/cell_component.ex

Co-authored-by: José Valim <jose.valim@dashbit.co>

Co-authored-by: José Valim <jose.valim@dashbit.co>
2022-03-02 12:13:44 +01:00
Jonatan Kłosko
f58f9609d2
Fix race conditions in tests (#1031)
* Fix race conditions in tests

* Format

* Increase session import redirect timeout

* Increase intellisense timeout
2022-02-28 22:27:39 +01:00
Jonatan Kłosko
9d7fe44253
Introduce smart cells (#1029)
* Introduce smart cells

* Apply review comments
2022-02-28 13:53:33 +01:00
Jonatan Kłosko
fb0c96fa99
Speed up tests (#996)
* Close sessions created during tests

* Change live_patch to live_redirect where applicable
2022-02-10 15:36:59 +01:00
Jonatan Kłosko
ca27bb157f
Refactoring (#994)
* Group all runtime messages under a common prefix

* Move output specification ot the Runtime protocol

* Update doc comments

* Livebook.Evaluator -> Livebook.Runtime.Evaluator

* Livebook.ContentLoader -> Livebook.Notebook.ContentLoader

* Livebook.UniqueTask -> Livebook.Utils.UniqueTask

* Add import/export delegates to Livebook.LiveMarkdown
2022-02-10 12:15:41 +01:00
Jonatan Kłosko
7f19afe7af
Fastlane JS channel events (#993)
* Fastlane JS channel events

* Abstract fastlaning to separate concerns
2022-02-09 23:15:03 +01:00
Jonatan Kłosko
ccc64876a8
Add support for widget binary payloads (#982)
* Add support for widget binary payloads

* Migrate LV auth to a separate hook

* Properly set user buffer when encoding
2022-02-07 21:03:25 +01:00
Benjamin Philip
1a0b9e0f7d
Allow downloading source from sessions list (#980)
* Support downloading source on a per session basis

* Update session_list_component.ex

* Add test

* Update lib/livebook_web/live/home_live/session_list_component.ex

* Update test/livebook_web/live/home_live_test.exs

Co-authored-by: José Valim <jose.valim@gmail.com>
Co-authored-by: Jonatan Kłosko <jonatanklosko@gmail.com>
2022-02-04 11:36:09 +01:00
gpopides
be1fce326c
Pass file or directory as open command (#969)
* caputre directory from params

* set file if file parameter is a file

* set file param

* docs

* partial review changes

* apply review changes

* add tests and rename file to path

* formatting

* applied feedback + fixed test

* Apply suggestions from code review

Co-authored-by: Jonatan Kłosko <jonatanklosko@gmail.com>
2022-02-03 20:26:18 +01:00
Jonatan Kłosko
5538e2e8c0 Fix race condition in notebook import test 2022-02-02 14:04:45 +01:00
Jonatan Kłosko
4d70e5cceb
Test and typing improvements (#949)
* Minimize race condition in the frame update test

* Use defmacrop for building intellisense context

* Remove unnecessary cell view computation

* Fix nested assets resolution

* Fix typing errors

* Add missing async attribute to test suites

* Improve rendering synchronization

* Up
2022-01-29 16:39:41 +01:00
Cristine Guadelupe
4dd28388a5
Bulk actions for sessions (#939)
* Initial implementation to close multiple sessions

* Sessions: bulk actions with components

* Rename Disconnect sessions to Disconnect runtime

* Select all and disabled when nothing is selected

* Styled checkbox

* Renames toggle events

* Warning about not persisted notebooks

* Adds disconnect runtime option for a single session

* Edit sessions on right

* Fix: typos and plural

* Minor adjustments

* Removes the loop for rendering the menu

* Menus with fixed width

* Minor adjustments

* Pluralize as global helper

* Bulk actions form on client side

* Track bulk actions buttons state

* Fix: home live tests

* Doctests for pluralize

* Fix: bulk actions buttons losing state on session update

* Fix: format

* Minor adjustment on toggle_edit

* Review-based adjustments

* Reset the Edit state after single-session actions

* Minor adjustments

* Fixes bulk action events

* Submit the bulk action form directly

* Tests for bulk actions

* Indentation

* Update lib/livebook_web/live/home_live/close_session_component.ex

Co-authored-by: José Valim <jose.valim@gmail.com>

Co-authored-by: José Valim <jose.valim@gmail.com>
2022-01-28 17:45:04 -03:00
Jonatan Kłosko
6aaf1d5b58
Fix output ambiguity in livemd import/export (#892)
* Fix output ambiguity in livemd import/export

* Update test/livebook/live_markdown/import_test.exs

Co-authored-by: José Valim <jose.valim@dashbit.co>

Co-authored-by: José Valim <jose.valim@dashbit.co>
2022-01-19 18:27:56 +01:00
Jonatan Kłosko
ae0f083c5c
Fixes (#889)
* Fix title test

* Fix editable element check

* Fix duplicate output ids
2022-01-19 14:43:35 +01:00
Jonatan Kłosko
c57e5448b7
Remove old output formats (#876)
* Remove old outputs

* Remove other occurrences
2022-01-17 13:24:59 +01:00
Jonatan Kłosko
6615422613
Restructure frame output (#857)
* Restructure frame output

* Reboot JSComponent when ref changes

* Prune outputs from LV, handle frame and stdout updates via component messaging

* Keep ANSI modifiers as keyword list

* Don't re-render pruned outputs

* Improve empty frame styling

* Use more specific id

* Add clarification on trailing CR

* Handle output group borders with CSS

* Keep only relevant outputs in memory

* Adjust borders

* Update lib/livebook/live_markdown/import.ex

Co-authored-by: José Valim <jose.valim@dashbit.co>

* Apply review comments

Co-authored-by: José Valim <jose.valim@dashbit.co>
2022-01-16 20:37:00 +01:00
Jonatan Kłosko
118cf05d0a
Introduce broadcast communication from runtime (#845)
* Introduce broadcast communication from runtime

* Return broadcast target from group leader

* Increase timeout

* Make the channel test async

* Decouple base topic and ref
2022-01-10 18:38:08 +01:00
Daniel Kukula
618593158d
Set page name when notebook is renamed (#844)
* override tab name when notebook is renamed

* set page_title in after operation function

* add custom page title to all live pages

* Revert "override tab name when notebook is renamed"

This reverts commit 90303e08a8.

* add test for update
2022-01-06 18:37:55 +01:00
Jonatan Kłosko
19baf013d5
Introduce a dedicated channel for JS widget communication (#843)
* Introduce a dedicated channel for JS widget communication

* Handle payload serialization errors

* Tie channel lifetime to the session

* Catch serialization errors instead of encoding twice

* Merge JS static and dynamic outputs

* Authenticate socket connection from session

* Update JS output format

* Remove unused helper

* Apply review comments
2022-01-06 16:31:26 +01:00
Jonatan Kłosko
844242ba80
Add support for JS output widgets (#818)
* Add support for JS output widgets

* Don't block session when fetching assets and batch calls

* Improve path component sanitisation

* Move fetching check to session caller

* Attach origin to connect and event messages
2021-12-24 14:18:34 +01:00
Jonatan Kłosko
6f53e3db6a
Add support for form control (#790)
* Add support for form control

* Handle report_changes map

* Assert on input/control events
2021-12-12 00:09:35 +01:00
Jonatan Kłosko
d909272746
Improve completion (#747)
* Add keywords to completion

* Fix signature request caching for call without parentheses

* Don't insert parentheses for def* macros

* Don't trigger missing runtime message when auto completion is enabled

* Don't insert parentheses for keyword macros

* Improve completion of env macros

* Apply review comments

* Update locals without parentheses

* Apply suggestions from code review

Co-authored-by: José Valim <jose.valim@dashbit.co>

* Format

Co-authored-by: José Valim <jose.valim@dashbit.co>
2021-12-05 14:58:30 +01:00
Jonatan Kłosko
47d29cb389
Require Elixir 1.13 (#737)
* Bump required Elixir version to 1.13 and fix TODOs

* Fix tests

* Remove the deprecated URI.parse/1

* Bump Docker base image

* Bump Elixir on CI
2021-12-03 21:47:20 +01:00
Jonatan Kłosko
ac6b423e79
Fix frame rendering (#735)
* Fix frame rendering

* Add test for the dynamic frame
2021-12-03 18:59:08 +01:00
Jonatan Kłosko
264d6c3ff2
Add support for controls output type (#710)
* Add support for controls output type

* Split controls into individual widgets

* Adjust ids

* Improve widget and controls garbage collection

* Allow arbitrary functions as object release hook

* Add type to button and input events

* Add keyboard status event

* Change release hooks into monitor messages

* Rename pointer to reference and return an error on bad monitor
2021-12-02 16:45:00 +01:00
Jonatan Kłosko
c2636b8220
Migrate inputs to Kino (#714)
* Migrate inputs to Kino

* Update lib/livebook/session/data.ex

Co-authored-by: José Valim <jose.valim@dashbit.co>

* Try parsing numbers as integers

* Garbage collect input values

* Adjust tests

* Remove unused variable

* Fix frame rendering

* Wrap inputs in border depending on its type

* Add textarea

* Reorder

* Update tests

Co-authored-by: José Valim <jose.valim@dashbit.co>
2021-11-25 18:43:42 +01:00
Jonatan Kłosko
f64dd0ea90
Restructure j/k navigation to support headlines (#707)
* Accessibility fixes

* Restructure j/k navigation to support headlines

* Focus modal content when open

* Further focus adjustments

* Fix tests

* Remove unused functions
2021-11-16 21:57:10 +01:00
Jonatan Kłosko
4d92aeba2e
Support file scheme when importing from URL (#706)
* Add test

* Support file scheme when importing from URL
2021-11-12 15:49:22 +01:00
Jonatan Kłosko
021d6ac42e
Improve icon buttons accessibility and navigation (#667)
* Rename tooltip source attribute

* Add aria-label to icon buttons/links

* Actually focus cell content when navigating around

* Add some descriptions

* Fix dynamically computed tooltips
2021-11-01 18:20:56 +01:00
Jonatan Kłosko
dbccadfdcf
Redesign save to file modal (#663)
* Redesign save to file

* Always show Save when a file is present

* Fix indentation
2021-10-30 12:02:26 +02:00
Jonatan Kłosko
4493a60380
Improve runtimes UI (#655)
* Show reconnect for all runtime types when applicable

* Make it clear which runtime is the default

* Show Mix.install restart suggestion only for standalone runtimes

* Fix tests not to rely on the default runtime tab
2021-10-28 19:41:07 +02:00
Matheus Cumpian
c6d7c81ee9
New import info flash (#630)
* adding a new info flash on imported notebooks

* changing the imported notebook error flashes to warning level

* Update lib/livebook_web/live/session_helpers.ex

Co-authored-by: José Valim <jose.valim@gmail.com>

* adding unit tests for the flash messages and fixing put_import_flash/1 call location

* changing name of put_import_flash_messages/2 to put_import_warnings

* Update lib/livebook_web/live/home_live.ex

* formating code

Co-authored-by: José Valim <jose.valim@gmail.com>
Co-authored-by: Jonatan Kłosko <jonatanklosko@gmail.com>
2021-10-21 23:21:54 +02:00
Jonatan Kłosko
3ae67ede33
Add support for importing notebook from URL query parameter (#598)
* Add support for importing notebook from URL query

* Update desc

* Update URL and redirect to import form on error

* Update tests

* Remove URL scope
2021-10-16 12:23:08 +02:00
Jonatan Kłosko
5dea204fc9
Fix intermittent test failures (#596)
* Bump Elixir on the CI

* Start permanent node manager in tests

* Adjust timeouts

* Make sure random node cookies are alphanumeric
2021-10-13 22:25:33 +02:00
Jonatan Kłosko
4ff1ff0d5a
Use Phoenix.Tracker to keep track of sessions within the cluster (#540)
* Use Phoenix.Tracker to keep track of sessions within the cluster

* Apply review comments

* Cleanup topics and updates

* Update lib/livebook_web/live/session_live.ex
2021-09-04 19:16:01 +02:00
Jonatan Kłosko
2b1cb57a15
Start new notebooks with a focused code cell (#527)
* Start new notebooks with a focused code cell

* Update changelog
2021-08-30 16:33:40 +02:00
Jonatan Kłosko
8e6558a83a
Introduce file system abstraction and an S3 implementation (#492)
* Introduce file system abstraction and an S3 implementation

* Support arbitrary absolute paths and delegate resolution to file system

* Remove accidental notebook file

* Apply suggestions from code review

Co-authored-by: José Valim <jose.valim@dashbit.co>

* Apply review comments

* Add missing path assertions

* Apply review comments

* Fix test saving notebook in project root

Co-authored-by: José Valim <jose.valim@dashbit.co>
2021-08-13 21:17:43 +02:00
Jonatan Kłosko
634907b49c
Add notebook option for persisting outputs (#485)
* Add notebook option for persisting outputs

* Increase persistence modal spacing
2021-07-30 16:24:46 +02:00
Jonatan Kłosko
42463c7cb1
Add option to export Live Markdown with output (#483)
* Add option to export outputs in Live Markdown

* Add outputs option to Live Markdown export tab

* Adjust import to handle outputs

* Apply review comments
2021-07-29 18:41:34 +02:00
Jonatan Kłosko
1caff24882
Separate ANSI parsing from HTML rendering (#482) 2021-07-29 14:51:40 +02:00
Jonatan Kłosko
cfbba9e2ce
Add Elixir source export (#476) 2021-07-28 13:40:36 +02:00
Jonatan Kłosko
6575791bed
Add notebook source preview and export (#457)
* Add notebook source preview and export

* Build live markdown source outside the session process
2021-07-23 01:18:40 +02:00
Jonatan Kłosko
ef06e49d18
Show full documentation when hovering over an identifier (#453)
* Show full documentation when hovering over an identifier

* Remove leftover function

* Improve determining subject boundaries
2021-07-20 21:30:53 +02:00
Jonatan Kłosko
ee740d4194
Resolve links for imported notebooks (#445)
* Resolve links for imported notebooks

* Clarify error messages
2021-07-10 21:49:50 +02:00
Jonatan Kłosko
bd8e06b5ce
Implement relative navigation between notebooks (#441)
* Use live redirect for local links in rendered markdown

* Resolve relative notebook URLs

* Bump LV

* Adds tests

* Handle nested relative path

* Handle child nested paths
2021-07-08 19:35:11 +02:00
Jonatan Kłosko
7203813f8d
Add support for input properties (#440) 2021-07-08 11:35:09 +02:00
Jonatan Kłosko
c674a0ec5d
Normalize textarea newlines (#402)
* Normalize textarea newlines

* Add test
2021-06-26 00:53:12 +02:00
Jonatan Kłosko
2b2d6c9d50
Show consistent user avatar on initial page load (#349) 2021-06-15 19:33:16 +02:00
Jonatan Kłosko
adb9612fbe
Add link pointing to a new notebook (#347)
* Add link pointing to a new notebook

* Add test
2021-06-14 21:25:18 +02:00
Jonatan Kłosko
8dea99e600
Support inputs (#328)
* Render basic input

* Make each cell type a separate struct

* Add operation to set input value

* Prototype communication

* Make input name editable

* Refactoring

* Unify cell attribute setters

* IO tests

* Document input communication protocol in Runtime

* Add more tests

* Add persistence

* Fix status update on cell attributes change

* Rework persistence

* Integrate input cell with insert mode

* Add missing users keybinding

* Mimic autofocus for dynamically inserted elements

* Support input type selection

* Support URL input and set up validation

* Convert input error into a more meaningful io error

* Add missing client checks

* Consume every input only once per evaluation

* Fixes
2021-06-08 12:33:50 +02:00
Jonatan Kłosko
f70581f255
Introduce an Explore section (#310)
* Add explore page

* Move sidebar to a configurable component

* Fix homepage test

* Add images

* Store example notebooks in files and make explore notebooks linkable

* Fix tests

* Raise on invalid notebook slug

* Keep just the file contents in notebook info

* Move notebook lookup to Explore

* Exclude notebooks in progress
2021-06-02 21:51:43 +02:00
Brian Underwood
8dfe12da68
Change anchor tags for sections to be based on the titles, not randomly generated (#288)
* Change anchor tags for sections to be based on the titles, not randomly generated

* Update lib/livebook_web/helpers.ex

Co-authored-by: Jonatan Kłosko <jonatanklosko@gmail.com>
2021-05-23 18:22:55 +02:00
Jonatan Kłosko
ea93edcc86
Add embedded runtime for evaluating code in the Livebook VM (#266)
* Add embedded runtime for evaluating code in the Livebook VM

* Update lib/livebook_web/live/session_live/embedded_live.ex

Co-authored-by: José Valim <jose.valim@dashbit.co>

* Use standard error proxy globally in the Livebook node

* Add configuration env variable for setting the default runtime

* Increase evaluation response assertion timeouts

Co-authored-by: José Valim <jose.valim@dashbit.co>
2021-05-10 14:37:38 +02:00
Jonatan Kłosko
5c8e117800
Setup user profiles (#253)
* Add initial user config modal

* Assign user ids

* Update session data to hold user ids

* Get users list for specific ids

* Render user avatar

* User update

* Refactor user changes

* Subscribe to individual user updates

* Show users in side panel

* Add sidebar to homepage

* Don't generate the same color twice in a row

* Add documentation notes

* Fix tests

* Add tests

* Keep users in session data

* Rename color to hex_color
2021-05-03 20:03:19 +02:00
Jonatan Kłosko
aaba58a933
Set up importing notebook from URL or clipboard (#237)
* Set up importing notebook from URL or clipboard

* Extract loading functions into separate module

* Replace import icon with text

* Add TLS peer verification

* Remove unnecessary tests setup step
2021-04-23 17:40:13 +02:00
Jonatan Kłosko
e755ff8122
Restructure settings (#233)
* Force menu items into a single line

* Add shortcut for saving the notebook

* Make the disk icon always show file dialog

* Split runtime and file settings into separate modals

* Add ctrl+s to the shortcuts list

* Add togglable menu to the session page

* Make sure newly saved file appears in the file selector

* Fix path seletor force reloading

* Remove notebook generated in tests

* Add test for file list refresh after save
2021-04-21 23:02:09 +02:00
José Valim
52fc451a45
Remove newline from tests, closes #204 (#231) 2021-04-20 20:17:24 +02:00
Jonatan Kłosko
700987dc02
Add editor completion to Elixir cells (#208)
* Implement editor completion for Elixir cells

* Add completion tests

* Refactor completion

* Only extract Markdown docs for now

* Fix Elixir version-dependent test

* Fix docs matching

* Use upcoming Code.cursor_context/2

* Start temporary completion processes under a supervisor

* Show Erlang docs in completion items

* Update to latest Code.cursor_context

* Refactor completion

* Fix module completion when alias expands to Erlang module

* Remove tests-generated notebook

* Show variables and map fields differently

* Adjust signatures formatting
2021-04-20 19:34:17 +02:00
Frank Hunleth
b1ceedc220
Ignore RFC 1468 switch to ASCII code sequence (#225)
This ignores "\e(B" which sometimes shows up even when the other RFC
1468 Japanese character set switch codes aren't used. This also updates
defmodifier so that it can be used with non-CSI escape codes (the
ones that start with '[').
2021-04-20 15:05:30 +02:00
Frank Hunleth
0f49351c3b
Handle a short ANSI reset ("\e[m") (#220)
It's legal to omit the 0 in the "\e[0m" sequence to reduce the number of
bytes needed to reset the terminal. See
https://en.wikipedia.org/wiki/ANSI_escape_code#CSI_(Control_Sequence_Introducer)_sequences
and a simple explanation and the cited reference for a more involved
one.
2021-04-20 14:16:21 +02:00
José Valim
57047f9c7f
Unify env variables and change auth to use session (#195) 2021-04-15 15:50:29 +02:00
Jakub Perżyło
a9c8e20775
Password access (#187) 2021-04-15 14:15:56 +02:00
Jonatan Kłosko
cf35a46ecf Create write-protected file on the fly in tests 2021-04-14 16:48:11 +02:00
Jonatan Kłosko
83b94c6b0b Add test for selecting a write-protected file 2021-04-14 16:39:12 +02:00
Jonatan Kłosko
d8213c3f68
Change wording from delete session to close session (#160) 2021-04-12 23:24:26 +02:00
Jonatan Kłosko
5f5ef1d0b6
Improve path selector (#159)
* Synchronously save file when the location is chosen and fix default path

* Handle enter press in the path selector
2021-04-12 22:59:48 +02:00
Jonatan Kłosko
c6f9c54f31
Buffer IO evaluation output (#156)
* Buffer IO evaluation output

* Respect CR in IOProxy

* Handle CR when adding cell output rather than during each render

* Optimise CR handling in buffer
2021-04-12 17:56:40 +02:00
Jonatan Kłosko
e9766ed7a5
Introduce token auth and add basic cli configuration (#148)
* 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>
2021-04-08 11:41:52 +02:00
Jonatan Kłosko
7d1d1f4d98
Respect CR in cell output (#137)
* Respect CR in cell output

* Update test/livebook_web/helpers_test.exs

Co-authored-by: José Valim <jose.valim@dashbit.co>

* Improve rewind implementation

Co-authored-by: José Valim <jose.valim@dashbit.co>
2021-04-04 21:22:28 +02:00
Jonatan Kłosko
d93b5d8450
Set up image uploads for Markdown content (#132)
* 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>
2021-04-04 18:55:51 +02:00
Jonatan Kłosko
59fefc1980
Highlight results in path selector (#128)
* Highlight results in path selector

* Increase highlight contrast
2021-04-01 15:49:39 +02:00
Jonatan Kłosko
5efd8eb851
Notebook status indicators (#127)
* 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>
2021-04-01 12:56:19 +02:00
Jonatan Kłosko
5c5b4ece26
Add "Hello Livebook" notebook (#123)
* 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>
2021-03-30 21:42:02 +02:00
Jonatan Kłosko
de83020d05
Home tests (#118)
* Test forking existing session

* Test session deletion

* Fix capitalization
2021-03-25 19:04:49 +01:00
Jonatan Kłosko
50db813092
Show reconnect button when connecting to a matching runtime (#113)
* Show reconnect button when connecting to a matching runtime

* Add runtime config test
2021-03-23 19:41:03 +01:00
Jonatan Kłosko
8217fdd118
Don't show explicitly ignored result (#94)
* Don't show explicitly ignored evaluation results

* Fix multiline ANSI formatting with virtualized lines

* Add reference to IEx.Helpers

* Fix typo
2021-03-20 16:48:23 +01:00
Jonatan Kłosko
90e7941fe4
Redesign (#80)
* 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
2021-03-20 14:10:15 +01:00
Jonatan Kłosko
8b37e32e3a
Escript (#77)
* 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
2021-03-17 01:53:44 +01:00
Jonatan Kłosko
a2d1e2f934
Initial redesign (#75)
* Add Remix icons

* Replace existing icons with Remix icons

* Update fonts

* Redesign homepage

* Redesign shortcuts modal

* Fix tests
2021-03-12 11:57:01 +01:00
Jonatan Kłosko
266bf35bd0
Move focus navigation to the client (#74)
* 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
2021-03-11 15:28:18 +01:00
Jonatan Kłosko
0b6e8f7ef2 Update web client title to Livebook 2021-03-03 23:22:53 +01:00
Jonatan Kłosko
dae6d5c9c3
Rename project (#68)
* Rename references

* Update file and directory names

* Fix homepage tests
2021-03-03 22:56:28 +01:00