diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index eef30dc0b..e6cba7a50 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -31,8 +31,7 @@ jobs:
- name: Install mix dependencies
run: mix deps.get
- name: Check formatting
- # TODO: remove deps.compile on Elixir > 1.14.0-rc.0
- run: mix do deps.compile, format --check-formatted
+ run: mix format --check-formatted
- name: Check warnings
run: mix compile --warnings-as-errors
- name: Run tests
diff --git a/lib/livebook_web.ex b/lib/livebook_web.ex
index 4048dcb1b..c7bdb3b8c 100644
--- a/lib/livebook_web.ex
+++ b/lib/livebook_web.ex
@@ -16,9 +16,12 @@ defmodule LivebookWeb do
root: "lib/livebook_web/templates",
namespace: LivebookWeb
+ # Bring component functionality
+ use Phoenix.Component
+
# Import convenience functions from controllers
import Phoenix.Controller,
- only: [get_flash: 1, get_flash: 2, view_module: 1, view_template: 1]
+ only: [get_csrf_token: 0, view_module: 1, view_template: 1]
# Include shared imports and aliases for views
unquote(view_helpers())
@@ -55,8 +58,10 @@ defmodule LivebookWeb do
defp view_helpers do
quote do
# Use all HTML functionality (forms, tags, etc)
- use Phoenix.HTML
+ import Phoenix.HTML
+ import Phoenix.HTML.Form
+ # TODO: Remove me once all deprecated helpers have been removed
# Import LiveView helpers (live_render, live_component, live_patch, etc)
import Phoenix.LiveView.Helpers
diff --git a/lib/livebook_web/live/env_var_component.ex b/lib/livebook_web/live/env_var_component.ex
index c3aa9b388..a2b04b051 100644
--- a/lib/livebook_web/live/env_var_component.ex
+++ b/lib/livebook_web/live/env_var_component.ex
@@ -32,8 +32,8 @@ defmodule LivebookWeb.EnvVarComponent do
<%= @headline %>
<.form
+ :let={f}
id={"#{@id}-form"}
- let={f}
for={@changeset}
phx-submit={@on_save}
phx-change={JS.push("validate", target: @myself)}
diff --git a/lib/livebook_web/live/home_live/import_content_component.ex b/lib/livebook_web/live/home_live/import_content_component.ex
index fe1e9e98c..e43e3a19a 100644
--- a/lib/livebook_web/live/home_live/import_content_component.ex
+++ b/lib/livebook_web/live/home_live/import_content_component.ex
@@ -15,7 +15,7 @@ defmodule LivebookWeb.HomeLive.ImportContentComponent do
content.
<.form
- let={f}
+ :let={f}
for={:data}
id="import-content"
phx-submit="import"
diff --git a/lib/livebook_web/live/home_live/import_url_component.ex b/lib/livebook_web/live/home_live/import_url_component.ex
index c1a28e8c3..7cf4118e3 100644
--- a/lib/livebook_web/live/home_live/import_url_component.ex
+++ b/lib/livebook_web/live/home_live/import_url_component.ex
@@ -30,7 +30,7 @@ defmodule LivebookWeb.HomeLive.ImportUrlComponent do
Paste the URL to a .livemd file, to a GitHub file, or to a Gist.
<.form
- let={f}
+ :let={f}
for={:data}
phx-submit="import"
phx-change="validate"
diff --git a/lib/livebook_web/live/hooks/policy_hook.ex b/lib/livebook_web/live/hooks/policy_hook.ex
index ccd3b6a14..c3cd2ad4d 100644
--- a/lib/livebook_web/live/hooks/policy_hook.ex
+++ b/lib/livebook_web/live/hooks/policy_hook.ex
@@ -1,5 +1,5 @@
defmodule LivebookWeb.PolicyHook do
- import Phoenix.LiveView
+ import Phoenix.Component
def on_mount(:private, _params, _session, socket) do
{:cont, socket |> assign(:policy, %{read: true, execute: true, edit: true})}
diff --git a/lib/livebook_web/live/hooks/sidebar_hook.ex b/lib/livebook_web/live/hooks/sidebar_hook.ex
index d7097118b..ee42a4db6 100644
--- a/lib/livebook_web/live/hooks/sidebar_hook.ex
+++ b/lib/livebook_web/live/hooks/sidebar_hook.ex
@@ -1,4 +1,5 @@
defmodule LivebookWeb.SidebarHook do
+ import Phoenix.Component
import Phoenix.LiveView
def on_mount(:default, _params, _session, socket) do
diff --git a/lib/livebook_web/live/hooks/user_hook.ex b/lib/livebook_web/live/hooks/user_hook.ex
index 900d35b7d..03cb0e928 100644
--- a/lib/livebook_web/live/hooks/user_hook.ex
+++ b/lib/livebook_web/live/hooks/user_hook.ex
@@ -1,4 +1,5 @@
defmodule LivebookWeb.UserHook do
+ import Phoenix.Component
import Phoenix.LiveView
alias Livebook.Users.User
diff --git a/lib/livebook_web/live/hub/edit/fly_component.ex b/lib/livebook_web/live/hub/edit/fly_component.ex
index 12a11269a..0e9402183 100644
--- a/lib/livebook_web/live/hub/edit/fly_component.ex
+++ b/lib/livebook_web/live/hub/edit/fly_component.ex
@@ -61,9 +61,9 @@ defmodule LivebookWeb.Hub.Edit.FlyComponent do
<.form
+ :let={f}
id={@id}
class="flex flex-col mt-4 space-y-4"
- let={f}
for={@changeset}
phx-submit="save"
phx-change="validate"
diff --git a/lib/livebook_web/live/hub/new/fly_component.ex b/lib/livebook_web/live/hub/new/fly_component.ex
index 03fe01092..b8f990ebf 100644
--- a/lib/livebook_web/live/hub/new/fly_component.ex
+++ b/lib/livebook_web/live/hub/new/fly_component.ex
@@ -25,9 +25,9 @@ defmodule LivebookWeb.Hub.New.FlyComponent do
~H"""
<.form
+ :let={f}
id={@id}
class="flex flex-col space-y-4"
- let={f}
for={@changeset}
phx-submit="save"
phx-change="validate"
diff --git a/lib/livebook_web/live/layout_helpers.ex b/lib/livebook_web/live/layout_helpers.ex
index baffe5844..946434c86 100644
--- a/lib/livebook_web/live/layout_helpers.ex
+++ b/lib/livebook_web/live/layout_helpers.ex
@@ -40,7 +40,6 @@ defmodule LivebookWeb.LayoutHelpers do
- <% # TODO: Use render_slot(@topbar_action) || default() on LiveView 0.18 %>
<%= if @topbar_action == [] do %>
<%= live_redirect to: Routes.home_path(@socket, :page), class: "flex items-center", aria: [label: "go to home"] do %>
<.remix_icon icon="home-6-line" />
diff --git a/lib/livebook_web/live/output.ex b/lib/livebook_web/live/output.ex
index 9fdcf5f4f..b284d3260 100644
--- a/lib/livebook_web/live/output.ex
+++ b/lib/livebook_web/live/output.ex
@@ -239,7 +239,12 @@ defmodule LivebookWeb.Output do
socket: socket,
session_id: session_id
}) do
- assigns = %{message: formatted, secret_name: secret_name}
+ assigns = %{
+ message: formatted,
+ secret_name: secret_name,
+ socket: socket,
+ session_id: session_id
+ }
~H"""
@@ -251,7 +256,7 @@ defmodule LivebookWeb.Output do
<.remix_icon icon="close-circle-line" />
Missing secret <%= inspect(@secret_name) %>
- <%= live_patch to: Routes.session_path(socket, :secrets, session_id, secret_name: secret_name),
+ <%= live_patch to: Routes.session_path(@socket, :secrets, @session_id, secret_name: @secret_name),
class: "button-base button-gray",
aria_label: "add secret",
role: "button" do %>
diff --git a/lib/livebook_web/live/output/text_component.ex b/lib/livebook_web/live/output/text_component.ex
index 92e5094a0..012775f08 100644
--- a/lib/livebook_web/live/output/text_component.ex
+++ b/lib/livebook_web/live/output/text_component.ex
@@ -21,7 +21,8 @@ defmodule LivebookWeb.Output.TextComponent do
id={"virtualized-text-#{@id}-content"}
phx-update="ignore"
phx-no-format
- >
+ >
+
<.form
- let={f}
+ :let={f}
for={:data}
phx-submit="init"
phx-change="validate"
diff --git a/lib/livebook_web/live/session_live/cell_upload_component.ex b/lib/livebook_web/live/session_live/cell_upload_component.ex
index 80a02add7..67a63dc1c 100644
--- a/lib/livebook_web/live/session_live/cell_upload_component.ex
+++ b/lib/livebook_web/live/session_live/cell_upload_component.ex
@@ -78,9 +78,6 @@ defmodule LivebookWeb.SessionLive.CellUploadComponent do
%{images_dir: images_dir} = socket.assigns.session
consume_uploaded_entries(socket, :cell_image, fn %{path: path}, entry ->
- # Ensure the path is normalized (see https://github.com/elixir-plug/plug/issues/1047)
- # TODO: remove once we update to a Plug version with the issue resolved
- path = Path.expand(path)
upload_file = FileSystem.File.local(path)
ext = Path.extname(entry.client_name)
filename = if name == "", do: entry.client_name, else: name <> ext
diff --git a/lib/livebook_web/live/session_live/persistence_live.ex b/lib/livebook_web/live/session_live/persistence_live.ex
index 516486748..07946696f 100644
--- a/lib/livebook_web/live/session_live/persistence_live.ex
+++ b/lib/livebook_web/live/session_live/persistence_live.ex
@@ -66,15 +66,13 @@ defmodule LivebookWeb.SessionLive.PersistenceLive do
<.select
name="autosave_interval_s"
selected={@new_attrs.autosave_interval_s}
- options={
- [
- {5, "every 5 seconds"},
- {30, "every 30 seconds"},
- {60, "every minute"},
- {600, "every 10 minutes"},
- {nil, "never"}
- ]
- }
+ options={[
+ {5, "every 5 seconds"},
+ {30, "every 30 seconds"},
+ {60, "every minute"},
+ {600, "every 10 minutes"},
+ {nil, "never"}
+ ]}
/>
diff --git a/lib/livebook_web/live/session_live/secrets_component.ex b/lib/livebook_web/live/session_live/secrets_component.ex
index 68208a09b..577a1a186 100644
--- a/lib/livebook_web/live/session_live/secrets_component.ex
+++ b/lib/livebook_web/live/session_live/secrets_component.ex
@@ -61,7 +61,7 @@ defmodule LivebookWeb.SessionLive.SecretsComponent do
<% end %>
<.form
- let={f}
+ :let={f}
for={:data}
phx-submit="save"
phx-change="validate"
diff --git a/lib/livebook_web/live/session_live/shortcuts_component.ex b/lib/livebook_web/live/session_live/shortcuts_component.ex
index 5035ac5a9..c8fb8bfbb 100644
--- a/lib/livebook_web/live/session_live/shortcuts_component.ex
+++ b/lib/livebook_web/live/session_live/shortcuts_component.ex
@@ -152,7 +152,8 @@ defmodule LivebookWeb.SessionLive.ShortcutsComponent do
Livebook highly embraces keyboard navigation to improve your productivity.
It operates in one of two modes similarly to the Vim text editor.
- In navigation mode you move around
+ In navigation mode
+ you move around
the notebook and execute commands, whereas in the
insert mode
you have editor focus and directly modify the given cell content.
@@ -239,23 +240,23 @@ defmodule LivebookWeb.SessionLive.ShortcutsComponent do
seq = shortcut[:"seq_#{platform}"] || shortcut.seq
press_all = Map.get(shortcut, :press_all, false)
- joiner =
+ elements =
if press_all do
- assigns = %{}
-
- ~H"""
- <.remix_icon icon="add-line" class="text-lg text-gray-600" />
- """
+ Enum.intersperse(seq, :joiner)
+ else
+ seq
end
- elements = Enum.map_intersperse(seq, joiner, &content_tag("kbd", &1))
-
assigns = %{elements: elements}
~H"""
<%= for element <- @elements do %>
- <%= element %>
+ <%= if element == :joiner do %>
+ <.remix_icon icon="add-line" class="text-lg text-gray-600" />
+ <% else %>
+ <%= element %>
+ <% end %>
<% end %>
"""
diff --git a/lib/livebook_web/live/settings_live/add_file_system_component.ex b/lib/livebook_web/live/settings_live/add_file_system_component.ex
index aeb7bbeb1..cd3dbbf59 100644
--- a/lib/livebook_web/live/settings_live/add_file_system_component.ex
+++ b/lib/livebook_web/live/settings_live/add_file_system_component.ex
@@ -26,7 +26,7 @@ defmodule LivebookWeb.SettingsLive.AddFileSystemComponent do
<% end %>
<.form
- let={f}
+ :let={f}
for={:data}
phx-target={@myself}
phx-submit="add"
diff --git a/lib/livebook_web/live/user_component.ex b/lib/livebook_web/live/user_component.ex
index 460ed418a..59af017f7 100644
--- a/lib/livebook_web/live/user_component.ex
+++ b/lib/livebook_web/live/user_component.ex
@@ -26,7 +26,7 @@ defmodule LivebookWeb.UserComponent do
<.user_avatar user={@user} class="h-20 w-20" text_class="text-3xl" />
<.form
- let={f}
+ :let={f}
for={@changeset}
phx-submit={@on_save |> JS.push("save")}
phx-change="validate"
diff --git a/lib/livebook_web/templates/layout/root.html.heex b/lib/livebook_web/templates/layout/root.html.heex
index 1503f7e91..a88b76794 100644
--- a/lib/livebook_web/templates/layout/root.html.heex
+++ b/lib/livebook_web/templates/layout/root.html.heex
@@ -4,7 +4,7 @@
- <%= csrf_meta_tag() %>
+
<%= live_title_tag(assigns[:page_title] || "Livebook") %>
diff --git a/mix.exs b/mix.exs
index 01842385a..35037b9bc 100644
--- a/mix.exs
+++ b/mix.exs
@@ -89,8 +89,8 @@ defmodule Livebook.MixProject do
[
{:phoenix, "~> 1.5"},
{:phoenix_html, "~> 3.0"},
- {:phoenix_live_view, "~> 0.17.3"},
- {:phoenix_live_dashboard, "~> 0.6.0"},
+ {:phoenix_live_view, "~> 0.18.1"},
+ {:phoenix_live_dashboard, "~> 0.7.0"},
{:telemetry_metrics, "~> 0.4"},
{:telemetry_poller, "~> 1.0"},
{:jason, "~> 1.0"},
diff --git a/mix.lock b/mix.lock
index d79621daf..ff9d17773 100644
--- a/mix.lock
+++ b/mix.lock
@@ -14,20 +14,20 @@
"html_entities": {:hex, :html_entities, "0.5.2", "9e47e70598da7de2a9ff6af8758399251db6dbb7eebe2b013f2bbd2515895c3c", [:mix], [], "hexpm", "c53ba390403485615623b9531e97696f076ed415e8d8058b1dbaa28181f4fdcc"},
"jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"},
"libpe": {:hex, :libpe, "1.1.2", "16337b414c690e0ee9c49fe917b059622f001c399303102b98900c05c229cd9a", [:mix], [], "hexpm", "31df0639fafb603b20078c8db9596c8984f35a151c64ec2e483d9136ff9f428c"},
- "mime": {:hex, :mime, "1.6.0", "dabde576a497cef4bbdd60aceee8160e02a6c89250d6c0b29e56c0dfb00db3d2", [:mix], [], "hexpm", "31a1a8613f8321143dde1dafc36006a17d28d02bdfecb9e95a880fa7aabd19a7"},
+ "mime": {:hex, :mime, "2.0.3", "3676436d3d1f7b81b5a2d2bd8405f412c677558c81b1c92be58c00562bb59095", [:mix], [], "hexpm", "27a30bf0db44d25eecba73755acf4068cbfe26a4372f9eb3e4ea3a45956bff6b"},
"phoenix": {:hex, :phoenix, "1.6.13", "5b3152907afdb8d3a6cdafb4b149e8aa7aabbf1422fd9f7ef4c2a67ead57d24a", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 1.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "13d8806c31176e2066da4df2d7443c144211305c506ed110ad4044335b90171d"},
"phoenix_ecto": {:hex, :phoenix_ecto, "4.4.0", "0672ed4e4808b3fbed494dded89958e22fb882de47a97634c0b13e7b0b5f7720", [:mix], [{:ecto, "~> 3.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "09864e558ed31ee00bd48fcc1d4fc58ae9678c9e81649075431e69dbabb43cc1"},
"phoenix_html": {:hex, :phoenix_html, "3.2.0", "1c1219d4b6cb22ac72f12f73dc5fad6c7563104d083f711c3fcd8551a1f4ae11", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "36ec97ba56d25c0136ef1992c37957e4246b649d620958a1f9fa86165f8bc54f"},
- "phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.6.5", "1495bb014be12c9a9252eca04b9af54246f6b5c1e4cd1f30210cd00ec540cf8e", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.3", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.17.7", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "ef4fa50dd78364409039c99cf6f98ab5209b4c5f8796c17f4db118324f0db852"},
+ "phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.7.0", "9b5ab242e52c33596b132beaf97dccb9e59f7af941f41a22d0fa2465d0b63ab1", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.18.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "374d65e87e1e83528ea30852e34d4ad3022ddb92d642d43ec0b4e3c112046036"},
"phoenix_live_reload": {:hex, :phoenix_live_reload, "1.3.3", "3a53772a6118d5679bf50fc1670505a290e32a1d195df9e069d8c53ab040c054", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "766796676e5f558dbae5d1bdb066849673e956005e3730dfd5affd7a6da4abac"},
- "phoenix_live_view": {:hex, :phoenix_live_view, "0.17.11", "205f6aa5405648c76f2abcd57716f42fc07d8f21dd8ea7b262dd12b324b50c95", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.1", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7177791944b7f90ed18f5935a6a5f07f760b36f7b3bdfb9d28c57440a3c43f99"},
- "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.0.0", "a1ae76717bb168cdeb10ec9d92d1480fec99e3080f011402c0a2d68d47395ffb", [:mix], [], "hexpm", "c52d948c4f261577b9c6fa804be91884b381a7f8f18450c5045975435350f771"},
+ "phoenix_live_view": {:hex, :phoenix_live_view, "0.18.1", "1e1703e26d0580dbd84e9b668e6da164a368f125dfa3d813c9a098da508e2a72", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6 or ~> 1.7", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.1", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b785e1cc13b05e6d9482d3ca1eedfb24e8113fd6421b47996ba16b9d20869706"},
+ "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.1", "ba04e489ef03763bf28a17eb2eaddc2c20c6d217e2150a61e3298b0f4c2012b5", [:mix], [], "hexpm", "81367c6d1eea5878ad726be80808eb5a787a23dee699f96e72b1109c57cdd8d9"},
"phoenix_view": {:hex, :phoenix_view, "1.1.2", "1b82764a065fb41051637872c7bd07ed2fdb6f5c3bd89684d4dca6e10115c95a", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "7ae90ad27b09091266f6adbb61e1d2516a7c3d7062c6789d46a7554ec40f3a56"},
- "plug": {:hex, :plug, "1.12.1", "645678c800601d8d9f27ad1aebba1fdb9ce5b2623ddb961a074da0b96c35187d", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d57e799a777bc20494b784966dc5fbda91eb4a09f571f76545b72a634ce0d30b"},
+ "plug": {:hex, :plug, "1.13.6", "187beb6b67c6cec50503e940f0434ea4692b19384d47e5fdfd701e93cadb4cc2", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "02b9c6b9955bce92c829f31d6284bf53c591ca63c4fb9ff81dfd0418667a34ff"},
"plug_cowboy": {:hex, :plug_cowboy, "2.5.2", "62894ccd601cf9597e2c23911ff12798a8a18d237e9739f58a6b04e4988899fe", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "ea6e87f774c8608d60c8d34022a7d073bd7680a0a013f049fc62bf35efea1044"},
- "plug_crypto": {:hex, :plug_crypto, "1.2.2", "05654514ac717ff3a1843204b424477d9e60c143406aa94daf2274fdd280794d", [:mix], [], "hexpm", "87631c7ad914a5a445f0a3809f99b079113ae4ed4b867348dd9eec288cecb6db"},
+ "plug_crypto": {:hex, :plug_crypto, "1.2.3", "8f77d13aeb32bfd9e654cb68f0af517b371fb34c56c9f2b58fe3df1235c1251a", [:mix], [], "hexpm", "b5672099c6ad5c202c45f5a403f21a3411247f164e4a8fab056e5cd8a290f4a2"},
"ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"},
- "telemetry": {:hex, :telemetry, "1.0.0", "0f453a102cdf13d506b7c0ab158324c337c41f1cc7548f0bc0e130bbf0ae9452", [:rebar3], [], "hexpm", "73bc09fa59b4a0284efb4624335583c528e07ec9ae76aca96ea0673850aec57a"},
+ "telemetry": {:hex, :telemetry, "1.1.0", "a589817034a27eab11144ad24d5c0f9fab1f58173274b1e9bae7074af9cbee51", [:rebar3], [], "hexpm", "b727b2a1f75614774cff2d7565b64d0dfa5bd52ba517f16543e6fc7efcc0df48"},
"telemetry_metrics": {:hex, :telemetry_metrics, "0.6.1", "315d9163a1d4660aedc3fee73f33f1d355dcc76c5c3ab3d59e76e3edf80eef1f", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7be9e0871c41732c233be71e4be11b96e56177bf15dde64a8ac9ce72ac9834c6"},
"telemetry_poller": {:hex, :telemetry_poller, "1.0.0", "db91bb424e07f2bb6e73926fcafbfcbcb295f0193e0a00e825e589a0a47e8453", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b3a24eafd66c3f42da30fc3ca7dda1e9d546c12250a2d60d7b81d264fbec4f6e"},
}
diff --git a/test/livebook_web/plugs/static_plug_test.exs b/test/livebook_web/plugs/static_plug_test.exs
index 627a3c835..e5b0ab12a 100644
--- a/test/livebook_web/plugs/static_plug_test.exs
+++ b/test/livebook_web/plugs/static_plug_test.exs
@@ -52,7 +52,7 @@ defmodule LivebookWeb.StaticPlugTest do
assert conn.status == 200
assert get_resp_header(conn, "content-encoding") == ["gzip"]
- assert get_resp_header(conn, "content-type") == ["application/javascript"]
+ assert get_resp_header(conn, "content-type") == ["text/javascript"]
assert get_resp_header(conn, "etag") == [~s{"digest"}]
end