fix: ai preferences crashed and deleted stuff in preferences
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
@source "../css";
|
@source "../css";
|
||||||
@source "../js";
|
@source "../js";
|
||||||
@source "../../lib/bds/desktop";
|
@source "../../lib/bds/desktop";
|
||||||
|
@source "../../deps/live_toast/lib";
|
||||||
|
|
||||||
@import "./tokens.css";
|
@import "./tokens.css";
|
||||||
@import "./shell.css";
|
@import "./shell.css";
|
||||||
|
|||||||
@@ -377,3 +377,8 @@
|
|||||||
font: inherit;
|
font: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Alert modal (errors) — reuses .confirm-delete-modal with a tone accent. */
|
||||||
|
.alert-modal-error {
|
||||||
|
border-top: 3px solid #ff6b6b;
|
||||||
|
}
|
||||||
|
|||||||
@@ -6,8 +6,10 @@ import { ColourPicker } from "./colour_picker.js";
|
|||||||
import { MenuEditorTree } from "./menu_editor_tree.js";
|
import { MenuEditorTree } from "./menu_editor_tree.js";
|
||||||
import { MonacoEditor } from "./monaco_editor.js";
|
import { MonacoEditor } from "./monaco_editor.js";
|
||||||
import { MonacoDiffEditor } from "./monaco_diff_editor.js";
|
import { MonacoDiffEditor } from "./monaco_diff_editor.js";
|
||||||
|
import { createLiveToastHook } from "live_toast";
|
||||||
|
|
||||||
export const Hooks = {
|
export const Hooks = {
|
||||||
|
LiveToast: createLiveToastHook(),
|
||||||
AppShell,
|
AppShell,
|
||||||
SidebarInteractions,
|
SidebarInteractions,
|
||||||
SettingsSectionScroll,
|
SettingsSectionScroll,
|
||||||
|
|||||||
@@ -54,13 +54,21 @@ defmodule BDS.AI do
|
|||||||
model = MapUtils.attr(attrs, :model)
|
model = MapUtils.attr(attrs, :model)
|
||||||
api_key = MapUtils.attr(attrs, :api_key)
|
api_key = MapUtils.attr(attrs, :api_key)
|
||||||
|
|
||||||
with :ok <- put_setting("ai.#{kind_key}.url", url),
|
with :ok <- put_or_delete_setting("ai.#{kind_key}.url", url),
|
||||||
:ok <- put_setting("ai.#{kind_key}.model", model),
|
:ok <- put_or_delete_setting("ai.#{kind_key}.model", model),
|
||||||
:ok <- put_secret("ai.#{kind_key}.api_key", api_key, backend) do
|
:ok <- put_or_delete_secret("ai.#{kind_key}.api_key", api_key, backend) do
|
||||||
{:ok, %{kind: kind, url: url, api_key: api_key, model: model}}
|
{:ok, %{kind: kind, url: url, api_key: api_key, model: model}}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# A nil field means "clear it" — writing nil into put_setting/2 would raise a
|
||||||
|
# FunctionClauseError and crash the caller (the preferences panel).
|
||||||
|
defp put_or_delete_setting(key, nil), do: delete_setting(key)
|
||||||
|
defp put_or_delete_setting(key, value) when is_binary(value), do: put_setting(key, value)
|
||||||
|
|
||||||
|
defp put_or_delete_secret(key, nil, _backend), do: delete_setting(encrypted_key(key))
|
||||||
|
defp put_or_delete_secret(key, value, backend), do: put_secret(key, value, backend)
|
||||||
|
|
||||||
@spec get_endpoint(endpoint_kind(), keyword()) ::
|
@spec get_endpoint(endpoint_kind(), keyword()) ::
|
||||||
{:ok, endpoint() | nil} | {:error, term()}
|
{:ok, endpoint() | nil} | {:error, term()}
|
||||||
def get_endpoint(kind, opts \\ []) when is_atom(kind) and is_list(opts) do
|
def get_endpoint(kind, opts \\ []) when is_atom(kind) and is_list(opts) do
|
||||||
|
|||||||
@@ -719,6 +719,11 @@ defmodule BDS.Desktop.ShellLive do
|
|||||||
{:noreply, refresh_sidebar(socket, socket.assigns.workbench)}
|
{:noreply, refresh_sidebar(socket, socket.assigns.workbench)}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def handle_info({:shell_alert, title, message}, socket) do
|
||||||
|
overlay = %{kind: :alert, title: title, message: message, tone: "error"}
|
||||||
|
{:noreply, assign(socket, :shell_overlay, overlay)}
|
||||||
|
end
|
||||||
|
|
||||||
def handle_info(message, socket) do
|
def handle_info(message, socket) do
|
||||||
Bridges.handle_info(message, socket, bridges_callbacks())
|
Bridges.handle_info(message, socket, bridges_callbacks())
|
||||||
end
|
end
|
||||||
@@ -729,6 +734,20 @@ defmodule BDS.Desktop.ShellLive do
|
|||||||
index(assigns)
|
index(assigns)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Dark-themed toast classes for LiveToast (its default is bg-white/text-black).
|
||||||
|
# Mirrors the library's structural classes but uses the app's dark palette.
|
||||||
|
@doc false
|
||||||
|
@spec toast_class_fn(map()) :: [String.t() | false]
|
||||||
|
def toast_class_fn(assigns) do
|
||||||
|
[
|
||||||
|
"group/toast z-100 pointer-events-auto relative w-full items-center justify-between origin-center overflow-hidden rounded-lg p-4 shadow-lg border col-start-1 col-end-1 row-start-1 row-end-2",
|
||||||
|
"bg-[#2d2d2d] text-[#f0f0f0] border-[#3c3c3c]",
|
||||||
|
"[@media(scripting:enabled)]:opacity-0 [@media(scripting:enabled){[data-phx-main]_&}]:opacity-100",
|
||||||
|
if(assigns[:rest][:hidden] == true, do: "hidden", else: "flex"),
|
||||||
|
assigns[:kind] == :error && "!bg-[#3a2020] !text-red-300 !border-[#5a2a2a]"
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
defp refresh_layout(socket, workbench), do: SocketState.refresh_layout(socket, workbench)
|
defp refresh_layout(socket, workbench), do: SocketState.refresh_layout(socket, workbench)
|
||||||
|
|
||||||
defp refresh_sidebar(socket, workbench), do: SocketState.refresh_sidebar(socket, workbench)
|
defp refresh_sidebar(socket, workbench), do: SocketState.refresh_sidebar(socket, workbench)
|
||||||
|
|||||||
@@ -678,5 +678,6 @@
|
|||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<ShellOverlayComponents.shell_overlay shell_overlay={@shell_overlay} />
|
<ShellOverlayComponents.shell_overlay shell_overlay={@shell_overlay} />
|
||||||
|
<LiveToast.toast_group flash={@flash} connected={assigns[:socket] != nil} toasts_sync={assigns[:toasts_sync]} corner={:bottom_right} toast_class_fn={&toast_class_fn/1} />
|
||||||
<GitRun.git_run_modal git_run={@git_run} />
|
<GitRun.git_run_modal git_run={@git_run} />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -20,6 +20,12 @@ defmodule BDS.Desktop.ShellLive.Notify do
|
|||||||
:ok
|
:ok
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@spec alert(String.t(), String.t()) :: :ok
|
||||||
|
def alert(title, message) do
|
||||||
|
send(self(), {:shell_alert, title, message})
|
||||||
|
:ok
|
||||||
|
end
|
||||||
|
|
||||||
@spec tab_meta(atom(), term(), String.t(), String.t()) :: :ok
|
@spec tab_meta(atom(), term(), String.t(), String.t()) :: :ok
|
||||||
def tab_meta(type, id, title, subtitle) do
|
def tab_meta(type, id, title, subtitle) do
|
||||||
send(self(), {:editor_tab_meta, type, id, %{title: title, subtitle: subtitle || ""}})
|
send(self(), {:editor_tab_meta, type, id, %{title: title, subtitle: subtitle || ""}})
|
||||||
|
|||||||
@@ -186,6 +186,23 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<% :alert -> %>
|
||||||
|
<div class="shell-overlay-backdrop confirm-delete-modal-backdrop" data-testid="shell-overlay-backdrop" phx-window-keydown="overlay_keydown">
|
||||||
|
<button class="shell-overlay-dismiss" type="button" phx-click="close_overlay" aria-label={dgettext("ui", "Close")}></button>
|
||||||
|
<div class={["confirm-delete-modal", "alert-modal", "alert-modal-#{@shell_overlay.tone}"]} role="alertdialog" aria-modal="true">
|
||||||
|
<div class="confirm-delete-modal-header">
|
||||||
|
<h2><%= @shell_overlay.title %></h2>
|
||||||
|
<button class="confirm-delete-modal-close" type="button" phx-click="close_overlay">×</button>
|
||||||
|
</div>
|
||||||
|
<div class="confirm-delete-modal-body">
|
||||||
|
<div class="confirm-delete-message"><%= @shell_overlay.message %></div>
|
||||||
|
</div>
|
||||||
|
<div class="confirm-delete-modal-footer">
|
||||||
|
<button class="button-apply primary ui-button ui-button-primary" type="button" phx-click="close_overlay"><%= dgettext("ui", "OK") %></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<% :gallery -> %>
|
<% :gallery -> %>
|
||||||
<div class="shell-overlay-backdrop gallery-overlay-backdrop" data-testid="shell-overlay-backdrop" phx-window-keydown="overlay_keydown">
|
<div class="shell-overlay-backdrop gallery-overlay-backdrop" data-testid="shell-overlay-backdrop" phx-window-keydown="overlay_keydown">
|
||||||
<button class="shell-overlay-dismiss" type="button" phx-click="close_overlay" aria-label={dgettext("ui", "Cancel")}></button>
|
<button class="shell-overlay-dismiss" type="button" phx-click="close_overlay" aria-label={dgettext("ui", "Cancel")}></button>
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.AISettings do
|
|||||||
use Phoenix.Component
|
use Phoenix.Component
|
||||||
|
|
||||||
alias BDS.AI
|
alias BDS.AI
|
||||||
|
alias BDS.Desktop.ShellLive.Notify
|
||||||
alias BDS.Desktop.ShellLive.SettingsEditor.EditorSettings
|
alias BDS.Desktop.ShellLive.SettingsEditor.EditorSettings
|
||||||
require Logger
|
require Logger
|
||||||
use Gettext, backend: BDS.Gettext
|
use Gettext, backend: BDS.Gettext
|
||||||
@@ -71,6 +72,8 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.AISettings do
|
|||||||
|
|
||||||
with {:ok, endpoint} <- endpoint_refresh_attrs(endpoint_key, attrs),
|
with {:ok, endpoint} <- endpoint_refresh_attrs(endpoint_key, attrs),
|
||||||
{:ok, models} <- AI.list_endpoint_models(endpoint) do
|
{:ok, models} <- AI.list_endpoint_models(endpoint) do
|
||||||
|
notify_models_loaded(models)
|
||||||
|
|
||||||
socket
|
socket
|
||||||
|> assign(
|
|> assign(
|
||||||
:settings_editor_endpoint_models,
|
:settings_editor_endpoint_models,
|
||||||
@@ -83,14 +86,25 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.AISettings do
|
|||||||
|> reload.(socket.assigns.workbench)
|
|> reload.(socket.assigns.workbench)
|
||||||
else
|
else
|
||||||
{:error, reason} ->
|
{:error, reason} ->
|
||||||
|
message = ai_error_message(reason)
|
||||||
|
Notify.alert(dgettext("ui", "Could not load models"), message)
|
||||||
|
|
||||||
socket
|
socket
|
||||||
|> append_output.(dgettext("ui", "AI Settings"), inspect(reason), nil, "error")
|
|> append_output.(dgettext("ui", "AI Settings"), message, nil, "error")
|
||||||
|> reload.(socket.assigns.workbench)
|
|> reload.(socket.assigns.workbench)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@spec save_ai(term(), term(), term()) :: term()
|
@spec save_ai(term(), term(), term()) :: term()
|
||||||
def save_ai(socket, reload, append_output) do
|
def save_ai(socket, reload, append_output) do
|
||||||
|
do_save_ai(socket, reload, append_output)
|
||||||
|
rescue
|
||||||
|
error ->
|
||||||
|
Logger.error("AI settings save crashed: #{Exception.format(:error, error, __STACKTRACE__)}")
|
||||||
|
surface_ai_error(socket, reload, append_output, error)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp do_save_ai(socket, reload, append_output) do
|
||||||
attrs = ai_attrs(socket.assigns)
|
attrs = ai_attrs(socket.assigns)
|
||||||
|
|
||||||
with :ok <-
|
with :ok <-
|
||||||
@@ -142,17 +156,47 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.AISettings do
|
|||||||
attrs.offline_chat_images
|
attrs.offline_chat_images
|
||||||
),
|
),
|
||||||
:ok <- EditorSettings.put_global_setting("ai.system_prompt", attrs.system_prompt) do
|
:ok <- EditorSettings.put_global_setting("ai.system_prompt", attrs.system_prompt) do
|
||||||
|
LiveToast.send_toast(:info, dgettext("ui", "AI settings saved."))
|
||||||
|
|
||||||
socket
|
socket
|
||||||
|> assign(:settings_editor_ai_draft, %{})
|
|> assign(:settings_editor_ai_draft, %{})
|
||||||
|> assign(:offline_mode, attrs.offline_mode)
|
|> assign(:offline_mode, attrs.offline_mode)
|
||||||
|> reload.(socket.assigns.workbench)
|
|> reload.(socket.assigns.workbench)
|
||||||
else
|
else
|
||||||
{:error, reason} ->
|
{:error, reason} ->
|
||||||
|
surface_ai_error(socket, reload, append_output, reason)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp notify_models_loaded([]) do
|
||||||
|
LiveToast.send_toast(
|
||||||
|
:info,
|
||||||
|
dgettext(
|
||||||
|
"ui",
|
||||||
|
"The endpoint returned no models. You can still type a model name manually."
|
||||||
|
)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp notify_models_loaded(models) do
|
||||||
|
LiveToast.send_toast(
|
||||||
|
:info,
|
||||||
|
dgettext("ui", "Loaded %{count} models.", count: length(models))
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp surface_ai_error(socket, reload, append_output, reason) do
|
||||||
|
message = ai_error_message(reason)
|
||||||
|
Notify.alert(dgettext("ui", "Could not save AI settings"), message)
|
||||||
|
|
||||||
socket
|
socket
|
||||||
|> append_output.(dgettext("ui", "AI Settings"), inspect(reason), nil, "error")
|
|> append_output.(dgettext("ui", "AI Settings"), message, nil, "error")
|
||||||
|> reload.(socket.assigns.workbench)
|
|> reload.(socket.assigns.workbench)
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
defp ai_error_message(%{__exception__: true} = error), do: Exception.message(error)
|
||||||
|
defp ai_error_message(reason) when is_binary(reason), do: reason
|
||||||
|
defp ai_error_message(reason), do: inspect(reason)
|
||||||
|
|
||||||
@spec reset_ai_prompt(term(), term(), term()) :: term()
|
@spec reset_ai_prompt(term(), term(), term()) :: term()
|
||||||
def reset_ai_prompt(socket, reload, append_output) do
|
def reset_ai_prompt(socket, reload, append_output) do
|
||||||
@@ -179,7 +223,9 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.AISettings do
|
|||||||
end
|
end
|
||||||
|
|
||||||
defp ai_attrs(assigns) do
|
defp ai_attrs(assigns) do
|
||||||
draft = Map.get(assigns, :settings_editor_ai_draft, %{})
|
# Merge the stored form with the edit draft so untouched fields (URLs, API
|
||||||
|
# keys) are preserved on save instead of being read as nil and wiped.
|
||||||
|
draft = Map.merge(ai_form(assigns), Map.get(assigns, :settings_editor_ai_draft, %{}))
|
||||||
|
|
||||||
%{
|
%{
|
||||||
online_url: blank_to_nil(Map.get(draft, "online_url")),
|
online_url: blank_to_nil(Map.get(draft, "online_url")),
|
||||||
|
|||||||
1
mix.exs
1
mix.exs
@@ -37,6 +37,7 @@ defmodule BDS.MixProject do
|
|||||||
{:plug, "~> 1.18"},
|
{:plug, "~> 1.18"},
|
||||||
{:bandit, "~> 1.5"},
|
{:bandit, "~> 1.5"},
|
||||||
{:req, "~> 0.5"},
|
{:req, "~> 0.5"},
|
||||||
|
{:live_toast, "~> 0.8.0"},
|
||||||
{:saxy, "~> 1.4"},
|
{:saxy, "~> 1.4"},
|
||||||
{:desktop, "~> 1.5"},
|
{:desktop, "~> 1.5"},
|
||||||
{:image, "~> 0.67"},
|
{:image, "~> 0.67"},
|
||||||
|
|||||||
1
mix.lock
1
mix.lock
@@ -43,6 +43,7 @@
|
|||||||
"kday": {:hex, :kday, "1.1.0", "64efac85279a12283eaaf3ad6f13001ca2dff943eda8c53288179775a8c057a0", [:mix], [{:ex_doc, "~> 0.21", [hex: :ex_doc, repo: "hexpm", optional: true]}], "hexpm", "69703055d63b8d5b260479266c78b0b3e66f7aecdd2022906cd9bf09892a266d"},
|
"kday": {:hex, :kday, "1.1.0", "64efac85279a12283eaaf3ad6f13001ca2dff943eda8c53288179775a8c057a0", [:mix], [{:ex_doc, "~> 0.21", [hex: :ex_doc, repo: "hexpm", optional: true]}], "hexpm", "69703055d63b8d5b260479266c78b0b3e66f7aecdd2022906cd9bf09892a266d"},
|
||||||
"lazy_html": {:hex, :lazy_html, "0.1.11", "136c8e9cd616b4f4e9c1562daa683880891120b759606dc4c3b6b18058ba5d79", [:make, :mix], [{:cc_precompiler, "~> 0.1", [hex: :cc_precompiler, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.9.0", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:fine, "~> 0.1.0", [hex: :fine, repo: "hexpm", optional: false]}], "hexpm", "3b1be592929c31eca1a21673d25696e5c14cddfe922d9d1a3e3b48be4163883b"},
|
"lazy_html": {:hex, :lazy_html, "0.1.11", "136c8e9cd616b4f4e9c1562daa683880891120b759606dc4c3b6b18058ba5d79", [:make, :mix], [{:cc_precompiler, "~> 0.1", [hex: :cc_precompiler, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.9.0", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:fine, "~> 0.1.0", [hex: :fine, repo: "hexpm", optional: false]}], "hexpm", "3b1be592929c31eca1a21673d25696e5c14cddfe922d9d1a3e3b48be4163883b"},
|
||||||
"liquex": {:hex, :liquex, "0.13.1", "49f90d0b85fb2908f2558f35cd49d78497fe77a895eb55b360889940e1d7afb9", [:mix], [{:date_time_parser, "~> 1.2", [hex: :date_time_parser, repo: "hexpm", optional: false]}, {:html_entities, "~> 0.5.2", [hex: :html_entities, repo: "hexpm", optional: false]}, {:html_sanitize_ex, "~> 1.4.3", [hex: :html_sanitize_ex, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "fbea5b9db264c1758a69bfafdcc8aaebcd56e168365bb9575392cd55d800108f"},
|
"liquex": {:hex, :liquex, "0.13.1", "49f90d0b85fb2908f2558f35cd49d78497fe77a895eb55b360889940e1d7afb9", [:mix], [{:date_time_parser, "~> 1.2", [hex: :date_time_parser, repo: "hexpm", optional: false]}, {:html_entities, "~> 0.5.2", [hex: :html_entities, repo: "hexpm", optional: false]}, {:html_sanitize_ex, "~> 1.4.3", [hex: :html_sanitize_ex, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "fbea5b9db264c1758a69bfafdcc8aaebcd56e168365bb9575392cd55d800108f"},
|
||||||
|
"live_toast": {:hex, :live_toast, "0.8.0", "d7e24801a9a966d8e48872767ac33c50fc14640ac5272128becfc534fabd99b7", [:mix], [{:ecto, ">= 3.11.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:gettext, ">= 0.26.2", [hex: :gettext, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:phoenix, ">= 1.7.19", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_live_view, ">= 1.0.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}], "hexpm", "7e64435131b7731698908d59f7ba9f5092df8a3720814f26edf57e99d97a803c"},
|
||||||
"luerl": {:hex, :luerl, "1.5.1", "f6700420950fc6889137e7a0c11c4a8467dea04a8c23f707a40d83566d14e786", [:rebar3], [], "hexpm", "abf88d849baa0d5dca93b245a8688d4de2ee3d588159bb2faf51e15946509390"},
|
"luerl": {:hex, :luerl, "1.5.1", "f6700420950fc6889137e7a0c11c4a8467dea04a8c23f707a40d83566d14e786", [:rebar3], [], "hexpm", "abf88d849baa0d5dca93b245a8688d4de2ee3d588159bb2faf51e15946509390"},
|
||||||
"makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"},
|
"makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"},
|
||||||
"makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"},
|
"makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"},
|
||||||
|
|||||||
@@ -70,9 +70,9 @@ msgstr "KI"
|
|||||||
msgid "AI Assistant"
|
msgid "AI Assistant"
|
||||||
msgstr "KI-Assistent"
|
msgstr "KI-Assistent"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:87
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:93
|
||||||
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:152
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:190
|
||||||
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:167
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:208
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "AI Settings"
|
msgid "AI Settings"
|
||||||
msgstr "KI-Einstellungen"
|
msgstr "KI-Einstellungen"
|
||||||
@@ -336,7 +336,7 @@ msgstr "Autor"
|
|||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr "Automatisch"
|
msgstr "Automatisch"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:442
|
#: lib/bds/desktop/shell_live.ex:448
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:234
|
#: lib/bds/desktop/shell_live/chat_editor.ex:234
|
||||||
#: lib/bds/desktop/shell_live/media_editor.ex:171
|
#: lib/bds/desktop/shell_live/media_editor.ex:171
|
||||||
#: lib/bds/desktop/shell_live/media_editor.ex:364
|
#: lib/bds/desktop/shell_live/media_editor.ex:364
|
||||||
@@ -418,7 +418,7 @@ msgstr "Blogmark-Kategorie"
|
|||||||
msgid "Bookmarklet copy support is wired through the desktop runtime and project public URL."
|
msgid "Bookmarklet copy support is wired through the desktop runtime and project public URL."
|
||||||
msgstr "Die Bookmarklet-Kopierfunktion ist über die Desktop-Laufzeit und die öffentliche Projekt-URL verdrahtet."
|
msgstr "Die Bookmarklet-Kopierfunktion ist über die Desktop-Laufzeit und die öffentliche Projekt-URL verdrahtet."
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:126
|
#: lib/bds/desktop/shell_live/git_run.ex:128
|
||||||
#: lib/bds/desktop/shell_live/import_editor.ex:1366
|
#: lib/bds/desktop/shell_live/import_editor.ex:1366
|
||||||
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:298
|
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:298
|
||||||
#: lib/bds/desktop/shell_live/menu_editor.ex:335
|
#: lib/bds/desktop/shell_live/menu_editor.ex:335
|
||||||
@@ -431,8 +431,8 @@ msgstr "Die Bookmarklet-Kopierfunktion ist über die Desktop-Laufzeit und die ö
|
|||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:165
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:165
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:173
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:173
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:183
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:183
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:191
|
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:208
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:208
|
||||||
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:225
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Abbrechen"
|
msgstr "Abbrechen"
|
||||||
@@ -486,7 +486,7 @@ msgstr "Kategorie-Standards, Render-Flags und Template-Zuordnung"
|
|||||||
msgid "Category name is required"
|
msgid "Category name is required"
|
||||||
msgstr "Kategoriename ist erforderlich"
|
msgstr "Kategoriename ist erforderlich"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:748
|
#: lib/bds/desktop/shell_live.ex:771
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:87
|
#: lib/bds/desktop/shell_live/chat_editor.ex:87
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:233
|
#: lib/bds/desktop/shell_live/chat_editor.ex:233
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:323
|
#: lib/bds/desktop/shell_live/chat_editor.ex:323
|
||||||
@@ -1052,7 +1052,7 @@ msgstr "Duplikate finden"
|
|||||||
msgid "Force Reload"
|
msgid "Force Reload"
|
||||||
msgstr "Erzwungenes Neuladen"
|
msgstr "Erzwungenes Neuladen"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:194
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:211
|
||||||
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:432
|
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:432
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Gallery"
|
msgid "Gallery"
|
||||||
@@ -1063,7 +1063,7 @@ msgstr "Galerie"
|
|||||||
msgid "Generate Site"
|
msgid "Generate Site"
|
||||||
msgstr "Website generieren"
|
msgstr "Website generieren"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:749
|
#: lib/bds/desktop/shell_live.ex:772
|
||||||
#: lib/bds/desktop/shell_live/socket_state.ex:109
|
#: lib/bds/desktop/shell_live/socket_state.ex:109
|
||||||
#: lib/bds/ui/sidebar.ex:789
|
#: lib/bds/ui/sidebar.ex:789
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
@@ -1077,7 +1077,7 @@ msgid "Git Diff"
|
|||||||
msgstr "Git-Diff"
|
msgstr "Git-Diff"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_data.ex:226
|
#: lib/bds/desktop/shell_data.ex:226
|
||||||
#: lib/bds/desktop/shell_live.ex:745
|
#: lib/bds/desktop/shell_live.ex:768
|
||||||
#: lib/bds/desktop/shell_live/panel_renderer.ex:171
|
#: lib/bds/desktop/shell_live/panel_renderer.ex:171
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Git Log"
|
msgid "Git Log"
|
||||||
@@ -1200,9 +1200,9 @@ msgstr "Importdefinitionen"
|
|||||||
msgid "Import failed: %{error}"
|
msgid "Import failed: %{error}"
|
||||||
msgstr "Import fehlgeschlagen: %{error}"
|
msgstr "Import fehlgeschlagen: %{error}"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:592
|
#: lib/bds/desktop/shell_live.ex:598
|
||||||
#: lib/bds/desktop/shell_live.ex:861
|
#: lib/bds/desktop/shell_live.ex:884
|
||||||
#: lib/bds/desktop/shell_live.ex:867
|
#: lib/bds/desktop/shell_live.ex:890
|
||||||
#: lib/bds/desktop/shell_live/sidebar_create.ex:47
|
#: lib/bds/desktop/shell_live/sidebar_create.ex:47
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Import media"
|
msgid "Import media"
|
||||||
@@ -1784,7 +1784,7 @@ msgstr "Sonstige"
|
|||||||
msgid "Other (%{count})"
|
msgid "Other (%{count})"
|
||||||
msgstr "Andere (%{count})"
|
msgstr "Andere (%{count})"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:744
|
#: lib/bds/desktop/shell_live.ex:767
|
||||||
#: lib/bds/desktop/shell_live/panel_renderer.ex:83
|
#: lib/bds/desktop/shell_live/panel_renderer.ex:83
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Output"
|
msgid "Output"
|
||||||
@@ -2538,7 +2538,7 @@ msgstr "Schlagwortname"
|
|||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
msgstr "Tags"
|
msgstr "Tags"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:743
|
#: lib/bds/desktop/shell_live.ex:766
|
||||||
#: lib/bds/desktop/shell_live/panel_renderer.ex:54
|
#: lib/bds/desktop/shell_live/panel_renderer.ex:54
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Tasks"
|
msgid "Tasks"
|
||||||
@@ -3218,12 +3218,12 @@ msgstr "Willkommen beim KI-Assistenten"
|
|||||||
msgid "Comparing database and filesystem metadata"
|
msgid "Comparing database and filesystem metadata"
|
||||||
msgstr "Vergleicht Datenbank- und Dateisystem-Metadaten"
|
msgstr "Vergleicht Datenbank- und Dateisystem-Metadaten"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:668
|
#: lib/bds/desktop/shell_live.ex:674
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Added %{count} images to post"
|
msgid "Added %{count} images to post"
|
||||||
msgstr "%{count} Bilder zum Beitrag hinzugefügt"
|
msgstr "%{count} Bilder zum Beitrag hinzugefügt"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:636
|
#: lib/bds/desktop/shell_live.ex:642
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Added %{title}"
|
msgid "Added %{title}"
|
||||||
msgstr "%{title} hinzugefügt"
|
msgstr "%{title} hinzugefügt"
|
||||||
@@ -3243,18 +3243,18 @@ msgstr "Endbenutzer-Anleitung für redaktionelle Arbeitsabläufe, Medien, Vorlag
|
|||||||
msgid "Image Import Concurrency"
|
msgid "Image Import Concurrency"
|
||||||
msgstr "Gleichzeitige Bildimporte"
|
msgstr "Gleichzeitige Bildimporte"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:441
|
#: lib/bds/desktop/shell_live.ex:447
|
||||||
#: lib/bds/desktop/shell_live.ex:454
|
#: lib/bds/desktop/shell_live.ex:460
|
||||||
#: lib/bds/desktop/shell_live.ex:635
|
#: lib/bds/desktop/shell_live.ex:641
|
||||||
#: lib/bds/desktop/shell_live.ex:667
|
#: lib/bds/desktop/shell_live.ex:673
|
||||||
#: lib/bds/desktop/shell_live.ex:678
|
#: lib/bds/desktop/shell_live.ex:684
|
||||||
#: lib/bds/desktop/shell_live.ex:689
|
#: lib/bds/desktop/shell_live.ex:695
|
||||||
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:420
|
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:420
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Add Gallery Images"
|
msgid "Add Gallery Images"
|
||||||
msgstr "Galerie-Bilder hinzufügen"
|
msgstr "Galerie-Bilder hinzufügen"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:690
|
#: lib/bds/desktop/shell_live.ex:696
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Failed to process %{path}: %{reason}"
|
msgid "Failed to process %{path}: %{reason}"
|
||||||
msgstr "%{path} konnte nicht verarbeitet werden: %{reason}"
|
msgstr "%{path} konnte nicht verarbeitet werden: %{reason}"
|
||||||
@@ -3353,7 +3353,7 @@ msgid "Local only"
|
|||||||
msgstr "Nur lokal"
|
msgstr "Nur lokal"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_handler.ex:113
|
#: lib/bds/desktop/shell_live/git_handler.ex:113
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:82
|
#: lib/bds/desktop/shell_live/git_run.ex:83
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "No active project"
|
msgid "No active project"
|
||||||
msgstr "Kein aktives Projekt"
|
msgstr "Kein aktives Projekt"
|
||||||
@@ -3445,12 +3445,12 @@ msgstr "umbenannt"
|
|||||||
msgid "untracked"
|
msgid "untracked"
|
||||||
msgstr "nicht verfolgt"
|
msgstr "nicht verfolgt"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:769
|
#: lib/bds/desktop/shell_live.ex:792
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Blogmark"
|
msgid "Blogmark"
|
||||||
msgstr "Blogmark"
|
msgstr "Blogmark"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:812
|
#: lib/bds/desktop/shell_live.ex:835
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Open a project before importing a blogmark."
|
msgid "Open a project before importing a blogmark."
|
||||||
msgstr "Öffnen Sie ein Projekt, bevor Sie ein Blogmark importieren."
|
msgstr "Öffnen Sie ein Projekt, bevor Sie ein Blogmark importieren."
|
||||||
@@ -3491,7 +3491,7 @@ msgstr "Loeschen"
|
|||||||
msgid "Failed to copy bookmarklet to clipboard"
|
msgid "Failed to copy bookmarklet to clipboard"
|
||||||
msgstr "Bookmarklet konnte nicht in die Zwischenablage kopiert werden"
|
msgstr "Bookmarklet konnte nicht in die Zwischenablage kopiert werden"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:781
|
#: lib/bds/desktop/shell_live.ex:804
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "The project this blogmark targets does not exist here."
|
msgid "The project this blogmark targets does not exist here."
|
||||||
msgstr "Das Projekt, auf das dieses Blogmark verweist, existiert hier nicht."
|
msgstr "Das Projekt, auf das dieses Blogmark verweist, existiert hier nicht."
|
||||||
@@ -3537,12 +3537,13 @@ msgid "Zoom"
|
|||||||
msgstr "Zoomen"
|
msgstr "Zoomen"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:91
|
#: lib/bds/desktop/shell_live/git_run.ex:91
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:127
|
#: lib/bds/desktop/shell_live/git_run.ex:129
|
||||||
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:191
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Schließen"
|
msgstr "Schließen"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:124
|
#: lib/bds/desktop/shell_live/git_run.ex:126
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Failed (exit %{status})"
|
msgid "Failed (exit %{status})"
|
||||||
msgstr "Fehlgeschlagen (Exit %{status})"
|
msgstr "Fehlgeschlagen (Exit %{status})"
|
||||||
@@ -3566,3 +3567,33 @@ msgstr "git pull"
|
|||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "git push"
|
msgid "git push"
|
||||||
msgstr "git push"
|
msgstr "git push"
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:159
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "AI settings saved."
|
||||||
|
msgstr "KI-Einstellungen gespeichert."
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:90
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Could not load models"
|
||||||
|
msgstr "Modelle konnten nicht geladen werden"
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:187
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Could not save AI settings"
|
||||||
|
msgstr "KI-Einstellungen konnten nicht gespeichert werden"
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:182
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Loaded %{count} models."
|
||||||
|
msgstr "%{count} Modelle geladen."
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:201
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "OK"
|
||||||
|
msgstr "OK"
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:173
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The endpoint returned no models. You can still type a model name manually."
|
||||||
|
msgstr "Der Endpunkt hat keine Modelle zurückgegeben. Sie können einen Modellnamen weiterhin manuell eingeben."
|
||||||
|
|||||||
@@ -70,9 +70,9 @@ msgstr ""
|
|||||||
msgid "AI Assistant"
|
msgid "AI Assistant"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:87
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:93
|
||||||
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:152
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:190
|
||||||
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:167
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:208
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "AI Settings"
|
msgid "AI Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -336,7 +336,7 @@ msgstr ""
|
|||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:442
|
#: lib/bds/desktop/shell_live.ex:448
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:234
|
#: lib/bds/desktop/shell_live/chat_editor.ex:234
|
||||||
#: lib/bds/desktop/shell_live/media_editor.ex:171
|
#: lib/bds/desktop/shell_live/media_editor.ex:171
|
||||||
#: lib/bds/desktop/shell_live/media_editor.ex:364
|
#: lib/bds/desktop/shell_live/media_editor.ex:364
|
||||||
@@ -418,7 +418,7 @@ msgstr ""
|
|||||||
msgid "Bookmarklet copy support is wired through the desktop runtime and project public URL."
|
msgid "Bookmarklet copy support is wired through the desktop runtime and project public URL."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:126
|
#: lib/bds/desktop/shell_live/git_run.ex:128
|
||||||
#: lib/bds/desktop/shell_live/import_editor.ex:1366
|
#: lib/bds/desktop/shell_live/import_editor.ex:1366
|
||||||
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:298
|
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:298
|
||||||
#: lib/bds/desktop/shell_live/menu_editor.ex:335
|
#: lib/bds/desktop/shell_live/menu_editor.ex:335
|
||||||
@@ -431,8 +431,8 @@ msgstr ""
|
|||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:165
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:165
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:173
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:173
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:183
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:183
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:191
|
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:208
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:208
|
||||||
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:225
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -486,7 +486,7 @@ msgstr ""
|
|||||||
msgid "Category name is required"
|
msgid "Category name is required"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:748
|
#: lib/bds/desktop/shell_live.ex:771
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:87
|
#: lib/bds/desktop/shell_live/chat_editor.ex:87
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:233
|
#: lib/bds/desktop/shell_live/chat_editor.ex:233
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:323
|
#: lib/bds/desktop/shell_live/chat_editor.ex:323
|
||||||
@@ -1052,7 +1052,7 @@ msgstr ""
|
|||||||
msgid "Force Reload"
|
msgid "Force Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:194
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:211
|
||||||
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:432
|
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:432
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Gallery"
|
msgid "Gallery"
|
||||||
@@ -1063,7 +1063,7 @@ msgstr ""
|
|||||||
msgid "Generate Site"
|
msgid "Generate Site"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:749
|
#: lib/bds/desktop/shell_live.ex:772
|
||||||
#: lib/bds/desktop/shell_live/socket_state.ex:109
|
#: lib/bds/desktop/shell_live/socket_state.ex:109
|
||||||
#: lib/bds/ui/sidebar.ex:789
|
#: lib/bds/ui/sidebar.ex:789
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
@@ -1077,7 +1077,7 @@ msgid "Git Diff"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_data.ex:226
|
#: lib/bds/desktop/shell_data.ex:226
|
||||||
#: lib/bds/desktop/shell_live.ex:745
|
#: lib/bds/desktop/shell_live.ex:768
|
||||||
#: lib/bds/desktop/shell_live/panel_renderer.ex:171
|
#: lib/bds/desktop/shell_live/panel_renderer.ex:171
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Git Log"
|
msgid "Git Log"
|
||||||
@@ -1200,9 +1200,9 @@ msgstr ""
|
|||||||
msgid "Import failed: %{error}"
|
msgid "Import failed: %{error}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:592
|
#: lib/bds/desktop/shell_live.ex:598
|
||||||
#: lib/bds/desktop/shell_live.ex:861
|
#: lib/bds/desktop/shell_live.ex:884
|
||||||
#: lib/bds/desktop/shell_live.ex:867
|
#: lib/bds/desktop/shell_live.ex:890
|
||||||
#: lib/bds/desktop/shell_live/sidebar_create.ex:47
|
#: lib/bds/desktop/shell_live/sidebar_create.ex:47
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Import media"
|
msgid "Import media"
|
||||||
@@ -1784,7 +1784,7 @@ msgstr ""
|
|||||||
msgid "Other (%{count})"
|
msgid "Other (%{count})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:744
|
#: lib/bds/desktop/shell_live.ex:767
|
||||||
#: lib/bds/desktop/shell_live/panel_renderer.ex:83
|
#: lib/bds/desktop/shell_live/panel_renderer.ex:83
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Output"
|
msgid "Output"
|
||||||
@@ -2538,7 +2538,7 @@ msgstr ""
|
|||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:743
|
#: lib/bds/desktop/shell_live.ex:766
|
||||||
#: lib/bds/desktop/shell_live/panel_renderer.ex:54
|
#: lib/bds/desktop/shell_live/panel_renderer.ex:54
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Tasks"
|
msgid "Tasks"
|
||||||
@@ -3218,12 +3218,12 @@ msgstr ""
|
|||||||
msgid "Comparing database and filesystem metadata"
|
msgid "Comparing database and filesystem metadata"
|
||||||
msgstr "Comparing database and filesystem metadata"
|
msgstr "Comparing database and filesystem metadata"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:668
|
#: lib/bds/desktop/shell_live.ex:674
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Added %{count} images to post"
|
msgid "Added %{count} images to post"
|
||||||
msgstr "Added %{count} images to post"
|
msgstr "Added %{count} images to post"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:636
|
#: lib/bds/desktop/shell_live.ex:642
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Added %{title}"
|
msgid "Added %{title}"
|
||||||
msgstr "Added %{title}"
|
msgstr "Added %{title}"
|
||||||
@@ -3243,18 +3243,18 @@ msgstr ""
|
|||||||
msgid "Image Import Concurrency"
|
msgid "Image Import Concurrency"
|
||||||
msgstr "Image Import Concurrency"
|
msgstr "Image Import Concurrency"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:441
|
#: lib/bds/desktop/shell_live.ex:447
|
||||||
#: lib/bds/desktop/shell_live.ex:454
|
#: lib/bds/desktop/shell_live.ex:460
|
||||||
#: lib/bds/desktop/shell_live.ex:635
|
#: lib/bds/desktop/shell_live.ex:641
|
||||||
#: lib/bds/desktop/shell_live.ex:667
|
#: lib/bds/desktop/shell_live.ex:673
|
||||||
#: lib/bds/desktop/shell_live.ex:678
|
#: lib/bds/desktop/shell_live.ex:684
|
||||||
#: lib/bds/desktop/shell_live.ex:689
|
#: lib/bds/desktop/shell_live.ex:695
|
||||||
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:420
|
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:420
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Add Gallery Images"
|
msgid "Add Gallery Images"
|
||||||
msgstr "Add Gallery Images"
|
msgstr "Add Gallery Images"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:690
|
#: lib/bds/desktop/shell_live.ex:696
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Failed to process %{path}: %{reason}"
|
msgid "Failed to process %{path}: %{reason}"
|
||||||
msgstr "Failed to process %{path}: %{reason}"
|
msgstr "Failed to process %{path}: %{reason}"
|
||||||
@@ -3353,7 +3353,7 @@ msgid "Local only"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_handler.ex:113
|
#: lib/bds/desktop/shell_live/git_handler.ex:113
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:82
|
#: lib/bds/desktop/shell_live/git_run.ex:83
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "No active project"
|
msgid "No active project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3445,12 +3445,12 @@ msgstr ""
|
|||||||
msgid "untracked"
|
msgid "untracked"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:769
|
#: lib/bds/desktop/shell_live.ex:792
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "Blogmark"
|
msgid "Blogmark"
|
||||||
msgstr "Blogmark"
|
msgstr "Blogmark"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:812
|
#: lib/bds/desktop/shell_live.ex:835
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Open a project before importing a blogmark."
|
msgid "Open a project before importing a blogmark."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3491,7 +3491,7 @@ msgstr ""
|
|||||||
msgid "Failed to copy bookmarklet to clipboard"
|
msgid "Failed to copy bookmarklet to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:781
|
#: lib/bds/desktop/shell_live.ex:804
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "The project this blogmark targets does not exist here."
|
msgid "The project this blogmark targets does not exist here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3537,12 +3537,13 @@ msgid "Zoom"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:91
|
#: lib/bds/desktop/shell_live/git_run.ex:91
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:127
|
#: lib/bds/desktop/shell_live/git_run.ex:129
|
||||||
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:191
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:124
|
#: lib/bds/desktop/shell_live/git_run.ex:126
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Failed (exit %{status})"
|
msgid "Failed (exit %{status})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3566,3 +3567,33 @@ msgstr ""
|
|||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "git push"
|
msgid "git push"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:159
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "AI settings saved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:90
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Could not load models"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:187
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Could not save AI settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:182
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Loaded %{count} models."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:201
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "OK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:173
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The endpoint returned no models. You can still type a model name manually."
|
||||||
|
msgstr ""
|
||||||
|
|||||||
@@ -70,9 +70,9 @@ msgstr "IA"
|
|||||||
msgid "AI Assistant"
|
msgid "AI Assistant"
|
||||||
msgstr "Asistente de IA"
|
msgstr "Asistente de IA"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:87
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:93
|
||||||
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:152
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:190
|
||||||
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:167
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:208
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "AI Settings"
|
msgid "AI Settings"
|
||||||
msgstr "Configuración de IA"
|
msgstr "Configuración de IA"
|
||||||
@@ -336,7 +336,7 @@ msgstr "Autor"
|
|||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr "Automático"
|
msgstr "Automático"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:442
|
#: lib/bds/desktop/shell_live.ex:448
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:234
|
#: lib/bds/desktop/shell_live/chat_editor.ex:234
|
||||||
#: lib/bds/desktop/shell_live/media_editor.ex:171
|
#: lib/bds/desktop/shell_live/media_editor.ex:171
|
||||||
#: lib/bds/desktop/shell_live/media_editor.ex:364
|
#: lib/bds/desktop/shell_live/media_editor.ex:364
|
||||||
@@ -418,7 +418,7 @@ msgstr "Categoría de blogmark"
|
|||||||
msgid "Bookmarklet copy support is wired through the desktop runtime and project public URL."
|
msgid "Bookmarklet copy support is wired through the desktop runtime and project public URL."
|
||||||
msgstr "La copia del bookmarklet está conectada mediante el entorno de escritorio y la URL pública del proyecto."
|
msgstr "La copia del bookmarklet está conectada mediante el entorno de escritorio y la URL pública del proyecto."
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:126
|
#: lib/bds/desktop/shell_live/git_run.ex:128
|
||||||
#: lib/bds/desktop/shell_live/import_editor.ex:1366
|
#: lib/bds/desktop/shell_live/import_editor.ex:1366
|
||||||
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:298
|
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:298
|
||||||
#: lib/bds/desktop/shell_live/menu_editor.ex:335
|
#: lib/bds/desktop/shell_live/menu_editor.ex:335
|
||||||
@@ -431,8 +431,8 @@ msgstr "La copia del bookmarklet está conectada mediante el entorno de escritor
|
|||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:165
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:165
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:173
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:173
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:183
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:183
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:191
|
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:208
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:208
|
||||||
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:225
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancelar"
|
msgstr "Cancelar"
|
||||||
@@ -486,7 +486,7 @@ msgstr "Valores predeterminados de categoría, opciones de renderizado y conexi
|
|||||||
msgid "Category name is required"
|
msgid "Category name is required"
|
||||||
msgstr "El nombre de la categoría es obligatorio"
|
msgstr "El nombre de la categoría es obligatorio"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:748
|
#: lib/bds/desktop/shell_live.ex:771
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:87
|
#: lib/bds/desktop/shell_live/chat_editor.ex:87
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:233
|
#: lib/bds/desktop/shell_live/chat_editor.ex:233
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:323
|
#: lib/bds/desktop/shell_live/chat_editor.ex:323
|
||||||
@@ -1052,7 +1052,7 @@ msgstr "Buscar duplicados"
|
|||||||
msgid "Force Reload"
|
msgid "Force Reload"
|
||||||
msgstr "Recarga forzada"
|
msgstr "Recarga forzada"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:194
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:211
|
||||||
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:432
|
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:432
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Gallery"
|
msgid "Gallery"
|
||||||
@@ -1063,7 +1063,7 @@ msgstr "Galeria"
|
|||||||
msgid "Generate Site"
|
msgid "Generate Site"
|
||||||
msgstr "Generar sitio"
|
msgstr "Generar sitio"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:749
|
#: lib/bds/desktop/shell_live.ex:772
|
||||||
#: lib/bds/desktop/shell_live/socket_state.ex:109
|
#: lib/bds/desktop/shell_live/socket_state.ex:109
|
||||||
#: lib/bds/ui/sidebar.ex:789
|
#: lib/bds/ui/sidebar.ex:789
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
@@ -1077,7 +1077,7 @@ msgid "Git Diff"
|
|||||||
msgstr "Diff de Git"
|
msgstr "Diff de Git"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_data.ex:226
|
#: lib/bds/desktop/shell_data.ex:226
|
||||||
#: lib/bds/desktop/shell_live.ex:745
|
#: lib/bds/desktop/shell_live.ex:768
|
||||||
#: lib/bds/desktop/shell_live/panel_renderer.ex:171
|
#: lib/bds/desktop/shell_live/panel_renderer.ex:171
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Git Log"
|
msgid "Git Log"
|
||||||
@@ -1200,9 +1200,9 @@ msgstr "Definiciones de importación"
|
|||||||
msgid "Import failed: %{error}"
|
msgid "Import failed: %{error}"
|
||||||
msgstr "La importación falló: %{error}"
|
msgstr "La importación falló: %{error}"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:592
|
#: lib/bds/desktop/shell_live.ex:598
|
||||||
#: lib/bds/desktop/shell_live.ex:861
|
#: lib/bds/desktop/shell_live.ex:884
|
||||||
#: lib/bds/desktop/shell_live.ex:867
|
#: lib/bds/desktop/shell_live.ex:890
|
||||||
#: lib/bds/desktop/shell_live/sidebar_create.ex:47
|
#: lib/bds/desktop/shell_live/sidebar_create.ex:47
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Import media"
|
msgid "Import media"
|
||||||
@@ -1784,7 +1784,7 @@ msgstr "Otros"
|
|||||||
msgid "Other (%{count})"
|
msgid "Other (%{count})"
|
||||||
msgstr "Otros (%{count})"
|
msgstr "Otros (%{count})"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:744
|
#: lib/bds/desktop/shell_live.ex:767
|
||||||
#: lib/bds/desktop/shell_live/panel_renderer.ex:83
|
#: lib/bds/desktop/shell_live/panel_renderer.ex:83
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Output"
|
msgid "Output"
|
||||||
@@ -2538,7 +2538,7 @@ msgstr "Nombre de la etiqueta"
|
|||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
msgstr "Etiquetas"
|
msgstr "Etiquetas"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:743
|
#: lib/bds/desktop/shell_live.ex:766
|
||||||
#: lib/bds/desktop/shell_live/panel_renderer.ex:54
|
#: lib/bds/desktop/shell_live/panel_renderer.ex:54
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Tasks"
|
msgid "Tasks"
|
||||||
@@ -3218,12 +3218,12 @@ msgstr "Bienvenido al asistente de IA"
|
|||||||
msgid "Comparing database and filesystem metadata"
|
msgid "Comparing database and filesystem metadata"
|
||||||
msgstr "Comparando metadatos de la base de datos y del sistema de archivos"
|
msgstr "Comparando metadatos de la base de datos y del sistema de archivos"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:668
|
#: lib/bds/desktop/shell_live.ex:674
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Added %{count} images to post"
|
msgid "Added %{count} images to post"
|
||||||
msgstr "%{count} imágenes añadidas a la publicación"
|
msgstr "%{count} imágenes añadidas a la publicación"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:636
|
#: lib/bds/desktop/shell_live.ex:642
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Added %{title}"
|
msgid "Added %{title}"
|
||||||
msgstr "%{title} añadido"
|
msgstr "%{title} añadido"
|
||||||
@@ -3243,18 +3243,18 @@ msgstr "Guía del usuario para flujos editoriales, medios, plantillas, traducci
|
|||||||
msgid "Image Import Concurrency"
|
msgid "Image Import Concurrency"
|
||||||
msgstr "Importación simultánea de imágenes"
|
msgstr "Importación simultánea de imágenes"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:441
|
#: lib/bds/desktop/shell_live.ex:447
|
||||||
#: lib/bds/desktop/shell_live.ex:454
|
#: lib/bds/desktop/shell_live.ex:460
|
||||||
#: lib/bds/desktop/shell_live.ex:635
|
#: lib/bds/desktop/shell_live.ex:641
|
||||||
#: lib/bds/desktop/shell_live.ex:667
|
#: lib/bds/desktop/shell_live.ex:673
|
||||||
#: lib/bds/desktop/shell_live.ex:678
|
#: lib/bds/desktop/shell_live.ex:684
|
||||||
#: lib/bds/desktop/shell_live.ex:689
|
#: lib/bds/desktop/shell_live.ex:695
|
||||||
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:420
|
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:420
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Add Gallery Images"
|
msgid "Add Gallery Images"
|
||||||
msgstr "Añadir imágenes a la galería"
|
msgstr "Añadir imágenes a la galería"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:690
|
#: lib/bds/desktop/shell_live.ex:696
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Failed to process %{path}: %{reason}"
|
msgid "Failed to process %{path}: %{reason}"
|
||||||
msgstr "No se pudo procesar %{path}: %{reason}"
|
msgstr "No se pudo procesar %{path}: %{reason}"
|
||||||
@@ -3353,7 +3353,7 @@ msgid "Local only"
|
|||||||
msgstr "Solo local"
|
msgstr "Solo local"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_handler.ex:113
|
#: lib/bds/desktop/shell_live/git_handler.ex:113
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:82
|
#: lib/bds/desktop/shell_live/git_run.ex:83
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "No active project"
|
msgid "No active project"
|
||||||
msgstr "Sin proyecto activo"
|
msgstr "Sin proyecto activo"
|
||||||
@@ -3445,12 +3445,12 @@ msgstr "renombrado"
|
|||||||
msgid "untracked"
|
msgid "untracked"
|
||||||
msgstr "sin seguimiento"
|
msgstr "sin seguimiento"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:769
|
#: lib/bds/desktop/shell_live.ex:792
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Blogmark"
|
msgid "Blogmark"
|
||||||
msgstr "Blogmark"
|
msgstr "Blogmark"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:812
|
#: lib/bds/desktop/shell_live.ex:835
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Open a project before importing a blogmark."
|
msgid "Open a project before importing a blogmark."
|
||||||
msgstr "Abre un proyecto antes de importar un blogmark."
|
msgstr "Abre un proyecto antes de importar un blogmark."
|
||||||
@@ -3491,7 +3491,7 @@ msgstr "Eliminar"
|
|||||||
msgid "Failed to copy bookmarklet to clipboard"
|
msgid "Failed to copy bookmarklet to clipboard"
|
||||||
msgstr "Error al copiar el bookmarklet al portapapeles"
|
msgstr "Error al copiar el bookmarklet al portapapeles"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:781
|
#: lib/bds/desktop/shell_live.ex:804
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "The project this blogmark targets does not exist here."
|
msgid "The project this blogmark targets does not exist here."
|
||||||
msgstr "El proyecto al que apunta este blogmark no existe aquí."
|
msgstr "El proyecto al que apunta este blogmark no existe aquí."
|
||||||
@@ -3537,12 +3537,13 @@ msgid "Zoom"
|
|||||||
msgstr "Ampliar/reducir"
|
msgstr "Ampliar/reducir"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:91
|
#: lib/bds/desktop/shell_live/git_run.ex:91
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:127
|
#: lib/bds/desktop/shell_live/git_run.ex:129
|
||||||
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:191
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Cerrar"
|
msgstr "Cerrar"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:124
|
#: lib/bds/desktop/shell_live/git_run.ex:126
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Failed (exit %{status})"
|
msgid "Failed (exit %{status})"
|
||||||
msgstr "Error (salida %{status})"
|
msgstr "Error (salida %{status})"
|
||||||
@@ -3566,3 +3567,33 @@ msgstr "git pull"
|
|||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "git push"
|
msgid "git push"
|
||||||
msgstr "git push"
|
msgstr "git push"
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:159
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "AI settings saved."
|
||||||
|
msgstr "Configuración de IA guardada."
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:90
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Could not load models"
|
||||||
|
msgstr "No se pudieron cargar los modelos"
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:187
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Could not save AI settings"
|
||||||
|
msgstr "No se pudo guardar la configuración de IA"
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:182
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Loaded %{count} models."
|
||||||
|
msgstr "%{count} modelos cargados."
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:201
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "OK"
|
||||||
|
msgstr "OK"
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:173
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The endpoint returned no models. You can still type a model name manually."
|
||||||
|
msgstr "El endpoint no devolvió ningún modelo. Aún puedes escribir el nombre de un modelo manualmente."
|
||||||
|
|||||||
@@ -70,9 +70,9 @@ msgstr "IA"
|
|||||||
msgid "AI Assistant"
|
msgid "AI Assistant"
|
||||||
msgstr "Assistant IA"
|
msgstr "Assistant IA"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:87
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:93
|
||||||
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:152
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:190
|
||||||
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:167
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:208
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "AI Settings"
|
msgid "AI Settings"
|
||||||
msgstr "Paramètres IA"
|
msgstr "Paramètres IA"
|
||||||
@@ -336,7 +336,7 @@ msgstr "Auteur"
|
|||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr "Automatique"
|
msgstr "Automatique"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:442
|
#: lib/bds/desktop/shell_live.ex:448
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:234
|
#: lib/bds/desktop/shell_live/chat_editor.ex:234
|
||||||
#: lib/bds/desktop/shell_live/media_editor.ex:171
|
#: lib/bds/desktop/shell_live/media_editor.ex:171
|
||||||
#: lib/bds/desktop/shell_live/media_editor.ex:364
|
#: lib/bds/desktop/shell_live/media_editor.ex:364
|
||||||
@@ -418,7 +418,7 @@ msgstr "Catégorie de blogmark"
|
|||||||
msgid "Bookmarklet copy support is wired through the desktop runtime and project public URL."
|
msgid "Bookmarklet copy support is wired through the desktop runtime and project public URL."
|
||||||
msgstr "La copie du bookmarklet est reliée via l’environnement desktop et l’URL publique du projet."
|
msgstr "La copie du bookmarklet est reliée via l’environnement desktop et l’URL publique du projet."
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:126
|
#: lib/bds/desktop/shell_live/git_run.ex:128
|
||||||
#: lib/bds/desktop/shell_live/import_editor.ex:1366
|
#: lib/bds/desktop/shell_live/import_editor.ex:1366
|
||||||
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:298
|
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:298
|
||||||
#: lib/bds/desktop/shell_live/menu_editor.ex:335
|
#: lib/bds/desktop/shell_live/menu_editor.ex:335
|
||||||
@@ -431,8 +431,8 @@ msgstr "La copie du bookmarklet est reliée via l’environnement desktop et l
|
|||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:165
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:165
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:173
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:173
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:183
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:183
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:191
|
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:208
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:208
|
||||||
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:225
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Annuler"
|
msgstr "Annuler"
|
||||||
@@ -486,7 +486,7 @@ msgstr "Valeurs par défaut des catégories, options de rendu et liaison des mod
|
|||||||
msgid "Category name is required"
|
msgid "Category name is required"
|
||||||
msgstr "Le nom de la catégorie est requis"
|
msgstr "Le nom de la catégorie est requis"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:748
|
#: lib/bds/desktop/shell_live.ex:771
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:87
|
#: lib/bds/desktop/shell_live/chat_editor.ex:87
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:233
|
#: lib/bds/desktop/shell_live/chat_editor.ex:233
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:323
|
#: lib/bds/desktop/shell_live/chat_editor.ex:323
|
||||||
@@ -1052,7 +1052,7 @@ msgstr "Trouver les doublons"
|
|||||||
msgid "Force Reload"
|
msgid "Force Reload"
|
||||||
msgstr "Recharger de force"
|
msgstr "Recharger de force"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:194
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:211
|
||||||
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:432
|
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:432
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Gallery"
|
msgid "Gallery"
|
||||||
@@ -1063,7 +1063,7 @@ msgstr "Galerie"
|
|||||||
msgid "Generate Site"
|
msgid "Generate Site"
|
||||||
msgstr "Générer le site"
|
msgstr "Générer le site"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:749
|
#: lib/bds/desktop/shell_live.ex:772
|
||||||
#: lib/bds/desktop/shell_live/socket_state.ex:109
|
#: lib/bds/desktop/shell_live/socket_state.ex:109
|
||||||
#: lib/bds/ui/sidebar.ex:789
|
#: lib/bds/ui/sidebar.ex:789
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
@@ -1077,7 +1077,7 @@ msgid "Git Diff"
|
|||||||
msgstr "Diff Git"
|
msgstr "Diff Git"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_data.ex:226
|
#: lib/bds/desktop/shell_data.ex:226
|
||||||
#: lib/bds/desktop/shell_live.ex:745
|
#: lib/bds/desktop/shell_live.ex:768
|
||||||
#: lib/bds/desktop/shell_live/panel_renderer.ex:171
|
#: lib/bds/desktop/shell_live/panel_renderer.ex:171
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Git Log"
|
msgid "Git Log"
|
||||||
@@ -1200,9 +1200,9 @@ msgstr "Définitions d’import"
|
|||||||
msgid "Import failed: %{error}"
|
msgid "Import failed: %{error}"
|
||||||
msgstr "Échec de l’import : %{error}"
|
msgstr "Échec de l’import : %{error}"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:592
|
#: lib/bds/desktop/shell_live.ex:598
|
||||||
#: lib/bds/desktop/shell_live.ex:861
|
#: lib/bds/desktop/shell_live.ex:884
|
||||||
#: lib/bds/desktop/shell_live.ex:867
|
#: lib/bds/desktop/shell_live.ex:890
|
||||||
#: lib/bds/desktop/shell_live/sidebar_create.ex:47
|
#: lib/bds/desktop/shell_live/sidebar_create.ex:47
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Import media"
|
msgid "Import media"
|
||||||
@@ -1784,7 +1784,7 @@ msgstr "Autre"
|
|||||||
msgid "Other (%{count})"
|
msgid "Other (%{count})"
|
||||||
msgstr "Autres (%{count})"
|
msgstr "Autres (%{count})"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:744
|
#: lib/bds/desktop/shell_live.ex:767
|
||||||
#: lib/bds/desktop/shell_live/panel_renderer.ex:83
|
#: lib/bds/desktop/shell_live/panel_renderer.ex:83
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Output"
|
msgid "Output"
|
||||||
@@ -2538,7 +2538,7 @@ msgstr "Nom du mot-clé"
|
|||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
msgstr "Tags"
|
msgstr "Tags"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:743
|
#: lib/bds/desktop/shell_live.ex:766
|
||||||
#: lib/bds/desktop/shell_live/panel_renderer.ex:54
|
#: lib/bds/desktop/shell_live/panel_renderer.ex:54
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Tasks"
|
msgid "Tasks"
|
||||||
@@ -3218,12 +3218,12 @@ msgstr "Bienvenue dans l’assistant IA"
|
|||||||
msgid "Comparing database and filesystem metadata"
|
msgid "Comparing database and filesystem metadata"
|
||||||
msgstr "Comparaison des métadonnées entre la base et le système de fichiers"
|
msgstr "Comparaison des métadonnées entre la base et le système de fichiers"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:668
|
#: lib/bds/desktop/shell_live.ex:674
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Added %{count} images to post"
|
msgid "Added %{count} images to post"
|
||||||
msgstr "%{count} images ajoutées à l'article"
|
msgstr "%{count} images ajoutées à l'article"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:636
|
#: lib/bds/desktop/shell_live.ex:642
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Added %{title}"
|
msgid "Added %{title}"
|
||||||
msgstr "%{title} ajouté"
|
msgstr "%{title} ajouté"
|
||||||
@@ -3243,18 +3243,18 @@ msgstr "Guide utilisateur pour les flux éditoriaux, médias, modèles, traducti
|
|||||||
msgid "Image Import Concurrency"
|
msgid "Image Import Concurrency"
|
||||||
msgstr "Importation simultanée d'images"
|
msgstr "Importation simultanée d'images"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:441
|
#: lib/bds/desktop/shell_live.ex:447
|
||||||
#: lib/bds/desktop/shell_live.ex:454
|
#: lib/bds/desktop/shell_live.ex:460
|
||||||
#: lib/bds/desktop/shell_live.ex:635
|
#: lib/bds/desktop/shell_live.ex:641
|
||||||
#: lib/bds/desktop/shell_live.ex:667
|
#: lib/bds/desktop/shell_live.ex:673
|
||||||
#: lib/bds/desktop/shell_live.ex:678
|
#: lib/bds/desktop/shell_live.ex:684
|
||||||
#: lib/bds/desktop/shell_live.ex:689
|
#: lib/bds/desktop/shell_live.ex:695
|
||||||
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:420
|
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:420
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Add Gallery Images"
|
msgid "Add Gallery Images"
|
||||||
msgstr "Ajouter des images à la galerie"
|
msgstr "Ajouter des images à la galerie"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:690
|
#: lib/bds/desktop/shell_live.ex:696
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Failed to process %{path}: %{reason}"
|
msgid "Failed to process %{path}: %{reason}"
|
||||||
msgstr "Impossible de traiter %{path} : %{reason}"
|
msgstr "Impossible de traiter %{path} : %{reason}"
|
||||||
@@ -3353,7 +3353,7 @@ msgid "Local only"
|
|||||||
msgstr "Local uniquement"
|
msgstr "Local uniquement"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_handler.ex:113
|
#: lib/bds/desktop/shell_live/git_handler.ex:113
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:82
|
#: lib/bds/desktop/shell_live/git_run.ex:83
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "No active project"
|
msgid "No active project"
|
||||||
msgstr "Aucun projet actif"
|
msgstr "Aucun projet actif"
|
||||||
@@ -3445,12 +3445,12 @@ msgstr "renommé"
|
|||||||
msgid "untracked"
|
msgid "untracked"
|
||||||
msgstr "non suivi"
|
msgstr "non suivi"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:769
|
#: lib/bds/desktop/shell_live.ex:792
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Blogmark"
|
msgid "Blogmark"
|
||||||
msgstr "Blogmark"
|
msgstr "Blogmark"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:812
|
#: lib/bds/desktop/shell_live.ex:835
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Open a project before importing a blogmark."
|
msgid "Open a project before importing a blogmark."
|
||||||
msgstr "Ouvrez un projet avant d’importer un blogmark."
|
msgstr "Ouvrez un projet avant d’importer un blogmark."
|
||||||
@@ -3491,7 +3491,7 @@ msgstr "Supprimer"
|
|||||||
msgid "Failed to copy bookmarklet to clipboard"
|
msgid "Failed to copy bookmarklet to clipboard"
|
||||||
msgstr "Échec de la copie du bookmarklet dans le presse-papiers"
|
msgstr "Échec de la copie du bookmarklet dans le presse-papiers"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:781
|
#: lib/bds/desktop/shell_live.ex:804
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "The project this blogmark targets does not exist here."
|
msgid "The project this blogmark targets does not exist here."
|
||||||
msgstr "Le projet ciblé par ce blogmark n'existe pas ici."
|
msgstr "Le projet ciblé par ce blogmark n'existe pas ici."
|
||||||
@@ -3537,12 +3537,13 @@ msgid "Zoom"
|
|||||||
msgstr "Réduire/agrandir"
|
msgstr "Réduire/agrandir"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:91
|
#: lib/bds/desktop/shell_live/git_run.ex:91
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:127
|
#: lib/bds/desktop/shell_live/git_run.ex:129
|
||||||
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:191
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Fermer"
|
msgstr "Fermer"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:124
|
#: lib/bds/desktop/shell_live/git_run.ex:126
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Failed (exit %{status})"
|
msgid "Failed (exit %{status})"
|
||||||
msgstr "Échec (code %{status})"
|
msgstr "Échec (code %{status})"
|
||||||
@@ -3566,3 +3567,33 @@ msgstr "git pull"
|
|||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "git push"
|
msgid "git push"
|
||||||
msgstr "git push"
|
msgstr "git push"
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:159
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "AI settings saved."
|
||||||
|
msgstr "Paramètres IA enregistrés."
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:90
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Could not load models"
|
||||||
|
msgstr "Impossible de charger les modèles"
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:187
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Could not save AI settings"
|
||||||
|
msgstr "Impossible d'enregistrer les paramètres IA"
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:182
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Loaded %{count} models."
|
||||||
|
msgstr "%{count} modèles chargés."
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:201
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "OK"
|
||||||
|
msgstr "OK"
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:173
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The endpoint returned no models. You can still type a model name manually."
|
||||||
|
msgstr "Le point de terminaison n'a renvoyé aucun modèle. Vous pouvez toujours saisir un nom de modèle manuellement."
|
||||||
|
|||||||
@@ -70,9 +70,9 @@ msgstr "IA"
|
|||||||
msgid "AI Assistant"
|
msgid "AI Assistant"
|
||||||
msgstr "Assistente IA"
|
msgstr "Assistente IA"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:87
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:93
|
||||||
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:152
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:190
|
||||||
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:167
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:208
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "AI Settings"
|
msgid "AI Settings"
|
||||||
msgstr "Impostazioni IA"
|
msgstr "Impostazioni IA"
|
||||||
@@ -336,7 +336,7 @@ msgstr "Autore"
|
|||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr "Automatico"
|
msgstr "Automatico"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:442
|
#: lib/bds/desktop/shell_live.ex:448
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:234
|
#: lib/bds/desktop/shell_live/chat_editor.ex:234
|
||||||
#: lib/bds/desktop/shell_live/media_editor.ex:171
|
#: lib/bds/desktop/shell_live/media_editor.ex:171
|
||||||
#: lib/bds/desktop/shell_live/media_editor.ex:364
|
#: lib/bds/desktop/shell_live/media_editor.ex:364
|
||||||
@@ -418,7 +418,7 @@ msgstr "Categoria blogmark"
|
|||||||
msgid "Bookmarklet copy support is wired through the desktop runtime and project public URL."
|
msgid "Bookmarklet copy support is wired through the desktop runtime and project public URL."
|
||||||
msgstr "La copia del bookmarklet è collegata tramite il runtime desktop e l’URL pubblica del progetto."
|
msgstr "La copia del bookmarklet è collegata tramite il runtime desktop e l’URL pubblica del progetto."
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:126
|
#: lib/bds/desktop/shell_live/git_run.ex:128
|
||||||
#: lib/bds/desktop/shell_live/import_editor.ex:1366
|
#: lib/bds/desktop/shell_live/import_editor.ex:1366
|
||||||
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:298
|
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:298
|
||||||
#: lib/bds/desktop/shell_live/menu_editor.ex:335
|
#: lib/bds/desktop/shell_live/menu_editor.ex:335
|
||||||
@@ -431,8 +431,8 @@ msgstr "La copia del bookmarklet è collegata tramite il runtime desktop e l’U
|
|||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:165
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:165
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:173
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:173
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:183
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:183
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:191
|
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:208
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:208
|
||||||
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:225
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Annulla"
|
msgstr "Annulla"
|
||||||
@@ -486,7 +486,7 @@ msgstr "Valori predefiniti delle categorie, opzioni di rendering e collegamento
|
|||||||
msgid "Category name is required"
|
msgid "Category name is required"
|
||||||
msgstr "Il nome della categoria è obbligatorio"
|
msgstr "Il nome della categoria è obbligatorio"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:748
|
#: lib/bds/desktop/shell_live.ex:771
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:87
|
#: lib/bds/desktop/shell_live/chat_editor.ex:87
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:233
|
#: lib/bds/desktop/shell_live/chat_editor.ex:233
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:323
|
#: lib/bds/desktop/shell_live/chat_editor.ex:323
|
||||||
@@ -1052,7 +1052,7 @@ msgstr "Trova duplicati"
|
|||||||
msgid "Force Reload"
|
msgid "Force Reload"
|
||||||
msgstr "Ricarica forzata"
|
msgstr "Ricarica forzata"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:194
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:211
|
||||||
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:432
|
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:432
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Gallery"
|
msgid "Gallery"
|
||||||
@@ -1063,7 +1063,7 @@ msgstr "Galleria"
|
|||||||
msgid "Generate Site"
|
msgid "Generate Site"
|
||||||
msgstr "Genera sito"
|
msgstr "Genera sito"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:749
|
#: lib/bds/desktop/shell_live.ex:772
|
||||||
#: lib/bds/desktop/shell_live/socket_state.ex:109
|
#: lib/bds/desktop/shell_live/socket_state.ex:109
|
||||||
#: lib/bds/ui/sidebar.ex:789
|
#: lib/bds/ui/sidebar.ex:789
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
@@ -1077,7 +1077,7 @@ msgid "Git Diff"
|
|||||||
msgstr "Diff Git"
|
msgstr "Diff Git"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_data.ex:226
|
#: lib/bds/desktop/shell_data.ex:226
|
||||||
#: lib/bds/desktop/shell_live.ex:745
|
#: lib/bds/desktop/shell_live.ex:768
|
||||||
#: lib/bds/desktop/shell_live/panel_renderer.ex:171
|
#: lib/bds/desktop/shell_live/panel_renderer.ex:171
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Git Log"
|
msgid "Git Log"
|
||||||
@@ -1200,9 +1200,9 @@ msgstr "Definizioni di importazione"
|
|||||||
msgid "Import failed: %{error}"
|
msgid "Import failed: %{error}"
|
||||||
msgstr "Importazione non riuscita: %{error}"
|
msgstr "Importazione non riuscita: %{error}"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:592
|
#: lib/bds/desktop/shell_live.ex:598
|
||||||
#: lib/bds/desktop/shell_live.ex:861
|
#: lib/bds/desktop/shell_live.ex:884
|
||||||
#: lib/bds/desktop/shell_live.ex:867
|
#: lib/bds/desktop/shell_live.ex:890
|
||||||
#: lib/bds/desktop/shell_live/sidebar_create.ex:47
|
#: lib/bds/desktop/shell_live/sidebar_create.ex:47
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Import media"
|
msgid "Import media"
|
||||||
@@ -1784,7 +1784,7 @@ msgstr "Altro"
|
|||||||
msgid "Other (%{count})"
|
msgid "Other (%{count})"
|
||||||
msgstr "Altro (%{count})"
|
msgstr "Altro (%{count})"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:744
|
#: lib/bds/desktop/shell_live.ex:767
|
||||||
#: lib/bds/desktop/shell_live/panel_renderer.ex:83
|
#: lib/bds/desktop/shell_live/panel_renderer.ex:83
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Output"
|
msgid "Output"
|
||||||
@@ -2538,7 +2538,7 @@ msgstr "Nome del tag"
|
|||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
msgstr "Tag"
|
msgstr "Tag"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:743
|
#: lib/bds/desktop/shell_live.ex:766
|
||||||
#: lib/bds/desktop/shell_live/panel_renderer.ex:54
|
#: lib/bds/desktop/shell_live/panel_renderer.ex:54
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Tasks"
|
msgid "Tasks"
|
||||||
@@ -3218,12 +3218,12 @@ msgstr "Benvenuto nell’assistente IA"
|
|||||||
msgid "Comparing database and filesystem metadata"
|
msgid "Comparing database and filesystem metadata"
|
||||||
msgstr "Confronto tra i metadati del database e del filesystem"
|
msgstr "Confronto tra i metadati del database e del filesystem"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:668
|
#: lib/bds/desktop/shell_live.ex:674
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Added %{count} images to post"
|
msgid "Added %{count} images to post"
|
||||||
msgstr "%{count} immagini aggiunte al post"
|
msgstr "%{count} immagini aggiunte al post"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:636
|
#: lib/bds/desktop/shell_live.ex:642
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Added %{title}"
|
msgid "Added %{title}"
|
||||||
msgstr "%{title} aggiunto"
|
msgstr "%{title} aggiunto"
|
||||||
@@ -3243,18 +3243,18 @@ msgstr "Guida per l'utente finale per flussi editoriali, media, modelli, traduzi
|
|||||||
msgid "Image Import Concurrency"
|
msgid "Image Import Concurrency"
|
||||||
msgstr "Importazione simultanea immagini"
|
msgstr "Importazione simultanea immagini"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:441
|
#: lib/bds/desktop/shell_live.ex:447
|
||||||
#: lib/bds/desktop/shell_live.ex:454
|
#: lib/bds/desktop/shell_live.ex:460
|
||||||
#: lib/bds/desktop/shell_live.ex:635
|
#: lib/bds/desktop/shell_live.ex:641
|
||||||
#: lib/bds/desktop/shell_live.ex:667
|
#: lib/bds/desktop/shell_live.ex:673
|
||||||
#: lib/bds/desktop/shell_live.ex:678
|
#: lib/bds/desktop/shell_live.ex:684
|
||||||
#: lib/bds/desktop/shell_live.ex:689
|
#: lib/bds/desktop/shell_live.ex:695
|
||||||
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:420
|
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:420
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Add Gallery Images"
|
msgid "Add Gallery Images"
|
||||||
msgstr "Aggiungi immagini alla galleria"
|
msgstr "Aggiungi immagini alla galleria"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:690
|
#: lib/bds/desktop/shell_live.ex:696
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Failed to process %{path}: %{reason}"
|
msgid "Failed to process %{path}: %{reason}"
|
||||||
msgstr "Impossibile elaborare %{path}: %{reason}"
|
msgstr "Impossibile elaborare %{path}: %{reason}"
|
||||||
@@ -3353,7 +3353,7 @@ msgid "Local only"
|
|||||||
msgstr "Solo locale"
|
msgstr "Solo locale"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_handler.ex:113
|
#: lib/bds/desktop/shell_live/git_handler.ex:113
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:82
|
#: lib/bds/desktop/shell_live/git_run.ex:83
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "No active project"
|
msgid "No active project"
|
||||||
msgstr "Nessun progetto attivo"
|
msgstr "Nessun progetto attivo"
|
||||||
@@ -3445,12 +3445,12 @@ msgstr "rinominato"
|
|||||||
msgid "untracked"
|
msgid "untracked"
|
||||||
msgstr "non tracciato"
|
msgstr "non tracciato"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:769
|
#: lib/bds/desktop/shell_live.ex:792
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Blogmark"
|
msgid "Blogmark"
|
||||||
msgstr "Blogmark"
|
msgstr "Blogmark"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:812
|
#: lib/bds/desktop/shell_live.ex:835
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Open a project before importing a blogmark."
|
msgid "Open a project before importing a blogmark."
|
||||||
msgstr "Apri un progetto prima di importare un blogmark."
|
msgstr "Apri un progetto prima di importare un blogmark."
|
||||||
@@ -3491,7 +3491,7 @@ msgstr "Elimina"
|
|||||||
msgid "Failed to copy bookmarklet to clipboard"
|
msgid "Failed to copy bookmarklet to clipboard"
|
||||||
msgstr "Impossibile copiare il bookmarklet negli appunti"
|
msgstr "Impossibile copiare il bookmarklet negli appunti"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:781
|
#: lib/bds/desktop/shell_live.ex:804
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "The project this blogmark targets does not exist here."
|
msgid "The project this blogmark targets does not exist here."
|
||||||
msgstr "Il progetto a cui punta questo blogmark non esiste qui."
|
msgstr "Il progetto a cui punta questo blogmark non esiste qui."
|
||||||
@@ -3537,12 +3537,13 @@ msgid "Zoom"
|
|||||||
msgstr "Riduci/ingrandisci"
|
msgstr "Riduci/ingrandisci"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:91
|
#: lib/bds/desktop/shell_live/git_run.ex:91
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:127
|
#: lib/bds/desktop/shell_live/git_run.ex:129
|
||||||
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:191
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Chiudi"
|
msgstr "Chiudi"
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:124
|
#: lib/bds/desktop/shell_live/git_run.ex:126
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Failed (exit %{status})"
|
msgid "Failed (exit %{status})"
|
||||||
msgstr "Non riuscito (uscita %{status})"
|
msgstr "Non riuscito (uscita %{status})"
|
||||||
@@ -3566,3 +3567,33 @@ msgstr "git pull"
|
|||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "git push"
|
msgid "git push"
|
||||||
msgstr "git push"
|
msgstr "git push"
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:159
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "AI settings saved."
|
||||||
|
msgstr "Impostazioni IA salvate."
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:90
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Could not load models"
|
||||||
|
msgstr "Impossibile caricare i modelli"
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:187
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Could not save AI settings"
|
||||||
|
msgstr "Impossibile salvare le impostazioni IA"
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:182
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Loaded %{count} models."
|
||||||
|
msgstr "Caricati %{count} modelli."
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:201
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "OK"
|
||||||
|
msgstr "OK"
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:173
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The endpoint returned no models. You can still type a model name manually."
|
||||||
|
msgstr "L'endpoint non ha restituito alcun modello. Puoi comunque digitare manualmente il nome di un modello."
|
||||||
|
|||||||
@@ -83,9 +83,9 @@ msgstr ""
|
|||||||
msgid "AI Assistant"
|
msgid "AI Assistant"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:87
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:93
|
||||||
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:152
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:190
|
||||||
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:167
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:208
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "AI Settings"
|
msgid "AI Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -349,7 +349,7 @@ msgstr ""
|
|||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:442
|
#: lib/bds/desktop/shell_live.ex:448
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:234
|
#: lib/bds/desktop/shell_live/chat_editor.ex:234
|
||||||
#: lib/bds/desktop/shell_live/media_editor.ex:171
|
#: lib/bds/desktop/shell_live/media_editor.ex:171
|
||||||
#: lib/bds/desktop/shell_live/media_editor.ex:364
|
#: lib/bds/desktop/shell_live/media_editor.ex:364
|
||||||
@@ -431,7 +431,7 @@ msgstr ""
|
|||||||
msgid "Bookmarklet copy support is wired through the desktop runtime and project public URL."
|
msgid "Bookmarklet copy support is wired through the desktop runtime and project public URL."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:126
|
#: lib/bds/desktop/shell_live/git_run.ex:128
|
||||||
#: lib/bds/desktop/shell_live/import_editor.ex:1366
|
#: lib/bds/desktop/shell_live/import_editor.ex:1366
|
||||||
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:298
|
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:298
|
||||||
#: lib/bds/desktop/shell_live/menu_editor.ex:335
|
#: lib/bds/desktop/shell_live/menu_editor.ex:335
|
||||||
@@ -444,8 +444,8 @@ msgstr ""
|
|||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:165
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:165
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:173
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:173
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:183
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:183
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:191
|
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:208
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:208
|
||||||
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:225
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -499,7 +499,7 @@ msgstr ""
|
|||||||
msgid "Category name is required"
|
msgid "Category name is required"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:748
|
#: lib/bds/desktop/shell_live.ex:771
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:87
|
#: lib/bds/desktop/shell_live/chat_editor.ex:87
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:233
|
#: lib/bds/desktop/shell_live/chat_editor.ex:233
|
||||||
#: lib/bds/desktop/shell_live/chat_editor.ex:323
|
#: lib/bds/desktop/shell_live/chat_editor.ex:323
|
||||||
@@ -1065,7 +1065,7 @@ msgstr ""
|
|||||||
msgid "Force Reload"
|
msgid "Force Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:194
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:211
|
||||||
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:432
|
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:432
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Gallery"
|
msgid "Gallery"
|
||||||
@@ -1076,7 +1076,7 @@ msgstr ""
|
|||||||
msgid "Generate Site"
|
msgid "Generate Site"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:749
|
#: lib/bds/desktop/shell_live.ex:772
|
||||||
#: lib/bds/desktop/shell_live/socket_state.ex:109
|
#: lib/bds/desktop/shell_live/socket_state.ex:109
|
||||||
#: lib/bds/ui/sidebar.ex:789
|
#: lib/bds/ui/sidebar.ex:789
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
@@ -1090,7 +1090,7 @@ msgid "Git Diff"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_data.ex:226
|
#: lib/bds/desktop/shell_data.ex:226
|
||||||
#: lib/bds/desktop/shell_live.ex:745
|
#: lib/bds/desktop/shell_live.ex:768
|
||||||
#: lib/bds/desktop/shell_live/panel_renderer.ex:171
|
#: lib/bds/desktop/shell_live/panel_renderer.ex:171
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Git Log"
|
msgid "Git Log"
|
||||||
@@ -1213,9 +1213,9 @@ msgstr ""
|
|||||||
msgid "Import failed: %{error}"
|
msgid "Import failed: %{error}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:592
|
#: lib/bds/desktop/shell_live.ex:598
|
||||||
#: lib/bds/desktop/shell_live.ex:861
|
#: lib/bds/desktop/shell_live.ex:884
|
||||||
#: lib/bds/desktop/shell_live.ex:867
|
#: lib/bds/desktop/shell_live.ex:890
|
||||||
#: lib/bds/desktop/shell_live/sidebar_create.ex:47
|
#: lib/bds/desktop/shell_live/sidebar_create.ex:47
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Import media"
|
msgid "Import media"
|
||||||
@@ -1797,7 +1797,7 @@ msgstr ""
|
|||||||
msgid "Other (%{count})"
|
msgid "Other (%{count})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:744
|
#: lib/bds/desktop/shell_live.ex:767
|
||||||
#: lib/bds/desktop/shell_live/panel_renderer.ex:83
|
#: lib/bds/desktop/shell_live/panel_renderer.ex:83
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Output"
|
msgid "Output"
|
||||||
@@ -2551,7 +2551,7 @@ msgstr ""
|
|||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:743
|
#: lib/bds/desktop/shell_live.ex:766
|
||||||
#: lib/bds/desktop/shell_live/panel_renderer.ex:54
|
#: lib/bds/desktop/shell_live/panel_renderer.ex:54
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Tasks"
|
msgid "Tasks"
|
||||||
@@ -3231,12 +3231,12 @@ msgstr ""
|
|||||||
msgid "Comparing database and filesystem metadata"
|
msgid "Comparing database and filesystem metadata"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:668
|
#: lib/bds/desktop/shell_live.ex:674
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Added %{count} images to post"
|
msgid "Added %{count} images to post"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:636
|
#: lib/bds/desktop/shell_live.ex:642
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Added %{title}"
|
msgid "Added %{title}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3256,18 +3256,18 @@ msgstr ""
|
|||||||
msgid "Image Import Concurrency"
|
msgid "Image Import Concurrency"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:441
|
#: lib/bds/desktop/shell_live.ex:447
|
||||||
#: lib/bds/desktop/shell_live.ex:454
|
#: lib/bds/desktop/shell_live.ex:460
|
||||||
#: lib/bds/desktop/shell_live.ex:635
|
#: lib/bds/desktop/shell_live.ex:641
|
||||||
#: lib/bds/desktop/shell_live.ex:667
|
#: lib/bds/desktop/shell_live.ex:673
|
||||||
#: lib/bds/desktop/shell_live.ex:678
|
#: lib/bds/desktop/shell_live.ex:684
|
||||||
#: lib/bds/desktop/shell_live.ex:689
|
#: lib/bds/desktop/shell_live.ex:695
|
||||||
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:420
|
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:420
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Add Gallery Images"
|
msgid "Add Gallery Images"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:690
|
#: lib/bds/desktop/shell_live.ex:696
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Failed to process %{path}: %{reason}"
|
msgid "Failed to process %{path}: %{reason}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3366,7 +3366,7 @@ msgid "Local only"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_handler.ex:113
|
#: lib/bds/desktop/shell_live/git_handler.ex:113
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:82
|
#: lib/bds/desktop/shell_live/git_run.ex:83
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "No active project"
|
msgid "No active project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3458,12 +3458,12 @@ msgstr ""
|
|||||||
msgid "untracked"
|
msgid "untracked"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:769
|
#: lib/bds/desktop/shell_live.ex:792
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Blogmark"
|
msgid "Blogmark"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:812
|
#: lib/bds/desktop/shell_live.ex:835
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Open a project before importing a blogmark."
|
msgid "Open a project before importing a blogmark."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3504,7 +3504,7 @@ msgstr ""
|
|||||||
msgid "Failed to copy bookmarklet to clipboard"
|
msgid "Failed to copy bookmarklet to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live.ex:781
|
#: lib/bds/desktop/shell_live.ex:804
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "The project this blogmark targets does not exist here."
|
msgid "The project this blogmark targets does not exist here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3550,12 +3550,13 @@ msgid "Zoom"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:91
|
#: lib/bds/desktop/shell_live/git_run.ex:91
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:127
|
#: lib/bds/desktop/shell_live/git_run.ex:129
|
||||||
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:191
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/bds/desktop/shell_live/git_run.ex:124
|
#: lib/bds/desktop/shell_live/git_run.ex:126
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Failed (exit %{status})"
|
msgid "Failed (exit %{status})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3579,3 +3580,33 @@ msgstr ""
|
|||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "git push"
|
msgid "git push"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:159
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "AI settings saved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:90
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Could not load models"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:187
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Could not save AI settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:182
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Loaded %{count} models."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:201
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "OK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/bds/desktop/shell_live/settings_editor/ai_settings.ex:173
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The endpoint returned no models. You can still type a model name manually."
|
||||||
|
msgstr ""
|
||||||
|
|||||||
@@ -6,6 +6,12 @@
|
|||||||
--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
|
--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
|
||||||
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New',
|
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New',
|
||||||
monospace;
|
monospace;
|
||||||
|
--color-red-100: oklch(93.6% 0.032 17.717);
|
||||||
|
--color-red-200: oklch(88.5% 0.062 18.334);
|
||||||
|
--color-red-300: oklch(80.8% 0.114 19.571);
|
||||||
|
--color-red-700: oklch(50.5% 0.213 27.518);
|
||||||
|
--color-black: #000;
|
||||||
|
--color-white: #fff;
|
||||||
--spacing: 0.25rem;
|
--spacing: 0.25rem;
|
||||||
--container-xs: 20rem;
|
--container-xs: 20rem;
|
||||||
--container-2xl: 42rem;
|
--container-2xl: 42rem;
|
||||||
@@ -13,7 +19,15 @@
|
|||||||
--text-xs--line-height: calc(1 / 0.75);
|
--text-xs--line-height: calc(1 / 0.75);
|
||||||
--text-sm: 0.875rem;
|
--text-sm: 0.875rem;
|
||||||
--text-sm--line-height: calc(1.25 / 0.875);
|
--text-sm--line-height: calc(1.25 / 0.875);
|
||||||
|
--font-weight-semibold: 600;
|
||||||
--tracking-wide: 0.025em;
|
--tracking-wide: 0.025em;
|
||||||
|
--radius-md: 0.375rem;
|
||||||
|
--radius-lg: 0.5rem;
|
||||||
|
--ease-in: cubic-bezier(0.4, 0, 1, 1);
|
||||||
|
--ease-out: cubic-bezier(0, 0, 0.2, 1);
|
||||||
|
--animate-spin: spin 1s linear infinite;
|
||||||
|
--default-transition-duration: 150ms;
|
||||||
|
--default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
--default-font-family: var(--font-sans);
|
--default-font-family: var(--font-sans);
|
||||||
--default-mono-font-family: var(--font-mono);
|
--default-mono-font-family: var(--font-mono);
|
||||||
}
|
}
|
||||||
@@ -167,33 +181,105 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
@layer utilities {
|
@layer utilities {
|
||||||
|
.pointer-events-auto {
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
.pointer-events-none {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
.visible {
|
.visible {
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
}
|
}
|
||||||
.absolute {
|
.absolute {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
}
|
}
|
||||||
|
.fixed {
|
||||||
|
position: fixed;
|
||||||
|
}
|
||||||
.relative {
|
.relative {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
.static {
|
.static {
|
||||||
position: static;
|
position: static;
|
||||||
}
|
}
|
||||||
|
.top-0 {
|
||||||
|
top: calc(var(--spacing) * 0);
|
||||||
|
}
|
||||||
|
.top-\[5px\] {
|
||||||
|
top: 5px;
|
||||||
|
}
|
||||||
.top-full {
|
.top-full {
|
||||||
top: 100%;
|
top: 100%;
|
||||||
}
|
}
|
||||||
.right-0 {
|
.right-0 {
|
||||||
right: calc(var(--spacing) * 0);
|
right: calc(var(--spacing) * 0);
|
||||||
}
|
}
|
||||||
|
.right-\[5px\] {
|
||||||
|
right: 5px;
|
||||||
|
}
|
||||||
|
.bottom-0 {
|
||||||
|
bottom: calc(var(--spacing) * 0);
|
||||||
|
}
|
||||||
|
.left-0 {
|
||||||
|
left: calc(var(--spacing) * 0);
|
||||||
|
}
|
||||||
|
.left-1\/2 {
|
||||||
|
left: calc(1/2 * 100%);
|
||||||
|
}
|
||||||
.z-10 {
|
.z-10 {
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
}
|
}
|
||||||
|
.z-50 {
|
||||||
|
z-index: 50;
|
||||||
|
}
|
||||||
|
.z-100 {
|
||||||
|
z-index: 100;
|
||||||
|
}
|
||||||
|
.col-start-1 {
|
||||||
|
grid-column-start: 1;
|
||||||
|
}
|
||||||
|
.col-end-1 {
|
||||||
|
grid-column-end: 1;
|
||||||
|
}
|
||||||
|
.row-start-1 {
|
||||||
|
grid-row-start: 1;
|
||||||
|
}
|
||||||
|
.row-end-2 {
|
||||||
|
grid-row-end: 2;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
width: 100%;
|
||||||
|
@media (width >= 40rem) {
|
||||||
|
max-width: 40rem;
|
||||||
|
}
|
||||||
|
@media (width >= 48rem) {
|
||||||
|
max-width: 48rem;
|
||||||
|
}
|
||||||
|
@media (width >= 64rem) {
|
||||||
|
max-width: 64rem;
|
||||||
|
}
|
||||||
|
@media (width >= 80rem) {
|
||||||
|
max-width: 80rem;
|
||||||
|
}
|
||||||
|
@media (width >= 96rem) {
|
||||||
|
max-width: 96rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
.mt-2 {
|
.mt-2 {
|
||||||
margin-top: calc(var(--spacing) * 2);
|
margin-top: calc(var(--spacing) * 2);
|
||||||
}
|
}
|
||||||
|
.mb-2 {
|
||||||
|
margin-bottom: calc(var(--spacing) * 2);
|
||||||
|
}
|
||||||
|
.ml-1 {
|
||||||
|
margin-left: calc(var(--spacing) * 1);
|
||||||
|
}
|
||||||
.block {
|
.block {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
.contents {
|
||||||
|
display: contents;
|
||||||
|
}
|
||||||
.flex {
|
.flex {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
@@ -206,12 +292,18 @@
|
|||||||
.inline {
|
.inline {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
.inline-block {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
.inline-flex {
|
.inline-flex {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
}
|
}
|
||||||
.table {
|
.table {
|
||||||
display: table;
|
display: table;
|
||||||
}
|
}
|
||||||
|
.h-3 {
|
||||||
|
height: calc(var(--spacing) * 3);
|
||||||
|
}
|
||||||
.h-6 {
|
.h-6 {
|
||||||
height: calc(var(--spacing) * 6);
|
height: calc(var(--spacing) * 6);
|
||||||
}
|
}
|
||||||
@@ -224,6 +316,9 @@
|
|||||||
.h-12 {
|
.h-12 {
|
||||||
height: calc(var(--spacing) * 12);
|
height: calc(var(--spacing) * 12);
|
||||||
}
|
}
|
||||||
|
.h-\[14px\] {
|
||||||
|
height: 14px;
|
||||||
|
}
|
||||||
.h-\[22px\] {
|
.h-\[22px\] {
|
||||||
height: 22px;
|
height: 22px;
|
||||||
}
|
}
|
||||||
@@ -236,6 +331,9 @@
|
|||||||
.max-h-\[80vh\] {
|
.max-h-\[80vh\] {
|
||||||
max-height: 80vh;
|
max-height: 80vh;
|
||||||
}
|
}
|
||||||
|
.max-h-screen {
|
||||||
|
max-height: 100vh;
|
||||||
|
}
|
||||||
.min-h-0 {
|
.min-h-0 {
|
||||||
min-height: calc(var(--spacing) * 0);
|
min-height: calc(var(--spacing) * 0);
|
||||||
}
|
}
|
||||||
@@ -245,6 +343,9 @@
|
|||||||
.min-h-\[16rem\] {
|
.min-h-\[16rem\] {
|
||||||
min-height: 16rem;
|
min-height: 16rem;
|
||||||
}
|
}
|
||||||
|
.w-3 {
|
||||||
|
width: calc(var(--spacing) * 3);
|
||||||
|
}
|
||||||
.w-6 {
|
.w-6 {
|
||||||
width: calc(var(--spacing) * 6);
|
width: calc(var(--spacing) * 6);
|
||||||
}
|
}
|
||||||
@@ -254,6 +355,9 @@
|
|||||||
.w-12 {
|
.w-12 {
|
||||||
width: calc(var(--spacing) * 12);
|
width: calc(var(--spacing) * 12);
|
||||||
}
|
}
|
||||||
|
.w-\[14px\] {
|
||||||
|
width: 14px;
|
||||||
|
}
|
||||||
.w-full {
|
.w-full {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
@@ -287,9 +391,30 @@
|
|||||||
.shrink-0 {
|
.shrink-0 {
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
.grow {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
.origin-center {
|
||||||
|
transform-origin: center;
|
||||||
|
}
|
||||||
|
.-translate-x-1\/2 {
|
||||||
|
--tw-translate-x: calc(calc(1/2 * 100%) * -1);
|
||||||
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
||||||
|
}
|
||||||
|
.translate-y-0 {
|
||||||
|
--tw-translate-y: calc(var(--spacing) * 0);
|
||||||
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
||||||
|
}
|
||||||
|
.translate-y-4 {
|
||||||
|
--tw-translate-y: calc(var(--spacing) * 4);
|
||||||
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
||||||
|
}
|
||||||
.transform {
|
.transform {
|
||||||
transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
|
transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
|
||||||
}
|
}
|
||||||
|
.animate-spin {
|
||||||
|
animation: var(--animate-spin);
|
||||||
|
}
|
||||||
.resize {
|
.resize {
|
||||||
resize: both;
|
resize: both;
|
||||||
}
|
}
|
||||||
@@ -299,6 +424,9 @@
|
|||||||
.flex-col {
|
.flex-col {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
.flex-col-reverse {
|
||||||
|
flex-direction: column-reverse;
|
||||||
|
}
|
||||||
.flex-wrap {
|
.flex-wrap {
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
@@ -358,13 +486,43 @@
|
|||||||
.rounded {
|
.rounded {
|
||||||
border-radius: 0.25rem;
|
border-radius: 0.25rem;
|
||||||
}
|
}
|
||||||
|
.rounded-lg {
|
||||||
|
border-radius: var(--radius-lg);
|
||||||
|
}
|
||||||
|
.rounded-md {
|
||||||
|
border-radius: var(--radius-md);
|
||||||
|
}
|
||||||
.border {
|
.border {
|
||||||
border-style: var(--tw-border-style);
|
border-style: var(--tw-border-style);
|
||||||
border-width: 1px;
|
border-width: 1px;
|
||||||
}
|
}
|
||||||
|
.\!border-\[\#5a2a2a\] {
|
||||||
|
border-color: #5a2a2a !important;
|
||||||
|
}
|
||||||
|
.border-\[\#3c3c3c\] {
|
||||||
|
border-color: #3c3c3c;
|
||||||
|
}
|
||||||
|
.border-red-200 {
|
||||||
|
border-color: var(--color-red-200);
|
||||||
|
}
|
||||||
|
.\!bg-\[\#3a2020\] {
|
||||||
|
background-color: #3a2020 !important;
|
||||||
|
}
|
||||||
|
.\!bg-red-100 {
|
||||||
|
background-color: var(--color-red-100) !important;
|
||||||
|
}
|
||||||
|
.bg-\[\#2d2d2d\] {
|
||||||
|
background-color: #2d2d2d;
|
||||||
|
}
|
||||||
|
.bg-white {
|
||||||
|
background-color: var(--color-white);
|
||||||
|
}
|
||||||
.p-4 {
|
.p-4 {
|
||||||
padding: calc(var(--spacing) * 4);
|
padding: calc(var(--spacing) * 4);
|
||||||
}
|
}
|
||||||
|
.p-\[5px\] {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
.px-3 {
|
.px-3 {
|
||||||
padding-inline: calc(var(--spacing) * 3);
|
padding-inline: calc(var(--spacing) * 3);
|
||||||
}
|
}
|
||||||
@@ -397,6 +555,18 @@
|
|||||||
font-size: var(--text-xs);
|
font-size: var(--text-xs);
|
||||||
line-height: var(--tw-leading, var(--text-xs--line-height));
|
line-height: var(--tw-leading, var(--text-xs--line-height));
|
||||||
}
|
}
|
||||||
|
.leading-5 {
|
||||||
|
--tw-leading: calc(var(--spacing) * 5);
|
||||||
|
line-height: calc(var(--spacing) * 5);
|
||||||
|
}
|
||||||
|
.leading-6 {
|
||||||
|
--tw-leading: calc(var(--spacing) * 6);
|
||||||
|
line-height: calc(var(--spacing) * 6);
|
||||||
|
}
|
||||||
|
.font-semibold {
|
||||||
|
--tw-font-weight: var(--font-weight-semibold);
|
||||||
|
font-weight: var(--font-weight-semibold);
|
||||||
|
}
|
||||||
.tracking-wide {
|
.tracking-wide {
|
||||||
--tw-tracking: var(--tracking-wide);
|
--tw-tracking: var(--tracking-wide);
|
||||||
letter-spacing: var(--tracking-wide);
|
letter-spacing: var(--tracking-wide);
|
||||||
@@ -404,9 +574,40 @@
|
|||||||
.whitespace-nowrap {
|
.whitespace-nowrap {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
.\!text-red-300 {
|
||||||
|
color: var(--color-red-300) !important;
|
||||||
|
}
|
||||||
|
.\!text-red-700 {
|
||||||
|
color: var(--color-red-700) !important;
|
||||||
|
}
|
||||||
|
.text-\[\#f0f0f0\] {
|
||||||
|
color: #f0f0f0;
|
||||||
|
}
|
||||||
|
.text-black {
|
||||||
|
color: var(--color-black);
|
||||||
|
}
|
||||||
|
.text-black\/50 {
|
||||||
|
color: color-mix(in srgb, #000 50%, transparent);
|
||||||
|
@supports (color: color-mix(in lab, red, red)) {
|
||||||
|
color: color-mix(in oklab, var(--color-black) 50%, transparent);
|
||||||
|
}
|
||||||
|
}
|
||||||
.uppercase {
|
.uppercase {
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
}
|
}
|
||||||
|
.opacity-0 {
|
||||||
|
opacity: 0%;
|
||||||
|
}
|
||||||
|
.opacity-40 {
|
||||||
|
opacity: 40%;
|
||||||
|
}
|
||||||
|
.opacity-100 {
|
||||||
|
opacity: 100%;
|
||||||
|
}
|
||||||
|
.shadow-lg {
|
||||||
|
--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
||||||
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
||||||
|
}
|
||||||
.outline {
|
.outline {
|
||||||
outline-style: var(--tw-outline-style);
|
outline-style: var(--tw-outline-style);
|
||||||
outline-width: 1px;
|
outline-width: 1px;
|
||||||
@@ -419,6 +620,117 @@
|
|||||||
--tw-invert: invert(100%);
|
--tw-invert: invert(100%);
|
||||||
filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
|
filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
|
||||||
}
|
}
|
||||||
|
.transition {
|
||||||
|
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
|
||||||
|
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
||||||
|
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
||||||
|
}
|
||||||
|
.transition-all {
|
||||||
|
transition-property: all;
|
||||||
|
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
||||||
|
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
||||||
|
}
|
||||||
|
.transition-opacity {
|
||||||
|
transition-property: opacity;
|
||||||
|
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
||||||
|
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
||||||
|
}
|
||||||
|
.duration-200 {
|
||||||
|
--tw-duration: 200ms;
|
||||||
|
transition-duration: 200ms;
|
||||||
|
}
|
||||||
|
.duration-300 {
|
||||||
|
--tw-duration: 300ms;
|
||||||
|
transition-duration: 300ms;
|
||||||
|
}
|
||||||
|
.ease-in {
|
||||||
|
--tw-ease: var(--ease-in);
|
||||||
|
transition-timing-function: var(--ease-in);
|
||||||
|
}
|
||||||
|
.ease-out {
|
||||||
|
--tw-ease: var(--ease-out);
|
||||||
|
transition-timing-function: var(--ease-out);
|
||||||
|
}
|
||||||
|
.group-hover\:opacity-70 {
|
||||||
|
&:is(:where(.group):hover *) {
|
||||||
|
@media (hover: hover) {
|
||||||
|
opacity: 70%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.group-hover\:opacity-100 {
|
||||||
|
&:is(:where(.group):hover *) {
|
||||||
|
@media (hover: hover) {
|
||||||
|
opacity: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.group-has-\[\[data-part\=\'title\'\]\]\/toast\:absolute {
|
||||||
|
&:is(:where(.group\/toast):has(*:is([data-part='title'])) *) {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.hover\:text-black {
|
||||||
|
&:hover {
|
||||||
|
@media (hover: hover) {
|
||||||
|
color: var(--color-black);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.focus\:opacity-100 {
|
||||||
|
&:focus {
|
||||||
|
opacity: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.focus\:ring-1 {
|
||||||
|
&:focus {
|
||||||
|
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
||||||
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.focus\:outline-none {
|
||||||
|
&:focus {
|
||||||
|
--tw-outline-style: none;
|
||||||
|
outline-style: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.sm\:top-auto {
|
||||||
|
@media (width >= 40rem) {
|
||||||
|
top: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.sm\:bottom-auto {
|
||||||
|
@media (width >= 40rem) {
|
||||||
|
bottom: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.sm\:translate-y-0 {
|
||||||
|
@media (width >= 40rem) {
|
||||||
|
--tw-translate-y: calc(var(--spacing) * 0);
|
||||||
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.sm\:scale-95 {
|
||||||
|
@media (width >= 40rem) {
|
||||||
|
--tw-scale-x: 95%;
|
||||||
|
--tw-scale-y: 95%;
|
||||||
|
--tw-scale-z: 95%;
|
||||||
|
scale: var(--tw-scale-x) var(--tw-scale-y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.sm\:scale-100 {
|
||||||
|
@media (width >= 40rem) {
|
||||||
|
--tw-scale-x: 100%;
|
||||||
|
--tw-scale-y: 100%;
|
||||||
|
--tw-scale-z: 100%;
|
||||||
|
scale: var(--tw-scale-x) var(--tw-scale-y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.md\:max-w-\[420px\] {
|
||||||
|
@media (width >= 48rem) {
|
||||||
|
max-width: 420px;
|
||||||
|
}
|
||||||
|
}
|
||||||
.md\:grid-cols-2 {
|
.md\:grid-cols-2 {
|
||||||
@media (width >= 48rem) {
|
@media (width >= 48rem) {
|
||||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
@@ -444,6 +756,11 @@
|
|||||||
grid-template-columns: minmax(320px,1fr) minmax(0,1.2fr);
|
grid-template-columns: minmax(320px,1fr) minmax(0,1.2fr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.\[\@media\(scripting\:enabled\)\]\:opacity-0 {
|
||||||
|
@media (scripting:enabled) {
|
||||||
|
opacity: 0%;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
:root {
|
:root {
|
||||||
--accent-color: #007acc;
|
--accent-color: #007acc;
|
||||||
@@ -4744,6 +5061,9 @@ button svg, button svg * {
|
|||||||
padding: 14px 20px;
|
padding: 14px 20px;
|
||||||
font: inherit;
|
font: inherit;
|
||||||
}
|
}
|
||||||
|
.alert-modal-error {
|
||||||
|
border-top: 3px solid #ff6b6b;
|
||||||
|
}
|
||||||
.menu-editor-header h2 {
|
.menu-editor-header h2 {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
@@ -6492,6 +6812,21 @@ button.import-taxonomy-pill {
|
|||||||
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
|
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@property --tw-translate-x {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
initial-value: 0;
|
||||||
|
}
|
||||||
|
@property --tw-translate-y {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
initial-value: 0;
|
||||||
|
}
|
||||||
|
@property --tw-translate-z {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
initial-value: 0;
|
||||||
|
}
|
||||||
@property --tw-rotate-x {
|
@property --tw-rotate-x {
|
||||||
syntax: "*";
|
syntax: "*";
|
||||||
inherits: false;
|
inherits: false;
|
||||||
@@ -6517,10 +6852,83 @@ button.import-taxonomy-pill {
|
|||||||
inherits: false;
|
inherits: false;
|
||||||
initial-value: solid;
|
initial-value: solid;
|
||||||
}
|
}
|
||||||
|
@property --tw-leading {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
}
|
||||||
|
@property --tw-font-weight {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
}
|
||||||
@property --tw-tracking {
|
@property --tw-tracking {
|
||||||
syntax: "*";
|
syntax: "*";
|
||||||
inherits: false;
|
inherits: false;
|
||||||
}
|
}
|
||||||
|
@property --tw-shadow {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
initial-value: 0 0 #0000;
|
||||||
|
}
|
||||||
|
@property --tw-shadow-color {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
}
|
||||||
|
@property --tw-shadow-alpha {
|
||||||
|
syntax: "<percentage>";
|
||||||
|
inherits: false;
|
||||||
|
initial-value: 100%;
|
||||||
|
}
|
||||||
|
@property --tw-inset-shadow {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
initial-value: 0 0 #0000;
|
||||||
|
}
|
||||||
|
@property --tw-inset-shadow-color {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
}
|
||||||
|
@property --tw-inset-shadow-alpha {
|
||||||
|
syntax: "<percentage>";
|
||||||
|
inherits: false;
|
||||||
|
initial-value: 100%;
|
||||||
|
}
|
||||||
|
@property --tw-ring-color {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
}
|
||||||
|
@property --tw-ring-shadow {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
initial-value: 0 0 #0000;
|
||||||
|
}
|
||||||
|
@property --tw-inset-ring-color {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
}
|
||||||
|
@property --tw-inset-ring-shadow {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
initial-value: 0 0 #0000;
|
||||||
|
}
|
||||||
|
@property --tw-ring-inset {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
}
|
||||||
|
@property --tw-ring-offset-width {
|
||||||
|
syntax: "<length>";
|
||||||
|
inherits: false;
|
||||||
|
initial-value: 0px;
|
||||||
|
}
|
||||||
|
@property --tw-ring-offset-color {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
initial-value: #fff;
|
||||||
|
}
|
||||||
|
@property --tw-ring-offset-shadow {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
initial-value: 0 0 #0000;
|
||||||
|
}
|
||||||
@property --tw-outline-style {
|
@property --tw-outline-style {
|
||||||
syntax: "*";
|
syntax: "*";
|
||||||
inherits: false;
|
inherits: false;
|
||||||
@@ -6579,6 +6987,29 @@ button.import-taxonomy-pill {
|
|||||||
syntax: "*";
|
syntax: "*";
|
||||||
inherits: false;
|
inherits: false;
|
||||||
}
|
}
|
||||||
|
@property --tw-duration {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
}
|
||||||
|
@property --tw-ease {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
}
|
||||||
|
@property --tw-scale-x {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
initial-value: 1;
|
||||||
|
}
|
||||||
|
@property --tw-scale-y {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
initial-value: 1;
|
||||||
|
}
|
||||||
|
@property --tw-scale-z {
|
||||||
|
syntax: "*";
|
||||||
|
inherits: false;
|
||||||
|
initial-value: 1;
|
||||||
|
}
|
||||||
@keyframes spin {
|
@keyframes spin {
|
||||||
to {
|
to {
|
||||||
transform: rotate(360deg);
|
transform: rotate(360deg);
|
||||||
@@ -6587,13 +7018,32 @@ button.import-taxonomy-pill {
|
|||||||
@layer properties {
|
@layer properties {
|
||||||
@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
|
@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
|
||||||
*, ::before, ::after, ::backdrop {
|
*, ::before, ::after, ::backdrop {
|
||||||
|
--tw-translate-x: 0;
|
||||||
|
--tw-translate-y: 0;
|
||||||
|
--tw-translate-z: 0;
|
||||||
--tw-rotate-x: initial;
|
--tw-rotate-x: initial;
|
||||||
--tw-rotate-y: initial;
|
--tw-rotate-y: initial;
|
||||||
--tw-rotate-z: initial;
|
--tw-rotate-z: initial;
|
||||||
--tw-skew-x: initial;
|
--tw-skew-x: initial;
|
||||||
--tw-skew-y: initial;
|
--tw-skew-y: initial;
|
||||||
--tw-border-style: solid;
|
--tw-border-style: solid;
|
||||||
|
--tw-leading: initial;
|
||||||
|
--tw-font-weight: initial;
|
||||||
--tw-tracking: initial;
|
--tw-tracking: initial;
|
||||||
|
--tw-shadow: 0 0 #0000;
|
||||||
|
--tw-shadow-color: initial;
|
||||||
|
--tw-shadow-alpha: 100%;
|
||||||
|
--tw-inset-shadow: 0 0 #0000;
|
||||||
|
--tw-inset-shadow-color: initial;
|
||||||
|
--tw-inset-shadow-alpha: 100%;
|
||||||
|
--tw-ring-color: initial;
|
||||||
|
--tw-ring-shadow: 0 0 #0000;
|
||||||
|
--tw-inset-ring-color: initial;
|
||||||
|
--tw-inset-ring-shadow: 0 0 #0000;
|
||||||
|
--tw-ring-inset: initial;
|
||||||
|
--tw-ring-offset-width: 0px;
|
||||||
|
--tw-ring-offset-color: #fff;
|
||||||
|
--tw-ring-offset-shadow: 0 0 #0000;
|
||||||
--tw-outline-style: solid;
|
--tw-outline-style: solid;
|
||||||
--tw-blur: initial;
|
--tw-blur: initial;
|
||||||
--tw-brightness: initial;
|
--tw-brightness: initial;
|
||||||
@@ -6608,6 +7058,11 @@ button.import-taxonomy-pill {
|
|||||||
--tw-drop-shadow-color: initial;
|
--tw-drop-shadow-color: initial;
|
||||||
--tw-drop-shadow-alpha: 100%;
|
--tw-drop-shadow-alpha: 100%;
|
||||||
--tw-drop-shadow-size: initial;
|
--tw-drop-shadow-size: initial;
|
||||||
|
--tw-duration: initial;
|
||||||
|
--tw-ease: initial;
|
||||||
|
--tw-scale-x: 1;
|
||||||
|
--tw-scale-y: 1;
|
||||||
|
--tw-scale-z: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
954
priv/static/assets/app.js
vendored
954
priv/static/assets/app.js
vendored
File diff suppressed because it is too large
Load Diff
@@ -385,6 +385,28 @@ defmodule BDS.AITest do
|
|||||||
assert Repo.get(Setting, "__encrypted_ai.online.api_key") == nil
|
assert Repo.get(Setting, "__encrypted_ai.online.api_key") == nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "put_endpoint clears fields on nil instead of crashing" do
|
||||||
|
assert {:ok, _endpoint} =
|
||||||
|
BDS.AI.put_endpoint(
|
||||||
|
:online,
|
||||||
|
%{url: "https://api.example.test/v1", api_key: "secret", model: "gpt-4o-mini"},
|
||||||
|
secret_backend: FakeSecretBackend
|
||||||
|
)
|
||||||
|
|
||||||
|
# A partial config (blank URL/model) must not raise — it clears those keys.
|
||||||
|
assert {:ok, endpoint} =
|
||||||
|
BDS.AI.put_endpoint(
|
||||||
|
:online,
|
||||||
|
%{url: nil, api_key: nil, model: nil},
|
||||||
|
secret_backend: FakeSecretBackend
|
||||||
|
)
|
||||||
|
|
||||||
|
assert endpoint.url == nil
|
||||||
|
assert Repo.get(Setting, "ai.online.url") == nil
|
||||||
|
assert Repo.get(Setting, "ai.online.model") == nil
|
||||||
|
assert Repo.get(Setting, "__encrypted_ai.online.api_key") == nil
|
||||||
|
end
|
||||||
|
|
||||||
test "airplane_endpoint_configured? reflects the airplane endpoint url and model" do
|
test "airplane_endpoint_configured? reflects the airplane endpoint url and model" do
|
||||||
refute BDS.AI.airplane_endpoint_configured?()
|
refute BDS.AI.airplane_endpoint_configured?()
|
||||||
|
|
||||||
|
|||||||
@@ -2085,6 +2085,50 @@ defmodule BDS.Desktop.ShellLiveTest do
|
|||||||
BDS.AI.Catalog.model_capabilities("llama3.3")
|
BDS.AI.Catalog.model_capabilities("llama3.3")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "saving ai settings without editing preserves stored endpoints" do
|
||||||
|
assert {:ok, _online} =
|
||||||
|
AI.put_endpoint(:online, %{
|
||||||
|
url: "https://api.example.test/v1",
|
||||||
|
api_key: "keep-me",
|
||||||
|
model: "gpt-4.1"
|
||||||
|
})
|
||||||
|
|
||||||
|
assert {:ok, _airplane} =
|
||||||
|
AI.put_endpoint(:airplane, %{
|
||||||
|
url: "http://localhost:11434/v1",
|
||||||
|
api_key: nil,
|
||||||
|
model: "llama3.3"
|
||||||
|
})
|
||||||
|
|
||||||
|
{:ok, view, _html} = live_isolated(build_conn(), BDS.Desktop.ShellLive)
|
||||||
|
|
||||||
|
_html =
|
||||||
|
view
|
||||||
|
|> element("[data-testid='activity-button'][data-view='settings']")
|
||||||
|
|> render_click()
|
||||||
|
|
||||||
|
_html =
|
||||||
|
view
|
||||||
|
|> element("[data-testid='sidebar-open-item'][data-item-id='settings-project']")
|
||||||
|
|> render_click()
|
||||||
|
|
||||||
|
# Save with an untouched form (no change_settings_ai). The endpoints must
|
||||||
|
# survive instead of being wiped by an empty draft.
|
||||||
|
_html =
|
||||||
|
view
|
||||||
|
|> element("#settings-editor-shell button[phx-click='save_settings_ai']")
|
||||||
|
|> render_click()
|
||||||
|
|
||||||
|
assert {:ok, online} = AI.get_endpoint(:online)
|
||||||
|
assert online.url == "https://api.example.test/v1"
|
||||||
|
assert online.api_key == "keep-me"
|
||||||
|
assert online.model == "gpt-4.1"
|
||||||
|
|
||||||
|
assert {:ok, airplane} = AI.get_endpoint(:airplane)
|
||||||
|
assert airplane.url == "http://localhost:11434/v1"
|
||||||
|
assert airplane.model == "llama3.3"
|
||||||
|
end
|
||||||
|
|
||||||
test "ai settings refresh models from the configured endpoints" do
|
test "ai settings refresh models from the configured endpoints" do
|
||||||
Application.put_env(:bds, :ai_http_client, FakeEndpointModelHttpClient)
|
Application.put_env(:bds, :ai_http_client, FakeEndpointModelHttpClient)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user