From a40bf5d24fb75b246b9e11908b24cdcedabcb3af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marcin=20miko=C5=82ajczak?= Date: Sun, 28 Jul 2024 13:44:17 +0200 Subject: [PATCH 01/58] Fix good_locale_code?/1 regex MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: marcin mikołajczak --- .../ecto_type/activity_pub/object_validators/language_code.ex | 2 +- .../activity_pub/object_validators/language_code_test.exs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/ecto_type/activity_pub/object_validators/language_code.ex b/lib/pleroma/ecto_type/activity_pub/object_validators/language_code.ex index 3135af1fac..4779deeb0e 100644 --- a/lib/pleroma/ecto_type/activity_pub/object_validators/language_code.ex +++ b/lib/pleroma/ecto_type/activity_pub/object_validators/language_code.ex @@ -21,7 +21,7 @@ defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.LanguageCode do def load(data), do: {:ok, data} - def good_locale_code?(code) when is_binary(code), do: code =~ ~r<^[a-zA-Z0-9\-]+$> + def good_locale_code?(code) when is_binary(code), do: code =~ ~r<^[a-zA-Z0-9\-]+\z$> def good_locale_code?(_code), do: false end diff --git a/test/pleroma/ecto_type/activity_pub/object_validators/language_code_test.exs b/test/pleroma/ecto_type/activity_pub/object_validators/language_code_test.exs index 2261cc2092..086bb3e971 100644 --- a/test/pleroma/ecto_type/activity_pub/object_validators/language_code_test.exs +++ b/test/pleroma/ecto_type/activity_pub/object_validators/language_code_test.exs @@ -20,6 +20,7 @@ defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.LanguageCodeTest do test "errors for invalid language code" do assert {:error, :invalid_language} = LanguageCode.cast("ru_RU") assert {:error, :invalid_language} = LanguageCode.cast(" ") + assert {:error, :invalid_language} = LanguageCode.cast("en-US\n") end test "errors for non-text" do From 52e9bec15655dd3ba75c133b85266a1ea65a8eef Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 28 Jun 2024 11:47:31 -0400 Subject: [PATCH 02/58] Remove WorkerHelper --- changelog.d/workerhelper.skip | 0 config/config.exs | 7 --- lib/mix/tasks/pleroma/database.ex | 10 ++-- lib/pleroma/emails/mailer.ex | 3 +- lib/pleroma/filter.ex | 11 +++-- lib/pleroma/instances/instance.ex | 3 +- lib/pleroma/mfa/token.ex | 13 +++-- lib/pleroma/object.ex | 3 +- lib/pleroma/search.ex | 6 ++- lib/pleroma/user.ex | 19 +++++--- lib/pleroma/user/import.ex | 30 +++++++----- lib/pleroma/web/activity_pub/activity_pub.ex | 18 ++++--- lib/pleroma/web/activity_pub/publisher.ex | 6 +-- lib/pleroma/web/activity_pub/side_effects.ex | 14 ++++-- lib/pleroma/web/common_api.ex | 6 +-- lib/pleroma/web/federator.ex | 27 +++++++---- lib/pleroma/web/o_auth/token.ex | 9 ++-- lib/pleroma/web/push.ex | 2 +- .../workers/attachments_cleanup_worker.ex | 6 +-- lib/pleroma/workers/background_worker.ex | 8 ++-- lib/pleroma/workers/backup_worker.ex | 4 +- .../workers/cron/digest_emails_worker.ex | 4 +- .../workers/cron/new_users_digest_worker.ex | 6 +-- lib/pleroma/workers/delete_worker.ex | 7 ++- lib/pleroma/workers/mailer_worker.ex | 6 +-- lib/pleroma/workers/mute_expire_worker.ex | 6 +-- lib/pleroma/workers/poll_worker.ex | 6 +-- lib/pleroma/workers/publisher_worker.ex | 22 ++++++--- lib/pleroma/workers/purge_expired_activity.ex | 11 ++--- lib/pleroma/workers/purge_expired_filter.ex | 2 +- lib/pleroma/workers/purge_expired_token.ex | 12 +---- lib/pleroma/workers/receiver_worker.ex | 6 +-- lib/pleroma/workers/remote_fetcher_worker.ex | 6 +-- lib/pleroma/workers/rich_media_worker.ex | 4 +- .../workers/scheduled_activity_worker.ex | 6 +-- lib/pleroma/workers/search_indexing_worker.ex | 6 +-- lib/pleroma/workers/user_refresh_worker.ex | 2 +- lib/pleroma/workers/web_pusher_worker.ex | 6 +-- lib/pleroma/workers/worker_helper.ex | 48 ------------------- test/mix/tasks/pleroma/database_test.exs | 10 ++-- .../workers/purge_expired_activity_test.exs | 30 +++++++----- 41 files changed, 200 insertions(+), 211 deletions(-) create mode 100644 changelog.d/workerhelper.skip delete mode 100644 lib/pleroma/workers/worker_helper.ex diff --git a/changelog.d/workerhelper.skip b/changelog.d/workerhelper.skip new file mode 100644 index 0000000000..e69de29bb2 diff --git a/config/config.exs b/config/config.exs index 4780892f7a..b835a7c807 100644 --- a/config/config.exs +++ b/config/config.exs @@ -600,13 +600,6 @@ config :pleroma, Oban, {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker} ] -config :pleroma, :workers, - retries: [ - federator_incoming: 5, - federator_outgoing: 5, - search_indexing: 2 - ] - config :pleroma, Pleroma.Formatter, class: false, rel: "ugc", diff --git a/lib/mix/tasks/pleroma/database.ex b/lib/mix/tasks/pleroma/database.ex index b82d1f079d..e52b5e0a72 100644 --- a/lib/mix/tasks/pleroma/database.ex +++ b/lib/mix/tasks/pleroma/database.ex @@ -295,10 +295,12 @@ defmodule Mix.Tasks.Pleroma.Database do |> DateTime.from_naive!("Etc/UTC") |> Timex.shift(days: days) - Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ - activity_id: activity.id, - expires_at: expires_at - }) + Pleroma.Workers.PurgeExpiredActivity.enqueue( + %{ + activity_id: activity.id + }, + scheduled_at: expires_at + ) end) end) |> Stream.run() diff --git a/lib/pleroma/emails/mailer.ex b/lib/pleroma/emails/mailer.ex index 1014421308..2a80f8547c 100644 --- a/lib/pleroma/emails/mailer.ex +++ b/lib/pleroma/emails/mailer.ex @@ -25,7 +25,8 @@ defmodule Pleroma.Emails.Mailer do |> :erlang.term_to_binary() |> Base.encode64() - MailerWorker.enqueue("email", %{"encoded_email" => encoded_email, "config" => config}) + MailerWorker.new(%{"op" => "email", "encoded_email" => encoded_email, "config" => config}) + |> Oban.insert() end @doc "callback to perform send email from queue" diff --git a/lib/pleroma/filter.ex b/lib/pleroma/filter.ex index e827d3cbcb..77ed64d4fc 100644 --- a/lib/pleroma/filter.ex +++ b/lib/pleroma/filter.ex @@ -133,10 +133,13 @@ defmodule Pleroma.Filter do defp maybe_add_expires_at(changeset, _), do: changeset defp maybe_add_expiration_job(%{expires_at: %NaiveDateTime{} = expires_at} = filter) do - Pleroma.Workers.PurgeExpiredFilter.enqueue(%{ - filter_id: filter.id, - expires_at: DateTime.from_naive!(expires_at, "Etc/UTC") - }) + Pleroma.Workers.PurgeExpiredFilter.new( + %{ + filter_id: filter.id + }, + scheduled_at: DateTime.from_naive!(expires_at, "Etc/UTC") + ) + |> Oban.insert() end defp maybe_add_expiration_job(_), do: {:ok, nil} diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index 288555146e..33f1229d02 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -297,7 +297,8 @@ defmodule Pleroma.Instances.Instance do all of those users' activities and notifications. """ def delete_users_and_activities(host) when is_binary(host) do - DeleteWorker.enqueue("delete_instance", %{"host" => host}) + DeleteWorker.new(%{"op" => "delete_instance", "host" => host}) + |> Oban.insert() end def perform(:delete_instance, host) when is_binary(host) do diff --git a/lib/pleroma/mfa/token.ex b/lib/pleroma/mfa/token.ex index 57bc11ed52..b53e1c7d0e 100644 --- a/lib/pleroma/mfa/token.ex +++ b/lib/pleroma/mfa/token.ex @@ -52,11 +52,14 @@ defmodule Pleroma.MFA.Token do @spec create(User.t(), Authorization.t() | nil) :: {:ok, t()} | {:error, Ecto.Changeset.t()} def create(user, authorization \\ nil) do with {:ok, token} <- do_create(user, authorization) do - Pleroma.Workers.PurgeExpiredToken.enqueue(%{ - token_id: token.id, - valid_until: DateTime.from_naive!(token.valid_until, "Etc/UTC"), - mod: __MODULE__ - }) + Pleroma.Workers.PurgeExpiredToken.new( + %{ + token_id: token.id, + mod: __MODULE__ + }, + scheduled_at: DateTime.from_naive!(token.valid_until, "Etc/UTC") + ) + |> Oban.insert() {:ok, token} end diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex index eb44b3855b..748f18e6cd 100644 --- a/lib/pleroma/object.ex +++ b/lib/pleroma/object.ex @@ -255,7 +255,8 @@ defmodule Pleroma.Object do @spec cleanup_attachments(boolean(), Object.t()) :: {:ok, Oban.Job.t() | nil} def cleanup_attachments(true, %Object{} = object) do - AttachmentsCleanupWorker.enqueue("cleanup_attachments", %{"object" => object}) + AttachmentsCleanupWorker.new(%{"op" => "cleanup_attachments", "object" => object}) + |> Oban.insert() end def cleanup_attachments(_, _), do: {:ok, nil} diff --git a/lib/pleroma/search.ex b/lib/pleroma/search.ex index b9d2a0188e..30b3ba9586 100644 --- a/lib/pleroma/search.ex +++ b/lib/pleroma/search.ex @@ -2,11 +2,13 @@ defmodule Pleroma.Search do alias Pleroma.Workers.SearchIndexingWorker def add_to_index(%Pleroma.Activity{id: activity_id}) do - SearchIndexingWorker.enqueue("add_to_index", %{"activity" => activity_id}) + SearchIndexingWorker.new(%{"op" => "add_to_index", "activity" => activity_id}) + |> Oban.insert() end def remove_from_index(%Pleroma.Object{id: object_id}) do - SearchIndexingWorker.enqueue("remove_from_index", %{"object" => object_id}) + SearchIndexingWorker.new(%{"op" => "remove_from_index", "object" => object_id}) + |> Oban.insert() end def search(query, options) do diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index e28d76a7c8..0e9d708313 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -736,7 +736,8 @@ defmodule Pleroma.User do end def force_password_reset_async(user) do - BackgroundWorker.enqueue("force_password_reset", %{"user_id" => user.id}) + BackgroundWorker.new(%{"op" => "force_password_reset", "user_id" => user.id}) + |> Oban.insert() end @spec force_password_reset(User.t()) :: {:ok, User.t()} | {:error, Ecto.Changeset.t()} @@ -1218,7 +1219,8 @@ defmodule Pleroma.User do def update_and_set_cache(changeset) do with {:ok, user} <- Repo.update(changeset, stale_error_field: :id) do if get_change(changeset, :raw_fields) do - BackgroundWorker.enqueue("verify_fields_links", %{"user_id" => user.id}) + BackgroundWorker.new(%{"op" => "verify_fields_links", "user_id" => user.id}) + |> Oban.insert() end set_cache(user) @@ -1589,11 +1591,11 @@ defmodule Pleroma.User do )) || {:ok, nil} do if duration > 0 do - Pleroma.Workers.MuteExpireWorker.enqueue( - "unmute_user", - %{"muter_id" => muter.id, "mutee_id" => mutee.id}, + Pleroma.Workers.MuteExpireWorker.new( + %{"op" => "unmute_user", "muter_id" => muter.id, "mutee_id" => mutee.id}, scheduled_at: expires_at ) + |> Oban.insert() end @cachex.del(:user_cache, "muted_users_ap_ids:#{muter.ap_id}") @@ -1836,7 +1838,8 @@ defmodule Pleroma.User do defp maybe_filter_on_ap_id(query, _ap_ids), do: query def set_activation_async(user, status \\ true) do - BackgroundWorker.enqueue("user_activation", %{"user_id" => user.id, "status" => status}) + BackgroundWorker.new(%{"op" => "user_activation", "user_id" => user.id, "status" => status}) + |> Oban.insert() end @spec set_activation([User.t()], boolean()) :: {:ok, User.t()} | {:error, Ecto.Changeset.t()} @@ -1983,7 +1986,9 @@ defmodule Pleroma.User do def delete(%User{} = user) do # Purge the user immediately purge(user) - DeleteWorker.enqueue("delete_user", %{"user_id" => user.id}) + + DeleteWorker.new(%{"op" => "delete_user", "user_id" => user.id}) + |> Oban.insert() end # *Actually* delete the user from the DB diff --git a/lib/pleroma/user/import.ex b/lib/pleroma/user/import.ex index 53ffd1ab3d..11905237c3 100644 --- a/lib/pleroma/user/import.ex +++ b/lib/pleroma/user/import.ex @@ -63,23 +63,29 @@ defmodule Pleroma.User.Import do end def blocks_import(%User{} = blocker, [_ | _] = identifiers) do - BackgroundWorker.enqueue( - "blocks_import", - %{"user_id" => blocker.id, "identifiers" => identifiers} - ) + BackgroundWorker.new(%{ + "op" => "blocks_import", + "user_id" => blocker.id, + "identifiers" => identifiers + }) + |> Oban.insert() end def follow_import(%User{} = follower, [_ | _] = identifiers) do - BackgroundWorker.enqueue( - "follow_import", - %{"user_id" => follower.id, "identifiers" => identifiers} - ) + BackgroundWorker.new(%{ + "op" => "follow_import", + "user_id" => follower.id, + "identifiers" => identifiers + }) + |> Oban.insert() end def mutes_import(%User{} = user, [_ | _] = identifiers) do - BackgroundWorker.enqueue( - "mutes_import", - %{"user_id" => user.id, "identifiers" => identifiers} - ) + BackgroundWorker.new(%{ + "op" => "mutes_import", + "user_id" => user.id, + "identifiers" => identifiers + }) + |> Oban.insert() end end diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index b30b0cabe5..a2a94a0ff4 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -222,10 +222,12 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do %{data: %{"expires_at" => %DateTime{} = expires_at}} = activity ) do with {:ok, _job} <- - Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ - activity_id: activity.id, - expires_at: expires_at - }) do + Pleroma.Workers.PurgeExpiredActivity.enqueue( + %{ + activity_id: activity.id + }, + scheduled_at: expires_at + ) do {:ok, activity} end end @@ -446,10 +448,12 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do _ <- notify_and_stream(activity) do maybe_federate(activity) - BackgroundWorker.enqueue("move_following", %{ + BackgroundWorker.new(%{ + "op" => "move_following", "origin_id" => origin.id, "target_id" => target.id }) + |> Oban.insert() {:ok, activity} else @@ -1797,10 +1801,12 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do # enqueue a task to fetch all pinned objects Enum.each(pins, fn {ap_id, _} -> if is_nil(Object.get_cached_by_ap_id(ap_id)) do - Pleroma.Workers.RemoteFetcherWorker.enqueue("fetch_remote", %{ + Pleroma.Workers.RemoteFetcherWorker.new(%{ + "op" => "fetch_remote", "id" => ap_id, "depth" => 1 }) + |> Oban.insert() end end) end diff --git a/lib/pleroma/web/activity_pub/publisher.ex b/lib/pleroma/web/activity_pub/publisher.ex index e040753dc6..f71652cb74 100644 --- a/lib/pleroma/web/activity_pub/publisher.ex +++ b/lib/pleroma/web/activity_pub/publisher.ex @@ -30,11 +30,11 @@ defmodule Pleroma.Web.ActivityPub.Publisher do """ @spec enqueue_one(map(), Keyword.t()) :: {:ok, %Oban.Job{}} def enqueue_one(%{} = params, worker_args \\ []) do - PublisherWorker.enqueue( - "publish_one", - %{"params" => params}, + PublisherWorker.new( + %{"op" => "publish_one", "params" => params}, worker_args ) + |> Oban.insert() end @doc """ diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index cc1c7a0afb..d6d4036719 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -223,10 +223,12 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do if Pleroma.Web.Federator.allowed_thread_distance?(reply_depth) and object.data["replies"] != nil do for reply_id <- object.data["replies"] do - Pleroma.Workers.RemoteFetcherWorker.enqueue("fetch_remote", %{ + Pleroma.Workers.RemoteFetcherWorker.new(%{ + "op" => "fetch_remote", "id" => reply_id, "depth" => reply_depth }) + |> Oban.insert() end end @@ -410,10 +412,12 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do {:ok, expires_at} = Pleroma.EctoType.ActivityPub.ObjectValidators.DateTime.cast(meta[:expires_at]) - Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ - activity_id: meta[:activity_id], - expires_at: expires_at - }) + Pleroma.Workers.PurgeExpiredActivity.enqueue( + %{ + activity_id: meta[:activity_id] + }, + scheduled_at: expires_at + ) end {:ok, object, meta} diff --git a/lib/pleroma/web/common_api.ex b/lib/pleroma/web/common_api.ex index b90b6a6d90..1ed905d6cb 100644 --- a/lib/pleroma/web/common_api.ex +++ b/lib/pleroma/web/common_api.ex @@ -559,11 +559,11 @@ defmodule Pleroma.Web.CommonAPI do with {:ok, _} <- ThreadMute.add_mute(user.id, activity.data["context"]), _ <- Pleroma.Notification.mark_context_as_read(user, activity.data["context"]) do if expires_in > 0 do - Pleroma.Workers.MuteExpireWorker.enqueue( - "unmute_conversation", - %{"user_id" => user.id, "activity_id" => activity.id}, + Pleroma.Workers.MuteExpireWorker.new( + %{"op" => "unmute_conversation", "user_id" => user.id, "activity_id" => activity.id}, schedule_in: expires_in ) + |> Oban.insert() end {:ok, activity} diff --git a/lib/pleroma/web/federator.ex b/lib/pleroma/web/federator.ex index 3d3101d61e..c740fc85fa 100644 --- a/lib/pleroma/web/federator.ex +++ b/lib/pleroma/web/federator.ex @@ -35,22 +35,30 @@ defmodule Pleroma.Web.Federator do end # Client API - def incoming_ap_doc(%{params: _params, req_headers: _req_headers} = args) do - job_args = Enum.into(args, %{}, fn {k, v} -> {Atom.to_string(k), v} end) - - ReceiverWorker.enqueue( - "incoming_ap_doc", - Map.put(job_args, "timeout", :timer.seconds(20)), + def incoming_ap_doc(%{params: params, req_headers: req_headers}) do + ReceiverWorker.new( + %{ + "op" => "incoming_ap_doc", + "req_headers" => req_headers, + "params" => params, + "timeout" => :timer.seconds(20) + }, priority: 2 ) + |> Oban.insert() end def incoming_ap_doc(%{"type" => "Delete"} = params) do - ReceiverWorker.enqueue("incoming_ap_doc", %{"params" => params}, priority: 3, queue: :slow) + ReceiverWorker.new(%{"op" => "incoming_ap_doc", "params" => params}, + priority: 3, + queue: :slow + ) + |> Oban.insert() end def incoming_ap_doc(params) do - ReceiverWorker.enqueue("incoming_ap_doc", %{"params" => params}) + ReceiverWorker.new(%{"op" => "incoming_ap_doc", "params" => params}) + |> Oban.insert() end @impl true @@ -60,9 +68,10 @@ defmodule Pleroma.Web.Federator do @impl true def publish(%Pleroma.Activity{data: %{"type" => type}} = activity) do - PublisherWorker.enqueue("publish", %{"activity_id" => activity.id}, + PublisherWorker.new(%{"op" => "publish", "activity_id" => activity.id}, priority: publish_priority(type) ) + |> Oban.insert() end defp publish_priority("Delete"), do: 3 diff --git a/lib/pleroma/web/o_auth/token.ex b/lib/pleroma/web/o_auth/token.ex index 9b1198b428..d964250944 100644 --- a/lib/pleroma/web/o_auth/token.ex +++ b/lib/pleroma/web/o_auth/token.ex @@ -100,11 +100,10 @@ defmodule Pleroma.Web.OAuth.Token do def create(%App{} = app, %User{} = user, attrs \\ %{}) do with {:ok, token} <- do_create(app, user, attrs) do if Pleroma.Config.get([:oauth2, :clean_expired_tokens]) do - Pleroma.Workers.PurgeExpiredToken.enqueue(%{ - token_id: token.id, - valid_until: DateTime.from_naive!(token.valid_until, "Etc/UTC"), - mod: __MODULE__ - }) + Pleroma.Workers.PurgeExpiredToken.new(%{token_id: token.id, mod: __MODULE__}, + scheduled_at: DateTime.from_naive!(token.valid_until, "Etc/UTC") + ) + |> Oban.insert() end {:ok, token} diff --git a/lib/pleroma/web/push.ex b/lib/pleroma/web/push.ex index d4693f63e4..d783f776a5 100644 --- a/lib/pleroma/web/push.ex +++ b/lib/pleroma/web/push.ex @@ -28,6 +28,6 @@ defmodule Pleroma.Web.Push do @spec send(Pleroma.Notification.t()) :: {:ok, Oban.Job.t()} | {:error, Oban.Job.changeset() | term()} def send(notification) do - WebPusherWorker.enqueue("web_push", %{"notification_id" => notification.id}) + WebPusherWorker.new(%{"op" => "web_push", "notification_id" => notification.id}) end end diff --git a/lib/pleroma/workers/attachments_cleanup_worker.ex b/lib/pleroma/workers/attachments_cleanup_worker.ex index 0b570b70b0..e2f92b1fd0 100644 --- a/lib/pleroma/workers/attachments_cleanup_worker.ex +++ b/lib/pleroma/workers/attachments_cleanup_worker.ex @@ -8,9 +8,9 @@ defmodule Pleroma.Workers.AttachmentsCleanupWorker do alias Pleroma.Object alias Pleroma.Repo - use Pleroma.Workers.WorkerHelper, queue: "slow" + use Oban.Worker, queue: :slow - @impl Oban.Worker + @impl true def perform(%Job{ args: %{ "op" => "cleanup_attachments", @@ -31,7 +31,7 @@ defmodule Pleroma.Workers.AttachmentsCleanupWorker do def perform(%Job{args: %{"op" => "cleanup_attachments", "object" => _object}}), do: {:ok, :skip} - @impl Oban.Worker + @impl true def timeout(_job), do: :timer.seconds(900) defp do_clean({object_ids, attachment_urls}) do diff --git a/lib/pleroma/workers/background_worker.ex b/lib/pleroma/workers/background_worker.ex index 870aef3c6a..60da2d5ca7 100644 --- a/lib/pleroma/workers/background_worker.ex +++ b/lib/pleroma/workers/background_worker.ex @@ -5,9 +5,9 @@ defmodule Pleroma.Workers.BackgroundWorker do alias Pleroma.User - use Pleroma.Workers.WorkerHelper, queue: "background" + use Oban.Worker, queue: :background - @impl Oban.Worker + @impl true def perform(%Job{args: %{"op" => "user_activation", "user_id" => user_id, "status" => status}}) do user = User.get_cached_by_id(user_id) @@ -39,6 +39,6 @@ defmodule Pleroma.Workers.BackgroundWorker do User.perform(:verify_fields_links, user) end - @impl Oban.Worker - def timeout(_job), do: :timer.seconds(15) + @impl true + def timeout(_job), do: :timer.seconds(900) end diff --git a/lib/pleroma/workers/backup_worker.ex b/lib/pleroma/workers/backup_worker.ex index d1b6fcdadf..6466d8d73e 100644 --- a/lib/pleroma/workers/backup_worker.ex +++ b/lib/pleroma/workers/backup_worker.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Workers.BackupWorker do alias Pleroma.Config.Getting, as: Config alias Pleroma.User.Backup - @impl Oban.Worker + @impl true def perform(%Job{ args: %{"op" => "process", "backup_id" => backup_id} }) do @@ -32,7 +32,7 @@ defmodule Pleroma.Workers.BackupWorker do end end - @impl Oban.Worker + @impl true def timeout(_job), do: Config.get([Backup, :timeout], :timer.minutes(30)) defp has_email?(user) do diff --git a/lib/pleroma/workers/cron/digest_emails_worker.ex b/lib/pleroma/workers/cron/digest_emails_worker.ex index 17e92d10b0..b50b52a7b0 100644 --- a/lib/pleroma/workers/cron/digest_emails_worker.ex +++ b/lib/pleroma/workers/cron/digest_emails_worker.ex @@ -18,7 +18,7 @@ defmodule Pleroma.Workers.Cron.DigestEmailsWorker do require Logger - @impl Oban.Worker + @impl true def perform(_job) do config = Config.get([:email_notifications, :digest]) @@ -59,6 +59,6 @@ defmodule Pleroma.Workers.Cron.DigestEmailsWorker do User.touch_last_digest_emailed_at(user) end - @impl Oban.Worker + @impl true def timeout(_job), do: :timer.seconds(5) end diff --git a/lib/pleroma/workers/cron/new_users_digest_worker.ex b/lib/pleroma/workers/cron/new_users_digest_worker.ex index 1f57aad4a2..7876499831 100644 --- a/lib/pleroma/workers/cron/new_users_digest_worker.ex +++ b/lib/pleroma/workers/cron/new_users_digest_worker.ex @@ -9,9 +9,9 @@ defmodule Pleroma.Workers.Cron.NewUsersDigestWorker do import Ecto.Query - use Pleroma.Workers.WorkerHelper, queue: "background" + use Oban.Worker, queue: :background - @impl Oban.Worker + @impl true def perform(_job) do if Pleroma.Config.get([Pleroma.Emails.NewUsersDigestEmail, :enabled]) do today = NaiveDateTime.utc_now() |> Timex.beginning_of_day() @@ -61,6 +61,6 @@ defmodule Pleroma.Workers.Cron.NewUsersDigestWorker do :ok end - @impl Oban.Worker + @impl true def timeout(_job), do: :timer.seconds(5) end diff --git a/lib/pleroma/workers/delete_worker.ex b/lib/pleroma/workers/delete_worker.ex index 97003fb69e..6a1c7bb383 100644 --- a/lib/pleroma/workers/delete_worker.ex +++ b/lib/pleroma/workers/delete_worker.ex @@ -6,10 +6,9 @@ defmodule Pleroma.Workers.DeleteWorker do alias Pleroma.Instances.Instance alias Pleroma.User - use Pleroma.Workers.WorkerHelper, queue: "slow" - - @impl Oban.Worker + use Oban.Worker, queue: :slow + @impl true def perform(%Job{args: %{"op" => "delete_user", "user_id" => user_id}}) do user = User.get_cached_by_id(user_id) User.perform(:delete, user) @@ -19,6 +18,6 @@ defmodule Pleroma.Workers.DeleteWorker do Instance.perform(:delete_instance, host) end - @impl Oban.Worker + @impl true def timeout(_job), do: :timer.seconds(900) end diff --git a/lib/pleroma/workers/mailer_worker.ex b/lib/pleroma/workers/mailer_worker.ex index 652bf77e01..b0259b1917 100644 --- a/lib/pleroma/workers/mailer_worker.ex +++ b/lib/pleroma/workers/mailer_worker.ex @@ -3,9 +3,9 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Workers.MailerWorker do - use Pleroma.Workers.WorkerHelper, queue: "background" + use Oban.Worker, queue: :background - @impl Oban.Worker + @impl true def perform(%Job{args: %{"op" => "email", "encoded_email" => encoded_email, "config" => config}}) do encoded_email |> Base.decode64!() @@ -13,6 +13,6 @@ defmodule Pleroma.Workers.MailerWorker do |> Pleroma.Emails.Mailer.deliver(config) end - @impl Oban.Worker + @impl true def timeout(_job), do: :timer.seconds(5) end diff --git a/lib/pleroma/workers/mute_expire_worker.ex b/lib/pleroma/workers/mute_expire_worker.ex index a7ab5883af..8356a775d7 100644 --- a/lib/pleroma/workers/mute_expire_worker.ex +++ b/lib/pleroma/workers/mute_expire_worker.ex @@ -3,9 +3,9 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Workers.MuteExpireWorker do - use Pleroma.Workers.WorkerHelper, queue: "background" + use Oban.Worker, queue: :background - @impl Oban.Worker + @impl true def perform(%Job{args: %{"op" => "unmute_user", "muter_id" => muter_id, "mutee_id" => mutee_id}}) do Pleroma.User.unmute(muter_id, mutee_id) :ok @@ -18,6 +18,6 @@ defmodule Pleroma.Workers.MuteExpireWorker do :ok end - @impl Oban.Worker + @impl true def timeout(_job), do: :timer.seconds(5) end diff --git a/lib/pleroma/workers/poll_worker.ex b/lib/pleroma/workers/poll_worker.ex index af8997e702..d263aa1b9e 100644 --- a/lib/pleroma/workers/poll_worker.ex +++ b/lib/pleroma/workers/poll_worker.ex @@ -6,13 +6,13 @@ defmodule Pleroma.Workers.PollWorker do @moduledoc """ Generates notifications when a poll ends. """ - use Pleroma.Workers.WorkerHelper, queue: "background" + use Oban.Worker, queue: :background alias Pleroma.Activity alias Pleroma.Notification alias Pleroma.Object - @impl Oban.Worker + @impl true def perform(%Job{args: %{"op" => "poll_end", "activity_id" => activity_id}}) do with %Activity{} = activity <- find_poll_activity(activity_id), {:ok, notifications} <- Notification.create_poll_notifications(activity) do @@ -23,7 +23,7 @@ defmodule Pleroma.Workers.PollWorker do end end - @impl Oban.Worker + @impl true def timeout(_job), do: :timer.seconds(5) defp find_poll_activity(activity_id) do diff --git a/lib/pleroma/workers/publisher_worker.ex b/lib/pleroma/workers/publisher_worker.ex index 63fcf4ac22..7d9b022de3 100644 --- a/lib/pleroma/workers/publisher_worker.ex +++ b/lib/pleroma/workers/publisher_worker.ex @@ -6,13 +6,9 @@ defmodule Pleroma.Workers.PublisherWorker do alias Pleroma.Activity alias Pleroma.Web.Federator - use Pleroma.Workers.WorkerHelper, queue: "federator_outgoing" + use Oban.Worker, queue: :federator_outgoing, max_attempts: 5 - def backoff(%Job{attempt: attempt}) when is_integer(attempt) do - Pleroma.Workers.WorkerHelper.sidekiq_backoff(attempt, 5) - end - - @impl Oban.Worker + @impl true def perform(%Job{args: %{"op" => "publish", "activity_id" => activity_id}}) do activity = Activity.get_by_id(activity_id) Federator.perform(:publish, activity) @@ -23,6 +19,18 @@ defmodule Pleroma.Workers.PublisherWorker do Federator.perform(:publish_one, params) end - @impl Oban.Worker + @impl true def timeout(_job), do: :timer.seconds(10) + + @base_backoff 15 + @pow 5 + @impl true + def backoff(%Job{attempt: attempt}) when is_integer(attempt) do + backoff = + :math.pow(attempt, @pow) + + @base_backoff + + :rand.uniform(2 * @base_backoff) * attempt + + trunc(backoff) + end end diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex index f48e340420..f05e75f46a 100644 --- a/lib/pleroma/workers/purge_expired_activity.ex +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -13,16 +13,13 @@ defmodule Pleroma.Workers.PurgeExpiredActivity do alias Pleroma.Activity - @spec enqueue(map()) :: + @spec enqueue(map(), list()) :: {:ok, Oban.Job.t()} | {:error, :expired_activities_disabled} | {:error, :expiration_too_close} - def enqueue(args) do + def enqueue(params, worker_args) do with true <- enabled?() do - {scheduled_at, args} = Map.pop(args, :expires_at) - - args - |> new(scheduled_at: scheduled_at) + new(params, worker_args) |> Oban.insert() end end @@ -35,7 +32,7 @@ defmodule Pleroma.Workers.PurgeExpiredActivity do end end - @impl Oban.Worker + @impl true def timeout(_job), do: :timer.seconds(5) defp enabled? do diff --git a/lib/pleroma/workers/purge_expired_filter.ex b/lib/pleroma/workers/purge_expired_filter.ex index 1f6931e4c2..0405f66847 100644 --- a/lib/pleroma/workers/purge_expired_filter.ex +++ b/lib/pleroma/workers/purge_expired_filter.ex @@ -31,7 +31,7 @@ defmodule Pleroma.Workers.PurgeExpiredFilter do |> Repo.delete() end - @impl Oban.Worker + @impl true def timeout(_job), do: :timer.seconds(5) @spec get_expiration(pos_integer()) :: Job.t() | nil diff --git a/lib/pleroma/workers/purge_expired_token.ex b/lib/pleroma/workers/purge_expired_token.ex index 1854bf5619..ff962f21b6 100644 --- a/lib/pleroma/workers/purge_expired_token.ex +++ b/lib/pleroma/workers/purge_expired_token.ex @@ -9,16 +9,6 @@ defmodule Pleroma.Workers.PurgeExpiredToken do use Oban.Worker, queue: :background, max_attempts: 1 - @spec enqueue(%{token_id: integer(), valid_until: DateTime.t(), mod: module()}) :: - {:ok, Oban.Job.t()} | {:error, Ecto.Changeset.t()} - def enqueue(args) do - {scheduled_at, args} = Map.pop(args, :valid_until) - - args - |> __MODULE__.new(scheduled_at: scheduled_at) - |> Oban.insert() - end - @impl true def perform(%Oban.Job{args: %{"token_id" => id, "mod" => module}}) do module @@ -27,6 +17,6 @@ defmodule Pleroma.Workers.PurgeExpiredToken do |> Pleroma.Repo.delete() end - @impl Oban.Worker + @impl true def timeout(_job), do: :timer.seconds(5) end diff --git a/lib/pleroma/workers/receiver_worker.ex b/lib/pleroma/workers/receiver_worker.ex index fd5c13fca2..d4db97b639 100644 --- a/lib/pleroma/workers/receiver_worker.ex +++ b/lib/pleroma/workers/receiver_worker.ex @@ -7,9 +7,9 @@ defmodule Pleroma.Workers.ReceiverWorker do alias Pleroma.User alias Pleroma.Web.Federator - use Pleroma.Workers.WorkerHelper, queue: "federator_incoming" + use Oban.Worker, queue: :federator_incoming, max_attempts: 5 - @impl Oban.Worker + @impl true def perform(%Job{ args: %{ @@ -51,7 +51,7 @@ defmodule Pleroma.Workers.ReceiverWorker do end end - @impl Oban.Worker + @impl true def timeout(%_{args: %{"timeout" => timeout}}), do: timeout def timeout(_job), do: :timer.seconds(5) diff --git a/lib/pleroma/workers/remote_fetcher_worker.ex b/lib/pleroma/workers/remote_fetcher_worker.ex index 60096e14b5..e43765733e 100644 --- a/lib/pleroma/workers/remote_fetcher_worker.ex +++ b/lib/pleroma/workers/remote_fetcher_worker.ex @@ -5,9 +5,9 @@ defmodule Pleroma.Workers.RemoteFetcherWorker do alias Pleroma.Object.Fetcher - use Pleroma.Workers.WorkerHelper, queue: "background" + use Oban.Worker, queue: :background - @impl Oban.Worker + @impl true def perform(%Job{args: %{"op" => "fetch_remote", "id" => id} = args}) do case Fetcher.fetch_object_from_id(id, depth: args["depth"]) do {:ok, _object} -> @@ -30,6 +30,6 @@ defmodule Pleroma.Workers.RemoteFetcherWorker do end end - @impl Oban.Worker + @impl true def timeout(_job), do: :timer.seconds(15) end diff --git a/lib/pleroma/workers/rich_media_worker.ex b/lib/pleroma/workers/rich_media_worker.ex index 2ebf42d4f2..d5ba7b63ec 100644 --- a/lib/pleroma/workers/rich_media_worker.ex +++ b/lib/pleroma/workers/rich_media_worker.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Workers.RichMediaWorker do use Oban.Worker, queue: :background, max_attempts: 3, unique: [period: 300] - @impl Oban.Worker + @impl true def perform(%Job{args: %{"op" => "expire", "url" => url} = _args}) do Card.delete(url) end @@ -33,7 +33,7 @@ defmodule Pleroma.Workers.RichMediaWorker do # a slow/infinite data stream and insert a negative cache entry for the URL # We pad it by 2 seconds to be certain a slow connection is detected and we # can inject a negative cache entry for the URL - @impl Oban.Worker + @impl true def timeout(_job) do Config.get!([:rich_media, :timeout]) + :timer.seconds(2) end diff --git a/lib/pleroma/workers/scheduled_activity_worker.ex b/lib/pleroma/workers/scheduled_activity_worker.ex index ab62686f42..da386e0c32 100644 --- a/lib/pleroma/workers/scheduled_activity_worker.ex +++ b/lib/pleroma/workers/scheduled_activity_worker.ex @@ -7,7 +7,7 @@ defmodule Pleroma.Workers.ScheduledActivityWorker do The worker to post scheduled activity. """ - use Pleroma.Workers.WorkerHelper, queue: "federator_outgoing" + use Oban.Worker, queue: :federator_outgoing, max_attempts: 5 alias Pleroma.Repo alias Pleroma.ScheduledActivity @@ -15,7 +15,7 @@ defmodule Pleroma.Workers.ScheduledActivityWorker do require Logger - @impl Oban.Worker + @impl true def perform(%Job{args: %{"activity_id" => activity_id}}) do with %ScheduledActivity{} = scheduled_activity <- find_scheduled_activity(activity_id), %User{} = user <- find_user(scheduled_activity.user_id) do @@ -37,7 +37,7 @@ defmodule Pleroma.Workers.ScheduledActivityWorker do end end - @impl Oban.Worker + @impl true def timeout(_job), do: :timer.seconds(5) defp find_scheduled_activity(id) do diff --git a/lib/pleroma/workers/search_indexing_worker.ex b/lib/pleroma/workers/search_indexing_worker.ex index 8969ae3788..001f5254d4 100644 --- a/lib/pleroma/workers/search_indexing_worker.ex +++ b/lib/pleroma/workers/search_indexing_worker.ex @@ -1,7 +1,7 @@ defmodule Pleroma.Workers.SearchIndexingWorker do - use Pleroma.Workers.WorkerHelper, queue: "search_indexing" + use Oban.Worker, queue: :search_indexing, max_attempts: 2 - @impl Oban.Worker + @impl true alias Pleroma.Config.Getting, as: Config @@ -21,6 +21,6 @@ defmodule Pleroma.Workers.SearchIndexingWorker do search_module.remove_from_index(object) end - @impl Oban.Worker + @impl true def timeout(_job), do: :timer.seconds(5) end diff --git a/lib/pleroma/workers/user_refresh_worker.ex b/lib/pleroma/workers/user_refresh_worker.ex index fb90e9c9c0..222a4a8f7e 100644 --- a/lib/pleroma/workers/user_refresh_worker.ex +++ b/lib/pleroma/workers/user_refresh_worker.ex @@ -12,6 +12,6 @@ defmodule Pleroma.Workers.UserRefreshWorker do User.fetch_by_ap_id(ap_id) end - @impl Oban.Worker + @impl true def timeout(_job), do: :timer.seconds(15) end diff --git a/lib/pleroma/workers/web_pusher_worker.ex b/lib/pleroma/workers/web_pusher_worker.ex index c549d3cd65..f4232d02af 100644 --- a/lib/pleroma/workers/web_pusher_worker.ex +++ b/lib/pleroma/workers/web_pusher_worker.ex @@ -7,9 +7,9 @@ defmodule Pleroma.Workers.WebPusherWorker do alias Pleroma.Repo alias Pleroma.Web.Push.Impl - use Pleroma.Workers.WorkerHelper, queue: "web_push" + use Oban.Worker, queue: :web_push - @impl Oban.Worker + @impl true def perform(%Job{args: %{"op" => "web_push", "notification_id" => notification_id}}) do notification = Notification @@ -20,6 +20,6 @@ defmodule Pleroma.Workers.WebPusherWorker do |> Enum.each(&Impl.deliver(&1)) end - @impl Oban.Worker + @impl true def timeout(_job), do: :timer.seconds(5) end diff --git a/lib/pleroma/workers/worker_helper.ex b/lib/pleroma/workers/worker_helper.ex deleted file mode 100644 index 1d20cbd893..0000000000 --- a/lib/pleroma/workers/worker_helper.ex +++ /dev/null @@ -1,48 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Workers.WorkerHelper do - alias Pleroma.Config - alias Pleroma.Workers.WorkerHelper - - def worker_args(queue) do - case Config.get([:workers, :retries, queue]) do - nil -> [] - max_attempts -> [max_attempts: max_attempts] - end - end - - def sidekiq_backoff(attempt, pow \\ 4, base_backoff \\ 15) do - backoff = - :math.pow(attempt, pow) + - base_backoff + - :rand.uniform(2 * base_backoff) * attempt - - trunc(backoff) - end - - defmacro __using__(opts) do - caller_module = __CALLER__.module - queue = Keyword.fetch!(opts, :queue) - - quote do - # Note: `max_attempts` is intended to be overridden in `new/2` call - use Oban.Worker, - queue: unquote(queue), - max_attempts: 1 - - alias Oban.Job - - def enqueue(op, params, worker_args \\ []) do - params = Map.merge(%{"op" => op}, params) - queue_atom = String.to_atom(unquote(queue)) - worker_args = worker_args ++ WorkerHelper.worker_args(queue_atom) - - unquote(caller_module) - |> apply(:new, [params, worker_args]) - |> Oban.insert() - end - end - end -end diff --git a/test/mix/tasks/pleroma/database_test.exs b/test/mix/tasks/pleroma/database_test.exs index a51a3bf3dc..96a9255288 100644 --- a/test/mix/tasks/pleroma/database_test.exs +++ b/test/mix/tasks/pleroma/database_test.exs @@ -623,10 +623,12 @@ defmodule Mix.Tasks.Pleroma.DatabaseTest do expires_at = DateTime.add(DateTime.utc_now(), 60 * 61) - Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ - activity_id: activity_id3, - expires_at: expires_at - }) + Pleroma.Workers.PurgeExpiredActivity.enqueue( + %{ + activity_id: activity_id3 + }, + scheduled_at: expires_at + ) Mix.Tasks.Pleroma.Database.run(["ensure_expiration"]) diff --git a/test/pleroma/workers/purge_expired_activity_test.exs b/test/pleroma/workers/purge_expired_activity_test.exs index 040ff6a51c..ea563d3d31 100644 --- a/test/pleroma/workers/purge_expired_activity_test.exs +++ b/test/pleroma/workers/purge_expired_activity_test.exs @@ -14,10 +14,12 @@ defmodule Pleroma.Workers.PurgeExpiredActivityTest do activity = insert(:note_activity) assert {:ok, _} = - PurgeExpiredActivity.enqueue(%{ - activity_id: activity.id, - expires_at: DateTime.add(DateTime.utc_now(), 3601) - }) + PurgeExpiredActivity.enqueue( + %{ + activity_id: activity.id + }, + scheduled_at: DateTime.add(DateTime.utc_now(), 3601) + ) assert_enqueued( worker: Pleroma.Workers.PurgeExpiredActivity, @@ -34,10 +36,12 @@ defmodule Pleroma.Workers.PurgeExpiredActivityTest do activity = insert(:note_activity) assert {:ok, _} = - PurgeExpiredActivity.enqueue(%{ - activity_id: activity.id, - expires_at: DateTime.add(DateTime.utc_now(), 3601) - }) + PurgeExpiredActivity.enqueue( + %{ + activity_id: activity.id + }, + scheduled_at: DateTime.add(DateTime.utc_now(), 3601) + ) user = Pleroma.User.get_by_ap_id(activity.actor) Pleroma.Repo.delete(user) @@ -48,10 +52,12 @@ defmodule Pleroma.Workers.PurgeExpiredActivityTest do test "error if actiivity was not found" do assert {:ok, _} = - PurgeExpiredActivity.enqueue(%{ - activity_id: "some_id", - expires_at: DateTime.add(DateTime.utc_now(), 3601) - }) + PurgeExpiredActivity.enqueue( + %{ + activity_id: "some_id" + }, + scheduled_at: DateTime.add(DateTime.utc_now(), 3601) + ) assert {:cancel, :activity_not_found} = perform_job(Pleroma.Workers.PurgeExpiredActivity, %{activity_id: "some_if"}) From 1d3a92be1101b04d1b69b8b3fd030d5d06f4dbea Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 28 Jun 2024 12:06:43 -0400 Subject: [PATCH 03/58] Remove :workers config from ConfigDB --- config/description.exs | 17 ----------------- ...240628160536_deprecate_config_db_workers.exs | 7 +++++++ 2 files changed, 7 insertions(+), 17 deletions(-) create mode 100644 priv/repo/migrations/20240628160536_deprecate_config_db_workers.exs diff --git a/config/description.exs b/config/description.exs index 2809e91307..15faecb38c 100644 --- a/config/description.exs +++ b/config/description.exs @@ -2013,23 +2013,6 @@ config :pleroma, :config_description, [ } ] }, - %{ - group: :pleroma, - key: :workers, - type: :group, - description: "Includes custom worker options not interpretable directly by `Oban`", - children: [ - %{ - key: :retries, - type: {:keyword, :integer}, - description: "Max retry attempts for failed jobs, per `Oban` queue", - suggestions: [ - federator_incoming: 5, - federator_outgoing: 5 - ] - } - ] - }, %{ group: :pleroma, key: Pleroma.Web.Metadata, diff --git a/priv/repo/migrations/20240628160536_deprecate_config_db_workers.exs b/priv/repo/migrations/20240628160536_deprecate_config_db_workers.exs new file mode 100644 index 0000000000..549dd22e9e --- /dev/null +++ b/priv/repo/migrations/20240628160536_deprecate_config_db_workers.exs @@ -0,0 +1,7 @@ +defmodule Pleroma.Repo.Migrations.DeprecateConfigDBWorkers do + use Ecto.Migration + + def change do + execute("DELETE FROM config WHERE config.group = ':workers'") + end +end From d56b889cf1f530364ecd10836f8bd11b67eccb47 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 28 Jun 2024 12:21:27 -0400 Subject: [PATCH 04/58] Update changelog --- changelog.d/workerhelper.change | 1 + changelog.d/workerhelper.skip | 0 2 files changed, 1 insertion(+) create mode 100644 changelog.d/workerhelper.change delete mode 100644 changelog.d/workerhelper.skip diff --git a/changelog.d/workerhelper.change b/changelog.d/workerhelper.change new file mode 100644 index 0000000000..7a20c4af82 --- /dev/null +++ b/changelog.d/workerhelper.change @@ -0,0 +1 @@ +Worker configuration is no longer available. This only affects custom max_retries values for Oban queues. diff --git a/changelog.d/workerhelper.skip b/changelog.d/workerhelper.skip deleted file mode 100644 index e69de29bb2..0000000000 From 2e6ddc49910419590470902d9c36b84cf5a0b895 Mon Sep 17 00:00:00 2001 From: Lain Soykaf Date: Thu, 1 Aug 2024 11:43:44 +0400 Subject: [PATCH 05/58] Prepare changelog --- CHANGELOG.md | 153 ++++++++++++++++++ changelog.d/2.6.0-mergeback.skip | 0 changelog.d/2.6.1-mergeback.skip | 0 changelog.d/3280-fix-emoji-ids.fix | 1 - changelog.d/3900.change | 1 - changelog.d/3904.security | 1 - changelog.d/3907.skip | 0 changelog.d/3987.fix | 1 - changelog.d/4167-strip-gps-info-in-png.fix | 1 - changelog.d/account-rendering-auth-check.fix | 1 - changelog.d/add-ipfs-upload.add | 1 - changelog.d/add-nsfw-mrf.add | 1 - changelog.d/add-outbox.fix | 1 - changelog.d/add-rbl-mrf.add | 1 - changelog.d/adminfe-logger.change | 1 - changelog.d/akkoma-prune-options.add | 1 - changelog.d/anonymous-exception-else.fix | 1 - changelog.d/anti-mentionspam-mrf.add | 1 - changelog.d/api-docs-2.skip | 0 changelog.d/api-docs.skip | 0 changelog.d/atom-leak.skip | 0 changelog.d/auth-fetch-exception.add | 1 - changelog.d/authorize-interaction.add | 1 - changelog.d/authorized-fetch-rejections.add | 1 - changelog.d/backups-follows.add | 1 - changelog.d/backups-refactor.change | 1 - changelog.d/bad_inbox_request.change | 1 - changelog.d/bandit.change | 1 - changelog.d/bandit_update_1.5.2.change | 1 - changelog.d/bare_uri_test.skip | 0 changelog.d/benchee.skip | 0 changelog.d/blurhash.change | 1 - changelog.d/bookmark-folders.add | 1 - changelog.d/bookmark-folders.skip | 0 changelog.d/bugfix-ccworks.fix | 1 - .../build-release-with-local-libvips.skip | 0 changelog.d/bump-elixir.change | 1 - changelog.d/card-endpoint.remove | 1 - changelog.d/card-image-description.add | 1 - changelog.d/chat-attachment-empty-array.fix | 1 - changelog.d/ci-cache.skip | 0 changelog.d/ci-elixir-1.16.skip | 0 changelog.d/ci-elixir-1.17.skip | 0 changelog.d/ci-erratic.skip | 0 changelog.d/ci-otp-update.skip | 0 changelog.d/cleanup.skip | 0 changelog.d/commonapi-reordering.skip | 0 changelog.d/config-stat-symlink.fix | 1 - changelog.d/content-length.fix | 1 - changelog.d/cowboy-stream-chunked.fix | 1 - changelog.d/debug-logs.skip | 0 changelog.d/deprecations.skip | 1 - changelog.d/deprecations2.skip | 0 changelog.d/deps-bump-2024-01-25.skip | 0 changelog.d/deps-bump-2024-06-07.skip | 2 - changelog.d/deps-poison-test-only.skip | 0 changelog.d/description-meilisearch-type.skip | 0 changelog.d/dialyzer.skip | 0 changelog.d/dialyzer2.skip | 0 changelog.d/dialyzer3.skip | 0 changelog.d/dialyzer4.skip | 0 changelog.d/dialyzer5.skip | 0 changelog.d/digest_emails.fix | 1 - changelog.d/disclose_client.fix | 1 - changelog.d/doc-fix.skip | 0 changelog.d/docs-max-elixir-erlang.change | 1 - changelog.d/docs-netbsd-update.change | 1 - changelog.d/elixir-1.15.fix | 1 - changelog.d/emoji-download-paginate.fix | 1 - changelog.d/emoji-use-v1.fix | 1 - changelog.d/exile-bsds.skip | 0 changelog.d/exile-freebsd.skip | 0 changelog.d/exile-macos.skip | 0 changelog.d/exile.skip | 0 changelog.d/familiar-followers.add | 1 - changelog.d/favicon.add | 1 - changelog.d/federation_status-access.change | 1 - changelog.d/federator-modules.remove | 1 - changelog.d/federator.skip | 0 .../federator_outgoing_increase.change | 1 - changelog.d/fep-2c59.add | 1 - changelog.d/ffmpeg-limiter.add | 1 - changelog.d/finch_redirects.fix | 1 - changelog.d/fix-bookmark-folder-tests.skip | 0 changelog.d/fix-dockerfile.skip | 0 .../fix-duplicate-inbox-deliveries.fix | 0 changelog.d/fix-migration.skip | 0 changelog.d/fix-mrfs.add | 1 - changelog.d/fix-otp-comparison.skip | 0 changelog.d/fix-tests.skip | 0 changelog.d/fix-webfinger-spoofing.security | 1 - changelog.d/force-mention-mrf.add | 1 - changelog.d/framegrabs.fix | 1 - changelog.d/frontend-management.add | 1 - .../generate-unset-user-keys-migration.skip | 0 changelog.d/group-actor.add | 1 - changelog.d/group-repeats.fix | 1 - changelog.d/gun-logs-debug.skip | 0 changelog.d/gun-logs.skip | 0 changelog.d/gun_pool.fix | 1 - changelog.d/gun_pool2.fix | 1 - changelog.d/gun_pool3.skip | 0 changelog.d/gun_pool4.fix | 1 - changelog.d/hackney-pool-timeouts.change | 1 - .../handle-non-validate-delete-errors.change | 1 - .../handle_object_fetch_failures.change | 1 - changelog.d/healthcheck-disabled-error.fix | 1 - changelog.d/ingestion-queue.skip | 0 changelog.d/instance-contact-account.add | 1 - changelog.d/instance-defdelegates.skip | 0 changelog.d/instance-rules.add | 1 - changelog.d/instance-v2.add | 1 - changelog.d/instance-v2.skip | 0 changelog.d/ipfs-dialyzer.skip | 1 - changelog.d/issue-3241.fix | 1 - changelog.d/last_status_at.change | 1 - changelog.d/ldap-error-logging.change | 1 - changelog.d/ldap.fix | 1 - changelog.d/link-verification.add | 1 - changelog.d/loading-order-test-fix.skip | 0 changelog.d/local-webfinger.fix | 1 - changelog.d/logger-metadata.add | 1 - changelog.d/mark-read.fix | 1 - changelog.d/mastodon_api_v2.add | 1 - changelog.d/mastodon_directory.fix | 1 - changelog.d/mediaproxy-http.fix | 1 - changelog.d/meilisearch.add | 1 - changelog.d/memleak.fix | 1 - changelog.d/mergeback-2.6.2.skip | 0 changelog.d/metadata-provider-empty-post.fix | 1 - changelog.d/migration-fix.skip | 1 - changelog.d/missing-fks.add | 1 - changelog.d/missing-mrfs.add | 1 - changelog.d/mix-indexer.add | 1 - changelog.d/mrf-nsfw-otp25.skip | 1 - changelog.d/mrf-regex-error.fix | 1 - changelog.d/mrf-steal-emoji-extname.fix | 1 - changelog.d/mrf_hashtags.fix | 1 - changelog.d/nil-content-map.fix | 1 - changelog.d/no-async-with-clear-config.skip | 0 changelog.d/notification-spex.skip | 0 changelog.d/notifications-index.fix | 1 - changelog.d/notifications.fix | 1 - changelog.d/oauth-nickname.skip | 1 - changelog.d/oban-cancel-badreq.change | 1 - changelog.d/oban-cancel-federation.add | 1 - changelog.d/oban-cancel-poll-result.change | 1 - changelog.d/oban-cancel-receiverworker.change | 1 - changelog.d/oban-cancel.change | 1 - changelog.d/oban-deprecated-discards.skip | 0 changelog.d/oban-fetcher-rejected.change | 1 - changelog.d/oban-live_dashboard.add | 1 - changelog.d/oban-queues.change | 1 - changelog.d/oban-rich-media-errors.fix | 1 - changelog.d/oban-timeouts.change | 1 - changelog.d/oban-timeouts.skip | 0 changelog.d/oban-transmogrifier.skip | 0 changelog.d/oban-user-refresh-unique.fix | 1 - changelog.d/opengraph-rich-media-proxy.add | 1 - changelog.d/optimistic-inbox-sigs.fix | 1 - changelog.d/optimistic-inbox.change | 1 - changelog.d/otp26.add | 1 - changelog.d/pinned-collection-fetch.security | 1 - changelog.d/pools.change | 1 - changelog.d/postgres-jit.change | 1 - changelog.d/prioritize-direct-recipients.add | 1 - changelog.d/prometheus-docs.change | 1 - changelog.d/promex.change | 1 - changelog.d/promexdocs.add | 1 - changelog.d/public-polls.add | 1 - changelog.d/publisher.change | 1 - changelog.d/publisher_discard.change | 1 - changelog.d/publisher_log.change | 1 - changelog.d/qdrant_search.add | 1 - changelog.d/qtfaststart.fix | 1 - changelog.d/quotes-count.skip | 0 changelog.d/reachability.change | 1 - changelog.d/realpath-over-readlink.fix | 1 - changelog.d/receiverworker-error-handling.fix | 1 - changelog.d/remote-fetcher-error.skip | 0 changelog.d/reply-to-deleted.change | 1 - changelog.d/rich-media-hardening.fix | 1 - changelog.d/rich_media.fix | 1 - changelog.d/rich_media_backfill.change | 1 - changelog.d/rich_media_config.skip | 0 changelog.d/rich_media_oban.skip | 0 changelog.d/rich_media_refactor.change | 1 - changelog.d/rich_media_stream_test.skip | 0 changelog.d/rich_media_tests.skip | 0 changelog.d/richmediattl.fix | 1 - changelog.d/scrobble-url.add | 1 - changelog.d/scrubbers-html4-GtS.add | 1 - changelog.d/search-healthcheck.add | 1 - changelog.d/show-reposter-replies.add | 1 - changelog.d/spex-error-log.skip | 0 changelog.d/status-notification-type.add | 1 - changelog.d/stream-end-poll.fix | 1 - changelog.d/support-honk-image-summaries.add | 1 - changelog.d/system-cflags.fix | 1 - changelog.d/tesla.deps | 1 - changelog.d/test-improvements.skip | 0 changelog.d/testsecrets.skip | 0 .../transient-validators-defaults.change | 1 - changelog.d/typo.skip | 0 changelog.d/user-refresh-rework.skip | 0 changelog.d/user-refresh.change | 1 - changelog.d/video-thumbs.fix | 1 - changelog.d/vips.change | 1 - changelog.d/web_push.fix | 1 - changelog.d/web_push_actor_regression.skip | 0 changelog.d/web_push_filtered.fix | 1 - changelog.d/webfinger-validation.fix | 1 - changelog.d/webpush-polls.change | 1 - changelog.d/websocket-refactor.change | 1 - 214 files changed, 153 insertions(+), 149 deletions(-) delete mode 100644 changelog.d/2.6.0-mergeback.skip delete mode 100644 changelog.d/2.6.1-mergeback.skip delete mode 100644 changelog.d/3280-fix-emoji-ids.fix delete mode 100644 changelog.d/3900.change delete mode 100644 changelog.d/3904.security delete mode 100644 changelog.d/3907.skip delete mode 100644 changelog.d/3987.fix delete mode 100644 changelog.d/4167-strip-gps-info-in-png.fix delete mode 100644 changelog.d/account-rendering-auth-check.fix delete mode 100644 changelog.d/add-ipfs-upload.add delete mode 100644 changelog.d/add-nsfw-mrf.add delete mode 100644 changelog.d/add-outbox.fix delete mode 100644 changelog.d/add-rbl-mrf.add delete mode 100644 changelog.d/adminfe-logger.change delete mode 100644 changelog.d/akkoma-prune-options.add delete mode 100644 changelog.d/anonymous-exception-else.fix delete mode 100644 changelog.d/anti-mentionspam-mrf.add delete mode 100644 changelog.d/api-docs-2.skip delete mode 100644 changelog.d/api-docs.skip delete mode 100644 changelog.d/atom-leak.skip delete mode 100644 changelog.d/auth-fetch-exception.add delete mode 100644 changelog.d/authorize-interaction.add delete mode 100644 changelog.d/authorized-fetch-rejections.add delete mode 100644 changelog.d/backups-follows.add delete mode 100644 changelog.d/backups-refactor.change delete mode 100644 changelog.d/bad_inbox_request.change delete mode 100644 changelog.d/bandit.change delete mode 100644 changelog.d/bandit_update_1.5.2.change delete mode 100644 changelog.d/bare_uri_test.skip delete mode 100644 changelog.d/benchee.skip delete mode 100644 changelog.d/blurhash.change delete mode 100644 changelog.d/bookmark-folders.add delete mode 100644 changelog.d/bookmark-folders.skip delete mode 100644 changelog.d/bugfix-ccworks.fix delete mode 100644 changelog.d/build-release-with-local-libvips.skip delete mode 100644 changelog.d/bump-elixir.change delete mode 100644 changelog.d/card-endpoint.remove delete mode 100644 changelog.d/card-image-description.add delete mode 100644 changelog.d/chat-attachment-empty-array.fix delete mode 100644 changelog.d/ci-cache.skip delete mode 100644 changelog.d/ci-elixir-1.16.skip delete mode 100644 changelog.d/ci-elixir-1.17.skip delete mode 100644 changelog.d/ci-erratic.skip delete mode 100644 changelog.d/ci-otp-update.skip delete mode 100644 changelog.d/cleanup.skip delete mode 100644 changelog.d/commonapi-reordering.skip delete mode 100644 changelog.d/config-stat-symlink.fix delete mode 100644 changelog.d/content-length.fix delete mode 100644 changelog.d/cowboy-stream-chunked.fix delete mode 100644 changelog.d/debug-logs.skip delete mode 100644 changelog.d/deprecations.skip delete mode 100644 changelog.d/deprecations2.skip delete mode 100644 changelog.d/deps-bump-2024-01-25.skip delete mode 100644 changelog.d/deps-bump-2024-06-07.skip delete mode 100644 changelog.d/deps-poison-test-only.skip delete mode 100644 changelog.d/description-meilisearch-type.skip delete mode 100644 changelog.d/dialyzer.skip delete mode 100644 changelog.d/dialyzer2.skip delete mode 100644 changelog.d/dialyzer3.skip delete mode 100644 changelog.d/dialyzer4.skip delete mode 100644 changelog.d/dialyzer5.skip delete mode 100644 changelog.d/digest_emails.fix delete mode 100644 changelog.d/disclose_client.fix delete mode 100644 changelog.d/doc-fix.skip delete mode 100644 changelog.d/docs-max-elixir-erlang.change delete mode 100644 changelog.d/docs-netbsd-update.change delete mode 100644 changelog.d/elixir-1.15.fix delete mode 100644 changelog.d/emoji-download-paginate.fix delete mode 100644 changelog.d/emoji-use-v1.fix delete mode 100644 changelog.d/exile-bsds.skip delete mode 100644 changelog.d/exile-freebsd.skip delete mode 100644 changelog.d/exile-macos.skip delete mode 100644 changelog.d/exile.skip delete mode 100644 changelog.d/familiar-followers.add delete mode 100644 changelog.d/favicon.add delete mode 100644 changelog.d/federation_status-access.change delete mode 100644 changelog.d/federator-modules.remove delete mode 100644 changelog.d/federator.skip delete mode 100644 changelog.d/federator_outgoing_increase.change delete mode 100644 changelog.d/fep-2c59.add delete mode 100644 changelog.d/ffmpeg-limiter.add delete mode 100644 changelog.d/finch_redirects.fix delete mode 100644 changelog.d/fix-bookmark-folder-tests.skip delete mode 100644 changelog.d/fix-dockerfile.skip delete mode 100644 changelog.d/fix-duplicate-inbox-deliveries.fix delete mode 100644 changelog.d/fix-migration.skip delete mode 100644 changelog.d/fix-mrfs.add delete mode 100644 changelog.d/fix-otp-comparison.skip delete mode 100644 changelog.d/fix-tests.skip delete mode 100644 changelog.d/fix-webfinger-spoofing.security delete mode 100644 changelog.d/force-mention-mrf.add delete mode 100644 changelog.d/framegrabs.fix delete mode 100644 changelog.d/frontend-management.add delete mode 100644 changelog.d/generate-unset-user-keys-migration.skip delete mode 100644 changelog.d/group-actor.add delete mode 100644 changelog.d/group-repeats.fix delete mode 100644 changelog.d/gun-logs-debug.skip delete mode 100644 changelog.d/gun-logs.skip delete mode 100644 changelog.d/gun_pool.fix delete mode 100644 changelog.d/gun_pool2.fix delete mode 100644 changelog.d/gun_pool3.skip delete mode 100644 changelog.d/gun_pool4.fix delete mode 100644 changelog.d/hackney-pool-timeouts.change delete mode 100644 changelog.d/handle-non-validate-delete-errors.change delete mode 100644 changelog.d/handle_object_fetch_failures.change delete mode 100644 changelog.d/healthcheck-disabled-error.fix delete mode 100644 changelog.d/ingestion-queue.skip delete mode 100644 changelog.d/instance-contact-account.add delete mode 100644 changelog.d/instance-defdelegates.skip delete mode 100644 changelog.d/instance-rules.add delete mode 100644 changelog.d/instance-v2.add delete mode 100644 changelog.d/instance-v2.skip delete mode 100644 changelog.d/ipfs-dialyzer.skip delete mode 100644 changelog.d/issue-3241.fix delete mode 100644 changelog.d/last_status_at.change delete mode 100644 changelog.d/ldap-error-logging.change delete mode 100644 changelog.d/ldap.fix delete mode 100644 changelog.d/link-verification.add delete mode 100644 changelog.d/loading-order-test-fix.skip delete mode 100644 changelog.d/local-webfinger.fix delete mode 100644 changelog.d/logger-metadata.add delete mode 100644 changelog.d/mark-read.fix delete mode 100644 changelog.d/mastodon_api_v2.add delete mode 100644 changelog.d/mastodon_directory.fix delete mode 100644 changelog.d/mediaproxy-http.fix delete mode 100644 changelog.d/meilisearch.add delete mode 100644 changelog.d/memleak.fix delete mode 100644 changelog.d/mergeback-2.6.2.skip delete mode 100644 changelog.d/metadata-provider-empty-post.fix delete mode 100644 changelog.d/migration-fix.skip delete mode 100644 changelog.d/missing-fks.add delete mode 100644 changelog.d/missing-mrfs.add delete mode 100644 changelog.d/mix-indexer.add delete mode 100644 changelog.d/mrf-nsfw-otp25.skip delete mode 100644 changelog.d/mrf-regex-error.fix delete mode 100644 changelog.d/mrf-steal-emoji-extname.fix delete mode 100644 changelog.d/mrf_hashtags.fix delete mode 100644 changelog.d/nil-content-map.fix delete mode 100644 changelog.d/no-async-with-clear-config.skip delete mode 100644 changelog.d/notification-spex.skip delete mode 100644 changelog.d/notifications-index.fix delete mode 100644 changelog.d/notifications.fix delete mode 100644 changelog.d/oauth-nickname.skip delete mode 100644 changelog.d/oban-cancel-badreq.change delete mode 100644 changelog.d/oban-cancel-federation.add delete mode 100644 changelog.d/oban-cancel-poll-result.change delete mode 100644 changelog.d/oban-cancel-receiverworker.change delete mode 100644 changelog.d/oban-cancel.change delete mode 100644 changelog.d/oban-deprecated-discards.skip delete mode 100644 changelog.d/oban-fetcher-rejected.change delete mode 100644 changelog.d/oban-live_dashboard.add delete mode 100644 changelog.d/oban-queues.change delete mode 100644 changelog.d/oban-rich-media-errors.fix delete mode 100644 changelog.d/oban-timeouts.change delete mode 100644 changelog.d/oban-timeouts.skip delete mode 100644 changelog.d/oban-transmogrifier.skip delete mode 100644 changelog.d/oban-user-refresh-unique.fix delete mode 100644 changelog.d/opengraph-rich-media-proxy.add delete mode 100644 changelog.d/optimistic-inbox-sigs.fix delete mode 100644 changelog.d/optimistic-inbox.change delete mode 100644 changelog.d/otp26.add delete mode 100644 changelog.d/pinned-collection-fetch.security delete mode 100644 changelog.d/pools.change delete mode 100644 changelog.d/postgres-jit.change delete mode 100644 changelog.d/prioritize-direct-recipients.add delete mode 100644 changelog.d/prometheus-docs.change delete mode 100644 changelog.d/promex.change delete mode 100644 changelog.d/promexdocs.add delete mode 100644 changelog.d/public-polls.add delete mode 100644 changelog.d/publisher.change delete mode 100644 changelog.d/publisher_discard.change delete mode 100644 changelog.d/publisher_log.change delete mode 100644 changelog.d/qdrant_search.add delete mode 100644 changelog.d/qtfaststart.fix delete mode 100644 changelog.d/quotes-count.skip delete mode 100644 changelog.d/reachability.change delete mode 100644 changelog.d/realpath-over-readlink.fix delete mode 100644 changelog.d/receiverworker-error-handling.fix delete mode 100644 changelog.d/remote-fetcher-error.skip delete mode 100644 changelog.d/reply-to-deleted.change delete mode 100644 changelog.d/rich-media-hardening.fix delete mode 100644 changelog.d/rich_media.fix delete mode 100644 changelog.d/rich_media_backfill.change delete mode 100644 changelog.d/rich_media_config.skip delete mode 100644 changelog.d/rich_media_oban.skip delete mode 100644 changelog.d/rich_media_refactor.change delete mode 100644 changelog.d/rich_media_stream_test.skip delete mode 100644 changelog.d/rich_media_tests.skip delete mode 100644 changelog.d/richmediattl.fix delete mode 100644 changelog.d/scrobble-url.add delete mode 100644 changelog.d/scrubbers-html4-GtS.add delete mode 100644 changelog.d/search-healthcheck.add delete mode 100644 changelog.d/show-reposter-replies.add delete mode 100644 changelog.d/spex-error-log.skip delete mode 100644 changelog.d/status-notification-type.add delete mode 100644 changelog.d/stream-end-poll.fix delete mode 100644 changelog.d/support-honk-image-summaries.add delete mode 100644 changelog.d/system-cflags.fix delete mode 100644 changelog.d/tesla.deps delete mode 100644 changelog.d/test-improvements.skip delete mode 100644 changelog.d/testsecrets.skip delete mode 100644 changelog.d/transient-validators-defaults.change delete mode 100644 changelog.d/typo.skip delete mode 100644 changelog.d/user-refresh-rework.skip delete mode 100644 changelog.d/user-refresh.change delete mode 100644 changelog.d/video-thumbs.fix delete mode 100644 changelog.d/vips.change delete mode 100644 changelog.d/web_push.fix delete mode 100644 changelog.d/web_push_actor_regression.skip delete mode 100644 changelog.d/web_push_filtered.fix delete mode 100644 changelog.d/webfinger-validation.fix delete mode 100644 changelog.d/webpush-polls.change delete mode 100644 changelog.d/websocket-refactor.change diff --git a/CHANGELOG.md b/CHANGELOG.md index 063d51d4c2..61bb2ab543 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,159 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## 2.7.0 + +### Security +- HTTP Security: By default, don't allow unsafe-eval. The setting needs to be changed to allow Flash emulation. +- Fix webfinger spoofing. +- Use proper workers for fetching pins instead of an ad-hoc task, fixing a potential fetch loop + +### Changed +- Update to Phoenix 1.7 +- Elixir Logger configuration is now longer permitted through AdminFE and ConfigDB +- Refactor the user backups code and improve test coverage +- Invalid activities delivered to the inbox will be rejected with a 400 Bad Request +- Support Bandit as an alternative to Cowboy for the HTTP server. +- Update Bandit to 1.5.2 +- Replace eblurhash with rinpatch_blurhash. This also removes a dependency on ImageMagick. +- Elixir 1.13 is the minimum required version. +- Document maximum supported version of Erlang & Elixir +- Update and extend NetBSD installation docs +- Make `/api/v1/pleroma/federation_status` publicly available +- Increase outgoing federation parallelism +- Change Hackney connection pool timeouts to align with the values Gun uses +- Transmogrifier: handle non-validate errors on incoming Delete activities +- Remote object fetch failures will prevent the object fetch job from retrying if the object request returns 401, 403, 404, 410, or exceeds the maximum thread depth. +- - Change AccountView `last_status_at` from a datetime to a date (as done in Mastodon 3.1.0) +- Improve error logging when LDAP authentication fails. +- Publisher jobs will not retry if the error received is a 400 +- PollWorker jobs will not retry if the activity no longer exists. +- Improved detecting unrecoverable errors for incoming federation jobs +- Changed some jobs to return :cancel on unrecoverable errors that should not be retried +- Discard Remote Fetcher jobs which errored due to an MRF rejection. +- Oban queues have refactored to simplify the queue design +- Ensure all Oban jobs have timeouts defined +- Optimistic Inbox reduces the processing overhead of incoming activities without instantly verifiable signatures. +- HTTP connection pool adjustments +- Disable jit by default for PostgreSQL +- Update the documentation for configuring Prometheus metrics. +- Change the prometheus library to PromEx. +- Publisher jobs now store the the activity id instead of inserting duplicate JSON data in the Oban queue for each delivery. +- Activity publishing failures will prevent the job from retrying if the publishing request returns a 403 or 410 +- Publisher errors will now emit logs indicating the inbox that was not available for delivery. +- Reduce the reachability timestamp update to a single upsert query +- A 422 error is returned when attempting to reply to a deleted status +- Rich Media backfilling is now an Oban job +- Refactored Rich Media to cache the content in the database. Fetching operations that could block status rendering have been eliminated. +- Set default values on validators for transient objects (attachment, poll options) +- User profile refreshes are now asynchronous +- Change mediaproxy previews to use vips to generate thumbnails instead of ImageMagick +- Render nice web push notifications for polls +- Refactor the Mastodon /api/v1/streaming websocket handler to use Phoenix.Socket.Transport + +### Added +- Uploader: Add support for uploading attachments using IPFS +- Add NSFW-detecting MRF +- Add DNSRBL MRF +- Add options to the mix prune_objects task +- Add Anti-mention Spam MRF backported from Rebased +- HTTPSignaturePlug: Add :authorized_fetch_mode_exceptions configuration +- Support /authorize-interaction route used by Mastodon +- Add an option to reject certain domains when authorized fetch is enabled. +- Include following/followers in backups +- Allow to group bookmarks in folders +- Include image description in status media cards +- Implement `/api/v1/accounts/familiar_followers` +- Add support for configuring favicon, embed favicon and PWA manifest in server-generated meta +- Implement FEP-2c59, add "webfinger" to user actor +- Framegrabs with ffmpeg will execute with a 5 second timeout and cache the URLs of failures with a TTL of 15 minutes to prevent excessive retries. +- Added a Mix task "pleroma.config fix_mrf_policies" which will remove erroneous MRF policies from ConfigDB. +- Add ForceMention MRF +- [docs] add frontends management documentation +- Implement group actors +- Add contact account to InstanceView +- Add instance rules +- Implement /api/v2/instance route +- Verify profile link ownership with rel="me" +- Logger metadata is now attached to some logs to help with troubleshooting and analysis +- Add new parameters to /api/v2/instance: configuration[accounts][max_pinned_statuses] and configuration[statuses][characters_reserved_per_url] +- Add meilisearch, make search engines pluggable +- Add missing indexes on foreign key relationships +- Startup detection for configured MRF modules that are missing or incorrectly defined +- Permit passing --chunk and --step values to the Pleroma.Search.Indexer Mix task +- Deleting, Unfavoriting, Unrepeating, or Unreacting will cancel undelivered publishing jobs for the original activity. +- Oban jobs can now be viewed in the Live Dashboard +- Add media proxy to opengraph rich media cards +- Support for Erlang OTP 26 +- Prioritize mentioned recipients (i.e., those that are not just followers) when federating. +- PromEx documentation +- Expose nonAnonymous field from Smithereen polls +- Add Qdrant/OpenAI embedding search +- Adds the capability to add a URL to a scrobble (optional field) +- scrubbers/default: Add more formatting elements from HTML4 / GoToSocial (acronym, bdo, big, cite, dfn, ins, kbd, q, samp, s, tt, var, wbr) +- Monitoring of search backend health to control the processing of jobs in the search indexing Oban queue +- Display reposted replies with exclude_replies: true +- Add "status" notification type +- Support honk-style attachment summaries as alt-text. + +### Fixed +- Fix Emoji object IDs not always being valid +- Remove checking ImageMagick's commands for Pleroma.Upload.Filter.AnalyzeMetadata +- Ensure that StripLocation actually removes everything resembling GPS data from PNGs +- Fix authentication check on account rendering when bio is defined +- ap userview: add outbox field. +- Fix #strip_report_status_data +- Fix federation with Convergence AP Bridge +- ChatMessage: Tolerate attachment field set to an empty array +- Config: Check the permissions of the linked file instead of the symlink +- MediaProxy was setting the content-length header which is not permitted by RFC9112§6.2 when we are chunking the reply as it conflicts with the existence of the transfer-encoding header. +- Restore Cowboy's ability to stream MediaProxy responses without Chunked encoding. +- Fix the processing of email digest jobs. +- Client application data was always missing from the status +- Elixir 1.15 compatibility +- When downloading remote emojis packs, account for pagination +- Make remote emoji packs API use specifically the V1 URL. Akkoma does not understand it without V1, and it works either way with normal pleroma, so no reason to not do this +- Following HTTP Redirects when the HTTP Adapter is Finch +- Video framegrabs were not working correctly after the change to use Exile to execute ffmpeg +- Deactivated groups would still try to repeat a post. +- Fix logic error in Gun connection pooling which prevented retries even when the worker was launched with retry = true +- Connection pool errors when publishing an activity is a soft-error that will be retried shortly. +- Gun Connection Pool was not retrying to acquire a connection if the pool was full and stale connections were reclaimed +- TwitterAPI: Return proper error when healthcheck is disabled +- Handle cases when users.inbox is nil. +- Fix LDAP support +- Use correct domain for fqn and InstanceView +- The query for marking notifications as read has been simplified +- Mastodon API /api/v1/directory: Fix listing directory contents when not authenticated +- Ensure MediaProxy HTTP requests obey all the defined connection settings +- Fix a memory leak caused by Websocket connections that would not enter a state where a full garbage collection run could be triggered. +- Fix OpenGraph and Twitter metadata providers when parsing objects with no content or summary fields. +- MRF: Log sensible error for subdomains_regex +- MRF.StealEmojiPolicy: Properly add fallback extension to filenames missing one +- Federated timeline removal of hashtags via MRF HashtagPolicy +- Support objects with a null contentMap (firefish) +- Fix notifications query which was not using the index properly +- Notifications: improve performance by filtering on users table instead of activities table +- Prevent Rich Media backfill jobs from retrying in cases where it is likely they will fail again. +- Oban Jobs for refreshing users were not respecting the uniqueness setting +- Fix Optimistic Inbox for failed signatures +- MediaProxy Preview failures prevented when encountering certain video files +- pleroma_ctl: Use realpath(1) instead of readlink(1) +- ReceiverWorker: Make sure non-{:ok, _} is returned as {:error, …} +- Harden Rich Media parsing against very slow or malicious URLs +- Rich Media Preview cache eviction when the activity is updated. +- Parsing of RichMedia TTLs for Amazon URLs when query parameters are nil +- End of poll notifications were not streamed over websockets or web push +- Fix eblurhash and elixir-captcha not using system cflags +- Video thumbnails were not being generated due to a negative cache lookup logic error +- Fix web push notifications not successfully delivering +- Web Push notifications are no longer generated for muted/blocked threads and users. +- Fix validate_webfinger when running a different domain for Webfinger + +### Removed +- Mastodon API: Remove deprecated GET /api/v1/statuses/:id/card endpoint https://github.com/mastodon/mastodon/pull/11213 +- Removed support for multiple federator modules as we only support ActivityPub + ## 2.6.2 ### Security diff --git a/changelog.d/2.6.0-mergeback.skip b/changelog.d/2.6.0-mergeback.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/2.6.1-mergeback.skip b/changelog.d/2.6.1-mergeback.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/3280-fix-emoji-ids.fix b/changelog.d/3280-fix-emoji-ids.fix deleted file mode 100644 index 1bce5b653e..0000000000 --- a/changelog.d/3280-fix-emoji-ids.fix +++ /dev/null @@ -1 +0,0 @@ -Fix Emoji object IDs not always being valid diff --git a/changelog.d/3900.change b/changelog.d/3900.change deleted file mode 100644 index fe0cc2fbf5..0000000000 --- a/changelog.d/3900.change +++ /dev/null @@ -1 +0,0 @@ -Update to Phoenix 1.7 diff --git a/changelog.d/3904.security b/changelog.d/3904.security deleted file mode 100644 index 04836d4e8c..0000000000 --- a/changelog.d/3904.security +++ /dev/null @@ -1 +0,0 @@ -HTTP Security: By default, don't allow unsafe-eval. The setting needs to be changed to allow Flash emulation. diff --git a/changelog.d/3907.skip b/changelog.d/3907.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/3987.fix b/changelog.d/3987.fix deleted file mode 100644 index 5d578cc099..0000000000 --- a/changelog.d/3987.fix +++ /dev/null @@ -1 +0,0 @@ -Remove checking ImageMagick's commands for Pleroma.Upload.Filter.AnalyzeMetadata diff --git a/changelog.d/4167-strip-gps-info-in-png.fix b/changelog.d/4167-strip-gps-info-in-png.fix deleted file mode 100644 index e8d5c29088..0000000000 --- a/changelog.d/4167-strip-gps-info-in-png.fix +++ /dev/null @@ -1 +0,0 @@ -Ensure that StripLocation actually removes everything resembling GPS data from PNGs diff --git a/changelog.d/account-rendering-auth-check.fix b/changelog.d/account-rendering-auth-check.fix deleted file mode 100644 index 12f68e454f..0000000000 --- a/changelog.d/account-rendering-auth-check.fix +++ /dev/null @@ -1 +0,0 @@ -Fix authentication check on account rendering when bio is defined diff --git a/changelog.d/add-ipfs-upload.add b/changelog.d/add-ipfs-upload.add deleted file mode 100644 index 0cd1f2858b..0000000000 --- a/changelog.d/add-ipfs-upload.add +++ /dev/null @@ -1 +0,0 @@ -Uploader: Add support for uploading attachments using IPFS diff --git a/changelog.d/add-nsfw-mrf.add b/changelog.d/add-nsfw-mrf.add deleted file mode 100644 index ce62c7ed01..0000000000 --- a/changelog.d/add-nsfw-mrf.add +++ /dev/null @@ -1 +0,0 @@ -Add NSFW-detecting MRF diff --git a/changelog.d/add-outbox.fix b/changelog.d/add-outbox.fix deleted file mode 100644 index f3de5338dc..0000000000 --- a/changelog.d/add-outbox.fix +++ /dev/null @@ -1 +0,0 @@ -ap userview: add outbox field. diff --git a/changelog.d/add-rbl-mrf.add b/changelog.d/add-rbl-mrf.add deleted file mode 100644 index 363270fb92..0000000000 --- a/changelog.d/add-rbl-mrf.add +++ /dev/null @@ -1 +0,0 @@ -Add DNSRBL MRF diff --git a/changelog.d/adminfe-logger.change b/changelog.d/adminfe-logger.change deleted file mode 100644 index e1a5fc4546..0000000000 --- a/changelog.d/adminfe-logger.change +++ /dev/null @@ -1 +0,0 @@ -Elixir Logger configuration is now longer permitted through AdminFE and ConfigDB diff --git a/changelog.d/akkoma-prune-options.add b/changelog.d/akkoma-prune-options.add deleted file mode 100644 index 6bc5e7f926..0000000000 --- a/changelog.d/akkoma-prune-options.add +++ /dev/null @@ -1 +0,0 @@ -Add options to the mix prune_objects task diff --git a/changelog.d/anonymous-exception-else.fix b/changelog.d/anonymous-exception-else.fix deleted file mode 100644 index 38d5d1be5d..0000000000 --- a/changelog.d/anonymous-exception-else.fix +++ /dev/null @@ -1 +0,0 @@ -Fix #strip_report_status_data diff --git a/changelog.d/anti-mentionspam-mrf.add b/changelog.d/anti-mentionspam-mrf.add deleted file mode 100644 index 9466f85f43..0000000000 --- a/changelog.d/anti-mentionspam-mrf.add +++ /dev/null @@ -1 +0,0 @@ -Add Anti-mention Spam MRF backported from Rebased diff --git a/changelog.d/api-docs-2.skip b/changelog.d/api-docs-2.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/api-docs.skip b/changelog.d/api-docs.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/atom-leak.skip b/changelog.d/atom-leak.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/auth-fetch-exception.add b/changelog.d/auth-fetch-exception.add deleted file mode 100644 index 98efb903eb..0000000000 --- a/changelog.d/auth-fetch-exception.add +++ /dev/null @@ -1 +0,0 @@ -HTTPSignaturePlug: Add :authorized_fetch_mode_exceptions configuration \ No newline at end of file diff --git a/changelog.d/authorize-interaction.add b/changelog.d/authorize-interaction.add deleted file mode 100644 index 8692209e12..0000000000 --- a/changelog.d/authorize-interaction.add +++ /dev/null @@ -1 +0,0 @@ -Support /authorize-interaction route used by Mastodon \ No newline at end of file diff --git a/changelog.d/authorized-fetch-rejections.add b/changelog.d/authorized-fetch-rejections.add deleted file mode 100644 index 66e15a979b..0000000000 --- a/changelog.d/authorized-fetch-rejections.add +++ /dev/null @@ -1 +0,0 @@ -Add an option to reject certain domains when authorized fetch is enabled. diff --git a/changelog.d/backups-follows.add b/changelog.d/backups-follows.add deleted file mode 100644 index a55c436f6b..0000000000 --- a/changelog.d/backups-follows.add +++ /dev/null @@ -1 +0,0 @@ -Include following/followers in backups \ No newline at end of file diff --git a/changelog.d/backups-refactor.change b/changelog.d/backups-refactor.change deleted file mode 100644 index 47fc741385..0000000000 --- a/changelog.d/backups-refactor.change +++ /dev/null @@ -1 +0,0 @@ -Refactor the user backups code and improve test coverage diff --git a/changelog.d/bad_inbox_request.change b/changelog.d/bad_inbox_request.change deleted file mode 100644 index b81f606387..0000000000 --- a/changelog.d/bad_inbox_request.change +++ /dev/null @@ -1 +0,0 @@ -Invalid activities delivered to the inbox will be rejected with a 400 Bad Request diff --git a/changelog.d/bandit.change b/changelog.d/bandit.change deleted file mode 100644 index 7a11043147..0000000000 --- a/changelog.d/bandit.change +++ /dev/null @@ -1 +0,0 @@ -Support Bandit as an alternative to Cowboy for the HTTP server. diff --git a/changelog.d/bandit_update_1.5.2.change b/changelog.d/bandit_update_1.5.2.change deleted file mode 100644 index c4aae16367..0000000000 --- a/changelog.d/bandit_update_1.5.2.change +++ /dev/null @@ -1 +0,0 @@ -Update Bandit to 1.5.2 diff --git a/changelog.d/bare_uri_test.skip b/changelog.d/bare_uri_test.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/benchee.skip b/changelog.d/benchee.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/blurhash.change b/changelog.d/blurhash.change deleted file mode 100644 index 4276eb1640..0000000000 --- a/changelog.d/blurhash.change +++ /dev/null @@ -1 +0,0 @@ -Replace eblurhash with rinpatch_blurhash. This also removes a dependency on ImageMagick. diff --git a/changelog.d/bookmark-folders.add b/changelog.d/bookmark-folders.add deleted file mode 100644 index d9b03cecc1..0000000000 --- a/changelog.d/bookmark-folders.add +++ /dev/null @@ -1 +0,0 @@ -Allow to group bookmarks in folders \ No newline at end of file diff --git a/changelog.d/bookmark-folders.skip b/changelog.d/bookmark-folders.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/bugfix-ccworks.fix b/changelog.d/bugfix-ccworks.fix deleted file mode 100644 index 658e27b860..0000000000 --- a/changelog.d/bugfix-ccworks.fix +++ /dev/null @@ -1 +0,0 @@ -Fix federation with Convergence AP Bridge \ No newline at end of file diff --git a/changelog.d/build-release-with-local-libvips.skip b/changelog.d/build-release-with-local-libvips.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/bump-elixir.change b/changelog.d/bump-elixir.change deleted file mode 100644 index afb25d4e78..0000000000 --- a/changelog.d/bump-elixir.change +++ /dev/null @@ -1 +0,0 @@ -Elixir 1.13 is the minimum required version. diff --git a/changelog.d/card-endpoint.remove b/changelog.d/card-endpoint.remove deleted file mode 100644 index e09a24cf76..0000000000 --- a/changelog.d/card-endpoint.remove +++ /dev/null @@ -1 +0,0 @@ -Mastodon API: Remove deprecated GET /api/v1/statuses/:id/card endpoint https://github.com/mastodon/mastodon/pull/11213 diff --git a/changelog.d/card-image-description.add b/changelog.d/card-image-description.add deleted file mode 100644 index bf423ebb8a..0000000000 --- a/changelog.d/card-image-description.add +++ /dev/null @@ -1 +0,0 @@ -Include image description in status media cards \ No newline at end of file diff --git a/changelog.d/chat-attachment-empty-array.fix b/changelog.d/chat-attachment-empty-array.fix deleted file mode 100644 index 7d98c9dd20..0000000000 --- a/changelog.d/chat-attachment-empty-array.fix +++ /dev/null @@ -1 +0,0 @@ -ChatMessage: Tolerate attachment field set to an empty array diff --git a/changelog.d/ci-cache.skip b/changelog.d/ci-cache.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/ci-elixir-1.16.skip b/changelog.d/ci-elixir-1.16.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/ci-elixir-1.17.skip b/changelog.d/ci-elixir-1.17.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/ci-erratic.skip b/changelog.d/ci-erratic.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/ci-otp-update.skip b/changelog.d/ci-otp-update.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/cleanup.skip b/changelog.d/cleanup.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/commonapi-reordering.skip b/changelog.d/commonapi-reordering.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/config-stat-symlink.fix b/changelog.d/config-stat-symlink.fix deleted file mode 100644 index c8b98225d5..0000000000 --- a/changelog.d/config-stat-symlink.fix +++ /dev/null @@ -1 +0,0 @@ -- Config: Check the permissions of the linked file instead of the symlink diff --git a/changelog.d/content-length.fix b/changelog.d/content-length.fix deleted file mode 100644 index dee906a9d0..0000000000 --- a/changelog.d/content-length.fix +++ /dev/null @@ -1 +0,0 @@ -MediaProxy was setting the content-length header which is not permitted by RFC9112§6.2 when we are chunking the reply as it conflicts with the existence of the transfer-encoding header. diff --git a/changelog.d/cowboy-stream-chunked.fix b/changelog.d/cowboy-stream-chunked.fix deleted file mode 100644 index 07211bf181..0000000000 --- a/changelog.d/cowboy-stream-chunked.fix +++ /dev/null @@ -1 +0,0 @@ -Restore Cowboy's ability to stream MediaProxy responses without Chunked encoding. diff --git a/changelog.d/debug-logs.skip b/changelog.d/debug-logs.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/deprecations.skip b/changelog.d/deprecations.skip deleted file mode 100644 index 8b13789179..0000000000 --- a/changelog.d/deprecations.skip +++ /dev/null @@ -1 +0,0 @@ - diff --git a/changelog.d/deprecations2.skip b/changelog.d/deprecations2.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/deps-bump-2024-01-25.skip b/changelog.d/deps-bump-2024-01-25.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/deps-bump-2024-06-07.skip b/changelog.d/deps-bump-2024-06-07.skip deleted file mode 100644 index 4f377a4d75..0000000000 --- a/changelog.d/deps-bump-2024-06-07.skip +++ /dev/null @@ -1,2 +0,0 @@ -Update dependencies held back due to old Elixir version - diff --git a/changelog.d/deps-poison-test-only.skip b/changelog.d/deps-poison-test-only.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/description-meilisearch-type.skip b/changelog.d/description-meilisearch-type.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/dialyzer.skip b/changelog.d/dialyzer.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/dialyzer2.skip b/changelog.d/dialyzer2.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/dialyzer3.skip b/changelog.d/dialyzer3.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/dialyzer4.skip b/changelog.d/dialyzer4.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/dialyzer5.skip b/changelog.d/dialyzer5.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/digest_emails.fix b/changelog.d/digest_emails.fix deleted file mode 100644 index 335a244647..0000000000 --- a/changelog.d/digest_emails.fix +++ /dev/null @@ -1 +0,0 @@ -Fix the processing of email digest jobs. diff --git a/changelog.d/disclose_client.fix b/changelog.d/disclose_client.fix deleted file mode 100644 index 938abc930e..0000000000 --- a/changelog.d/disclose_client.fix +++ /dev/null @@ -1 +0,0 @@ -Client application data was always missing from the status diff --git a/changelog.d/doc-fix.skip b/changelog.d/doc-fix.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/docs-max-elixir-erlang.change b/changelog.d/docs-max-elixir-erlang.change deleted file mode 100644 index a58b7fc17a..0000000000 --- a/changelog.d/docs-max-elixir-erlang.change +++ /dev/null @@ -1 +0,0 @@ -- Document maximum supported version of Erlang & Elixir diff --git a/changelog.d/docs-netbsd-update.change b/changelog.d/docs-netbsd-update.change deleted file mode 100644 index 29599e8f28..0000000000 --- a/changelog.d/docs-netbsd-update.change +++ /dev/null @@ -1 +0,0 @@ -Update and extend NetBSD installation docs diff --git a/changelog.d/elixir-1.15.fix b/changelog.d/elixir-1.15.fix deleted file mode 100644 index d446aaabce..0000000000 --- a/changelog.d/elixir-1.15.fix +++ /dev/null @@ -1 +0,0 @@ -Elixir 1.15 compatibility diff --git a/changelog.d/emoji-download-paginate.fix b/changelog.d/emoji-download-paginate.fix deleted file mode 100644 index e31a633809..0000000000 --- a/changelog.d/emoji-download-paginate.fix +++ /dev/null @@ -1 +0,0 @@ -When downloading remote emojis packs, account for pagination \ No newline at end of file diff --git a/changelog.d/emoji-use-v1.fix b/changelog.d/emoji-use-v1.fix deleted file mode 100644 index ccc96b377e..0000000000 --- a/changelog.d/emoji-use-v1.fix +++ /dev/null @@ -1 +0,0 @@ -Make remote emoji packs API use specifically the V1 URL. Akkoma does not understand it without V1, and it works either way with normal pleroma, so no reason to not do this \ No newline at end of file diff --git a/changelog.d/exile-bsds.skip b/changelog.d/exile-bsds.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/exile-freebsd.skip b/changelog.d/exile-freebsd.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/exile-macos.skip b/changelog.d/exile-macos.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/exile.skip b/changelog.d/exile.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/familiar-followers.add b/changelog.d/familiar-followers.add deleted file mode 100644 index 6e7ec9d257..0000000000 --- a/changelog.d/familiar-followers.add +++ /dev/null @@ -1 +0,0 @@ -Implement `/api/v1/accounts/familiar_followers` \ No newline at end of file diff --git a/changelog.d/favicon.add b/changelog.d/favicon.add deleted file mode 100644 index cf12395e75..0000000000 --- a/changelog.d/favicon.add +++ /dev/null @@ -1 +0,0 @@ -Add support for configuring favicon, embed favicon and PWA manifest in server-generated meta diff --git a/changelog.d/federation_status-access.change b/changelog.d/federation_status-access.change deleted file mode 100644 index 9522544767..0000000000 --- a/changelog.d/federation_status-access.change +++ /dev/null @@ -1 +0,0 @@ -- Make `/api/v1/pleroma/federation_status` publicly available diff --git a/changelog.d/federator-modules.remove b/changelog.d/federator-modules.remove deleted file mode 100644 index 6ff71d1073..0000000000 --- a/changelog.d/federator-modules.remove +++ /dev/null @@ -1 +0,0 @@ -Removed support for multiple federator modules as we only support ActivityPub diff --git a/changelog.d/federator.skip b/changelog.d/federator.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/federator_outgoing_increase.change b/changelog.d/federator_outgoing_increase.change deleted file mode 100644 index 7e68a79bcd..0000000000 --- a/changelog.d/federator_outgoing_increase.change +++ /dev/null @@ -1 +0,0 @@ -Increase outgoing federation parallelism diff --git a/changelog.d/fep-2c59.add b/changelog.d/fep-2c59.add deleted file mode 100644 index 03e33cbd85..0000000000 --- a/changelog.d/fep-2c59.add +++ /dev/null @@ -1 +0,0 @@ -Implement FEP-2c59, add "webfinger" to user actor \ No newline at end of file diff --git a/changelog.d/ffmpeg-limiter.add b/changelog.d/ffmpeg-limiter.add deleted file mode 100644 index e4a5ef1969..0000000000 --- a/changelog.d/ffmpeg-limiter.add +++ /dev/null @@ -1 +0,0 @@ -Framegrabs with ffmpeg will execute with a 5 second timeout and cache the URLs of failures with a TTL of 15 minutes to prevent excessive retries. diff --git a/changelog.d/finch_redirects.fix b/changelog.d/finch_redirects.fix deleted file mode 100644 index c25beaba4e..0000000000 --- a/changelog.d/finch_redirects.fix +++ /dev/null @@ -1 +0,0 @@ -Following HTTP Redirects when the HTTP Adapter is Finch diff --git a/changelog.d/fix-bookmark-folder-tests.skip b/changelog.d/fix-bookmark-folder-tests.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/fix-dockerfile.skip b/changelog.d/fix-dockerfile.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/fix-duplicate-inbox-deliveries.fix b/changelog.d/fix-duplicate-inbox-deliveries.fix deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/fix-migration.skip b/changelog.d/fix-migration.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/fix-mrfs.add b/changelog.d/fix-mrfs.add deleted file mode 100644 index 2a0fb07680..0000000000 --- a/changelog.d/fix-mrfs.add +++ /dev/null @@ -1 +0,0 @@ -Added a Mix task "pleroma.config fix_mrf_policies" which will remove erroneous MRF policies from ConfigDB. diff --git a/changelog.d/fix-otp-comparison.skip b/changelog.d/fix-otp-comparison.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/fix-tests.skip b/changelog.d/fix-tests.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/fix-webfinger-spoofing.security b/changelog.d/fix-webfinger-spoofing.security deleted file mode 100644 index 7b3c9490a8..0000000000 --- a/changelog.d/fix-webfinger-spoofing.security +++ /dev/null @@ -1 +0,0 @@ -Fix webfinger spoofing. diff --git a/changelog.d/force-mention-mrf.add b/changelog.d/force-mention-mrf.add deleted file mode 100644 index 46ac14244b..0000000000 --- a/changelog.d/force-mention-mrf.add +++ /dev/null @@ -1 +0,0 @@ -Add ForceMention MRF \ No newline at end of file diff --git a/changelog.d/framegrabs.fix b/changelog.d/framegrabs.fix deleted file mode 100644 index dc0466f1bd..0000000000 --- a/changelog.d/framegrabs.fix +++ /dev/null @@ -1 +0,0 @@ -Video framegrabs were not working correctly after the change to use Exile to execute ffmpeg diff --git a/changelog.d/frontend-management.add b/changelog.d/frontend-management.add deleted file mode 100644 index b85cddd960..0000000000 --- a/changelog.d/frontend-management.add +++ /dev/null @@ -1 +0,0 @@ -[docs] add frontends management documentation diff --git a/changelog.d/generate-unset-user-keys-migration.skip b/changelog.d/generate-unset-user-keys-migration.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/group-actor.add b/changelog.d/group-actor.add deleted file mode 100644 index 2f614b3d8f..0000000000 --- a/changelog.d/group-actor.add +++ /dev/null @@ -1 +0,0 @@ -Implement group actors diff --git a/changelog.d/group-repeats.fix b/changelog.d/group-repeats.fix deleted file mode 100644 index d465122ddc..0000000000 --- a/changelog.d/group-repeats.fix +++ /dev/null @@ -1 +0,0 @@ -Deactivated groups would still try to repeat a post. diff --git a/changelog.d/gun-logs-debug.skip b/changelog.d/gun-logs-debug.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/gun-logs.skip b/changelog.d/gun-logs.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/gun_pool.fix b/changelog.d/gun_pool.fix deleted file mode 100644 index 94ec9103de..0000000000 --- a/changelog.d/gun_pool.fix +++ /dev/null @@ -1 +0,0 @@ -Fix logic error in Gun connection pooling which prevented retries even when the worker was launched with retry = true diff --git a/changelog.d/gun_pool2.fix b/changelog.d/gun_pool2.fix deleted file mode 100644 index a1f98b49ce..0000000000 --- a/changelog.d/gun_pool2.fix +++ /dev/null @@ -1 +0,0 @@ -Connection pool errors when publishing an activity is a soft-error that will be retried shortly. diff --git a/changelog.d/gun_pool3.skip b/changelog.d/gun_pool3.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/gun_pool4.fix b/changelog.d/gun_pool4.fix deleted file mode 100644 index f68c1c9704..0000000000 --- a/changelog.d/gun_pool4.fix +++ /dev/null @@ -1 +0,0 @@ -Gun Connection Pool was not retrying to acquire a connection if the pool was full and stale connections were reclaimed diff --git a/changelog.d/hackney-pool-timeouts.change b/changelog.d/hackney-pool-timeouts.change deleted file mode 100644 index d763fe602e..0000000000 --- a/changelog.d/hackney-pool-timeouts.change +++ /dev/null @@ -1 +0,0 @@ -Change Hackney connection pool timeouts to align with the values Gun uses diff --git a/changelog.d/handle-non-validate-delete-errors.change b/changelog.d/handle-non-validate-delete-errors.change deleted file mode 100644 index 94adb0e988..0000000000 --- a/changelog.d/handle-non-validate-delete-errors.change +++ /dev/null @@ -1 +0,0 @@ -Transmogrifier: handle non-validate errors on incoming Delete activities diff --git a/changelog.d/handle_object_fetch_failures.change b/changelog.d/handle_object_fetch_failures.change deleted file mode 100644 index ae44e6f4b8..0000000000 --- a/changelog.d/handle_object_fetch_failures.change +++ /dev/null @@ -1 +0,0 @@ -Remote object fetch failures will prevent the object fetch job from retrying if the object request returns 401, 403, 404, 410, or exceeds the maximum thread depth. diff --git a/changelog.d/healthcheck-disabled-error.fix b/changelog.d/healthcheck-disabled-error.fix deleted file mode 100644 index 984384a524..0000000000 --- a/changelog.d/healthcheck-disabled-error.fix +++ /dev/null @@ -1 +0,0 @@ -TwitterAPI: Return proper error when healthcheck is disabled diff --git a/changelog.d/ingestion-queue.skip b/changelog.d/ingestion-queue.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/instance-contact-account.add b/changelog.d/instance-contact-account.add deleted file mode 100644 index e119446d2b..0000000000 --- a/changelog.d/instance-contact-account.add +++ /dev/null @@ -1 +0,0 @@ -Add contact account to InstanceView \ No newline at end of file diff --git a/changelog.d/instance-defdelegates.skip b/changelog.d/instance-defdelegates.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/instance-rules.add b/changelog.d/instance-rules.add deleted file mode 100644 index 42f3cbfa18..0000000000 --- a/changelog.d/instance-rules.add +++ /dev/null @@ -1 +0,0 @@ -Add instance rules \ No newline at end of file diff --git a/changelog.d/instance-v2.add b/changelog.d/instance-v2.add deleted file mode 100644 index 4dd7ce8c05..0000000000 --- a/changelog.d/instance-v2.add +++ /dev/null @@ -1 +0,0 @@ -Implement /api/v2/instance route \ No newline at end of file diff --git a/changelog.d/instance-v2.skip b/changelog.d/instance-v2.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/ipfs-dialyzer.skip b/changelog.d/ipfs-dialyzer.skip deleted file mode 100644 index b3e74cd19a..0000000000 --- a/changelog.d/ipfs-dialyzer.skip +++ /dev/null @@ -1 +0,0 @@ -no comment diff --git a/changelog.d/issue-3241.fix b/changelog.d/issue-3241.fix deleted file mode 100644 index d46db9805a..0000000000 --- a/changelog.d/issue-3241.fix +++ /dev/null @@ -1 +0,0 @@ -Handle cases when users.inbox is nil. diff --git a/changelog.d/last_status_at.change b/changelog.d/last_status_at.change deleted file mode 100644 index 5417aff30d..0000000000 --- a/changelog.d/last_status_at.change +++ /dev/null @@ -1 +0,0 @@ -- Change AccountView `last_status_at` from a datetime to a date (as done in Mastodon 3.1.0) \ No newline at end of file diff --git a/changelog.d/ldap-error-logging.change b/changelog.d/ldap-error-logging.change deleted file mode 100644 index 56f0e7fc31..0000000000 --- a/changelog.d/ldap-error-logging.change +++ /dev/null @@ -1 +0,0 @@ -Improve error logging when LDAP authentication fails. diff --git a/changelog.d/ldap.fix b/changelog.d/ldap.fix deleted file mode 100644 index 9ca6972875..0000000000 --- a/changelog.d/ldap.fix +++ /dev/null @@ -1 +0,0 @@ -Fix LDAP support diff --git a/changelog.d/link-verification.add b/changelog.d/link-verification.add deleted file mode 100644 index d8b11ebbc2..0000000000 --- a/changelog.d/link-verification.add +++ /dev/null @@ -1 +0,0 @@ -Verify profile link ownership with rel="me" \ No newline at end of file diff --git a/changelog.d/loading-order-test-fix.skip b/changelog.d/loading-order-test-fix.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/local-webfinger.fix b/changelog.d/local-webfinger.fix deleted file mode 100644 index d99056efd8..0000000000 --- a/changelog.d/local-webfinger.fix +++ /dev/null @@ -1 +0,0 @@ -Use correct domain for fqn and InstanceView \ No newline at end of file diff --git a/changelog.d/logger-metadata.add b/changelog.d/logger-metadata.add deleted file mode 100644 index 6c627a972d..0000000000 --- a/changelog.d/logger-metadata.add +++ /dev/null @@ -1 +0,0 @@ -Logger metadata is now attached to some logs to help with troubleshooting and analysis diff --git a/changelog.d/mark-read.fix b/changelog.d/mark-read.fix deleted file mode 100644 index 346eb19e2a..0000000000 --- a/changelog.d/mark-read.fix +++ /dev/null @@ -1 +0,0 @@ -The query for marking notifications as read has been simplified diff --git a/changelog.d/mastodon_api_v2.add b/changelog.d/mastodon_api_v2.add deleted file mode 100644 index d53aa35c44..0000000000 --- a/changelog.d/mastodon_api_v2.add +++ /dev/null @@ -1 +0,0 @@ -Add new parameters to /api/v2/instance: configuration[accounts][max_pinned_statuses] and configuration[statuses][characters_reserved_per_url] diff --git a/changelog.d/mastodon_directory.fix b/changelog.d/mastodon_directory.fix deleted file mode 100644 index 937c8f8641..0000000000 --- a/changelog.d/mastodon_directory.fix +++ /dev/null @@ -1 +0,0 @@ -Mastodon API /api/v1/directory: Fix listing directory contents when not authenticated diff --git a/changelog.d/mediaproxy-http.fix b/changelog.d/mediaproxy-http.fix deleted file mode 100644 index 4ff6430e08..0000000000 --- a/changelog.d/mediaproxy-http.fix +++ /dev/null @@ -1 +0,0 @@ -Ensure MediaProxy HTTP requests obey all the defined connection settings diff --git a/changelog.d/meilisearch.add b/changelog.d/meilisearch.add deleted file mode 100644 index 4856eea2ed..0000000000 --- a/changelog.d/meilisearch.add +++ /dev/null @@ -1 +0,0 @@ -Add meilisearch, make search engines pluggable diff --git a/changelog.d/memleak.fix b/changelog.d/memleak.fix deleted file mode 100644 index 2465921c03..0000000000 --- a/changelog.d/memleak.fix +++ /dev/null @@ -1 +0,0 @@ -Fix a memory leak caused by Websocket connections that would not enter a state where a full garbage collection run could be triggered. diff --git a/changelog.d/mergeback-2.6.2.skip b/changelog.d/mergeback-2.6.2.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/metadata-provider-empty-post.fix b/changelog.d/metadata-provider-empty-post.fix deleted file mode 100644 index 8d6341c6c7..0000000000 --- a/changelog.d/metadata-provider-empty-post.fix +++ /dev/null @@ -1 +0,0 @@ -Fix OpenGraph and Twitter metadata providers when parsing objects with no content or summary fields. diff --git a/changelog.d/migration-fix.skip b/changelog.d/migration-fix.skip deleted file mode 100644 index 8b13789179..0000000000 --- a/changelog.d/migration-fix.skip +++ /dev/null @@ -1 +0,0 @@ - diff --git a/changelog.d/missing-fks.add b/changelog.d/missing-fks.add deleted file mode 100644 index cf74de03bc..0000000000 --- a/changelog.d/missing-fks.add +++ /dev/null @@ -1 +0,0 @@ -Add missing indexes on foreign key relationships diff --git a/changelog.d/missing-mrfs.add b/changelog.d/missing-mrfs.add deleted file mode 100644 index 6a17f9e1ae..0000000000 --- a/changelog.d/missing-mrfs.add +++ /dev/null @@ -1 +0,0 @@ -Startup detection for configured MRF modules that are missing or incorrectly defined diff --git a/changelog.d/mix-indexer.add b/changelog.d/mix-indexer.add deleted file mode 100644 index 6effb959bd..0000000000 --- a/changelog.d/mix-indexer.add +++ /dev/null @@ -1 +0,0 @@ -Permit passing --chunk and --step values to the Pleroma.Search.Indexer Mix task diff --git a/changelog.d/mrf-nsfw-otp25.skip b/changelog.d/mrf-nsfw-otp25.skip deleted file mode 100644 index e804f19a00..0000000000 --- a/changelog.d/mrf-nsfw-otp25.skip +++ /dev/null @@ -1 +0,0 @@ -noop diff --git a/changelog.d/mrf-regex-error.fix b/changelog.d/mrf-regex-error.fix deleted file mode 100644 index 2c43bc04a5..0000000000 --- a/changelog.d/mrf-regex-error.fix +++ /dev/null @@ -1 +0,0 @@ -MRF: Log sensible error for subdomains_regex diff --git a/changelog.d/mrf-steal-emoji-extname.fix b/changelog.d/mrf-steal-emoji-extname.fix deleted file mode 100644 index 197aa9b9e5..0000000000 --- a/changelog.d/mrf-steal-emoji-extname.fix +++ /dev/null @@ -1 +0,0 @@ -MRF.StealEmojiPolicy: Properly add fallback extension to filenames missing one diff --git a/changelog.d/mrf_hashtags.fix b/changelog.d/mrf_hashtags.fix deleted file mode 100644 index c44c2376b4..0000000000 --- a/changelog.d/mrf_hashtags.fix +++ /dev/null @@ -1 +0,0 @@ -Federated timeline removal of hashtags via MRF HashtagPolicy diff --git a/changelog.d/nil-content-map.fix b/changelog.d/nil-content-map.fix deleted file mode 100644 index d4943bf74d..0000000000 --- a/changelog.d/nil-content-map.fix +++ /dev/null @@ -1 +0,0 @@ -Support objects with a null contentMap (firefish) diff --git a/changelog.d/no-async-with-clear-config.skip b/changelog.d/no-async-with-clear-config.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/notification-spex.skip b/changelog.d/notification-spex.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/notifications-index.fix b/changelog.d/notifications-index.fix deleted file mode 100644 index 4617cbec0e..0000000000 --- a/changelog.d/notifications-index.fix +++ /dev/null @@ -1 +0,0 @@ -Fix notifications query which was not using the index properly diff --git a/changelog.d/notifications.fix b/changelog.d/notifications.fix deleted file mode 100644 index a2d2eaea90..0000000000 --- a/changelog.d/notifications.fix +++ /dev/null @@ -1 +0,0 @@ -Notifications: improve performance by filtering on users table instead of activities table \ No newline at end of file diff --git a/changelog.d/oauth-nickname.skip b/changelog.d/oauth-nickname.skip deleted file mode 100644 index 02f16e06cc..0000000000 --- a/changelog.d/oauth-nickname.skip +++ /dev/null @@ -1 +0,0 @@ -Use User.full_nickname/1 in oauth html template \ No newline at end of file diff --git a/changelog.d/oban-cancel-badreq.change b/changelog.d/oban-cancel-badreq.change deleted file mode 100644 index c7951735ca..0000000000 --- a/changelog.d/oban-cancel-badreq.change +++ /dev/null @@ -1 +0,0 @@ -Publisher jobs will not retry if the error received is a 400 diff --git a/changelog.d/oban-cancel-federation.add b/changelog.d/oban-cancel-federation.add deleted file mode 100644 index 1481936802..0000000000 --- a/changelog.d/oban-cancel-federation.add +++ /dev/null @@ -1 +0,0 @@ -Deleting, Unfavoriting, Unrepeating, or Unreacting will cancel undelivered publishing jobs for the original activity. diff --git a/changelog.d/oban-cancel-poll-result.change b/changelog.d/oban-cancel-poll-result.change deleted file mode 100644 index b51c460a78..0000000000 --- a/changelog.d/oban-cancel-poll-result.change +++ /dev/null @@ -1 +0,0 @@ -PollWorker jobs will not retry if the activity no longer exists. diff --git a/changelog.d/oban-cancel-receiverworker.change b/changelog.d/oban-cancel-receiverworker.change deleted file mode 100644 index 70ad22d606..0000000000 --- a/changelog.d/oban-cancel-receiverworker.change +++ /dev/null @@ -1 +0,0 @@ -Improved detecting unrecoverable errors for incoming federation jobs diff --git a/changelog.d/oban-cancel.change b/changelog.d/oban-cancel.change deleted file mode 100644 index e4512d3bb1..0000000000 --- a/changelog.d/oban-cancel.change +++ /dev/null @@ -1 +0,0 @@ -Changed some jobs to return :cancel on unrecoverable errors that should not be retried diff --git a/changelog.d/oban-deprecated-discards.skip b/changelog.d/oban-deprecated-discards.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/oban-fetcher-rejected.change b/changelog.d/oban-fetcher-rejected.change deleted file mode 100644 index 65f5c992dc..0000000000 --- a/changelog.d/oban-fetcher-rejected.change +++ /dev/null @@ -1 +0,0 @@ -Discard Remote Fetcher jobs which errored due to an MRF rejection. diff --git a/changelog.d/oban-live_dashboard.add b/changelog.d/oban-live_dashboard.add deleted file mode 100644 index b5b3e4f41a..0000000000 --- a/changelog.d/oban-live_dashboard.add +++ /dev/null @@ -1 +0,0 @@ -Oban jobs can now be viewed in the Live Dashboard diff --git a/changelog.d/oban-queues.change b/changelog.d/oban-queues.change deleted file mode 100644 index 16df6409a0..0000000000 --- a/changelog.d/oban-queues.change +++ /dev/null @@ -1 +0,0 @@ -Oban queues have refactored to simplify the queue design diff --git a/changelog.d/oban-rich-media-errors.fix b/changelog.d/oban-rich-media-errors.fix deleted file mode 100644 index b904108db9..0000000000 --- a/changelog.d/oban-rich-media-errors.fix +++ /dev/null @@ -1 +0,0 @@ -Prevent Rich Media backfill jobs from retrying in cases where it is likely they will fail again. diff --git a/changelog.d/oban-timeouts.change b/changelog.d/oban-timeouts.change deleted file mode 100644 index 33d017c5c3..0000000000 --- a/changelog.d/oban-timeouts.change +++ /dev/null @@ -1 +0,0 @@ -Ensure all Oban jobs have timeouts defined diff --git a/changelog.d/oban-timeouts.skip b/changelog.d/oban-timeouts.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/oban-transmogrifier.skip b/changelog.d/oban-transmogrifier.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/oban-user-refresh-unique.fix b/changelog.d/oban-user-refresh-unique.fix deleted file mode 100644 index 5e112c87fc..0000000000 --- a/changelog.d/oban-user-refresh-unique.fix +++ /dev/null @@ -1 +0,0 @@ -Oban Jobs for refreshing users were not respecting the uniqueness setting diff --git a/changelog.d/opengraph-rich-media-proxy.add b/changelog.d/opengraph-rich-media-proxy.add deleted file mode 100644 index 2b2fc657d2..0000000000 --- a/changelog.d/opengraph-rich-media-proxy.add +++ /dev/null @@ -1 +0,0 @@ -Add media proxy to opengraph rich media cards diff --git a/changelog.d/optimistic-inbox-sigs.fix b/changelog.d/optimistic-inbox-sigs.fix deleted file mode 100644 index 53ffe6b5bb..0000000000 --- a/changelog.d/optimistic-inbox-sigs.fix +++ /dev/null @@ -1 +0,0 @@ -Fix Optimistic Inbox for failed signatures diff --git a/changelog.d/optimistic-inbox.change b/changelog.d/optimistic-inbox.change deleted file mode 100644 index 2cf1ce92c4..0000000000 --- a/changelog.d/optimistic-inbox.change +++ /dev/null @@ -1 +0,0 @@ -Optimistic Inbox reduces the processing overhead of incoming activities without instantly verifiable signatures. diff --git a/changelog.d/otp26.add b/changelog.d/otp26.add deleted file mode 100644 index b019afdf39..0000000000 --- a/changelog.d/otp26.add +++ /dev/null @@ -1 +0,0 @@ -Support for Erlang OTP 26 diff --git a/changelog.d/pinned-collection-fetch.security b/changelog.d/pinned-collection-fetch.security deleted file mode 100644 index 4e87469242..0000000000 --- a/changelog.d/pinned-collection-fetch.security +++ /dev/null @@ -1 +0,0 @@ -Use proper workers for fetching pins instead of an ad-hoc task, fixing a potential fetch loop diff --git a/changelog.d/pools.change b/changelog.d/pools.change deleted file mode 100644 index 3c689195a4..0000000000 --- a/changelog.d/pools.change +++ /dev/null @@ -1 +0,0 @@ -HTTP connection pool adjustments diff --git a/changelog.d/postgres-jit.change b/changelog.d/postgres-jit.change deleted file mode 100644 index 38225b06b0..0000000000 --- a/changelog.d/postgres-jit.change +++ /dev/null @@ -1 +0,0 @@ -Disable jit by default for PostgreSQL diff --git a/changelog.d/prioritize-direct-recipients.add b/changelog.d/prioritize-direct-recipients.add deleted file mode 100644 index 4efc94c688..0000000000 --- a/changelog.d/prioritize-direct-recipients.add +++ /dev/null @@ -1 +0,0 @@ -- Prioritize mentioned recipients (i.e., those that are not just followers) when federating. diff --git a/changelog.d/prometheus-docs.change b/changelog.d/prometheus-docs.change deleted file mode 100644 index a9bd1e2e9f..0000000000 --- a/changelog.d/prometheus-docs.change +++ /dev/null @@ -1 +0,0 @@ -Update the documentation for configuring Prometheus metrics. diff --git a/changelog.d/promex.change b/changelog.d/promex.change deleted file mode 100644 index 6c1571c548..0000000000 --- a/changelog.d/promex.change +++ /dev/null @@ -1 +0,0 @@ -Change the prometheus library to PromEx. diff --git a/changelog.d/promexdocs.add b/changelog.d/promexdocs.add deleted file mode 100644 index dda972994a..0000000000 --- a/changelog.d/promexdocs.add +++ /dev/null @@ -1 +0,0 @@ -PromEx documentation diff --git a/changelog.d/public-polls.add b/changelog.d/public-polls.add deleted file mode 100644 index 0dae0c38ec..0000000000 --- a/changelog.d/public-polls.add +++ /dev/null @@ -1 +0,0 @@ -Expose nonAnonymous field from Smithereen polls \ No newline at end of file diff --git a/changelog.d/publisher.change b/changelog.d/publisher.change deleted file mode 100644 index 0d26d7b005..0000000000 --- a/changelog.d/publisher.change +++ /dev/null @@ -1 +0,0 @@ -Publisher jobs now store the the activity id instead of inserting duplicate JSON data in the Oban queue for each delivery. diff --git a/changelog.d/publisher_discard.change b/changelog.d/publisher_discard.change deleted file mode 100644 index 85e530d8d3..0000000000 --- a/changelog.d/publisher_discard.change +++ /dev/null @@ -1 +0,0 @@ -Activity publishing failures will prevent the job from retrying if the publishing request returns a 403 or 410 diff --git a/changelog.d/publisher_log.change b/changelog.d/publisher_log.change deleted file mode 100644 index 3f85f5a1ea..0000000000 --- a/changelog.d/publisher_log.change +++ /dev/null @@ -1 +0,0 @@ -Publisher errors will now emit logs indicating the inbox that was not available for delivery. diff --git a/changelog.d/qdrant_search.add b/changelog.d/qdrant_search.add deleted file mode 100644 index 9801131d1a..0000000000 --- a/changelog.d/qdrant_search.add +++ /dev/null @@ -1 +0,0 @@ -Add Qdrant/OpenAI embedding search diff --git a/changelog.d/qtfaststart.fix b/changelog.d/qtfaststart.fix deleted file mode 100644 index 66d2569f27..0000000000 --- a/changelog.d/qtfaststart.fix +++ /dev/null @@ -1 +0,0 @@ -MediaProxy Preview failures prevented when encountering certain video files diff --git a/changelog.d/quotes-count.skip b/changelog.d/quotes-count.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/reachability.change b/changelog.d/reachability.change deleted file mode 100644 index 06f63272ba..0000000000 --- a/changelog.d/reachability.change +++ /dev/null @@ -1 +0,0 @@ -Reduce the reachability timestamp update to a single upsert query diff --git a/changelog.d/realpath-over-readlink.fix b/changelog.d/realpath-over-readlink.fix deleted file mode 100644 index 479561b95d..0000000000 --- a/changelog.d/realpath-over-readlink.fix +++ /dev/null @@ -1 +0,0 @@ -pleroma_ctl: Use realpath(1) instead of readlink(1) diff --git a/changelog.d/receiverworker-error-handling.fix b/changelog.d/receiverworker-error-handling.fix deleted file mode 100644 index f017a2bba0..0000000000 --- a/changelog.d/receiverworker-error-handling.fix +++ /dev/null @@ -1 +0,0 @@ -ReceiverWorker: Make sure non-{:ok, _} is returned as {:error, …} \ No newline at end of file diff --git a/changelog.d/remote-fetcher-error.skip b/changelog.d/remote-fetcher-error.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/reply-to-deleted.change b/changelog.d/reply-to-deleted.change deleted file mode 100644 index 8b952ee7a5..0000000000 --- a/changelog.d/reply-to-deleted.change +++ /dev/null @@ -1 +0,0 @@ -A 422 error is returned when attempting to reply to a deleted status diff --git a/changelog.d/rich-media-hardening.fix b/changelog.d/rich-media-hardening.fix deleted file mode 100644 index ff3dc81f3c..0000000000 --- a/changelog.d/rich-media-hardening.fix +++ /dev/null @@ -1 +0,0 @@ -Harden Rich Media parsing against very slow or malicious URLs diff --git a/changelog.d/rich_media.fix b/changelog.d/rich_media.fix deleted file mode 100644 index 08f1195501..0000000000 --- a/changelog.d/rich_media.fix +++ /dev/null @@ -1 +0,0 @@ -Rich Media Preview cache eviction when the activity is updated. diff --git a/changelog.d/rich_media_backfill.change b/changelog.d/rich_media_backfill.change deleted file mode 100644 index d746ac8ce6..0000000000 --- a/changelog.d/rich_media_backfill.change +++ /dev/null @@ -1 +0,0 @@ -Rich Media backfilling is now an Oban job diff --git a/changelog.d/rich_media_config.skip b/changelog.d/rich_media_config.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/rich_media_oban.skip b/changelog.d/rich_media_oban.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/rich_media_refactor.change b/changelog.d/rich_media_refactor.change deleted file mode 100644 index c0d4e3b0ad..0000000000 --- a/changelog.d/rich_media_refactor.change +++ /dev/null @@ -1 +0,0 @@ -Refactored Rich Media to cache the content in the database. Fetching operations that could block status rendering have been eliminated. diff --git a/changelog.d/rich_media_stream_test.skip b/changelog.d/rich_media_stream_test.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/rich_media_tests.skip b/changelog.d/rich_media_tests.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/richmediattl.fix b/changelog.d/richmediattl.fix deleted file mode 100644 index 98de63015a..0000000000 --- a/changelog.d/richmediattl.fix +++ /dev/null @@ -1 +0,0 @@ -Parsing of RichMedia TTLs for Amazon URLs when query parameters are nil diff --git a/changelog.d/scrobble-url.add b/changelog.d/scrobble-url.add deleted file mode 100644 index 24bdeed89c..0000000000 --- a/changelog.d/scrobble-url.add +++ /dev/null @@ -1 +0,0 @@ -Adds the capability to add a URL to a scrobble (optional field) diff --git a/changelog.d/scrubbers-html4-GtS.add b/changelog.d/scrubbers-html4-GtS.add deleted file mode 100644 index 7f99dbb253..0000000000 --- a/changelog.d/scrubbers-html4-GtS.add +++ /dev/null @@ -1 +0,0 @@ -- scrubbers/default: Add more formatting elements from HTML4 / GoToSocial (acronym, bdo, big, cite, dfn, ins, kbd, q, samp, s, tt, var, wbr) diff --git a/changelog.d/search-healthcheck.add b/changelog.d/search-healthcheck.add deleted file mode 100644 index 4974925e77..0000000000 --- a/changelog.d/search-healthcheck.add +++ /dev/null @@ -1 +0,0 @@ -Monitoring of search backend health to control the processing of jobs in the search indexing Oban queue diff --git a/changelog.d/show-reposter-replies.add b/changelog.d/show-reposter-replies.add deleted file mode 100644 index 3b852ec3b1..0000000000 --- a/changelog.d/show-reposter-replies.add +++ /dev/null @@ -1 +0,0 @@ -Display reposted replies with exclude_replies: true \ No newline at end of file diff --git a/changelog.d/spex-error-log.skip b/changelog.d/spex-error-log.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/status-notification-type.add b/changelog.d/status-notification-type.add deleted file mode 100644 index a6e94fa870..0000000000 --- a/changelog.d/status-notification-type.add +++ /dev/null @@ -1 +0,0 @@ -Add "status" notification type \ No newline at end of file diff --git a/changelog.d/stream-end-poll.fix b/changelog.d/stream-end-poll.fix deleted file mode 100644 index db513efdcd..0000000000 --- a/changelog.d/stream-end-poll.fix +++ /dev/null @@ -1 +0,0 @@ -End of poll notifications were not streamed over websockets or web push diff --git a/changelog.d/support-honk-image-summaries.add b/changelog.d/support-honk-image-summaries.add deleted file mode 100644 index 052c03f95a..0000000000 --- a/changelog.d/support-honk-image-summaries.add +++ /dev/null @@ -1 +0,0 @@ -Support honk-style attachment summaries as alt-text. diff --git a/changelog.d/system-cflags.fix b/changelog.d/system-cflags.fix deleted file mode 100644 index 84de5ad57a..0000000000 --- a/changelog.d/system-cflags.fix +++ /dev/null @@ -1 +0,0 @@ -- Fix eblurhash and elixir-captcha not using system cflags diff --git a/changelog.d/tesla.deps b/changelog.d/tesla.deps deleted file mode 100644 index 799bbc6704..0000000000 --- a/changelog.d/tesla.deps +++ /dev/null @@ -1 +0,0 @@ -Update Tesla HTTP client middleware to 1.8.0 diff --git a/changelog.d/test-improvements.skip b/changelog.d/test-improvements.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/testsecrets.skip b/changelog.d/testsecrets.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/transient-validators-defaults.change b/changelog.d/transient-validators-defaults.change deleted file mode 100644 index 225cf4d0c1..0000000000 --- a/changelog.d/transient-validators-defaults.change +++ /dev/null @@ -1 +0,0 @@ -Set default values on validators for transient objects (attachment, poll options) diff --git a/changelog.d/typo.skip b/changelog.d/typo.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/user-refresh-rework.skip b/changelog.d/user-refresh-rework.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/user-refresh.change b/changelog.d/user-refresh.change deleted file mode 100644 index b91169a9e8..0000000000 --- a/changelog.d/user-refresh.change +++ /dev/null @@ -1 +0,0 @@ -User profile refreshes are now asynchronous diff --git a/changelog.d/video-thumbs.fix b/changelog.d/video-thumbs.fix deleted file mode 100644 index 03e862f3db..0000000000 --- a/changelog.d/video-thumbs.fix +++ /dev/null @@ -1 +0,0 @@ -Video thumbnails were not being generated due to a negative cache lookup logic error diff --git a/changelog.d/vips.change b/changelog.d/vips.change deleted file mode 100644 index ee18cd34bc..0000000000 --- a/changelog.d/vips.change +++ /dev/null @@ -1 +0,0 @@ -Change mediaproxy previews to use vips to generate thumbnails instead of ImageMagick diff --git a/changelog.d/web_push.fix b/changelog.d/web_push.fix deleted file mode 100644 index cf933e2d45..0000000000 --- a/changelog.d/web_push.fix +++ /dev/null @@ -1 +0,0 @@ -Fix web push notifications not successfully delivering diff --git a/changelog.d/web_push_actor_regression.skip b/changelog.d/web_push_actor_regression.skip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/changelog.d/web_push_filtered.fix b/changelog.d/web_push_filtered.fix deleted file mode 100644 index b9159362ab..0000000000 --- a/changelog.d/web_push_filtered.fix +++ /dev/null @@ -1 +0,0 @@ -Web Push notifications are no longer generated for muted/blocked threads and users. diff --git a/changelog.d/webfinger-validation.fix b/changelog.d/webfinger-validation.fix deleted file mode 100644 index e643126665..0000000000 --- a/changelog.d/webfinger-validation.fix +++ /dev/null @@ -1 +0,0 @@ -Fix validate_webfinger when running a different domain for Webfinger \ No newline at end of file diff --git a/changelog.d/webpush-polls.change b/changelog.d/webpush-polls.change deleted file mode 100644 index 5607d6bfcb..0000000000 --- a/changelog.d/webpush-polls.change +++ /dev/null @@ -1 +0,0 @@ -Render nice web push notifications for polls diff --git a/changelog.d/websocket-refactor.change b/changelog.d/websocket-refactor.change deleted file mode 100644 index 3c447832bd..0000000000 --- a/changelog.d/websocket-refactor.change +++ /dev/null @@ -1 +0,0 @@ -Refactor the Mastodon /api/v1/streaming websocket handler to use Phoenix.Socket.Transport From 574bc1fa5f9fd804d57311d25f36566b9e527322 Mon Sep 17 00:00:00 2001 From: Lain Soykaf Date: Thu, 1 Aug 2024 11:49:36 +0400 Subject: [PATCH 06/58] Frontend: Update to 2.7.0 --- priv/static/index.html | 2 +- .../static/css/159.1d523a00378ebd68c5b3.css.map | 1 - ...378ebd68c5b3.css => 1597.a250eca8cf87418c7b3e.css} | 4 ++-- .../static/css/1597.a250eca8cf87418c7b3e.css.map | 1 + priv/static/static/css/5250.b9104f3df4166526b081.css | 2 ++ .../static/css/5250.b9104f3df4166526b081.css.map | 1 + priv/static/static/css/5292.035030cbb2311a7ddada.css | 11 +++++++++++ .../static/css/5292.035030cbb2311a7ddada.css.map | 1 + priv/static/static/css/6464.169260b661120cc50815.css | 2 -- .../static/css/6464.169260b661120cc50815.css.map | 1 - priv/static/static/css/6464.7845ee2ccc5e22628b2a.css | 2 ++ .../static/css/6464.7845ee2ccc5e22628b2a.css.map | 1 + priv/static/static/css/7586.0d43f70bc6240422f179.css | 2 -- .../static/css/7586.0d43f70bc6240422f179.css.map | 1 - priv/static/static/css/7594.a8030565c3ef463dc1de.css | 2 ++ .../static/css/7594.a8030565c3ef463dc1de.css.map | 1 + priv/static/static/css/7962.76663e78ad5ea0bb0b90.css | 11 ----------- .../static/css/7962.76663e78ad5ea0bb0b90.css.map | 1 - priv/static/static/css/8859.d26a3b0841a7beb8fd4a.css | 2 -- .../static/css/8859.d26a3b0841a7beb8fd4a.css.map | 1 - priv/static/static/css/app.75b043cffb8e922bc29e.css | 2 ++ .../static/css/app.75b043cffb8e922bc29e.css.map | 1 + priv/static/static/css/app.a7f63ee9107a77599942.css | 2 -- .../static/css/app.a7f63ee9107a77599942.css.map | 1 - priv/static/static/js/159.903e90c9de8ef6c67077.js | 2 -- priv/static/static/js/159.903e90c9de8ef6c67077.js.map | 1 - priv/static/static/js/1597.134341dec11e42dd5fae.js | 2 ++ .../static/static/js/1597.134341dec11e42dd5fae.js.map | 1 + priv/static/static/js/3733.7060d1e6bca813125a0c.js | 3 --- .../static/static/js/3733.7060d1e6bca813125a0c.js.map | 1 - priv/static/static/js/48.b5ecdbc517423af07ca4.js | 3 --- priv/static/static/js/48.b5ecdbc517423af07ca4.js.map | 1 - priv/static/static/js/48.f58874c23a9bf1c1f591.js | 3 +++ ...NSE.txt => 48.f58874c23a9bf1c1f591.js.LICENSE.txt} | 0 priv/static/static/js/48.f58874c23a9bf1c1f591.js.map | 1 + priv/static/static/js/5250.f0d4cfa412bbf8163d11.js | 2 ++ .../static/static/js/5250.f0d4cfa412bbf8163d11.js.map | 1 + priv/static/static/js/5292.125b85a896c810481068.js | 2 ++ .../static/static/js/5292.125b85a896c810481068.js.map | 1 + ...a1c948cde554e9.js => 6464.6f764a6d660917d88ca5.js} | 2 +- ...e554e9.js.map => 6464.6f764a6d660917d88ca5.js.map} | 2 +- priv/static/static/js/6561.24d12b4e33b21319845b.js | 3 +++ ...E.txt => 6561.24d12b4e33b21319845b.js.LICENSE.txt} | 8 ++++++++ .../static/static/js/6561.24d12b4e33b21319845b.js.map | 1 + priv/static/static/js/7586.628f729b9c8b2e6f4e1f.js | 2 -- .../static/static/js/7586.628f729b9c8b2e6f4e1f.js.map | 1 - priv/static/static/js/7594.f0ffca037eec090815d9.js | 2 ++ .../static/static/js/7594.f0ffca037eec090815d9.js.map | 1 + priv/static/static/js/7962.e25d40b042f8ee7389c3.js | 2 -- .../static/static/js/7962.e25d40b042f8ee7389c3.js.map | 1 - priv/static/static/js/8859.c76b0a0c3a4b5acbef11.js | 2 -- .../static/static/js/8859.c76b0a0c3a4b5acbef11.js.map | 1 - priv/static/static/js/9060.24271e167e0471a1a732.js | 2 -- .../static/static/js/9060.24271e167e0471a1a732.js.map | 1 - priv/static/static/js/9060.606ed1efce1ce3be713d.js | 2 ++ .../static/static/js/9060.606ed1efce1ce3be713d.js.map | 1 + priv/static/static/js/app.3fbb12e9679dc0e0aa33.js | 2 ++ priv/static/static/js/app.3fbb12e9679dc0e0aa33.js.map | 1 + priv/static/static/js/app.d42ab31e1d50a3265a82.js | 2 -- priv/static/static/js/app.d42ab31e1d50a3265a82.js.map | 1 - ...a6a2cce6246.js => af-json.260623f695510b34c146.js} | 0 ...7c18233fec3.js => am-json.fd30fc79a9ef9f40bcb3.js} | 0 ...49f2954d49b.js => ar-json.66fec1d991d30cf191ac.js} | 0 ...867070f0.js => ar_SA-json.89b9143ae611e2581b5b.js} | 0 ...1cecd195738.js => as-json.bd49b949563ed3872ea7.js} | 0 ...539c19a9b9.js => ast-json.b04ae8a41f30fcc498c6.js} | 0 ...d9c4d1f834c.js => az-json.fc8b49efe1bec779ad7c.js} | 0 ...873a4100c69.js => be-json.390af96d7085a650d098.js} | 0 ...2a7bf87e1db.js => bg-json.aada1abf5a5718a2785a.js} | 0 ...f36ad06c58d.js => bn-json.71061bf9106a3f1d06d9.js} | 0 ...8965ed10bae.js => br-json.623b25e4acdba3caea90.js} | 0 ...c7976cf083c.js => bs-json.895d6c19c442497a4542.js} | 0 ...b10b242c6a5.js => ca-json.4bf349a90cbee89b8a8f.js} | 0 ...e2b02291cb.js => ccp-json.915ed087d80fc6754272.js} | 0 ...8aa77ee395.js => ceb-json.d7c07bee01a6e04f3214.js} | 0 ...74167dec10.js => chr-json.037a46de1cb0ffa99c15.js} | 0 ...15aa76051a.js => ckb-json.3e534416e3850186a747.js} | 0 ...0dc9fe6b3dc.js => cs-json.606d434132759db14a54.js} | 0 ...5ad56530ead.js => cy-json.897b7ce472b1a390f392.js} | 0 ...f71edafc543.js => da-json.af3ed87176f973878b6e.js} | 0 ...191af1665e1.js => de-json.9592fc46ee6e2cc15606.js} | 0 ...8d616ec0.js => de_CH-json.c830189b2ad10099beec.js} | 0 ...b4e3da0bd1.js => doi-json.810d16be9637c3bc4d2d.js} | 0 ...8d62264466.js => dsb-json.b3e9991da8c100724645.js} | 0 ...a16d56c2314.js => el-json.4a78f601c28981142d91.js} | 0 ...49c3952084d.js => en-json.9049ee8252bf9c50468e.js} | 0 ...f59aa9f.js => en_001-json.6f674d7be8545f5249dd.js} | 0 ...273a34b1.js => en_AU-json.88f983885c5e77a522d2.js} | 0 ...8a5a4bb4.js => en_CA-json.481fa7a1009de1e09a52.js} | 0 ...facc81d1.js => en_GB-json.e12ddcfa4a9a2f213472.js} | 0 ...21928fca.js => en_IN-json.386a43a597b524565c01.js} | 0 ...367a9d7fb30.js => es-json.06f0b6d03919f378089e.js} | 0 ...6ed83bb.js => es_419-json.8424b58fe0295a7972dc.js} | 0 ...db1aeb33.js => es_MX-json.5e1160d486fdb5ee36e0.js} | 0 ...651d079a.js => es_US-json.c23781e2ed7aa713e880.js} | 0 ...a55ecb061cd.js => et-json.bc2b2889a512210a1537.js} | 0 ...fcc141549a5.js => eu-json.c01381c77dfb84017633.js} | 0 ...c8594ccf4fa.js => fa-json.a2458e1e0433704fc9d6.js} | 0 ...0faaba4abcc.js => fi-json.5f54dd17041a9e6fb818.js} | 0 ...8d1b889b69.js => fil-json.d057e86d94a109d9b786.js} | 0 ...9b3a8be4597.js => fo-json.5bc39548b737b814c5c3.js} | 0 ...a6622fe1c67.js => fr-json.26194bdddfdeb986269a.js} | 0 ...68707292.js => fr_CA-json.4e6a9b14341091c6742a.js} | 0 ...a8c445aea23.js => ga-json.2d53f85b5672fc5b9cd6.js} | 0 ...25be774ad81.js => gd-json.7b4f0937d99eaea7c15c.js} | 0 ...ae72224c994.js => gl-json.77123597a2fd634def06.js} | 0 ...cf260376905.js => gu-json.529b678e05ac5e6666f2.js} | 0 ...8925c10f970.js => ha-json.e2936eb1824633263448.js} | 0 ...fdd6ba57.js => ha_NE-json.5bb1461702b6b9a25a2a.js} | 0 ...2182b0955a2.js => he-json.b89324913e67b0cbef3a.js} | 0 ...c2169def97e.js => hi-json.caa9039c69fc619bb4d2.js} | 0 ...1f1908.js => hi_Latn-json.59c70483862a83131f1e.js} | 0 ...f18a60e513c.js => hr-json.7078f54504f4019e7019.js} | 0 ...4171bc6fc3.js => hsb-json.5752a21beca678ca22de.js} | 0 ...deda872b416.js => hu-json.0d93fa9c70bd2987942a.js} | 0 ...abfeba8457f.js => hy-json.7392cd8d62c85a8f3d55.js} | 0 ...f41779e2beb.js => ia-json.7abda2d4e5bb1ab9bb01.js} | 0 ...753b0b69330.js => id-json.be3d0b67868addd4d2ca.js} | 0 ...582463ba73c.js => ig-json.fec00094453b1024af11.js} | 0 ...215b034533d.js => is-json.f4f8eed224a9921d9d08.js} | 0 ...d3391f7f61a.js => it-json.da1cebce6afd4bb1ad5d.js} | 0 ...0c106355b0e.js => ja-json.98c56a5553477fcf8510.js} | 0 ...f22b46b6214.js => jv-json.9a579697582dd4da8515.js} | 0 ...d90a37003f3.js => ka-json.7ceb88c700f929fd1ba3.js} | 0 ...4ddc2b51dd.js => kab-json.a11ac7782cf683ba1fc4.js} | 0 ...bdfe99786ad.js => kk-json.e48b37a24122d49c3b21.js} | 0 ...4bdecd09faf.js => kl-json.92776bda19293c36a513.js} | 0 ...0faa64b4c53.js => km-json.49435b294880e56b2ad5.js} | 0 ...cb00991ba1e.js => kn-json.0fb5386110af3ba2c4ee.js} | 0 ...48f48ce87c8.js => ko-json.f819232d4ea91159bbb0.js} | 0 ...3bfb846233.js => kok-json.79368ff8ed458bbadc8a.js} | 0 ...8d7372ee209.js => ku-json.09d4b290940a5743f28b.js} | 0 ...c819eda9472.js => ky-json.a4d7bf8aa6b9fc268ee4.js} | 0 ...a653618ea9b.js => lb-json.ae00586748ab7e78fbcf.js} | 0 ...65a355b8157.js => lo-json.1e5d90a5f496ece86600.js} | 0 ...edc60127df6.js => lt-json.b30554764cd9dcab0ffb.js} | 0 ...d59fa0aa2e2.js => lv-json.9fe5ebef8867a98f5dcc.js} | 0 ...8f4d34f9c8.js => mai-json.b3eb2867f3dae2f0ca2e.js} | 0 ...ecd8987f80a.js => mi-json.5bf7d83b03a43d6b222e.js} | 0 ...570419cc426.js => mk-json.a58099730061ede27597.js} | 0 ...240faff1b48.js => ml-json.4029b72c11321ff49f04.js} | 0 ...68d0432640f.js => mn-json.1d71d86a284b090f309c.js} | 0 ...ce34e3683d.js => mni-json.b51930b659a2fbe92aee.js} | 0 ...abf8a52161d.js => mr-json.10d386d227d8eccd9f8c.js} | 0 ...aabc37015dd.js => ms-json.17cbe626b4520009e9b9.js} | 0 ...14adf90c500.js => mt-json.5bada7e5d0f89eec6a5f.js} | 0 ...813d15bba7e.js => my-json.e9c9074bcb0b7cf27297.js} | 0 ...096a101b8e8.js => ne-json.ace1f809ee53a942bf38.js} | 0 ...fa5e22cb585.js => nl-json.b500e4e202a9368e2834.js} | 0 ...205681cf48c.js => nn-json.d3b3cddc42dd89280d68.js} | 0 ...cc3c14ada58.js => no-json.3c3a1928a4ec2842457e.js} | 0 ...92dcc95efac.js => or-json.062e7bc0ce036e0869c2.js} | 0 ...2a108270669.js => pa-json.f1d90d460b83ede42498.js} | 0 ...6dd8a7.js => pa_Arab-json.7ecc921ea6ae7d5ad431.js} | 0 ...4b5b33289d.js => pcm-json.d34521c9683e5616db34.js} | 0 ...4dc6c169516.js => pl-json.6c4f3b09781d790d0db6.js} | 0 ...81bcad11e64.js => ps-json.88d6d49775d8f9c663c4.js} | 0 ...4291bdb2ae7.js => pt-json.e0210e062a8027ffb0f3.js} | 0 ...91b0e6b3.js => pt_PT-json.dbd8d4cf53226f886114.js} | 0 ...71076dbad9f.js => qu-json.c2d7991f40a4a3d8d5e7.js} | 0 ...386fd05a75c.js => rm-json.c77502e4c10101eb9113.js} | 0 ...78c94d1e813.js => ro-json.dccd74b28dd5784742c2.js} | 0 ...460837ccacc.js => ru-json.1f28233c5ea82e8b2e99.js} | 0 ...74676191131.js => rw-json.c0b7cbff0696430bc3f5.js} | 0 ...08c7469ccb4.js => sa-json.332142b117058f869a60.js} | 0 ...aaca8e021c.js => sat-json.e66e1ab5f51865665b62.js} | 0 ...2e104c43e4c.js => sc-json.8f7695808eb625453ecb.js} | 0 ...c3cf185f79d.js => sd-json.d7cc494d80b3e019846f.js} | 0 ...03623c10dbf.js => si-json.3660e3b9815e1b9589e6.js} | 0 ...a82655d0314.js => sk-json.3db034c6717655dfbbf6.js} | 0 ...a34fce6f1d0.js => sl-json.e64d6e5b433ff40babd2.js} | 0 ...37c8924c075.js => so-json.12a2621ada8dc497ef38.js} | 0 ...a6138aa089c.js => sq-json.a10b52fc261fdb767e0e.js} | 0 ...a708df0c6a8.js => sr-json.286656f6511ecef0620b.js} | 0 ...9f2.js => sr_Cyrl_BA-json.f2de1698d736be7cb7d3.js} | 0 ...fb8d70.js => sr_Latn-json.6d0e78c53a6c996f7148.js} | 0 ...754.js => sr_Latn_BA-json.9efe70d4f87053f148b5.js} | 0 ...020cbecea7d.js => su-json.b51522cc59d038be0544.js} | 0 ...a3a77519876.js => sv-json.8ac515e0f8396ddf6c08.js} | 0 ...b9cbcc0e126.js => sw-json.72684aa7dac892cb8cb9.js} | 0 ...158563d5.js => sw_KE-json.34b7da43677fa56e5e0d.js} | 0 ...07449d4a91b.js => ta-json.38b47dd7353471daf452.js} | 0 ...2cdf626244e.js => te-json.5f3edfe74048b3f9d552.js} | 0 ...4477d7d8e96.js => tg-json.4f1783c6c1da758319c0.js} | 2 +- ...23bb9d2587c.js => th-json.ba0ab95ab02ce2c939c6.js} | 0 ...bb960be805b.js => ti-json.4408ab975172165278bd.js} | 0 ...829921704ad.js => tk-json.5673e32b5abc49b2a251.js} | 0 ...1caaf592c94.js => to-json.360ff9ef00f0d1c7a57b.js} | 0 ...5006cf5b6cf.js => tr-json.713bfd260289f3323612.js} | 0 ...a9983ec8ef7.js => tt-json.249cbfc14263d519b9a9.js} | 0 ...e9ff02b0a8a.js => ug-json.51de5e5ba7bcb8576f82.js} | 0 ...f232638fc4d.js => uk-json.6a62f1a822def6f9226a.js} | 0 ...444c883a18f.js => ur-json.f9e844b4284c09a9fc7c.js} | 0 ...d4587324a20.js => uz-json.6f226c69bc9e3cdb2943.js} | 0 ...dd7f8c8bc67.js => vi-json.cb916206d909e482a501.js} | 0 ...cda0dd77e9a.js => wo-json.a2bdd903832fd3246da2.js} | 0 ...d3113dfc7f2.js => xh-json.5e356aaeaee395d041df.js} | 0 ...c360dd86f2e.js => yo-json.b92bb230b66b7d16a9b5.js} | 0 ...da92bad8.js => yo_BJ-json.67334e68952e79504647.js} | 0 ...df19bdfb4c.js => yue-json.a9b68824327da9c02318.js} | 0 ...d8207.js => yue_Hans-json.d0b0f7e7004b95cf59f7.js} | 0 ...d5c1aff6c85.js => zh-json.d4e08be048463f199b6d.js} | 0 ...3828a9.js => zh_Hant-json.fd2741548c8119e002d3.js} | 0 ...612.js => zh_Hant_HK-json.3eeb1788264aaa9730cb.js} | 0 ...90583fd0f6d.js => zu-json.0c4786052604b3d521bc.js} | 0 ...b64f59431137d.js => emoji.56150ad938e521d9ef81.js} | 0 ...47303aa65fe.js => ar-json.bb22e819fa0ea9299fa4.js} | 2 +- ...5fe.js.map => ar-json.bb22e819fa0ea9299fa4.js.map} | 2 +- ...1efa3c0627f.js => ca-json.f245d3f221094411dfcd.js} | 2 +- ...27f.js.map => ca-json.f245d3f221094411dfcd.js.map} | 2 +- .../static/js/i18n/cs-json.5eedbe9f7084c349fbe8.js | 2 -- .../js/i18n/cs-json.5eedbe9f7084c349fbe8.js.map | 1 - .../static/js/i18n/cs-json.8cb69392de1a430e9c3f.js | 2 ++ .../js/i18n/cs-json.8cb69392de1a430e9c3f.js.map | 1 + ...c92f87ff37a.js => de-json.74b1f546c884d17b819a.js} | 2 +- ...37a.js.map => de-json.74b1f546c884d17b819a.js.map} | 2 +- .../static/js/i18n/eo-json.1d790624b6ea3832617a.js | 2 ++ .../js/i18n/eo-json.1d790624b6ea3832617a.js.map | 1 + .../static/js/i18n/eo-json.6c62eef99e850912498b.js | 2 -- .../js/i18n/eo-json.6c62eef99e850912498b.js.map | 1 - ...65e1f67d8a2.js => es-json.16c8ca99bc2dee099ca0.js} | 2 +- ...8a2.js.map => es-json.16c8ca99bc2dee099ca0.js.map} | 2 +- ...bb83a8aee75.js => et-json.e6066512bb8a65a06f89.js} | 2 +- ...e75.js.map => et-json.e6066512bb8a65a06f89.js.map} | 2 +- ...427995fc314.js => eu-json.e519f9e06eed5ad3cf41.js} | 2 +- ...314.js.map => eu-json.e519f9e06eed5ad3cf41.js.map} | 2 +- ...5a9431e2adb.js => fa-json.95757c7acb6dff777d7d.js} | 2 +- ...adb.js.map => fa-json.95757c7acb6dff777d7d.js.map} | 2 +- ...12d80493ab1.js => fi-json.dcde7d5d3f4927b6667e.js} | 2 +- ...ab1.js.map => fi-json.dcde7d5d3f4927b6667e.js.map} | 2 +- .../static/js/i18n/fr-json.36ef21ccb1203d3e65ae.js | 2 -- .../js/i18n/fr-json.36ef21ccb1203d3e65ae.js.map | 1 - .../static/js/i18n/fr-json.7a64af58316da6ca86f0.js | 2 ++ .../js/i18n/fr-json.7a64af58316da6ca86f0.js.map | 1 + ...977a16f1d7e.js => ga-json.72cfdbaab827e141e497.js} | 2 +- ...d7e.js.map => ga-json.72cfdbaab827e141e497.js.map} | 2 +- ...4034de06e6f.js => he-json.25ae71e0ad9cdd21d447.js} | 2 +- ...e6f.js.map => he-json.25ae71e0ad9cdd21d447.js.map} | 2 +- ...7a7a8505ed8.js => hu-json.cc3c026f0ff445ebb4b6.js} | 2 +- ...ed8.js.map => hu-json.cc3c026f0ff445ebb4b6.js.map} | 2 +- ...155f88128b9.js => id-json.b00a413b6132632523e5.js} | 2 +- ...8b9.js.map => id-json.b00a413b6132632523e5.js.map} | 2 +- ...8376af17141.js => it-json.1b71f7623efed055d62b.js} | 2 +- ...141.js.map => it-json.1b71f7623efed055d62b.js.map} | 2 +- .../js/i18n/ja_easy-json.1d5ea7e755b066ac2cdd.js | 2 -- .../js/i18n/ja_easy-json.1d5ea7e755b066ac2cdd.js.map | 1 - .../js/i18n/ja_easy-json.b5f269a0a935c640f3b5.js | 2 ++ .../js/i18n/ja_easy-json.b5f269a0a935c640f3b5.js.map | 1 + .../js/i18n/ja_pedantic-json.7c472bf001679929edea.js | 2 ++ .../i18n/ja_pedantic-json.7c472bf001679929edea.js.map | 1 + .../js/i18n/ja_pedantic-json.b52fa70f0bf89ae01cfb.js | 2 -- .../i18n/ja_pedantic-json.b52fa70f0bf89ae01cfb.js.map | 1 - .../static/js/i18n/ko-json.51d23959bb9bae4f0ecf.js | 2 ++ .../js/i18n/ko-json.51d23959bb9bae4f0ecf.js.map | 1 + .../static/js/i18n/ko-json.9029d09084bb22d8b705.js | 2 -- .../js/i18n/ko-json.9029d09084bb22d8b705.js.map | 1 - .../js/i18n/nan-TW-json.7f2789d8a461e86d1734.js | 2 -- .../js/i18n/nan-TW-json.7f2789d8a461e86d1734.js.map | 1 - .../js/i18n/nan-TW-json.80c0071ebf383eea3b8f.js | 2 ++ .../js/i18n/nan-TW-json.80c0071ebf383eea3b8f.js.map | 1 + ...47d576ad4aa.js => nb-json.2dd01f0c6cca8f008ffd.js} | 2 +- ...4aa.js.map => nb-json.2dd01f0c6cca8f008ffd.js.map} | 2 +- ...0c29434b613.js => nl-json.2fe76cb30e2fced8d88a.js} | 2 +- ...613.js.map => nl-json.2fe76cb30e2fced8d88a.js.map} | 2 +- ...e3213acc33c.js => oc-json.7ebe52b8d626dbf54a5f.js} | 2 +- ...33c.js.map => oc-json.7ebe52b8d626dbf54a5f.js.map} | 2 +- ...2381b05579b.js => pl-json.d319c737d904c64d8eba.js} | 2 +- ...79b.js.map => pl-json.d319c737d904c64d8eba.js.map} | 2 +- .../static/js/i18n/pt-json.3fc5593e030268bcd291.js | 2 -- .../js/i18n/pt-json.3fc5593e030268bcd291.js.map | 1 - .../static/js/i18n/pt-json.d6ce04e3e4e5a0e908bf.js | 2 ++ .../js/i18n/pt-json.d6ce04e3e4e5a0e908bf.js.map | 1 + ...1c1413059ae.js => ro-json.3c4274351d849d5010b8.js} | 2 +- ...9ae.js.map => ro-json.3c4274351d849d5010b8.js.map} | 2 +- ...e9f0c642438.js => ru-json.1aaf6c712db167fede4d.js} | 2 +- ...438.js.map => ru-json.1aaf6c712db167fede4d.js.map} | 2 +- ...f94e6f55145.js => sk-json.47d5a2f34c7fdf53d2af.js} | 2 +- ...145.js.map => sk-json.47d5a2f34c7fdf53d2af.js.map} | 2 +- ...1b2f824064f.js => te-json.cb97beb999533eaae9ae.js} | 2 +- ...64f.js.map => te-json.cb97beb999533eaae9ae.js.map} | 2 +- .../static/js/i18n/uk-json.003908af9b15becdd382.js | 2 -- .../js/i18n/uk-json.003908af9b15becdd382.js.map | 1 - .../static/js/i18n/uk-json.b16cc51984a2c6585d41.js | 2 ++ .../js/i18n/uk-json.b16cc51984a2c6585d41.js.map | 1 + ...be6e857bbf3.js => vi-json.07aaea2428bb6b5a5fab.js} | 2 +- ...bf3.js.map => vi-json.07aaea2428bb6b5a5fab.js.map} | 2 +- .../static/js/i18n/zh-json.5b36950c3b87c209730d.js | 2 ++ .../js/i18n/zh-json.5b36950c3b87c209730d.js.map | 1 + .../static/js/i18n/zh-json.a0a26f6d62ddbe0b49cc.js | 2 -- .../js/i18n/zh-json.a0a26f6d62ddbe0b49cc.js.map | 1 - ...0d6396.js => zh_Hant-json.6b45d2e6967b35e56b44.js} | 2 +- ...s.map => zh_Hant-json.6b45d2e6967b35e56b44.js.map} | 2 +- .../static/ruffle/core.ruffle.61b3dd915983ae8a8b16.js | 2 +- .../static/ruffle/core.ruffle.848d766d6fc336164c2f.js | 2 +- priv/static/sw-pleroma.js | 4 ++-- priv/static/sw-pleroma.js.LICENSE.txt | 2 ++ priv/static/sw-pleroma.js.map | 2 +- 297 files changed, 148 insertions(+), 138 deletions(-) delete mode 100644 priv/static/static/css/159.1d523a00378ebd68c5b3.css.map rename priv/static/static/css/{159.1d523a00378ebd68c5b3.css => 1597.a250eca8cf87418c7b3e.css} (84%) create mode 100644 priv/static/static/css/1597.a250eca8cf87418c7b3e.css.map create mode 100644 priv/static/static/css/5250.b9104f3df4166526b081.css create mode 100644 priv/static/static/css/5250.b9104f3df4166526b081.css.map create mode 100644 priv/static/static/css/5292.035030cbb2311a7ddada.css create mode 100644 priv/static/static/css/5292.035030cbb2311a7ddada.css.map delete mode 100644 priv/static/static/css/6464.169260b661120cc50815.css delete mode 100644 priv/static/static/css/6464.169260b661120cc50815.css.map create mode 100644 priv/static/static/css/6464.7845ee2ccc5e22628b2a.css create mode 100644 priv/static/static/css/6464.7845ee2ccc5e22628b2a.css.map delete mode 100644 priv/static/static/css/7586.0d43f70bc6240422f179.css delete mode 100644 priv/static/static/css/7586.0d43f70bc6240422f179.css.map create mode 100644 priv/static/static/css/7594.a8030565c3ef463dc1de.css create mode 100644 priv/static/static/css/7594.a8030565c3ef463dc1de.css.map delete mode 100644 priv/static/static/css/7962.76663e78ad5ea0bb0b90.css delete mode 100644 priv/static/static/css/7962.76663e78ad5ea0bb0b90.css.map delete mode 100644 priv/static/static/css/8859.d26a3b0841a7beb8fd4a.css delete mode 100644 priv/static/static/css/8859.d26a3b0841a7beb8fd4a.css.map create mode 100644 priv/static/static/css/app.75b043cffb8e922bc29e.css create mode 100644 priv/static/static/css/app.75b043cffb8e922bc29e.css.map delete mode 100644 priv/static/static/css/app.a7f63ee9107a77599942.css delete mode 100644 priv/static/static/css/app.a7f63ee9107a77599942.css.map delete mode 100644 priv/static/static/js/159.903e90c9de8ef6c67077.js delete mode 100644 priv/static/static/js/159.903e90c9de8ef6c67077.js.map create mode 100644 priv/static/static/js/1597.134341dec11e42dd5fae.js create mode 100644 priv/static/static/js/1597.134341dec11e42dd5fae.js.map delete mode 100644 priv/static/static/js/3733.7060d1e6bca813125a0c.js delete mode 100644 priv/static/static/js/3733.7060d1e6bca813125a0c.js.map delete mode 100644 priv/static/static/js/48.b5ecdbc517423af07ca4.js delete mode 100644 priv/static/static/js/48.b5ecdbc517423af07ca4.js.map create mode 100644 priv/static/static/js/48.f58874c23a9bf1c1f591.js rename priv/static/static/js/{48.b5ecdbc517423af07ca4.js.LICENSE.txt => 48.f58874c23a9bf1c1f591.js.LICENSE.txt} (100%) create mode 100644 priv/static/static/js/48.f58874c23a9bf1c1f591.js.map create mode 100644 priv/static/static/js/5250.f0d4cfa412bbf8163d11.js create mode 100644 priv/static/static/js/5250.f0d4cfa412bbf8163d11.js.map create mode 100644 priv/static/static/js/5292.125b85a896c810481068.js create mode 100644 priv/static/static/js/5292.125b85a896c810481068.js.map rename priv/static/static/js/{6464.eb9c90a1c948cde554e9.js => 6464.6f764a6d660917d88ca5.js} (98%) rename priv/static/static/js/{6464.eb9c90a1c948cde554e9.js.map => 6464.6f764a6d660917d88ca5.js.map} (86%) create mode 100644 priv/static/static/js/6561.24d12b4e33b21319845b.js rename priv/static/static/js/{3733.7060d1e6bca813125a0c.js.LICENSE.txt => 6561.24d12b4e33b21319845b.js.LICENSE.txt} (84%) create mode 100644 priv/static/static/js/6561.24d12b4e33b21319845b.js.map delete mode 100644 priv/static/static/js/7586.628f729b9c8b2e6f4e1f.js delete mode 100644 priv/static/static/js/7586.628f729b9c8b2e6f4e1f.js.map create mode 100644 priv/static/static/js/7594.f0ffca037eec090815d9.js create mode 100644 priv/static/static/js/7594.f0ffca037eec090815d9.js.map delete mode 100644 priv/static/static/js/7962.e25d40b042f8ee7389c3.js delete mode 100644 priv/static/static/js/7962.e25d40b042f8ee7389c3.js.map delete mode 100644 priv/static/static/js/8859.c76b0a0c3a4b5acbef11.js delete mode 100644 priv/static/static/js/8859.c76b0a0c3a4b5acbef11.js.map delete mode 100644 priv/static/static/js/9060.24271e167e0471a1a732.js delete mode 100644 priv/static/static/js/9060.24271e167e0471a1a732.js.map create mode 100644 priv/static/static/js/9060.606ed1efce1ce3be713d.js create mode 100644 priv/static/static/js/9060.606ed1efce1ce3be713d.js.map create mode 100644 priv/static/static/js/app.3fbb12e9679dc0e0aa33.js create mode 100644 priv/static/static/js/app.3fbb12e9679dc0e0aa33.js.map delete mode 100644 priv/static/static/js/app.d42ab31e1d50a3265a82.js delete mode 100644 priv/static/static/js/app.d42ab31e1d50a3265a82.js.map rename priv/static/static/js/emoji-annotations/{af-json.96c988285a6a2cce6246.js => af-json.260623f695510b34c146.js} (100%) rename priv/static/static/js/emoji-annotations/{am-json.94388548f7c18233fec3.js => am-json.fd30fc79a9ef9f40bcb3.js} (100%) rename priv/static/static/js/emoji-annotations/{ar-json.5527466d349f2954d49b.js => ar-json.66fec1d991d30cf191ac.js} (100%) rename priv/static/static/js/emoji-annotations/{ar_SA-json.4a6f4402931a867070f0.js => ar_SA-json.89b9143ae611e2581b5b.js} (100%) rename priv/static/static/js/emoji-annotations/{as-json.34cf67edc1cecd195738.js => as-json.bd49b949563ed3872ea7.js} (100%) rename priv/static/static/js/emoji-annotations/{ast-json.7e4da8cb7e539c19a9b9.js => ast-json.b04ae8a41f30fcc498c6.js} (100%) rename priv/static/static/js/emoji-annotations/{az-json.9a32f2941d9c4d1f834c.js => az-json.fc8b49efe1bec779ad7c.js} (100%) rename priv/static/static/js/emoji-annotations/{be-json.f92f80669873a4100c69.js => be-json.390af96d7085a650d098.js} (100%) rename priv/static/static/js/emoji-annotations/{bg-json.7c69c52572a7bf87e1db.js => bg-json.aada1abf5a5718a2785a.js} (100%) rename priv/static/static/js/emoji-annotations/{bn-json.657aac057f36ad06c58d.js => bn-json.71061bf9106a3f1d06d9.js} (100%) rename priv/static/static/js/emoji-annotations/{br-json.c7175423d8965ed10bae.js => br-json.623b25e4acdba3caea90.js} (100%) rename priv/static/static/js/emoji-annotations/{bs-json.48ef42da1c7976cf083c.js => bs-json.895d6c19c442497a4542.js} (100%) rename priv/static/static/js/emoji-annotations/{ca-json.ce029e860b10b242c6a5.js => ca-json.4bf349a90cbee89b8a8f.js} (100%) rename priv/static/static/js/emoji-annotations/{ccp-json.02836537ffe2b02291cb.js => ccp-json.915ed087d80fc6754272.js} (100%) rename priv/static/static/js/emoji-annotations/{ceb-json.9db0336f168aa77ee395.js => ceb-json.d7c07bee01a6e04f3214.js} (100%) rename priv/static/static/js/emoji-annotations/{chr-json.e7e542ab5a74167dec10.js => chr-json.037a46de1cb0ffa99c15.js} (100%) rename priv/static/static/js/emoji-annotations/{ckb-json.13dc83db1e15aa76051a.js => ckb-json.3e534416e3850186a747.js} (100%) rename priv/static/static/js/emoji-annotations/{cs-json.48d8bba230dc9fe6b3dc.js => cs-json.606d434132759db14a54.js} (100%) rename priv/static/static/js/emoji-annotations/{cy-json.e09dd13da5ad56530ead.js => cy-json.897b7ce472b1a390f392.js} (100%) rename priv/static/static/js/emoji-annotations/{da-json.8d074e27df71edafc543.js => da-json.af3ed87176f973878b6e.js} (100%) rename priv/static/static/js/emoji-annotations/{de-json.e1443c01a191af1665e1.js => de-json.9592fc46ee6e2cc15606.js} (100%) rename priv/static/static/js/emoji-annotations/{de_CH-json.b4a5891ea2f38d616ec0.js => de_CH-json.c830189b2ad10099beec.js} (100%) rename priv/static/static/js/emoji-annotations/{doi-json.7841c3f3ceb4e3da0bd1.js => doi-json.810d16be9637c3bc4d2d.js} (100%) rename priv/static/static/js/emoji-annotations/{dsb-json.7635686ffd8d62264466.js => dsb-json.b3e9991da8c100724645.js} (100%) rename priv/static/static/js/emoji-annotations/{el-json.b36610f2ea16d56c2314.js => el-json.4a78f601c28981142d91.js} (100%) rename priv/static/static/js/emoji-annotations/{en-json.6c3947f7c49c3952084d.js => en-json.9049ee8252bf9c50468e.js} (100%) rename priv/static/static/js/emoji-annotations/{en_001-json.72d8c47269350f59aa9f.js => en_001-json.6f674d7be8545f5249dd.js} (100%) rename priv/static/static/js/emoji-annotations/{en_AU-json.33aac9bbd887273a34b1.js => en_AU-json.88f983885c5e77a522d2.js} (100%) rename priv/static/static/js/emoji-annotations/{en_CA-json.5de965778a6b8a5a4bb4.js => en_CA-json.481fa7a1009de1e09a52.js} (100%) rename priv/static/static/js/emoji-annotations/{en_GB-json.bd687f904492facc81d1.js => en_GB-json.e12ddcfa4a9a2f213472.js} (100%) rename priv/static/static/js/emoji-annotations/{en_IN-json.002faa48c09121928fca.js => en_IN-json.386a43a597b524565c01.js} (100%) rename priv/static/static/js/emoji-annotations/{es-json.f593b0dc2367a9d7fb30.js => es-json.06f0b6d03919f378089e.js} (100%) rename priv/static/static/js/emoji-annotations/{es_419-json.d81991295392b6ed83bb.js => es_419-json.8424b58fe0295a7972dc.js} (100%) rename priv/static/static/js/emoji-annotations/{es_MX-json.ee359d4b611fdb1aeb33.js => es_MX-json.5e1160d486fdb5ee36e0.js} (100%) rename priv/static/static/js/emoji-annotations/{es_US-json.280bdb036dfd651d079a.js => es_US-json.c23781e2ed7aa713e880.js} (100%) rename priv/static/static/js/emoji-annotations/{et-json.c42e3f186a55ecb061cd.js => et-json.bc2b2889a512210a1537.js} (100%) rename priv/static/static/js/emoji-annotations/{eu-json.931b429f5fcc141549a5.js => eu-json.c01381c77dfb84017633.js} (100%) rename priv/static/static/js/emoji-annotations/{fa-json.819c7f263c8594ccf4fa.js => fa-json.a2458e1e0433704fc9d6.js} (100%) rename priv/static/static/js/emoji-annotations/{fi-json.0f254bb4b0faaba4abcc.js => fi-json.5f54dd17041a9e6fb818.js} (100%) rename priv/static/static/js/emoji-annotations/{fil-json.4fca833f178d1b889b69.js => fil-json.d057e86d94a109d9b786.js} (100%) rename priv/static/static/js/emoji-annotations/{fo-json.9b060e8009b3a8be4597.js => fo-json.5bc39548b737b814c5c3.js} (100%) rename priv/static/static/js/emoji-annotations/{fr-json.da49ed0d1a6622fe1c67.js => fr-json.26194bdddfdeb986269a.js} (100%) rename priv/static/static/js/emoji-annotations/{fr_CA-json.59ed6b59e2ca68707292.js => fr_CA-json.4e6a9b14341091c6742a.js} (100%) rename priv/static/static/js/emoji-annotations/{ga-json.cb3f9e613a8c445aea23.js => ga-json.2d53f85b5672fc5b9cd6.js} (100%) rename priv/static/static/js/emoji-annotations/{gd-json.e3d0aea3725be774ad81.js => gd-json.7b4f0937d99eaea7c15c.js} (100%) rename priv/static/static/js/emoji-annotations/{gl-json.ce89036f0ae72224c994.js => gl-json.77123597a2fd634def06.js} (100%) rename priv/static/static/js/emoji-annotations/{gu-json.8a899f364cf260376905.js => gu-json.529b678e05ac5e6666f2.js} (100%) rename priv/static/static/js/emoji-annotations/{ha-json.2a08912b38925c10f970.js => ha-json.e2936eb1824633263448.js} (100%) rename priv/static/static/js/emoji-annotations/{ha_NE-json.e4855d92aaccfdd6ba57.js => ha_NE-json.5bb1461702b6b9a25a2a.js} (100%) rename priv/static/static/js/emoji-annotations/{he-json.a3d7631f32182b0955a2.js => he-json.b89324913e67b0cbef3a.js} (100%) rename priv/static/static/js/emoji-annotations/{hi-json.04bc5f73dc2169def97e.js => hi-json.caa9039c69fc619bb4d2.js} (100%) rename priv/static/static/js/emoji-annotations/{hi_Latn-json.3cb73c456f31261f1908.js => hi_Latn-json.59c70483862a83131f1e.js} (100%) rename priv/static/static/js/emoji-annotations/{hr-json.fe847ade1f18a60e513c.js => hr-json.7078f54504f4019e7019.js} (100%) rename priv/static/static/js/emoji-annotations/{hsb-json.438721731b4171bc6fc3.js => hsb-json.5752a21beca678ca22de.js} (100%) rename priv/static/static/js/emoji-annotations/{hu-json.1faf52040deda872b416.js => hu-json.0d93fa9c70bd2987942a.js} (100%) rename priv/static/static/js/emoji-annotations/{hy-json.2d819f7faabfeba8457f.js => hy-json.7392cd8d62c85a8f3d55.js} (100%) rename priv/static/static/js/emoji-annotations/{ia-json.8e8365e2bf41779e2beb.js => ia-json.7abda2d4e5bb1ab9bb01.js} (100%) rename priv/static/static/js/emoji-annotations/{id-json.55f83c46d753b0b69330.js => id-json.be3d0b67868addd4d2ca.js} (100%) rename priv/static/static/js/emoji-annotations/{ig-json.f19fa5fe3582463ba73c.js => ig-json.fec00094453b1024af11.js} (100%) rename priv/static/static/js/emoji-annotations/{is-json.62e220c65215b034533d.js => is-json.f4f8eed224a9921d9d08.js} (100%) rename priv/static/static/js/emoji-annotations/{it-json.9c1758f4fd3391f7f61a.js => it-json.da1cebce6afd4bb1ad5d.js} (100%) rename priv/static/static/js/emoji-annotations/{ja-json.0bd51f8c40c106355b0e.js => ja-json.98c56a5553477fcf8510.js} (100%) rename priv/static/static/js/emoji-annotations/{jv-json.1c8d5ffcff22b46b6214.js => jv-json.9a579697582dd4da8515.js} (100%) rename priv/static/static/js/emoji-annotations/{ka-json.567e7b051d90a37003f3.js => ka-json.7ceb88c700f929fd1ba3.js} (100%) rename priv/static/static/js/emoji-annotations/{kab-json.1a2de4774f4ddc2b51dd.js => kab-json.a11ac7782cf683ba1fc4.js} (100%) rename priv/static/static/js/emoji-annotations/{kk-json.a20b59d47bdfe99786ad.js => kk-json.e48b37a24122d49c3b21.js} (100%) rename priv/static/static/js/emoji-annotations/{kl-json.87ab8661b4bdecd09faf.js => kl-json.92776bda19293c36a513.js} (100%) rename priv/static/static/js/emoji-annotations/{km-json.9bc922b2e0faa64b4c53.js => km-json.49435b294880e56b2ad5.js} (100%) rename priv/static/static/js/emoji-annotations/{kn-json.efdac8ac0cb00991ba1e.js => kn-json.0fb5386110af3ba2c4ee.js} (100%) rename priv/static/static/js/emoji-annotations/{ko-json.d175900fe48f48ce87c8.js => ko-json.f819232d4ea91159bbb0.js} (100%) rename priv/static/static/js/emoji-annotations/{kok-json.116e4f72db3bfb846233.js => kok-json.79368ff8ed458bbadc8a.js} (100%) rename priv/static/static/js/emoji-annotations/{ku-json.2173ed87f8d7372ee209.js => ku-json.09d4b290940a5743f28b.js} (100%) rename priv/static/static/js/emoji-annotations/{ky-json.310bda579c819eda9472.js => ky-json.a4d7bf8aa6b9fc268ee4.js} (100%) rename priv/static/static/js/emoji-annotations/{lb-json.499c526f3a653618ea9b.js => lb-json.ae00586748ab7e78fbcf.js} (100%) rename priv/static/static/js/emoji-annotations/{lo-json.ecb06d61465a355b8157.js => lo-json.1e5d90a5f496ece86600.js} (100%) rename priv/static/static/js/emoji-annotations/{lt-json.ced4d5e70edc60127df6.js => lt-json.b30554764cd9dcab0ffb.js} (100%) rename priv/static/static/js/emoji-annotations/{lv-json.5600c2eb6d59fa0aa2e2.js => lv-json.9fe5ebef8867a98f5dcc.js} (100%) rename priv/static/static/js/emoji-annotations/{mai-json.302386b3358f4d34f9c8.js => mai-json.b3eb2867f3dae2f0ca2e.js} (100%) rename priv/static/static/js/emoji-annotations/{mi-json.9efe6f146ecd8987f80a.js => mi-json.5bf7d83b03a43d6b222e.js} (100%) rename priv/static/static/js/emoji-annotations/{mk-json.a254cabb8570419cc426.js => mk-json.a58099730061ede27597.js} (100%) rename priv/static/static/js/emoji-annotations/{ml-json.3f2902a84240faff1b48.js => ml-json.4029b72c11321ff49f04.js} (100%) rename priv/static/static/js/emoji-annotations/{mn-json.764169f1168d0432640f.js => mn-json.1d71d86a284b090f309c.js} (100%) rename priv/static/static/js/emoji-annotations/{mni-json.7db7f76ab1ce34e3683d.js => mni-json.b51930b659a2fbe92aee.js} (100%) rename priv/static/static/js/emoji-annotations/{mr-json.cb0a87d9aabf8a52161d.js => mr-json.10d386d227d8eccd9f8c.js} (100%) rename priv/static/static/js/emoji-annotations/{ms-json.272ee4735aabc37015dd.js => ms-json.17cbe626b4520009e9b9.js} (100%) rename priv/static/static/js/emoji-annotations/{mt-json.3ddf7dbc114adf90c500.js => mt-json.5bada7e5d0f89eec6a5f.js} (100%) rename priv/static/static/js/emoji-annotations/{my-json.8e7dd1485813d15bba7e.js => my-json.e9c9074bcb0b7cf27297.js} (100%) rename priv/static/static/js/emoji-annotations/{ne-json.a0118dca2096a101b8e8.js => ne-json.ace1f809ee53a942bf38.js} (100%) rename priv/static/static/js/emoji-annotations/{nl-json.52f4b93b8fa5e22cb585.js => nl-json.b500e4e202a9368e2834.js} (100%) rename priv/static/static/js/emoji-annotations/{nn-json.7293cd5d7205681cf48c.js => nn-json.d3b3cddc42dd89280d68.js} (100%) rename priv/static/static/js/emoji-annotations/{no-json.22bdbbc77cc3c14ada58.js => no-json.3c3a1928a4ec2842457e.js} (100%) rename priv/static/static/js/emoji-annotations/{or-json.b007c2f6f92dcc95efac.js => or-json.062e7bc0ce036e0869c2.js} (100%) rename priv/static/static/js/emoji-annotations/{pa-json.7d60d69762a108270669.js => pa-json.f1d90d460b83ede42498.js} (100%) rename priv/static/static/js/emoji-annotations/{pa_Arab-json.5ae021308b1c5f6dd8a7.js => pa_Arab-json.7ecc921ea6ae7d5ad431.js} (100%) rename priv/static/static/js/emoji-annotations/{pcm-json.eac3a5ad0b4b5b33289d.js => pcm-json.d34521c9683e5616db34.js} (100%) rename priv/static/static/js/emoji-annotations/{pl-json.e9e8f1ed84dc6c169516.js => pl-json.6c4f3b09781d790d0db6.js} (100%) rename priv/static/static/js/emoji-annotations/{ps-json.a0d9eea5b81bcad11e64.js => ps-json.88d6d49775d8f9c663c4.js} (100%) rename priv/static/static/js/emoji-annotations/{pt-json.2b2512ee44291bdb2ae7.js => pt-json.e0210e062a8027ffb0f3.js} (100%) rename priv/static/static/js/emoji-annotations/{pt_PT-json.c381b13e323f91b0e6b3.js => pt_PT-json.dbd8d4cf53226f886114.js} (100%) rename priv/static/static/js/emoji-annotations/{qu-json.55f4df57e71076dbad9f.js => qu-json.c2d7991f40a4a3d8d5e7.js} (100%) rename priv/static/static/js/emoji-annotations/{rm-json.985d4934f386fd05a75c.js => rm-json.c77502e4c10101eb9113.js} (100%) rename priv/static/static/js/emoji-annotations/{ro-json.cb62f86ce78c94d1e813.js => ro-json.dccd74b28dd5784742c2.js} (100%) rename priv/static/static/js/emoji-annotations/{ru-json.a81d0df34460837ccacc.js => ru-json.1f28233c5ea82e8b2e99.js} (100%) rename priv/static/static/js/emoji-annotations/{rw-json.031838c5374676191131.js => rw-json.c0b7cbff0696430bc3f5.js} (100%) rename priv/static/static/js/emoji-annotations/{sa-json.21b06234a08c7469ccb4.js => sa-json.332142b117058f869a60.js} (100%) rename priv/static/static/js/emoji-annotations/{sat-json.71e92700b2aaca8e021c.js => sat-json.e66e1ab5f51865665b62.js} (100%) rename priv/static/static/js/emoji-annotations/{sc-json.c84c9c47d2e104c43e4c.js => sc-json.8f7695808eb625453ecb.js} (100%) rename priv/static/static/js/emoji-annotations/{sd-json.8f2a6a06dc3cf185f79d.js => sd-json.d7cc494d80b3e019846f.js} (100%) rename priv/static/static/js/emoji-annotations/{si-json.841b356da03623c10dbf.js => si-json.3660e3b9815e1b9589e6.js} (100%) rename priv/static/static/js/emoji-annotations/{sk-json.5d96bdb4da82655d0314.js => sk-json.3db034c6717655dfbbf6.js} (100%) rename priv/static/static/js/emoji-annotations/{sl-json.a40c5548da34fce6f1d0.js => sl-json.e64d6e5b433ff40babd2.js} (100%) rename priv/static/static/js/emoji-annotations/{so-json.f75abd16637c8924c075.js => so-json.12a2621ada8dc497ef38.js} (100%) rename priv/static/static/js/emoji-annotations/{sq-json.bcf154ed8a6138aa089c.js => sq-json.a10b52fc261fdb767e0e.js} (100%) rename priv/static/static/js/emoji-annotations/{sr-json.e29a20e59a708df0c6a8.js => sr-json.286656f6511ecef0620b.js} (100%) rename priv/static/static/js/emoji-annotations/{sr_Cyrl_BA-json.83c7c64b9696ae2339f2.js => sr_Cyrl_BA-json.f2de1698d736be7cb7d3.js} (100%) rename priv/static/static/js/emoji-annotations/{sr_Latn-json.ff27d1f455bf2afb8d70.js => sr_Latn-json.6d0e78c53a6c996f7148.js} (100%) rename priv/static/static/js/emoji-annotations/{sr_Latn_BA-json.72933405032b81344754.js => sr_Latn_BA-json.9efe70d4f87053f148b5.js} (100%) rename priv/static/static/js/emoji-annotations/{su-json.daff15251020cbecea7d.js => su-json.b51522cc59d038be0544.js} (100%) rename priv/static/static/js/emoji-annotations/{sv-json.8b0374cbca3a77519876.js => sv-json.8ac515e0f8396ddf6c08.js} (100%) rename priv/static/static/js/emoji-annotations/{sw-json.d5f350641b9cbcc0e126.js => sw-json.72684aa7dac892cb8cb9.js} (100%) rename priv/static/static/js/emoji-annotations/{sw_KE-json.f3563cbeac1c158563d5.js => sw_KE-json.34b7da43677fa56e5e0d.js} (100%) rename priv/static/static/js/emoji-annotations/{ta-json.675cc6c7607449d4a91b.js => ta-json.38b47dd7353471daf452.js} (100%) rename priv/static/static/js/emoji-annotations/{te-json.8a69a10f62cdf626244e.js => te-json.5f3edfe74048b3f9d552.js} (100%) rename priv/static/static/js/emoji-annotations/{tg-json.9647f559a4477d7d8e96.js => tg-json.4f1783c6c1da758319c0.js} (99%) rename priv/static/static/js/emoji-annotations/{th-json.34709bae223bb9d2587c.js => th-json.ba0ab95ab02ce2c939c6.js} (100%) rename priv/static/static/js/emoji-annotations/{ti-json.5b173bd33bb960be805b.js => ti-json.4408ab975172165278bd.js} (100%) rename priv/static/static/js/emoji-annotations/{tk-json.23a9a6229829921704ad.js => tk-json.5673e32b5abc49b2a251.js} (100%) rename priv/static/static/js/emoji-annotations/{to-json.50ac37d101caaf592c94.js => to-json.360ff9ef00f0d1c7a57b.js} (100%) rename priv/static/static/js/emoji-annotations/{tr-json.6462e8cfd5006cf5b6cf.js => tr-json.713bfd260289f3323612.js} (100%) rename priv/static/static/js/emoji-annotations/{tt-json.4c089389ba9983ec8ef7.js => tt-json.249cbfc14263d519b9a9.js} (100%) rename priv/static/static/js/emoji-annotations/{ug-json.bf768bd32e9ff02b0a8a.js => ug-json.51de5e5ba7bcb8576f82.js} (100%) rename priv/static/static/js/emoji-annotations/{uk-json.af110c8eef232638fc4d.js => uk-json.6a62f1a822def6f9226a.js} (100%) rename priv/static/static/js/emoji-annotations/{ur-json.983c02109444c883a18f.js => ur-json.f9e844b4284c09a9fc7c.js} (100%) rename priv/static/static/js/emoji-annotations/{uz-json.ac43f4c54d4587324a20.js => uz-json.6f226c69bc9e3cdb2943.js} (100%) rename priv/static/static/js/emoji-annotations/{vi-json.f6a364b2add7f8c8bc67.js => vi-json.cb916206d909e482a501.js} (100%) rename priv/static/static/js/emoji-annotations/{wo-json.e0d689e22cda0dd77e9a.js => wo-json.a2bdd903832fd3246da2.js} (100%) rename priv/static/static/js/emoji-annotations/{xh-json.21e88c05ad3113dfc7f2.js => xh-json.5e356aaeaee395d041df.js} (100%) rename priv/static/static/js/emoji-annotations/{yo-json.ea1150d6bc360dd86f2e.js => yo-json.b92bb230b66b7d16a9b5.js} (100%) rename priv/static/static/js/emoji-annotations/{yo_BJ-json.650318c25fe4da92bad8.js => yo_BJ-json.67334e68952e79504647.js} (100%) rename priv/static/static/js/emoji-annotations/{yue-json.15102c0ddfdf19bdfb4c.js => yue-json.a9b68824327da9c02318.js} (100%) rename priv/static/static/js/emoji-annotations/{yue_Hans-json.cc60bb10d32fab3d8207.js => yue_Hans-json.d0b0f7e7004b95cf59f7.js} (100%) rename priv/static/static/js/emoji-annotations/{zh-json.e42a28127d5c1aff6c85.js => zh-json.d4e08be048463f199b6d.js} (100%) rename priv/static/static/js/emoji-annotations/{zh_Hant-json.9cbb765c181d443828a9.js => zh_Hant-json.fd2741548c8119e002d3.js} (100%) rename priv/static/static/js/emoji-annotations/{zh_Hant_HK-json.7eee03c705347a21c612.js => zh_Hant_HK-json.3eeb1788264aaa9730cb.js} (100%) rename priv/static/static/js/emoji-annotations/{zu-json.e0cb7cd3890583fd0f6d.js => zu-json.0c4786052604b3d521bc.js} (100%) rename priv/static/static/js/{emoji.33eab91b64f59431137d.js => emoji.56150ad938e521d9ef81.js} (100%) rename priv/static/static/js/i18n/{ar-json.4916f840147303aa65fe.js => ar-json.bb22e819fa0ea9299fa4.js} (99%) rename priv/static/static/js/i18n/{ar-json.4916f840147303aa65fe.js.map => ar-json.bb22e819fa0ea9299fa4.js.map} (99%) rename priv/static/static/js/i18n/{ca-json.1eb24bc001efa3c0627f.js => ca-json.f245d3f221094411dfcd.js} (99%) rename priv/static/static/js/i18n/{ca-json.1eb24bc001efa3c0627f.js.map => ca-json.f245d3f221094411dfcd.js.map} (99%) delete mode 100644 priv/static/static/js/i18n/cs-json.5eedbe9f7084c349fbe8.js delete mode 100644 priv/static/static/js/i18n/cs-json.5eedbe9f7084c349fbe8.js.map create mode 100644 priv/static/static/js/i18n/cs-json.8cb69392de1a430e9c3f.js create mode 100644 priv/static/static/js/i18n/cs-json.8cb69392de1a430e9c3f.js.map rename priv/static/static/js/i18n/{de-json.bfa48615ac92f87ff37a.js => de-json.74b1f546c884d17b819a.js} (99%) rename priv/static/static/js/i18n/{de-json.bfa48615ac92f87ff37a.js.map => de-json.74b1f546c884d17b819a.js.map} (99%) create mode 100644 priv/static/static/js/i18n/eo-json.1d790624b6ea3832617a.js create mode 100644 priv/static/static/js/i18n/eo-json.1d790624b6ea3832617a.js.map delete mode 100644 priv/static/static/js/i18n/eo-json.6c62eef99e850912498b.js delete mode 100644 priv/static/static/js/i18n/eo-json.6c62eef99e850912498b.js.map rename priv/static/static/js/i18n/{es-json.4a302899a65e1f67d8a2.js => es-json.16c8ca99bc2dee099ca0.js} (99%) rename priv/static/static/js/i18n/{es-json.4a302899a65e1f67d8a2.js.map => es-json.16c8ca99bc2dee099ca0.js.map} (99%) rename priv/static/static/js/i18n/{et-json.580b101d6bb83a8aee75.js => et-json.e6066512bb8a65a06f89.js} (99%) rename priv/static/static/js/i18n/{et-json.580b101d6bb83a8aee75.js.map => et-json.e6066512bb8a65a06f89.js.map} (99%) rename priv/static/static/js/i18n/{eu-json.d2eab39b0427995fc314.js => eu-json.e519f9e06eed5ad3cf41.js} (99%) rename priv/static/static/js/i18n/{eu-json.d2eab39b0427995fc314.js.map => eu-json.e519f9e06eed5ad3cf41.js.map} (99%) rename priv/static/static/js/i18n/{fa-json.a19100f6a5a9431e2adb.js => fa-json.95757c7acb6dff777d7d.js} (99%) rename priv/static/static/js/i18n/{fa-json.a19100f6a5a9431e2adb.js.map => fa-json.95757c7acb6dff777d7d.js.map} (99%) rename priv/static/static/js/i18n/{fi-json.d1934c18f12d80493ab1.js => fi-json.dcde7d5d3f4927b6667e.js} (99%) rename priv/static/static/js/i18n/{fi-json.d1934c18f12d80493ab1.js.map => fi-json.dcde7d5d3f4927b6667e.js.map} (99%) delete mode 100644 priv/static/static/js/i18n/fr-json.36ef21ccb1203d3e65ae.js delete mode 100644 priv/static/static/js/i18n/fr-json.36ef21ccb1203d3e65ae.js.map create mode 100644 priv/static/static/js/i18n/fr-json.7a64af58316da6ca86f0.js create mode 100644 priv/static/static/js/i18n/fr-json.7a64af58316da6ca86f0.js.map rename priv/static/static/js/i18n/{ga-json.3f1981817977a16f1d7e.js => ga-json.72cfdbaab827e141e497.js} (99%) rename priv/static/static/js/i18n/{ga-json.3f1981817977a16f1d7e.js.map => ga-json.72cfdbaab827e141e497.js.map} (99%) rename priv/static/static/js/i18n/{he-json.03c5d271a4034de06e6f.js => he-json.25ae71e0ad9cdd21d447.js} (99%) rename priv/static/static/js/i18n/{he-json.03c5d271a4034de06e6f.js.map => he-json.25ae71e0ad9cdd21d447.js.map} (99%) rename priv/static/static/js/i18n/{hu-json.0487899ca7a7a8505ed8.js => hu-json.cc3c026f0ff445ebb4b6.js} (98%) rename priv/static/static/js/i18n/{hu-json.0487899ca7a7a8505ed8.js.map => hu-json.cc3c026f0ff445ebb4b6.js.map} (99%) rename priv/static/static/js/i18n/{id-json.e5c9ee768155f88128b9.js => id-json.b00a413b6132632523e5.js} (99%) rename priv/static/static/js/i18n/{id-json.e5c9ee768155f88128b9.js.map => id-json.b00a413b6132632523e5.js.map} (99%) rename priv/static/static/js/i18n/{it-json.99a21d5c98376af17141.js => it-json.1b71f7623efed055d62b.js} (99%) rename priv/static/static/js/i18n/{it-json.99a21d5c98376af17141.js.map => it-json.1b71f7623efed055d62b.js.map} (99%) delete mode 100644 priv/static/static/js/i18n/ja_easy-json.1d5ea7e755b066ac2cdd.js delete mode 100644 priv/static/static/js/i18n/ja_easy-json.1d5ea7e755b066ac2cdd.js.map create mode 100644 priv/static/static/js/i18n/ja_easy-json.b5f269a0a935c640f3b5.js create mode 100644 priv/static/static/js/i18n/ja_easy-json.b5f269a0a935c640f3b5.js.map create mode 100644 priv/static/static/js/i18n/ja_pedantic-json.7c472bf001679929edea.js create mode 100644 priv/static/static/js/i18n/ja_pedantic-json.7c472bf001679929edea.js.map delete mode 100644 priv/static/static/js/i18n/ja_pedantic-json.b52fa70f0bf89ae01cfb.js delete mode 100644 priv/static/static/js/i18n/ja_pedantic-json.b52fa70f0bf89ae01cfb.js.map create mode 100644 priv/static/static/js/i18n/ko-json.51d23959bb9bae4f0ecf.js create mode 100644 priv/static/static/js/i18n/ko-json.51d23959bb9bae4f0ecf.js.map delete mode 100644 priv/static/static/js/i18n/ko-json.9029d09084bb22d8b705.js delete mode 100644 priv/static/static/js/i18n/ko-json.9029d09084bb22d8b705.js.map delete mode 100644 priv/static/static/js/i18n/nan-TW-json.7f2789d8a461e86d1734.js delete mode 100644 priv/static/static/js/i18n/nan-TW-json.7f2789d8a461e86d1734.js.map create mode 100644 priv/static/static/js/i18n/nan-TW-json.80c0071ebf383eea3b8f.js create mode 100644 priv/static/static/js/i18n/nan-TW-json.80c0071ebf383eea3b8f.js.map rename priv/static/static/js/i18n/{nb-json.a54af3b1f47d576ad4aa.js => nb-json.2dd01f0c6cca8f008ffd.js} (99%) rename priv/static/static/js/i18n/{nb-json.a54af3b1f47d576ad4aa.js.map => nb-json.2dd01f0c6cca8f008ffd.js.map} (99%) rename priv/static/static/js/i18n/{nl-json.3fb9758b10c29434b613.js => nl-json.2fe76cb30e2fced8d88a.js} (99%) rename priv/static/static/js/i18n/{nl-json.3fb9758b10c29434b613.js.map => nl-json.2fe76cb30e2fced8d88a.js.map} (99%) rename priv/static/static/js/i18n/{oc-json.4f52bf1b6e3213acc33c.js => oc-json.7ebe52b8d626dbf54a5f.js} (99%) rename priv/static/static/js/i18n/{oc-json.4f52bf1b6e3213acc33c.js.map => oc-json.7ebe52b8d626dbf54a5f.js.map} (99%) rename priv/static/static/js/i18n/{pl-json.c963247822381b05579b.js => pl-json.d319c737d904c64d8eba.js} (99%) rename priv/static/static/js/i18n/{pl-json.c963247822381b05579b.js.map => pl-json.d319c737d904c64d8eba.js.map} (99%) delete mode 100644 priv/static/static/js/i18n/pt-json.3fc5593e030268bcd291.js delete mode 100644 priv/static/static/js/i18n/pt-json.3fc5593e030268bcd291.js.map create mode 100644 priv/static/static/js/i18n/pt-json.d6ce04e3e4e5a0e908bf.js create mode 100644 priv/static/static/js/i18n/pt-json.d6ce04e3e4e5a0e908bf.js.map rename priv/static/static/js/i18n/{ro-json.3fd9977ed1c1413059ae.js => ro-json.3c4274351d849d5010b8.js} (98%) rename priv/static/static/js/i18n/{ro-json.3fd9977ed1c1413059ae.js.map => ro-json.3c4274351d849d5010b8.js.map} (99%) rename priv/static/static/js/i18n/{ru-json.b913eb7f7e9f0c642438.js => ru-json.1aaf6c712db167fede4d.js} (99%) rename priv/static/static/js/i18n/{ru-json.b913eb7f7e9f0c642438.js.map => ru-json.1aaf6c712db167fede4d.js.map} (99%) rename priv/static/static/js/i18n/{sk-json.d8d0eba80f94e6f55145.js => sk-json.47d5a2f34c7fdf53d2af.js} (99%) rename priv/static/static/js/i18n/{sk-json.d8d0eba80f94e6f55145.js.map => sk-json.47d5a2f34c7fdf53d2af.js.map} (99%) rename priv/static/static/js/i18n/{te-json.ce6db28261b2f824064f.js => te-json.cb97beb999533eaae9ae.js} (99%) rename priv/static/static/js/i18n/{te-json.ce6db28261b2f824064f.js.map => te-json.cb97beb999533eaae9ae.js.map} (99%) delete mode 100644 priv/static/static/js/i18n/uk-json.003908af9b15becdd382.js delete mode 100644 priv/static/static/js/i18n/uk-json.003908af9b15becdd382.js.map create mode 100644 priv/static/static/js/i18n/uk-json.b16cc51984a2c6585d41.js create mode 100644 priv/static/static/js/i18n/uk-json.b16cc51984a2c6585d41.js.map rename priv/static/static/js/i18n/{vi-json.703c1e731be6e857bbf3.js => vi-json.07aaea2428bb6b5a5fab.js} (99%) rename priv/static/static/js/i18n/{vi-json.703c1e731be6e857bbf3.js.map => vi-json.07aaea2428bb6b5a5fab.js.map} (99%) create mode 100644 priv/static/static/js/i18n/zh-json.5b36950c3b87c209730d.js create mode 100644 priv/static/static/js/i18n/zh-json.5b36950c3b87c209730d.js.map delete mode 100644 priv/static/static/js/i18n/zh-json.a0a26f6d62ddbe0b49cc.js delete mode 100644 priv/static/static/js/i18n/zh-json.a0a26f6d62ddbe0b49cc.js.map rename priv/static/static/js/i18n/{zh_Hant-json.f7e1d0f4b873c60d6396.js => zh_Hant-json.6b45d2e6967b35e56b44.js} (99%) rename priv/static/static/js/i18n/{zh_Hant-json.f7e1d0f4b873c60d6396.js.map => zh_Hant-json.6b45d2e6967b35e56b44.js.map} (99%) diff --git a/priv/static/index.html b/priv/static/index.html index 760a70fbe5..eabc3ccf77 100644 --- a/priv/static/index.html +++ b/priv/static/index.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/priv/static/static/css/159.1d523a00378ebd68c5b3.css.map b/priv/static/static/css/159.1d523a00378ebd68c5b3.css.map deleted file mode 100644 index cb7151a691..0000000000 --- a/priv/static/static/css/159.1d523a00378ebd68c5b3.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/css/159.1d523a00378ebd68c5b3.css","mappings":"AAGA,gBACE,WAEA,0BACE,iBAEA,kDACE,aACA,eACA,cAEA,2DACE,aACA,cAGA,YAFA,WACA,UACA,CAEA,+DACE,YAEA,qEACE","sources":["webpack://pleroma_fe/./src/components/sticker_picker/sticker_picker.vue"],"sourcesContent":["\n@import \"../../variables\";\n\n.sticker-picker {\n width: 100%;\n\n .contents {\n min-height: 250px;\n\n .sticker-picker-content {\n display: flex;\n flex-wrap: wrap;\n padding: 0 4px;\n\n .sticker {\n display: flex;\n flex: 1 1 auto;\n margin: 4px;\n width: 56px;\n height: 56px;\n\n img {\n height: 100%;\n\n &:hover {\n filter: drop-shadow(0 0 5px var(--accent, $fallback--link));\n }\n }\n }\n }\n }\n}\n\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/static/css/159.1d523a00378ebd68c5b3.css b/priv/static/static/css/1597.a250eca8cf87418c7b3e.css similarity index 84% rename from priv/static/static/css/159.1d523a00378ebd68c5b3.css rename to priv/static/static/css/1597.a250eca8cf87418c7b3e.css index 146838cff0..e3b3fb4141 100644 --- a/priv/static/static/css/159.1d523a00378ebd68c5b3.css +++ b/priv/static/static/css/1597.a250eca8cf87418c7b3e.css @@ -1,2 +1,2 @@ -.sticker-picker{width:100%}.sticker-picker .contents{min-height:250px}.sticker-picker .contents .sticker-picker-content{display:flex;flex-wrap:wrap;padding:0 4px}.sticker-picker .contents .sticker-picker-content .sticker{display:flex;flex:1 1 auto;height:56px;margin:4px;width:56px}.sticker-picker .contents .sticker-picker-content .sticker img{height:100%}.sticker-picker .contents .sticker-picker-content .sticker img:hover{filter:drop-shadow(0 0 5px var(--accent,#d8a070))} -/*# sourceMappingURL=159.1d523a00378ebd68c5b3.css.map*/ \ No newline at end of file +.sticker-picker{width:100%}.sticker-picker .contents{min-height:250px}.sticker-picker .contents .sticker-picker-content{display:flex;flex-wrap:wrap;padding:0 4px}.sticker-picker .contents .sticker-picker-content .sticker{display:flex;flex:1 1 auto;height:56px;margin:4px;width:56px}.sticker-picker .contents .sticker-picker-content .sticker img{height:100%}.sticker-picker .contents .sticker-picker-content .sticker img:hover{filter:drop-shadow(0 0 5px var(--accent))} +/*# sourceMappingURL=1597.a250eca8cf87418c7b3e.css.map*/ \ No newline at end of file diff --git a/priv/static/static/css/1597.a250eca8cf87418c7b3e.css.map b/priv/static/static/css/1597.a250eca8cf87418c7b3e.css.map new file mode 100644 index 0000000000..697b3f4a49 --- /dev/null +++ b/priv/static/static/css/1597.a250eca8cf87418c7b3e.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/1597.a250eca8cf87418c7b3e.css","mappings":"AACA,gBACE,WAEA,0BACE,iBAEA,kDACE,aACA,eACA,cAEA,2DACE,aACA,cAGA,YAFA,WACA,UACA,CAEA,+DACE,YAEA,qEACE","sources":["webpack://pleroma_fe/./src/components/sticker_picker/sticker_picker.vue"],"sourcesContent":["\n.sticker-picker {\n width: 100%;\n\n .contents {\n min-height: 250px;\n\n .sticker-picker-content {\n display: flex;\n flex-wrap: wrap;\n padding: 0 4px;\n\n .sticker {\n display: flex;\n flex: 1 1 auto;\n margin: 4px;\n width: 56px;\n height: 56px;\n\n img {\n height: 100%;\n\n &:hover {\n filter: drop-shadow(0 0 5px var(--accent));\n }\n }\n }\n }\n }\n}\n\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/static/css/5250.b9104f3df4166526b081.css b/priv/static/static/css/5250.b9104f3df4166526b081.css new file mode 100644 index 0000000000..e15ceebd6e --- /dev/null +++ b/priv/static/static/css/5250.b9104f3df4166526b081.css @@ -0,0 +1,2 @@ +.ModifiedIndicator{display:inline-block;position:relative}.modified-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.ProfileSettingIndicator{display:inline-block;position:relative}.profilesetting-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.DraftButtons{display:inline-block;position:relative}.DraftButtons .button-default{margin-left:.5em}.draft-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.AttachmentSetting .attachment{display:block;height:15em;margin-bottom:.5em;width:100%}.AttachmentSetting .attachment-input{display:flex;flex-direction:column;margin-left:1em;width:20em}.AttachmentSetting.-compact .attachment-input{align-items:flex-end;flex-direction:row}.AttachmentSetting.-compact .attachment{align-self:center;display:block;flex:0;height:4em;margin-bottom:0;min-width:4em;order:0}.AttachmentSetting.-compact .control-field{margin-left:.5em;min-width:12em;order:1}.AttachmentSetting.-compact .control-upload{min-width:12em;order:2;padding:0 .5em}.AttachmentSetting .controls{margin-bottom:.5em}.AttachmentSetting .controls button,.AttachmentSetting .controls input{width:100%}.frontends-tab .cards-list{padding:0}.frontends-tab .relative{position:relative}.frontends-tab .overlay{background:var(--bg);bottom:0;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:2}.frontends-tab dd{word-wrap:nowrap;max-width:10em;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.emoji-tab-edit-popover{padding-bottom:.5em;padding-left:.5em;padding-right:.5em}.emoji-tab-edit-popover .emoji{height:32px;width:32px}.emoji-tab .btn-group .btn:not(:first-child){margin-left:.5em}.emoji-tab .pack-info-wrapper{margin-top:1em}.emoji-tab .emoji-info-input{width:100%}.emoji-tab .emoji-data-input{margin-left:.5em;margin-right:.5em;width:40%}.emoji-tab .emoji{height:32px;width:32px}.emoji-tab .emoji-unsaved{box-shadow:0 3px 5px var(--cBlue)}.emoji-tab .emoji-list{display:flex;flex-wrap:wrap;gap:1em 1em}.emoji-tab-popover-button:not(:first-child){margin-left:.5em}.emoji-tab-popover-input{margin-bottom:.5em}.emoji-tab-popover-input label{display:block;margin-bottom:.5em}.emoji-tab-popover-input input{width:20em}.emoji-tab-popover-input .emoji-tab-popover-file{padding-top:3px}.emoji-tab-popover-input .warning{color:var(--cOrange)}.settings_tab-switcher{height:100%}.settings_tab-switcher .setting-item{border-bottom:2px solid var(--border);margin:1em 1em 1.4em;padding-bottom:1.4em}.settings_tab-switcher .setting-item>div,.settings_tab-switcher .setting-item>label{display:block;margin-bottom:.5em}.settings_tab-switcher .setting-item>div:last-child,.settings_tab-switcher .setting-item>label:last-child{margin-bottom:0}.settings_tab-switcher .setting-item .select-multiple{display:flex}.settings_tab-switcher .setting-item .select-multiple .option-list{margin:0;padding-left:.5em}.settings_tab-switcher .setting-item:last-child{border-bottom:none;margin-bottom:1em;padding-bottom:0}.settings_tab-switcher .setting-item textarea{height:100px;max-width:100%;width:100%}.settings_tab-switcher .setting-item .unavailable,.settings_tab-switcher .setting-item .unavailable svg{color:var(--cRed)} +/*# sourceMappingURL=5250.b9104f3df4166526b081.css.map*/ \ No newline at end of file diff --git a/priv/static/static/css/5250.b9104f3df4166526b081.css.map b/priv/static/static/css/5250.b9104f3df4166526b081.css.map new file mode 100644 index 0000000000..b6acca6089 --- /dev/null +++ b/priv/static/static/css/5250.b9104f3df4166526b081.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/5250.b9104f3df4166526b081.css","mappings":"AACA,mBACE,qBACA,kBAGF,kBACE,gBACA,eACA,kBCRF,yBACE,qBACA,kBAGF,wBACE,gBACA,eACA,kBCRF,cACE,qBACA,kBAEA,8BACE,iBAIJ,eACE,gBACA,eACA,kBCXA,+BACE,cAEA,YACA,mBAFA,UAEA,CAGF,qCAEE,aACA,sBAFA,gBAGA,WAIA,8CAEE,qBADA,kBACA,CAGF,wCAME,kBAHA,cAFA,OAIA,WAEA,eAAc,CAHd,cAFA,OAKA,CAGF,2CAGE,iBADA,eADA,OAEA,CAGF,4CAEE,eADA,QAEA,eAIJ,6BACE,mBAEA,uEAEE,WCjDJ,2BACE,UAGF,yBACE,kBAGF,wBAEE,qBAKA,SACA,OAHA,WAJA,kBAQA,OAAM,CAHN,MAFA,SAKA,CAGF,kBAEE,iBAGA,eADA,kBAHA,uBAEA,kBAEA,CCzBF,wBAGE,oBAFA,kBACA,kBACA,CAEA,+BAEE,YADA,UACA,CCPJ,6CACE,iBAGF,8BACE,eAGF,6BACE,WAGF,6BAEE,iBACA,kBAFA,SAEA,CAGF,kBAEE,YADA,UACA,CAGF,0BACE,kCAGF,uBACE,aACA,eACA,YAIJ,4CACE,iBAGF,yBACE,mBAEA,+BACE,cACA,mBAGF,+BACE,WAGF,iDACE,gBAGF,kCACE,qBCxDJ,uBACE,YAEA,qCACE,sCACA,qBACA,qBAEA,oFAEE,cACA,mBAEA,0GACE,gBAIJ,sDACE,aAEA,mEACE,SACA,kBAIJ,gDACE,mBAEA,kBADA,gBACA,CAGF,8CAGE,aADA,eADA,UAEA,CAGF,wGAEE","sources":["webpack://pleroma_fe/./src/components/settings_modal/helpers/modified_indicator.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/profile_setting_indicator.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/draft_buttons.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/attachment_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/admin_tabs/frontends_tab.scss","webpack://pleroma_fe/./src/components/settings_modal/helpers/emoji_editing_popover.vue","webpack://pleroma_fe/./src/components/settings_modal/admin_tabs/emoji_tab.scss","webpack://pleroma_fe/./src/components/settings_modal/settings_modal_admin_content.scss"],"sourcesContent":["\n.ModifiedIndicator {\n display: inline-block;\n position: relative;\n}\n\n.modified-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n.ProfileSettingIndicator {\n display: inline-block;\n position: relative;\n}\n\n.profilesetting-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n.DraftButtons {\n display: inline-block;\n position: relative;\n\n .button-default {\n margin-left: 0.5em;\n }\n}\n\n.draft-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n.AttachmentSetting {\n .attachment {\n display: block;\n width: 100%;\n height: 15em;\n margin-bottom: 0.5em;\n }\n\n .attachment-input {\n margin-left: 1em;\n display: flex;\n flex-direction: column;\n width: 20em;\n }\n\n &.-compact {\n .attachment-input {\n flex-direction: row;\n align-items: flex-end;\n }\n\n .attachment {\n flex: 0;\n order: 0;\n display: block;\n min-width: 4em;\n height: 4em;\n align-self: center;\n margin-bottom: 0;\n }\n\n .control-field {\n order: 1;\n min-width: 12em;\n margin-left: 0.5em;\n }\n\n .control-upload {\n order: 2;\n min-width: 12em;\n padding: 0 0.5em;\n }\n }\n\n .controls {\n margin-bottom: 0.5em;\n\n input,\n button {\n width: 100%;\n }\n }\n}\n",".frontends-tab {\n .cards-list {\n padding: 0;\n }\n\n .relative {\n position: relative;\n }\n\n .overlay {\n position: absolute;\n background: var(--bg);\n // fix buttons showing through\n z-index: 2;\n opacity: 0.9;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n }\n\n dd {\n text-overflow: ellipsis;\n word-wrap: nowrap;\n white-space: nowrap;\n overflow-x: hidden;\n max-width: 10em;\n }\n}\n","\n .emoji-tab-edit-popover {\n padding-left: 0.5em;\n padding-right: 0.5em;\n padding-bottom: 0.5em;\n\n .emoji {\n width: 32px;\n height: 32px;\n }\n }\n",".emoji-tab {\n .btn-group .btn:not(:first-child) {\n margin-left: 0.5em;\n }\n\n .pack-info-wrapper {\n margin-top: 1em;\n }\n\n .emoji-info-input {\n width: 100%;\n }\n\n .emoji-data-input {\n width: 40%;\n margin-left: 0.5em;\n margin-right: 0.5em;\n }\n\n .emoji {\n width: 32px;\n height: 32px;\n }\n\n .emoji-unsaved {\n box-shadow: 0 3px 5px var(--cBlue);\n }\n\n .emoji-list {\n display: flex;\n flex-wrap: wrap;\n gap: 1em 1em;\n }\n}\n\n.emoji-tab-popover-button:not(:first-child) {\n margin-left: 0.5em;\n}\n\n.emoji-tab-popover-input {\n margin-bottom: 0.5em;\n\n label {\n display: block;\n margin-bottom: 0.5em;\n }\n\n input {\n width: 20em;\n }\n\n .emoji-tab-popover-file {\n padding-top: 3px;\n }\n\n .warning {\n color: var(--cOrange);\n }\n}\n",".settings_tab-switcher {\n height: 100%;\n\n .setting-item {\n border-bottom: 2px solid var(--border);\n margin: 1em 1em 1.4em;\n padding-bottom: 1.4em;\n\n > div,\n > label {\n display: block;\n margin-bottom: 0.5em;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n .select-multiple {\n display: flex;\n\n .option-list {\n margin: 0;\n padding-left: 0.5em;\n }\n }\n\n &:last-child {\n border-bottom: none;\n padding-bottom: 0;\n margin-bottom: 1em;\n }\n\n textarea {\n width: 100%;\n max-width: 100%;\n height: 100px;\n }\n\n .unavailable,\n .unavailable svg {\n color: var(--cRed);\n }\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/static/css/5292.035030cbb2311a7ddada.css b/priv/static/static/css/5292.035030cbb2311a7ddada.css new file mode 100644 index 0000000000..c50997d657 --- /dev/null +++ b/priv/static/static/css/5292.035030cbb2311a7ddada.css @@ -0,0 +1,11 @@ +.importer-uploading{font-size:1.5em;margin:.25em}.exporter-processing{margin:.25em}.autosuggest{position:relative}.autosuggest-input{display:block;width:100%}.autosuggest-results{background-color:var(--bg);border-color:var(--border);border-radius:var(--roundness);border-style:solid;border-top-left-radius:0;border-top-right-radius:0;border-width:1px;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--shadow);left:0;max-height:400px;overflow-y:auto;position:absolute;right:0;top:100%;z-index:1}.block-card-content-container{margin-top:.5em;text-align:right}.block-card-content-container button{width:10em}.mute-card-content-container{margin-top:.5em;text-align:right}.mute-card-content-container button{width:10em}.domain-mute-card{align-items:center;display:flex;flex:1 0;justify-content:space-between;padding:.6em 1em .6em 0}.domain-mute-card-domain{margin-right:1em;overflow:hidden;text-overflow:ellipsis}.domain-mute-card button{width:10em}.autosuggest-results .domain-mute-card{padding-left:1em}.selectable-list{--__line-height:1.5em;--__horizontal-gap:0.75em;--__vertical-gap:0.5em}.selectable-list-item-inner{align-items:center;display:flex}.selectable-list-item-inner>*{min-width:0}.selectable-list-header{align-items:center;border-bottom:1px solid;border-bottom-color:var(--border);display:flex;padding:var(--__vertical-gap) var(--__horizontal-gap)}.selectable-list-header-actions{flex:1}.selectable-list-checkbox-wrapper{flex:none;padding-right:var(--__horizontal-gap)}.with-subscription-loading{padding:10px;text-align:center}.with-subscription-loading .error{font-size:1rem}.mutes-and-blocks-tab{height:100%}.mutes-and-blocks-tab .usersearch-wrapper{padding:1em}.mutes-and-blocks-tab .bulk-actions{min-height:2em;padding:0 1em;text-align:right}.mutes-and-blocks-tab .bulk-action-button{width:10em}.mutes-and-blocks-tab .domain-mute-form{display:flex;flex-direction:column;padding:1em}.mutes-and-blocks-tab .domain-mute-button{align-self:flex-end;margin-top:1em;width:10em}.ModifiedIndicator{display:inline-block;position:relative}.modified-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.ProfileSettingIndicator{display:inline-block;position:relative}.profilesetting-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.DraftButtons{display:inline-block;position:relative}.DraftButtons .button-default{margin-left:.5em}.draft-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.UnitSetting .number-input{max-width:6.5em;text-align:right}.UnitSetting .unit-input,.UnitSetting .unit-input select{min-width:4em;width:auto}.mfa-backup-codes .warning{color:var(--cOrange)}.mfa-backup-codes .backup-codes{font-family:var(--monoFont)}.mfa-settings .method-item,.mfa-settings .mfa-heading{align-items:baseline;display:flex;flex-wrap:wrap;justify-content:space-between}.mfa-settings .warning{color:var(--cOrange)}.mfa-settings .setup-otp{display:flex;flex-wrap:wrap;justify-content:center}.mfa-settings .setup-otp .qr-code{flex:1;padding-right:10px}.mfa-settings .setup-otp .verify{flex:1}.mfa-settings .setup-otp .error{margin:4px 0 0}.mfa-settings .setup-otp .confirm-otp-actions button{margin-top:5px;width:15em} +/*! + * Cropper.js v1.5.13 + * https://fengyuanchen.github.io/cropperjs + * + * Copyright 2015-present Chen Fengyuan + * Released under the MIT license + * + * Date: 2022-11-20T05:30:43.444Z + */.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{bottom:0;left:0;position:absolute;right:0;top:0}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:rgba(51,153,255,.75);overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.image-cropper-img-input{display:none}.image-cropper-image-container{position:relative}.image-cropper-image-container img{display:block;max-width:100%}.image-cropper-buttons-wrapper{margin-top:10px}.image-cropper-buttons-wrapper button{margin-top:5px}.profile-tab .bio{margin:0}.profile-tab .visibility-tray{padding-top:5px}.profile-tab input[type=file]{height:auto;padding:5px}.profile-tab .banner-background-preview{max-width:100%;position:relative;width:300px}.profile-tab .banner-background-preview img{width:100%}.profile-tab .uploading{font-size:1.5em;margin:.25em}.profile-tab .name-changer{width:100%}.profile-tab .current-avatar-container{height:150px;position:relative;width:150px}.profile-tab .current-avatar{border-radius:var(--roundness);display:block;height:100%;width:100%}.profile-tab .reset-button{background-color:rgba(0,0,0,.6);border-radius:var(--roundness);cursor:pointer;font-size:1.5em;height:1.5em;line-height:1.5em;opacity:.7;position:absolute;right:.2em;text-align:center;top:.2em;width:1.5em}.profile-tab .reset-button:hover{opacity:1}.profile-tab .reset-button svg{color:#fff}.profile-tab .oauth-tokens{width:100%}.profile-tab .oauth-tokens th{text-align:left}.profile-tab .oauth-tokens .actions{text-align:right}.profile-tab-usersearch-wrapper{padding:1em}.profile-tab-bulk-actions{min-height:2em;padding:0 1em;text-align:right}.profile-tab-bulk-actions button{width:10em}.profile-tab-domain-mute-form{display:flex;flex-direction:column;padding:1em}.profile-tab-domain-mute-form button{align-self:flex-end;margin-top:1em;width:10em}.profile-tab .setting-subitem{margin-left:1.75em}.profile-tab .profile-fields{display:flex}.profile-tab .profile-fields>.emoji-input{flex:1 1 auto;margin:0 .2em .5em;min-width:0}.profile-tab .profile-fields .delete-field{align-self:center;margin:0 .2em .5em;padding:0 .5em;width:20px}.profile-tab .birthday-input{display:block;margin-bottom:1em}.font-control .custom-font{max-width:20em;min-width:20em}.invalid-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.theme-preview-container{background-color:var(--wallpaper);background-image:var(--body-background-image);background-position:50% 50%;background-size:cover;border-bottom:1px dashed;border-top:1px dashed;border-color:var(--border);margin:1em 0;padding:1em;position:relative}.theme-preview-container .theme-preview-content{padding:20px}.theme-preview-container .dummy .post{display:flex;font-family:var(--postFont)}.theme-preview-container .dummy .post .content{flex:1}.theme-preview-container .dummy .post .content h4{margin-bottom:.25em}.theme-preview-container .dummy .post .content .icons{display:flex;margin-top:.5em}.theme-preview-container .dummy .post .content .icons i{margin-right:1em}.theme-preview-container .dummy .after-post{align-items:center;display:flex;margin-top:1em}.theme-preview-container .dummy .avatar,.theme-preview-container .dummy .avatar-alt{background:linear-gradient(135deg,#b8e1fc,#a9d2f3 10%,#90bae4 25%,#90bcea 37%,#90bff0 50%,#6ba8e5 51%,#a2daf5 83%,#bdf3fd);color:#000;font-family:sans-serif;margin-right:1em;text-align:center}.theme-preview-container .dummy .avatar-alt{flex:0 auto;font-size:12px;line-height:20px;margin-left:28px;min-height:20px;min-width:20px}.theme-preview-container .dummy .avatar{flex:0 auto;font-size:14px;height:48px;line-height:48px;width:48px}.theme-preview-container .dummy .actions{align-items:baseline;display:flex}.theme-preview-container .dummy .actions .checkbox{flex:1;margin-right:1em}.theme-preview-container .dummy .separator{border-bottom:1px solid;border-color:var(--border);margin:1em}.theme-preview-container .dummy .btn{min-width:3em}.theme-preview-container .underlay-preview{bottom:0;left:10px;position:absolute;right:10px;top:0}.appearance-tab .theme-notice{margin:1em;padding:.5em}.appearance-tab .column-settings{display:flex;flex-wrap:wrap;justify-content:space-evenly}.appearance-tab .column-settings .size-label{display:block;margin-bottom:.5em;margin-top:.5em}.appearance-tab .theme-list{border:1px solid var(--border);border-radius:var(--roundness);display:flex;flex-wrap:wrap;height:25em;list-style:none;margin:-.5em 0;overflow-x:hidden;overflow-y:auto;padding:0;scrollbar-gutter:stable}.appearance-tab .theme-list .theme-preview{align-items:center;display:flex;flex-direction:column;font-size:1rem;margin:.5em;width:19rem}.appearance-tab .theme-list .theme-preview.placeholder{opacity:.2}.appearance-tab .theme-list .theme-preview .theme-preview-container{zoom:.5;border:none;border-radius:var(--roundness);pointer-events:none;text-align:left}.color-input{display:inline-flex}.color-input-field.input{align-items:stretch;display:inline-flex;flex:0 0 0;max-width:9em;padding:.2em 8px}.color-input-field.input input{background:none;border:none;color:var(--text);margin:0;padding:0}.color-input-field.input input.textColor{flex:1 0 3em;min-width:3em;padding:0}.color-input-field.input .nativeColor{cursor:pointer;flex:0 0 auto}.color-input-field.input .nativeColor input{-webkit-appearance:none;-moz-appearance:none;appearance:none;max-height:0;max-width:0;min-width:0;opacity:0!important}.color-input-field.input .computedIndicator,.color-input-field.input .invalidIndicator,.color-input-field.input .transparentIndicator,.color-input-field.input .validIndicator{align-self:stretch;border-radius:var(--roundness);flex:0 0 2em;margin:0 .5em;min-height:1.5em;min-width:2em}.color-input-field.input .invalidIndicator{background:transparent;border:2px solid var(--cRed);box-sizing:border-box}.color-input-field.input .transparentIndicator{background-color:#f0f;position:relative}.color-input-field.input .transparentIndicator:after,.color-input-field.input .transparentIndicator:before{background-color:#000;content:"";display:block;height:50%;position:absolute;width:50%}.color-input-field.input .transparentIndicator:after{border-top-left-radius:var(--roundness);left:0;top:0}.color-input-field.input .transparentIndicator:before{border-bottom-right-radius:var(--roundness);bottom:0;right:0}.color-input .label{flex:1 1 auto}.shadow-control{display:flex;flex-wrap:wrap;justify-content:center;margin-bottom:1em}.shadow-control .shadow-preview-container,.shadow-control .shadow-tweak{margin:5px 6px 0 0}.shadow-control .shadow-preview-container{display:flex;flex:0;flex-wrap:wrap}.shadow-control .shadow-preview-container input[type=number]{min-width:2em;width:5em}.shadow-control .shadow-preview-container .x-shift-control,.shadow-control .shadow-preview-container .y-shift-control{display:flex;flex:0}.shadow-control .shadow-preview-container .x-shift-control[disabled=disabled] *,.shadow-control .shadow-preview-container .y-shift-control[disabled=disabled] *{opacity:.5}.shadow-control .shadow-preview-container .x-shift-control{align-items:flex-start}.shadow-control .shadow-preview-container .x-shift-control .wrap,.shadow-control .shadow-preview-container input[type=range]{height:2em;margin:0;width:15em}.shadow-control .shadow-preview-container .y-shift-control{align-items:flex-end;flex-direction:column}.shadow-control .shadow-preview-container .y-shift-control .wrap{height:15em;width:2em}.shadow-control .shadow-preview-container .y-shift-control input[type=range]{transform:rotate(90deg);transform-origin:1em 1em}.shadow-control .shadow-preview-container .preview-window{align-items:center;background-color:#999;background-image:linear-gradient(45deg,#666 25%,transparent 0),linear-gradient(-45deg,#666 25%,transparent 0),linear-gradient(45deg,transparent 75%,#666 0),linear-gradient(-45deg,transparent 75%,#666 0);background-position:0 0,0 10px,10px -10px,-10px 0;background-size:20px 20px;border-radius:var(--roundness);display:flex;flex:1;justify-content:center}.shadow-control .shadow-preview-container .preview-window .preview-block{border-radius:var(--roundness);height:33%;width:33%}.shadow-control .shadow-tweak{flex:1;min-width:280px}.shadow-control .shadow-tweak .id-control{align-items:stretch}.shadow-control .shadow-tweak .id-control .shadow-switcher{flex:1}.shadow-control .shadow-tweak .id-control .btn,.shadow-control .shadow-tweak .id-control .shadow-switcher{margin-right:5px;min-width:1px}.shadow-control .shadow-tweak .id-control .btn{margin:0 .1em;padding:0 .4em}.contrast-ratio{display:flex;justify-content:flex-end;margin-bottom:5px;margin-top:-4px}.contrast-ratio .label{margin-right:1em}.contrast-ratio .rating{display:inline-block;margin-left:.5em;text-align:center}.theme-tab{padding-bottom:2em}.theme-tab .deprecation-warning{margin:2em;padding:.5em}.theme-tab .preset-switcher{margin-right:1em}.theme-tab .btn{margin-left:.25em;margin-right:.25em}.theme-tab .btn-group .btn{margin:0}.theme-tab .style-control{align-items:baseline;display:flex;margin-bottom:5px}.theme-tab .style-control .label{flex:1}.theme-tab .style-control .opt{margin:.5em}.theme-tab .style-control .color-input{flex:0 0 0}.theme-tab .style-control input,.theme-tab .style-control select{flex:0;margin:0;min-width:3em}.theme-tab .style-control input[type=number],.theme-tab .style-control select[type=number]{min-width:5em}.theme-tab .style-control input[type=range],.theme-tab .style-control select[type=range]{align-self:flex-start;flex:1;min-width:3em}.theme-tab .style-control.disabled input,.theme-tab .style-control.disabled select{opacity:.5}.theme-tab .reset-container{flex-wrap:wrap}.theme-tab .apply-container,.theme-tab .color-container,.theme-tab .fonts-container,.theme-tab .radius-container,.theme-tab .reset-container{display:flex}.theme-tab .fonts-container,.theme-tab .radius-container{flex-direction:column}.theme-tab .color-container{flex-wrap:wrap;justify-content:space-between}.theme-tab .color-container>h4{width:99%}.theme-tab .color-container,.theme-tab .fonts-container,.theme-tab .presets-container,.theme-tab .radius-container,.theme-tab .shadow-container{margin:1em 1em 0}.theme-tab .tab-header{align-items:baseline;display:flex;justify-content:space-between;margin-bottom:1em;min-height:30px;width:100%}.theme-tab .tab-header p{flex:1;margin:0 .5em 0 0}.theme-tab .tab-header-buttons{display:flex;flex-direction:column}.theme-tab .tab-header-buttons .btn{flex:0 auto;margin-bottom:.5em;min-width:1px;padding:0 1em}.theme-tab .shadow-selector .override{flex:1;margin-left:.5em}.theme-tab .shadow-selector .select-container{margin-bottom:-3px;margin-top:-4px}.theme-tab .save-load,.theme-tab .save-load-options{align-items:baseline;display:flex;flex-wrap:wrap;justify-content:center}.theme-tab .save-load .import-export,.theme-tab .save-load .presets,.theme-tab .save-load-options .import-export,.theme-tab .save-load-options .presets{margin-bottom:.5em}.theme-tab .save-load .import-export,.theme-tab .save-load-options .import-export{display:flex}.theme-tab .save-load .override,.theme-tab .save-load-options .override{margin-left:.5em}.theme-tab .save-load-options{flex-wrap:wrap;justify-content:center;margin-top:.5em}.theme-tab .save-load-options .keep-option{margin:0 .5em .5em;min-width:25%}.theme-tab .radius-item{flex-basis:auto}.theme-tab .color-item,.theme-tab .radius-item{display:flex;flex:1 1 0;flex-direction:column;margin:5px 6px 0 0;min-width:20em}.theme-tab .color-item.wide,.theme-tab .radius-item.wide{min-width:60%}.theme-tab .color-item:not(.wide):nth-child(odd),.theme-tab .radius-item:not(.wide):nth-child(odd){margin-right:7px}.theme-tab .color-item .color,.theme-tab .color-item .opacity,.theme-tab .radius-item .color,.theme-tab .radius-item .opacity{align-items:baseline;display:flex}.theme-tab .theme-color-cl,.theme-tab .theme-radius-rn{align-self:stretch;background:transparent;border:0;box-shadow:none;color:var(--textFaint)}.theme-tab .theme-color-cl,.theme-tab .theme-color-in,.theme-tab .theme-radius-in{margin-left:4px}.theme-tab .theme-radius-in{flex:1;max-width:7em;min-width:1em}.theme-tab .theme-radius-lb{max-width:50em}.theme-tab .theme-warning{align-items:baseline;display:flex;margin-bottom:.5em}.theme-tab .theme-warning .buttons .btn{margin-bottom:.5em}.extra-content .apply-container{display:flex;flex-direction:row;flex-grow:1;justify-content:space-around}.extra-content .apply-container .btn{flex-grow:1;max-width:10em;min-height:2em;min-width:0;padding:0}.settings_tab-switcher{height:100%}.settings_tab-switcher .setting-item{border-bottom:2px solid var(--border);margin:1em 1em 1.4em;padding-bottom:1.4em}.settings_tab-switcher .setting-item>div,.settings_tab-switcher .setting-item>label{display:block;margin-bottom:.5em}.settings_tab-switcher .setting-item>div:last-child,.settings_tab-switcher .setting-item>label:last-child{margin-bottom:0}.settings_tab-switcher .setting-item .select-multiple{display:flex}.settings_tab-switcher .setting-item .select-multiple .option-list{margin:0;padding-left:.5em}.settings_tab-switcher .setting-item:last-child{border-bottom:none;margin-bottom:1em;padding-bottom:0}.settings_tab-switcher .setting-item textarea{height:100px;max-width:100%;width:100%}.settings_tab-switcher .setting-item .unavailable,.settings_tab-switcher .setting-item .unavailable svg{color:var(--cRed)} +/*# sourceMappingURL=5292.035030cbb2311a7ddada.css.map*/ \ No newline at end of file diff --git a/priv/static/static/css/5292.035030cbb2311a7ddada.css.map b/priv/static/static/css/5292.035030cbb2311a7ddada.css.map new file mode 100644 index 0000000000..d3fca3d12f --- /dev/null +++ b/priv/static/static/css/5292.035030cbb2311a7ddada.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/5292.035030cbb2311a7ddada.css","mappings":"AAEE,oBACE,gBACA,aCFF,qBACE,aCFJ,aACE,kBAEA,mBACE,cACA,WAGF,qBAME,2BAGA,2BACA,+BAHA,mBAIA,yBACA,0BAJA,iBAKA,sCACA,yBAZA,OAGA,iBAUA,gBAdA,kBAGA,QADA,SAaA,UCxBJ,8BACE,gBACA,iBAEA,qCACE,WCLJ,6BACE,gBACA,iBAEA,oCACE,WCLJ,kBAIE,mBAFA,aADA,SAEA,8BAEA,wBAEA,yBACE,iBACA,gBACA,uBAGF,yBACE,WAGF,uCACE,iBClBJ,iBACE,qBAAsB,CACtB,yBAA0B,CAC1B,sBAAuB,CAEvB,4BAEE,mBADA,YACA,CAEA,8BACE,YAIJ,wBAEE,mBAGA,0DAJA,aAEA,qDAEA,CAEA,gCACE,OAIJ,kCAEE,UADA,qCACA,CC5BF,2BACE,aACA,kBAEA,kCACE,eCNN,sBACE,YAEA,0CACE,YAGF,oCAGE,eADA,cADA,gBAEA,CAGF,0CACE,WAGF,wCAEE,aACA,sBAFA,WAEA,CAGF,0CACE,oBACA,eACA,WCzBJ,mBACE,qBACA,kBAGF,kBACE,gBACA,eACA,kBCRF,yBACE,qBACA,kBAGF,wBACE,gBACA,eACA,kBCRF,cACE,qBACA,kBAEA,8BACE,iBAIJ,eACE,gBACA,eACA,kBCXA,2BACE,gBACA,iBAGF,yDAEE,cACA,WCRF,2BACE,qBAGF,gCACE,4BCLF,sDAKE,qBAHA,aACA,eACA,6BACA,CAGF,uBACE,qBAGF,yBACE,aAEA,eADA,sBACA,CAEA,kCACE,OACA,mBAEF,wCACA,+CAGE,qDAEE,eADA,UACA;AC7BR;;;;;;;;EAQE,CAEF,mBACE,aAAc,CACd,WAAY,CACZ,aAAc,CACd,iBAAkB,CAEd,iBAAkB,CACtB,wBAAyB,CACtB,qBAAsB,CAEjB,gBACV,CAEA,uBAEY,0BAA2B,CACnC,aAAc,CACd,WAAY,CACZ,sBAAuB,CACvB,yBAA2B,CAC3B,wBAA0B,CAC1B,sBAAwB,CACxB,qBAAuB,CACvB,UACF,CAEF,qFAKE,QAAS,CACT,MAAO,CACP,iBAAkB,CAClB,OAAQ,CACR,KACF,CAEA,kCAEE,eACF,CAEA,kBACE,qBAAsB,CACtB,SACF,CAEA,eACE,qBAAsB,CACtB,UACF,CAEA,kBACE,aAAc,CACd,WAAY,CACZ,sBAAuB,CACvB,kCAAsC,CACtC,eAAgB,CAChB,UACF,CAEA,gBACE,oBAAqB,CACrB,aAAc,CACd,UAAY,CACZ,iBACF,CAEA,yBACI,uBAAwB,CACxB,oBAAqB,CACrB,gBAAsB,CACtB,MAAO,CACP,aAAmB,CACnB,UACF,CAEF,yBACI,qBAAsB,CACtB,sBAAuB,CACvB,WAAY,CACZ,cAAoB,CACpB,KAAM,CACN,eACF,CAEF,gBACE,aAAc,CACd,QAAS,CACT,QAAS,CACT,WAAa,CACb,iBAAkB,CAClB,OAAQ,CACR,OACF,CAEA,6CAEI,qBAAsB,CACtB,WAAY,CACZ,aAAc,CACd,iBACF,CAEF,uBACI,UAAW,CACX,SAAU,CACV,KAAM,CACN,SACF,CAEF,sBACI,UAAW,CACX,MAAO,CACP,QAAS,CACT,SACF,CAEF,2CAGE,aAAc,CACd,WAAY,CACZ,UAAY,CACZ,iBAAkB,CAClB,UACF,CAEA,cACE,qBAAsB,CACtB,MAAO,CACP,KACF,CAEA,cACE,qBACF,CAEA,qBACI,gBAAiB,CACjB,UAAW,CACX,KAAM,CACN,SACF,CAEF,qBACI,gBAAiB,CACjB,UAAW,CACX,MAAO,CACP,QACF,CAEF,qBACI,gBAAiB,CACjB,SAAU,CACV,KAAM,CACN,SACF,CAEF,qBACI,WAAY,CACZ,gBAAiB,CACjB,UAAW,CACX,MACF,CAEF,eACE,qBAAsB,CACtB,UAAW,CACX,WAAa,CACb,SACF,CAEA,uBACI,gBAAiB,CACjB,eAAgB,CAChB,UAAW,CACX,OACF,CAEF,uBACI,gBAAiB,CACjB,QAAS,CACT,gBAAiB,CACjB,QACF,CAEF,uBACI,gBAAiB,CACjB,SAAU,CACV,eAAgB,CAChB,OACF,CAEF,uBACI,WAAY,CACZ,eAAgB,CAChB,QAAS,CACT,gBACF,CAEF,wBACI,kBAAmB,CACnB,UAAW,CACX,QACF,CAEF,wBACI,kBAAmB,CACnB,SAAU,CACV,QACF,CAEF,wBACI,WAAY,CACZ,kBAAmB,CACnB,SACF,CAEF,wBACI,WAAY,CACZ,kBAAmB,CACnB,WAAY,CACZ,SAAU,CACV,UAAW,CACX,UACF,CAEF,yBAEA,wBACM,WAAY,CACZ,UACJ,CACE,CAEJ,yBAEA,wBACM,WAAY,CACZ,UACJ,CACE,CAEJ,0BAEA,wBACM,UAAW,CACX,WAAa,CACb,SACJ,CACE,CAEJ,+BACI,qBAAsB,CACtB,WAAY,CACZ,WAAY,CACZ,aAAc,CACd,WAAY,CACZ,SAAU,CACV,iBAAkB,CAClB,UAAW,CACX,UACF,CAEF,mBACE,SACF,CAEA,YACE,4QACF,CAEA,cACE,aAAc,CACd,QAAS,CACT,iBAAkB,CAClB,OACF,CAEA,gBACE,sBACF,CAEA,cACE,WACF,CAEA,cACE,gBACF,CAEA,qIAIE,kBACF,CClTE,yBACE,aAGF,+BACE,kBAEA,mCACE,cACA,eAIJ,+BACE,gBAEA,sCACE,eClBJ,kBACE,SAGF,8BACE,gBAGF,8BAEE,YADA,WACA,CAGF,wCACE,eAEA,kBADA,WACA,CAEA,4CACE,WAIJ,wBACE,gBACA,aAGF,2BACE,WAGF,uCAGE,aAFA,kBACA,WACA,CAGF,6BAIE,+BAHA,cAEA,YADA,UAEA,CAGF,2BAKE,gCADA,+BAQA,eADA,gBAHA,aAEA,kBAJA,WALA,kBAEA,WAMA,kBAPA,SAKA,WAKA,CAEA,iCACE,UAGF,+BACE,WAIJ,2BACE,WAEA,8BACE,gBAGF,oCACE,iBAIJ,gCACE,YAGF,0BAGE,eADA,cADA,gBAEA,CAEA,iCACE,WAIJ,8BAEE,aACA,sBAFA,WAEA,CAEA,qCACE,oBACA,eACA,WAIJ,8BACE,mBAGF,6BACE,aAEA,0CACE,cACA,mBACA,YAGF,2CAEE,kBACA,mBACA,eAHA,UAGA,CAIJ,6BACE,cACA,kBChIF,2BAEE,eADA,cACA,CAIJ,iBACE,gBACA,eACA,kBCVF,yBAOE,kCACA,8CAEA,4BADA,sBANA,yBADA,sBAEA,2BACA,aACA,YALA,iBASA,CAEA,gDACE,aAIA,sCAEE,aADA,2BACA,CAEA,+CACE,OAEA,kDACE,oBAGF,sDAEE,aADA,eACA,CAEA,wDACE,iBAMR,4CAGE,mBADA,aADA,cAEA,CAGF,oFAEE,0HACE,CAWF,WACA,uBAEA,iBADA,iBACA,CAGF,4CACE,YAEA,eAGA,iBAJA,iBAGA,gBADA,cAEA,CAGF,wCACE,YAGA,eADA,YAEA,iBAHA,UAGA,CAGF,yCAEE,qBADA,YACA,CAEA,mDAEE,MAAK,CADL,gBACA,CAIJ,2CAEE,wBACA,2BAFA,UAEA,CAGF,qCACE,cAIJ,2CAGE,SACA,UAHA,kBAIA,WAHA,KAGA,CC3GF,8BAEE,WADA,YACA,CAGF,iCACE,aAEA,eADA,4BACA,CAGF,6CACE,cACA,mBACA,gBAGF,4BAUE,+BADA,+BAPA,aACA,eAEA,YAJA,gBAGA,eAEA,kBACA,gBAIA,SAAQ,CAHR,uBAGA,CAEA,2CAKE,mBAFA,aACA,sBAHA,eAKA,YAJA,WAIA,CAEA,uDACE,WAGF,oEAEE,QACA,YACA,+BAHA,oBAIA,gBCjDR,aACE,oBAEA,yBAIE,oBAHA,oBACA,WACA,cAEA,iBAEA,+BAEE,gBACA,YAFA,kBAIA,QAAO,CADP,SACA,CAEA,yCACE,aACA,cACA,UAIJ,sCACE,eACA,cAEA,4CACE,6DAGA,aAFA,YACA,YAGA,oBAIJ,+KAOE,mBAEA,+BALA,aACA,cAGA,iBAFA,aAGA,CAGF,2CACE,uBAEA,6BADA,qBACA,CAGF,+CAEE,sBACA,kBAEA,2GAIE,sBADA,WADA,cAIA,WADA,kBAEA,UAGF,qDAGE,wCADA,OADA,KAEA,CAGF,sDAGE,4CAFA,SACA,OACA,CAKN,oBACE,cCrFJ,gBACE,aACA,eACA,uBACA,kBAEA,wEAEE,mBAGF,0CAEE,aADA,OAEA,eAEA,6DAEE,cADA,SACA,CAGF,sHAEE,aACA,OAEA,gKACE,WAIJ,2DACE,uBAGF,6HAIE,WAFA,SACA,UACA,CAGF,2DAEE,qBADA,qBACA,CAEA,iEAEE,YADA,SACA,CAGF,6EAEE,wBADA,wBACA,CAIJ,0DAIE,mBAFA,sBAIA,0MACE,CAKF,kDADA,0BAEA,+BAVA,aAFA,OAIA,sBAQA,CAEA,yEAGE,+BADA,WADA,SAEA,CAKN,8BACE,OACA,gBAEA,0CACE,oBAEA,2DACE,OAGF,0GAGE,iBADA,aACA,CAGF,+CAEE,cADA,cACA,CCnGR,gBACE,aACA,yBAEA,kBADA,eACA,CAEA,uBACE,iBAGF,wBACE,qBAEA,iBADA,iBACA,CCdJ,WAME,mBALA,gCAEE,WADA,YACA,CAKF,4BACE,iBAGF,gBACE,kBACA,mBAGF,2BACE,SAGF,0BAEE,qBADA,aAEA,kBAEA,iCACE,OAGF,+BACE,YAGF,uCACE,WAGF,iEAIE,MAAK,CADL,SADA,aAEA,CAEA,2FACE,cAGF,yFAGE,sBAFA,OACA,aACA,CAKF,mFAEE,WAKN,4BACE,eAGF,6IAKE,aAGF,yDAEE,sBAGF,4BAKE,eACA,8BALA,+BACE,UAOJ,gJAKE,iBAGF,uBAGE,qBAFA,aACA,8BAIA,kBADA,gBADA,UAEA,CAEA,yBACE,OAEA,kBAIJ,+BACE,aACA,sBAEA,oCAEE,YAEA,mBAHA,cAEA,aACA,CAKF,sCACE,OACA,iBAGF,8CAEE,mBADA,eACA,CAIJ,oDAIE,qBAFA,aAGA,eAFA,sBAEA,CAEA,wJAEE,mBAGF,kFACE,aAGF,wEACE,iBAIJ,8BACE,eAEA,uBADA,eACA,CAEA,2CACE,mBACA,cAIJ,wBACE,gBAGF,+CAIE,aAEA,WADA,sBAFA,mBADA,cAIA,CAEA,yDACE,cAGF,mGACE,iBAGF,8HAGE,qBADA,YACA,CAIJ,uDAME,mBAFA,uBAFA,SACA,gBAEA,sBACA,CAGF,kFAGE,gBAGF,4BAGE,MAAK,CADL,cADA,aAEA,CAGF,4BACE,eAGF,0BAEE,qBADA,aAEA,mBAGE,wCACE,mBAON,gCACE,aACA,mBAEA,WAAU,CADV,4BACA,CAGA,qCACE,YAGA,eAFA,eACA,YAEA,UCtPN,uBACE,YAEA,qCACE,sCACA,qBACA,qBAEA,oFAEE,cACA,mBAEA,0GACE,gBAIJ,sDACE,aAEA,mEACE,SACA,kBAIJ,gDACE,mBAEA,kBADA,gBACA,CAGF,8CAGE,aADA,eADA,UAEA,CAGF,wGAEE","sources":["webpack://pleroma_fe/./src/components/importer/importer.vue","webpack://pleroma_fe/./src/components/exporter/exporter.vue","webpack://pleroma_fe/./src/components/autosuggest/autosuggest.vue","webpack://pleroma_fe/./src/components/block_card/block_card.vue","webpack://pleroma_fe/./src/components/mute_card/mute_card.vue","webpack://pleroma_fe/./src/components/domain_mute_card/domain_mute_card.vue","webpack://pleroma_fe/./src/components/selectable_list/selectable_list.vue","webpack://pleroma_fe/./src/hocs/with_subscription/with_subscription.scss","webpack://pleroma_fe/./src/components/settings_modal/tabs/mutes_and_blocks_tab.scss","webpack://pleroma_fe/./src/components/settings_modal/helpers/modified_indicator.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/profile_setting_indicator.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/draft_buttons.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/unit_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa_backup_codes.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa.vue","webpack://pleroma_fe/./node_modules/cropperjs/dist/cropper.css","webpack://pleroma_fe/./src/components/image_cropper/image_cropper.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/profile_tab.scss","webpack://pleroma_fe/./src/components/font_control/font_control.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/theme_tab/theme_preview.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/appearance_tab.vue","webpack://pleroma_fe/./src/components/color_input/color_input.scss","webpack://pleroma_fe/./src/components/shadow_control/shadow_control.vue","webpack://pleroma_fe/./src/components/contrast_ratio/contrast_ratio.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/theme_tab/theme_tab.scss","webpack://pleroma_fe/./src/components/settings_modal/settings_modal_user_content.scss"],"sourcesContent":["\n.importer {\n &-uploading {\n font-size: 1.5em;\n margin: 0.25em;\n }\n}\n","\n.exporter {\n &-processing {\n margin: 0.25em;\n }\n}\n","\n.autosuggest {\n position: relative;\n\n &-input {\n display: block;\n width: 100%;\n }\n\n &-results {\n position: absolute;\n left: 0;\n top: 100%;\n right: 0;\n max-height: 400px;\n background-color: var(--bg);\n border-style: solid;\n border-width: 1px;\n border-color: var(--border);\n border-radius: var(--roundness);\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--shadow);\n overflow-y: auto;\n z-index: 1;\n }\n}\n","\n.block-card-content-container {\n margin-top: 0.5em;\n text-align: right;\n\n button {\n width: 10em;\n }\n}\n","\n.mute-card-content-container {\n margin-top: 0.5em;\n text-align: right;\n\n button {\n width: 10em;\n }\n}\n","\n.domain-mute-card {\n flex: 1 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.6em 1em 0.6em 0;\n\n &-domain {\n margin-right: 1em;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n button {\n width: 10em;\n }\n\n .autosuggest-results & {\n padding-left: 1em;\n }\n}\n","\n.selectable-list {\n --__line-height: 1.5em;\n --__horizontal-gap: 0.75em;\n --__vertical-gap: 0.5em;\n\n &-item-inner {\n display: flex;\n align-items: center;\n\n > * {\n min-width: 0;\n }\n }\n\n &-header {\n display: flex;\n align-items: center;\n padding: var(--__vertical-gap) var(--__horizontal-gap);\n border-bottom: 1px solid;\n border-bottom-color: var(--border);\n\n &-actions {\n flex: 1;\n }\n }\n\n &-checkbox-wrapper {\n padding-right: var(--__horizontal-gap);\n flex: none;\n }\n}\n",".with-subscription {\n &-loading {\n padding: 10px;\n text-align: center;\n\n .error {\n font-size: 1rem;\n }\n }\n}\n",".mutes-and-blocks-tab {\n height: 100%;\n\n .usersearch-wrapper {\n padding: 1em;\n }\n\n .bulk-actions {\n text-align: right;\n padding: 0 1em;\n min-height: 2em;\n }\n\n .bulk-action-button {\n width: 10em;\n }\n\n .domain-mute-form {\n padding: 1em;\n display: flex;\n flex-direction: column;\n }\n\n .domain-mute-button {\n align-self: flex-end;\n margin-top: 1em;\n width: 10em;\n }\n}\n","\n.ModifiedIndicator {\n display: inline-block;\n position: relative;\n}\n\n.modified-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n.ProfileSettingIndicator {\n display: inline-block;\n position: relative;\n}\n\n.profilesetting-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n.DraftButtons {\n display: inline-block;\n position: relative;\n\n .button-default {\n margin-left: 0.5em;\n }\n}\n\n.draft-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n.UnitSetting {\n .number-input {\n max-width: 6.5em;\n text-align: right;\n }\n\n .unit-input,\n .unit-input select {\n min-width: 4em;\n width: auto;\n }\n}\n\n","\n.mfa-backup-codes {\n .warning {\n color: var(--cOrange);\n }\n\n .backup-codes {\n font-family: var(--monoFont);\n }\n}\n","\n.mfa-settings {\n .mfa-heading,\n .method-item {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n align-items: baseline;\n }\n\n .warning {\n color: var(--cOrange);\n }\n\n .setup-otp {\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n\n .qr-code {\n flex: 1;\n padding-right: 10px;\n }\n .verify { flex: 1; }\n .error { margin: 4px 0 0; }\n\n .confirm-otp-actions {\n button {\n width: 15em;\n margin-top: 5px;\n }\n }\n }\n}\n","/*!\n * Cropper.js v1.5.13\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2022-11-20T05:30:43.444Z\n */\n\n.cropper-container {\n direction: ltr;\n font-size: 0;\n line-height: 0;\n position: relative;\n -ms-touch-action: none;\n touch-action: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.cropper-container img {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n display: block;\n height: 100%;\n image-orientation: 0deg;\n max-height: none !important;\n max-width: none !important;\n min-height: 0 !important;\n min-width: 0 !important;\n width: 100%;\n }\n\n.cropper-wrap-box,\n.cropper-canvas,\n.cropper-drag-box,\n.cropper-crop-box,\n.cropper-modal {\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.cropper-wrap-box,\n.cropper-canvas {\n overflow: hidden;\n}\n\n.cropper-drag-box {\n background-color: #fff;\n opacity: 0;\n}\n\n.cropper-modal {\n background-color: #000;\n opacity: 0.5;\n}\n\n.cropper-view-box {\n display: block;\n height: 100%;\n outline: 1px solid #39f;\n outline-color: rgba(51, 153, 255, 75%);\n overflow: hidden;\n width: 100%;\n}\n\n.cropper-dashed {\n border: 0 dashed #eee;\n display: block;\n opacity: 0.5;\n position: absolute;\n}\n\n.cropper-dashed.dashed-h {\n border-bottom-width: 1px;\n border-top-width: 1px;\n height: calc(100% / 3);\n left: 0;\n top: calc(100% / 3);\n width: 100%;\n }\n\n.cropper-dashed.dashed-v {\n border-left-width: 1px;\n border-right-width: 1px;\n height: 100%;\n left: calc(100% / 3);\n top: 0;\n width: calc(100% / 3);\n }\n\n.cropper-center {\n display: block;\n height: 0;\n left: 50%;\n opacity: 0.75;\n position: absolute;\n top: 50%;\n width: 0;\n}\n\n.cropper-center::before,\n .cropper-center::after {\n background-color: #eee;\n content: \" \";\n display: block;\n position: absolute;\n }\n\n.cropper-center::before {\n height: 1px;\n left: -3px;\n top: 0;\n width: 7px;\n }\n\n.cropper-center::after {\n height: 7px;\n left: 0;\n top: -3px;\n width: 1px;\n }\n\n.cropper-face,\n.cropper-line,\n.cropper-point {\n display: block;\n height: 100%;\n opacity: 0.1;\n position: absolute;\n width: 100%;\n}\n\n.cropper-face {\n background-color: #fff;\n left: 0;\n top: 0;\n}\n\n.cropper-line {\n background-color: #39f;\n}\n\n.cropper-line.line-e {\n cursor: ew-resize;\n right: -3px;\n top: 0;\n width: 5px;\n }\n\n.cropper-line.line-n {\n cursor: ns-resize;\n height: 5px;\n left: 0;\n top: -3px;\n }\n\n.cropper-line.line-w {\n cursor: ew-resize;\n left: -3px;\n top: 0;\n width: 5px;\n }\n\n.cropper-line.line-s {\n bottom: -3px;\n cursor: ns-resize;\n height: 5px;\n left: 0;\n }\n\n.cropper-point {\n background-color: #39f;\n height: 5px;\n opacity: 0.75;\n width: 5px;\n}\n\n.cropper-point.point-e {\n cursor: ew-resize;\n margin-top: -3px;\n right: -3px;\n top: 50%;\n }\n\n.cropper-point.point-n {\n cursor: ns-resize;\n left: 50%;\n margin-left: -3px;\n top: -3px;\n }\n\n.cropper-point.point-w {\n cursor: ew-resize;\n left: -3px;\n margin-top: -3px;\n top: 50%;\n }\n\n.cropper-point.point-s {\n bottom: -3px;\n cursor: s-resize;\n left: 50%;\n margin-left: -3px;\n }\n\n.cropper-point.point-ne {\n cursor: nesw-resize;\n right: -3px;\n top: -3px;\n }\n\n.cropper-point.point-nw {\n cursor: nwse-resize;\n left: -3px;\n top: -3px;\n }\n\n.cropper-point.point-sw {\n bottom: -3px;\n cursor: nesw-resize;\n left: -3px;\n }\n\n.cropper-point.point-se {\n bottom: -3px;\n cursor: nwse-resize;\n height: 20px;\n opacity: 1;\n right: -3px;\n width: 20px;\n }\n\n@media (min-width: 768px) {\n\n.cropper-point.point-se {\n height: 15px;\n width: 15px;\n }\n }\n\n@media (min-width: 992px) {\n\n.cropper-point.point-se {\n height: 10px;\n width: 10px;\n }\n }\n\n@media (min-width: 1200px) {\n\n.cropper-point.point-se {\n height: 5px;\n opacity: 0.75;\n width: 5px;\n }\n }\n\n.cropper-point.point-se::before {\n background-color: #39f;\n bottom: -50%;\n content: \" \";\n display: block;\n height: 200%;\n opacity: 0;\n position: absolute;\n right: -50%;\n width: 200%;\n }\n\n.cropper-invisible {\n opacity: 0;\n}\n\n.cropper-bg {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC\");\n}\n\n.cropper-hide {\n display: block;\n height: 0;\n position: absolute;\n width: 0;\n}\n\n.cropper-hidden {\n display: none !important;\n}\n\n.cropper-move {\n cursor: move;\n}\n\n.cropper-crop {\n cursor: crosshair;\n}\n\n.cropper-disabled .cropper-drag-box,\n.cropper-disabled .cropper-face,\n.cropper-disabled .cropper-line,\n.cropper-disabled .cropper-point {\n cursor: not-allowed;\n}\n","\n.image-cropper {\n &-img-input {\n display: none;\n }\n\n &-image-container {\n position: relative;\n\n img {\n display: block;\n max-width: 100%;\n }\n }\n\n &-buttons-wrapper {\n margin-top: 10px;\n\n button {\n margin-top: 5px;\n }\n }\n}\n",".profile-tab {\n .bio {\n margin: 0;\n }\n\n .visibility-tray {\n padding-top: 5px;\n }\n\n input[type=\"file\"] {\n padding: 5px;\n height: auto;\n }\n\n .banner-background-preview {\n max-width: 100%;\n width: 300px;\n position: relative;\n\n img {\n width: 100%;\n }\n }\n\n .uploading {\n font-size: 1.5em;\n margin: 0.25em;\n }\n\n .name-changer {\n width: 100%;\n }\n\n .current-avatar-container {\n position: relative;\n width: 150px;\n height: 150px;\n }\n\n .current-avatar {\n display: block;\n width: 100%;\n height: 100%;\n border-radius: var(--roundness);\n }\n\n .reset-button {\n position: absolute;\n top: 0.2em;\n right: 0.2em;\n border-radius: var(--roundness);\n background-color: rgb(0 0 0 / 60%);\n opacity: 0.7;\n width: 1.5em;\n height: 1.5em;\n text-align: center;\n line-height: 1.5em;\n font-size: 1.5em;\n cursor: pointer;\n\n &:hover {\n opacity: 1;\n }\n\n svg {\n color: white;\n }\n }\n\n .oauth-tokens {\n width: 100%;\n\n th {\n text-align: left;\n }\n\n .actions {\n text-align: right;\n }\n }\n\n &-usersearch-wrapper {\n padding: 1em;\n }\n\n &-bulk-actions {\n text-align: right;\n padding: 0 1em;\n min-height: 2em;\n\n button {\n width: 10em;\n }\n }\n\n &-domain-mute-form {\n padding: 1em;\n display: flex;\n flex-direction: column;\n\n button {\n align-self: flex-end;\n margin-top: 1em;\n width: 10em;\n }\n }\n\n .setting-subitem {\n margin-left: 1.75em;\n }\n\n .profile-fields {\n display: flex;\n\n & > .emoji-input {\n flex: 1 1 auto;\n margin: 0 0.2em 0.5em;\n min-width: 0;\n }\n\n .delete-field {\n width: 20px;\n align-self: center;\n margin: 0 0.2em 0.5em;\n padding: 0 0.5em;\n }\n }\n\n .birthday-input {\n display: block;\n margin-bottom: 1em;\n }\n}\n","\n.font-control {\n .custom-font {\n min-width: 20em;\n max-width: 20em;\n }\n}\n\n.invalid-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n.theme-preview-container {\n position: relative;\n border-top: 1px dashed;\n border-bottom: 1px dashed;\n border-color: var(--border);\n margin: 1em 0;\n padding: 1em;\n background-color: var(--wallpaper);\n background-image: var(--body-background-image);\n background-size: cover;\n background-position: 50% 50%;\n\n .theme-preview-content {\n padding: 20px;\n }\n\n .dummy {\n .post {\n font-family: var(--postFont);\n display: flex;\n\n .content {\n flex: 1;\n\n h4 {\n margin-bottom: 0.25em;\n }\n\n .icons {\n margin-top: 0.5em;\n display: flex;\n\n i {\n margin-right: 1em;\n }\n }\n }\n }\n\n .after-post {\n margin-top: 1em;\n display: flex;\n align-items: center;\n }\n\n .avatar,\n .avatar-alt {\n background:\n linear-gradient(\n 135deg,\n #b8e1fc 0%,\n #a9d2f3 10%,\n #90bae4 25%,\n #90bcea 37%,\n #90bff0 50%,\n #6ba8e5 51%,\n #a2daf5 83%,\n #bdf3fd 100%\n );\n color: black;\n font-family: sans-serif;\n text-align: center;\n margin-right: 1em;\n }\n\n .avatar-alt {\n flex: 0 auto;\n margin-left: 28px;\n font-size: 12px;\n min-width: 20px;\n min-height: 20px;\n line-height: 20px;\n }\n\n .avatar {\n flex: 0 auto;\n width: 48px;\n height: 48px;\n font-size: 14px;\n line-height: 48px;\n }\n\n .actions {\n display: flex;\n align-items: baseline;\n\n .checkbox {\n margin-right: 1em;\n flex: 1;\n }\n }\n\n .separator {\n margin: 1em;\n border-bottom: 1px solid;\n border-color: var(--border);\n }\n\n .btn {\n min-width: 3em;\n }\n }\n\n .underlay-preview {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 10px;\n right: 10px;\n }\n}\n ","\n.appearance-tab {\n .theme-notice {\n padding: 0.5em;\n margin: 1em;\n }\n\n .column-settings {\n display: flex;\n justify-content: space-evenly;\n flex-wrap: wrap;\n }\n\n .column-settings .size-label {\n display: block;\n margin-bottom: 0.5em;\n margin-top: 0.5em;\n }\n\n .theme-list {\n list-style: none;\n display: flex;\n flex-wrap: wrap;\n margin: -0.5em 0;\n height: 25em;\n overflow-x: hidden;\n overflow-y: auto;\n scrollbar-gutter: stable;\n border-radius: var(--roundness);\n border: 1px solid var(--border);\n padding: 0;\n\n .theme-preview {\n font-size: 1rem; // fix for firefox\n width: 19rem;\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: 0.5em;\n\n &.placeholder {\n opacity: 0.2;\n }\n\n .theme-preview-container {\n pointer-events: none;\n zoom: 0.5;\n border: none;\n border-radius: var(--roundness);\n text-align: left;\n }\n }\n }\n}\n",".color-input {\n display: inline-flex;\n\n &-field.input {\n display: inline-flex;\n flex: 0 0 0;\n max-width: 9em;\n align-items: stretch;\n padding: 0.2em 8px;\n\n input {\n color: var(--text);\n background: none;\n border: none;\n padding: 0;\n margin: 0;\n\n &.textColor {\n flex: 1 0 3em;\n min-width: 3em;\n padding: 0;\n }\n }\n\n .nativeColor {\n cursor: pointer;\n flex: 0 0 auto;\n\n input {\n appearance: none;\n max-width: 0;\n min-width: 0;\n max-height: 0;\n /* stylelint-disable-next-line declaration-no-important */\n opacity: 0 !important;\n }\n }\n\n .computedIndicator,\n .validIndicator,\n .invalidIndicator,\n .transparentIndicator {\n flex: 0 0 2em;\n margin: 0 0.5em;\n min-width: 2em;\n align-self: stretch;\n min-height: 1.5em;\n border-radius: var(--roundness);\n }\n\n .invalidIndicator {\n background: transparent;\n box-sizing: border-box;\n border: 2px solid var(--cRed);\n }\n\n .transparentIndicator {\n // forgot to install counter-strike source, ooops\n background-color: #f0f;\n position: relative;\n\n &::before,\n &::after {\n display: block;\n content: \"\";\n background-color: #000;\n position: absolute;\n height: 50%;\n width: 50%;\n }\n\n &::after {\n top: 0;\n left: 0;\n border-top-left-radius: var(--roundness);\n }\n\n &::before {\n bottom: 0;\n right: 0;\n border-bottom-right-radius: var(--roundness);\n }\n }\n }\n\n .label {\n flex: 1 1 auto;\n }\n}\n","\n.shadow-control {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n margin-bottom: 1em;\n\n .shadow-preview-container,\n .shadow-tweak {\n margin: 5px 6px 0 0;\n }\n\n .shadow-preview-container {\n flex: 0;\n display: flex;\n flex-wrap: wrap;\n\n input[type=\"number\"] {\n width: 5em;\n min-width: 2em;\n }\n\n .x-shift-control,\n .y-shift-control {\n display: flex;\n flex: 0;\n\n &[disabled=\"disabled\"] * {\n opacity: 0.5;\n }\n }\n\n .x-shift-control {\n align-items: flex-start;\n }\n\n .x-shift-control .wrap,\n input[type=\"range\"] {\n margin: 0;\n width: 15em;\n height: 2em;\n }\n\n .y-shift-control {\n flex-direction: column;\n align-items: flex-end;\n\n .wrap {\n width: 2em;\n height: 15em;\n }\n\n input[type=\"range\"] {\n transform-origin: 1em 1em;\n transform: rotate(90deg);\n }\n }\n\n .preview-window {\n flex: 1;\n background-color: #999;\n display: flex;\n align-items: center;\n justify-content: center;\n background-image:\n linear-gradient(45deg, #666 25%, transparent 25%),\n linear-gradient(-45deg, #666 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, #666 75%),\n linear-gradient(-45deg, transparent 75%, #666 75%);\n background-size: 20px 20px;\n background-position: 0 0, 0 10px, 10px -10px, -10px 0;\n border-radius: var(--roundness);\n\n .preview-block {\n width: 33%;\n height: 33%;\n border-radius: var(--roundness);\n }\n }\n }\n\n .shadow-tweak {\n flex: 1;\n min-width: 280px;\n\n .id-control {\n align-items: stretch;\n\n .shadow-switcher {\n flex: 1;\n }\n\n .shadow-switcher,\n .btn {\n min-width: 1px;\n margin-right: 5px;\n }\n\n .btn {\n padding: 0 0.4em;\n margin: 0 0.1em;\n }\n }\n }\n}\n","\n.contrast-ratio {\n display: flex;\n justify-content: flex-end;\n margin-top: -4px;\n margin-bottom: 5px;\n\n .label {\n margin-right: 1em;\n }\n\n .rating {\n display: inline-block;\n text-align: center;\n margin-left: 0.5em;\n }\n}\n",".theme-tab {\n .deprecation-warning {\n padding: 0.5em;\n margin: 2em;\n }\n\n padding-bottom: 2em;\n\n .preset-switcher {\n margin-right: 1em;\n }\n\n .btn {\n margin-left: 0.25em;\n margin-right: 0.25em;\n }\n\n .btn-group .btn {\n margin: 0;\n }\n\n .style-control {\n display: flex;\n align-items: baseline;\n margin-bottom: 5px;\n\n .label {\n flex: 1;\n }\n\n .opt {\n margin: 0.5em;\n }\n\n .color-input {\n flex: 0 0 0;\n }\n\n input,\n select {\n min-width: 3em;\n margin: 0;\n flex: 0;\n\n &[type=\"number\"] {\n min-width: 5em;\n }\n\n &[type=\"range\"] {\n flex: 1;\n min-width: 3em;\n align-self: flex-start;\n }\n }\n\n &.disabled {\n input,\n select {\n opacity: 0.5;\n }\n }\n }\n\n .reset-container {\n flex-wrap: wrap;\n }\n\n .fonts-container,\n .reset-container,\n .apply-container,\n .radius-container,\n .color-container, {\n display: flex;\n }\n\n .fonts-container,\n .radius-container {\n flex-direction: column;\n }\n\n .color-container {\n > h4 {\n width: 99%;\n }\n\n flex-wrap: wrap;\n justify-content: space-between;\n }\n\n .fonts-container,\n .color-container,\n .shadow-container,\n .radius-container,\n .presets-container {\n margin: 1em 1em 0;\n }\n\n .tab-header {\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n width: 100%;\n min-height: 30px;\n margin-bottom: 1em;\n\n p {\n flex: 1;\n margin: 0;\n margin-right: 0.5em;\n }\n }\n\n .tab-header-buttons {\n display: flex;\n flex-direction: column;\n\n .btn {\n min-width: 1px;\n flex: 0 auto;\n padding: 0 1em;\n margin-bottom: 0.5em;\n }\n }\n\n .shadow-selector {\n .override {\n flex: 1;\n margin-left: 0.5em;\n }\n\n .select-container {\n margin-top: -4px;\n margin-bottom: -3px;\n }\n }\n\n .save-load,\n .save-load-options {\n display: flex;\n justify-content: center;\n align-items: baseline;\n flex-wrap: wrap;\n\n .presets,\n .import-export {\n margin-bottom: 0.5em;\n }\n\n .import-export {\n display: flex;\n }\n\n .override {\n margin-left: 0.5em;\n }\n }\n\n .save-load-options {\n flex-wrap: wrap;\n margin-top: 0.5em;\n justify-content: center;\n\n .keep-option {\n margin: 0 0.5em 0.5em;\n min-width: 25%;\n }\n }\n\n .radius-item {\n flex-basis: auto;\n }\n\n .radius-item,\n .color-item {\n min-width: 20em;\n margin: 5px 6px 0 0;\n display: flex;\n flex-direction: column;\n flex: 1 1 0;\n\n &.wide {\n min-width: 60%;\n }\n\n &:not(.wide):nth-child(2n+1) {\n margin-right: 7px;\n }\n\n .color,\n .opacity {\n display: flex;\n align-items: baseline;\n }\n }\n\n .theme-radius-rn,\n .theme-color-cl {\n border: 0;\n box-shadow: none;\n background: transparent;\n color: var(--textFaint);\n align-self: stretch;\n }\n\n .theme-color-cl,\n .theme-radius-in,\n .theme-color-in {\n margin-left: 4px;\n }\n\n .theme-radius-in {\n min-width: 1em;\n max-width: 7em;\n flex: 1;\n }\n\n .theme-radius-lb {\n max-width: 50em;\n }\n\n .theme-warning {\n display: flex;\n align-items: baseline;\n margin-bottom: 0.5em;\n\n .buttons {\n .btn {\n margin-bottom: 0.5em;\n }\n }\n }\n}\n\n.extra-content {\n .apply-container {\n display: flex;\n flex-direction: row;\n justify-content: space-around;\n flex-grow: 1;\n\n /* stylelint-disable-next-line no-descending-specificity */\n .btn {\n flex-grow: 1;\n min-height: 2em;\n min-width: 0;\n max-width: 10em;\n padding: 0;\n }\n }\n}\n",".settings_tab-switcher {\n height: 100%;\n\n .setting-item {\n border-bottom: 2px solid var(--border);\n margin: 1em 1em 1.4em;\n padding-bottom: 1.4em;\n\n > div,\n > label {\n display: block;\n margin-bottom: 0.5em;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n .select-multiple {\n display: flex;\n\n .option-list {\n margin: 0;\n padding-left: 0.5em;\n }\n }\n\n &:last-child {\n border-bottom: none;\n padding-bottom: 0;\n margin-bottom: 1em;\n }\n\n textarea {\n width: 100%;\n max-width: 100%;\n height: 100px;\n }\n\n .unavailable,\n .unavailable svg {\n color: var(--cRed);\n }\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/static/css/6464.169260b661120cc50815.css b/priv/static/static/css/6464.169260b661120cc50815.css deleted file mode 100644 index 240087a1d2..0000000000 --- a/priv/static/static/css/6464.169260b661120cc50815.css +++ /dev/null @@ -1,2 +0,0 @@ -.UpdateNotification{overflow:hidden}.UpdateNotificationModal{--__top-fringe:15em;--__bottom-fringe:80em;--__right-fringe:8em;font-size:15px;position:relative;transition:transform;transition-duration:.5s;transition-timing-function:ease-in-out}.UpdateNotificationModal .text{max-width:40em;padding-left:1em}@media (max-width:800px){.UpdateNotificationModal{width:100vw}}@media (max-height:600px){.UpdateNotificationModal{display:none}}.UpdateNotificationModal .content{margin-bottom:calc(var(--__bottom-fringe)*-1);margin-right:calc(var(--__right-fringe)*-1);margin-top:calc(var(--__top-fringe)*-1);overflow:hidden}.UpdateNotificationModal .content.-noImage .text{padding-right:var(--__right-fringe)}.UpdateNotificationModal .panel-body{border-color:var(--border,#222);border-style:solid;border-width:0 0 1px}.UpdateNotificationModal .panel-footer{border-width:0;grid-template-columns:auto;position:relative;z-index:22}.UpdateNotificationModal .pleroma-tan{filter:drop-shadow(5px 5px 10px rgba(0,0,0,.5));float:right;-o-object-fit:cover;object-fit:cover;-o-object-position:top;object-position:top;pointer-events:none;position:relative;shape-margin:.5em;transition:position,left,right,top,bottom,max-width,max-height;transition-duration:.5s;transition-timing-function:ease-in-out;width:25em;z-index:20}.UpdateNotificationModal .spacer-top{min-height:var(--__top-fringe)}.UpdateNotificationModal .spacer-bottom{min-height:var(--__bottom-fringe)}.UpdateNotificationModal .extra-info-group{-webkit-mask:linear-gradient(0deg,#fff,transparent) bottom/100% 2px no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff,transparent) bottom/100% 2px no-repeat,linear-gradient(0deg,#fff,#fff);max-height:70vh;transition:max-height,padding,height;transition-duration:.7s;transition-timing-function:ease-in}.UpdateNotificationModal .art-credit{text-align:right}.UpdateNotificationModal.-peek{transform:translateY(calc(50vh - 50%))}.UpdateNotificationModal.-peek .pleroma-tan{float:right;shape-image-threshold:70%;z-index:10}.UpdateNotificationModal.-peek .extra-info-group{max-height:0} -/*# sourceMappingURL=6464.169260b661120cc50815.css.map*/ \ No newline at end of file diff --git a/priv/static/static/css/6464.169260b661120cc50815.css.map b/priv/static/static/css/6464.169260b661120cc50815.css.map deleted file mode 100644 index 048efb2b91..0000000000 --- a/priv/static/static/css/6464.169260b661120cc50815.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/css/6464.169260b661120cc50815.css","mappings":"AAEA,oBACE,gBAGF,yBACE,mBAAoB,CACpB,sBAAuB,CACvB,oBAAqB,CAErB,eACA,kBACA,qBAEA,wBADA,sCACA,CAEA,+BACE,eACA,iBAGF,yBAhBF,yBAqBI,aAGF,0BAxBF,yBAyBI,cAGF,kCAGE,8CACA,4CAFA,wCADA,eAGA,CAGE,iDACE,oCAKN,qCAGE,gCADA,mBADA,oBAEA,CAGF,uCAGE,eACA,2BAFA,kBADA,UAGA,CAGF,sCAWE,gDAJA,YANA,qCACA,2CAUA,oBAHA,kBACA,kBAPA,+DAEA,wBADA,uCAEA,WAEA,UAIA,CAGF,qCACE,+BAGF,wCACE,kCAGF,2CAKE,6GACE,CADF,sGADA,gBAHA,qCAEA,wBADA,kCAIE,CAIJ,qCACE,iBAGF,+BAKE,uCAEA,4CACE,YAEA,0BADA,UACA,CAGF,iDACE","sources":["webpack://pleroma_fe/./src/components/update_notification/update_notification.scss"],"sourcesContent":["@import \"src/variables\";\n\n.UpdateNotification {\n overflow: hidden;\n}\n\n.UpdateNotificationModal {\n --__top-fringe: 15em; // how much pleroma-tan should stick her head above\n --__bottom-fringe: 80em; // just reserving as much as we can, number is mostly irrelevant\n --__right-fringe: 8em;\n\n font-size: 15px;\n position: relative;\n transition: transform;\n transition-timing-function: ease-in-out;\n transition-duration: 500ms;\n\n .text {\n max-width: 40em;\n padding-left: 1em;\n }\n\n @media all and (max-width: 800px) {\n /* For mobile, the modal takes 100% of the available screen.\n This ensures the minimized modal is always 50px above the browser\n bottom bar regardless of whether or not it is visible.\n */\n width: 100vw;\n }\n\n @media all and (max-height: 600px) {\n display: none;\n }\n\n .content {\n overflow: hidden;\n margin-top: calc(-1 * var(--__top-fringe));\n margin-bottom: calc(-1 * var(--__bottom-fringe));\n margin-right: calc(-1 * var(--__right-fringe));\n\n &.-noImage {\n .text {\n padding-right: var(--__right-fringe);\n }\n }\n }\n\n .panel-body {\n border-width: 0 0 1px;\n border-style: solid;\n border-color: var(--border, $fallback--border);\n }\n\n .panel-footer {\n z-index: 22;\n position: relative;\n border-width: 0;\n grid-template-columns: auto;\n }\n\n .pleroma-tan {\n object-fit: cover;\n object-position: top;\n transition: position, left, right, top, bottom, max-width, max-height;\n transition-timing-function: ease-in-out;\n transition-duration: 500ms;\n width: 25em;\n float: right;\n z-index: 20;\n position: relative;\n shape-margin: 0.5em;\n filter: drop-shadow(5px 5px 10px rgb(0 0 0 / 50%));\n pointer-events: none;\n }\n\n .spacer-top {\n min-height: var(--__top-fringe);\n }\n\n .spacer-bottom {\n min-height: var(--__bottom-fringe);\n }\n\n .extra-info-group {\n transition: max-height, padding, height;\n transition-timing-function: ease-in;\n transition-duration: 700ms;\n max-height: 70vh;\n mask:\n linear-gradient(to top, white, transparent) bottom/100% 2px no-repeat,\n linear-gradient(to top, white, white);\n }\n\n .art-credit {\n text-align: right;\n }\n\n &.-peek {\n /* Explanation:\n * 100vh - 100% = Distance between modal's top+bottom boundaries and screen\n * (100vh - 100%) / 2 = Distance between bottom (or top) boundary and screen\n */\n transform: translateY(calc(((100vh - 100%) / 2)));\n\n .pleroma-tan {\n float: right;\n z-index: 10;\n shape-image-threshold: 70%;\n }\n\n .extra-info-group {\n max-height: 0;\n }\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/static/css/6464.7845ee2ccc5e22628b2a.css b/priv/static/static/css/6464.7845ee2ccc5e22628b2a.css new file mode 100644 index 0000000000..d8dc1f9440 --- /dev/null +++ b/priv/static/static/css/6464.7845ee2ccc5e22628b2a.css @@ -0,0 +1,2 @@ +.UpdateNotification{overflow:hidden}.UpdateNotificationModal{--__top-fringe:15em;--__bottom-fringe:80em;--__right-fringe:8em;font-size:15px;position:relative;transition:transform;transition-duration:.5s;transition-timing-function:ease-in-out}.UpdateNotificationModal .text{max-width:40em;padding-left:1em}@media (max-width:800px){.UpdateNotificationModal{width:100vw}}@media (max-height:600px){.UpdateNotificationModal{display:none}}.UpdateNotificationModal .content{margin-bottom:calc(var(--__bottom-fringe)*-1);margin-right:calc(var(--__right-fringe)*-1);margin-top:calc(var(--__top-fringe)*-1);overflow:hidden}.UpdateNotificationModal .content.-noImage .text{padding-right:var(--__right-fringe)}.UpdateNotificationModal .panel-body{border-color:var(--border);border-style:solid;border-width:0 0 1px}.UpdateNotificationModal .panel-footer{border-width:0;grid-template-columns:auto;position:relative;z-index:22}.UpdateNotificationModal .pleroma-tan{filter:drop-shadow(5px 5px 10px rgba(0,0,0,.5));float:right;-o-object-fit:cover;object-fit:cover;-o-object-position:top;object-position:top;pointer-events:none;position:relative;shape-margin:.5em;transition:position,left,right,top,bottom,max-width,max-height;transition-duration:.5s;transition-timing-function:ease-in-out;width:25em;z-index:20}.UpdateNotificationModal .spacer-top{min-height:var(--__top-fringe)}.UpdateNotificationModal .spacer-bottom{min-height:var(--__bottom-fringe)}.UpdateNotificationModal .extra-info-group{-webkit-mask:linear-gradient(0deg,#fff,transparent) bottom/100% 2px no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff,transparent) bottom/100% 2px no-repeat,linear-gradient(0deg,#fff,#fff);max-height:70vh;transition:max-height,padding,height;transition-duration:.7s;transition-timing-function:ease-in}.UpdateNotificationModal .art-credit{text-align:right}.UpdateNotificationModal.-peek{transform:translateY(calc(50vh - 50%))}.UpdateNotificationModal.-peek .pleroma-tan{float:right;shape-image-threshold:70%;z-index:10}.UpdateNotificationModal.-peek .extra-info-group{max-height:0} +/*# sourceMappingURL=6464.7845ee2ccc5e22628b2a.css.map*/ \ No newline at end of file diff --git a/priv/static/static/css/6464.7845ee2ccc5e22628b2a.css.map b/priv/static/static/css/6464.7845ee2ccc5e22628b2a.css.map new file mode 100644 index 0000000000..90d2c8fce7 --- /dev/null +++ b/priv/static/static/css/6464.7845ee2ccc5e22628b2a.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/6464.7845ee2ccc5e22628b2a.css","mappings":"AAAA,oBACE,gBAGF,yBACE,mBAAoB,CACpB,sBAAuB,CACvB,oBAAqB,CAErB,eACA,kBACA,qBAEA,wBADA,sCACA,CAEA,+BACE,eACA,iBAGF,yBAhBF,yBAqBI,aAGF,0BAxBF,yBAyBI,cAGF,kCAGE,8CACA,4CAFA,wCADA,eAGA,CAGE,iDACE,oCAKN,qCAGE,2BADA,mBADA,oBAEA,CAGF,uCAGE,eACA,2BAFA,kBADA,UAGA,CAGF,sCAWE,gDAJA,YANA,qCACA,2CAUA,oBAHA,kBACA,kBAPA,+DAEA,wBADA,uCAEA,WAEA,UAIA,CAGF,qCACE,+BAGF,wCACE,kCAGF,2CAKE,6GACE,CADF,sGADA,gBAHA,qCAEA,wBADA,kCAIE,CAIJ,qCACE,iBAGF,+BAKE,uCAEA,4CACE,YAEA,0BADA,UACA,CAGF,iDACE","sources":["webpack://pleroma_fe/./src/components/update_notification/update_notification.scss"],"sourcesContent":[".UpdateNotification {\n overflow: hidden;\n}\n\n.UpdateNotificationModal {\n --__top-fringe: 15em; // how much pleroma-tan should stick her head above\n --__bottom-fringe: 80em; // just reserving as much as we can, number is mostly irrelevant\n --__right-fringe: 8em;\n\n font-size: 15px;\n position: relative;\n transition: transform;\n transition-timing-function: ease-in-out;\n transition-duration: 500ms;\n\n .text {\n max-width: 40em;\n padding-left: 1em;\n }\n\n @media all and (max-width: 800px) {\n /* For mobile, the modal takes 100% of the available screen.\n This ensures the minimized modal is always 50px above the browser\n bottom bar regardless of whether or not it is visible.\n */\n width: 100vw;\n }\n\n @media all and (max-height: 600px) {\n display: none;\n }\n\n .content {\n overflow: hidden;\n margin-top: calc(-1 * var(--__top-fringe));\n margin-bottom: calc(-1 * var(--__bottom-fringe));\n margin-right: calc(-1 * var(--__right-fringe));\n\n &.-noImage {\n .text {\n padding-right: var(--__right-fringe);\n }\n }\n }\n\n .panel-body {\n border-width: 0 0 1px;\n border-style: solid;\n border-color: var(--border);\n }\n\n .panel-footer {\n z-index: 22;\n position: relative;\n border-width: 0;\n grid-template-columns: auto;\n }\n\n .pleroma-tan {\n object-fit: cover;\n object-position: top;\n transition: position, left, right, top, bottom, max-width, max-height;\n transition-timing-function: ease-in-out;\n transition-duration: 500ms;\n width: 25em;\n float: right;\n z-index: 20;\n position: relative;\n shape-margin: 0.5em;\n filter: drop-shadow(5px 5px 10px rgb(0 0 0 / 50%));\n pointer-events: none;\n }\n\n .spacer-top {\n min-height: var(--__top-fringe);\n }\n\n .spacer-bottom {\n min-height: var(--__bottom-fringe);\n }\n\n .extra-info-group {\n transition: max-height, padding, height;\n transition-timing-function: ease-in;\n transition-duration: 700ms;\n max-height: 70vh;\n mask:\n linear-gradient(to top, white, transparent) bottom/100% 2px no-repeat,\n linear-gradient(to top, white, white);\n }\n\n .art-credit {\n text-align: right;\n }\n\n &.-peek {\n /* Explanation:\n * 100vh - 100% = Distance between modal's top+bottom boundaries and screen\n * (100vh - 100%) / 2 = Distance between bottom (or top) boundary and screen\n */\n transform: translateY(calc(((100vh - 100%) / 2)));\n\n .pleroma-tan {\n float: right;\n z-index: 10;\n shape-image-threshold: 70%;\n }\n\n .extra-info-group {\n max-height: 0;\n }\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/static/css/7586.0d43f70bc6240422f179.css b/priv/static/static/css/7586.0d43f70bc6240422f179.css deleted file mode 100644 index 7da2aa2ea5..0000000000 --- a/priv/static/static/css/7586.0d43f70bc6240422f179.css +++ /dev/null @@ -1,2 +0,0 @@ -.async-component-error{align-items:center;display:flex;height:100%;justify-content:center}.async-component-error .btn{margin:.5em;padding:.5em 2em}.settings-modal{overflow:hidden}.settings-modal .option-list,.settings-modal .setting-list{list-style-type:none;padding-left:2em}.settings-modal .option-list li,.settings-modal .setting-list li{margin-bottom:.5em}.settings-modal .option-list .suboptions,.settings-modal .setting-list .suboptions{margin-top:.3em}.settings-modal .setting-description{font-size:70%;margin-bottom:2em;margin-top:.2em}.settings-modal .settings-modal-panel{height:90vh;max-width:90vw;overflow:hidden;transition:transform;transition-duration:.3s;transition-timing-function:ease-in-out;width:1000px}@media (max-width:800px){.settings-modal .settings-modal-panel{height:100%;max-width:100vw}}.settings-modal .settings-modal-panel>.panel-body{height:100%;overflow-y:hidden}.settings-modal .settings-modal-panel>.panel-body .btn{min-height:2em}.settings-modal .settings-modal-panel>.panel-body .btn:not(.dropdown-button){padding:0 2em}.settings-modal .settings-footer{display:flex;flex-wrap:wrap;line-height:2}.settings-modal .settings-footer>*{margin-right:.5em}.settings-modal .settings-footer .extra-content{display:flex;flex-grow:1}.settings-modal.peek .settings-modal-panel{transform:translateY(calc(50vh + 50% - 50px))}@media (max-width:800px){.settings-modal.peek .settings-modal-panel{transform:translateY(calc(100% - 50px))}} -/*# sourceMappingURL=7586.0d43f70bc6240422f179.css.map*/ \ No newline at end of file diff --git a/priv/static/static/css/7586.0d43f70bc6240422f179.css.map b/priv/static/static/css/7586.0d43f70bc6240422f179.css.map deleted file mode 100644 index f8f61fe6ef..0000000000 --- a/priv/static/static/css/7586.0d43f70bc6240422f179.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/css/7586.0d43f70bc6240422f179.css","mappings":"AACA,uBAGE,mBAFA,aACA,YAEA,uBAEA,4BACE,YACA,iBCPJ,gBACE,gBAEA,2DAEE,qBACA,iBAEA,iEACE,mBAGF,mFACE,gBAIJ,qCAGE,cADA,kBADA,eAEA,CAGF,sCAOE,YADA,eALA,gBACA,qBAEA,wBADA,uCAEA,YAEA,CAEA,yBATF,sCAWI,YADA,eACA,EAGF,kDACE,YACA,kBAEA,uDACE,eAGF,6EACE,cAKN,iCACE,aACA,eACA,cAEA,mCACE,kBAGF,gDACE,aACA,YAKF,2CASE,8CAEA,yBAXF,2CAgBI","sources":["webpack://pleroma_fe/./src/components/async_component_error/async_component_error.vue","webpack://pleroma_fe/./src/components/settings_modal/settings_modal.scss"],"sourcesContent":["\n.async-component-error {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n\n .btn {\n margin: 0.5em;\n padding: 0.5em 2em;\n }\n}\n","@import \"src/variables\";\n\n.settings-modal {\n overflow: hidden;\n\n .setting-list,\n .option-list {\n list-style-type: none;\n padding-left: 2em;\n\n li {\n margin-bottom: 0.5em;\n }\n\n .suboptions {\n margin-top: 0.3em;\n }\n }\n\n .setting-description {\n margin-top: 0.2em;\n margin-bottom: 2em;\n font-size: 70%;\n }\n\n .settings-modal-panel {\n overflow: hidden;\n transition: transform;\n transition-timing-function: ease-in-out;\n transition-duration: 300ms;\n width: 1000px;\n max-width: 90vw;\n height: 90vh;\n\n @media all and (max-width: 800px) {\n max-width: 100vw;\n height: 100%;\n }\n\n >.panel-body {\n height: 100%;\n overflow-y: hidden;\n\n .btn {\n min-height: 2em;\n }\n\n .btn:not(.dropdown-button) {\n padding: 0 2em;\n }\n }\n }\n\n .settings-footer {\n display: flex;\n flex-wrap: wrap;\n line-height: 2;\n\n >* {\n margin-right: 0.5em;\n }\n\n .extra-content {\n display: flex;\n flex-grow: 1;\n }\n }\n\n &.peek {\n .settings-modal-panel {\n /* Explanation:\n * Modal is positioned vertically centered.\n * 100vh - 100% = Distance between modal's top+bottom boundaries and screen\n * (100vh - 100%) / 2 = Distance between bottom (or top) boundary and screen\n * + 100% - we move modal completely off-screen, it's top boundary touches\n * bottom of the screen\n * - 50px - leaving tiny amount of space so that titlebar + tiny amount of modal is visible\n */\n transform: translateY(calc(((100vh - 100%) / 2 + 100%) - 50px));\n\n @media all and (max-width: 800px) {\n /* For mobile, the modal takes 100% of the available screen.\n This ensures the minimized modal is always 50px above the browser bottom\n bar regardless of whether or not it is visible.\n */\n transform: translateY(calc(100% - 50px));\n }\n }\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/static/css/7594.a8030565c3ef463dc1de.css b/priv/static/static/css/7594.a8030565c3ef463dc1de.css new file mode 100644 index 0000000000..90225e2c04 --- /dev/null +++ b/priv/static/static/css/7594.a8030565c3ef463dc1de.css @@ -0,0 +1,2 @@ +.async-component-error{align-items:center;display:flex;height:100%;justify-content:center}.async-component-error .btn{margin:.5em;padding:.5em 2em}.settings-modal{overflow:hidden}.settings-modal h4{margin-bottom:.5em}.settings-modal .option-list,.settings-modal .setting-list{list-style-type:none;padding-left:2em}.settings-modal .option-list li,.settings-modal .setting-list li{margin-bottom:.5em}.settings-modal .option-list .suboptions,.settings-modal .setting-list .suboptions{margin-top:.3em}.settings-modal .option-list.two-column,.settings-modal .setting-list.two-column{-moz-column-count:2;column-count:2}.settings-modal .option-list.two-column>li,.settings-modal .setting-list.two-column>li{-moz-column-break-inside:avoid;break-inside:avoid}.settings-modal .setting-description{font-size:70%;margin-bottom:2em;margin-top:.2em}.settings-modal .settings-modal-panel{height:90vh;max-width:90vw;overflow:hidden;transition:transform;transition-duration:.3s;transition-timing-function:ease-in-out;width:1000px}@media (max-width:800px){.settings-modal .settings-modal-panel{height:100%;max-width:100vw}}.settings-modal .settings-modal-panel>.panel-body{height:100%;overflow-y:hidden}.settings-modal .settings-modal-panel>.panel-body .btn{min-height:2em}.settings-modal .settings-modal-panel>.panel-body .btn:not(.dropdown-button){padding:0 2em}.settings-modal .settings-footer{display:flex;flex-wrap:wrap;line-height:2}.settings-modal .settings-footer>*{margin-right:.5em}.settings-modal .settings-footer .extra-content{display:flex;flex-grow:1}.settings-modal.peek .settings-modal-panel{transform:translateY(calc(50vh + 50% - 50px))}@media (max-width:800px){.settings-modal.peek .settings-modal-panel{transform:translateY(calc(100% - 50px))}} +/*# sourceMappingURL=7594.a8030565c3ef463dc1de.css.map*/ \ No newline at end of file diff --git a/priv/static/static/css/7594.a8030565c3ef463dc1de.css.map b/priv/static/static/css/7594.a8030565c3ef463dc1de.css.map new file mode 100644 index 0000000000..8db316a71f --- /dev/null +++ b/priv/static/static/css/7594.a8030565c3ef463dc1de.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/7594.a8030565c3ef463dc1de.css","mappings":"AACA,uBAGE,mBAFA,aACA,YAEA,uBAEA,4BACE,YACA,iBCTJ,gBACE,gBAEA,mBACE,mBAGF,2DAEE,qBACA,iBAEA,iEACE,mBAGF,mFACE,gBAGF,iFACE,mCAEA,uFACE,kDAKN,qCAGE,cADA,kBADA,eAEA,CAGF,sCAOE,YADA,eALA,gBACA,qBAEA,wBADA,uCAEA,YAEA,CAEA,yBATF,sCAWI,YADA,eACA,EAGF,kDACE,YACA,kBAEA,uDACE,eAGF,6EACE,cAKN,iCACE,aACA,eACA,cAEA,mCACE,kBAGF,gDACE,aACA,YAKF,2CASE,8CAEA,yBAXF,2CAgBI","sources":["webpack://pleroma_fe/./src/components/async_component_error/async_component_error.vue","webpack://pleroma_fe/./src/components/settings_modal/settings_modal.scss"],"sourcesContent":["\n.async-component-error {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n\n .btn {\n margin: 0.5em;\n padding: 0.5em 2em;\n }\n}\n",".settings-modal {\n overflow: hidden;\n\n h4 {\n margin-bottom: 0.5em;\n }\n\n .setting-list,\n .option-list {\n list-style-type: none;\n padding-left: 2em;\n\n li {\n margin-bottom: 0.5em;\n }\n\n .suboptions {\n margin-top: 0.3em;\n }\n\n &.two-column {\n column-count: 2;\n\n > li {\n break-inside: avoid;\n }\n }\n }\n\n .setting-description {\n margin-top: 0.2em;\n margin-bottom: 2em;\n font-size: 70%;\n }\n\n .settings-modal-panel {\n overflow: hidden;\n transition: transform;\n transition-timing-function: ease-in-out;\n transition-duration: 300ms;\n width: 1000px;\n max-width: 90vw;\n height: 90vh;\n\n @media all and (max-width: 800px) {\n max-width: 100vw;\n height: 100%;\n }\n\n >.panel-body {\n height: 100%;\n overflow-y: hidden;\n\n .btn {\n min-height: 2em;\n }\n\n .btn:not(.dropdown-button) {\n padding: 0 2em;\n }\n }\n }\n\n .settings-footer {\n display: flex;\n flex-wrap: wrap;\n line-height: 2;\n\n >* {\n margin-right: 0.5em;\n }\n\n .extra-content {\n display: flex;\n flex-grow: 1;\n }\n }\n\n &.peek {\n .settings-modal-panel {\n /* Explanation:\n * Modal is positioned vertically centered.\n * 100vh - 100% = Distance between modal's top+bottom boundaries and screen\n * (100vh - 100%) / 2 = Distance between bottom (or top) boundary and screen\n * + 100% - we move modal completely off-screen, it's top boundary touches\n * bottom of the screen\n * - 50px - leaving tiny amount of space so that titlebar + tiny amount of modal is visible\n */\n transform: translateY(calc(((100vh - 100%) / 2 + 100%) - 50px));\n\n @media all and (max-width: 800px) {\n /* For mobile, the modal takes 100% of the available screen.\n This ensures the minimized modal is always 50px above the browser bottom\n bar regardless of whether or not it is visible.\n */\n transform: translateY(calc(100% - 50px));\n }\n }\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/static/css/7962.76663e78ad5ea0bb0b90.css b/priv/static/static/css/7962.76663e78ad5ea0bb0b90.css deleted file mode 100644 index 2326ed9323..0000000000 --- a/priv/static/static/css/7962.76663e78ad5ea0bb0b90.css +++ /dev/null @@ -1,11 +0,0 @@ -.importer-uploading{font-size:1.5em;margin:.25em}.exporter-processing{margin:.25em}.autosuggest{position:relative}.autosuggest-input{display:block;width:100%}.autosuggest-results{background-color:#121a24;background-color:var(--bg,#121a24);border:1px solid #222;border-color:var(--border,#222);border-radius:4px;border-radius:var(--inputRadius,4px);border-top-left-radius:0;border-top-right-radius:0;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);left:0;max-height:400px;overflow-y:auto;position:absolute;right:0;top:100%;z-index:1}.block-card-content-container{margin-top:.5em;text-align:right}.block-card-content-container button{width:10em}.mute-card-content-container{margin-top:.5em;text-align:right}.mute-card-content-container button{width:10em}.domain-mute-card{align-items:center;display:flex;flex:1 0;justify-content:space-between;padding:.6em 1em .6em 0}.domain-mute-card-domain{margin-right:1em;overflow:hidden;text-overflow:ellipsis}.domain-mute-card button{width:10em}.autosuggest-results .domain-mute-card{padding-left:1em}.selectable-list-item-inner{align-items:center;display:flex}.selectable-list-item-inner>*{min-width:0}.selectable-list-item-selected-inner{--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);--icon:var(--selectedMenuIcon,$fallback--icon);background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);color:var(--selectedMenuText,#b9b9ba)}.selectable-list-header{align-items:center;border-bottom:2px solid #222;border-bottom-color:var(--border,#222);display:flex;padding:.6em 0}.selectable-list-header-actions{flex:1}.selectable-list-checkbox-wrapper{flex:none;padding:0 10px}.with-subscription-loading{padding:10px;text-align:center}.with-subscription-loading .error{font-size:1rem}.mutes-and-blocks-tab{height:100%}.mutes-and-blocks-tab .usersearch-wrapper{padding:1em}.mutes-and-blocks-tab .bulk-actions{min-height:2em;padding:0 1em;text-align:right}.mutes-and-blocks-tab .bulk-action-button{width:10em}.mutes-and-blocks-tab .domain-mute-form{display:flex;flex-direction:column;padding:1em}.mutes-and-blocks-tab .domain-mute-button{align-self:flex-end;margin-top:1em;width:10em}.ModifiedIndicator{display:inline-block;position:relative}.modified-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.ProfileSettingIndicator{display:inline-block;position:relative}.profilesetting-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.DraftButtons{display:inline-block;position:relative}.DraftButtons .button-default{margin-left:.5em}.draft-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.mfa-backup-codes .warning{color:orange;color:var(--cOrange,orange)}.mfa-backup-codes .backup-codes{font-family:var(--postCodeFont,monospace)}.mfa-settings .method-item,.mfa-settings .mfa-heading{align-items:baseline;display:flex;flex-wrap:wrap;justify-content:space-between}.mfa-settings .warning{color:orange;color:var(--cOrange,orange)}.mfa-settings .setup-otp{display:flex;flex-wrap:wrap;justify-content:center}.mfa-settings .setup-otp .qr-code{flex:1;padding-right:10px}.mfa-settings .setup-otp .verify{flex:1}.mfa-settings .setup-otp .error{margin:4px 0 0}.mfa-settings .setup-otp .confirm-otp-actions button{margin-top:5px;width:15em} -/*! - * Cropper.js v1.5.13 - * https://fengyuanchen.github.io/cropperjs - * - * Copyright 2015-present Chen Fengyuan - * Released under the MIT license - * - * Date: 2022-11-20T05:30:43.444Z - */.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{bottom:0;left:0;position:absolute;right:0;top:0}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:rgba(51,153,255,.75);overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.image-cropper-img-input{display:none}.image-cropper-image-container{position:relative}.image-cropper-image-container img{display:block;max-width:100%}.image-cropper-buttons-wrapper{margin-top:10px}.image-cropper-buttons-wrapper button{margin-top:5px}.profile-tab .bio{margin:0}.profile-tab .visibility-tray{padding-top:5px}.profile-tab input[type=file]{height:auto;padding:5px}.profile-tab .banner-background-preview{max-width:100%;position:relative;width:300px}.profile-tab .banner-background-preview img{width:100%}.profile-tab .uploading{font-size:1.5em;margin:.25em}.profile-tab .name-changer{width:100%}.profile-tab .current-avatar-container{height:150px;position:relative;width:150px}.profile-tab .current-avatar{border-radius:4px;border-radius:var(--avatarRadius,4px);display:block;height:100%;width:100%}.profile-tab .reset-button{background-color:rgba(0,0,0,.6);border-radius:5px;border-radius:var(--tooltipRadius,5px);cursor:pointer;font-size:1.5em;height:1.5em;line-height:1.5em;opacity:.7;position:absolute;right:.2em;text-align:center;top:.2em;width:1.5em}.profile-tab .reset-button:hover{opacity:1}.profile-tab .reset-button svg{color:#fff}.profile-tab .oauth-tokens{width:100%}.profile-tab .oauth-tokens th{text-align:left}.profile-tab .oauth-tokens .actions{text-align:right}.profile-tab-usersearch-wrapper{padding:1em}.profile-tab-bulk-actions{min-height:2em;padding:0 1em;text-align:right}.profile-tab-bulk-actions button{width:10em}.profile-tab-domain-mute-form{display:flex;flex-direction:column;padding:1em}.profile-tab-domain-mute-form button{align-self:flex-end;margin-top:1em;width:10em}.profile-tab .setting-subitem{margin-left:1.75em}.profile-tab .profile-fields{display:flex}.profile-tab .profile-fields>.emoji-input{flex:1 1 auto;margin:0 .2em .5em;min-width:0}.profile-tab .profile-fields .delete-field{align-self:center;margin:0 .2em .5em;padding:0 .5em;width:20px}.profile-tab .birthday-input{display:block;margin-bottom:1em}.SizeSetting .number-input{max-width:6.5em}.SizeSetting .css-unit-input,.SizeSetting .css-unit-input select{margin-left:.5em;max-width:4em;min-width:4em;width:4em}.column-settings{display:flex;flex-wrap:wrap;justify-content:space-evenly}.column-settings .size-label{display:block;margin-bottom:.5em;margin-top:.5em}.color-input{display:inline-flex}.color-input-field.input{align-items:stretch;display:inline-flex;flex:0 0 0;max-width:9em;padding:.2em 8px}.color-input-field.input input{background:none;border:none;color:#b9b9ba;color:var(--inputText,#b9b9ba);margin:0;padding:0}.color-input-field.input input.textColor{flex:1 0 3em;min-width:3em;padding:0}.color-input-field.input .computedIndicator,.color-input-field.input .transparentIndicator,.color-input-field.input input.nativeColor{align-self:stretch;flex:0 0 2em;min-height:100%;min-width:2em}.color-input-field.input .transparentIndicator{background-color:#f0f;position:relative}.color-input-field.input .transparentIndicator:after,.color-input-field.input .transparentIndicator:before{background-color:#000;content:"";display:block;height:50%;position:absolute;width:50%}.color-input-field.input .transparentIndicator:after{left:0;top:0}.color-input-field.input .transparentIndicator:before{bottom:0;right:0}.color-input .label{flex:1 1 auto}.color-control input.text-input{flex:1;max-width:7em}.shadow-control{display:flex;flex-wrap:wrap;justify-content:center;margin-bottom:1em}.shadow-control .shadow-preview-container,.shadow-control .shadow-tweak{margin:5px 6px 0 0}.shadow-control .shadow-preview-container{display:flex;flex:0;flex-wrap:wrap}.shadow-control .shadow-preview-container input[type=number]{min-width:2em;width:5em}.shadow-control .shadow-preview-container .x-shift-control,.shadow-control .shadow-preview-container .y-shift-control{display:flex;flex:0}.shadow-control .shadow-preview-container .x-shift-control[disabled=disabled] *,.shadow-control .shadow-preview-container .y-shift-control[disabled=disabled] *{opacity:.5}.shadow-control .shadow-preview-container .x-shift-control{align-items:flex-start}.shadow-control .shadow-preview-container .x-shift-control .wrap,.shadow-control .shadow-preview-container input[type=range]{height:2em;margin:0;width:15em}.shadow-control .shadow-preview-container .y-shift-control{align-items:flex-end;flex-direction:column}.shadow-control .shadow-preview-container .y-shift-control .wrap{height:15em;width:2em}.shadow-control .shadow-preview-container .y-shift-control input[type=range]{transform:rotate(90deg);transform-origin:1em 1em}.shadow-control .shadow-preview-container .preview-window{align-items:center;background-color:#999;background-image:linear-gradient(45deg,#666 25%,transparent 0),linear-gradient(-45deg,#666 25%,transparent 0),linear-gradient(45deg,transparent 75%,#666 0),linear-gradient(-45deg,transparent 75%,#666 0);background-position:0 0,0 10px,10px -10px,-10px 0;background-size:20px 20px;border-radius:4px;border-radius:var(--inputRadius,4px);display:flex;flex:1;justify-content:center}.shadow-control .shadow-preview-container .preview-window .preview-block{background-color:#121a24;background-color:var(--bg,#121a24);border-radius:10px;border-radius:var(--panelRadius,10px);height:33%;width:33%}.shadow-control .shadow-tweak{flex:1;min-width:280px}.shadow-control .shadow-tweak .id-control{align-items:stretch}.shadow-control .shadow-tweak .id-control .shadow-switcher{flex:1}.shadow-control .shadow-tweak .id-control .btn,.shadow-control .shadow-tweak .id-control .shadow-switcher{margin-right:5px;min-width:1px}.shadow-control .shadow-tweak .id-control .btn{margin:0 .1em;padding:0 .4em}.font-control input.custom-font{min-width:10em}.font-control.custom .font-switcher{border-bottom-right-radius:0;border-top-right-radius:0}.font-control.custom .custom-font{border-bottom-left-radius:0;border-top-left-radius:0}.contrast-ratio{display:flex;justify-content:flex-end;margin-bottom:5px;margin-top:-4px}.contrast-ratio .label{margin-right:1em}.contrast-ratio .rating{display:inline-block;margin-left:.5em;text-align:center}.preview-container{position:relative}.underlay-preview{bottom:0;left:10px;position:absolute;right:10px;top:0}.theme-tab{padding-bottom:2em}.theme-tab .preset-switcher{margin-right:1em}.theme-tab .btn{margin-left:.25em;margin-right:.25em}.theme-tab .style-control{align-items:baseline;display:flex;margin-bottom:5px}.theme-tab .style-control .label{flex:1}.theme-tab .style-control .opt{margin:.5em}.theme-tab .style-control .color-input{flex:0 0 0}.theme-tab .style-control input,.theme-tab .style-control select{flex:0;margin:0;min-width:3em}.theme-tab .style-control input[type=number],.theme-tab .style-control select[type=number]{min-width:5em}.theme-tab .style-control input[type=range],.theme-tab .style-control select[type=range]{align-self:flex-start;flex:1;min-width:3em}.theme-tab .style-control.disabled input,.theme-tab .style-control.disabled select{opacity:.5}.theme-tab .reset-container{flex-wrap:wrap}.theme-tab .apply-container,.theme-tab .color-container,.theme-tab .fonts-container,.theme-tab .radius-container,.theme-tab .reset-container{display:flex}.theme-tab .fonts-container,.theme-tab .radius-container{flex-direction:column}.theme-tab .color-container{flex-wrap:wrap;justify-content:space-between}.theme-tab .color-container>h4{width:99%}.theme-tab .color-container,.theme-tab .fonts-container,.theme-tab .presets-container,.theme-tab .radius-container,.theme-tab .shadow-container{margin:1em 1em 0}.theme-tab .tab-header{align-items:baseline;display:flex;justify-content:space-between;margin-bottom:1em;min-height:30px;width:100%}.theme-tab .tab-header p{flex:1;margin:0 .5em 0 0}.theme-tab .tab-header-buttons{display:flex;flex-direction:column}.theme-tab .tab-header-buttons .btn{flex:0 auto;margin-bottom:.5em;min-width:1px;padding:0 1em}.theme-tab .shadow-selector .override{flex:1;margin-left:.5em}.theme-tab .shadow-selector .select-container{margin-bottom:-3px;margin-top:-4px}.theme-tab .save-load,.theme-tab .save-load-options{align-items:baseline;display:flex;flex-wrap:wrap;justify-content:center}.theme-tab .save-load .import-export,.theme-tab .save-load .presets,.theme-tab .save-load-options .import-export,.theme-tab .save-load-options .presets{margin-bottom:.5em}.theme-tab .save-load .import-export,.theme-tab .save-load-options .import-export{display:flex}.theme-tab .save-load .override,.theme-tab .save-load-options .override{margin-left:.5em}.theme-tab .save-load-options{flex-wrap:wrap;justify-content:center;margin-top:.5em}.theme-tab .save-load-options .keep-option{margin:0 .5em .5em;min-width:25%}.theme-tab .preview-container{background-color:var(--wallpaper);background-image:var(--body-background-image);background-position:50% 50%;background-size:cover;border-bottom:1px dashed #222;border-color:#222 currentcolor;border-top:1px dashed #222;border-color:var(--border,#222);margin:1em 0;padding:1em}.theme-tab .preview-container .dummy .post{display:flex;font-family:var(--postFont)}.theme-tab .preview-container .dummy .post .content{flex:1}.theme-tab .preview-container .dummy .post .content h4{margin-bottom:.25em}.theme-tab .preview-container .dummy .post .content .icons{display:flex;margin-top:.5em}.theme-tab .preview-container .dummy .post .content .icons i{margin-right:1em}.theme-tab .preview-container .dummy .after-post{align-items:center;display:flex;margin-top:1em}.theme-tab .preview-container .dummy .avatar,.theme-tab .preview-container .dummy .avatar-alt{background:linear-gradient(135deg,#b8e1fc,#a9d2f3 10%,#90bae4 25%,#90bcea 37%,#90bff0 50%,#6ba8e5 51%,#a2daf5 83%,#bdf3fd);color:#000;font-family:sans-serif;margin-right:1em;text-align:center}.theme-tab .preview-container .dummy .avatar-alt{border-radius:10px;border-radius:var(--avatarAltRadius,10px);flex:0 auto;font-size:12px;line-height:20px;margin-left:28px;min-height:20px;min-width:20px}.theme-tab .preview-container .dummy .avatar{flex:0 auto;font-size:14px;height:48px;line-height:48px;width:48px}.theme-tab .preview-container .dummy .actions{align-items:baseline;display:flex}.theme-tab .preview-container .dummy .actions .checkbox{align-items:baseline;display:inline-flex;flex:1;margin-right:1em}.theme-tab .preview-container .dummy .separator{border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);margin:1em}.theme-tab .preview-container .dummy .btn{min-width:3em}.theme-tab .radius-item{flex-basis:auto}.theme-tab .color-item,.theme-tab .radius-item{display:flex;flex:1 1 0;flex-direction:column;margin:5px 6px 0 0;min-width:20em}.theme-tab .color-item.wide,.theme-tab .radius-item.wide{min-width:60%}.theme-tab .color-item:not(.wide):nth-child(odd),.theme-tab .radius-item:not(.wide):nth-child(odd){margin-right:7px}.theme-tab .color-item .color,.theme-tab .color-item .opacity,.theme-tab .radius-item .color,.theme-tab .radius-item .opacity{align-items:baseline;display:flex}.theme-tab .theme-color-cl,.theme-tab .theme-radius-rn{align-self:stretch;background:transparent;border:0;box-shadow:none;color:var(--faint,hsla(240,1%,73%,.5))}.theme-tab .theme-color-cl,.theme-tab .theme-color-in,.theme-tab .theme-radius-in{margin-left:4px}.theme-tab .theme-radius-in{flex:1;max-width:7em;min-width:1em}.theme-tab .theme-radius-lb{max-width:50em}.theme-tab .theme-preview-content{padding:20px}.theme-tab .theme-warning{align-items:baseline;display:flex;margin-bottom:.5em}.theme-tab .theme-warning .buttons .btn{margin-bottom:.5em}.extra-content .apply-container{display:flex;flex-direction:row;flex-grow:1;justify-content:space-around}.extra-content .apply-container .btn{flex-grow:1;max-width:10em;min-height:2em;min-width:0;padding:0}.settings_tab-switcher{height:100%}.settings_tab-switcher .setting-item{border-bottom:2px solid var(--fg,#182230);margin:1em 1em 1.4em;padding-bottom:1.4em}.settings_tab-switcher .setting-item>div,.settings_tab-switcher .setting-item>label{display:block;margin-bottom:.5em}.settings_tab-switcher .setting-item>div:last-child,.settings_tab-switcher .setting-item>label:last-child{margin-bottom:0}.settings_tab-switcher .setting-item .select-multiple{display:flex}.settings_tab-switcher .setting-item .select-multiple .option-list{margin:0;padding-left:.5em}.settings_tab-switcher .setting-item:last-child{border-bottom:none;margin-bottom:1em;padding-bottom:0}.settings_tab-switcher .setting-item select{min-width:10em}.settings_tab-switcher .setting-item textarea{height:100px;max-width:100%;width:100%}.settings_tab-switcher .setting-item .unavailable,.settings_tab-switcher .setting-item .unavailable svg{color:var(--cRed,red);color:red} -/*# sourceMappingURL=7962.76663e78ad5ea0bb0b90.css.map*/ \ No newline at end of file diff --git a/priv/static/static/css/7962.76663e78ad5ea0bb0b90.css.map b/priv/static/static/css/7962.76663e78ad5ea0bb0b90.css.map deleted file mode 100644 index 9d501f27a0..0000000000 --- a/priv/static/static/css/7962.76663e78ad5ea0bb0b90.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/css/7962.76663e78ad5ea0bb0b90.css","mappings":"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","sources":["webpack://pleroma_fe/./src/components/importer/importer.vue","webpack://pleroma_fe/./src/components/exporter/exporter.vue","webpack://pleroma_fe/./src/components/autosuggest/autosuggest.vue","webpack://pleroma_fe/./src/_variables.scss","webpack://pleroma_fe/./src/components/block_card/block_card.vue","webpack://pleroma_fe/./src/components/mute_card/mute_card.vue","webpack://pleroma_fe/./src/components/domain_mute_card/domain_mute_card.vue","webpack://pleroma_fe/./src/components/selectable_list/selectable_list.vue","webpack://pleroma_fe/./src/hocs/with_subscription/with_subscription.scss","webpack://pleroma_fe/./src/components/settings_modal/tabs/mutes_and_blocks_tab.scss","webpack://pleroma_fe/./src/components/settings_modal/helpers/modified_indicator.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/profile_setting_indicator.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/draft_buttons.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa_backup_codes.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa.vue","webpack://pleroma_fe/./node_modules/cropperjs/dist/cropper.css","webpack://pleroma_fe/./src/components/image_cropper/image_cropper.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/profile_tab.scss","webpack://pleroma_fe/./src/components/settings_modal/helpers/size_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/general_tab.vue","webpack://pleroma_fe/./src/components/color_input/color_input.scss","webpack://pleroma_fe/./src/components/color_input/color_input.vue","webpack://pleroma_fe/./src/components/shadow_control/shadow_control.vue","webpack://pleroma_fe/./src/components/font_control/font_control.vue","webpack://pleroma_fe/./src/components/contrast_ratio/contrast_ratio.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/theme_tab/preview.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/theme_tab/theme_tab.scss","webpack://pleroma_fe/./src/components/settings_modal/settings_modal_user_content.scss"],"sourcesContent":["\n.importer {\n &-uploading {\n font-size: 1.5em;\n margin: 0.25em;\n }\n}\n","\n.exporter {\n &-processing {\n margin: 0.25em;\n }\n}\n","\n@import \"../../variables\";\n\n.autosuggest {\n position: relative;\n\n &-input {\n display: block;\n width: 100%;\n }\n\n &-results {\n position: absolute;\n left: 0;\n top: 100%;\n right: 0;\n max-height: 400px;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-style: solid;\n border-width: 1px;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n overflow-y: auto;\n z-index: 1;\n }\n}\n","$main-color: #f58d2c;\n$main-background: white;\n$darkened-background: whitesmoke;\n\n$fallback--bg: #121a24;\n$fallback--fg: #182230;\n$fallback--faint: rgb(185 185 186 / 50%);\n$fallback--text: #b9b9ba;\n$fallback--link: #d8a070;\n$fallback--icon: #666;\n$fallback--lightBg: rgb(21 30 42);\n$fallback--lightText: #b9b9ba;\n$fallback--border: #222;\n$fallback--cRed: #f00;\n$fallback--cBlue: #0095ff;\n$fallback--cGreen: #0fa00f;\n$fallback--cOrange: orange;\n\n$fallback--alertError: rgb(211 16 20 / 50%);\n$fallback--alertWarning: rgb(111 111 20 / 50%);\n\n$fallback--panelRadius: 10px;\n$fallback--checkboxRadius: 2px;\n$fallback--btnRadius: 4px;\n$fallback--inputRadius: 4px;\n$fallback--tooltipRadius: 5px;\n$fallback--avatarRadius: 4px;\n$fallback--avatarAltRadius: 10px;\n$fallback--attachmentRadius: 10px;\n$fallback--chatMessageRadius: 10px;\n\n$fallback--buttonShadow: 0 0 2px 0 rgb(0 0 0 / 100%),\n 0 1px 0 0 rgb(255 255 255 / 20%) inset,\n 0 -1px 0 0 rgb(0 0 0 / 20%) inset;\n\n$status-margin: 0.75em;\n","\n.block-card-content-container {\n margin-top: 0.5em;\n text-align: right;\n\n button {\n width: 10em;\n }\n}\n","\n.mute-card-content-container {\n margin-top: 0.5em;\n text-align: right;\n\n button {\n width: 10em;\n }\n}\n","\n.domain-mute-card {\n flex: 1 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.6em 1em 0.6em 0;\n\n &-domain {\n margin-right: 1em;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n button {\n width: 10em;\n }\n\n .autosuggest-results & {\n padding-left: 1em;\n }\n}\n","\n@import \"../../variables\";\n\n.selectable-list {\n &-item-inner {\n display: flex;\n align-items: center;\n\n > * {\n min-width: 0;\n }\n }\n\n &-item-selected-inner {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: var(--selectedMenuText, $fallback--text);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n }\n\n &-header {\n display: flex;\n align-items: center;\n padding: 0.6em 0;\n border-bottom: 2px solid;\n border-bottom-color: $fallback--border;\n border-bottom-color: var(--border, $fallback--border);\n\n &-actions {\n flex: 1;\n }\n }\n\n &-checkbox-wrapper {\n padding: 0 10px;\n flex: none;\n }\n}\n",".with-subscription {\n &-loading {\n padding: 10px;\n text-align: center;\n\n .error {\n font-size: 1rem;\n }\n }\n}\n",".mutes-and-blocks-tab {\n height: 100%;\n\n .usersearch-wrapper {\n padding: 1em;\n }\n\n .bulk-actions {\n text-align: right;\n padding: 0 1em;\n min-height: 2em;\n }\n\n .bulk-action-button {\n width: 10em;\n }\n\n .domain-mute-form {\n padding: 1em;\n display: flex;\n flex-direction: column;\n }\n\n .domain-mute-button {\n align-self: flex-end;\n margin-top: 1em;\n width: 10em;\n }\n}\n","\n.ModifiedIndicator {\n display: inline-block;\n position: relative;\n}\n\n.modified-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n.ProfileSettingIndicator {\n display: inline-block;\n position: relative;\n}\n\n.profilesetting-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n.DraftButtons {\n display: inline-block;\n position: relative;\n\n .button-default {\n margin-left: 0.5em;\n }\n}\n\n.draft-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n@import \"../../../../variables\";\n\n.mfa-backup-codes {\n .warning {\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n\n .backup-codes {\n font-family: var(--postCodeFont, monospace);\n }\n}\n","\n@import \"../../../../variables\";\n\n.mfa-settings {\n .mfa-heading,\n .method-item {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n align-items: baseline;\n }\n\n .warning {\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n\n .setup-otp {\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n\n .qr-code {\n flex: 1;\n padding-right: 10px;\n }\n .verify { flex: 1; }\n .error { margin: 4px 0 0; }\n\n .confirm-otp-actions {\n button {\n width: 15em;\n margin-top: 5px;\n }\n }\n }\n}\n","/*!\n * Cropper.js v1.5.13\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2022-11-20T05:30:43.444Z\n */\n\n.cropper-container {\n direction: ltr;\n font-size: 0;\n line-height: 0;\n position: relative;\n -ms-touch-action: none;\n touch-action: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.cropper-container img {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n display: block;\n height: 100%;\n image-orientation: 0deg;\n max-height: none !important;\n max-width: none !important;\n min-height: 0 !important;\n min-width: 0 !important;\n width: 100%;\n }\n\n.cropper-wrap-box,\n.cropper-canvas,\n.cropper-drag-box,\n.cropper-crop-box,\n.cropper-modal {\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.cropper-wrap-box,\n.cropper-canvas {\n overflow: hidden;\n}\n\n.cropper-drag-box {\n background-color: #fff;\n opacity: 0;\n}\n\n.cropper-modal {\n background-color: #000;\n opacity: 0.5;\n}\n\n.cropper-view-box {\n display: block;\n height: 100%;\n outline: 1px solid #39f;\n outline-color: rgba(51, 153, 255, 75%);\n overflow: hidden;\n width: 100%;\n}\n\n.cropper-dashed {\n border: 0 dashed #eee;\n display: block;\n opacity: 0.5;\n position: absolute;\n}\n\n.cropper-dashed.dashed-h {\n border-bottom-width: 1px;\n border-top-width: 1px;\n height: calc(100% / 3);\n left: 0;\n top: calc(100% / 3);\n width: 100%;\n }\n\n.cropper-dashed.dashed-v {\n border-left-width: 1px;\n border-right-width: 1px;\n height: 100%;\n left: calc(100% / 3);\n top: 0;\n width: calc(100% / 3);\n }\n\n.cropper-center {\n display: block;\n height: 0;\n left: 50%;\n opacity: 0.75;\n position: absolute;\n top: 50%;\n width: 0;\n}\n\n.cropper-center::before,\n .cropper-center::after {\n background-color: #eee;\n content: \" \";\n display: block;\n position: absolute;\n }\n\n.cropper-center::before {\n height: 1px;\n left: -3px;\n top: 0;\n width: 7px;\n }\n\n.cropper-center::after {\n height: 7px;\n left: 0;\n top: -3px;\n width: 1px;\n }\n\n.cropper-face,\n.cropper-line,\n.cropper-point {\n display: block;\n height: 100%;\n opacity: 0.1;\n position: absolute;\n width: 100%;\n}\n\n.cropper-face {\n background-color: #fff;\n left: 0;\n top: 0;\n}\n\n.cropper-line {\n background-color: #39f;\n}\n\n.cropper-line.line-e {\n cursor: ew-resize;\n right: -3px;\n top: 0;\n width: 5px;\n }\n\n.cropper-line.line-n {\n cursor: ns-resize;\n height: 5px;\n left: 0;\n top: -3px;\n }\n\n.cropper-line.line-w {\n cursor: ew-resize;\n left: -3px;\n top: 0;\n width: 5px;\n }\n\n.cropper-line.line-s {\n bottom: -3px;\n cursor: ns-resize;\n height: 5px;\n left: 0;\n }\n\n.cropper-point {\n background-color: #39f;\n height: 5px;\n opacity: 0.75;\n width: 5px;\n}\n\n.cropper-point.point-e {\n cursor: ew-resize;\n margin-top: -3px;\n right: -3px;\n top: 50%;\n }\n\n.cropper-point.point-n {\n cursor: ns-resize;\n left: 50%;\n margin-left: -3px;\n top: -3px;\n }\n\n.cropper-point.point-w {\n cursor: ew-resize;\n left: -3px;\n margin-top: -3px;\n top: 50%;\n }\n\n.cropper-point.point-s {\n bottom: -3px;\n cursor: s-resize;\n left: 50%;\n margin-left: -3px;\n }\n\n.cropper-point.point-ne {\n cursor: nesw-resize;\n right: -3px;\n top: -3px;\n }\n\n.cropper-point.point-nw {\n cursor: nwse-resize;\n left: -3px;\n top: -3px;\n }\n\n.cropper-point.point-sw {\n bottom: -3px;\n cursor: nesw-resize;\n left: -3px;\n }\n\n.cropper-point.point-se {\n bottom: -3px;\n cursor: nwse-resize;\n height: 20px;\n opacity: 1;\n right: -3px;\n width: 20px;\n }\n\n@media (min-width: 768px) {\n\n.cropper-point.point-se {\n height: 15px;\n width: 15px;\n }\n }\n\n@media (min-width: 992px) {\n\n.cropper-point.point-se {\n height: 10px;\n width: 10px;\n }\n }\n\n@media (min-width: 1200px) {\n\n.cropper-point.point-se {\n height: 5px;\n opacity: 0.75;\n width: 5px;\n }\n }\n\n.cropper-point.point-se::before {\n background-color: #39f;\n bottom: -50%;\n content: \" \";\n display: block;\n height: 200%;\n opacity: 0;\n position: absolute;\n right: -50%;\n width: 200%;\n }\n\n.cropper-invisible {\n opacity: 0;\n}\n\n.cropper-bg {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC\");\n}\n\n.cropper-hide {\n display: block;\n height: 0;\n position: absolute;\n width: 0;\n}\n\n.cropper-hidden {\n display: none !important;\n}\n\n.cropper-move {\n cursor: move;\n}\n\n.cropper-crop {\n cursor: crosshair;\n}\n\n.cropper-disabled .cropper-drag-box,\n.cropper-disabled .cropper-face,\n.cropper-disabled .cropper-line,\n.cropper-disabled .cropper-point {\n cursor: not-allowed;\n}\n","\n.image-cropper {\n &-img-input {\n display: none;\n }\n\n &-image-container {\n position: relative;\n\n img {\n display: block;\n max-width: 100%;\n }\n }\n\n &-buttons-wrapper {\n margin-top: 10px;\n\n button {\n margin-top: 5px;\n }\n }\n}\n","@import \"../../../variables\";\n\n.profile-tab {\n .bio {\n margin: 0;\n }\n\n .visibility-tray {\n padding-top: 5px;\n }\n\n input[type=\"file\"] {\n padding: 5px;\n height: auto;\n }\n\n .banner-background-preview {\n max-width: 100%;\n width: 300px;\n position: relative;\n\n img {\n width: 100%;\n }\n }\n\n .uploading {\n font-size: 1.5em;\n margin: 0.25em;\n }\n\n .name-changer {\n width: 100%;\n }\n\n .current-avatar-container {\n position: relative;\n width: 150px;\n height: 150px;\n }\n\n .current-avatar {\n display: block;\n width: 100%;\n height: 100%;\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n }\n\n .reset-button {\n position: absolute;\n top: 0.2em;\n right: 0.2em;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n background-color: rgb(0 0 0 / 60%);\n opacity: 0.7;\n width: 1.5em;\n height: 1.5em;\n text-align: center;\n line-height: 1.5em;\n font-size: 1.5em;\n cursor: pointer;\n\n &:hover {\n opacity: 1;\n }\n\n svg {\n color: white;\n }\n }\n\n .oauth-tokens {\n width: 100%;\n\n th {\n text-align: left;\n }\n\n .actions {\n text-align: right;\n }\n }\n\n &-usersearch-wrapper {\n padding: 1em;\n }\n\n &-bulk-actions {\n text-align: right;\n padding: 0 1em;\n min-height: 2em;\n\n button {\n width: 10em;\n }\n }\n\n &-domain-mute-form {\n padding: 1em;\n display: flex;\n flex-direction: column;\n\n button {\n align-self: flex-end;\n margin-top: 1em;\n width: 10em;\n }\n }\n\n .setting-subitem {\n margin-left: 1.75em;\n }\n\n .profile-fields {\n display: flex;\n\n & > .emoji-input {\n flex: 1 1 auto;\n margin: 0 0.2em 0.5em;\n min-width: 0;\n }\n\n .delete-field {\n width: 20px;\n align-self: center;\n margin: 0 0.2em 0.5em;\n padding: 0 0.5em;\n }\n }\n\n .birthday-input {\n display: block;\n margin-bottom: 1em;\n }\n}\n","\n.SizeSetting {\n .number-input {\n max-width: 6.5em;\n }\n\n .css-unit-input,\n .css-unit-input select {\n margin-left: 0.5em;\n width: 4em;\n max-width: 4em;\n min-width: 4em;\n }\n}\n\n","\n.column-settings {\n display: flex;\n justify-content: space-evenly;\n flex-wrap: wrap;\n}\n\n.column-settings .size-label {\n display: block;\n margin-bottom: 0.5em;\n margin-top: 0.5em;\n}\n","@import \"../../variables\";\n\n.color-input {\n display: inline-flex;\n\n &-field.input {\n display: inline-flex;\n flex: 0 0 0;\n max-width: 9em;\n align-items: stretch;\n padding: 0.2em 8px;\n\n input {\n background: none;\n color: $fallback--lightText;\n color: var(--inputText, $fallback--lightText);\n border: none;\n padding: 0;\n margin: 0;\n\n &.textColor {\n flex: 1 0 3em;\n min-width: 3em;\n padding: 0;\n }\n\n &.nativeColor {\n flex: 0 0 2em;\n min-width: 2em;\n align-self: stretch;\n min-height: 100%;\n }\n }\n\n .computedIndicator,\n .transparentIndicator {\n flex: 0 0 2em;\n min-width: 2em;\n align-self: stretch;\n min-height: 100%;\n }\n\n .transparentIndicator {\n // forgot to install counter-strike source, ooops\n background-color: #f0f;\n position: relative;\n\n &::before,\n &::after {\n display: block;\n content: \"\";\n background-color: #000;\n position: absolute;\n height: 50%;\n width: 50%;\n }\n\n &::after {\n top: 0;\n left: 0;\n }\n\n &::before {\n bottom: 0;\n right: 0;\n }\n }\n }\n\n .label {\n flex: 1 1 auto;\n }\n}\n","\n.color-control {\n input.text-input {\n max-width: 7em;\n flex: 1;\n }\n}\n","\n@import \"../../variables\";\n\n.shadow-control {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n margin-bottom: 1em;\n\n .shadow-preview-container,\n .shadow-tweak {\n margin: 5px 6px 0 0;\n }\n\n .shadow-preview-container {\n flex: 0;\n display: flex;\n flex-wrap: wrap;\n\n $side: 15em;\n\n input[type=\"number\"] {\n width: 5em;\n min-width: 2em;\n }\n\n .x-shift-control,\n .y-shift-control {\n display: flex;\n flex: 0;\n\n &[disabled=\"disabled\"] * {\n opacity: 0.5;\n }\n }\n\n .x-shift-control {\n align-items: flex-start;\n }\n\n .x-shift-control .wrap,\n input[type=\"range\"] {\n margin: 0;\n width: $side;\n height: 2em;\n }\n\n .y-shift-control {\n flex-direction: column;\n align-items: flex-end;\n\n .wrap {\n width: 2em;\n height: $side;\n }\n\n input[type=\"range\"] {\n transform-origin: 1em 1em;\n transform: rotate(90deg);\n }\n }\n\n .preview-window {\n flex: 1;\n background-color: #999;\n display: flex;\n align-items: center;\n justify-content: center;\n background-image:\n linear-gradient(45deg, #666 25%, transparent 25%),\n linear-gradient(-45deg, #666 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, #666 75%),\n linear-gradient(-45deg, transparent 75%, #666 75%);\n background-size: 20px 20px;\n background-position: 0 0, 0 10px, 10px -10px, -10px 0;\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n\n .preview-block {\n width: 33%;\n height: 33%;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-radius: $fallback--panelRadius;\n border-radius: var(--panelRadius, $fallback--panelRadius);\n }\n }\n }\n\n .shadow-tweak {\n flex: 1;\n min-width: 280px;\n\n .id-control {\n align-items: stretch;\n\n .shadow-switcher {\n flex: 1;\n }\n\n .shadow-switcher,\n .btn {\n min-width: 1px;\n margin-right: 5px;\n }\n\n .btn {\n padding: 0 0.4em;\n margin: 0 0.1em;\n }\n }\n }\n}\n","\n@import \"../../variables\";\n\n.font-control {\n input.custom-font {\n min-width: 10em;\n }\n\n &.custom {\n /* TODO Should make proper joiners... */\n .font-switcher {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n .custom-font {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n}\n","\n.contrast-ratio {\n display: flex;\n justify-content: flex-end;\n margin-top: -4px;\n margin-bottom: 5px;\n\n .label {\n margin-right: 1em;\n }\n\n .rating {\n display: inline-block;\n text-align: center;\n margin-left: 0.5em;\n }\n}\n","\n.preview-container {\n position: relative;\n}\n\n.underlay-preview {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 10px;\n right: 10px;\n}\n","@import \"src/variables\";\n\n.theme-tab {\n padding-bottom: 2em;\n\n .preset-switcher {\n margin-right: 1em;\n }\n\n .btn {\n margin-left: 0.25em;\n margin-right: 0.25em;\n }\n\n .style-control {\n display: flex;\n align-items: baseline;\n margin-bottom: 5px;\n\n .label {\n flex: 1;\n }\n\n .opt {\n margin: 0.5em;\n }\n\n .color-input {\n flex: 0 0 0;\n }\n\n input,\n select {\n min-width: 3em;\n margin: 0;\n flex: 0;\n\n &[type=\"number\"] {\n min-width: 5em;\n }\n\n &[type=\"range\"] {\n flex: 1;\n min-width: 3em;\n align-self: flex-start;\n }\n }\n\n &.disabled {\n input,\n select {\n opacity: 0.5;\n }\n }\n }\n\n .reset-container {\n flex-wrap: wrap;\n }\n\n .fonts-container,\n .reset-container,\n .apply-container,\n .radius-container,\n .color-container, {\n display: flex;\n }\n\n .fonts-container,\n .radius-container {\n flex-direction: column;\n }\n\n .color-container {\n > h4 {\n width: 99%;\n }\n\n flex-wrap: wrap;\n justify-content: space-between;\n }\n\n .fonts-container,\n .color-container,\n .shadow-container,\n .radius-container,\n .presets-container {\n margin: 1em 1em 0;\n }\n\n .tab-header {\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n width: 100%;\n min-height: 30px;\n margin-bottom: 1em;\n\n p {\n flex: 1;\n margin: 0;\n margin-right: 0.5em;\n }\n }\n\n .tab-header-buttons {\n display: flex;\n flex-direction: column;\n\n .btn {\n min-width: 1px;\n flex: 0 auto;\n padding: 0 1em;\n margin-bottom: 0.5em;\n }\n }\n\n .shadow-selector {\n .override {\n flex: 1;\n margin-left: 0.5em;\n }\n\n .select-container {\n margin-top: -4px;\n margin-bottom: -3px;\n }\n }\n\n .save-load,\n .save-load-options {\n display: flex;\n justify-content: center;\n align-items: baseline;\n flex-wrap: wrap;\n\n .presets,\n .import-export {\n margin-bottom: 0.5em;\n }\n\n .import-export {\n display: flex;\n }\n\n .override {\n margin-left: 0.5em;\n }\n }\n\n .save-load-options {\n flex-wrap: wrap;\n margin-top: 0.5em;\n justify-content: center;\n\n .keep-option {\n margin: 0 0.5em 0.5em;\n min-width: 25%;\n }\n }\n\n .preview-container {\n border-top: 1px dashed;\n border-bottom: 1px dashed;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n margin: 1em 0;\n padding: 1em;\n background-color: var(--wallpaper);\n background-image: var(--body-background-image);\n background-size: cover;\n background-position: 50% 50%;\n\n .dummy {\n .post {\n font-family: var(--postFont);\n display: flex;\n\n .content {\n flex: 1;\n\n h4 {\n margin-bottom: 0.25em;\n }\n\n .icons {\n margin-top: 0.5em;\n display: flex;\n\n i {\n margin-right: 1em;\n }\n }\n }\n }\n\n .after-post {\n margin-top: 1em;\n display: flex;\n align-items: center;\n }\n\n .avatar,\n .avatar-alt {\n background:\n linear-gradient(\n 135deg,\n #b8e1fc 0%,\n #a9d2f3 10%,\n #90bae4 25%,\n #90bcea 37%,\n #90bff0 50%,\n #6ba8e5 51%,\n #a2daf5 83%,\n #bdf3fd 100%\n );\n color: black;\n font-family: sans-serif;\n text-align: center;\n margin-right: 1em;\n }\n\n .avatar-alt {\n flex: 0 auto;\n margin-left: 28px;\n font-size: 12px;\n min-width: 20px;\n min-height: 20px;\n line-height: 20px;\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n .avatar {\n flex: 0 auto;\n width: 48px;\n height: 48px;\n font-size: 14px;\n line-height: 48px;\n }\n\n .actions {\n display: flex;\n align-items: baseline;\n\n .checkbox {\n display: inline-flex;\n align-items: baseline;\n margin-right: 1em;\n flex: 1;\n }\n }\n\n .separator {\n margin: 1em;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n }\n\n .btn {\n min-width: 3em;\n }\n }\n }\n\n .radius-item {\n flex-basis: auto;\n }\n\n .radius-item,\n .color-item {\n min-width: 20em;\n margin: 5px 6px 0 0;\n display: flex;\n flex-direction: column;\n flex: 1 1 0;\n\n &.wide {\n min-width: 60%;\n }\n\n &:not(.wide):nth-child(2n+1) {\n margin-right: 7px;\n }\n\n .color,\n .opacity {\n display: flex;\n align-items: baseline;\n }\n }\n\n .theme-radius-rn,\n .theme-color-cl {\n border: 0;\n box-shadow: none;\n background: transparent;\n color: var(--faint, $fallback--faint);\n align-self: stretch;\n }\n\n .theme-color-cl,\n .theme-radius-in,\n .theme-color-in {\n margin-left: 4px;\n }\n\n .theme-radius-in {\n min-width: 1em;\n max-width: 7em;\n flex: 1;\n }\n\n .theme-radius-lb {\n max-width: 50em;\n }\n\n .theme-preview-content {\n padding: 20px;\n }\n\n .theme-warning {\n display: flex;\n align-items: baseline;\n margin-bottom: 0.5em;\n\n .buttons {\n .btn {\n margin-bottom: 0.5em;\n }\n }\n }\n}\n\n.extra-content {\n .apply-container {\n display: flex;\n flex-direction: row;\n justify-content: space-around;\n flex-grow: 1;\n\n /* stylelint-disable-next-line no-descending-specificity */\n .btn {\n flex-grow: 1;\n min-height: 2em;\n min-width: 0;\n max-width: 10em;\n padding: 0;\n }\n }\n}\n","@import \"src/variables\";\n\n.settings_tab-switcher {\n height: 100%;\n\n .setting-item {\n border-bottom: 2px solid var(--fg, $fallback--fg);\n margin: 1em 1em 1.4em;\n padding-bottom: 1.4em;\n\n > div,\n > label {\n display: block;\n margin-bottom: 0.5em;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n .select-multiple {\n display: flex;\n\n .option-list {\n margin: 0;\n padding-left: 0.5em;\n }\n }\n\n &:last-child {\n border-bottom: none;\n padding-bottom: 0;\n margin-bottom: 1em;\n }\n\n select {\n min-width: 10em;\n }\n\n textarea {\n width: 100%;\n max-width: 100%;\n height: 100px;\n }\n\n .unavailable,\n .unavailable svg {\n color: var(--cRed, $fallback--cRed);\n color: $fallback--cRed;\n }\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/static/css/8859.d26a3b0841a7beb8fd4a.css b/priv/static/static/css/8859.d26a3b0841a7beb8fd4a.css deleted file mode 100644 index b89695d29a..0000000000 --- a/priv/static/static/css/8859.d26a3b0841a7beb8fd4a.css +++ /dev/null @@ -1,2 +0,0 @@ -.ModifiedIndicator{display:inline-block;position:relative}.modified-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.ProfileSettingIndicator{display:inline-block;position:relative}.profilesetting-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.DraftButtons{display:inline-block;position:relative}.DraftButtons .button-default{margin-left:.5em}.draft-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.AttachmentSetting .attachment{display:block;height:15em;margin-bottom:.5em;width:100%}.AttachmentSetting .attachment-input{display:flex;flex-direction:column;margin-left:1em;width:20em}.AttachmentSetting.-compact .attachment-input{align-items:flex-end;flex-direction:row}.AttachmentSetting.-compact .attachment{align-self:center;display:block;flex:0;height:4em;margin-bottom:0;min-width:4em;order:0}.AttachmentSetting.-compact .control-field{margin-left:.5em;min-width:12em;order:1}.AttachmentSetting.-compact .control-upload{min-width:12em;order:2;padding:0 .5em}.AttachmentSetting .controls{margin-bottom:.5em}.AttachmentSetting .controls button,.AttachmentSetting .controls input{width:100%}.frontends-tab .cards-list{padding:0}.frontends-tab .relative{position:relative}.frontends-tab .overlay{background:var(--bg);bottom:0;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:2}.frontends-tab dd{word-wrap:nowrap;max-width:10em;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.settings_tab-switcher{height:100%}.settings_tab-switcher .setting-item{border-bottom:2px solid var(--fg,#182230);margin:1em 1em 1.4em;padding-bottom:1.4em}.settings_tab-switcher .setting-item>div,.settings_tab-switcher .setting-item>label{display:block;margin-bottom:.5em}.settings_tab-switcher .setting-item>div:last-child,.settings_tab-switcher .setting-item>label:last-child{margin-bottom:0}.settings_tab-switcher .setting-item .select-multiple{display:flex}.settings_tab-switcher .setting-item .select-multiple .option-list{margin:0;padding-left:.5em}.settings_tab-switcher .setting-item:last-child{border-bottom:none;margin-bottom:1em;padding-bottom:0}.settings_tab-switcher .setting-item select{min-width:10em}.settings_tab-switcher .setting-item textarea{height:100px;max-width:100%;width:100%}.settings_tab-switcher .setting-item .unavailable,.settings_tab-switcher .setting-item .unavailable svg{color:var(--cRed,red);color:red} -/*# sourceMappingURL=8859.d26a3b0841a7beb8fd4a.css.map*/ \ No newline at end of file diff --git a/priv/static/static/css/8859.d26a3b0841a7beb8fd4a.css.map b/priv/static/static/css/8859.d26a3b0841a7beb8fd4a.css.map deleted file mode 100644 index c0ebb3d85b..0000000000 --- a/priv/static/static/css/8859.d26a3b0841a7beb8fd4a.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/css/8859.d26a3b0841a7beb8fd4a.css","mappings":"AACA,mBACE,qBACA,kBAGF,kBACE,gBACA,eACA,kBCRF,yBACE,qBACA,kBAGF,wBACE,gBACA,eACA,kBCRF,cACE,qBACA,kBAEA,8BACE,iBAIJ,eACE,gBACA,eACA,kBCXA,+BACE,cAEA,YACA,mBAFA,UAEA,CAGF,qCAEE,aACA,sBAFA,gBAGA,WAIA,8CAEE,qBADA,kBACA,CAGF,wCAME,kBAHA,cAFA,OAIA,WAEA,eAAc,CAHd,cAFA,OAKA,CAGF,2CAGE,iBADA,eADA,OAEA,CAGF,4CAEE,eADA,QAEA,eAIJ,6BACE,mBAEA,uEAEE,WCjDJ,2BACE,UAGF,yBACE,kBAGF,wBAEE,qBAKA,SACA,OAHA,WAJA,kBAQA,OAAM,CAHN,MAFA,SAKA,CAGF,kBAEE,iBAGA,eADA,kBAHA,uBAEA,kBAEA,CCxBJ,uBACE,YAEA,qCACE,0CACA,qBACA,qBAEA,oFAEE,cACA,mBAEA,0GACE,gBAIJ,sDACE,aAEA,mEACE,SACA,kBAIJ,gDACE,mBAEA,kBADA,gBACA,CAGF,4CACE,eAGF,8CAGE,aADA,eADA,UAEA,CAGF,wGAEE,sBACA,SCnCW","sources":["webpack://pleroma_fe/./src/components/settings_modal/helpers/modified_indicator.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/profile_setting_indicator.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/draft_buttons.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/attachment_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/admin_tabs/frontends_tab.scss","webpack://pleroma_fe/./src/components/settings_modal/settings_modal_admin_content.scss","webpack://pleroma_fe/./src/_variables.scss"],"sourcesContent":["\n.ModifiedIndicator {\n display: inline-block;\n position: relative;\n}\n\n.modified-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n.ProfileSettingIndicator {\n display: inline-block;\n position: relative;\n}\n\n.profilesetting-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n.DraftButtons {\n display: inline-block;\n position: relative;\n\n .button-default {\n margin-left: 0.5em;\n }\n}\n\n.draft-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n.AttachmentSetting {\n .attachment {\n display: block;\n width: 100%;\n height: 15em;\n margin-bottom: 0.5em;\n }\n\n .attachment-input {\n margin-left: 1em;\n display: flex;\n flex-direction: column;\n width: 20em;\n }\n\n &.-compact {\n .attachment-input {\n flex-direction: row;\n align-items: flex-end;\n }\n\n .attachment {\n flex: 0;\n order: 0;\n display: block;\n min-width: 4em;\n height: 4em;\n align-self: center;\n margin-bottom: 0;\n }\n\n .control-field {\n order: 1;\n min-width: 12em;\n margin-left: 0.5em;\n }\n\n .control-upload {\n order: 2;\n min-width: 12em;\n padding: 0 0.5em;\n }\n }\n\n .controls {\n margin-bottom: 0.5em;\n\n input,\n button {\n width: 100%;\n }\n }\n}\n",".frontends-tab {\n .cards-list {\n padding: 0;\n }\n\n .relative {\n position: relative;\n }\n\n .overlay {\n position: absolute;\n background: var(--bg);\n // fix buttons showing through\n z-index: 2;\n opacity: 0.9;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n }\n\n dd {\n text-overflow: ellipsis;\n word-wrap: nowrap;\n white-space: nowrap;\n overflow-x: hidden;\n max-width: 10em;\n }\n}\n","@import \"src/variables\";\n\n.settings_tab-switcher {\n height: 100%;\n\n .setting-item {\n border-bottom: 2px solid var(--fg, $fallback--fg);\n margin: 1em 1em 1.4em;\n padding-bottom: 1.4em;\n\n > div,\n > label {\n display: block;\n margin-bottom: 0.5em;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n .select-multiple {\n display: flex;\n\n .option-list {\n margin: 0;\n padding-left: 0.5em;\n }\n }\n\n &:last-child {\n border-bottom: none;\n padding-bottom: 0;\n margin-bottom: 1em;\n }\n\n select {\n min-width: 10em;\n }\n\n textarea {\n width: 100%;\n max-width: 100%;\n height: 100px;\n }\n\n .unavailable,\n .unavailable svg {\n color: var(--cRed, $fallback--cRed);\n color: $fallback--cRed;\n }\n }\n}\n","$main-color: #f58d2c;\n$main-background: white;\n$darkened-background: whitesmoke;\n\n$fallback--bg: #121a24;\n$fallback--fg: #182230;\n$fallback--faint: rgb(185 185 186 / 50%);\n$fallback--text: #b9b9ba;\n$fallback--link: #d8a070;\n$fallback--icon: #666;\n$fallback--lightBg: rgb(21 30 42);\n$fallback--lightText: #b9b9ba;\n$fallback--border: #222;\n$fallback--cRed: #f00;\n$fallback--cBlue: #0095ff;\n$fallback--cGreen: #0fa00f;\n$fallback--cOrange: orange;\n\n$fallback--alertError: rgb(211 16 20 / 50%);\n$fallback--alertWarning: rgb(111 111 20 / 50%);\n\n$fallback--panelRadius: 10px;\n$fallback--checkboxRadius: 2px;\n$fallback--btnRadius: 4px;\n$fallback--inputRadius: 4px;\n$fallback--tooltipRadius: 5px;\n$fallback--avatarRadius: 4px;\n$fallback--avatarAltRadius: 10px;\n$fallback--attachmentRadius: 10px;\n$fallback--chatMessageRadius: 10px;\n\n$fallback--buttonShadow: 0 0 2px 0 rgb(0 0 0 / 100%),\n 0 1px 0 0 rgb(255 255 255 / 20%) inset,\n 0 -1px 0 0 rgb(0 0 0 / 20%) inset;\n\n$status-margin: 0.75em;\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/static/css/app.75b043cffb8e922bc29e.css b/priv/static/static/css/app.75b043cffb8e922bc29e.css new file mode 100644 index 0000000000..a8df04ea3f --- /dev/null +++ b/priv/static/static/css/app.75b043cffb8e922bc29e.css @@ -0,0 +1,2 @@ +.modal-view{align-items:center;animation-duration:.2s;animation-name:modal-background-fadein;bottom:0;display:flex;justify-content:center;left:0;opacity:0;overflow:auto;pointer-events:none;position:fixed;right:0;top:0;z-index:var(--ZI_modals)}.modal-view>*{pointer-events:auto}.modal-view.modal-background{background-color:rgba(0,0,0,.5);pointer-events:auto}.modal-view.open{opacity:1}@keyframes modal-background-fadein{0%{background-color:transparent}to{background-color:rgba(0,0,0,.5)}}.vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.direction-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}.vue-recycle-scroller__slot{-webkit-box-flex:1;-ms-flex:auto 0 0px;flex:auto 0 0}.vue-recycle-scroller__item-wrapper{-webkit-box-flex:1;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex:1;flex:1;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{left:0;position:absolute;top:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.resize-observer[data-v-b329ee4c]{background-color:transparent;border:none;opacity:0}.resize-observer[data-v-b329ee4c],.resize-observer[data-v-b329ee4c] object{display:block;height:100%;left:0;overflow:hidden;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}.login-form{display:flex;flex-direction:column;padding:.6em}.login-form .btn{min-height:2em;width:10em}.login-form .register{flex:1 1}.login-form .login-bottom{align-items:center;display:flex;flex-direction:row;justify-content:space-between;margin-top:1em}.login-form .form-group{display:flex;flex-direction:column;line-height:24px;padding:.3em .5em .6em}.login-form .form-bottom{display:flex;height:32px;padding:.5em}.login-form .form-bottom button{width:10em}.login-form .form-bottom p{display:flex;margin:.35em;padding:.35em}.login-form .error{animation-duration:.4s;animation-name:shakeError;animation-timing-function:ease-in-out;text-align:center}.media-upload .hidden-input-file{display:none}label.media-upload{cursor:pointer}.ScopeSelector .scope{cursor:pointer;display:inline-block;min-height:1.3em;min-width:1.3em;text-align:center}.checkbox{display:inline-block;min-height:1.2em;position:relative}.checkbox>.checkbox-indicator{box-shadow:none;display:inline;line-height:inherit;margin:0;padding:0 0 0 1.2em;position:relative}.checkbox-indicator:before{background-color:var(--background);border-radius:var(--roundness);box-shadow:var(--shadow);box-sizing:border-box;color:transparent;content:"✓";display:block;font-size:1.1em;height:1.1em;line-height:1.1em;overflow:hidden;position:absolute;right:0;text-align:center;top:0;transition:color .2s;vertical-align:top;width:1.1em}.checkbox.disabled .checkbox-indicator:before,.checkbox.disabled .label{opacity:.5}.checkbox input[type=checkbox]:checked+.checkbox-indicator:before,.checkbox.disabled .label{color:var(--text)}.checkbox input[type=checkbox]:indeterminate+.checkbox-indicator:before{color:var(--text);content:"–"}.checkbox.indeterminate-fix input[type=checkbox]+.checkbox-indicator:before{content:"–"}.checkbox>span{margin-left:.5em}.popover-trigger-button{display:inline-block}.popover{box-shadow:var(--shadow);max-width:calc(100vw - 20px);min-width:0;position:fixed;z-index:var(--ZI_popover_override,var(--ZI_popovers))}.popover-default{background-color:var(--background);border-color:var(--border);border-radius:var(--roundness);border-style:solid;border-width:1px}.popover-default:after{bottom:-1px;box-shadow:var(--shadow);content:"";left:-1px;pointer-events:none;position:absolute;right:-1px;top:-1px;z-index:-1px}.dropdown-menu{background-color:var(--background);display:block;font-size:1em;list-style:none;max-width:100vw;padding:0;text-align:left;white-space:nowrap;z-index:var(--ZI_popover_override,var(--ZI_popovers))}.dropdown-menu .dropdown-divider{border-top:1px solid var(--border);height:0;margin:.5rem 0;overflow:hidden}.dropdown-menu .dropdown-item{border:none}.dropdown-menu .dropdown-item-icon svg{margin-right:var(--__horizontal-gap);width:var(--__line-height)}.dropdown-menu .dropdown-item.-has-submenu .chevron-icon{margin-left:2rem;margin-right:.25rem}.dropdown-menu .dropdown-item .menu-checkbox{border-radius:0;box-shadow:var(--shadow);display:inline-block;line-height:var(--__line-height);margin-right:var(--__horizontal-gap);max-height:calc(var(--__line-height) + 1px);max-width:calc(var(--__line-height) + 1px);min-height:calc(var(--__line-height) + 1px);min-width:calc(var(--__line-height) + 1px);text-align:center;vertical-align:middle}.dropdown-menu .dropdown-item .menu-checkbox.menu-checkbox-checked:after{content:"✓";font-size:1.25em}.dropdown-menu .dropdown-item .menu-checkbox.-radio{border-radius:9999px}.dropdown-menu .dropdown-item .menu-checkbox.-radio.menu-checkbox-checked:after{content:"•";font-size:2em}.still-image{align-items:center;display:inline-flex;line-height:0;overflow:hidden;position:relative}.still-image canvas{bottom:0;left:0;position:absolute;right:0;top:0;visibility:var(--_still-image-canvas-visibility,visible)}.still-image canvas,.still-image img{height:100%;-o-object-fit:contain;object-fit:contain;width:100%}.still-image.animated:before{zoom:var(--_still_image-label-scale,1);background:hsla(0,0%,50%,.5);border-radius:var(--roundness);color:#fff;content:"gif";display:block;font-size:.7em;left:.5em;line-height:1;padding:2px 4px;position:absolute;top:.5em;visibility:var(--_still-image-label-visibility,visible);z-index:2}.still-image.animated:hover canvas{display:none}.still-image.animated:hover:before{visibility:var(--_still-image-label-visibility,hidden)}.still-image.animated img{visibility:var(--_still-image-img-visibility,hidden)}.still-image.animated:hover img{visibility:visible}.emoji-picker{--__emoji-picker-header:2.2em;display:flex;flex-direction:column;max-width:calc(100vw - 20px);width:25em}.emoji-picker-header-image{align-items:center;display:inline-flex;justify-content:center}.emoji-picker-header-image,.emoji-picker-header-image .still-image{height:var(--__emoji-picker-header);max-height:var(--__emoji-picker-header);max-width:var(--__emoji-picker-header);width:var(--__emoji-picker-header)}.emoji-picker-header-image .still-image{--_still_image-label-scale:0.5;-o-object-fit:contain;object-fit:contain}.emoji-picker .hide-custom-emoji,.emoji-picker .keep-open,.emoji-picker .too-many-emoji{line-height:normal;padding:.5em}.emoji-picker .hide-custom-emoji{padding-top:0}.emoji-picker .too-many-emoji{display:flex;flex-direction:column}.emoji-picker .keep-open-label{display:flex;padding:0 .5em}.emoji-picker .heading{display:flex;padding:.7em .5em 0}.emoji-picker .content{display:flex;flex:1 1 auto;flex-direction:column;min-height:0}.emoji-picker .emoji-tabs{display:flex;flex-flow:row nowrap;flex-grow:1;overflow-x:auto;overflow-y:hidden}.emoji-picker .additional-tabs{border-left:1px solid;border-left-color:var(--border);display:flex;flex:0 0 auto;padding-left:.5em}.emoji-picker .additional-tabs,.emoji-picker .emoji-tabs{align-content:center;display:flex;flex-basis:auto;scrollbar-width:thin}.emoji-picker .additional-tabs-item,.emoji-picker .emoji-tabs-item{align-items:center;cursor:pointer;display:flex;height:var(--__emoji-picker-header);max-height:var(--__emoji-picker-header);max-width:var(--__emoji-picker-header);padding:0 .5em;width:var(--__emoji-picker-header)}.emoji-picker .additional-tabs-item .svg-inline--fa,.emoji-picker .emoji-tabs-item .svg-inline--fa{font-size:1.85em}.emoji-picker .additional-tabs-item.disabled,.emoji-picker .emoji-tabs-item.disabled{opacity:.5;pointer-events:none}.emoji-picker .additional-tabs-item.toggled,.emoji-picker .emoji-tabs-item.toggled{border-bottom:.2em solid}.emoji-picker .sticker-picker{flex:1 1 auto}.emoji-picker .emoji-content,.emoji-picker .stickers-content{display:flex;flex:1 1 auto;flex-direction:column;min-height:0}.emoji-picker .emoji-content.hidden,.emoji-picker .stickers-content.hidden{opacity:0;pointer-events:none;position:absolute}.emoji-picker .emoji-search{flex:0 0 auto;padding:.3em}.emoji-picker .emoji-search input{width:100%}.emoji-picker .emoji-groups{flex:1 1 1px;height:100%;-webkit-mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-size:100% 20px,100% 20px,auto;mask-size:100% 20px,100% 20px,auto;min-height:200px;overflow:auto;position:relative;scrollbar-gutter:stable both-edges;transition:-webkit-mask-size .15s;transition:mask-size .15s;transition:mask-size .15s,-webkit-mask-size .15s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.emoji-picker .emoji-groups.scrolled-top{-webkit-mask-size:100% 20px,100% 0,auto;mask-size:100% 20px,100% 0,auto}.emoji-picker .emoji-groups.scrolled-bottom{-webkit-mask-size:100% 0,100% 20px,auto;mask-size:100% 0,100% 20px,auto}.emoji-picker .emoji-group{align-items:center;display:flex;flex-wrap:wrap;justify-content:left}.emoji-picker .emoji-group-title{font-size:.85em;margin:0;padding-left:.3em;width:100%}.emoji-picker .emoji-group-title.disabled{display:none}.emoji-picker .emoji-item{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;height:var(--emoji-size);justify-content:center;line-height:var(--emoji-size);margin:.2em;width:var(--emoji-size)}.emoji-picker .emoji-item .emoji-picker-emoji.-custom{--_still_image-label-scale:0.5;height:var(--emoji-size);max-height:var(--emoji-size);max-width:var(--emoji-size);-o-object-fit:contain;object-fit:contain;width:var(--emoji-size)}.emoji-picker .emoji-item .emoji-picker-emoji.-unicode{font-size:1.6em;overflow:hidden}.input.emoji-input{display:flex;flex-direction:column;padding:0;position:relative}.input.emoji-input .emoji-picker-icon{cursor:pointer;font-size:1.3em;line-height:24px;margin:.2em .25em;position:absolute;right:0;top:0}.input.emoji-input .emoji-picker-icon:hover i{color:var(--text)}.input.emoji-input .emoji-picker-panel{margin-top:2px;position:absolute;z-index:20}.input.emoji-input .emoji-picker-panel.hide{display:none}.input.emoji-input input,.input.emoji-input textarea{background:none!important;border:none;box-shadow:none;color:inherit;flex:1 0 auto;outline:none}.input.emoji-input.with-picker input{padding-right:30px}.input.emoji-input .hidden-overlay{bottom:0;color:red;left:0;opacity:0;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0}.input.emoji-input .hidden-overlay .caret{border:1px solid red;margin-right:calc(-1ch - 1px);width:0}.autocomplete-panel{position:absolute}.autocomplete-item.menu-item{display:flex;padding-bottom:0;padding-top:0}.autocomplete-item.menu-item .image{line-height:var(--__line-height);margin-right:var(--__horizontal-gap);text-align:center}.autocomplete-item.menu-item .image,.autocomplete-item.menu-item .image img{height:calc(var(--__line-height) + var(--__vertical-gap)*2);width:calc(var(--__line-height) + var(--__vertical-gap)*2)}.autocomplete-item.menu-item .image img{-o-object-fit:contain;object-fit:contain}.autocomplete-item.menu-item .image span{font-size:var(--__line-height);line-height:var(--__line-height)}.autocomplete-item.menu-item .label{display:flex;flex-direction:column;justify-content:center;margin:0 .1em 0 .2em}.autocomplete-item.menu-item .label .displayText{line-height:1.5}.autocomplete-item.menu-item .label .detailText{font-size:9px;line-height:9px}label.Select{padding:0}label.Select select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;color:var(--text);font-family:var(--font);font-size:1em;height:2em;line-height:16px;margin:0;padding:0 2em 0 .2em;width:100%;z-index:1}label.Select .select-down-icon{bottom:0;font-family:var(--font);height:100%;line-height:2;pointer-events:none;position:absolute;right:5px;top:0;width:.875em;z-index:0}.poll-form{display:flex;flex-direction:column;padding:0 .5em .5em}.poll-form .add-option{align-self:flex-start;padding-left:.1em;padding-top:.25em}.poll-form .poll-option{align-items:baseline;display:flex;justify-content:space-between;margin-bottom:.25em}.poll-form .input-container{width:100%}.poll-form .input-container input{padding-right:2.5em;width:100%}.poll-form .delete-option{margin-left:-1.5em;width:1.5em;z-index:1}.poll-form .poll-type-expiry{display:flex;margin-top:.5em;width:100%}.poll-form .poll-type{flex:1 1 60%;margin-right:.75em}.poll-form .poll-type .poll-type-select{padding-right:.75em}.poll-form .poll-expiry{display:flex}.poll-form .poll-expiry .expiry-amount{text-align:right;width:3em}.Flash{display:inline-block;position:relative}.Flash,.Flash .placeholder,.Flash .player{height:100%;width:100%}.Flash .placeholder{align-items:center;background:var(--bg);color:var(--link);display:flex;justify-content:center}.Flash .hider{top:0}.Flash .label{word-wrap:normal;flex:1 1 0;line-height:1.2;text-align:center;white-space:normal}.Flash .hidden{display:none;visibility:"hidden"}.Attachment{align-self:flex-start;border-color:var(--border);border-radius:var(--roundness);border-style:solid;border-width:1px;display:inline-flex;flex-direction:column;height:100%;line-height:0;position:relative}.Attachment .attachment-wrapper{flex:1 1 auto;height:100%;overflow:hidden;position:relative}.Attachment .description-container{display:flex;flex:0 1 0;padding-top:.5em;z-index:1}.Attachment .description-container p{flex:1;line-height:1.5;margin:0;overflow:hidden;padding:.5em;text-align:center;text-overflow:ellipsis;white-space:nowrap}.Attachment .description-container.-static{background:var(--popover);bottom:0;box-shadow:var(--popupShadow);left:0;padding-top:0;position:absolute;right:0}.Attachment .description-field{flex:1;min-width:0}.Attachment .audio-container,.Attachment .flash-container,.Attachment .image-container,.Attachment .oembed-container,.Attachment .placeholder-container,.Attachment .video-container{display:flex;height:100%;justify-content:center;width:100%}.Attachment .image-container .image{height:100%;width:100%}.Attachment .flash-container .flash,.Attachment .flash-container video,.Attachment .video-container .flash,.Attachment .video-container video{align-self:center;height:100%;-o-object-fit:contain;object-fit:contain;width:100%}.Attachment .video-container{background:transparent;border:none;color:inherit;outline:none}.Attachment .audio-container{align-items:flex-end;display:flex}.Attachment .audio-container audio{height:100%;width:100%}.Attachment .placeholder-container{align-items:center;display:flex;flex-direction:column;justify-content:center;padding-top:.5em}.Attachment .play-icon{color:hsla(0,0%,100%,.75);font-size:64px;left:calc(50% - 32px);position:absolute;text-shadow:0 0 2px rgba(0,0,0,.4);top:calc(50% - 32px)}.Attachment .play-icon:before{margin:0}.Attachment .attachment-buttons{display:flex;margin-right:.5em;margin-top:.5em;position:absolute;right:0;top:0;z-index:1}.Attachment .attachment-buttons .attachment-button{border-radius:var(--roundness);font-size:1.25em;height:2em;margin-left:.5em;padding:0;text-align:center;width:2em}.Attachment.-contain-fit canvas,.Attachment.-contain-fit img{-o-object-fit:contain;object-fit:contain}.Attachment.-cover-fit canvas,.Attachment.-cover-fit img{-o-object-fit:cover;object-fit:cover}.Attachment .oembed-container{display:flex;flex:1 0 100%;line-height:1.2em;margin-right:15px;width:100%}.Attachment .oembed-container img{width:100%}.Attachment .oembed-container .image{flex:1}.Attachment .oembed-container .image img{border:0;border-radius:5px;height:100%;-o-object-fit:cover;object-fit:cover}.Attachment .oembed-container .text{flex:2;margin:8px;word-break:break-all}.Attachment .oembed-container .text h1{font-size:1rem;margin:0}.Attachment.-size-small .play-icon{zoom:.5;opacity:.7}.Attachment.-size-small .attachment-buttons{zoom:.7;opacity:.5}.Attachment.-editable{padding:.5em}.Attachment.-editable .attachment-buttons,.Attachment.-editable .description-container{margin:0}.Attachment.-placeholder{color:var(--link);display:inline-block;height:auto;line-height:1.5;overflow:hidden;white-space:nowrap}.Attachment.-placeholder:not(.-editable){border:none}.Attachment.-placeholder.-editable{align-items:baseline;display:flex;flex-direction:row}.Attachment.-placeholder.-editable .attachment-buttons,.Attachment.-placeholder.-editable .description-container{margin:0;padding:0;position:relative}.Attachment.-placeholder.-editable .description-container{flex:1;padding-left:.5em}.Attachment.-placeholder.-editable .attachment-buttons{align-self:center;order:99}.Attachment.-placeholder a{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis}.Attachment.-placeholder svg{color:inherit}.Attachment.-loading{cursor:progress}.Attachment.-compact .placeholder-container{padding-bottom:.5em}.Gallery .gallery-rows{display:flex;flex-direction:column}.Gallery .gallery-row{flex-grow:1;height:0;position:relative;width:100%}.Gallery .gallery-row .gallery-row-inner{align-content:stretch;bottom:0;display:flex;flex-flow:row wrap;left:0;position:absolute;right:0;top:0}.Gallery .gallery-row .gallery-row-inner .gallery-item{box-sizing:border-box;flex-grow:1;height:100%;margin:0 .5em 0 0;min-width:2em}.Gallery .gallery-row .gallery-row-inner .gallery-item:last-child{margin:0}.Gallery .gallery-row .gallery-row-inner.-grid{grid-gap:.5em;display:grid;grid-template-columns:repeat(auto-fill,minmax(15em,1fr));height:auto;position:relative;width:100%}.Gallery .gallery-row .gallery-row-inner.-grid .gallery-item{height:200px;margin:0}.Gallery .gallery-row.-grid,.Gallery .gallery-row.-minimal{height:auto}.Gallery .gallery-row.-grid .gallery-row-inner,.Gallery .gallery-row.-minimal .gallery-row-inner{position:relative}.Gallery .gallery-row:not(:first-child){margin-top:.5em}.Gallery.-long .gallery-rows{-webkit-mask:linear-gradient(0deg,#fff,transparent) bottom/100% 70px no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff,transparent) bottom/100% 70px no-repeat,linear-gradient(0deg,#fff,#fff);mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;max-height:25em;overflow:hidden}.Gallery .many-attachments-text{line-height:2;text-align:center}.Gallery .many-attachments-buttons{display:flex}.Gallery .many-attachments-button{display:flex;flex:1;justify-content:center;line-height:2}.Gallery .many-attachments-button button{padding:0 2em}.Avatar{--_avatarShadowBox:var(--shadow);--_avatarShadowFilter:var(--shadowFilter);--_avatarShadowInset:var(--shadowInset);--_still-image-label-visibility:hidden;display:inline-block;height:48px;position:relative;width:48px}.Avatar.-compact{border-radius:var(--roundness);height:32px;width:32px}.Avatar .avatar{border-radius:var(--roundness);box-shadow:var(--_avatarShadowBox);height:100%;width:100%}.Avatar .avatar.-better-shadow{box-shadow:var(--_avatarShadowInset);filter:var(--_avatarShadowFilter)}.Avatar .avatar.-animated:before{display:none}.Avatar .avatar.-compact{border-radius:var(--roundness)}.Avatar .avatar.-placeholder{background-color:var(--background)}.Avatar img{height:100%;width:100%}.Avatar .actor-type-indicator{background:hsla(0,0%,50%,.5);border-radius:var(--roundness);bottom:0;color:#fff;margin:-.2em;padding:.2em;position:absolute;right:0}.MentionLink{display:inline;position:relative;white-space:normal;word-break:normal}.MentionLink .new,.MentionLink .original{border-radius:2px;display:inline}.MentionLink .mention-avatar{border-radius:var(--roundness);height:1.5em;margin-right:.2em;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1.5em}.MentionLink .full{word-wrap:normal;display:inline-block;height:100%;left:0;margin-top:.25em;opacity:0;padding:.5em;pointer-events:none;position:absolute;top:100%;transition:opacity .2s ease;-webkit-user-select:all;-moz-user-select:all;user-select:all;white-space:nowrap;z-index:1}.MentionLink .short.-with-tooltip,.MentionLink .you{-webkit-user-select:none;-moz-user-select:none;user-select:none}.MentionLink .full,.MentionLink .short{white-space:nowrap}.MentionLink .shortName{white-space:normal}.MentionLink .new.-you .shortName{font-weight:600}.MentionLink .new.-has-selection{--color:var(--selectionText);--link:var(--selectionText);background-color:var(--selectionBackground)}.MentionLink .new .at{color:var(--link);display:inline-block;line-height:1;margin:0;opacity:.8;padding:0 .1em;vertical-align:-25%}.MentionLink .new.-striped .shortName{background-image:repeating-linear-gradient(135deg,var(--____highlight-tintColor),var(--____highlight-tintColor) 5px,var(--____highlight-tintColor2) 5px,var(--____highlight-tintColor2) 10px)}.MentionLink .new.-solid .shortName{background-image:linear-gradient(var(--____highlight-tintColor2),var(--____highlight-tintColor2))}.MentionLink .new.-side .shortName{box-shadow:0 -5px 3px -4px inset var(--____highlight-solidColor)}.MentionLink .serverName.-faded{color:var(--linkFaint)}.mention-link-popover{max-height:20rem;max-width:70ch;overflow:hidden}.MentionsLine{word-break:break-all}.MentionsLine .mention-link:not(:first-child):before{content:" "}.MentionsLine .showMoreLess{color:var(--link);margin-left:.5em;white-space:normal}.HashtagLink{color:var(--link);display:inline-block;position:relative;white-space:normal}.RichContent{font-family:var(--font)}.RichContent.-faint{--text:var(--textFaint)!important;--link:var(--linkFaint)!important;--funtextGreentext:var(--funtextGreentextFaint)!important;--funtextCyantext:var(--funtextCyantextFaint)!important}.RichContent blockquote{border-left:.2em solid var(--textFaint);font-style:italic;margin:.2em 0 .2em .2em;padding-left:1em}.RichContent pre{overflow:auto}.RichContent code,.RichContent kbd,.RichContent pre,.RichContent samp,.RichContent var{font-family:var(--monoFont)}.RichContent p{margin:0 0 1em}.RichContent p:last-child{margin:0}.RichContent h1{font-size:1.1em;line-height:1.2em;margin:1.4em 0}.RichContent h2{font-size:1.1em;margin:1em 0}.RichContent h3{font-size:1em;margin:1.2em 0}.RichContent h4{margin:1.1em 0}.RichContent .emoji,.RichContent .img{display:inline-block}.RichContent .emoji{height:var(--emoji-size,32px);width:var(--emoji-size,32px)}.RichContent .img,.RichContent video{max-height:400px;max-width:100%;-o-object-fit:contain;object-fit:contain;vertical-align:middle}.RichContent .greentext{color:var(--funtextGreentext)}.RichContent .cyantext{color:var(--funtextCyantext)}a .RichContent{color:var(--link)!important}.poll .votes{display:flex;flex-direction:column;margin:0 0 .5em}.poll .poll-option{margin:.75em .5em}.poll .poll-option .input{line-height:inherit}.poll .option-result{color:var(--textLight);display:flex;flex-direction:row;height:100%;position:relative}.poll .option-result-label{align-items:center;display:flex;padding:.1em .25em;word-break:break-word;z-index:1}.poll .result-percentage{flex-shrink:0;width:3.5em}.poll .result-fill{border-radius:var(--roundness);height:100%;left:0;position:absolute;top:0;transition:width .5s}.poll .option-vote{align-items:center;display:flex}.poll input{width:3.5em}.poll .footer{align-items:center;display:flex}.poll.loading *{cursor:progress}.poll .poll-vote-button{margin-right:.5em;padding:0 .5em}.poll .poll-checkbox{display:none}.StatusBody{display:flex;flex-direction:column}.StatusBody .emoji{--_still_image-label-scale:0.5}.StatusBody .attachments{margin-top:.5em}.StatusBody .summary,.StatusBody .text{word-wrap:break-word;line-height:var(--post-line-height);overflow-wrap:break-word;white-space:pre-wrap;word-break:break-word}.StatusBody .summary{display:block;font-style:italic;padding-bottom:.5em}.StatusBody .text.-single-line{height:1.4em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.StatusBody .summary-wrapper{border-color:var(--border);border-style:solid;border-width:0 0 1px;flex-grow:0;margin-bottom:.5em}.StatusBody .summary-wrapper.-tall{position:relative}.StatusBody .summary-wrapper.-tall .summary{max-height:2em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.StatusBody .text-wrapper{display:flex;flex-flow:column nowrap}.StatusBody .text-wrapper.-tall-status{height:220px;overflow-x:hidden;overflow-y:hidden;position:relative;z-index:1}.StatusBody .text-wrapper.-tall-status .media-body{-webkit-mask:linear-gradient(0deg,#fff,transparent) bottom/100% 70px no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff,transparent) bottom/100% 70px no-repeat,linear-gradient(0deg,#fff,#fff);mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;min-height:0}.StatusBody .cw-status-hider,.StatusBody .status-unhider,.StatusBody .tall-status-hider,.StatusBody .tall-subject-hider{display:inline-block;text-align:center;width:100%;word-break:break-all}.StatusBody .tall-status-hider{height:70px;line-height:110px;margin-top:150px;position:absolute;z-index:2}.StatusBody .tall-subject-hider{padding-bottom:.5em}.StatusBody .cw-status-hider,.StatusBody .status-unhider{word-break:break-all}.StatusBody .cw-status-hider svg,.StatusBody .status-unhider svg{color:inherit}.StatusBody.-compact{--emoji-size:16px;align-items:top;flex-direction:row}.StatusBody.-compact .attachments,.StatusBody.-compact .body{max-height:3.25em}.StatusBody.-compact .body{flex:5 1 auto;mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-image:linear-gradient(180deg,#fff 2em,transparent 3em);mask-image:linear-gradient(180deg,#fff 2em,transparent 3em);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-repeat:repeat-x,repeat;mask-repeat:repeat-x,repeat;-webkit-mask-size:auto 3.5em,auto auto;mask-size:auto 3.5em,auto auto;min-width:5em;overflow:hidden;white-space:normal}.StatusBody.-compact .attachments{flex:1 1 0;height:100%;margin-left:.5em;margin-top:0;min-width:5em}.StatusBody.-compact .summary-wrapper{border:none;display:inline-block;line-height:inherit;margin:0}.StatusBody.-compact .summary-wrapper .summary:after{content:": "}.StatusBody.-compact .text-wrapper{display:inline-block}.link-preview-card{border-color:var(--border);border-radius:var(--roundness);border-style:solid;border-width:1px;color:var(--text);cursor:pointer;display:flex;flex-direction:row;margin-top:.5em;overflow:hidden}.link-preview-card .card-image{flex-shrink:0;max-width:25%;width:120px}.link-preview-card .card-image img{border-radius:var(--roundness);height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.link-preview-card .card-content{display:flex;flex-direction:column;margin:.5em;max-height:100%}.link-preview-card .card-host{font-size:.85em}.link-preview-card .card-description{line-height:1.2em;margin:.5em 0 0;max-height:calc(3.6em - 1px);overflow:hidden;text-overflow:ellipsis;word-break:break-word}.link-preview-card .nsfw-alert{margin:2em 0}.StatusContent{flex:1;min-width:0}.post-status-form{position:relative}.post-status-form .attachments{margin-bottom:.5em}.post-status-form .form-bottom{display:flex;height:2.5em;justify-content:space-between;padding:.5em}.post-status-form .form-bottom button{width:10em}.post-status-form .form-bottom p{display:flex;margin:.35em;padding:.35em}.post-status-form .form-bottom-left{display:flex;flex:1;margin-right:7px;max-width:10em;padding-right:7px}.post-status-form .preview-heading{display:flex;padding-left:.5em}.post-status-form .preview-toggle{cursor:pointer;flex:1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.post-status-form .preview-toggle:hover{text-decoration:underline}.post-status-form .preview-toggle i,.post-status-form .preview-toggle svg{font-size:.8em;margin-left:.2em;transform:rotate(90deg)}.post-status-form .preview-container{margin-bottom:1em}.post-status-form .preview-error{color:var(--textFaint);font-style:italic}.post-status-form .preview-status{border:1px solid var(--border);border-radius:var(--roundness);margin:0;padding:.5em}.post-status-form .reply-or-quote-selector{margin-bottom:.5em}.post-status-form .text-format .only-format{color:var(--textFaint)}.post-status-form .visibility-tray{align-items:baseline;display:flex;justify-content:space-between;padding-top:5px}.post-status-form .visibility-notice.edit-warning>:first-child{margin-top:0}.post-status-form .visibility-notice.edit-warning>:last-child{margin-bottom:0}.post-status-form .media-upload-icon{justify-content:left;order:1}.post-status-form .emoji-icon{justify-content:center;order:2}.post-status-form .poll-icon{justify-content:right;order:3}.post-status-form .emoji-icon,.post-status-form .media-upload-icon,.post-status-form .poll-icon{align-items:center;display:flex;flex:1;font-size:1.85em;line-height:1.1;padding:0 .1em}.post-status-form .error{text-align:center}.post-status-form .media-upload-wrapper{margin-bottom:.5em;margin-right:.2em;width:18em}.post-status-form .media-upload-wrapper img,.post-status-form .media-upload-wrapper video{max-height:10em;-o-object-fit:contain;object-fit:contain}.post-status-form .media-upload-wrapper .video{max-height:10em}.post-status-form .media-upload-wrapper input{flex:1;width:100%}.post-status-form .status-input-wrapper{display:flex;flex-direction:column;position:relative;width:100%}.post-status-form .btn[disabled]{cursor:not-allowed}.post-status-form form{display:flex;flex-direction:column;margin:.6em;position:relative}.post-status-form .form-group{display:flex;flex-direction:column;line-height:1.85;padding:.25em .5em .5em}.post-status-form .input.form-post-body{background:transparent;box-sizing:content-box;height:calc(var(--post-line-height)*1em);min-height:calc(var(--post-line-height)*1em);overflow:hidden;padding-bottom:calc(var(--_padding) + var(--post-line-height)*1em);resize:none;transition:min-height .2s .1s}.post-status-form .input.form-post-body.scrollable-form{overflow-y:auto}.post-status-form .main-input{position:relative}.post-status-form .character-counter{bottom:0;margin:0 .5em;padding:0;position:absolute;right:0}.post-status-form .character-counter.error{color:var(--cRed)}@keyframes fade-in{0%{opacity:0}to{opacity:.6}}@keyframes fade-out{0%{opacity:.6}to{opacity:0}}.post-status-form .drop-indicator{align-items:center;background-color:var(--bg);border:2px dashed var(--text);border-radius:var(--roundness);color:var(--text);display:flex;font-size:5em;height:100%;justify-content:center;opacity:.6;position:absolute;width:100%}.remote-follow{max-width:220px}.remote-follow .remote-button{min-height:2em;width:100%}.dark-overlay:before{background:rgba(27,31,35,.5);bottom:0;content:" ";left:0;right:0;z-index:2000}.dark-overlay:before,.dialog-modal.panel{cursor:default;display:block;position:fixed;top:0}.dialog-modal.panel{left:50%;margin:15vh auto;max-height:80vh;max-width:90vw;transform:translateX(-50%);z-index:2001}.dialog-modal.panel .dialog-modal-heading .title{text-align:center}.dialog-modal.panel .dialog-modal-content{margin:0;padding:1rem;white-space:normal}.dialog-modal.panel .dialog-modal-footer{border-top:1px solid var(--border);display:flex;justify-content:flex-end;margin:0;padding:.5em}.dialog-modal.panel .dialog-modal-footer button{margin-left:.5rem;width:auto}.moderation-tools-popover{height:100%}.moderation-tools-popover .trigger{display:flex!important;height:100%}.moderation-tools-button i,.moderation-tools-button svg{font-size:.8em}.AccountActions .ellipsis-button{margin:-.5em 0;padding:.5em 0;text-align:center;width:2.5em}.user-note{display:flex;flex-direction:column}.user-note .heading{align-items:center;display:flex;flex-direction:row;justify-content:space-between;margin-bottom:.75em}.user-note .heading .btn{min-width:95px}.user-note .heading .buttons{display:flex;flex-direction:row;justify-content:right}.user-note .heading .buttons .btn{margin-left:.5em}.user-note .note-text{align-self:stretch}.user-note .note-text.-blank{color:var(--textFaint);font-style:italic}.user-card{position:relative;z-index:1}.user-card:hover{--_still-image-img-visibility:visible;--_still-image-canvas-visibility:hidden;--_still-image-label-visibility:hidden}.user-card .panel-heading{align-items:stretch;background:transparent;box-shadow:none;flex-direction:column;padding:.5em 0;position:relative;text-align:center}.user-card .background-image{background-color:var(--profileBg);background-size:cover;border-bottom-left-radius:calc(var(--__roundnessBottom, --panelRadius) - 1px);border-bottom-right-radius:calc(var(--__roundnessBottom, --panelRadius) - 1px);border-top-left-radius:calc(var(--__roundnessTop, --panelRadius) - 1px);border-top-right-radius:calc(var(--__roundnessTop, --panelRadius) - 1px);bottom:0;left:0;-webkit-mask:linear-gradient(0deg,#fff,transparent) bottom no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff,transparent) bottom no-repeat,linear-gradient(0deg,#fff,#fff);mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-size:100% 60%;mask-size:100% 60%;position:absolute;right:0;top:0;z-index:-2}.user-card .background-image.hide-bio{-webkit-mask-size:100% 40px;mask-size:100% 40px}.user-card-bio{display:block;line-height:1.3;margin:0;padding:1em;text-align:center}.user-card-bio img{max-height:400px;max-width:100%;-o-object-fit:contain;object-fit:contain;vertical-align:middle}.user-card.-rounded-t{--__roundnessTop:var(--roundness);--__roundnessBottom:0;border-top-left-radius:var(--roundness);border-top-right-radius:var(--roundness)}.user-card.-popover,.user-card.-rounded{--__roundnessTop:var(--roundness);--__roundnessBottom:var(--roundness);border-radius:var(--roundness)}.user-card.-bordered{border-color:var(--border);border-style:solid;border-width:1px}.user-info{padding:0 26px}.user-info .container{align-items:flex-start;display:flex;max-height:56px;min-width:0;padding:16px 0 6px}.user-info .container>*{min-width:0}.user-info .container>a{display:flex;vertical-align:middle}.user-info .container .Avatar{--_avatarShadowBox:var(--avatarShadow);--_avatarShadowFilter:var(--avatarShadowFilter);--_avatarShadowInset:var(--avatarShadowInset);height:56px;-o-object-fit:cover;object-fit:cover;width:56px}.user-info-avatar{cursor:pointer;position:relative}.user-info-avatar.-overlay{align-items:center;background-color:rgba(0,0,0,.3);border-radius:var(--roundness);bottom:0;display:flex;justify-content:center;left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .2s ease}.user-info-avatar.-overlay svg{color:#fff}.user-info-avatar:hover .user-info-avatar.-overlay{opacity:1}.user-info .edit-profile-button,.user-info .external-link-button{cursor:pointer;margin:-.5em 0;padding:.5em 0;text-align:center;width:2.5em}.user-info .edit-profile-button:not(:hover) .icon,.user-info .external-link-button:not(:hover) .icon{color:var(--lightText)}.user-info .bottom-line{align-items:baseline;font-size:1.1em;font-weight:light}.user-info .bottom-line .lock-icon{margin-left:.5em}.user-info .bottom-line .user-screen-name{color:var(--text);flex:0 1 auto;min-width:1px;overflow:hidden;text-overflow:ellipsis}.user-info .bottom-line .dailyAvg{color:var(--text);flex:0 0 auto;font-size:.7em;margin-left:1em;min-width:1px}.user-info .bottom-line .user-role{flex:none}.user-info .user-summary{--emoji-size:1.7em;display:block;flex:1 1 0;line-height:2em;margin-left:.6em;text-align:left;text-overflow:ellipsis;white-space:nowrap;z-index:1}.user-info .user-summary .RichContent{--link:var(--text)!important}.user-info .user-summary .bottom-line,.user-info .user-summary .top-line{display:flex}.user-info .user-name{flex:1 1 auto;font-size:1.1em;margin-right:1em;overflow:hidden;text-overflow:ellipsis}.user-info .user-meta{align-items:baseline;display:flex;flex-wrap:wrap;line-height:22px;margin-bottom:.15em}.user-info .user-meta .following{flex:1 0 auto;margin:0 0 .25em;text-align:left}.user-info .user-meta .highlighter{align-self:start;display:flex;flex:0 1 auto;flex-wrap:wrap;margin-right:-.5em}.user-info .user-meta .highlighter .userHighlightCl{flex:1 0 auto;padding:2px 10px}.user-info .user-meta .highlighter .userHighlightSel{flex:1 0 auto;padding-bottom:0;padding-top:0}.user-info .user-meta .highlighter .userHighlightText{flex:1 0 auto;width:70px}.user-info .user-meta .highlighter .userHighlightCl,.user-info .user-meta .highlighter .userHighlightSel,.user-info .user-meta .highlighter .userHighlightText{margin-bottom:.25em;margin-right:.5em;vertical-align:top}.user-info .user-interactions{display:flex;flex-flow:row wrap;margin-right:-.75em;position:relative}.user-info .user-interactions>*{margin:0 .75em .6em 0;min-width:95px;white-space:nowrap}.user-info .user-interactions button{margin:0}.user-info .user-note{margin:0 .75em .6em 0}.sidebar .edit-profile-button{display:none}.user-counts{display:flex;flex-wrap:wrap;justify-content:space-between;line-height:16px;padding:.5em 1.5em 0;text-align:center}.user-count{flex:1 0 auto;margin:0 .5em;padding:.5em 0}.user-count h5{font-size:1em;font-weight:bolder;margin:0 0 .25em}.user-count a{text-decoration:none}.mute-expiry{display:flex;flex-direction:row}.user-panel .panel{-webkit-backdrop-filter:var(--backdrop-filter);backdrop-filter:var(--backdrop-filter);background:var(--background)}.user-panel .signed-in{overflow:visible;z-index:10}.NavigationEntry.menu-item{--__line-height:2.5em;--__horizontal-gap:0.5em;--__vertical-gap:0.4em;align-items:baseline;display:flex;padding:0}.NavigationEntry.menu-item[aria-expanded]{padding-right:var(--__horizontal-gap)}.NavigationEntry.menu-item .main-link{box-sizing:border-box;flex:1;line-height:var(--__line-height);padding:var(--__vertical-gap) var(--__horizontal-gap)}.NavigationEntry.menu-item .menu-icon{line-height:var(--__line-height);margin-right:var(--__horizontal-gap);padding:0;width:var(--__line-height)}.NavigationEntry.menu-item .timelines-chevron{line-height:var(--__line-height);margin-right:0;padding:0;width:var(--__line-height)}.NavigationEntry.menu-item .extra-button{line-height:var(--__line-height);padding:0;text-align:center;width:var(--__line-height)}.NavigationEntry.menu-item .extra-button:last-child{margin-right:calc(var(--__horizontal-gap)*-1)}.NavigationEntry.menu-item .badge{margin:0 var(--__horizontal-gap)}.NavigationPins{display:flex;flex-wrap:wrap;height:100%;overflow:hidden}.NavigationPins .pinned-item{box-sizing:border-box;flex:1 0 3em;height:100%;min-width:2em;overflow:visible;position:relative;text-align:center}.NavigationPins .pinned-item .iconLetter,.NavigationPins .pinned-item .svg-inline--fa{margin:0}.NavigationPins .pinned-item.toggled{border-bottom:4px solid;margin-bottom:-4px}.NavPanel .panel{box-shadow:var(--shadow);overflow:hidden}.NavPanel ul{list-style:none;margin:0;padding:0}.NavPanel .navigation-chevron{margin-right:.8em}.NavPanel .navigation-chevron,.NavPanel .timelines-chevron{font-size:1.1em;margin-left:.8em}.NavPanel .timelines-background{padding:0 0 0 .6em}.NavPanel .nav-panel-heading{--panel-heading-height-padding:0px}.features-panel li{line-height:24px}.who-to-follow *{vertical-align:middle}.who-to-follow img{height:32px;width:32px}.who-to-follow{margin:0;padding:0 1em}.who-to-follow-items{margin:1em 0;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.who-to-follow-more{margin:1em 0;padding:0;text-align:center}.floating-shout{bottom:.5em;max-width:25em;position:fixed;z-index:var(--ZI_popovers)}.floating-shout.-left{left:.5em}.floating-shout:not(.-left){right:.5em}.shout-panel .shout-heading{cursor:pointer}.shout-panel .shout-heading .icon{color:var(--text);margin-right:.5em}.shout-panel .shout-heading .title{align-items:center;display:flex;justify-content:space-between}.shout-panel .shout-window{max-height:20em;overflow-x:hidden;overflow-y:auto}.shout-panel .shout-window-container{height:100%}.shout-panel .shout-message{display:flex;padding:.2em .5em}.shout-panel .shout-avatar img{border-radius:var(--roundness);height:24px;margin-right:.5em;margin-top:.25em;width:24px}.shout-panel .shout-input{display:flex}.shout-panel .shout-input textarea{flex:1;margin:.6em;min-height:3.5em;resize:none}.shout-panel .shout-panel .title{display:flex;justify-content:space-between}@keyframes media-fadein{0%{opacity:0}to{opacity:1}}.media-modal-view .modal-image-container{max-height:100%;max-width:100%;overflow:hidden}.media-modal-view .modal-image-container,.media-modal-view .modal-image-container-inner{align-items:center;display:flex;flex-direction:column;flex-grow:1;height:100%;justify-content:center;width:100%}.media-modal-view .counter,.media-modal-view .description{color:#fff;margin-top:1em;padding:.2em 2em;text-shadow:0 0 10px #000,0 0 10px #000}.media-modal-view .description{flex:0 0 auto;max-height:9.5em;max-width:500px;min-height:1em;overflow-y:auto;word-break:break-all}.media-modal-view .modal-image{animation:media-fadein .1s cubic-bezier(.7,0,1,.6);image-orientation:from-image;max-height:100%;max-width:100%}.media-modal-view .modal-image.loading{opacity:.5}.media-modal-view .loading-spinner{align-items:center;display:flex;height:100%;justify-content:center;pointer-events:none;position:absolute;width:100%}.media-modal-view .loading-spinner svg{color:#fff}.media-modal-view .modal-view-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;box-shadow:none;cursor:pointer;height:3em;opacity:0;overflow:visible;padding:0;transition:opacity 333ms cubic-bezier(.4,0,.22,1);width:3em}.media-modal-view .modal-view-button .button-icon{background-color:rgba(0,0,0,.3);color:#fff;font-size:1rem;height:3em;line-height:3em;position:absolute;text-align:center;width:3em}.media-modal-view .modal-view-button-arrow{display:block;height:3em;margin-top:1.5em;position:absolute;top:50%;width:3em}.media-modal-view .modal-view-button-arrow .arrow-icon{background-color:rgba(0,0,0,.3);color:#fff;line-height:3em;position:absolute;text-align:center;top:0}.media-modal-view .modal-view-button-arrow--prev{left:0}.media-modal-view .modal-view-button-arrow--prev .arrow-icon{left:.5em}.media-modal-view .modal-view-button-arrow--next{right:0}.media-modal-view .modal-view-button-arrow--next .arrow-icon{right:.5em}.media-modal-view .modal-view-button-hide{position:absolute;right:0;top:0}.media-modal-view .modal-view-button-hide .button-icon{right:.5em;top:.5em}.modal-view.media-modal-view{flex-direction:column;overflow:hidden;z-index:var(--ZI_media_modal)}.modal-view.media-modal-view .modal-view-button-arrow,.modal-view.media-modal-view .modal-view-button-hide{opacity:.75}.modal-view.media-modal-view .modal-view-button-arrow:focus,.modal-view.media-modal-view .modal-view-button-arrow:hover,.modal-view.media-modal-view .modal-view-button-hide:focus,.modal-view.media-modal-view .modal-view-button-hide:hover{box-shadow:none;outline:none}.modal-view.media-modal-view .modal-view-button-arrow:hover,.modal-view.media-modal-view .modal-view-button-hide:hover{opacity:1}.side-drawer-container{align-items:stretch;display:flex;height:100%;left:0;position:fixed;top:0;transition-duration:0s;transition-property:transform;width:100%;z-index:var(--ZI_navbar)}.side-drawer-container-open{transform:translate(0)}.side-drawer-container-closed{transform:translate(-100%);transition-delay:.35s}.side-drawer-darken{background-color:rgba(0,0,0,.5);height:100vh;left:0;position:fixed;top:0;transition:.35s;transition-property:background-color;width:100vw;z-index:-1}.side-drawer-darken-closed{background-color:transparent}.side-drawer-click-outside{flex:1 1 100%}.side-drawer{background-color:var(--background);box-shadow:var(--shadow);flex:0 0 80%;margin:0 0 0 -100px;max-width:20em;overflow-x:hidden;padding:0 0 1em 100px;transition:.35s;transition-property:transform;transition-timing-function:cubic-bezier(0,1,.5,1);width:80%}.side-drawer .badge{margin-left:10px}.side-drawer-logo-wrapper{align-items:center;display:flex;padding:.85em}.side-drawer-logo-wrapper img{flex:none;height:50px;margin-right:.85em}.side-drawer-logo-wrapper span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-drawer-click-outside-closed{flex:0 0 0}.side-drawer-closed{transform:translate(-100%)}.side-drawer-heading{align-items:stretch;background:transparent;display:flex;flex-direction:column;margin:0;padding:0}.side-drawer ul{border-bottom:1px solid;border-color:var(--border);list-style:none;margin:0;padding:0}.side-drawer ul:last-child{border:0}.side-drawer li{padding:0}.side-drawer li a,.side-drawer li button{box-sizing:border-box;display:block;height:3em;line-height:3em;padding:0 .7em}.MobilePostButton.button-default{align-items:center;border-radius:100%;bottom:1.5em;box-shadow:0 2px 2px rgba(0,0,0,.3),0 4px 6px rgba(0,0,0,.3);display:flex;height:5em;justify-content:center;position:fixed;right:1.5em;transition:transform .35s;transition-timing-function:cubic-bezier(0,1,.5,1);width:5em;z-index:10}.MobilePostButton.hidden{transform:translateY(150%)}.MobilePostButton svg{color:var(--text);font-size:1.5em}@media (min-width:801px){.new-status-button:not(.always-show){display:none}}.ReplyButton{display:flex}.ReplyButton>:first-child{margin:-10px -8px -10px -10px;padding:10px}.ReplyButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ReplyButton .interactive.-active .svg-inline--fa,.ReplyButton .interactive:hover .svg-inline--fa{color:var(--cBlue)}.ReplyButton .interactive .focus-marker{visibility:hidden}.ReplyButton .interactive:focus:not(:focus-visible,:hover) .focus-marker{visibility:hidden}.ReplyButton .interactive:focus .focus-marker,.ReplyButton .interactive:hover .focus-marker{visibility:visible}.ReplyButton .interactive:focus-visible .focus-marker{visibility:visible}.FavoriteButton{display:flex}.FavoriteButton>:first-child{margin:-10px -8px -10px -10px;padding:10px}.FavoriteButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.FavoriteButton .interactive .svg-inline--fa{animation-duration:.6s}.FavoriteButton .interactive.-favorited .svg-inline--fa,.FavoriteButton .interactive:hover .svg-inline--fa{color:var(--cOrange)}.FavoriteButton .interactive .focus-marker{visibility:hidden}.FavoriteButton .interactive .active-marker{visibility:visible}.FavoriteButton .interactive:focus:not(:focus-visible,:hover) .focus-marker{visibility:hidden}.FavoriteButton .interactive:focus:not(:focus-visible,:hover) .active-marker{visibility:visible}.FavoriteButton .interactive:focus .focus-marker,.FavoriteButton .interactive:hover .focus-marker{visibility:visible}.FavoriteButton .interactive:focus .active-marker,.FavoriteButton .interactive:hover .active-marker{visibility:hidden}.FavoriteButton .interactive:focus-visible .focus-marker{visibility:visible}.FavoriteButton .interactive:focus-visible .active-marker{visibility:hidden}.ReactButton .reaction-picker-filter{display:flex;padding:.5em}.ReactButton .reaction-picker-filter input{flex:1}.ReactButton .reaction-picker-divider{background-color:var(--border);height:1px;margin:.5em;width:100%}.ReactButton .reaction-picker{align-content:flex-start;display:flex;flex-wrap:wrap;font-size:1.5em;height:9em;-webkit-mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-size:100% 20px,100% 20px,auto;mask-size:100% 20px,100% 20px,auto;overflow-y:scroll;padding:.5em;text-align:center;transition:-webkit-mask-size .15s;transition:mask-size .15s;transition:mask-size .15s,-webkit-mask-size .15s;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:10em}.ReactButton .reaction-picker .emoji-button{align-content:center;cursor:pointer;flex-basis:20%;line-height:1.5}.ReactButton .reaction-picker .emoji-button:hover{transform:scale(1.25)}.ReactButton .popover-trigger{margin:-10px;padding:10px}.ReactButton .popover-trigger .focus-marker{visibility:hidden}.ReactButton .popover-trigger:focus:not(:focus-visible,:hover) .focus-marker{visibility:hidden}.ReactButton .popover-trigger:focus .focus-marker,.ReactButton .popover-trigger:hover .focus-marker{visibility:visible}.ReactButton .popover-trigger:focus-visible .focus-marker{visibility:visible}.RetweetButton{display:flex}.RetweetButton>:first-child{margin:-10px -8px -10px -10px;padding:10px}.RetweetButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.RetweetButton .interactive .svg-inline--fa{animation-duration:.6s}.RetweetButton .interactive.-repeated .svg-inline--fa,.RetweetButton .interactive:hover .svg-inline--fa{color:var(--cGreen)}.RetweetButton .interactive .focus-marker{visibility:hidden}.RetweetButton .interactive .active-marker{visibility:visible}.RetweetButton .interactive:focus:not(:focus-visible,:hover) .focus-marker{visibility:hidden}.RetweetButton .interactive:focus:not(:focus-visible,:hover) .active-marker{visibility:visible}.RetweetButton .interactive:focus .focus-marker,.RetweetButton .interactive:hover .focus-marker{visibility:visible}.RetweetButton .interactive:focus .active-marker,.RetweetButton .interactive:hover .active-marker{visibility:hidden}.RetweetButton .interactive:focus-visible .focus-marker{visibility:visible}.RetweetButton .interactive:focus-visible .active-marker{visibility:hidden}.ExtraButtons .popover-trigger{margin:-10px;padding:10px;position:static}.ExtraButtons .popover-trigger:hover .svg-inline--fa{color:var(--text)}.ExtraButtons .popover-trigger-button{width:auto}.ExtraButtons .popover-trigger-button .focus-marker{visibility:hidden}.ExtraButtons .popover-trigger-button:focus:not(:focus-visible,:hover) .focus-marker{visibility:hidden}.ExtraButtons .popover-trigger-button:focus .focus-marker,.ExtraButtons .popover-trigger-button:hover .focus-marker{visibility:visible}.ExtraButtons .popover-trigger-button:focus-visible .focus-marker{visibility:visible}.avatars{display:flex;flex-wrap:wrap;height:24px;margin:0;padding:0}.avatars .avatars-item{margin:0 0 5px 5px}.avatars .avatars-item:first-child{padding-left:5px}.avatars .avatars-item .avatar-small{border-radius:var(--roundness);height:24px;width:24px}.status-popover.popover{border-color:var(--border);border-style:solid;border-width:1px;font-size:1rem;max-width:95%;min-width:15em}.status-popover.popover .Status.Status{border:none}.status-popover.popover .status-preview-no-content{padding:1em;text-align:center}.status-popover.popover .status-preview-no-content i{font-size:2em}.user-list-popover{--emoji-size:16px;padding:.5em}.user-list-popover .user-list-row{display:flex;flex-direction:row;padding:.25em}.user-list-popover .user-list-row .user-list-names{display:flex;flex-direction:column;margin-left:.5em;min-width:5em}.user-list-popover .user-list-row .user-list-names img{height:1em;width:1em}.user-list-popover .user-list-row .user-list-screen-name{font-size:.65em}.EmojiReactions{--emoji-size:calc(var(--emojiSize, 1.25em)*var(--emojiReactionsScale, 1));display:flex;flex-wrap:wrap;margin-top:.25em}.EmojiReactions .emoji-reaction-container{align-items:stretch;display:flex;margin-right:.5em;margin-top:.5em}.EmojiReactions .emoji-reaction-container .emoji-reaction-popover{padding:0}.EmojiReactions .emoji-reaction-container .emoji-reaction-popover .emoji-reaction-count-button{align-items:center;border-bottom-left-radius:0;border-top-left-radius:0;box-sizing:border-box;display:inline-flex;height:100%;justify-content:center;margin:0;min-width:2em}.EmojiReactions .emoji-reaction-container .emoji-reaction-popover .emoji-reaction-count-button.-picked-reaction{border:1px solid var(--accent);margin-right:-1px}.EmojiReactions .emoji-reaction{align-items:center;border-bottom-right-radius:0;border-top-right-radius:0;box-sizing:border-box;display:flex;justify-content:center;margin:0;padding-left:.5em}.EmojiReactions .emoji-reaction .reaction-emoji{align-items:center;display:flex;height:var(--emoji-size);justify-content:center;line-height:var(--emoji-size);margin-right:.25em;width:var(--emoji-size)}.EmojiReactions .emoji-reaction .reaction-emoji-content{font-size:calc(var(--emoji-size)*.8);height:auto;line-height:inherit;margin:0;max-height:100%;max-width:100%;overflow:hidden;width:auto}.EmojiReactions .emoji-reaction:focus{outline:none}.EmojiReactions .emoji-reaction .svg-inline--fa{color:var(--text)}.EmojiReactions .emoji-reaction.-picked-reaction{border:1px solid var(--accent);margin-left:-1px;margin-right:-1px}.EmojiReactions .emoji-reaction.-picked-reaction .svg-inline--fa{color:var(--accent)}.EmojiReactions .emoji-reaction .focus-marker{visibility:hidden}.EmojiReactions .emoji-reaction .active-marker{visibility:visible}.EmojiReactions .emoji-reaction:focus:not(:focus-visible,:hover) .focus-marker{visibility:hidden}.EmojiReactions .emoji-reaction:focus:not(:focus-visible,:hover) .active-marker{visibility:visible}.EmojiReactions .emoji-reaction:focus .svg-inline--fa,.EmojiReactions .emoji-reaction:hover .svg-inline--fa{color:var(--accent)}.EmojiReactions .emoji-reaction:focus .focus-marker,.EmojiReactions .emoji-reaction:hover .focus-marker{visibility:visible}.EmojiReactions .emoji-reaction:focus .active-marker,.EmojiReactions .emoji-reaction:hover .active-marker{visibility:hidden}.EmojiReactions .emoji-reaction:focus-visible .svg-inline--fa{color:var(--accent)}.EmojiReactions .emoji-reaction:focus-visible .focus-marker{visibility:visible}.EmojiReactions .emoji-reaction:focus-visible .active-marker{visibility:hidden}.EmojiReactions .emoji-reaction-expand{align-items:center;display:flex;justify-content:center;margin-right:.5em;margin-top:.5em;padding:0 .5em}.EmojiReactions .emoji-reaction-expand:hover{text-decoration:underline}.Status{word-wrap:break-word;min-width:0;white-space:normal;word-break:break-word}.Status:hover{--_still-image-img-visibility:visible;--_still-image-canvas-visibility:hidden;--_still-image-label-visibility:hidden}.Status .gravestone{display:flex;padding:var(--status-margin)}.Status .gravestone .deleted-text{align-items:center;margin:.5em 0}.Status .status-container{display:flex;padding:var(--status-margin)}.Status .status-container>*{min-width:0}.Status .status-container.-repeat{padding-top:0}.Status .pin{align-items:center;display:flex;justify-content:flex-end;padding:var(--status-margin) var(--status-margin) 0}._misclick-prevention .Status{pointer-events:none}._misclick-prevention .Status .attachments{cursor:auto;pointer-events:auto}.Status .left-side{margin-right:var(--status-margin)}.Status .right-side{flex:1;min-width:0}.Status .usercard{margin-bottom:var(--status-margin)}.Status .status-username{--_still_image-label-scale:0.25;--emoji-size:14px;flex-shrink:1;font-weight:700;margin-right:.4em;max-width:85%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Status .status-favicon{height:18px;margin-right:.4em;width:18px}.Status .status-heading{margin-bottom:.5em}.Status .heading-name-row{display:flex;justify-content:space-between;line-height:1.3}.Status .heading-name-row a{display:inline-block;word-break:break-all}.Status .account-name{flex:1 1 0;margin-right:.4em;min-width:1.6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Status .heading-left{display:flex;min-width:0}.Status .heading-right{display:flex;flex-shrink:0}.Status .heading-right .button-unstyled{margin:-5px;padding:5px}.Status .heading-right .svg-inline--fa{margin-left:.25em}.Status .glued-label{display:inline-flex;white-space:nowrap}.Status .timeago{margin-right:.2em}.Status .heading-edited-row,.Status .heading-reply-row{align-content:baseline;align-items:stretch;font-size:.85em;line-height:130%;margin-top:.2em;max-width:100%;position:relative}.Status .mentions,.Status .reply-to-no-popover,.Status .reply-to-popover{flex-shrink:0;margin-right:.4em;min-width:0}.Status .reply-glued-label{margin-right:.5em}.Status .reply-to-popover .reply-to:hover:before{border-bottom:1px solid var(--faint);bottom:0;content:"";display:block;pointer-events:none;position:absolute;width:100%}.Status .reply-to-popover .faint-link:hover{text-decoration:none}.Status .reply-to-popover.-strikethrough .reply-to:after{border-bottom:1px solid var(--faint);content:"";display:block;pointer-events:none;position:absolute;top:50%;width:100%}.Status .mentions,.Status .reply-to{position:relative;white-space:nowrap}.Status .mentions-text,.Status .reply-to-text{color:var(--faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Status .mentions-line{display:inline}.Status .replies{display:flex;flex-wrap:wrap;font-size:.85em;line-height:1.3;margin-top:.25em}.Status .replies>*{margin-right:.4em}.Status .reply-link{height:17px}.Status .repeat-info{padding:.4em var(--status-margin)}.Status .repeat-info .repeat-icon{color:var(--cGreen)}.Status .repeater-avatar{border-radius:var(--roundness);height:20px;margin-left:28px;width:20px}.Status .repeater-name{margin-right:0;text-overflow:ellipsis}.Status .repeater-name .emoji{height:14px;-o-object-fit:contain;object-fit:contain;vertical-align:middle;width:14px}.Status .status-fadein{animation-duration:.4s;animation-name:fadein}@keyframes fadein{0%{opacity:0}to{opacity:1}}.Status .status-actions{display:flex;margin-top:var(--status-margin);position:relative;width:100%}.Status .status-actions>*{flex:1;max-width:4em}.Status .muted{display:flex;flex-wrap:nowrap;height:1.2em;line-height:1.2em;overflow:hidden;padding:.25em .6em;text-overflow:ellipsis}.Status .muted .mute-thread,.Status .muted .mute-words,.Status .muted .status-username{word-wrap:normal;white-space:nowrap;word-break:normal}.Status .muted .mute-words,.Status .muted .status-username{overflow:hidden;text-overflow:ellipsis}.Status .muted .status-username{flex:0 1 auto;font-size:smaller;font-weight:400;margin-right:.2em}.Status .muted .mute-thread{flex:0 0 auto}.Status .muted .mute-words{flex:1 0 5em;margin-left:.2em}.Status .muted .mute-words:before{content:" "}.Status .muted .unmute{display:block;flex:0 0 auto;margin-left:auto}.Status .reply-form{padding-bottom:0;padding-top:0}.Status .reply-body{flex:1}.Status .favs-repeated-users{margin-top:var(--status-margin)}.Status .stats{display:flex;line-height:1em;width:100%}.Status .avatar-row{align-items:center;display:flex;flex:1;overflow:hidden;position:relative}.Status .avatar-row:before{background-color:var(--textFaint);content:"";height:100%;left:0;position:absolute;width:1px}.Status .stat-count{margin-right:var(--status-margin);-webkit-user-select:none;-moz-user-select:none;user-select:none}.Status .stat-count .stat-title{color:var(--textFaint);font-size:.85em;position:relative;text-transform:uppercase}.Status .stat-count .stat-number{color:var(--text);font-size:1.1em;font-weight:bolder;line-height:1em}.Status .stat-count:hover .stat-title{text-decoration:underline}@media (max-width:800px){.Status .repeater-avatar{margin-left:20px}.Status .post-avatar{height:40px;width:40px}.Status .post-avatar.-compact{height:32px;width:32px}}.Status .quoted-status{border:1px solid var(--border);border-radius:var(--roundness);margin-top:.5em}.Status .quoted-status.-unavailable-prompt{padding:.5em}.Status .display-quoted-status-button{margin:.5em}.Status .display-quoted-status-button-icon{color:inherit}.Report .report-content,.Report .report-state{margin:.5em 0 1em}.Report .reported-status{border:1px solid var(--border);border-radius:var(--roundness);display:block;margin:.5em 0;padding:.5em}.Report .reported-status .status-content{pointer-events:none}.Report .reported-status .reported-status-heading{display:flex;justify-content:space-between;margin-bottom:.2em;width:100%}.Report .reported-status .reported-status-name{font-weight:700}.Report .note{margin-bottom:.5em;width:100%}.Notification{word-wrap:break-word;--emoji-size:14px;border-bottom:1px solid;border-color:var(--border);word-break:break-word}.Notification.Status{background-color:transparent!important}.Notification:hover{--_still-image-img-visibility:visible;--_still-image-canvas-visibility:hidden;--_still-image-label-visibility:hidden}.Notification.-muted{display:flex;flex-wrap:nowrap;height:1.2em;line-height:1.2em;overflow:hidden;padding:.25em .6em;text-overflow:ellipsis}.Notification.-muted .mute-thread,.Notification.-muted .mute-words,.Notification.-muted .status-username{word-wrap:normal;white-space:nowrap;word-break:normal}.Notification.-muted .mute-words,.Notification.-muted .status-username{overflow:hidden;text-overflow:ellipsis}.Notification.-muted .status-username{flex:0 1 auto;font-size:smaller;font-weight:400;margin-right:.2em}.Notification.-muted .mute-thread{flex:0 0 auto}.Notification.-muted .mute-words{flex:1 0 5em;margin-left:.2em}.Notification.-muted .mute-words:before{content:" "}.Notification.-muted .unmute{display:block;flex:0 0 auto;margin-left:auto}.Notification .type-icon{margin:0 .1em}.Notification.-type--repeat .type-icon{color:var(--cGreen)}.Notification.-type--follow .type-icon,.Notification.-type--follow-request .type-icon{color:var(--cBlue)}.Notification.-type--like .type-icon{color:var(--cOrange)}.Notification.-type--move .type-icon{color:var(--cBlue)}.ExtraNotifications,.ExtraNotifications .notification{align-items:stretch;display:flex;flex-direction:column;width:100%}.ExtraNotifications .notification{border-bottom:1px solid;border-color:var(--border)}.ExtraNotifications .extra-notification{padding:1em}.ExtraNotifications .icon{margin-right:.5em}.ExtraNotifications .tip{display:inline}.Notifications:not(.minimal){padding-bottom:15em}.Notifications .loadmore-error{color:var(--text)}.Notifications .notification{position:relative}.Notifications .notification .notification-overlay{bottom:0;left:0;pointer-events:none;position:absolute;right:0;top:0}.Notifications .notification.unseen .notification-overlay{background-image:linear-gradient(135deg,var(--badgeNotification) 4px,transparent 10px)}.notification{box-sizing:border-box}.notification .Status{flex:1}.notification:hover .animated.Avatar canvas{display:none}.notification:hover .animated.Avatar img{visibility:visible}.notification:last-child .Notification{border-bottom:none}.notification .non-mention{display:flex;flex:1;flex-wrap:nowrap;min-width:0;padding:.6em}.notification .non-mention .avatar-container{height:32px;width:32px}.notification .follow-request-accept:hover{color:var(--text)}.notification .follow-request-reject:hover{color:var(--cRed)}.notification .follow-text,.notification .move-text{display:flex;justify-content:space-between;overflow-wrap:break-word;padding:.5em 0}.notification .follow-text .follow-name,.notification .move-text .follow-name{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notification time{white-space:nowrap}.notification .notification-right{flex:1;min-width:0;padding-left:.8em}.notification .notification-right .timeago{min-width:3em;text-align:right}.notification .notification-right .timeago-link{margin-right:.2em}.notification .notification-right .expand-icon .svg-inline--fa{margin-left:.25em}.notification .emoji-reaction-emoji{font-size:1.3em;height:1.25em;max-width:1.25em;width:auto}.notification .emoji-reaction-emoji-image{-o-object-fit:contain;object-fit:contain;vertical-align:middle}.notification .notification-details{word-wrap:break-word;display:flex;flex:1 1 0;flex-wrap:nowrap;justify-content:space-between;line-height:var(--post-line-height);min-width:0;overflow:hidden;position:relative;width:100%}.notification .notification-details .name-and-action{flex:1;overflow:hidden;text-overflow:ellipsis}.notification .notification-details .username{font-weight:bolder;max-width:100%;text-overflow:ellipsis;white-space:nowrap}.notification .notification-details .timeago{margin-right:.2em}.notification .notification-details .status-content{margin:0;max-height:300px}.notification .notification-details h1{font-size:1em;line-height:1.5;margin:0 0 .3em;padding:0;word-break:break-all}.notification .notification-details h1 small{font-weight:lighter}.notification .notification-details p{margin:0 0 .3em}.MobileNav{z-index:var(--ZI_navbar)}.MobileNav .mobile-nav{box-sizing:border-box;display:grid;grid-template-columns:2fr auto;grid-template-rows:var(--navbar-height);line-height:var(--navbar-height);width:100%}.MobileNav .mobile-nav a{color:var(--link)}.MobileNav .mobile-inner-nav{align-items:center;display:flex;width:100%}.MobileNav .mobile-nav-button{cursor:pointer;display:inline-block;padding:0 1em;position:relative;text-align:center}.MobileNav .site-name{display:inline-block;padding:0 .3em}.MobileNav .item{display:flex}.MobileNav .mobile-notifications-drawer{-webkit-overflow-scrolling:touch;background:var(--background);box-shadow:var(--shadow);height:100vh;left:0;overflow-x:hidden;position:fixed;top:0;transform:translateX(0);transition-duration:.25s;transition-property:transform;width:100%;z-index:var(--ZI_navbar)}.MobileNav .mobile-notifications-drawer.-closed{box-shadow:none;transform:translateX(100%)}.MobileNav .mobile-notifications-header{align-items:center;box-shadow:var(--shadow);display:flex;height:3.5em;justify-content:space-between;line-height:3.5em;position:absolute;width:100%;z-index:calc(var(--ZI_navbar) + 100)}.MobileNav .mobile-notifications-header .spacer{flex:1}.MobileNav .mobile-notifications-header .title{font-size:1.3em;margin-left:.6em}.MobileNav .pins{flex:1}.MobileNav .pins .pinned-item{flex-grow:1}.MobileNav .mobile-notifications{height:calc(100vh - var(--navbar-height));margin-top:3.5em;overflow-x:hidden;overflow-y:scroll;width:100vw}.MobileNav .mobile-notifications .notifications{border-radius:0;box-shadow:none;padding:0}.MobileNav .mobile-notifications .notifications .panel{border-radius:0;box-shadow:none;margin:0}.MobileNav .mobile-notifications .notifications .panel:after{border-radius:0}.MobileNav .mobile-notifications .notifications .panel .panel-heading{border-radius:0;box-shadow:none}.MobileNav .confirm-modal.dark-overlay:before{z-index:3000}.MobileNav .confirm-modal.dark-overlay .dialog-modal.panel{z-index:3001}.SearchBar{align-items:baseline;display:inline-flex;justify-content:flex-end;vertical-align:baseline}.SearchBar.-expanded{width:100%}.SearchBar .search-bar-input,.SearchBar .search-button{height:29px}.SearchBar .search-bar-input{flex:1 0 auto}.SearchBar .cancel-search{height:50px}.SearchBar .cancel-icon{color:var(--text)}.DesktopNav{width:100%;z-index:var(--ZI_navbar)}.DesktopNav input{color:var(--inputTopbarText,var(--inputText))}.DesktopNav a{color:var(--link)}.DesktopNav .inner-nav{box-sizing:border-box;display:grid;grid-template-areas:"sitename logo actions";grid-template-columns:2fr auto 2fr;grid-template-rows:var(--navbar-height);margin:auto;max-width:980px;padding:0 1.2em}.DesktopNav.-column-stretch .inner-nav{--miniColumn:25rem;--maxiColumn:45rem;--columnGap:1em;max-width:calc(var(--sidebarColumnWidth, var(--miniColumn)) + var(--contentColumnWidth, var(--maxiColumn)) + var(--columnGap))}.DesktopNav.-logoLeft .inner-nav{grid-template-areas:"logo sitename actions";grid-template-columns:auto 2fr 2fr}.DesktopNav.-column-stretch.-wide .inner-nav{max-width:calc(var(--sidebarColumnWidth, var(--miniColumn)) + var(--contentColumnWidth, var(--maxiColumn)) + var(--notifsColumnWidth, var(--miniColumn)) + var(--columnGap))}.DesktopNav .button-default,.DesktopNav .button-default svg{color:var(--text)}.DesktopNav .logo{grid-area:logo;position:relative;transition:opacity;transition-duration:.1s;transition-timing-function:ease-out}@media (min-width:800px){.DesktopNav .logo{opacity:1!important}}.DesktopNav .logo .mask{background-color:var(--text);bottom:0;left:0;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;right:0;top:0}.DesktopNav .logo img{display:inline-block;height:var(--navbar-height)}.DesktopNav .nav-icon{height:100%;margin-left:.2em;text-align:center;width:2em}.DesktopNav .nav-icon .svg-inline--fa{color:var(--link)}.DesktopNav .sitename{grid-area:sitename}.DesktopNav .actions{grid-area:actions}.DesktopNav .item{display:flex;flex:1;flex-wrap:wrap;height:var(--navbar-height);line-height:var(--navbar-height);overflow:hidden}.DesktopNav .item.right{justify-content:flex-end;text-align:right}.DesktopNav .spacer{width:1em}.user-reporting-panel{max-height:80vh;max-width:700px;min-height:20vh;width:90vw}.user-reporting-panel .panel-body{border-top:1px solid;border-color:var(--border);display:flex;flex-direction:column-reverse;overflow:hidden}.user-reporting-panel-left{box-sizing:border-box;line-height:var(--post-line-height);padding:1.1em .7em .7em}.user-reporting-panel-left>div{margin-bottom:1em}.user-reporting-panel-left>div:last-child{margin-bottom:0}.user-reporting-panel-left p{margin-top:0}.user-reporting-panel-left textarea.form-control{line-height:16px;min-height:44px;overflow:hidden;resize:none;transition:min-height .2s .1s;width:100%}.user-reporting-panel-left .btn{min-width:10em;padding:0 2em}.user-reporting-panel-left .alert{line-height:1.3em;margin:1em 0 0}.user-reporting-panel-right{display:flex;flex-direction:column;overflow-y:auto}.user-reporting-panel-sitem{display:flex;justify-content:space-between}.user-reporting-panel-sitem>.Status{flex:1}.user-reporting-panel-sitem>.checkbox{margin:.75em}@media (min-width:801px){.user-reporting-panel .panel-body{flex-direction:row}.user-reporting-panel-left{border-right:1px solid;border-color:var(--border);max-width:320px;padding:1.1em;width:50%}.user-reporting-panel-left>div{margin-bottom:2em}.user-reporting-panel-right{flex:1 1 auto;margin-bottom:12px;width:50%}}.modal-view.edit-form-modal-view{align-items:flex-start}.edit-form-modal-panel{flex-shrink:0;margin-bottom:2em;margin-top:25%;max-width:700px;width:100%}@media(orientation:landscape){.edit-form-modal-panel{margin-top:8%}}.edit-form-modal-panel .form-bottom-left{max-width:6.5em}.edit-form-modal-panel .form-bottom-left .emoji-icon{justify-content:right}.modal-view.post-form-modal-view{align-items:flex-start}.post-form-modal-panel{flex-shrink:0;margin-bottom:2em;margin-top:25%;max-width:700px;width:100%}@media(orientation:landscape){.post-form-modal-panel{margin-top:8%}}.modal-view.status-history-modal-view{align-items:flex-start}.status-history-modal-panel{flex-shrink:0;margin-bottom:2em;margin-top:25%;max-width:700px;width:100%}@media(orientation:landscape){.status-history-modal-panel{margin-top:8%}}.global-notice-list{align-items:center;display:flex;flex-direction:column;pointer-events:none;position:fixed;top:calc(var(--navbar-height) + .5em);width:100%;z-index:var(--ZI_modals_popovers)}.global-notice-list .global-notice{display:flex;line-height:2;margin-bottom:.5em;max-width:calc(100% - 3em);padding-left:1.5em;pointer-events:auto;text-align:center;width:40em}.global-notice-list .global-notice .notice-message{flex:1 1 100%}.global-notice-list .close-notice{padding-right:.2em}.panel{--__panel-background:var(--background);--__panel-backdrop-filter:var(--backdrop-filter);display:flex;flex-direction:column;position:relative}.panel .tab-switcher .tabs{-webkit-backdrop-filter:var(--__panel-backdrop-filter);backdrop-filter:var(--__panel-backdrop-filter);background:var(--__panel-background)}.panel .panel-heading{background-color:inherit}.panel,.panel:after{border-radius:var(--roundness)}.panel:after{bottom:0;box-shadow:var(--shadow);content:"";left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:5}.panel-body{-webkit-backdrop-filter:var(--__panel-backdrop-filter);backdrop-filter:var(--__panel-backdrop-filter);background:var(--background);padding:var(--panel-body-padding,0)}.panel-body .tab-switcher .tabs{-webkit-backdrop-filter:none;backdrop-filter:none;background:none}.panel-body:empty:before{content:"¯\\_(ツ)_/¯";display:block;padding:1em;text-align:center}.panel-body>p{line-height:1.3;margin:0;padding:1em}.panel-footer,.panel-heading{--panel-heading-height-padding:calc(var(--panel-header-height)*0.2);--__panel-heading-gap:calc(var(--panel-header-height)*0.1565);--__panel-heading-height:var(--panel-header-height);--__panel-heading-height-inner:calc(var(--__panel-heading-height) - var(--panel-heading-height-padding, 0)*2);grid-column-gap:var(--__panel-heading-gap);-webkit-backdrop-filter:var(--__panel-backdrop-filter);backdrop-filter:var(--__panel-backdrop-filter);background-size:cover;box-sizing:border-box;display:grid;flex:none;font-size:calc(var(--panelHeaderSize)/3.2);grid-auto-columns:auto;grid-auto-flow:column;grid-template-columns:minmax(50%,1fr);height:var(--__panel-heading-height);line-height:var(--__panel-heading-height-inner);padding:var(--panel-heading-height-padding);position:relative;z-index:4}.panel-footer.-flexible-height,.panel-heading.-flexible-height{--__panel-heading-height:auto}.panel-footer.-flexible-height:after,.panel-footer.-flexible-height:before,.panel-heading.-flexible-height:after,.panel-heading.-flexible-height:before{display:none}.panel-footer.-stub,.panel-footer.-stub:after,.panel-heading.-stub,.panel-heading.-stub:after{border-radius:var(--roundness)}.panel-footer.-sticky,.panel-heading.-sticky{position:sticky;top:var(--navbar-height)}.panel-footer:after,.panel-footer:before,.panel-heading:after,.panel-heading:before{bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.panel-footer .title,.panel-heading .title{font-size:1.3em}.panel-footer .alert,.panel-heading .alert{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-footer:not(.-flexible-height)>.alert,.panel-footer:not(.-flexible-height)>.button-default,.panel-heading:not(.-flexible-height)>.alert,.panel-heading:not(.-flexible-height)>.button-default{align-self:stretch;box-sizing:border-box;height:var(--__panel-heading-height-inner);margin:0;min-height:0;min-width:1px;padding-bottom:0;padding-top:0}.panel-footer:not(.-flexible-height)>.alert,.panel-heading:not(.-flexible-height)>.alert{line-height:calc(var(--__panel-heading-height-inner) - 2px)}.panel-heading{align-items:start;background-image:linear-gradient(to bottom,var(--background),var(--background)),linear-gradient(to bottom,var(--__panel-background),var(--__panel-background));border-radius:var(--roundness) var(--roundness) 0 0;border-width:0 0 1px}.panel-heading:after{background-color:var(--background);border-radius:var(--roundness) var(--roundness) 0 0;box-shadow:var(--shadow);z-index:-2}.panel-heading:not(.-flexible-height)>.button-default{flex-shrink:0}.panel-heading .rightside-button{align-self:stretch;height:var(--__panel-heading-height);margin:calc(var(--panel-heading-height-padding)*-1) 0;margin-right:calc(var(--__panel-heading-gap)*-1);text-align:center;width:var(--__panel-heading-height)}.panel-heading .rightside-button>button{box-sizing:border-box;height:100%;padding:calc(var(--panel-heading-height-padding)*1) 0;text-align:center;width:100%}.panel-heading .rightside-button>button svg{font-size:1.2em}.panel-heading .rightside-icon{align-self:stretch;margin-right:calc(var(--__panel-heading-gap)*-1);text-align:center;width:var(--__panel-heading-height)}.panel-heading .rightside-icon svg{font-size:1.2em}.panel-footer{align-items:center;background-color:var(--__panel-background);border-color:var(--border);border-style:solid;border-top-left-radius:0;border-top-right-radius:0;border-width:1px 0 0}:root{--status-margin:0.75em;--post-line-height:1.4;--ZI_media_modal:9000;--ZI_modals_popovers:8500;--ZI_modals:8000;--ZI_navbar_popovers:7500;--ZI_navbar:7000;--ZI_popovers:6000;--background:var(--bg)}html{--navbar-height:var(--navbarSize,3.5rem);--emoji-size:var(--emojiSize,32px);--panel-header-height:var(--panelHeaderSize,3.2rem);font-size:var(--textSize,14px)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--text);font-family:sans-serif;font-family:var(--font);margin:0;overflow-x:clip;overflow-y:scroll;overscroll-behavior-y:none}body.hidden{display:none}@media(any-pointer:fine){*{scrollbar-color:var(--fg) transparent}::-webkit-scrollbar,::-webkit-scrollbar-corner{background:transparent}::-webkit-resizer{background-color:transparent!important;background-image:linear-gradient(135deg,transparent calc(50% - 1px),var(--textFaint) 50%,transparent calc(50% + 1px),transparent calc(75% - 1px),var(--textFaint) 75%,transparent calc(75% + 1px))}::-webkit-scrollbar-button,::-webkit-scrollbar-thumb{border-radius:var(--roundness);box-shadow:var(--shadow)}::-webkit-scrollbar-button{--___bgPadding:2px;background-repeat:no-repeat,no-repeat;color:var(--text)}::-webkit-scrollbar-button:horizontal{background-size:50% calc(50% - var(--___bgPadding)),50% calc(50% - var(--___bgPadding))}::-webkit-scrollbar-button:horizontal:increment{background-image:linear-gradient(45deg,var(--text) 50%,transparent 51%),linear-gradient(-45deg,transparent 50%,var(--text) 51%);background-position:top var(--___bgPadding) left 50%,right 50% bottom var(--___bgPadding)}::-webkit-scrollbar-button:horizontal:decrement{background-image:linear-gradient(45deg,transparent 50%,var(--text) calc(50% + 1px)),linear-gradient(-45deg,var(--text) 50%,transparent 51%);background-position:bottom var(--___bgPadding) right 50%,left 50% top var(--___bgPadding)}::-webkit-scrollbar-button:vertical{background-size:calc(50% - var(--___bgPadding)) 50%,calc(50% - var(--___bgPadding)) 50%}::-webkit-scrollbar-button:vertical:increment{background-image:linear-gradient(-45deg,transparent 50%,var(--text) 51%),linear-gradient(45deg,transparent 50%,var(--text) 51%);background-position:right var(--___bgPadding) top 50%,left var(--___bgPadding) top 50%}::-webkit-scrollbar-button:vertical:decrement{background-image:linear-gradient(-45deg,var(--text) 50%,transparent 51%),linear-gradient(45deg,var(--text) 50%,transparent 51%);background-position:left var(--___bgPadding) top 50%,right var(--___bgPadding) top 50%}html{background:var(--wallpaper);scrollbar-color:var(--fg) var(--wallpaper)}}a{color:var(--link);text-decoration:none}h4{margin:0}.iconLetter{display:inline-block;font-weight:1000;text-align:center}.iconLetter,.svg-inline--fa,i[class*=icon-]{color:var(--icon)}nav{box-shadow:var(--shadow);box-sizing:border-box;font-size:calc(var(--navbar-height)/3.5);height:var(--navbar-height);position:fixed;z-index:var(--ZI_navbar)}#sidebar{grid-area:sidebar}#modal{position:absolute;z-index:var(--ZI_modals)}.column.-scrollable{position:sticky;top:var(--navbar-height)}#main-scroller{grid-area:content;position:relative}#notifs-column{grid-area:notifs}.app-bg-wrapper{background-color:var(--wallpaper);background-image:var(--body-background-image);background-position:50%;background-repeat:no-repeat;background-size:cover;height:100%;left:0;position:fixed;right:-20px;top:var(--navbar-height);z-index:-1000}.underlay{background-color:var(--underlay);grid-column:1/span 3;grid-row:1/1;pointer-events:none;z-index:-1000}.app-layout{--miniColumn:25rem;--maxiColumn:45rem;--columnGap:1rem;--effectiveSidebarColumnWidth:minmax(var(--miniColumn),var(--sidebarColumnWidth,var(--miniColumn)));--effectiveNotifsColumnWidth:minmax(var(--miniColumn),var(--notifsColumnWidth,var(--miniColumn)));--effectiveContentColumnWidth:minmax(var(--miniColumn),var(--contentColumnWidth,var(--maxiColumn)));align-content:flex-start;flex-wrap:wrap;grid-template-areas:"sidebar content";grid-template-columns:var(--effectiveSidebarColumnWidth) var(--effectiveContentColumnWidth);grid-template-rows:1fr;justify-content:center;margin:0 auto;min-height:100vh;overflow-x:clip;position:relative}.app-layout,.app-layout .column{box-sizing:border-box;display:grid}.app-layout .column{--___columnMargin:var(--columnGap);align-content:start;grid-row:1/1;grid-template-columns:100%;margin:0 calc(var(--___columnMargin)/2);padding:calc(var(--___columnMargin)) 0;row-gap:var(--___columnMargin)}.app-layout .column:not(.-scrollable){margin-top:var(--navbar-height)}.app-layout .column:hover{z-index:2}.app-layout .column.-full-height{margin-bottom:0;padding-bottom:0;padding-top:0}.app-layout .column.-scrollable{--___paddingIncrease:calc(var(--columnGap)/2);margin-left:calc(var(--___paddingIncrease)*-1);max-height:calc(100vh - var(--navbar-height));overflow-x:hidden;overflow-y:auto;padding-left:calc(var(--___paddingIncrease) + var(--___columnMargin)/2);position:sticky;top:var(--navbar-height)}@supports(scrollbar-width:none) or (-webkit-text-fill-color:initial){.app-layout .column.-scrollable:not(.-show-scrollbar){margin-right:calc(var(--___paddingIncrease)*-1);padding-right:calc(var(--___paddingIncrease) + var(--___columnMargin)/2);scrollbar-width:none}.app-layout .column.-scrollable:not(.-show-scrollbar)::-webkit-scrollbar{display:block;width:0}}.app-layout .column.-scrollable .panel-heading.-sticky{top:calc(var(--columnGap)/-1)}.app-layout.-has-new-post-button .column{padding-bottom:10rem}.app-layout.-no-sticky-headers .column .panel-heading.-sticky{position:relative;top:0}.app-layout .column-inner{align-content:start;box-sizing:border-box;display:grid;grid-template-columns:100%;row-gap:1em}.app-layout.-reverse:not(.-wide,.-mobile){grid-template-areas:"content sidebar";grid-template-columns:var(--effectiveContentColumnWidth) var(--effectiveSidebarColumnWidth)}.app-layout.-wide{grid-template-areas:"sidebar content notifs";grid-template-columns:var(--effectiveSidebarColumnWidth) var(--effectiveContentColumnWidth) var(--effectiveNotifsColumnWidth)}.app-layout.-wide.-reverse{grid-template-areas:"notifs content sidebar";grid-template-columns:var(--effectiveNotifsColumnWidth) var(--effectiveContentColumnWidth) var(--effectiveSidebarColumnWidth)}.app-layout.-mobile{grid-template-areas:"content";grid-template-columns:100vw;padding:0}.app-layout.-mobile .column{margin:var(--navbar-height) 0 0 0;padding-top:0}.app-layout.-mobile .panel,.app-layout.-mobile .panel-heading,.app-layout.-mobile .panel-heading:after,.app-layout.-mobile .panel-heading:before,.app-layout.-mobile .panel:after{border-top-left-radius:0;border-top-right-radius:0}.app-layout.-mobile #notifs-column,.app-layout.-mobile #sidebar,.app-layout.-normal #notifs-column{display:none}.text-center{text-align:center}.button-default{background-color:var(--background);border:none;box-shadow:var(--shadow);color:var(--text);cursor:pointer;font-family:sans-serif;font-family:var(--font);font-size:1em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.button-default::-moz-focus-inner{border:none}.button-default:disabled{cursor:not-allowed}.list-item,.menu-item{--__line-height:1.5em;--__horizontal-gap:0.75em;--__vertical-gap:0.5em;background:transparent;border:none;border-color:var(--border);border-style:solid;border-width:1px 0 0;box-sizing:border-box;clear:both;color:inherit;cursor:pointer;display:block;font-family:inherit;font-size:inherit;font-weight:400;line-height:var(--__line-height);outline:none;padding:var(--__vertical-gap) var(--__horizontal-gap);position:relative;text-align:initial;white-space:nowrap;width:100%}.list-item.-non-interactive,.menu-item.-non-interactive{cursor:auto}.list-item.-active,.list-item:hover,.menu-item.-active,.menu-item:hover{border-bottom-width:1px;border-top-width:1px}.list-item.-active+.list-item,.list-item.-active+.menu-item,.list-item.-active+.menu-item-collapsible:not(.-expanded)+.list-item,.list-item.-active+.menu-item-collapsible:not(.-expanded)+.menu-item,.list-item:hover+.list-item,.list-item:hover+.menu-item,.list-item:hover+.menu-item-collapsible:not(.-expanded)+.list-item,.list-item:hover+.menu-item-collapsible:not(.-expanded)+.menu-item,.menu-item.-active+.list-item,.menu-item.-active+.menu-item,.menu-item.-active+.menu-item-collapsible:not(.-expanded)+.list-item,.menu-item.-active+.menu-item-collapsible:not(.-expanded)+.menu-item,.menu-item:hover+.list-item,.menu-item:hover+.menu-item,.menu-item:hover+.menu-item-collapsible:not(.-expanded)+.list-item,.menu-item:hover+.menu-item-collapsible:not(.-expanded)+.menu-item{border-top-width:0}.list-item[aria-expanded=true],.menu-item[aria-expanded=true]{border-bottom-width:1px}.list-item a,.list-item button:not(.button-default),.menu-item a,.menu-item button:not(.button-default){background:none;border:none;color:var(--text);display:inline;font-family:inherit;font-size:100%;line-height:unset;outline:none;padding:0;text-align:initial}.list-item:first-child,.menu-item:first-child{border-top-left-radius:var(--roundness);border-top-right-radius:var(--roundness);border-top-width:0}.list-item:last-child,.menu-item:last-child{border-bottom-left-radius:var(--roundness);border-bottom-right-radius:var(--roundness);border-bottom-width:0}.button-unstyled{background-color:transparent;border:none;box-shadow:var(--shadow);box-sizing:content-box;color:inherit;cursor:pointer;display:inline;font-family:inherit;font-size:100%;line-height:unset;outline:none;padding:0;text-align:initial}.button-unstyled.-link{color:var(--link)!important}input,textarea{outline:none}.input,input,textarea{border:none;display:inline-block}.input{--_padding:0.5em;background-color:var(--background);box-shadow:var(--shadow);box-sizing:border-box;color:var(--text);font-family:var(--font);font-size:1em;-webkit-hyphens:none;hyphens:none;line-height:2;margin:0;padding:0 var(--_padding);position:relative}.input.unstyled{background:none!important;border-radius:0;box-shadow:none;height:unset}.input.disabled,.input:disabled,.input[disabled=disabled]{cursor:not-allowed}.input[type=range]{background:none;border:none;box-shadow:none;flex:1;margin:0}.input[type=radio]{display:none}.input[type=radio]:checked+label:before{background-color:var(--background);box-shadow:var(--shadow);color:var(--text)}.input[type=radio]:disabled,.input[type=radio]:disabled+label,.input[type=radio]:disabled+label:before{opacity:.5}.input[type=radio]+label:before{background-color:var(--background);border-radius:100%;box-shadow:var(--shadow);box-sizing:border-box;color:transparent;content:"•";display:inline-block;flex-shrink:0;font-size:1.1em;height:1.1em;line-height:1.1;margin-right:.5em;overflow:hidden;text-align:center;transition:box-shadow .2s;vertical-align:top;width:1.1em}.input[type=checkbox]:checked+label:before{background-color:var(--background);box-shadow:var(--shadow);color:var(--text)}.input[type=checkbox]:disabled,.input[type=checkbox]:disabled+label,.input[type=checkbox]:disabled+label:before{opacity:.5}.input[type=checkbox]+label:before{border-radius:var(--roundness);box-shadow:var(--shadow);box-sizing:border-box;color:transparent;content:"✓";display:inline-block;flex-shrink:0;font-size:1.1em;height:1.1em;line-height:1.1;margin-right:.5em;overflow:hidden;text-align:center;transition:color .2s;vertical-align:top;width:1.1em}.input.resize-height{resize:vertical}.button-default,.input{--_roundness-left:var(--roundness);--_roundness-right:var(--roundness);border-bottom-left-radius:var(--_roundness-left);border-bottom-right-radius:var(--_roundness-right);border-top-left-radius:var(--_roundness-left);border-top-right-radius:var(--_roundness-right)}textarea.input{line-height:var(--post-line-height);padding:var(--_padding)}option{background-color:var(--background);color:var(--text)}.hide-number-spinner{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.hide-number-spinner[type=number]::-webkit-inner-spin-button,.hide-number-spinner[type=number]::-webkit-outer-spin-button{display:none;opacity:0}.cards-list{display:grid;grid-auto-flow:row dense;grid-template-columns:1fr 1fr;list-style:none}.cards-list li{border:1px solid var(--border);border-radius:var(--roundness);margin:.25em;padding:.5em}.btn-block{display:block;width:100%}.btn-group{display:inline-flex;position:relative;vertical-align:middle}.btn-group>*,.btn-group>* .button-default{--_roundness-left:0;--_roundness-right:0;flex:1 1 auto;position:relative}.btn-group>:first-child,.btn-group>:first-child .button-default{--_roundness-left:var(--roundness)}.btn-group>:last-child,.btn-group>:last-child .button-default{--_roundness-right:var(--roundness)}.fa{color:gray}.mobile-shown{display:none}.badge{border-radius:99px;box-sizing:border-box;display:inline-block;font-size:.9em;font-style:normal;font-weight:400;height:1.3em;line-height:1;max-width:10em;min-width:1.7em;overflow:hidden;padding:.15em;text-align:center;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.badge.-counter,.badge.-dot{margin:0;position:absolute}.badge.-dot{font-size:0;left:calc(50% - 4px);line-height:0;margin-left:6px;margin-top:-6px;max-height:8px;max-width:8px;min-height:8px;min-width:8px;padding:0;top:calc(50% - 4px)}.badge.-counter{font-size:.75em;left:calc(50% - .5em);line-height:1;margin-left:.7em;margin-top:-1em;min-width:0;padding:.2em;text-align:right;top:calc(50% - .4em)}.alert,.badge.-counter{border-radius:var(--roundness)}.alert{border:1px solid var(--border);margin:0 .35em;padding:0 .25em}.faint{--text:var(--textFaint);--link:var(--linkFaint);color:var(--text)}.visibility-notice{border:1px solid var(--textFaint);border-radius:var(--roundness);padding:.5em}.notice-dismissible{padding-right:4rem;position:relative}.notice-dismissible .dismiss{color:inherit;padding:.5em;position:absolute;right:0;top:0}.fa-scale-110.iconLetter,.fa-scale-110.svg-inline--fa{font-size:1.1em}.fa-scale-110.svg-inline--fa{vertical-align:-.15em}.fa-old-padding-layer,.fa-old-padding.iconLetter,.fa-old-padding.svg-inline--fa{padding:0 .3em}.veryfaint{opacity:.25}.timeago{--link:var(--text);--linkFaint:var(--textFaint)}.login-hint{text-align:center}@media (min-width:801px){.login-hint{display:none}}.login-hint a{display:inline-block;padding:1em 0;width:100%}.btn.button-default{min-height:2em}.new-status-notification{flex:1;font-size:1.1em;position:relative;z-index:1}@media (max-width:800px){.mobile-hidden{display:none}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes shakeError{0%{transform:translateX(0)}15%{transform:translateX(.375rem)}30%{transform:translateX(-.375rem)}45%{transform:translateX(.375rem)}60%{transform:translateX(-.375rem)}75%{transform:translateX(.375rem)}90%{transform:translateX(-.375rem)}to{transform:translateX(0)}}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter-from,.fade-leave-active{opacity:0}.visible-for-screenreader-only{clip:rect(0 0 0 0);display:block;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;visibility:visible;width:1px}::-moz-selection{background-color:var(--selectionBackground);color:var(--selectionText)}::selection{background-color:var(--selectionBackground);color:var(--selectionText)}.thread-tree-replies{border-left:2px solid var(--border);margin-left:var(--status-margin)}.thread-tree-replies-hidden{align-items:stretch;display:flex;flex-direction:column;padding:var(--status-margin)}.Conversation{z-index:1}.Conversation.-hidden{-webkit-backdrop-filter:var(--__panel-backdrop-filter);backdrop-filter:var(--__panel-backdrop-filter);background:var(--__panel-background)}.Conversation .conversation-dive-to-top-level-box{align-items:stretch;border-bottom:1px solid var(--border);border-radius:0;display:flex;flex-direction:column;padding:var(--status-margin)}.Conversation .thread-ancestors{border-left:2px solid var(--border);margin-left:var(--status-margin)}.Conversation .thread-ancestor.-faded .RichContent{--text:var(--textFaint)!important;--link:var(--linkFaint)!important;--funtextGreentext:var(--funtextGreentextFaint)!important;--funtextCyantext:var(--funtextCyantextFaint)!important}.Conversation .thread-ancestor-dive-box{border-bottom:1px solid var(--border);border-radius:0;padding-left:var(--status-margin)}.Conversation .thread-ancestor-dive-box,.Conversation .thread-ancestor-dive-box-inner{align-items:stretch;display:flex;flex-direction:column}.Conversation .thread-ancestor-dive-box-inner{padding:var(--status-margin)}.Conversation .conversation-status{border-bottom:1px solid var(--border);border-radius:0}.Conversation .thread-ancestor-has-other-replies .conversation-status,.Conversation .thread-ancestor:last-child .conversation-status,.Conversation .thread-ancestor:last-child .thread-ancestor-dive-box,.Conversation.-expanded .conversation-status:last-child,.Conversation.-expanded .thread-tree .conversation-status,.Conversation:last-child:not(.-expanded) .conversation-status{border-bottom:none}.Conversation .thread-ancestors+.thread-tree>.conversation-status{border-top:1px solid var(--border)}.Conversation.status-fadein.-expanded .thread-body{border-bottom:1px solid var(--border);border-left:4px solid var(--cRed);border-radius:var(--roundness);border-top-left-radius:0;border-top-right-radius:0}.Conversation.-expanded.status-fadein{--___margin:calc(var(--status-margin)/2);background:var(--background);margin:var(--___margin)}.Conversation.-expanded.status-fadein:before{-webkit-backdrop-filter:var(--__panel-backdrop-filter);backdrop-filter:var(--__panel-backdrop-filter);background:var(--background);bottom:calc(var(--___margin)*-1);content:"";display:block;left:calc(var(--___margin)*-1);position:absolute;right:calc(var(--___margin)*-1);top:calc(var(--___margin)*-1);z-index:-1}.timeline-menu-popover{border-top-left-radius:0;border-top-right-radius:0;font-size:1rem;margin-top:.6rem;max-width:100vw;min-width:24rem}.timeline-menu-popover ul{list-style:none;margin:0;padding:0}.TimelineMenu{margin-right:auto;min-width:0}.TimelineMenu .popover-trigger-button{vertical-align:bottom}.TimelineMenu .panel:after{border-top-left-radius:0;border-top-right-radius:0}.TimelineMenu .timeline-menu-title{cursor:pointer;display:flex;margin:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.TimelineMenu .timeline-menu-title .timeline-menu-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.TimelineMenu .timeline-menu-title svg{margin-left:.6em;transition:transform .1s}.TimelineMenu .timeline-menu-title .click-blocker{cursor:default;flex-grow:1}.TimelineMenu.open .timeline-menu-title svg{transform:rotate(180deg)}.TimelineMenu .panel{box-shadow:var(--popoverShadow)}.Timeline .timeline-body{-webkit-backdrop-filter:none;backdrop-filter:none;background:none}.Timeline .alert-badge{border-radius:var(--roundness);font-size:.75em;left:calc(50% - .5em);line-height:1;margin-left:.7em;margin-top:-1em;padding:.2em;position:absolute;text-align:right;top:calc(50% - .4em)}.Timeline .loadmore-button{position:relative}.Timeline.-blocked{cursor:progress}.Timeline .conversation-heading{top:calc(var(--__panel-heading-height)*var(--currentPanelStack, 2));z-index:2}.Timeline.-embedded .timeline-heading{line-height:2.75em;padding:0 .5em;text-align:center}.Timeline.-embedded .timeline-heading:empty:before{content:normal}.Timeline.-embedded .timeline-heading .alert,.Timeline.-embedded .timeline-heading .button-default{line-height:2em;width:100%}.tab-switcher{display:flex}.tab-switcher .tab-icon{display:block;margin:.2em auto}.tab-switcher.top-tabs{flex-direction:column}.tab-switcher.top-tabs>.tabs{flex:0 0 auto;flex-direction:row;overflow-x:auto;overflow-y:hidden;padding-top:5px;width:100%}.tab-switcher.top-tabs>.tabs:after,.tab-switcher.top-tabs>.tabs:before{border-bottom:1px solid;border-bottom-color:var(--border);content:"";flex:1 1 auto}.tab-switcher.top-tabs>.tabs .tab-wrapper{height:2em}.tab-switcher.top-tabs>.tabs .tab-wrapper:not(.active):after{border-bottom:1px solid;border-bottom-color:var(--border);bottom:0;left:0;right:0}.tab-switcher.top-tabs>.tabs .tab{border-bottom-left-radius:0;border-bottom-right-radius:0;margin-bottom:-93px;min-width:1px;padding-bottom:99px;width:100%}.tab-switcher.top-tabs .contents.scrollable-tabs{flex-basis:0}.tab-switcher.side-tabs{flex-direction:row}@media (max-width:800px){.tab-switcher.side-tabs{overflow-x:auto}}.tab-switcher.side-tabs>.contents{flex:1 1 auto}.tab-switcher.side-tabs>.tabs{flex:0 0 auto;flex-direction:column;overflow-x:hidden;overflow-y:auto}.tab-switcher.side-tabs>.tabs:after,.tab-switcher.side-tabs>.tabs:before{border-right:1px solid;border-right-color:var(--border);content:"";flex-basis:.5em;flex-shrink:0}.tab-switcher.side-tabs>.tabs:after{flex-grow:1}.tab-switcher.side-tabs>.tabs:before{flex-grow:0}.tab-switcher.side-tabs>.tabs .tab-wrapper{display:flex;flex-direction:column;min-width:10em}@media (max-width:800px){.tab-switcher.side-tabs>.tabs .tab-wrapper{min-width:4em}}.tab-switcher.side-tabs>.tabs .tab-wrapper:not(.active):after{border-right:1px solid;border-right-color:var(--border);bottom:0;right:0;top:0}.tab-switcher.side-tabs>.tabs .tab-wrapper:before{border-right:1px solid;border-right-color:var(--border);content:"";flex:0 0 6px}.tab-switcher.side-tabs>.tabs .tab-wrapper:last-child .tab{margin-bottom:0}.tab-switcher.side-tabs>.tabs .tab{border-bottom-right-radius:0;border-top-right-radius:0;box-sizing:content-box;flex:1;margin-left:1em;margin-right:-200px;min-width:10em;min-width:1px;padding-left:1em;padding-right:calc(1em + 200px)}@media (max-width:800px){.tab-switcher.side-tabs>.tabs .tab{margin-left:.25em;margin-right:calc(.25em - 200px);padding-left:.25em;padding-right:calc(.25em + 200px)}.tab-switcher.side-tabs>.tabs .tab .text{display:none}}.tab-switcher .contents{flex:1 0 auto;min-height:0}.tab-switcher .contents .hidden{display:none}.tab-switcher .contents .full-height:not(.hidden){display:flex;flex-direction:column;height:100%}.tab-switcher .contents .full-height:not(.hidden)>:not(.mobile-label){flex:1}.tab-switcher .contents.scrollable-tabs{overflow-y:auto}.tab-switcher .tab{background-color:var(--background);border:none;border-radius:var(--roundness);box-shadow:var(--shadow);color:var(--text);cursor:pointer;font-family:var(--font);font-size:1em;padding:6px 1em;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.tab-switcher .tab:not(.active){z-index:4}.tab-switcher .tab:not(.active):hover{z-index:6}.tab-switcher .tab.active{background:transparent;z-index:5}.tab-switcher .tab img{margin-top:-5px;max-height:26px;vertical-align:top}.tab-switcher .tabs{box-sizing:border-box;display:flex;position:relative}.tab-switcher .tabs:after,.tab-switcher .tabs:before{display:block;flex:1 1 auto}.tab-switcher .tab-wrapper{display:flex;flex:0 0 auto;position:relative}.tab-switcher .tab-wrapper:not(.active):after{content:"";position:absolute;z-index:7}.tab-switcher .mobile-label{border-bottom:1px solid var(--border);margin-bottom:.25em;margin-left:.2em;margin-top:.5em;padding-bottom:.25em;padding-left:.3em}@media (min-width:800px){.tab-switcher .mobile-label{display:none}}.chat-title{--emoji-size:14px;display:flex}.chat-title,.chat-title .username{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-title .username{word-wrap:break-word;display:inline;max-width:100%}.chat-title .avatar-container{align-self:center;line-height:1}.chat-title .titlebar-avatar{border-radius:var(--roundness);height:1.5em;margin-right:.5em;width:1.5em}.chat-title .titlebar-avatar.animated:before{display:none}.chat-list-item{box-sizing:border-box;cursor:pointer;display:flex;flex-direction:row;overflow:hidden}.chat-list-item :focus{outline:none}.chat-list-item .chat-list-item-left{margin-right:1em}.chat-list-item .chat-list-item-center{word-wrap:break-word;box-sizing:border-box;overflow:hidden;width:100%}.chat-list-item .heading{display:flex;justify-content:space-between;line-height:1em;width:100%}.chat-list-item .heading-right{white-space:nowrap}.chat-list-item .name-and-account-name{flex-shrink:1;line-height:var(--post-line-height);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-list-item .chat-preview{color:var(--textFaint);display:flex;margin:.35em 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.chat-list-item a{color:var(--linkFaint);pointer-events:none;text-decoration:none}.chat-list-item:hover .animated.avatar canvas{display:none}.chat-list-item:hover .animated.avatar img{visibility:visible}.chat-list-item .chat-preview-body{--emoji-size:1.4em;padding-right:1em}.chat-list-item .time-wrapper{line-height:var(--post-line-height)}.basic-user-card{--emoji-size:14px;display:flex;flex:1 0;margin:0}.basic-user-card-collapsed-content{flex:1;margin-left:.7em;min-width:0;text-align:left}.basic-user-card-user-name img{height:16px;-o-object-fit:contain;object-fit:contain;vertical-align:middle;width:16px}.basic-user-card-screen-name,.basic-user-card-user-name-value{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.basic-user-card-expanded-content{flex:1;margin-left:.7em;min-width:0}.chat-new .input-wrap{display:flex;margin:.7em .5em}.chat-new .input-wrap input{width:100%}.chat-new .search-icon{margin-right:.3em}.chat-new .member-list{padding-bottom:.7rem}.chat-new .go-back-button{align-self:start;height:100%;line-height:1;text-align:center;width:var(--__panel-heading-height-inner)}.chat-list{margin-bottom:0;min-height:25em}.emtpy-chat-list-alert{color:var(--textFaint);display:flex;font-size:1.2em;justify-content:center;padding:3em}.chat-message-wrapper.hovered-message-chain .animated.Avatar canvas{display:none}.chat-message-wrapper.hovered-message-chain .animated.Avatar img{visibility:visible}.chat-message-wrapper .chat-message-menu{opacity:0;position:absolute;top:-.8em;transition:opacity .1s}.chat-message-wrapper .chat-message-menu button{padding-bottom:.2em;padding-top:.2em}.chat-message-wrapper .menu-icon{cursor:pointer}.chat-message-wrapper .popover{width:12em}.chat-message-wrapper .chat-message{display:flex;padding-bottom:.5em}.chat-message-wrapper .chat-message .status-body:hover{--_still-image-img-visibility:visible;--_still-image-canvas-visibility:hidden;--_still-image-label-visibility:hidden}.chat-message-wrapper .avatar-wrapper{margin-right:.72em;width:32px}.chat-message-wrapper .attachments,.chat-message-wrapper .link-preview{margin-bottom:1em}.chat-message-wrapper .status{background-color:var(--background);border:1px solid var(--border);border-radius:var(--roundness);color:var(--text);display:flex;padding:.75em}.chat-message-wrapper .created-at{float:right;font-size:.8em;font-style:italic;margin:-1em 0 -.5em;opacity:.8;position:relative}.chat-message-wrapper .without-attachment .message-content .RichContent:after{content:" ";display:inline-block;margin-right:5.4em}.chat-message-wrapper .pending .created-at,.chat-message-wrapper .pending .status-content.media-body{color:var(--faint)}.chat-message-wrapper .error .created-at,.chat-message-wrapper .error .status-content.media-body{color:var(--badgeNotification)}.chat-message-wrapper .chat-message-inner{align-items:flex-start;display:flex;flex-direction:column;max-width:80%;min-width:10em;width:100%}.chat-message-wrapper .outgoing{align-content:end;display:flex;flex-flow:row wrap;justify-content:flex-end}.chat-message-wrapper .outgoing .chat-message-inner{align-items:flex-end}.chat-message-wrapper .outgoing .chat-message-menu{right:.4rem}.chat-message-wrapper .incoming .chat-message-menu{left:.4rem}.chat-message-wrapper .chat-message-inner.with-media,.chat-message-wrapper .chat-message-inner.with-media .status{width:100%}.chat-message-wrapper .visible{opacity:1}.chat-message-date-separator{color:var(--textFaint);font-size:.9em;margin:1.4em 0;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chat-view{display:flex;height:100%}.chat-view .chat-view-inner{display:flex;height:auto;overflow:visible;width:100%}.chat-view .chat-view-body{border-radius:var(--roundness);border-bottom-left-radius:0;border-bottom-right-radius:0;box-sizing:border-box;display:flex;flex-direction:column;margin:0;min-height:calc(100vh - var(--navbar-height));overflow:visible;width:100%}.chat-view .chat-view-body:after{border-radius:0}.chat-view .message-list{display:flex;flex-direction:column;height:100%;justify-content:end;padding:0 .8em}.chat-view .footer{bottom:0;position:sticky;z-index:1}.chat-view .chat-view-heading{grid-template-columns:auto minmax(50%,1fr)}.chat-view .go-back-button{align-self:start;height:100%;line-height:1;text-align:center;width:var(--__panel-heading-height-inner)}.chat-view .jump-to-bottom-button{align-items:center;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.3),0 2px 4px rgba(0,0,0,.3);cursor:pointer;display:flex;height:2.5em;justify-content:center;opacity:0;position:absolute;right:1.3em;top:-3.2em;transition:all .35s;transition-timing-function:cubic-bezier(0,1,.5,1);visibility:hidden;width:2.5em;z-index:10}.chat-view .jump-to-bottom-button.visible{opacity:1;visibility:visible}.chat-view .jump-to-bottom-button .unread-message-count{border-radius:50px;font-size:.8em;left:50%;margin-top:-1rem;padding:.1em;position:absolute}.chat-view .jump-to-bottom-button .chat-loading-error{align-items:flex-end;display:flex;height:100%;width:100%}.chat-view .jump-to-bottom-button .chat-loading-error .error{width:100%}.follow-card-content-container{display:flex;flex-flow:row wrap;flex-shrink:0;justify-content:space-between;line-height:1.5em}.follow-card-button{margin-left:1em;margin-top:.5em;padding:0 1.5em}.follow-card-follow-button{margin-left:auto;margin-top:.5em;width:10em}.with-load-more-footer{border-top:1px solid;border-top-color:var(--border);padding:10px;text-align:center}.with-load-more-footer .error{font-size:1rem}.with-load-more-footer a{cursor:pointer}.user-profile{--currentPanelStack:1;flex:2;flex-basis:500px}.user-profile .user-birthday{margin:0 .75em .5em}.user-profile .user-profile-fields{margin:0 .5em}.user-profile .user-profile-fields img{max-height:400px;max-width:100%;-o-object-fit:contain;object-fit:contain;vertical-align:middle}.user-profile .user-profile-fields img.emoji{height:18px;width:18px}.user-profile .user-profile-fields .user-profile-field{border:1px solid var(--border);border-radius:var(--roundness);display:flex;margin:.25em}.user-profile .user-profile-fields .user-profile-field .user-profile-field-name{border-right:1px solid var(--border);color:var(--lightText);flex:0 1 30%;font-weight:500;min-width:120px;text-align:right}.user-profile .user-profile-fields .user-profile-field .user-profile-field-value{color:var(--text);flex:1 1 70%;margin:0 0 0 .25em}.user-profile .user-profile-fields .user-profile-field .user-profile-field-name,.user-profile .user-profile-fields .user-profile-field .user-profile-field-value{box-sizing:border-box;line-height:1.3;overflow:hidden;padding:.5em 1.5em;text-overflow:ellipsis;white-space:nowrap}.user-profile .userlist-placeholder{align-items:middle;display:flex;justify-content:center;padding:2em}.user-profile-placeholder .panel-body{align-items:middle;display:flex;justify-content:center;padding:7em}.search-result-heading{color:var(--faint);padding:.75rem;text-align:center}@media (max-width:800px){.search-nav-heading .tab-switcher .tabs .tab-wrapper{display:block;flex:1 1 auto;justify-content:center;text-align:center}}.search-result{border-bottom:1px solid;border-color:var(--border);box-sizing:border-box}.search-input-container{display:flex;justify-content:center;padding:.8rem}.search-input-container .search-input{box-sizing:border-box;font-size:1rem;line-height:1.125rem;padding:.5rem;width:100%}.search-input-container .search-button{margin-left:.5em}.loading-icon{padding:1em}.trend{align-items:center;display:flex}.trend .hashtag{color:var(--text);flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trend .count{color:var(--text);flex:0 0 auto;font-size:1.5rem;font-weight:500;line-height:2.25rem;text-align:center;width:2rem}.more-statuses-button{height:3.5em;line-height:3.5em;width:100%}.interface-language-switcher .language-select{margin-right:1em}.registration-form{display:flex;flex-direction:column;margin:.6em}.registration-form .container{display:flex;flex-direction:row}.registration-form .container>*{min-width:0}.registration-form .terms-of-service{flex:0 1 50%;margin:.8em}.registration-form .text-fields{display:flex;flex:1 0;flex-direction:column;margin-top:.6em}.registration-form textarea{min-height:100px;resize:vertical}.registration-form .form-group{display:flex;flex-direction:column;line-height:2;margin-bottom:1em;padding:.3em 0}.registration-form .form-group--error{animation-duration:.6s;animation-name:shakeError;animation-timing-function:ease-in-out}.registration-form .form-group--error .form--label{color:var(--cRed)}.registration-form .form-error{margin-top:-.7em;text-align:left}.registration-form .form-error span{font-size:.85em}.registration-form .form-error ul{list-style:none;margin-top:0;padding:0 0 0 5px}.registration-form .form-error ul li:before{content:"• "}.registration-form form textarea{line-height:16px;resize:vertical}.registration-form .captcha{margin-bottom:.4em;max-width:350px}.registration-form .btn{height:2em;margin-top:.6em}.registration-form .error{text-align:center}.registration-notice{margin:.6em}@media (max-width:800px){.registration-form .container{flex-direction:column-reverse}}.password-reset-form{align-items:center;display:flex;flex-direction:column;margin:.6em}.password-reset-form .container{display:flex;flex:1 0;flex-direction:column;margin-top:.6em;max-width:18rem}.password-reset-form .container>*{min-width:0}.password-reset-form .form-group{display:flex;flex-direction:column;line-height:1.85em;margin-bottom:1em;padding:.3em 0}.password-reset-form .error{animation-duration:.4s;animation-name:shakeError;animation-timing-function:ease-in-out;text-align:center}.password-reset-form .alert{margin:.3em 0 1em;padding:.5em}.password-reset-form .notice-dismissible{padding-right:2rem}.password-reset-form .dismiss{cursor:pointer}.follow-request-card-content-container{display:flex;flex-flow:row wrap}.follow-request-card-content-container button{flex:1 1;margin-right:.5em;margin-top:.5em;max-width:12em;min-width:8em}.follow-request-card-content-container button:last-child{margin-right:0}.tos-content{margin:1em}.staff-group{padding-left:1em;padding-top:1em}.staff-group .basic-user-card{padding-left:0}.mrf-section{margin:1em}.mrf-section table{padding-bottom:20px;padding-left:10px;text-align:left;width:100%}.mrf-section table td,.mrf-section table th{max-width:360px;overflow:hidden;vertical-align:text-top;width:180px}.mrf-section table td+td,.mrf-section table th+th{width:auto}.list-card{display:flex}.list-name{flex-grow:1}.button-list-edit,.list-name{color:var(--link);margin:0;padding:1em}.Lists .new-list-button{padding:0 .5em}.ListsUserSearch .input-wrap{display:flex;margin:.7em .5em}.ListsUserSearch .input-wrap input{width:100%}.ListsUserSearch .search-icon{margin-right:.3em}.panel-loading{align-items:center;color:var(--text);display:flex;font-size:2em;height:100%;justify-content:center}.panel-loading .loading-text svg{color:var(--text);line-height:0;vertical-align:middle}.ListEdit{--panel-body-padding:0.5em;display:flex;flex-direction:column;height:calc(100vh - var(--navbar-height));overflow:hidden}.ListEdit .list-edit-heading{grid-template-columns:auto minmax(50%,1fr)}.ListEdit .panel-body{display:flex;flex:1;flex-direction:column;overflow:hidden}.ListEdit .list-member-management{flex:1 0 auto}.ListEdit .search-icon{margin-right:.3em}.ListEdit .users-list{overflow-y:auto;padding-bottom:.7rem}.ListEdit .members-list,.ListEdit .search-list{flex-direction:column;min-height:0;overflow:hidden}.ListEdit .go-back-button{align-self:start;height:100%;line-height:1;text-align:center;width:var(--__panel-heading-height-inner)}.ListEdit .btn{margin:0 .5em}.ListEdit .panel-footer{grid-template-columns:minmax(10%,1fr)}.ListEdit .panel-footer .footer-button{min-width:9em}.announcement-editor{align-items:stretch;display:flex;flex-direction:column}.announcement-editor .announcement-metadata{margin-top:.5em}.announcement-editor .post-textarea{box-sizing:content-box;height:10em;overflow:none;resize:vertical}.announcement{border-bottom:1px solid var(--border);border-radius:0;padding:var(--status-margin)}.announcement .body,.announcement .heading{margin-bottom:var(--status-margin)}.announcement .footer,.announcement .footer .times{display:flex;flex-direction:column}.announcement .footer .actions{display:flex;flex-direction:row;justify-content:space-evenly}.announcement .footer .actions .btn{flex:1;margin:1em;max-width:10em}.announcements-page .post-form{padding:var(--status-margin)}.announcements-page .post-form .body,.announcements-page .post-form .heading{margin-bottom:var(--status-margin)}.announcements-page .post-form .post-button{min-width:10em} +/*# sourceMappingURL=app.75b043cffb8e922bc29e.css.map*/ \ No newline at end of file diff --git a/priv/static/static/css/app.75b043cffb8e922bc29e.css.map b/priv/static/static/css/app.75b043cffb8e922bc29e.css.map new file mode 100644 index 0000000000..71326425de --- /dev/null +++ b/priv/static/static/css/app.75b043cffb8e922bc29e.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/app.75b043cffb8e922bc29e.css","mappings":"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BAEA,0BACA,wBAJA,sBACA,CAnBA,WACA,CAUA,0BACA,mBACA,CACA,oBACA,CAhBA,qBACA,CAQA,UACA,CAFA,aACA,CAFA,cACA,CAVF,aAEE,CAKA,mBACA,CAFA,iBACA,CACA,eACA,CAUA,gCACA,CAhBA,YACA,CAeA,qDACA,CATA,iBACA,CARA,kBACA,CAOA,kBACA,CAIA,UAQA,yDAEA,WACE,yEAKA,wBAFF,oBAGE,CAKA,wwBAGF,kBAEE,+DAGF,uBACE,yGAMA,eACA,YACA,CAKA,kBAJA,cACA,CACA,mBACA,CAFA,cACA,CACA,iBACA,CALA,YACA,CAJA,SACA,CAHF,kBAWE,+CAIA,uCACA,CAFF,wCACE,CACA,kBACA,6CAIA,0CACA,CAFF,2CACE,CACA,qBACA,kBAWF,4BACA,CARF,WACE,CAKA,wBACA,CAIA,sBACA,eAFA,cACA,CATA,cACA,CAEA,mBACA,CAFA,cACA,CAIA,iBACA,CATA,YACA,CAMA,SACA,CANA,kBAUA,wBAEA,2BAEE,gBAOF,YACA,uBAJF,WAEE,qBA4BA,CA1BA,OAGF,gBASE,CAEA,kCACA,CACA,wBACA,CAGA,qBACA,CANA,iBACA,CACA,uBACA,cACA,CAKA,oBACA,CADA,YACA,CAFA,aACA,CALA,QACA,CAKA,0BAHA,iBAIA,iBArBE,yBAEA,CAHF,eACE,CAEA,eACA,aACA,2DAmBF,kBAGE,oBAGF,eACE,YACA,CACA,eACA,QAFA,QAGA,oBAGF,YACE,yCAGE,kCACA,CAFF,wBACE,CACA,iBACA,wGAIA,UAGE,iCAWF,kCACA,CAFA,kBACA,CACA,wBACA,CAKA,qBACA,kBACA,CAdA,WACA,CAFA,oBACA,CAFF,aACE,CAYA,eACA,CATA,YACA,CAMA,eACA,CAJA,iBACA,CAMA,gBALA,iBACA,CATA,yBACA,CAMA,kBACA,CAPA,WAaA,4CAMA,kCACA,0BAFF,iBAGE,iHAIA,UAGE,oCAUF,8BACA,yBACA,CAKA,qBACA,kBACA,CAbA,WACA,CAFA,oBACA,CAFF,aACE,CAWA,eACA,CARA,YACA,CAKA,eACA,CAJA,iB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","sources":["webpack://pleroma_fe/./src/components/modal/modal.vue","webpack://pleroma_fe/./node_modules/vue-virtual-scroller/dist/vue-virtual-scroller.css","webpack://pleroma_fe/./src/components/login_form/login_form.vue","webpack://pleroma_fe/./src/components/media_upload/media_upload.vue","webpack://pleroma_fe/./src/components/scope_selector/scope_selector.vue","webpack://pleroma_fe/./src/components/checkbox/checkbox.vue","webpack://pleroma_fe/./src/components/popover/popover.vue","webpack://pleroma_fe/./src/components/still-image/still-image.vue","webpack://pleroma_fe/./src/components/emoji_picker/emoji_picker.scss","webpack://pleroma_fe/./src/components/emoji_input/emoji_input.vue","webpack://pleroma_fe/./src/components/select/select.vue","webpack://pleroma_fe/./src/components/poll/poll_form.vue","webpack://pleroma_fe/./src/components/flash/flash.vue","webpack://pleroma_fe/./src/components/attachment/attachment.scss","webpack://pleroma_fe/./src/components/gallery/gallery.vue","webpack://pleroma_fe/./src/components/user_avatar/user_avatar.vue","webpack://pleroma_fe/./src/components/mention_link/mention_link.scss","webpack://pleroma_fe/./src/components/mentions_line/mentions_line.scss","webpack://pleroma_fe/./src/components/hashtag_link/hashtag_link.scss","webpack://pleroma_fe/./src/components/rich_content/rich_content.scss","webpack://pleroma_fe/./src/components/poll/poll.vue","webpack://pleroma_fe/./src/components/status_body/status_body.scss","webpack://pleroma_fe/./src/components/link-preview/link-preview.vue","webpack://pleroma_fe/./src/components/status_content/status_content.vue","webpack://pleroma_fe/./src/components/post_status_form/post_status_form.vue","webpack://pleroma_fe/./src/components/remote_follow/remote_follow.vue","webpack://pleroma_fe/./src/components/dialog_modal/dialog_modal.vue","webpack://pleroma_fe/./src/components/moderation_tools/moderation_tools.vue","webpack://pleroma_fe/./src/components/account_actions/account_actions.vue","webpack://pleroma_fe/./src/components/user_note/user_note.vue","webpack://pleroma_fe/./src/components/user_card/user_card.scss","webpack://pleroma_fe/./src/components/user_panel/user_panel.vue","webpack://pleroma_fe/./src/components/navigation/navigation_entry.vue","webpack://pleroma_fe/./src/components/navigation/navigation_pins.vue","webpack://pleroma_fe/./src/components/nav_panel/nav_panel.vue","webpack://pleroma_fe/./src/components/features_panel/features_panel.vue","webpack://pleroma_fe/./src/components/who_to_follow_panel/who_to_follow_panel.vue","webpack://pleroma_fe/./src/components/shout_panel/shout_panel.vue","webpack://pleroma_fe/./src/components/media_modal/media_modal.vue","webpack://pleroma_fe/./src/components/side_drawer/side_drawer.vue","webpack://pleroma_fe/./src/components/mobile_post_status_button/mobile_post_status_button.vue","webpack://pleroma_fe/./src/components/reply_button/reply_button.vue","webpack://pleroma_fe/./src/components/favorite_button/favorite_button.vue","webpack://pleroma_fe/./src/components/react_button/react_button.vue","webpack://pleroma_fe/./src/components/retweet_button/retweet_button.vue","webpack://pleroma_fe/./src/components/extra_buttons/extra_buttons.vue","webpack://pleroma_fe/./src/components/avatar_list/avatar_list.vue","webpack://pleroma_fe/./src/components/status_popover/status_popover.vue","webpack://pleroma_fe/./src/components/user_list_popover/user_list_popover.vue","webpack://pleroma_fe/./src/components/emoji_reactions/emoji_reactions.vue","webpack://pleroma_fe/./src/components/status/status.scss","webpack://pleroma_fe/./src/components/report/report.scss","webpack://pleroma_fe/./src/components/notification/notification.scss","webpack://pleroma_fe/./src/components/extra_notifications/extra_notifications.vue","webpack://pleroma_fe/./src/components/notifications/notifications.scss","webpack://pleroma_fe/./src/components/mobile_nav/mobile_nav.vue","webpack://pleroma_fe/./src/components/search_bar/search_bar.vue","webpack://pleroma_fe/./src/components/desktop_nav/desktop_nav.scss","webpack://pleroma_fe/./src/components/user_reporting_modal/user_reporting_modal.vue","webpack://pleroma_fe/./src/components/edit_status_modal/edit_status_modal.vue","webpack://pleroma_fe/./src/components/post_status_modal/post_status_modal.vue","webpack://pleroma_fe/./src/components/status_history_modal/status_history_modal.vue","webpack://pleroma_fe/./src/components/global_notice_list/global_notice_list.vue","webpack://pleroma_fe/./src/App.scss","webpack://pleroma_fe/./src/panel.scss","webpack://pleroma_fe/./src/components/thread_tree/thread_tree.vue","webpack://pleroma_fe/./src/components/conversation/conversation.vue","webpack://pleroma_fe/./src/components/timeline_menu/timeline_menu.vue","webpack://pleroma_fe/./src/components/timeline/timeline.scss","webpack://pleroma_fe/./src/components/tab_switcher/tab_switcher.scss","webpack://pleroma_fe/./src/components/chat_title/chat_title.vue","webpack://pleroma_fe/./src/components/chat_list_item/chat_list_item.scss","webpack://pleroma_fe/./src/components/basic_user_card/basic_user_card.vue","webpack://pleroma_fe/./src/components/chat_new/chat_new.scss","webpack://pleroma_fe/./src/components/chat_list/chat_list.vue","webpack://pleroma_fe/./src/components/chat_message/chat_message.scss","webpack://pleroma_fe/./src/components/chat/chat.scss","webpack://pleroma_fe/./src/components/follow_card/follow_card.vue","webpack://pleroma_fe/./src/hocs/with_load_more/with_load_more.scss","webpack://pleroma_fe/./src/components/user_profile/user_profile.vue","webpack://pleroma_fe/./src/components/search/search.vue","webpack://pleroma_fe/./src/components/interface_language_switcher/interface_language_switcher.vue","webpack://pleroma_fe/./src/components/registration/registration.vue","webpack://pleroma_fe/./src/components/password_reset/password_reset.vue","webpack://pleroma_fe/./src/components/follow_request_card/follow_request_card.vue","webpack://pleroma_fe/./src/components/terms_of_service_panel/terms_of_service_panel.vue","webpack://pleroma_fe/./src/components/staff_panel/staff_panel.vue","webpack://pleroma_fe/./src/components/mrf_transparency_panel/mrf_transparency_panel.scss","webpack://pleroma_fe/./src/components/lists_card/lists_card.vue","webpack://pleroma_fe/./src/components/lists/lists.vue","webpack://pleroma_fe/./src/components/lists_user_search/lists_user_search.vue","webpack://pleroma_fe/./src/components/panel_loading/panel_loading.vue","webpack://pleroma_fe/./src/components/lists_edit/lists_edit.vue","webpack://pleroma_fe/./src/components/announcement_editor/announcement_editor.vue","webpack://pleroma_fe/./src/components/announcement/announcement.vue","webpack://pleroma_fe/./src/components/announcements_page/announcements_page.vue"],"sourcesContent":["\n.modal-view {\n z-index: var(--ZI_modals);\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: auto;\n pointer-events: none;\n animation-duration: 0.2s;\n animation-name: modal-background-fadein;\n opacity: 0;\n\n > * {\n pointer-events: initial;\n }\n\n &.modal-background {\n pointer-events: initial;\n background-color: rgb(0 0 0 / 50%);\n }\n\n &.open {\n opacity: 1;\n }\n}\n\n@keyframes modal-background-fadein {\n from {\n background-color: rgb(0 0 0 / 0%);\n }\n\n to {\n background-color: rgb(0 0 0 / 50%);\n }\n}\n",".vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.direction-horizontal{display:flex}.vue-recycle-scroller__slot{flex:auto 0 0}.vue-recycle-scroller__item-wrapper{flex:1;box-sizing:border-box;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}","\n.login-form {\n display: flex;\n flex-direction: column;\n padding: 0.6em;\n\n .btn {\n min-height: 2em;\n width: 10em;\n }\n\n .register {\n flex: 1 1;\n }\n\n .login-bottom {\n margin-top: 1em;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.3em 0.5em 0.6em;\n line-height: 24px;\n }\n\n .form-bottom {\n display: flex;\n padding: 0.5em;\n height: 32px;\n\n button {\n width: 10em;\n }\n\n p {\n margin: 0.35em;\n padding: 0.35em;\n display: flex;\n }\n }\n\n .error {\n text-align: center;\n animation-name: shakeError;\n animation-duration: 0.4s;\n animation-timing-function: ease-in-out;\n }\n}\n","\n.media-upload {\n .hidden-input-file {\n display: none;\n }\n}\n\nlabel.media-upload {\n cursor: pointer; // We use