feat: TUI report panels with whole-report apply for metadata diff and site validation (issue #26)

This commit is contained in:
2026-07-15 20:12:45 +02:00
parent 824313f106
commit 39bb232b57
10 changed files with 1136 additions and 359 deletions

View File

@@ -195,7 +195,9 @@ appears in every open shell.
`↑/↓` or `j/k` navigate · `enter` open · `n` new post · `1-5` switch view `↑/↓` or `j/k` navigate · `enter` open · `n` new post · `1-5` switch view
(posts/media/templates/scripts/tags) · `:` command prompt (metadata (posts/media/templates/scripts/tags) · `:` command prompt (metadata
diff, validate site, force render, rebuilds, …) · `?` command help · diff, validate site, force render, rebuilds, …; `:?` lists all) ·
metadata-diff/site-validation reports open as panels — `enter` applies
the whole report (repair from files / incremental apply), `esc` cancels ·
`r` refresh · in the editor: `r` refresh · in the editor:
`ctrl+s` save, `ctrl+p` publish, `ctrl+e` word-wrapped preview, `ctrl+s` save, `ctrl+p` publish, `ctrl+e` word-wrapped preview,
`ctrl+t` title, `ctrl+l` language, `ctrl+g` AI suggestions `ctrl+t` title, `ctrl+l` language, `ctrl+g` AI suggestions

View File

@@ -33,7 +33,7 @@ defmodule BDS.TUI do
alias ExRatatui.Layout alias ExRatatui.Layout
alias ExRatatui.Layout.Rect alias ExRatatui.Layout.Rect
alias ExRatatui.Style alias ExRatatui.Style
alias ExRatatui.Widgets.{Block, List, Markdown, Paragraph, Tabs, Textarea} alias ExRatatui.Widgets.{Block, Clear, List, Markdown, Paragraph, Tabs, Textarea}
@views ~w(posts media templates scripts tags) @views ~w(posts media templates scripts tags)
@@ -52,8 +52,11 @@ defmodule BDS.TUI do
stop_vm_on_exit: Keyword.get(opts, :stop_vm_on_exit, false), stop_vm_on_exit: Keyword.get(opts, :stop_vm_on_exit, false),
stop_fun: Keyword.get(opts, :stop_fun, &System.stop/0), stop_fun: Keyword.get(opts, :stop_fun, &System.stop/0),
command_executor: command_executor:
Keyword.get(opts, :command_executor, &BDS.Desktop.ShellCommands.execute/1), Keyword.get(opts, :command_executor, &BDS.Desktop.ShellCommands.execute/2),
task_snapshot_fun: Keyword.get(opts, :task_snapshot_fun, &BDS.Tasks.status_snapshot/0),
command: nil, command: nil,
report: nil,
handled_task_ids: nil,
task_polling: false, task_polling: false,
project_id: project_id, project_id: project_id,
view: "posts", view: "posts",
@@ -68,9 +71,23 @@ defmodule BDS.TUI do
status: nil status: nil
} }
# Tasks completed before this session started must never pop their
# report panels here — another client already consumed them.
initial_snapshot =
Keyword.get_lazy(opts, :initial_task_snapshot, state.task_snapshot_fun)
state = %{state | handled_task_ids: completed_task_ids(initial_snapshot)}
{:ok, load_sidebar(state)} {:ok, load_sidebar(state)}
end end
defp completed_task_ids(snapshot) do
snapshot
|> Map.get(:tasks, [])
|> Enum.filter(&(&1.status == :completed))
|> MapSet.new(& &1.id)
end
@impl true @impl true
def terminate(_reason, %{stop_vm_on_exit: true, stop_fun: stop_fun}) do def terminate(_reason, %{stop_vm_on_exit: true, stop_fun: stop_fun}) do
stop_fun.() stop_fun.()
@@ -85,6 +102,10 @@ defmodule BDS.TUI do
def handle_event(%ExRatatui.Event.Key{code: "q", modifiers: ["ctrl"]}, state), def handle_event(%ExRatatui.Event.Key{code: "q", modifiers: ["ctrl"]}, state),
do: {:stop, state} do: {:stop, state}
def handle_event(%ExRatatui.Event.Key{kind: "press"} = key, %{report: report} = state)
when report != nil,
do: report_key(key, state)
def handle_event(%ExRatatui.Event.Key{kind: "press"} = key, %{command: command} = state) def handle_event(%ExRatatui.Event.Key{kind: "press"} = key, %{command: command} = state)
when command != nil, when command != nil,
do: command_key(key, state) do: command_key(key, state)
@@ -119,9 +140,6 @@ defmodule BDS.TUI do
defp sidebar_key(%{code: ":"}, state), defp sidebar_key(%{code: ":"}, state),
do: {:noreply, %{state | command: %{input: "", selected: 0, help?: false}}} do: {:noreply, %{state | command: %{input: "", selected: 0, help?: false}}}
defp sidebar_key(%{code: "?"}, state),
do: {:noreply, %{state | command: %{input: "", selected: 0, help?: true}}}
defp sidebar_key(%{code: "n"}, %{project_id: project_id} = state) defp sidebar_key(%{code: "n"}, %{project_id: project_id} = state)
when is_binary(project_id) do when is_binary(project_id) do
case Posts.create_post(%{project_id: project_id, title: "", content: ""}) do case Posts.create_post(%{project_id: project_id, title: "", content: ""}) do
@@ -147,6 +165,74 @@ defmodule BDS.TUI do
defp sidebar_key(_key, state), do: {:noreply, state} defp sidebar_key(_key, state), do: {:noreply, state}
# ── Events: report panels (metadata diff / site validation) ──────────────
defp report_key(%{code: "esc"}, state), do: {:noreply, %{state | report: nil}}
defp report_key(%{code: "enter"}, %{report: report} = state),
do: {:noreply, apply_report(%{state | report: nil}, report)}
defp report_key(%{code: code}, %{report: report} = state) when code in ["down", "j"] do
max_scroll = max(length(report_lines(report)) - 1, 0)
{:noreply, put_in(state.report.scroll, min(report.scroll + 1, max_scroll))}
end
defp report_key(%{code: code}, %{report: report} = state) when code in ["up", "k"],
do: {:noreply, put_in(state.report.scroll, max(report.scroll - 1, 0))}
defp report_key(_key, state), do: {:noreply, state}
# Whole-report application, mirroring the GUI defaults: metadata diffs are
# repaired from the filesystem (file → db, all items, orphans imported);
# site validation applies the full report incrementally.
defp apply_report(state, %{route: "metadata_diff", payload: payload}) do
items = BDS.MapUtils.attr(payload, :diff_reports, [])
orphans = BDS.MapUtils.attr(payload, :orphan_reports, [])
if items == [] and orphans == [] do
toast(state, dgettext("ui", "Metadata Diff"), dgettext("ui", "Nothing to repair."))
else
state =
if items == [] do
state
else
execute_action(state, dgettext("ui", "Metadata Diff"), "repair_metadata_diff", %{
items: items,
direction: "file_to_db"
})
end
if orphans == [] do
state
else
execute_action(
state,
dgettext("ui", "Metadata Diff"),
"import_metadata_diff_orphans",
%{orphans: orphans}
)
end
end
end
defp apply_report(state, %{route: "site_validation", payload: payload}) do
nothing_to_apply? =
BDS.MapUtils.attr(payload, :missing_url_paths, []) == [] and
BDS.MapUtils.attr(payload, :extra_url_paths, []) == [] and
BDS.MapUtils.attr(payload, :updated_post_url_paths, []) == [] and
not BDS.MapUtils.attr(payload, :sitemap_changed, false)
if nothing_to_apply? do
toast(state, dgettext("ui", "Site Validation"), dgettext("ui", "Nothing to apply."))
else
execute_action(state, dgettext("ui", "Site Validation"), "apply_site_validation", %{
report: payload
})
end
end
defp apply_report(state, _report), do: state
# ── Events: command prompt (vi-style) ──────────────────────────────────── # ── Events: command prompt (vi-style) ────────────────────────────────────
defp command_key(%{code: "esc"}, state), do: {:noreply, %{state | command: nil}} defp command_key(%{code: "esc"}, state), do: {:noreply, %{state | command: nil}}
@@ -302,7 +388,10 @@ defmodule BDS.TUI do
end end
def handle_info(:poll_tasks, %{task_polling: true} = state) do def handle_info(:poll_tasks, %{task_polling: true} = state) do
case BDS.Tasks.status_snapshot() do snapshot = state.task_snapshot_fun.()
state = open_completed_reports(state, snapshot)
case snapshot do
%{running_task_message: message} when is_binary(message) and message != "" -> %{running_task_message: message} when is_binary(message) and message != "" ->
Process.send_after(self(), :poll_tasks, 1_000) Process.send_after(self(), :poll_tasks, 1_000)
{:noreply, %{state | status: message}} {:noreply, %{state | status: message}}
@@ -317,6 +406,40 @@ defmodule BDS.TUI do
def handle_info(_message, state), do: {:noreply, state} def handle_info(_message, state), do: {:noreply, state}
# A finished metadata diff / site validation task carries its report as
# the task result; unseen ones open the report panel.
defp open_completed_reports(state, snapshot) do
completed = Map.get(snapshot, :tasks, []) |> Enum.filter(&(&1.status == :completed))
report_task =
Enum.find(completed, fn task ->
is_map(task.result) and
Map.get(task.result, :kind) == "open_editor" and
Map.get(task.result, :route) in ["metadata_diff", "site_validation"] and
not MapSet.member?(state.handled_task_ids, task.id)
end)
state = %{
state
| handled_task_ids: MapSet.union(state.handled_task_ids, MapSet.new(completed, & &1.id))
}
case report_task do
nil ->
state
task ->
%{
state
| report: %{
route: task.result.route,
payload: Map.get(task.result, :payload, %{}),
scroll: 0
}
}
end
end
# ── Render ─────────────────────────────────────────────────────────────── # ── Render ───────────────────────────────────────────────────────────────
@impl true @impl true
@@ -338,6 +461,7 @@ defmodule BDS.TUI do
main_widgets(state, main_rect) ++ main_widgets(state, main_rect) ++
status_widgets(state, status_rect) ++ status_widgets(state, status_rect) ++
image_widgets(state, body_rect) ++ image_widgets(state, body_rect) ++
report_widgets(state, body_rect) ++
command_widgets(state, body_rect) command_widgets(state, body_rect)
end end
@@ -461,6 +585,7 @@ defmodule BDS.TUI do
[inner] = Layout.split(overlay, :vertical, [{:min, 3}]) [inner] = Layout.split(overlay, :vertical, [{:min, 3}])
[ [
{%Clear{}, overlay},
{%Block{title: title <> "" <> dgettext("ui", "esc to close"), borders: [:all]}, overlay}, {%Block{title: title <> "" <> dgettext("ui", "esc to close"), borders: [:all]}, overlay},
{widget, {widget,
%Rect{x: inner.x + 1, y: inner.y + 1, width: inner.width - 2, height: inner.height - 2}} %Rect{x: inner.x + 1, y: inner.y + 1, width: inner.width - 2, height: inner.height - 2}}
@@ -493,6 +618,7 @@ defmodule BDS.TUI do
end end
[ [
{%Clear{}, overlay},
{%List{ {%List{
items: items, items: items,
selected: if(command.help?, do: nil, else: command.selected), selected: if(command.help?, do: nil, else: command.selected),
@@ -502,11 +628,119 @@ defmodule BDS.TUI do
] ]
end end
defp report_widgets(%{report: nil}, _rect), do: []
defp report_widgets(%{report: report}, rect) do
overlay = %Rect{
x: rect.x + 2,
y: rect.y + 1,
width: max(rect.width - 4, 30),
height: max(rect.height - 2, 8)
}
[
{%Clear{}, overlay},
{%List{
items: report_lines(report),
selected: report.scroll,
scroll_padding: 2,
highlight_style: %Style{modifiers: [:bold]},
block: %Block{title: report_title(report), borders: [:all]}
}, overlay}
]
end
defp report_title(%{route: "metadata_diff"}) do
dgettext("ui", "Metadata Diff") <>
"" <> dgettext("ui", "enter repair all from files · esc close")
end
defp report_title(%{route: "site_validation"}) do
dgettext("ui", "Site Validation") <>
"" <> dgettext("ui", "enter apply changes · esc close")
end
defp report_title(_report), do: ""
defp report_lines(%{route: "metadata_diff", payload: payload}) do
diffs = BDS.MapUtils.attr(payload, :diff_reports, [])
orphans = BDS.MapUtils.attr(payload, :orphan_reports, [])
summary =
dgettext("ui", "%{diffs} differences · %{orphans} orphan files",
diffs: length(diffs),
orphans: length(orphans)
)
diff_lines =
Enum.flat_map(diffs, fn item ->
entity =
"#{BDS.MapUtils.attr(item, :entity_type)} #{BDS.MapUtils.attr(item, :entity_id)}"
differences =
item
|> BDS.MapUtils.attr(:differences, [])
|> Enum.map(fn diff ->
" #{BDS.MapUtils.attr(diff, :name)}: db=#{format_value(BDS.MapUtils.attr(diff, :db_value))} → file=#{format_value(BDS.MapUtils.attr(diff, :file_value))}"
end)
[" " <> entity | differences]
end)
orphan_lines =
case orphans do
[] -> []
_some -> ["", dgettext("ui", "Orphan files (not in database):")] ++
Enum.map(orphans, &(" " <> to_string(BDS.MapUtils.attr(&1, :file_path))))
end
[summary, ""] ++ diff_lines ++ orphan_lines
end
defp report_lines(%{route: "site_validation", payload: payload}) do
summary =
dgettext("ui", "Expected %{expected} · Existing %{existing}",
expected: BDS.MapUtils.attr(payload, :expected_url_count, 0),
existing: BDS.MapUtils.attr(payload, :existing_html_url_count, 0)
)
sitemap =
if BDS.MapUtils.attr(payload, :sitemap_changed, false),
do: [dgettext("ui", "Sitemap changed.")],
else: []
[summary, ""] ++
sitemap ++
path_section(
dgettext("ui", "Missing pages (will be rendered):"),
BDS.MapUtils.attr(payload, :missing_url_paths, [])
) ++
path_section(
dgettext("ui", "Extra files (will be removed):"),
BDS.MapUtils.attr(payload, :extra_url_paths, [])
) ++
path_section(
dgettext("ui", "Updated posts (will be re-rendered):"),
BDS.MapUtils.attr(payload, :updated_post_url_paths, [])
)
end
defp report_lines(_report), do: []
defp path_section(_title, []), do: []
defp path_section(title, paths), do: [title | Enum.map(paths, &(" " <> to_string(&1)))] ++ [""]
defp format_value(value) when is_binary(value), do: truncate(value)
defp format_value(value), do: truncate(inspect(value))
defp truncate(text) when byte_size(text) > 40, do: String.slice(text, 0, 40) <> ""
defp truncate(text), do: text
defp default_status(%{focus: :sidebar}), defp default_status(%{focus: :sidebar}),
do: do:
dgettext( dgettext(
"ui", "ui",
"enter open · n new post · 1-5 views · : commands · ? help · r refresh · ctrl+q quit" "enter open · n new post · 1-5 views · : commands (:? help) · r refresh · ctrl+q quit"
) )
defp default_status(%{focus: :editor}), defp default_status(%{focus: :editor}),
@@ -721,12 +955,13 @@ defmodule BDS.TUI do
# The parameterless Blog-menu commands. `gui: true` marks commands whose # The parameterless Blog-menu commands. `gui: true` marks commands whose
# report/apply follow-up UI exists only in the GUI shell for now — the # report/apply follow-up UI exists only in the GUI shell for now — the
# command still runs here, but reviewing and applying its report (repair, # command still runs here, but acting on its report needs the desktop
# orphan import, validation apply) needs the desktop app. # app. Metadata diff and site validation have TUI report panels with
# whole-report apply, so they are not marked.
defp commands do defp commands do
[ [
%{action: "metadata_diff", label: dgettext("ui", "Metadata Diff"), gui: true}, %{action: "metadata_diff", label: dgettext("ui", "Metadata Diff"), gui: false},
%{action: "validate_site", label: dgettext("ui", "Validate Site"), gui: true}, %{action: "validate_site", label: dgettext("ui", "Validate Site"), gui: false},
%{action: "force_render_site", label: dgettext("ui", "Force Render Site"), gui: false}, %{action: "force_render_site", label: dgettext("ui", "Force Render Site"), gui: false},
%{action: "generate_sitemap", label: dgettext("ui", "Generate Site"), gui: false}, %{action: "generate_sitemap", label: dgettext("ui", "Generate Site"), gui: false},
%{action: "rebuild_database", label: dgettext("ui", "Rebuild Database"), gui: false}, %{action: "rebuild_database", label: dgettext("ui", "Rebuild Database"), gui: false},
@@ -763,8 +998,10 @@ defmodule BDS.TUI do
end) end)
end end
defp run_command(state, entry) do defp run_command(state, entry), do: execute_action(state, entry.label, entry.action, %{})
case state.command_executor.(entry.action) do
defp execute_action(state, label, action, params) do
case state.command_executor.(action, params) do
{:ok, %{kind: "task_queued", title: title, message: message}} -> {:ok, %{kind: "task_queued", title: title, message: message}} ->
state state
|> toast(title, message) |> toast(title, message)
@@ -778,13 +1015,13 @@ defmodule BDS.TUI do
toast(state, title, message) toast(state, title, message)
{:ok, _other} -> {:ok, _other} ->
toast(state, entry.label, dgettext("ui", "Command completed")) toast(state, label, dgettext("ui", "Command completed"))
{:error, %{message: message}} -> {:error, %{message: message}} ->
toast(state, entry.label, message) toast(state, label, message)
{:error, reason} -> {:error, reason} ->
toast(state, entry.label, inspect(reason)) toast(state, label, inspect(reason))
end end
end end

View File

@@ -81,11 +81,11 @@ msgstr "KI-Einstellungen"
#: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: lib/bds/desktop/shell_live/overlay_manager.ex:72
#: lib/bds/desktop/shell_live/post_editor.ex:920 #: lib/bds/desktop/shell_live/post_editor.ex:920
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43
#: lib/bds/tui.ex:285 #: lib/bds/tui.ex:373
#: lib/bds/tui.ex:288 #: lib/bds/tui.ex:376
#: lib/bds/tui.ex:291 #: lib/bds/tui.ex:379
#: lib/bds/tui.ex:299 #: lib/bds/tui.ex:387
#: lib/bds/tui.ex:686 #: lib/bds/tui.ex:922
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI Suggestions" msgid "AI Suggestions"
msgstr "KI-Vorschlaege" msgstr "KI-Vorschlaege"
@@ -572,7 +572,7 @@ msgid "Collapse unchanged diff hunks"
msgstr "Unveränderte Diff-Blöcke einklappen" msgstr "Unveränderte Diff-Blöcke einklappen"
#: lib/bds/desktop/shell_live/overlay_manager.ex:422 #: lib/bds/desktop/shell_live/overlay_manager.ex:422
#: lib/bds/tui.ex:779 #: lib/bds/tui.ex:1017
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Command completed" msgid "Command completed"
msgstr "Befehl abgeschlossen" msgstr "Befehl abgeschlossen"
@@ -590,7 +590,7 @@ msgstr "Bestaetigen"
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375
#: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34
#: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32
#: lib/bds/tui.ex:424 #: lib/bds/tui.ex:550
#: lib/bds/ui/sidebar.ex:764 #: lib/bds/ui/sidebar.ex:764
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Content" msgid "Content"
@@ -1030,7 +1030,7 @@ msgid "Filename"
msgstr "Dateiname" msgstr "Dateiname"
#: lib/bds/desktop/menu_bar.ex:254 #: lib/bds/desktop/menu_bar.ex:254
#: lib/bds/tui.ex:745 #: lib/bds/tui.ex:981
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Fill Missing Translations" msgid "Fill Missing Translations"
msgstr "Fehlende Übersetzungen ergänzen" msgstr "Fehlende Übersetzungen ergänzen"
@@ -1041,7 +1041,7 @@ msgid "Find"
msgstr "Suchen" msgstr "Suchen"
#: lib/bds/desktop/menu_bar.ex:255 #: lib/bds/desktop/menu_bar.ex:255
#: lib/bds/tui.ex:748 #: lib/bds/tui.ex:984
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Find Duplicate Posts" msgid "Find Duplicate Posts"
msgstr "Doppelte Beiträge finden" msgstr "Doppelte Beiträge finden"
@@ -1068,7 +1068,7 @@ msgid "Gallery"
msgstr "Galerie" msgstr "Galerie"
#: lib/bds/desktop/menu_bar.ex:256 #: lib/bds/desktop/menu_bar.ex:256
#: lib/bds/tui.ex:729 #: lib/bds/tui.ex:965
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Generate Site" msgid "Generate Site"
msgstr "Website generieren" msgstr "Website generieren"
@@ -1389,9 +1389,9 @@ msgstr "Maximale Beiträge pro Seite"
#: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/misc_editor.ex:762
#: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_components.ex:654
#: lib/bds/desktop/shell_live/sidebar_delete.ex:175 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175
#: lib/bds/tui.ex:600 #: lib/bds/tui.ex:836
#: lib/bds/tui.ex:808 #: lib/bds/tui.ex:1046
#: lib/bds/tui.ex:811 #: lib/bds/tui.ex:1049
#: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:30
#: lib/bds/ui/registry.ex:100 #: lib/bds/ui/registry.ex:100
#: lib/bds/ui/sidebar.ex:558 #: lib/bds/ui/sidebar.ex:558
@@ -1434,7 +1434,11 @@ msgstr "Metadaten"
#: lib/bds/desktop/shell_live/misc_editor.ex:214 #: lib/bds/desktop/shell_live/misc_editor.ex:214
#: lib/bds/desktop/shell_live/misc_editor.ex:226 #: lib/bds/desktop/shell_live/misc_editor.ex:226
#: lib/bds/desktop/shell_live/misc_editor.ex:448 #: lib/bds/desktop/shell_live/misc_editor.ex:448
#: lib/bds/tui.ex:726 #: lib/bds/tui.ex:193
#: lib/bds/tui.ex:199
#: lib/bds/tui.ex:210
#: lib/bds/tui.ex:654
#: lib/bds/tui.ex:962
#: lib/bds/ui/registry.ex:111 #: lib/bds/ui/registry.ex:111
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Metadata Diff" msgid "Metadata Diff"
@@ -1480,7 +1484,7 @@ msgstr "Neue Seite"
#: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/shell_live/sidebar_create.ex:41 #: lib/bds/desktop/shell_live/sidebar_create.ex:41
#: lib/bds/tui.ex:130 #: lib/bds/tui.ex:150
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Post" msgid "New Post"
msgstr "Neuer Beitrag" msgstr "Neuer Beitrag"
@@ -1769,7 +1773,7 @@ msgid "Open Settings"
msgstr "Einstellungen öffnen" msgstr "Einstellungen öffnen"
#: lib/bds/desktop/menu_bar.ex:217 #: lib/bds/desktop/menu_bar.ex:217
#: lib/bds/tui.ex:750 #: lib/bds/tui.ex:986
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open in Browser" msgid "Open in Browser"
msgstr "Im Browser öffnen" msgstr "Im Browser öffnen"
@@ -1917,8 +1921,8 @@ msgstr "Beitrag gespeichert"
#: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/menu_bar.ex:233
#: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:664
#: lib/bds/desktop/shell_live/misc_editor.ex:761 #: lib/bds/desktop/shell_live/misc_editor.ex:761
#: lib/bds/tui.ex:599 #: lib/bds/tui.ex:835
#: lib/bds/tui.ex:610 #: lib/bds/tui.ex:846
#: lib/bds/ui/registry.ex:14 #: lib/bds/ui/registry.ex:14
#: lib/bds/ui/sidebar.ex:271 #: lib/bds/ui/sidebar.ex:271
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@@ -2042,14 +2046,14 @@ msgid "Ready to import:"
msgstr "Bereit zum Import:" msgstr "Bereit zum Import:"
#: lib/bds/desktop/menu_bar.ex:248 #: lib/bds/desktop/menu_bar.ex:248
#: lib/bds/tui.ex:730 #: lib/bds/tui.ex:966
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rebuild Database" msgid "Rebuild Database"
msgstr "Datenbank neu aufbauen" msgstr "Datenbank neu aufbauen"
#: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/menu_bar.ex:250
#: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381
#: lib/bds/tui.ex:734 #: lib/bds/tui.ex:970
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rebuild Embedding Index" msgid "Rebuild Embedding Index"
msgstr "Embedding-Index neu aufbauen" msgstr "Embedding-Index neu aufbauen"
@@ -2107,7 +2111,7 @@ msgid "Refresh Translation"
msgstr "Übersetzung aktualisieren" msgstr "Übersetzung aktualisieren"
#: lib/bds/desktop/menu_bar.ex:252 #: lib/bds/desktop/menu_bar.ex:252
#: lib/bds/tui.ex:737 #: lib/bds/tui.ex:973
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Regenerate Calendar" msgid "Regenerate Calendar"
msgstr "Kalender neu erzeugen" msgstr "Kalender neu erzeugen"
@@ -2118,7 +2122,7 @@ msgid "Regenerate Missing Thumbnails"
msgstr "Fehlende Vorschaubilder neu erzeugen" msgstr "Fehlende Vorschaubilder neu erzeugen"
#: lib/bds/desktop/menu_bar.ex:249 #: lib/bds/desktop/menu_bar.ex:249
#: lib/bds/tui.ex:731 #: lib/bds/tui.ex:967
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reindex Text" msgid "Reindex Text"
msgstr "Text neu indizieren" msgstr "Text neu indizieren"
@@ -2304,7 +2308,7 @@ msgstr "Scripting-Funktionen werden in der Neufassung auf Anwendungsebene konfig
#: lib/bds/desktop/shell_live/script_editor.ex:216 #: lib/bds/desktop/shell_live/script_editor.ex:216
#: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:219
#: lib/bds/desktop/shell_live/script_editor.ex:234 #: lib/bds/desktop/shell_live/script_editor.ex:234
#: lib/bds/tui.ex:602 #: lib/bds/tui.ex:838
#: lib/bds/ui/registry.ex:38 #: lib/bds/ui/registry.ex:38
#: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:63
#: lib/bds/ui/sidebar.ex:115 #: lib/bds/ui/sidebar.ex:115
@@ -2432,6 +2436,9 @@ msgid "Site"
msgstr "Website" msgstr "Website"
#: lib/bds/desktop/shell_live/misc_editor.ex:412 #: lib/bds/desktop/shell_live/misc_editor.ex:412
#: lib/bds/tui.ex:226
#: lib/bds/tui.ex:228
#: lib/bds/tui.ex:659
#: lib/bds/ui/registry.ex:125 #: lib/bds/ui/registry.ex:125
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Site Validation" msgid "Site Validation"
@@ -2552,7 +2559,7 @@ msgstr "Schlagwortname"
#: lib/bds/desktop/shell_live/tags_editor.ex:222 #: lib/bds/desktop/shell_live/tags_editor.ex:222
#: lib/bds/desktop/shell_live/tags_editor.ex:253 #: lib/bds/desktop/shell_live/tags_editor.ex:253
#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11
#: lib/bds/tui.ex:603 #: lib/bds/tui.ex:839
#: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:54
#: lib/bds/ui/registry.ex:103 #: lib/bds/ui/registry.ex:103
#: lib/bds/ui/sidebar.ex:289 #: lib/bds/ui/sidebar.ex:289
@@ -2564,7 +2571,7 @@ msgstr "Tags"
#: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live.ex:786
#: lib/bds/desktop/shell_live/panel_renderer.ex:54 #: lib/bds/desktop/shell_live/panel_renderer.ex:54
#: lib/bds/tui.ex:312 #: lib/bds/tui.ex:403
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tasks" msgid "Tasks"
msgstr "Aufgaben" msgstr "Aufgaben"
@@ -2609,7 +2616,7 @@ msgstr "Template-Syntax ist gültig"
#: lib/bds/desktop/shell_live/template_editor.ex:171 #: lib/bds/desktop/shell_live/template_editor.ex:171
#: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:176
#: lib/bds/desktop/shell_live/template_editor.ex:191 #: lib/bds/desktop/shell_live/template_editor.ex:191
#: lib/bds/tui.ex:601 #: lib/bds/tui.ex:837
#: lib/bds/ui/registry.ex:46 #: lib/bds/ui/registry.ex:46
#: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:71
#: lib/bds/ui/sidebar.ex:122 #: lib/bds/ui/sidebar.ex:122
@@ -2832,7 +2839,7 @@ msgid "Updated URLs"
msgstr "Aktualisierte URLs" msgstr "Aktualisierte URLs"
#: lib/bds/desktop/menu_bar.ex:259 #: lib/bds/desktop/menu_bar.ex:259
#: lib/bds/tui.ex:749 #: lib/bds/tui.ex:985
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Upload Site" msgid "Upload Site"
msgstr "Website hochladen" msgstr "Website hochladen"
@@ -2860,13 +2867,13 @@ msgid "Validate"
msgstr "Validieren" msgstr "Validieren"
#: lib/bds/desktop/menu_bar.ex:258 #: lib/bds/desktop/menu_bar.ex:258
#: lib/bds/tui.ex:727 #: lib/bds/tui.ex:963
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Validate Site" msgid "Validate Site"
msgstr "Website validieren" msgstr "Website validieren"
#: lib/bds/desktop/menu_bar.ex:253 #: lib/bds/desktop/menu_bar.ex:253
#: lib/bds/tui.ex:740 #: lib/bds/tui.ex:976
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Validate Translations" msgid "Validate Translations"
msgstr "Übersetzungen validieren" msgstr "Übersetzungen validieren"
@@ -3531,7 +3538,7 @@ msgid "Suggested tags"
msgstr "Vorgeschlagene Tags" msgstr "Vorgeschlagene Tags"
#: lib/bds/desktop/menu_bar.ex:257 #: lib/bds/desktop/menu_bar.ex:257
#: lib/bds/tui.ex:728 #: lib/bds/tui.ex:964
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Force Render Site" msgid "Force Render Site"
msgstr "Website vollständig neu generieren" msgstr "Website vollständig neu generieren"
@@ -3628,82 +3635,82 @@ msgstr "OK"
msgid "The endpoint returned no models. You can still type a model name manually." 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." msgstr "Der Endpunkt hat keine Modelle zurückgegeben. Sie können einen Modellnamen weiterhin manuell eingeben."
#: lib/bds/tui.ex:687 #: lib/bds/tui.ex:923
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI is unavailable in airplane mode without a local endpoint." msgid "AI is unavailable in airplane mode without a local endpoint."
msgstr "KI ist im Flugmodus ohne lokalen Endpunkt nicht verfügbar." msgstr "KI ist im Flugmodus ohne lokalen Endpunkt nicht verfügbar."
#: lib/bds/tui.ex:811 #: lib/bds/tui.ex:1049
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Could not load this file." msgid "Could not load this file."
msgstr "Diese Datei konnte nicht geladen werden." msgstr "Diese Datei konnte nicht geladen werden."
#: lib/bds/tui.ex:138 #: lib/bds/tui.ex:158
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Editing this item is not available in the terminal UI yet." msgid "Editing this item is not available in the terminal UI yet."
msgstr "Die Bearbeitung dieses Eintrags ist in der Terminal-Oberfläche noch nicht verfügbar." msgstr "Die Bearbeitung dieses Eintrags ist in der Terminal-Oberfläche noch nicht verfügbar."
#: lib/bds/tui.ex:288 #: lib/bds/tui.ex:376
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No suggestions returned." msgid "No suggestions returned."
msgstr "Keine Vorschläge erhalten." msgstr "Keine Vorschläge erhalten."
#: lib/bds/tui.ex:808 #: lib/bds/tui.ex:1046
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only images can be previewed." msgid "Only images can be previewed."
msgstr "Nur Bilder können in der Vorschau angezeigt werden." msgstr "Nur Bilder können in der Vorschau angezeigt werden."
#: lib/bds/tui.ex:610 #: lib/bds/tui.ex:846
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Post not found." msgid "Post not found."
msgstr "Beitrag nicht gefunden." msgstr "Beitrag nicht gefunden."
#: lib/bds/tui.ex:379 #: lib/bds/tui.ex:505
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Press enter to preview %{name}." msgid "Press enter to preview %{name}."
msgstr "Drücken Sie Enter, um %{name} in der Vorschau anzuzeigen." msgstr "Drücken Sie Enter, um %{name} in der Vorschau anzuzeigen."
#: lib/bds/tui.ex:657 #: lib/bds/tui.ex:893
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Published." msgid "Published."
msgstr "Veröffentlicht." msgstr "Veröffentlicht."
#: lib/bds/tui.ex:673 #: lib/bds/tui.ex:909
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save before switching languages." msgid "Save before switching languages."
msgstr "Speichern Sie vor dem Sprachwechsel." msgstr "Speichern Sie vor dem Sprachwechsel."
#: lib/bds/tui.ex:658 #: lib/bds/tui.ex:894
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Saved." msgid "Saved."
msgstr "Gespeichert." msgstr "Gespeichert."
#: lib/bds/tui.ex:382 #: lib/bds/tui.ex:508
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Select an entry and press enter to open it." msgid "Select an entry and press enter to open it."
msgstr "Wählen Sie einen Eintrag aus und öffnen Sie ihn mit Enter." msgstr "Wählen Sie einen Eintrag aus und öffnen Sie ihn mit Enter."
#: lib/bds/tui.ex:285 #: lib/bds/tui.ex:373
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Suggestions applied." msgid "Suggestions applied."
msgstr "Vorschläge übernommen." msgstr "Vorschläge übernommen."
#: lib/bds/tui.ex:394 #: lib/bds/tui.ex:520
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (ctrl+t to edit)" msgid "Title (ctrl+t to edit)"
msgstr "Titel (Strg+T zum Bearbeiten)" msgstr "Titel (Strg+T zum Bearbeiten)"
#: lib/bds/tui.ex:393 #: lib/bds/tui.ex:519
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (editing — enter to confirm)" msgid "Title (editing — enter to confirm)"
msgstr "Titel (Bearbeitung — Enter zum Bestätigen)" msgstr "Titel (Bearbeitung — Enter zum Bestätigen)"
#: lib/bds/tui.ex:441 #: lib/bds/tui.ex:567
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Working…" msgid "Working…"
msgstr "Wird bearbeitet…" msgstr "Wird bearbeitet…"
#: lib/bds/tui.ex:462 #: lib/bds/tui.ex:589
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "esc to close" msgid "esc to close"
msgstr "Esc zum Schließen" msgstr "Esc zum Schließen"
@@ -3740,37 +3747,92 @@ msgstr "Serveradresse (user@host oder user@host:port), Public-Key-Authentifizier
msgid "Use the form user@host or user@host:port." msgid "Use the form user@host or user@host:port."
msgstr "Verwenden Sie das Format user@host oder user@host:port." msgstr "Verwenden Sie das Format user@host oder user@host:port."
#: lib/bds/tui.ex:413 #: lib/bds/tui.ex:539
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Preview (ctrl+e to edit)" msgid "Preview (ctrl+e to edit)"
msgstr "Vorschau (ctrl+e zum Bearbeiten)" msgstr "Vorschau (ctrl+e zum Bearbeiten)"
#: lib/bds/tui.ex:512 #: lib/bds/tui.ex:748
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back"
msgstr "Strg+S Speichern · Strg+P Veröffentlichen · Strg+E Vorschau · Strg+T Titel · Strg+L Sprache · Strg+G KI · Esc Zurück" msgstr "Strg+S Speichern · Strg+P Veröffentlichen · Strg+E Vorschau · Strg+T Titel · Strg+L Sprache · Strg+G KI · Esc Zurück"
#: lib/bds/tui.ex:312 #: lib/bds/tui.ex:403
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All tasks finished." msgid "All tasks finished."
msgstr "Alle Aufgaben abgeschlossen." msgstr "Alle Aufgaben abgeschlossen."
#: lib/bds/tui.ex:488 #: lib/bds/tui.ex:615
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Commands — esc to close" msgid "Commands — esc to close"
msgstr "Befehle — Esc zum Schließen" msgstr "Befehle — Esc zum Schließen"
#: lib/bds/tui.ex:159 #: lib/bds/tui.ex:247
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unknown command." msgid "Unknown command."
msgstr "Unbekannter Befehl." msgstr "Unbekannter Befehl."
#: lib/bds/tui.ex:478 #: lib/bds/tui.ex:605
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "[report/apply in GUI]" msgid "[report/apply in GUI]"
msgstr "[Bericht/Anwenden in der GUI]" msgstr "[Bericht/Anwenden in der GUI]"
#: lib/bds/tui.ex:505 #: lib/bds/tui.ex:670
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "enter open · n new post · 1-5 views · : commands · ? help · r refresh · ctrl+q quit" msgid "%{diffs} differences · %{orphans} orphan files"
msgstr "Enter Öffnen · N Neuer Beitrag · 1-5 Ansichten · : Befehle · ? Hilfe · R Aktualisieren · Strg+Q Beenden" msgstr "%{diffs} Unterschiede · %{orphans} verwaiste Dateien"
#: lib/bds/tui.ex:702
#, elixir-autogen, elixir-format
msgid "Expected %{expected} · Existing %{existing}"
msgstr "Erwartet %{expected} · Vorhanden %{existing}"
#: lib/bds/tui.ex:719
#, elixir-autogen, elixir-format
msgid "Extra files (will be removed):"
msgstr "Überzählige Dateien (werden entfernt):"
#: lib/bds/tui.ex:715
#, elixir-autogen, elixir-format
msgid "Missing pages (will be rendered):"
msgstr "Fehlende Seiten (werden gerendert):"
#: lib/bds/tui.ex:226
#, elixir-autogen, elixir-format
msgid "Nothing to apply."
msgstr "Nichts anzuwenden."
#: lib/bds/tui.ex:193
#, elixir-autogen, elixir-format
msgid "Nothing to repair."
msgstr "Nichts zu reparieren."
#: lib/bds/tui.ex:693
#, elixir-autogen, elixir-format
msgid "Orphan files (not in database):"
msgstr "Verwaiste Dateien (nicht in der Datenbank):"
#: lib/bds/tui.ex:709
#, elixir-autogen, elixir-format
msgid "Sitemap changed."
msgstr "Sitemap geändert."
#: lib/bds/tui.ex:723
#, elixir-autogen, elixir-format
msgid "Updated posts (will be re-rendered):"
msgstr "Aktualisierte Beiträge (werden neu gerendert):"
#: lib/bds/tui.ex:660
#, elixir-autogen, elixir-format
msgid "enter apply changes · esc close"
msgstr "Enter Änderungen anwenden · Esc Schließen"
#: lib/bds/tui.ex:741
#, elixir-autogen, elixir-format
msgid "enter open · n new post · 1-5 views · : commands (:? help) · r refresh · ctrl+q quit"
msgstr "Enter Öffnen · N Neuer Beitrag · 1-5 Ansichten · : Befehle (:? Hilfe) · R Aktualisieren · Strg+Q Beenden"
#: lib/bds/tui.ex:655
#, elixir-autogen, elixir-format
msgid "enter repair all from files · esc close"
msgstr "Enter alles aus Dateien reparieren · Esc Schließen"

View File

@@ -81,11 +81,11 @@ msgstr ""
#: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: lib/bds/desktop/shell_live/overlay_manager.ex:72
#: lib/bds/desktop/shell_live/post_editor.ex:920 #: lib/bds/desktop/shell_live/post_editor.ex:920
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43
#: lib/bds/tui.ex:285 #: lib/bds/tui.ex:373
#: lib/bds/tui.ex:288 #: lib/bds/tui.ex:376
#: lib/bds/tui.ex:291 #: lib/bds/tui.ex:379
#: lib/bds/tui.ex:299 #: lib/bds/tui.ex:387
#: lib/bds/tui.ex:686 #: lib/bds/tui.ex:922
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI Suggestions" msgid "AI Suggestions"
msgstr "" msgstr ""
@@ -572,7 +572,7 @@ msgid "Collapse unchanged diff hunks"
msgstr "" msgstr ""
#: lib/bds/desktop/shell_live/overlay_manager.ex:422 #: lib/bds/desktop/shell_live/overlay_manager.ex:422
#: lib/bds/tui.ex:779 #: lib/bds/tui.ex:1017
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Command completed" msgid "Command completed"
msgstr "" msgstr ""
@@ -590,7 +590,7 @@ msgstr ""
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375
#: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34
#: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32
#: lib/bds/tui.ex:424 #: lib/bds/tui.ex:550
#: lib/bds/ui/sidebar.ex:764 #: lib/bds/ui/sidebar.ex:764
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Content" msgid "Content"
@@ -1030,7 +1030,7 @@ msgid "Filename"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:254 #: lib/bds/desktop/menu_bar.ex:254
#: lib/bds/tui.ex:745 #: lib/bds/tui.ex:981
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Fill Missing Translations" msgid "Fill Missing Translations"
msgstr "" msgstr ""
@@ -1041,7 +1041,7 @@ msgid "Find"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:255 #: lib/bds/desktop/menu_bar.ex:255
#: lib/bds/tui.ex:748 #: lib/bds/tui.ex:984
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Find Duplicate Posts" msgid "Find Duplicate Posts"
msgstr "" msgstr ""
@@ -1068,7 +1068,7 @@ msgid "Gallery"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:256 #: lib/bds/desktop/menu_bar.ex:256
#: lib/bds/tui.ex:729 #: lib/bds/tui.ex:965
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Generate Site" msgid "Generate Site"
msgstr "" msgstr ""
@@ -1389,9 +1389,9 @@ msgstr ""
#: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/misc_editor.ex:762
#: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_components.ex:654
#: lib/bds/desktop/shell_live/sidebar_delete.ex:175 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175
#: lib/bds/tui.ex:600 #: lib/bds/tui.ex:836
#: lib/bds/tui.ex:808 #: lib/bds/tui.ex:1046
#: lib/bds/tui.ex:811 #: lib/bds/tui.ex:1049
#: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:30
#: lib/bds/ui/registry.ex:100 #: lib/bds/ui/registry.ex:100
#: lib/bds/ui/sidebar.ex:558 #: lib/bds/ui/sidebar.ex:558
@@ -1434,7 +1434,11 @@ msgstr ""
#: lib/bds/desktop/shell_live/misc_editor.ex:214 #: lib/bds/desktop/shell_live/misc_editor.ex:214
#: lib/bds/desktop/shell_live/misc_editor.ex:226 #: lib/bds/desktop/shell_live/misc_editor.ex:226
#: lib/bds/desktop/shell_live/misc_editor.ex:448 #: lib/bds/desktop/shell_live/misc_editor.ex:448
#: lib/bds/tui.ex:726 #: lib/bds/tui.ex:193
#: lib/bds/tui.ex:199
#: lib/bds/tui.ex:210
#: lib/bds/tui.ex:654
#: lib/bds/tui.ex:962
#: lib/bds/ui/registry.ex:111 #: lib/bds/ui/registry.ex:111
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Metadata Diff" msgid "Metadata Diff"
@@ -1480,7 +1484,7 @@ msgstr ""
#: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/shell_live/sidebar_create.ex:41 #: lib/bds/desktop/shell_live/sidebar_create.ex:41
#: lib/bds/tui.ex:130 #: lib/bds/tui.ex:150
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Post" msgid "New Post"
msgstr "" msgstr ""
@@ -1769,7 +1773,7 @@ msgid "Open Settings"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:217 #: lib/bds/desktop/menu_bar.ex:217
#: lib/bds/tui.ex:750 #: lib/bds/tui.ex:986
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open in Browser" msgid "Open in Browser"
msgstr "" msgstr ""
@@ -1917,8 +1921,8 @@ msgstr ""
#: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/menu_bar.ex:233
#: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:664
#: lib/bds/desktop/shell_live/misc_editor.ex:761 #: lib/bds/desktop/shell_live/misc_editor.ex:761
#: lib/bds/tui.ex:599 #: lib/bds/tui.ex:835
#: lib/bds/tui.ex:610 #: lib/bds/tui.ex:846
#: lib/bds/ui/registry.ex:14 #: lib/bds/ui/registry.ex:14
#: lib/bds/ui/sidebar.ex:271 #: lib/bds/ui/sidebar.ex:271
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@@ -2042,14 +2046,14 @@ msgid "Ready to import:"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:248 #: lib/bds/desktop/menu_bar.ex:248
#: lib/bds/tui.ex:730 #: lib/bds/tui.ex:966
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rebuild Database" msgid "Rebuild Database"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/menu_bar.ex:250
#: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381
#: lib/bds/tui.ex:734 #: lib/bds/tui.ex:970
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rebuild Embedding Index" msgid "Rebuild Embedding Index"
msgstr "" msgstr ""
@@ -2107,7 +2111,7 @@ msgid "Refresh Translation"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:252 #: lib/bds/desktop/menu_bar.ex:252
#: lib/bds/tui.ex:737 #: lib/bds/tui.ex:973
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Regenerate Calendar" msgid "Regenerate Calendar"
msgstr "" msgstr ""
@@ -2118,7 +2122,7 @@ msgid "Regenerate Missing Thumbnails"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:249 #: lib/bds/desktop/menu_bar.ex:249
#: lib/bds/tui.ex:731 #: lib/bds/tui.ex:967
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reindex Text" msgid "Reindex Text"
msgstr "" msgstr ""
@@ -2304,7 +2308,7 @@ msgstr ""
#: lib/bds/desktop/shell_live/script_editor.ex:216 #: lib/bds/desktop/shell_live/script_editor.ex:216
#: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:219
#: lib/bds/desktop/shell_live/script_editor.ex:234 #: lib/bds/desktop/shell_live/script_editor.ex:234
#: lib/bds/tui.ex:602 #: lib/bds/tui.ex:838
#: lib/bds/ui/registry.ex:38 #: lib/bds/ui/registry.ex:38
#: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:63
#: lib/bds/ui/sidebar.ex:115 #: lib/bds/ui/sidebar.ex:115
@@ -2432,6 +2436,9 @@ msgid "Site"
msgstr "" msgstr ""
#: lib/bds/desktop/shell_live/misc_editor.ex:412 #: lib/bds/desktop/shell_live/misc_editor.ex:412
#: lib/bds/tui.ex:226
#: lib/bds/tui.ex:228
#: lib/bds/tui.ex:659
#: lib/bds/ui/registry.ex:125 #: lib/bds/ui/registry.ex:125
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Site Validation" msgid "Site Validation"
@@ -2552,7 +2559,7 @@ msgstr ""
#: lib/bds/desktop/shell_live/tags_editor.ex:222 #: lib/bds/desktop/shell_live/tags_editor.ex:222
#: lib/bds/desktop/shell_live/tags_editor.ex:253 #: lib/bds/desktop/shell_live/tags_editor.ex:253
#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11
#: lib/bds/tui.ex:603 #: lib/bds/tui.ex:839
#: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:54
#: lib/bds/ui/registry.ex:103 #: lib/bds/ui/registry.ex:103
#: lib/bds/ui/sidebar.ex:289 #: lib/bds/ui/sidebar.ex:289
@@ -2564,7 +2571,7 @@ msgstr ""
#: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live.ex:786
#: lib/bds/desktop/shell_live/panel_renderer.ex:54 #: lib/bds/desktop/shell_live/panel_renderer.ex:54
#: lib/bds/tui.ex:312 #: lib/bds/tui.ex:403
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tasks" msgid "Tasks"
msgstr "" msgstr ""
@@ -2609,7 +2616,7 @@ msgstr ""
#: lib/bds/desktop/shell_live/template_editor.ex:171 #: lib/bds/desktop/shell_live/template_editor.ex:171
#: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:176
#: lib/bds/desktop/shell_live/template_editor.ex:191 #: lib/bds/desktop/shell_live/template_editor.ex:191
#: lib/bds/tui.ex:601 #: lib/bds/tui.ex:837
#: lib/bds/ui/registry.ex:46 #: lib/bds/ui/registry.ex:46
#: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:71
#: lib/bds/ui/sidebar.ex:122 #: lib/bds/ui/sidebar.ex:122
@@ -2832,7 +2839,7 @@ msgid "Updated URLs"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:259 #: lib/bds/desktop/menu_bar.ex:259
#: lib/bds/tui.ex:749 #: lib/bds/tui.ex:985
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Upload Site" msgid "Upload Site"
msgstr "" msgstr ""
@@ -2860,13 +2867,13 @@ msgid "Validate"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:258 #: lib/bds/desktop/menu_bar.ex:258
#: lib/bds/tui.ex:727 #: lib/bds/tui.ex:963
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Validate Site" msgid "Validate Site"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:253 #: lib/bds/desktop/menu_bar.ex:253
#: lib/bds/tui.ex:740 #: lib/bds/tui.ex:976
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Validate Translations" msgid "Validate Translations"
msgstr "" msgstr ""
@@ -3531,7 +3538,7 @@ msgid "Suggested tags"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:257 #: lib/bds/desktop/menu_bar.ex:257
#: lib/bds/tui.ex:728 #: lib/bds/tui.ex:964
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Force Render Site" msgid "Force Render Site"
msgstr "" msgstr ""
@@ -3628,82 +3635,82 @@ msgstr ""
msgid "The endpoint returned no models. You can still type a model name manually." msgid "The endpoint returned no models. You can still type a model name manually."
msgstr "" msgstr ""
#: lib/bds/tui.ex:687 #: lib/bds/tui.ex:923
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI is unavailable in airplane mode without a local endpoint." msgid "AI is unavailable in airplane mode without a local endpoint."
msgstr "" msgstr ""
#: lib/bds/tui.ex:811 #: lib/bds/tui.ex:1049
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Could not load this file." msgid "Could not load this file."
msgstr "" msgstr ""
#: lib/bds/tui.ex:138 #: lib/bds/tui.ex:158
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Editing this item is not available in the terminal UI yet." msgid "Editing this item is not available in the terminal UI yet."
msgstr "" msgstr ""
#: lib/bds/tui.ex:288 #: lib/bds/tui.ex:376
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No suggestions returned." msgid "No suggestions returned."
msgstr "" msgstr ""
#: lib/bds/tui.ex:808 #: lib/bds/tui.ex:1046
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only images can be previewed." msgid "Only images can be previewed."
msgstr "" msgstr ""
#: lib/bds/tui.ex:610 #: lib/bds/tui.ex:846
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Post not found." msgid "Post not found."
msgstr "" msgstr ""
#: lib/bds/tui.ex:379 #: lib/bds/tui.ex:505
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Press enter to preview %{name}." msgid "Press enter to preview %{name}."
msgstr "" msgstr ""
#: lib/bds/tui.ex:657 #: lib/bds/tui.ex:893
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Published." msgid "Published."
msgstr "" msgstr ""
#: lib/bds/tui.ex:673 #: lib/bds/tui.ex:909
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save before switching languages." msgid "Save before switching languages."
msgstr "" msgstr ""
#: lib/bds/tui.ex:658 #: lib/bds/tui.ex:894
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Saved." msgid "Saved."
msgstr "" msgstr ""
#: lib/bds/tui.ex:382 #: lib/bds/tui.ex:508
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Select an entry and press enter to open it." msgid "Select an entry and press enter to open it."
msgstr "" msgstr ""
#: lib/bds/tui.ex:285 #: lib/bds/tui.ex:373
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Suggestions applied." msgid "Suggestions applied."
msgstr "" msgstr ""
#: lib/bds/tui.ex:394 #: lib/bds/tui.ex:520
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (ctrl+t to edit)" msgid "Title (ctrl+t to edit)"
msgstr "" msgstr ""
#: lib/bds/tui.ex:393 #: lib/bds/tui.ex:519
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (editing — enter to confirm)" msgid "Title (editing — enter to confirm)"
msgstr "" msgstr ""
#: lib/bds/tui.ex:441 #: lib/bds/tui.ex:567
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Working…" msgid "Working…"
msgstr "" msgstr ""
#: lib/bds/tui.ex:462 #: lib/bds/tui.ex:589
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "esc to close" msgid "esc to close"
msgstr "" msgstr ""
@@ -3740,37 +3747,92 @@ msgstr ""
msgid "Use the form user@host or user@host:port." msgid "Use the form user@host or user@host:port."
msgstr "" msgstr ""
#: lib/bds/tui.ex:413 #: lib/bds/tui.ex:539
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Preview (ctrl+e to edit)" msgid "Preview (ctrl+e to edit)"
msgstr "" msgstr ""
#: lib/bds/tui.ex:512 #: lib/bds/tui.ex:748
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back"
msgstr "" msgstr ""
#: lib/bds/tui.ex:312 #: lib/bds/tui.ex:403
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All tasks finished." msgid "All tasks finished."
msgstr "" msgstr ""
#: lib/bds/tui.ex:488 #: lib/bds/tui.ex:615
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Commands — esc to close" msgid "Commands — esc to close"
msgstr "" msgstr ""
#: lib/bds/tui.ex:159 #: lib/bds/tui.ex:247
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Unknown command." msgid "Unknown command."
msgstr "" msgstr ""
#: lib/bds/tui.ex:478 #: lib/bds/tui.ex:605
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "[report/apply in GUI]" msgid "[report/apply in GUI]"
msgstr "" msgstr ""
#: lib/bds/tui.ex:505 #: lib/bds/tui.ex:670
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format
msgid "enter open · n new post · 1-5 views · : commands · ? help · r refresh · ctrl+q quit" msgid "%{diffs} differences · %{orphans} orphan files"
msgstr ""
#: lib/bds/tui.ex:702
#, elixir-autogen, elixir-format
msgid "Expected %{expected} · Existing %{existing}"
msgstr ""
#: lib/bds/tui.ex:719
#, elixir-autogen, elixir-format
msgid "Extra files (will be removed):"
msgstr ""
#: lib/bds/tui.ex:715
#, elixir-autogen, elixir-format
msgid "Missing pages (will be rendered):"
msgstr ""
#: lib/bds/tui.ex:226
#, elixir-autogen, elixir-format, fuzzy
msgid "Nothing to apply."
msgstr ""
#: lib/bds/tui.ex:193
#, elixir-autogen, elixir-format, fuzzy
msgid "Nothing to repair."
msgstr ""
#: lib/bds/tui.ex:693
#, elixir-autogen, elixir-format
msgid "Orphan files (not in database):"
msgstr ""
#: lib/bds/tui.ex:709
#, elixir-autogen, elixir-format
msgid "Sitemap changed."
msgstr ""
#: lib/bds/tui.ex:723
#, elixir-autogen, elixir-format
msgid "Updated posts (will be re-rendered):"
msgstr ""
#: lib/bds/tui.ex:660
#, elixir-autogen, elixir-format
msgid "enter apply changes · esc close"
msgstr ""
#: lib/bds/tui.ex:741
#, elixir-autogen, elixir-format, fuzzy
msgid "enter open · n new post · 1-5 views · : commands (:? help) · r refresh · ctrl+q quit"
msgstr ""
#: lib/bds/tui.ex:655
#, elixir-autogen, elixir-format
msgid "enter repair all from files · esc close"
msgstr "" msgstr ""

View File

@@ -81,11 +81,11 @@ msgstr "Configuración de IA"
#: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: lib/bds/desktop/shell_live/overlay_manager.ex:72
#: lib/bds/desktop/shell_live/post_editor.ex:920 #: lib/bds/desktop/shell_live/post_editor.ex:920
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43
#: lib/bds/tui.ex:285 #: lib/bds/tui.ex:373
#: lib/bds/tui.ex:288 #: lib/bds/tui.ex:376
#: lib/bds/tui.ex:291 #: lib/bds/tui.ex:379
#: lib/bds/tui.ex:299 #: lib/bds/tui.ex:387
#: lib/bds/tui.ex:686 #: lib/bds/tui.ex:922
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI Suggestions" msgid "AI Suggestions"
msgstr "Sugerencias de IA" msgstr "Sugerencias de IA"
@@ -572,7 +572,7 @@ msgid "Collapse unchanged diff hunks"
msgstr "Contraer bloques de diff sin cambios" msgstr "Contraer bloques de diff sin cambios"
#: lib/bds/desktop/shell_live/overlay_manager.ex:422 #: lib/bds/desktop/shell_live/overlay_manager.ex:422
#: lib/bds/tui.ex:779 #: lib/bds/tui.ex:1017
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Command completed" msgid "Command completed"
msgstr "Comando completado" msgstr "Comando completado"
@@ -590,7 +590,7 @@ msgstr "Confirmar"
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375
#: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34
#: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32
#: lib/bds/tui.ex:424 #: lib/bds/tui.ex:550
#: lib/bds/ui/sidebar.ex:764 #: lib/bds/ui/sidebar.ex:764
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Content" msgid "Content"
@@ -1030,7 +1030,7 @@ msgid "Filename"
msgstr "Nombre de archivo" msgstr "Nombre de archivo"
#: lib/bds/desktop/menu_bar.ex:254 #: lib/bds/desktop/menu_bar.ex:254
#: lib/bds/tui.ex:745 #: lib/bds/tui.ex:981
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Fill Missing Translations" msgid "Fill Missing Translations"
msgstr "Completar traducciones faltantes" msgstr "Completar traducciones faltantes"
@@ -1041,7 +1041,7 @@ msgid "Find"
msgstr "Buscar" msgstr "Buscar"
#: lib/bds/desktop/menu_bar.ex:255 #: lib/bds/desktop/menu_bar.ex:255
#: lib/bds/tui.ex:748 #: lib/bds/tui.ex:984
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Find Duplicate Posts" msgid "Find Duplicate Posts"
msgstr "Buscar entradas duplicadas" msgstr "Buscar entradas duplicadas"
@@ -1068,7 +1068,7 @@ msgid "Gallery"
msgstr "Galeria" msgstr "Galeria"
#: lib/bds/desktop/menu_bar.ex:256 #: lib/bds/desktop/menu_bar.ex:256
#: lib/bds/tui.ex:729 #: lib/bds/tui.ex:965
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Generate Site" msgid "Generate Site"
msgstr "Generar sitio" msgstr "Generar sitio"
@@ -1389,9 +1389,9 @@ msgstr "Máximo de publicaciones por página"
#: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/misc_editor.ex:762
#: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_components.ex:654
#: lib/bds/desktop/shell_live/sidebar_delete.ex:175 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175
#: lib/bds/tui.ex:600 #: lib/bds/tui.ex:836
#: lib/bds/tui.ex:808 #: lib/bds/tui.ex:1046
#: lib/bds/tui.ex:811 #: lib/bds/tui.ex:1049
#: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:30
#: lib/bds/ui/registry.ex:100 #: lib/bds/ui/registry.ex:100
#: lib/bds/ui/sidebar.ex:558 #: lib/bds/ui/sidebar.ex:558
@@ -1434,7 +1434,11 @@ msgstr "Metadatos"
#: lib/bds/desktop/shell_live/misc_editor.ex:214 #: lib/bds/desktop/shell_live/misc_editor.ex:214
#: lib/bds/desktop/shell_live/misc_editor.ex:226 #: lib/bds/desktop/shell_live/misc_editor.ex:226
#: lib/bds/desktop/shell_live/misc_editor.ex:448 #: lib/bds/desktop/shell_live/misc_editor.ex:448
#: lib/bds/tui.ex:726 #: lib/bds/tui.ex:193
#: lib/bds/tui.ex:199
#: lib/bds/tui.ex:210
#: lib/bds/tui.ex:654
#: lib/bds/tui.ex:962
#: lib/bds/ui/registry.ex:111 #: lib/bds/ui/registry.ex:111
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Metadata Diff" msgid "Metadata Diff"
@@ -1480,7 +1484,7 @@ msgstr "Nueva página"
#: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/shell_live/sidebar_create.ex:41 #: lib/bds/desktop/shell_live/sidebar_create.ex:41
#: lib/bds/tui.ex:130 #: lib/bds/tui.ex:150
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Post" msgid "New Post"
msgstr "Nueva entrada" msgstr "Nueva entrada"
@@ -1769,7 +1773,7 @@ msgid "Open Settings"
msgstr "Abrir Ajustes" msgstr "Abrir Ajustes"
#: lib/bds/desktop/menu_bar.ex:217 #: lib/bds/desktop/menu_bar.ex:217
#: lib/bds/tui.ex:750 #: lib/bds/tui.ex:986
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open in Browser" msgid "Open in Browser"
msgstr "Abrir en el navegador" msgstr "Abrir en el navegador"
@@ -1917,8 +1921,8 @@ msgstr "Artículo guardado"
#: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/menu_bar.ex:233
#: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:664
#: lib/bds/desktop/shell_live/misc_editor.ex:761 #: lib/bds/desktop/shell_live/misc_editor.ex:761
#: lib/bds/tui.ex:599 #: lib/bds/tui.ex:835
#: lib/bds/tui.ex:610 #: lib/bds/tui.ex:846
#: lib/bds/ui/registry.ex:14 #: lib/bds/ui/registry.ex:14
#: lib/bds/ui/sidebar.ex:271 #: lib/bds/ui/sidebar.ex:271
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@@ -2042,14 +2046,14 @@ msgid "Ready to import:"
msgstr "Listo para importar:" msgstr "Listo para importar:"
#: lib/bds/desktop/menu_bar.ex:248 #: lib/bds/desktop/menu_bar.ex:248
#: lib/bds/tui.ex:730 #: lib/bds/tui.ex:966
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rebuild Database" msgid "Rebuild Database"
msgstr "Reconstruir base de datos" msgstr "Reconstruir base de datos"
#: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/menu_bar.ex:250
#: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381
#: lib/bds/tui.ex:734 #: lib/bds/tui.ex:970
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rebuild Embedding Index" msgid "Rebuild Embedding Index"
msgstr "Reconstruir índice de embeddings" msgstr "Reconstruir índice de embeddings"
@@ -2107,7 +2111,7 @@ msgid "Refresh Translation"
msgstr "Actualizar traducción" msgstr "Actualizar traducción"
#: lib/bds/desktop/menu_bar.ex:252 #: lib/bds/desktop/menu_bar.ex:252
#: lib/bds/tui.ex:737 #: lib/bds/tui.ex:973
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Regenerate Calendar" msgid "Regenerate Calendar"
msgstr "Regenerar calendario" msgstr "Regenerar calendario"
@@ -2118,7 +2122,7 @@ msgid "Regenerate Missing Thumbnails"
msgstr "Regenerar miniaturas faltantes" msgstr "Regenerar miniaturas faltantes"
#: lib/bds/desktop/menu_bar.ex:249 #: lib/bds/desktop/menu_bar.ex:249
#: lib/bds/tui.ex:731 #: lib/bds/tui.ex:967
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reindex Text" msgid "Reindex Text"
msgstr "Reindexar texto" msgstr "Reindexar texto"
@@ -2304,7 +2308,7 @@ msgstr "Las capacidades de scripts se configuran en la capa de aplicación en la
#: lib/bds/desktop/shell_live/script_editor.ex:216 #: lib/bds/desktop/shell_live/script_editor.ex:216
#: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:219
#: lib/bds/desktop/shell_live/script_editor.ex:234 #: lib/bds/desktop/shell_live/script_editor.ex:234
#: lib/bds/tui.ex:602 #: lib/bds/tui.ex:838
#: lib/bds/ui/registry.ex:38 #: lib/bds/ui/registry.ex:38
#: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:63
#: lib/bds/ui/sidebar.ex:115 #: lib/bds/ui/sidebar.ex:115
@@ -2432,6 +2436,9 @@ msgid "Site"
msgstr "Sitio" msgstr "Sitio"
#: lib/bds/desktop/shell_live/misc_editor.ex:412 #: lib/bds/desktop/shell_live/misc_editor.ex:412
#: lib/bds/tui.ex:226
#: lib/bds/tui.ex:228
#: lib/bds/tui.ex:659
#: lib/bds/ui/registry.ex:125 #: lib/bds/ui/registry.ex:125
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Site Validation" msgid "Site Validation"
@@ -2552,7 +2559,7 @@ msgstr "Nombre de la etiqueta"
#: lib/bds/desktop/shell_live/tags_editor.ex:222 #: lib/bds/desktop/shell_live/tags_editor.ex:222
#: lib/bds/desktop/shell_live/tags_editor.ex:253 #: lib/bds/desktop/shell_live/tags_editor.ex:253
#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11
#: lib/bds/tui.ex:603 #: lib/bds/tui.ex:839
#: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:54
#: lib/bds/ui/registry.ex:103 #: lib/bds/ui/registry.ex:103
#: lib/bds/ui/sidebar.ex:289 #: lib/bds/ui/sidebar.ex:289
@@ -2564,7 +2571,7 @@ msgstr "Etiquetas"
#: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live.ex:786
#: lib/bds/desktop/shell_live/panel_renderer.ex:54 #: lib/bds/desktop/shell_live/panel_renderer.ex:54
#: lib/bds/tui.ex:312 #: lib/bds/tui.ex:403
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tasks" msgid "Tasks"
msgstr "Tareas" msgstr "Tareas"
@@ -2609,7 +2616,7 @@ msgstr "La sintaxis de la plantilla es válida"
#: lib/bds/desktop/shell_live/template_editor.ex:171 #: lib/bds/desktop/shell_live/template_editor.ex:171
#: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:176
#: lib/bds/desktop/shell_live/template_editor.ex:191 #: lib/bds/desktop/shell_live/template_editor.ex:191
#: lib/bds/tui.ex:601 #: lib/bds/tui.ex:837
#: lib/bds/ui/registry.ex:46 #: lib/bds/ui/registry.ex:46
#: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:71
#: lib/bds/ui/sidebar.ex:122 #: lib/bds/ui/sidebar.ex:122
@@ -2832,7 +2839,7 @@ msgid "Updated URLs"
msgstr "URLs actualizadas" msgstr "URLs actualizadas"
#: lib/bds/desktop/menu_bar.ex:259 #: lib/bds/desktop/menu_bar.ex:259
#: lib/bds/tui.ex:749 #: lib/bds/tui.ex:985
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Upload Site" msgid "Upload Site"
msgstr "Subir sitio" msgstr "Subir sitio"
@@ -2860,13 +2867,13 @@ msgid "Validate"
msgstr "Validar" msgstr "Validar"
#: lib/bds/desktop/menu_bar.ex:258 #: lib/bds/desktop/menu_bar.ex:258
#: lib/bds/tui.ex:727 #: lib/bds/tui.ex:963
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Validate Site" msgid "Validate Site"
msgstr "Validar sitio" msgstr "Validar sitio"
#: lib/bds/desktop/menu_bar.ex:253 #: lib/bds/desktop/menu_bar.ex:253
#: lib/bds/tui.ex:740 #: lib/bds/tui.ex:976
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Validate Translations" msgid "Validate Translations"
msgstr "Validar traducciones" msgstr "Validar traducciones"
@@ -3531,7 +3538,7 @@ msgid "Suggested tags"
msgstr "Etiquetas sugeridas" msgstr "Etiquetas sugeridas"
#: lib/bds/desktop/menu_bar.ex:257 #: lib/bds/desktop/menu_bar.ex:257
#: lib/bds/tui.ex:728 #: lib/bds/tui.ex:964
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Force Render Site" msgid "Force Render Site"
msgstr "Forzar la regeneración del sitio" msgstr "Forzar la regeneración del sitio"
@@ -3628,82 +3635,82 @@ msgstr "OK"
msgid "The endpoint returned no models. You can still type a model name manually." 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." msgstr "El endpoint no devolvió ningún modelo. Aún puedes escribir el nombre de un modelo manualmente."
#: lib/bds/tui.ex:687 #: lib/bds/tui.ex:923
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI is unavailable in airplane mode without a local endpoint." msgid "AI is unavailable in airplane mode without a local endpoint."
msgstr "La IA no está disponible en modo avión sin un punto de conexión local." msgstr "La IA no está disponible en modo avión sin un punto de conexión local."
#: lib/bds/tui.ex:811 #: lib/bds/tui.ex:1049
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Could not load this file." msgid "Could not load this file."
msgstr "No se pudo cargar este archivo." msgstr "No se pudo cargar este archivo."
#: lib/bds/tui.ex:138 #: lib/bds/tui.ex:158
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Editing this item is not available in the terminal UI yet." msgid "Editing this item is not available in the terminal UI yet."
msgstr "La edición de este elemento aún no está disponible en la interfaz de terminal." msgstr "La edición de este elemento aún no está disponible en la interfaz de terminal."
#: lib/bds/tui.ex:288 #: lib/bds/tui.ex:376
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No suggestions returned." msgid "No suggestions returned."
msgstr "No se recibieron sugerencias." msgstr "No se recibieron sugerencias."
#: lib/bds/tui.ex:808 #: lib/bds/tui.ex:1046
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only images can be previewed." msgid "Only images can be previewed."
msgstr "Solo se pueden previsualizar imágenes." msgstr "Solo se pueden previsualizar imágenes."
#: lib/bds/tui.ex:610 #: lib/bds/tui.ex:846
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Post not found." msgid "Post not found."
msgstr "Entrada no encontrada." msgstr "Entrada no encontrada."
#: lib/bds/tui.ex:379 #: lib/bds/tui.ex:505
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Press enter to preview %{name}." msgid "Press enter to preview %{name}."
msgstr "Pulsa Intro para previsualizar %{name}." msgstr "Pulsa Intro para previsualizar %{name}."
#: lib/bds/tui.ex:657 #: lib/bds/tui.ex:893
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Published." msgid "Published."
msgstr "Publicado." msgstr "Publicado."
#: lib/bds/tui.ex:673 #: lib/bds/tui.ex:909
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save before switching languages." msgid "Save before switching languages."
msgstr "Guarda antes de cambiar de idioma." msgstr "Guarda antes de cambiar de idioma."
#: lib/bds/tui.ex:658 #: lib/bds/tui.ex:894
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Saved." msgid "Saved."
msgstr "Guardado." msgstr "Guardado."
#: lib/bds/tui.ex:382 #: lib/bds/tui.ex:508
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Select an entry and press enter to open it." msgid "Select an entry and press enter to open it."
msgstr "Selecciona una entrada y pulsa Intro para abrirla." msgstr "Selecciona una entrada y pulsa Intro para abrirla."
#: lib/bds/tui.ex:285 #: lib/bds/tui.ex:373
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Suggestions applied." msgid "Suggestions applied."
msgstr "Sugerencias aplicadas." msgstr "Sugerencias aplicadas."
#: lib/bds/tui.ex:394 #: lib/bds/tui.ex:520
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (ctrl+t to edit)" msgid "Title (ctrl+t to edit)"
msgstr "Título (ctrl+t para editar)" msgstr "Título (ctrl+t para editar)"
#: lib/bds/tui.ex:393 #: lib/bds/tui.ex:519
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (editing — enter to confirm)" msgid "Title (editing — enter to confirm)"
msgstr "Título (edición — Intro para confirmar)" msgstr "Título (edición — Intro para confirmar)"
#: lib/bds/tui.ex:441 #: lib/bds/tui.ex:567
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Working…" msgid "Working…"
msgstr "Procesando…" msgstr "Procesando…"
#: lib/bds/tui.ex:462 #: lib/bds/tui.ex:589
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "esc to close" msgid "esc to close"
msgstr "esc para cerrar" msgstr "esc para cerrar"
@@ -3740,37 +3747,92 @@ msgstr "Dirección del servidor (user@host o user@host:port), autenticación de
msgid "Use the form user@host or user@host:port." msgid "Use the form user@host or user@host:port."
msgstr "Usa el formato user@host o user@host:port." msgstr "Usa el formato user@host o user@host:port."
#: lib/bds/tui.ex:413 #: lib/bds/tui.ex:539
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Preview (ctrl+e to edit)" msgid "Preview (ctrl+e to edit)"
msgstr "Vista previa (ctrl+e para editar)" msgstr "Vista previa (ctrl+e para editar)"
#: lib/bds/tui.ex:512 #: lib/bds/tui.ex:748
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back"
msgstr "ctrl+s guardar · ctrl+p publicar · ctrl+e vista previa · ctrl+t título · ctrl+l idioma · ctrl+g IA · esc volver" msgstr "ctrl+s guardar · ctrl+p publicar · ctrl+e vista previa · ctrl+t título · ctrl+l idioma · ctrl+g IA · esc volver"
#: lib/bds/tui.ex:312 #: lib/bds/tui.ex:403
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All tasks finished." msgid "All tasks finished."
msgstr "Todas las tareas han terminado." msgstr "Todas las tareas han terminado."
#: lib/bds/tui.ex:488 #: lib/bds/tui.ex:615
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Commands — esc to close" msgid "Commands — esc to close"
msgstr "Comandos — esc para cerrar" msgstr "Comandos — esc para cerrar"
#: lib/bds/tui.ex:159 #: lib/bds/tui.ex:247
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unknown command." msgid "Unknown command."
msgstr "Comando desconocido." msgstr "Comando desconocido."
#: lib/bds/tui.ex:478 #: lib/bds/tui.ex:605
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "[report/apply in GUI]" msgid "[report/apply in GUI]"
msgstr "[informe/aplicación en la GUI]" msgstr "[informe/aplicación en la GUI]"
#: lib/bds/tui.ex:505 #: lib/bds/tui.ex:670
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "enter open · n new post · 1-5 views · : commands · ? help · r refresh · ctrl+q quit" msgid "%{diffs} differences · %{orphans} orphan files"
msgstr "intro abrir · n nueva entrada · 1-5 vistas · : comandos · ? ayuda · r actualizar · ctrl+q salir" msgstr "%{diffs} diferencias · %{orphans} archivos huérfanos"
#: lib/bds/tui.ex:702
#, elixir-autogen, elixir-format
msgid "Expected %{expected} · Existing %{existing}"
msgstr "Esperados %{expected} · Existentes %{existing}"
#: lib/bds/tui.ex:719
#, elixir-autogen, elixir-format
msgid "Extra files (will be removed):"
msgstr "Archivos sobrantes (se eliminarán):"
#: lib/bds/tui.ex:715
#, elixir-autogen, elixir-format
msgid "Missing pages (will be rendered):"
msgstr "Páginas faltantes (se generarán):"
#: lib/bds/tui.ex:226
#, elixir-autogen, elixir-format
msgid "Nothing to apply."
msgstr "Nada que aplicar."
#: lib/bds/tui.ex:193
#, elixir-autogen, elixir-format
msgid "Nothing to repair."
msgstr "Nada que reparar."
#: lib/bds/tui.ex:693
#, elixir-autogen, elixir-format
msgid "Orphan files (not in database):"
msgstr "Archivos huérfanos (no están en la base de datos):"
#: lib/bds/tui.ex:709
#, elixir-autogen, elixir-format
msgid "Sitemap changed."
msgstr "Sitemap modificado."
#: lib/bds/tui.ex:723
#, elixir-autogen, elixir-format
msgid "Updated posts (will be re-rendered):"
msgstr "Entradas actualizadas (se volverán a generar):"
#: lib/bds/tui.ex:660
#, elixir-autogen, elixir-format
msgid "enter apply changes · esc close"
msgstr "intro aplicar cambios · esc cerrar"
#: lib/bds/tui.ex:741
#, elixir-autogen, elixir-format
msgid "enter open · n new post · 1-5 views · : commands (:? help) · r refresh · ctrl+q quit"
msgstr "intro abrir · n nueva entrada · 1-5 vistas · : comandos (:? ayuda) · r actualizar · ctrl+q salir"
#: lib/bds/tui.ex:655
#, elixir-autogen, elixir-format
msgid "enter repair all from files · esc close"
msgstr "intro reparar todo desde archivos · esc cerrar"

View File

@@ -81,11 +81,11 @@ msgstr "Paramètres IA"
#: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: lib/bds/desktop/shell_live/overlay_manager.ex:72
#: lib/bds/desktop/shell_live/post_editor.ex:920 #: lib/bds/desktop/shell_live/post_editor.ex:920
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43
#: lib/bds/tui.ex:285 #: lib/bds/tui.ex:373
#: lib/bds/tui.ex:288 #: lib/bds/tui.ex:376
#: lib/bds/tui.ex:291 #: lib/bds/tui.ex:379
#: lib/bds/tui.ex:299 #: lib/bds/tui.ex:387
#: lib/bds/tui.ex:686 #: lib/bds/tui.ex:922
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI Suggestions" msgid "AI Suggestions"
msgstr "Suggestions IA" msgstr "Suggestions IA"
@@ -572,7 +572,7 @@ msgid "Collapse unchanged diff hunks"
msgstr "Réduire les blocs de diff inchangés" msgstr "Réduire les blocs de diff inchangés"
#: lib/bds/desktop/shell_live/overlay_manager.ex:422 #: lib/bds/desktop/shell_live/overlay_manager.ex:422
#: lib/bds/tui.ex:779 #: lib/bds/tui.ex:1017
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Command completed" msgid "Command completed"
msgstr "Commande terminée" msgstr "Commande terminée"
@@ -590,7 +590,7 @@ msgstr "Confirmer"
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375
#: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34
#: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32
#: lib/bds/tui.ex:424 #: lib/bds/tui.ex:550
#: lib/bds/ui/sidebar.ex:764 #: lib/bds/ui/sidebar.ex:764
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Content" msgid "Content"
@@ -1030,7 +1030,7 @@ msgid "Filename"
msgstr "Nom de fichier" msgstr "Nom de fichier"
#: lib/bds/desktop/menu_bar.ex:254 #: lib/bds/desktop/menu_bar.ex:254
#: lib/bds/tui.ex:745 #: lib/bds/tui.ex:981
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Fill Missing Translations" msgid "Fill Missing Translations"
msgstr "Compléter les traductions manquantes" msgstr "Compléter les traductions manquantes"
@@ -1041,7 +1041,7 @@ msgid "Find"
msgstr "Rechercher" msgstr "Rechercher"
#: lib/bds/desktop/menu_bar.ex:255 #: lib/bds/desktop/menu_bar.ex:255
#: lib/bds/tui.ex:748 #: lib/bds/tui.ex:984
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Find Duplicate Posts" msgid "Find Duplicate Posts"
msgstr "Trouver les doublons" msgstr "Trouver les doublons"
@@ -1068,7 +1068,7 @@ msgid "Gallery"
msgstr "Galerie" msgstr "Galerie"
#: lib/bds/desktop/menu_bar.ex:256 #: lib/bds/desktop/menu_bar.ex:256
#: lib/bds/tui.ex:729 #: lib/bds/tui.ex:965
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Generate Site" msgid "Generate Site"
msgstr "Générer le site" msgstr "Générer le site"
@@ -1389,9 +1389,9 @@ msgstr "Nombre maximal darticles par page"
#: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/misc_editor.ex:762
#: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_components.ex:654
#: lib/bds/desktop/shell_live/sidebar_delete.ex:175 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175
#: lib/bds/tui.ex:600 #: lib/bds/tui.ex:836
#: lib/bds/tui.ex:808 #: lib/bds/tui.ex:1046
#: lib/bds/tui.ex:811 #: lib/bds/tui.ex:1049
#: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:30
#: lib/bds/ui/registry.ex:100 #: lib/bds/ui/registry.ex:100
#: lib/bds/ui/sidebar.ex:558 #: lib/bds/ui/sidebar.ex:558
@@ -1434,7 +1434,11 @@ msgstr "Métadonnées"
#: lib/bds/desktop/shell_live/misc_editor.ex:214 #: lib/bds/desktop/shell_live/misc_editor.ex:214
#: lib/bds/desktop/shell_live/misc_editor.ex:226 #: lib/bds/desktop/shell_live/misc_editor.ex:226
#: lib/bds/desktop/shell_live/misc_editor.ex:448 #: lib/bds/desktop/shell_live/misc_editor.ex:448
#: lib/bds/tui.ex:726 #: lib/bds/tui.ex:193
#: lib/bds/tui.ex:199
#: lib/bds/tui.ex:210
#: lib/bds/tui.ex:654
#: lib/bds/tui.ex:962
#: lib/bds/ui/registry.ex:111 #: lib/bds/ui/registry.ex:111
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Metadata Diff" msgid "Metadata Diff"
@@ -1480,7 +1484,7 @@ msgstr "Nouvelle page"
#: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/shell_live/sidebar_create.ex:41 #: lib/bds/desktop/shell_live/sidebar_create.ex:41
#: lib/bds/tui.ex:130 #: lib/bds/tui.ex:150
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Post" msgid "New Post"
msgstr "Nouvel article" msgstr "Nouvel article"
@@ -1769,7 +1773,7 @@ msgid "Open Settings"
msgstr "Ouvrir les Réglages" msgstr "Ouvrir les Réglages"
#: lib/bds/desktop/menu_bar.ex:217 #: lib/bds/desktop/menu_bar.ex:217
#: lib/bds/tui.ex:750 #: lib/bds/tui.ex:986
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open in Browser" msgid "Open in Browser"
msgstr "Ouvrir dans le navigateur" msgstr "Ouvrir dans le navigateur"
@@ -1917,8 +1921,8 @@ msgstr "Article enregistré"
#: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/menu_bar.ex:233
#: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:664
#: lib/bds/desktop/shell_live/misc_editor.ex:761 #: lib/bds/desktop/shell_live/misc_editor.ex:761
#: lib/bds/tui.ex:599 #: lib/bds/tui.ex:835
#: lib/bds/tui.ex:610 #: lib/bds/tui.ex:846
#: lib/bds/ui/registry.ex:14 #: lib/bds/ui/registry.ex:14
#: lib/bds/ui/sidebar.ex:271 #: lib/bds/ui/sidebar.ex:271
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@@ -2042,14 +2046,14 @@ msgid "Ready to import:"
msgstr "Prêt à importer :" msgstr "Prêt à importer :"
#: lib/bds/desktop/menu_bar.ex:248 #: lib/bds/desktop/menu_bar.ex:248
#: lib/bds/tui.ex:730 #: lib/bds/tui.ex:966
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rebuild Database" msgid "Rebuild Database"
msgstr "Reconstruire la base de données" msgstr "Reconstruire la base de données"
#: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/menu_bar.ex:250
#: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381
#: lib/bds/tui.ex:734 #: lib/bds/tui.ex:970
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rebuild Embedding Index" msgid "Rebuild Embedding Index"
msgstr "Reconstruire lindex dembeddings" msgstr "Reconstruire lindex dembeddings"
@@ -2107,7 +2111,7 @@ msgid "Refresh Translation"
msgstr "Actualiser la traduction" msgstr "Actualiser la traduction"
#: lib/bds/desktop/menu_bar.ex:252 #: lib/bds/desktop/menu_bar.ex:252
#: lib/bds/tui.ex:737 #: lib/bds/tui.ex:973
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Regenerate Calendar" msgid "Regenerate Calendar"
msgstr "Régénérer le calendrier" msgstr "Régénérer le calendrier"
@@ -2118,7 +2122,7 @@ msgid "Regenerate Missing Thumbnails"
msgstr "Régénérer les vignettes manquantes" msgstr "Régénérer les vignettes manquantes"
#: lib/bds/desktop/menu_bar.ex:249 #: lib/bds/desktop/menu_bar.ex:249
#: lib/bds/tui.ex:731 #: lib/bds/tui.ex:967
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reindex Text" msgid "Reindex Text"
msgstr "Réindexer le texte" msgstr "Réindexer le texte"
@@ -2304,7 +2308,7 @@ msgstr "Les capacités de script sont configurées au niveau de lapplication
#: lib/bds/desktop/shell_live/script_editor.ex:216 #: lib/bds/desktop/shell_live/script_editor.ex:216
#: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:219
#: lib/bds/desktop/shell_live/script_editor.ex:234 #: lib/bds/desktop/shell_live/script_editor.ex:234
#: lib/bds/tui.ex:602 #: lib/bds/tui.ex:838
#: lib/bds/ui/registry.ex:38 #: lib/bds/ui/registry.ex:38
#: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:63
#: lib/bds/ui/sidebar.ex:115 #: lib/bds/ui/sidebar.ex:115
@@ -2432,6 +2436,9 @@ msgid "Site"
msgstr "Site" msgstr "Site"
#: lib/bds/desktop/shell_live/misc_editor.ex:412 #: lib/bds/desktop/shell_live/misc_editor.ex:412
#: lib/bds/tui.ex:226
#: lib/bds/tui.ex:228
#: lib/bds/tui.ex:659
#: lib/bds/ui/registry.ex:125 #: lib/bds/ui/registry.ex:125
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Site Validation" msgid "Site Validation"
@@ -2552,7 +2559,7 @@ msgstr "Nom du mot-clé"
#: lib/bds/desktop/shell_live/tags_editor.ex:222 #: lib/bds/desktop/shell_live/tags_editor.ex:222
#: lib/bds/desktop/shell_live/tags_editor.ex:253 #: lib/bds/desktop/shell_live/tags_editor.ex:253
#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11
#: lib/bds/tui.ex:603 #: lib/bds/tui.ex:839
#: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:54
#: lib/bds/ui/registry.ex:103 #: lib/bds/ui/registry.ex:103
#: lib/bds/ui/sidebar.ex:289 #: lib/bds/ui/sidebar.ex:289
@@ -2564,7 +2571,7 @@ msgstr "Tags"
#: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live.ex:786
#: lib/bds/desktop/shell_live/panel_renderer.ex:54 #: lib/bds/desktop/shell_live/panel_renderer.ex:54
#: lib/bds/tui.ex:312 #: lib/bds/tui.ex:403
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tasks" msgid "Tasks"
msgstr "Tâches" msgstr "Tâches"
@@ -2609,7 +2616,7 @@ msgstr "La syntaxe du template est valide"
#: lib/bds/desktop/shell_live/template_editor.ex:171 #: lib/bds/desktop/shell_live/template_editor.ex:171
#: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:176
#: lib/bds/desktop/shell_live/template_editor.ex:191 #: lib/bds/desktop/shell_live/template_editor.ex:191
#: lib/bds/tui.ex:601 #: lib/bds/tui.ex:837
#: lib/bds/ui/registry.ex:46 #: lib/bds/ui/registry.ex:46
#: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:71
#: lib/bds/ui/sidebar.ex:122 #: lib/bds/ui/sidebar.ex:122
@@ -2832,7 +2839,7 @@ msgid "Updated URLs"
msgstr "URLs mises à jour" msgstr "URLs mises à jour"
#: lib/bds/desktop/menu_bar.ex:259 #: lib/bds/desktop/menu_bar.ex:259
#: lib/bds/tui.ex:749 #: lib/bds/tui.ex:985
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Upload Site" msgid "Upload Site"
msgstr "Téléverser le site" msgstr "Téléverser le site"
@@ -2860,13 +2867,13 @@ msgid "Validate"
msgstr "Valider" msgstr "Valider"
#: lib/bds/desktop/menu_bar.ex:258 #: lib/bds/desktop/menu_bar.ex:258
#: lib/bds/tui.ex:727 #: lib/bds/tui.ex:963
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Validate Site" msgid "Validate Site"
msgstr "Valider le site" msgstr "Valider le site"
#: lib/bds/desktop/menu_bar.ex:253 #: lib/bds/desktop/menu_bar.ex:253
#: lib/bds/tui.ex:740 #: lib/bds/tui.ex:976
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Validate Translations" msgid "Validate Translations"
msgstr "Valider les traductions" msgstr "Valider les traductions"
@@ -3531,7 +3538,7 @@ msgid "Suggested tags"
msgstr "Tags suggérés" msgstr "Tags suggérés"
#: lib/bds/desktop/menu_bar.ex:257 #: lib/bds/desktop/menu_bar.ex:257
#: lib/bds/tui.ex:728 #: lib/bds/tui.ex:964
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Force Render Site" msgid "Force Render Site"
msgstr "Forcer la régénération du site" msgstr "Forcer la régénération du site"
@@ -3628,82 +3635,82 @@ msgstr "OK"
msgid "The endpoint returned no models. You can still type a model name manually." 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." msgstr "Le point de terminaison n'a renvoyé aucun modèle. Vous pouvez toujours saisir un nom de modèle manuellement."
#: lib/bds/tui.ex:687 #: lib/bds/tui.ex:923
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI is unavailable in airplane mode without a local endpoint." msgid "AI is unavailable in airplane mode without a local endpoint."
msgstr "L'IA n'est pas disponible en mode avion sans point de terminaison local." msgstr "L'IA n'est pas disponible en mode avion sans point de terminaison local."
#: lib/bds/tui.ex:811 #: lib/bds/tui.ex:1049
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Could not load this file." msgid "Could not load this file."
msgstr "Impossible de charger ce fichier." msgstr "Impossible de charger ce fichier."
#: lib/bds/tui.ex:138 #: lib/bds/tui.ex:158
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Editing this item is not available in the terminal UI yet." msgid "Editing this item is not available in the terminal UI yet."
msgstr "La modification de cet élément n'est pas encore disponible dans l'interface du terminal." msgstr "La modification de cet élément n'est pas encore disponible dans l'interface du terminal."
#: lib/bds/tui.ex:288 #: lib/bds/tui.ex:376
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No suggestions returned." msgid "No suggestions returned."
msgstr "Aucune suggestion reçue." msgstr "Aucune suggestion reçue."
#: lib/bds/tui.ex:808 #: lib/bds/tui.ex:1046
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only images can be previewed." msgid "Only images can be previewed."
msgstr "Seules les images peuvent être prévisualisées." msgstr "Seules les images peuvent être prévisualisées."
#: lib/bds/tui.ex:610 #: lib/bds/tui.ex:846
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Post not found." msgid "Post not found."
msgstr "Article introuvable." msgstr "Article introuvable."
#: lib/bds/tui.ex:379 #: lib/bds/tui.ex:505
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Press enter to preview %{name}." msgid "Press enter to preview %{name}."
msgstr "Appuyez sur Entrée pour prévisualiser %{name}." msgstr "Appuyez sur Entrée pour prévisualiser %{name}."
#: lib/bds/tui.ex:657 #: lib/bds/tui.ex:893
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Published." msgid "Published."
msgstr "Publié." msgstr "Publié."
#: lib/bds/tui.ex:673 #: lib/bds/tui.ex:909
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save before switching languages." msgid "Save before switching languages."
msgstr "Enregistrez avant de changer de langue." msgstr "Enregistrez avant de changer de langue."
#: lib/bds/tui.ex:658 #: lib/bds/tui.ex:894
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Saved." msgid "Saved."
msgstr "Enregistré." msgstr "Enregistré."
#: lib/bds/tui.ex:382 #: lib/bds/tui.ex:508
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Select an entry and press enter to open it." msgid "Select an entry and press enter to open it."
msgstr "Sélectionnez une entrée et appuyez sur Entrée pour l'ouvrir." msgstr "Sélectionnez une entrée et appuyez sur Entrée pour l'ouvrir."
#: lib/bds/tui.ex:285 #: lib/bds/tui.ex:373
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Suggestions applied." msgid "Suggestions applied."
msgstr "Suggestions appliquées." msgstr "Suggestions appliquées."
#: lib/bds/tui.ex:394 #: lib/bds/tui.ex:520
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (ctrl+t to edit)" msgid "Title (ctrl+t to edit)"
msgstr "Titre (ctrl+t pour modifier)" msgstr "Titre (ctrl+t pour modifier)"
#: lib/bds/tui.ex:393 #: lib/bds/tui.ex:519
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (editing — enter to confirm)" msgid "Title (editing — enter to confirm)"
msgstr "Titre (édition — Entrée pour confirmer)" msgstr "Titre (édition — Entrée pour confirmer)"
#: lib/bds/tui.ex:441 #: lib/bds/tui.ex:567
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Working…" msgid "Working…"
msgstr "Traitement en cours…" msgstr "Traitement en cours…"
#: lib/bds/tui.ex:462 #: lib/bds/tui.ex:589
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "esc to close" msgid "esc to close"
msgstr "échap pour fermer" msgstr "échap pour fermer"
@@ -3740,37 +3747,92 @@ msgstr "Adresse du serveur (user@host ou user@host:port), authentification par c
msgid "Use the form user@host or user@host:port." msgid "Use the form user@host or user@host:port."
msgstr "Utilisez le format user@host ou user@host:port." msgstr "Utilisez le format user@host ou user@host:port."
#: lib/bds/tui.ex:413 #: lib/bds/tui.ex:539
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Preview (ctrl+e to edit)" msgid "Preview (ctrl+e to edit)"
msgstr "Aperçu (ctrl+e pour modifier)" msgstr "Aperçu (ctrl+e pour modifier)"
#: lib/bds/tui.ex:512 #: lib/bds/tui.ex:748
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back"
msgstr "ctrl+s enregistrer · ctrl+p publier · ctrl+e aperçu · ctrl+t titre · ctrl+l langue · ctrl+g IA · échap retour" msgstr "ctrl+s enregistrer · ctrl+p publier · ctrl+e aperçu · ctrl+t titre · ctrl+l langue · ctrl+g IA · échap retour"
#: lib/bds/tui.ex:312 #: lib/bds/tui.ex:403
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All tasks finished." msgid "All tasks finished."
msgstr "Toutes les tâches sont terminées." msgstr "Toutes les tâches sont terminées."
#: lib/bds/tui.ex:488 #: lib/bds/tui.ex:615
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Commands — esc to close" msgid "Commands — esc to close"
msgstr "Commandes — échap pour fermer" msgstr "Commandes — échap pour fermer"
#: lib/bds/tui.ex:159 #: lib/bds/tui.ex:247
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unknown command." msgid "Unknown command."
msgstr "Commande inconnue." msgstr "Commande inconnue."
#: lib/bds/tui.ex:478 #: lib/bds/tui.ex:605
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "[report/apply in GUI]" msgid "[report/apply in GUI]"
msgstr "[rapport/application dans la GUI]" msgstr "[rapport/application dans la GUI]"
#: lib/bds/tui.ex:505 #: lib/bds/tui.ex:670
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "enter open · n new post · 1-5 views · : commands · ? help · r refresh · ctrl+q quit" msgid "%{diffs} differences · %{orphans} orphan files"
msgstr "entrée ouvrir · n nouvel article · 1-5 vues · : commandes · ? aide · r actualiser · ctrl+q quitter" msgstr "%{diffs} différences · %{orphans} fichiers orphelins"
#: lib/bds/tui.ex:702
#, elixir-autogen, elixir-format
msgid "Expected %{expected} · Existing %{existing}"
msgstr "Attendu %{expected} · Existant %{existing}"
#: lib/bds/tui.ex:719
#, elixir-autogen, elixir-format
msgid "Extra files (will be removed):"
msgstr "Fichiers en trop (seront supprimés) :"
#: lib/bds/tui.ex:715
#, elixir-autogen, elixir-format
msgid "Missing pages (will be rendered):"
msgstr "Pages manquantes (seront rendues) :"
#: lib/bds/tui.ex:226
#, elixir-autogen, elixir-format
msgid "Nothing to apply."
msgstr "Rien à appliquer."
#: lib/bds/tui.ex:193
#, elixir-autogen, elixir-format
msgid "Nothing to repair."
msgstr "Rien à réparer."
#: lib/bds/tui.ex:693
#, elixir-autogen, elixir-format
msgid "Orphan files (not in database):"
msgstr "Fichiers orphelins (absents de la base de données) :"
#: lib/bds/tui.ex:709
#, elixir-autogen, elixir-format
msgid "Sitemap changed."
msgstr "Sitemap modifié."
#: lib/bds/tui.ex:723
#, elixir-autogen, elixir-format
msgid "Updated posts (will be re-rendered):"
msgstr "Articles mis à jour (seront rendus à nouveau) :"
#: lib/bds/tui.ex:660
#, elixir-autogen, elixir-format
msgid "enter apply changes · esc close"
msgstr "entrée appliquer les modifications · échap fermer"
#: lib/bds/tui.ex:741
#, elixir-autogen, elixir-format
msgid "enter open · n new post · 1-5 views · : commands (:? help) · r refresh · ctrl+q quit"
msgstr "entrée ouvrir · n nouvel article · 1-5 vues · : commandes (:? aide) · r actualiser · ctrl+q quitter"
#: lib/bds/tui.ex:655
#, elixir-autogen, elixir-format
msgid "enter repair all from files · esc close"
msgstr "entrée tout réparer depuis les fichiers · échap fermer"

View File

@@ -81,11 +81,11 @@ msgstr "Impostazioni IA"
#: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: lib/bds/desktop/shell_live/overlay_manager.ex:72
#: lib/bds/desktop/shell_live/post_editor.ex:920 #: lib/bds/desktop/shell_live/post_editor.ex:920
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43
#: lib/bds/tui.ex:285 #: lib/bds/tui.ex:373
#: lib/bds/tui.ex:288 #: lib/bds/tui.ex:376
#: lib/bds/tui.ex:291 #: lib/bds/tui.ex:379
#: lib/bds/tui.ex:299 #: lib/bds/tui.ex:387
#: lib/bds/tui.ex:686 #: lib/bds/tui.ex:922
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI Suggestions" msgid "AI Suggestions"
msgstr "Suggerimenti IA" msgstr "Suggerimenti IA"
@@ -572,7 +572,7 @@ msgid "Collapse unchanged diff hunks"
msgstr "Comprimi i blocchi diff invariati" msgstr "Comprimi i blocchi diff invariati"
#: lib/bds/desktop/shell_live/overlay_manager.ex:422 #: lib/bds/desktop/shell_live/overlay_manager.ex:422
#: lib/bds/tui.ex:779 #: lib/bds/tui.ex:1017
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Command completed" msgid "Command completed"
msgstr "Comando completato" msgstr "Comando completato"
@@ -590,7 +590,7 @@ msgstr "Conferma"
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375
#: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34
#: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32
#: lib/bds/tui.ex:424 #: lib/bds/tui.ex:550
#: lib/bds/ui/sidebar.ex:764 #: lib/bds/ui/sidebar.ex:764
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Content" msgid "Content"
@@ -1030,7 +1030,7 @@ msgid "Filename"
msgstr "Nome file" msgstr "Nome file"
#: lib/bds/desktop/menu_bar.ex:254 #: lib/bds/desktop/menu_bar.ex:254
#: lib/bds/tui.ex:745 #: lib/bds/tui.ex:981
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Fill Missing Translations" msgid "Fill Missing Translations"
msgstr "Completa traduzioni mancanti" msgstr "Completa traduzioni mancanti"
@@ -1041,7 +1041,7 @@ msgid "Find"
msgstr "Trova" msgstr "Trova"
#: lib/bds/desktop/menu_bar.ex:255 #: lib/bds/desktop/menu_bar.ex:255
#: lib/bds/tui.ex:748 #: lib/bds/tui.ex:984
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Find Duplicate Posts" msgid "Find Duplicate Posts"
msgstr "Trova post duplicati" msgstr "Trova post duplicati"
@@ -1068,7 +1068,7 @@ msgid "Gallery"
msgstr "Galleria" msgstr "Galleria"
#: lib/bds/desktop/menu_bar.ex:256 #: lib/bds/desktop/menu_bar.ex:256
#: lib/bds/tui.ex:729 #: lib/bds/tui.ex:965
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Generate Site" msgid "Generate Site"
msgstr "Genera sito" msgstr "Genera sito"
@@ -1389,9 +1389,9 @@ msgstr "Numero massimo di post per pagina"
#: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/misc_editor.ex:762
#: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_components.ex:654
#: lib/bds/desktop/shell_live/sidebar_delete.ex:175 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175
#: lib/bds/tui.ex:600 #: lib/bds/tui.ex:836
#: lib/bds/tui.ex:808 #: lib/bds/tui.ex:1046
#: lib/bds/tui.ex:811 #: lib/bds/tui.ex:1049
#: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:30
#: lib/bds/ui/registry.ex:100 #: lib/bds/ui/registry.ex:100
#: lib/bds/ui/sidebar.ex:558 #: lib/bds/ui/sidebar.ex:558
@@ -1434,7 +1434,11 @@ msgstr "Metadati"
#: lib/bds/desktop/shell_live/misc_editor.ex:214 #: lib/bds/desktop/shell_live/misc_editor.ex:214
#: lib/bds/desktop/shell_live/misc_editor.ex:226 #: lib/bds/desktop/shell_live/misc_editor.ex:226
#: lib/bds/desktop/shell_live/misc_editor.ex:448 #: lib/bds/desktop/shell_live/misc_editor.ex:448
#: lib/bds/tui.ex:726 #: lib/bds/tui.ex:193
#: lib/bds/tui.ex:199
#: lib/bds/tui.ex:210
#: lib/bds/tui.ex:654
#: lib/bds/tui.ex:962
#: lib/bds/ui/registry.ex:111 #: lib/bds/ui/registry.ex:111
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Metadata Diff" msgid "Metadata Diff"
@@ -1480,7 +1484,7 @@ msgstr "Nuova pagina"
#: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/shell_live/sidebar_create.ex:41 #: lib/bds/desktop/shell_live/sidebar_create.ex:41
#: lib/bds/tui.ex:130 #: lib/bds/tui.ex:150
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Post" msgid "New Post"
msgstr "Nuovo post" msgstr "Nuovo post"
@@ -1769,7 +1773,7 @@ msgid "Open Settings"
msgstr "Apri Impostazioni" msgstr "Apri Impostazioni"
#: lib/bds/desktop/menu_bar.ex:217 #: lib/bds/desktop/menu_bar.ex:217
#: lib/bds/tui.ex:750 #: lib/bds/tui.ex:986
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open in Browser" msgid "Open in Browser"
msgstr "Apri nel browser" msgstr "Apri nel browser"
@@ -1917,8 +1921,8 @@ msgstr "Articolo salvato"
#: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/menu_bar.ex:233
#: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:664
#: lib/bds/desktop/shell_live/misc_editor.ex:761 #: lib/bds/desktop/shell_live/misc_editor.ex:761
#: lib/bds/tui.ex:599 #: lib/bds/tui.ex:835
#: lib/bds/tui.ex:610 #: lib/bds/tui.ex:846
#: lib/bds/ui/registry.ex:14 #: lib/bds/ui/registry.ex:14
#: lib/bds/ui/sidebar.ex:271 #: lib/bds/ui/sidebar.ex:271
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@@ -2042,14 +2046,14 @@ msgid "Ready to import:"
msgstr "Pronto per importare:" msgstr "Pronto per importare:"
#: lib/bds/desktop/menu_bar.ex:248 #: lib/bds/desktop/menu_bar.ex:248
#: lib/bds/tui.ex:730 #: lib/bds/tui.ex:966
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rebuild Database" msgid "Rebuild Database"
msgstr "Ricostruisci database" msgstr "Ricostruisci database"
#: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/menu_bar.ex:250
#: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381
#: lib/bds/tui.ex:734 #: lib/bds/tui.ex:970
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rebuild Embedding Index" msgid "Rebuild Embedding Index"
msgstr "Ricostruisci indice embeddings" msgstr "Ricostruisci indice embeddings"
@@ -2107,7 +2111,7 @@ msgid "Refresh Translation"
msgstr "Aggiorna traduzione" msgstr "Aggiorna traduzione"
#: lib/bds/desktop/menu_bar.ex:252 #: lib/bds/desktop/menu_bar.ex:252
#: lib/bds/tui.ex:737 #: lib/bds/tui.ex:973
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Regenerate Calendar" msgid "Regenerate Calendar"
msgstr "Rigenera calendario" msgstr "Rigenera calendario"
@@ -2118,7 +2122,7 @@ msgid "Regenerate Missing Thumbnails"
msgstr "Rigenera miniature mancanti" msgstr "Rigenera miniature mancanti"
#: lib/bds/desktop/menu_bar.ex:249 #: lib/bds/desktop/menu_bar.ex:249
#: lib/bds/tui.ex:731 #: lib/bds/tui.ex:967
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reindex Text" msgid "Reindex Text"
msgstr "Reindicizza testo" msgstr "Reindicizza testo"
@@ -2304,7 +2308,7 @@ msgstr "Le capacità di scripting sono configurate a livello applicativo nella r
#: lib/bds/desktop/shell_live/script_editor.ex:216 #: lib/bds/desktop/shell_live/script_editor.ex:216
#: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:219
#: lib/bds/desktop/shell_live/script_editor.ex:234 #: lib/bds/desktop/shell_live/script_editor.ex:234
#: lib/bds/tui.ex:602 #: lib/bds/tui.ex:838
#: lib/bds/ui/registry.ex:38 #: lib/bds/ui/registry.ex:38
#: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:63
#: lib/bds/ui/sidebar.ex:115 #: lib/bds/ui/sidebar.ex:115
@@ -2432,6 +2436,9 @@ msgid "Site"
msgstr "Sito" msgstr "Sito"
#: lib/bds/desktop/shell_live/misc_editor.ex:412 #: lib/bds/desktop/shell_live/misc_editor.ex:412
#: lib/bds/tui.ex:226
#: lib/bds/tui.ex:228
#: lib/bds/tui.ex:659
#: lib/bds/ui/registry.ex:125 #: lib/bds/ui/registry.ex:125
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Site Validation" msgid "Site Validation"
@@ -2552,7 +2559,7 @@ msgstr "Nome del tag"
#: lib/bds/desktop/shell_live/tags_editor.ex:222 #: lib/bds/desktop/shell_live/tags_editor.ex:222
#: lib/bds/desktop/shell_live/tags_editor.ex:253 #: lib/bds/desktop/shell_live/tags_editor.ex:253
#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11
#: lib/bds/tui.ex:603 #: lib/bds/tui.ex:839
#: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:54
#: lib/bds/ui/registry.ex:103 #: lib/bds/ui/registry.ex:103
#: lib/bds/ui/sidebar.ex:289 #: lib/bds/ui/sidebar.ex:289
@@ -2564,7 +2571,7 @@ msgstr "Tag"
#: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live.ex:786
#: lib/bds/desktop/shell_live/panel_renderer.ex:54 #: lib/bds/desktop/shell_live/panel_renderer.ex:54
#: lib/bds/tui.ex:312 #: lib/bds/tui.ex:403
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tasks" msgid "Tasks"
msgstr "Attività" msgstr "Attività"
@@ -2609,7 +2616,7 @@ msgstr "La sintassi del template è valida"
#: lib/bds/desktop/shell_live/template_editor.ex:171 #: lib/bds/desktop/shell_live/template_editor.ex:171
#: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:176
#: lib/bds/desktop/shell_live/template_editor.ex:191 #: lib/bds/desktop/shell_live/template_editor.ex:191
#: lib/bds/tui.ex:601 #: lib/bds/tui.ex:837
#: lib/bds/ui/registry.ex:46 #: lib/bds/ui/registry.ex:46
#: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:71
#: lib/bds/ui/sidebar.ex:122 #: lib/bds/ui/sidebar.ex:122
@@ -2832,7 +2839,7 @@ msgid "Updated URLs"
msgstr "URL aggiornati" msgstr "URL aggiornati"
#: lib/bds/desktop/menu_bar.ex:259 #: lib/bds/desktop/menu_bar.ex:259
#: lib/bds/tui.ex:749 #: lib/bds/tui.ex:985
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Upload Site" msgid "Upload Site"
msgstr "Carica sito" msgstr "Carica sito"
@@ -2860,13 +2867,13 @@ msgid "Validate"
msgstr "Valida" msgstr "Valida"
#: lib/bds/desktop/menu_bar.ex:258 #: lib/bds/desktop/menu_bar.ex:258
#: lib/bds/tui.ex:727 #: lib/bds/tui.ex:963
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Validate Site" msgid "Validate Site"
msgstr "Valida sito" msgstr "Valida sito"
#: lib/bds/desktop/menu_bar.ex:253 #: lib/bds/desktop/menu_bar.ex:253
#: lib/bds/tui.ex:740 #: lib/bds/tui.ex:976
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Validate Translations" msgid "Validate Translations"
msgstr "Valida traduzioni" msgstr "Valida traduzioni"
@@ -3531,7 +3538,7 @@ msgid "Suggested tags"
msgstr "Tag suggeriti" msgstr "Tag suggeriti"
#: lib/bds/desktop/menu_bar.ex:257 #: lib/bds/desktop/menu_bar.ex:257
#: lib/bds/tui.ex:728 #: lib/bds/tui.ex:964
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Force Render Site" msgid "Force Render Site"
msgstr "Forza la rigenerazione del sito" msgstr "Forza la rigenerazione del sito"
@@ -3628,82 +3635,82 @@ msgstr "OK"
msgid "The endpoint returned no models. You can still type a model name manually." 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." msgstr "L'endpoint non ha restituito alcun modello. Puoi comunque digitare manualmente il nome di un modello."
#: lib/bds/tui.ex:687 #: lib/bds/tui.ex:923
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI is unavailable in airplane mode without a local endpoint." msgid "AI is unavailable in airplane mode without a local endpoint."
msgstr "L'IA non è disponibile in modalità aereo senza un endpoint locale." msgstr "L'IA non è disponibile in modalità aereo senza un endpoint locale."
#: lib/bds/tui.ex:811 #: lib/bds/tui.ex:1049
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Could not load this file." msgid "Could not load this file."
msgstr "Impossibile caricare questo file." msgstr "Impossibile caricare questo file."
#: lib/bds/tui.ex:138 #: lib/bds/tui.ex:158
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Editing this item is not available in the terminal UI yet." msgid "Editing this item is not available in the terminal UI yet."
msgstr "La modifica di questo elemento non è ancora disponibile nell'interfaccia del terminale." msgstr "La modifica di questo elemento non è ancora disponibile nell'interfaccia del terminale."
#: lib/bds/tui.ex:288 #: lib/bds/tui.ex:376
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No suggestions returned." msgid "No suggestions returned."
msgstr "Nessun suggerimento ricevuto." msgstr "Nessun suggerimento ricevuto."
#: lib/bds/tui.ex:808 #: lib/bds/tui.ex:1046
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only images can be previewed." msgid "Only images can be previewed."
msgstr "Solo le immagini possono essere visualizzate in anteprima." msgstr "Solo le immagini possono essere visualizzate in anteprima."
#: lib/bds/tui.ex:610 #: lib/bds/tui.ex:846
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Post not found." msgid "Post not found."
msgstr "Post non trovato." msgstr "Post non trovato."
#: lib/bds/tui.ex:379 #: lib/bds/tui.ex:505
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Press enter to preview %{name}." msgid "Press enter to preview %{name}."
msgstr "Premi Invio per l'anteprima di %{name}." msgstr "Premi Invio per l'anteprima di %{name}."
#: lib/bds/tui.ex:657 #: lib/bds/tui.ex:893
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Published." msgid "Published."
msgstr "Pubblicato." msgstr "Pubblicato."
#: lib/bds/tui.ex:673 #: lib/bds/tui.ex:909
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save before switching languages." msgid "Save before switching languages."
msgstr "Salva prima di cambiare lingua." msgstr "Salva prima di cambiare lingua."
#: lib/bds/tui.ex:658 #: lib/bds/tui.ex:894
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Saved." msgid "Saved."
msgstr "Salvato." msgstr "Salvato."
#: lib/bds/tui.ex:382 #: lib/bds/tui.ex:508
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Select an entry and press enter to open it." msgid "Select an entry and press enter to open it."
msgstr "Seleziona una voce e premi Invio per aprirla." msgstr "Seleziona una voce e premi Invio per aprirla."
#: lib/bds/tui.ex:285 #: lib/bds/tui.ex:373
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Suggestions applied." msgid "Suggestions applied."
msgstr "Suggerimenti applicati." msgstr "Suggerimenti applicati."
#: lib/bds/tui.ex:394 #: lib/bds/tui.ex:520
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (ctrl+t to edit)" msgid "Title (ctrl+t to edit)"
msgstr "Titolo (ctrl+t per modificare)" msgstr "Titolo (ctrl+t per modificare)"
#: lib/bds/tui.ex:393 #: lib/bds/tui.ex:519
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (editing — enter to confirm)" msgid "Title (editing — enter to confirm)"
msgstr "Titolo (modifica — Invio per confermare)" msgstr "Titolo (modifica — Invio per confermare)"
#: lib/bds/tui.ex:441 #: lib/bds/tui.ex:567
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Working…" msgid "Working…"
msgstr "Elaborazione…" msgstr "Elaborazione…"
#: lib/bds/tui.ex:462 #: lib/bds/tui.ex:589
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "esc to close" msgid "esc to close"
msgstr "esc per chiudere" msgstr "esc per chiudere"
@@ -3740,37 +3747,92 @@ msgstr "Indirizzo del server (user@host o user@host:port), autenticazione a chia
msgid "Use the form user@host or user@host:port." msgid "Use the form user@host or user@host:port."
msgstr "Usa il formato user@host o user@host:port." msgstr "Usa il formato user@host o user@host:port."
#: lib/bds/tui.ex:413 #: lib/bds/tui.ex:539
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Preview (ctrl+e to edit)" msgid "Preview (ctrl+e to edit)"
msgstr "Anteprima (ctrl+e per modificare)" msgstr "Anteprima (ctrl+e per modificare)"
#: lib/bds/tui.ex:512 #: lib/bds/tui.ex:748
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back"
msgstr "ctrl+s salva · ctrl+p pubblica · ctrl+e anteprima · ctrl+t titolo · ctrl+l lingua · ctrl+g IA · esc indietro" msgstr "ctrl+s salva · ctrl+p pubblica · ctrl+e anteprima · ctrl+t titolo · ctrl+l lingua · ctrl+g IA · esc indietro"
#: lib/bds/tui.ex:312 #: lib/bds/tui.ex:403
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All tasks finished." msgid "All tasks finished."
msgstr "Tutte le attività sono terminate." msgstr "Tutte le attività sono terminate."
#: lib/bds/tui.ex:488 #: lib/bds/tui.ex:615
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Commands — esc to close" msgid "Commands — esc to close"
msgstr "Comandi — esc per chiudere" msgstr "Comandi — esc per chiudere"
#: lib/bds/tui.ex:159 #: lib/bds/tui.ex:247
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unknown command." msgid "Unknown command."
msgstr "Comando sconosciuto." msgstr "Comando sconosciuto."
#: lib/bds/tui.ex:478 #: lib/bds/tui.ex:605
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "[report/apply in GUI]" msgid "[report/apply in GUI]"
msgstr "[report/applicazione nella GUI]" msgstr "[report/applicazione nella GUI]"
#: lib/bds/tui.ex:505 #: lib/bds/tui.ex:670
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "enter open · n new post · 1-5 views · : commands · ? help · r refresh · ctrl+q quit" msgid "%{diffs} differences · %{orphans} orphan files"
msgstr "invio apri · n nuovo post · 1-5 viste · : comandi · ? aiuto · r aggiorna · ctrl+q esci" msgstr "%{diffs} differenze · %{orphans} file orfani"
#: lib/bds/tui.ex:702
#, elixir-autogen, elixir-format
msgid "Expected %{expected} · Existing %{existing}"
msgstr "Attesi %{expected} · Esistenti %{existing}"
#: lib/bds/tui.ex:719
#, elixir-autogen, elixir-format
msgid "Extra files (will be removed):"
msgstr "File in eccesso (verranno rimossi):"
#: lib/bds/tui.ex:715
#, elixir-autogen, elixir-format
msgid "Missing pages (will be rendered):"
msgstr "Pagine mancanti (verranno generate):"
#: lib/bds/tui.ex:226
#, elixir-autogen, elixir-format
msgid "Nothing to apply."
msgstr "Niente da applicare."
#: lib/bds/tui.ex:193
#, elixir-autogen, elixir-format
msgid "Nothing to repair."
msgstr "Niente da riparare."
#: lib/bds/tui.ex:693
#, elixir-autogen, elixir-format
msgid "Orphan files (not in database):"
msgstr "File orfani (non presenti nel database):"
#: lib/bds/tui.ex:709
#, elixir-autogen, elixir-format
msgid "Sitemap changed."
msgstr "Sitemap modificata."
#: lib/bds/tui.ex:723
#, elixir-autogen, elixir-format
msgid "Updated posts (will be re-rendered):"
msgstr "Post aggiornati (verranno rigenerati):"
#: lib/bds/tui.ex:660
#, elixir-autogen, elixir-format
msgid "enter apply changes · esc close"
msgstr "invio applica le modifiche · esc chiudi"
#: lib/bds/tui.ex:741
#, elixir-autogen, elixir-format
msgid "enter open · n new post · 1-5 views · : commands (:? help) · r refresh · ctrl+q quit"
msgstr "invio apri · n nuovo post · 1-5 viste · : comandi (:? aiuto) · r aggiorna · ctrl+q esci"
#: lib/bds/tui.ex:655
#, elixir-autogen, elixir-format
msgid "enter repair all from files · esc close"
msgstr "invio ripara tutto dai file · esc chiudi"

View File

@@ -94,11 +94,11 @@ msgstr ""
#: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: lib/bds/desktop/shell_live/overlay_manager.ex:72
#: lib/bds/desktop/shell_live/post_editor.ex:920 #: lib/bds/desktop/shell_live/post_editor.ex:920
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43
#: lib/bds/tui.ex:285 #: lib/bds/tui.ex:373
#: lib/bds/tui.ex:288 #: lib/bds/tui.ex:376
#: lib/bds/tui.ex:291 #: lib/bds/tui.ex:379
#: lib/bds/tui.ex:299 #: lib/bds/tui.ex:387
#: lib/bds/tui.ex:686 #: lib/bds/tui.ex:922
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI Suggestions" msgid "AI Suggestions"
msgstr "" msgstr ""
@@ -585,7 +585,7 @@ msgid "Collapse unchanged diff hunks"
msgstr "" msgstr ""
#: lib/bds/desktop/shell_live/overlay_manager.ex:422 #: lib/bds/desktop/shell_live/overlay_manager.ex:422
#: lib/bds/tui.ex:779 #: lib/bds/tui.ex:1017
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Command completed" msgid "Command completed"
msgstr "" msgstr ""
@@ -603,7 +603,7 @@ msgstr ""
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375
#: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34
#: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32
#: lib/bds/tui.ex:424 #: lib/bds/tui.ex:550
#: lib/bds/ui/sidebar.ex:764 #: lib/bds/ui/sidebar.ex:764
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Content" msgid "Content"
@@ -1043,7 +1043,7 @@ msgid "Filename"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:254 #: lib/bds/desktop/menu_bar.ex:254
#: lib/bds/tui.ex:745 #: lib/bds/tui.ex:981
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Fill Missing Translations" msgid "Fill Missing Translations"
msgstr "" msgstr ""
@@ -1054,7 +1054,7 @@ msgid "Find"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:255 #: lib/bds/desktop/menu_bar.ex:255
#: lib/bds/tui.ex:748 #: lib/bds/tui.ex:984
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Find Duplicate Posts" msgid "Find Duplicate Posts"
msgstr "" msgstr ""
@@ -1081,7 +1081,7 @@ msgid "Gallery"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:256 #: lib/bds/desktop/menu_bar.ex:256
#: lib/bds/tui.ex:729 #: lib/bds/tui.ex:965
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Generate Site" msgid "Generate Site"
msgstr "" msgstr ""
@@ -1402,9 +1402,9 @@ msgstr ""
#: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/misc_editor.ex:762
#: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_components.ex:654
#: lib/bds/desktop/shell_live/sidebar_delete.ex:175 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175
#: lib/bds/tui.ex:600 #: lib/bds/tui.ex:836
#: lib/bds/tui.ex:808 #: lib/bds/tui.ex:1046
#: lib/bds/tui.ex:811 #: lib/bds/tui.ex:1049
#: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:30
#: lib/bds/ui/registry.ex:100 #: lib/bds/ui/registry.ex:100
#: lib/bds/ui/sidebar.ex:558 #: lib/bds/ui/sidebar.ex:558
@@ -1447,7 +1447,11 @@ msgstr ""
#: lib/bds/desktop/shell_live/misc_editor.ex:214 #: lib/bds/desktop/shell_live/misc_editor.ex:214
#: lib/bds/desktop/shell_live/misc_editor.ex:226 #: lib/bds/desktop/shell_live/misc_editor.ex:226
#: lib/bds/desktop/shell_live/misc_editor.ex:448 #: lib/bds/desktop/shell_live/misc_editor.ex:448
#: lib/bds/tui.ex:726 #: lib/bds/tui.ex:193
#: lib/bds/tui.ex:199
#: lib/bds/tui.ex:210
#: lib/bds/tui.ex:654
#: lib/bds/tui.ex:962
#: lib/bds/ui/registry.ex:111 #: lib/bds/ui/registry.ex:111
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Metadata Diff" msgid "Metadata Diff"
@@ -1493,7 +1497,7 @@ msgstr ""
#: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/shell_live/sidebar_create.ex:41 #: lib/bds/desktop/shell_live/sidebar_create.ex:41
#: lib/bds/tui.ex:130 #: lib/bds/tui.ex:150
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Post" msgid "New Post"
msgstr "" msgstr ""
@@ -1782,7 +1786,7 @@ msgid "Open Settings"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:217 #: lib/bds/desktop/menu_bar.ex:217
#: lib/bds/tui.ex:750 #: lib/bds/tui.ex:986
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open in Browser" msgid "Open in Browser"
msgstr "" msgstr ""
@@ -1930,8 +1934,8 @@ msgstr ""
#: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/menu_bar.ex:233
#: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:664
#: lib/bds/desktop/shell_live/misc_editor.ex:761 #: lib/bds/desktop/shell_live/misc_editor.ex:761
#: lib/bds/tui.ex:599 #: lib/bds/tui.ex:835
#: lib/bds/tui.ex:610 #: lib/bds/tui.ex:846
#: lib/bds/ui/registry.ex:14 #: lib/bds/ui/registry.ex:14
#: lib/bds/ui/sidebar.ex:271 #: lib/bds/ui/sidebar.ex:271
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@@ -2055,14 +2059,14 @@ msgid "Ready to import:"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:248 #: lib/bds/desktop/menu_bar.ex:248
#: lib/bds/tui.ex:730 #: lib/bds/tui.ex:966
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rebuild Database" msgid "Rebuild Database"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/menu_bar.ex:250
#: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381
#: lib/bds/tui.ex:734 #: lib/bds/tui.ex:970
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rebuild Embedding Index" msgid "Rebuild Embedding Index"
msgstr "" msgstr ""
@@ -2120,7 +2124,7 @@ msgid "Refresh Translation"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:252 #: lib/bds/desktop/menu_bar.ex:252
#: lib/bds/tui.ex:737 #: lib/bds/tui.ex:973
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Regenerate Calendar" msgid "Regenerate Calendar"
msgstr "" msgstr ""
@@ -2131,7 +2135,7 @@ msgid "Regenerate Missing Thumbnails"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:249 #: lib/bds/desktop/menu_bar.ex:249
#: lib/bds/tui.ex:731 #: lib/bds/tui.ex:967
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reindex Text" msgid "Reindex Text"
msgstr "" msgstr ""
@@ -2317,7 +2321,7 @@ msgstr ""
#: lib/bds/desktop/shell_live/script_editor.ex:216 #: lib/bds/desktop/shell_live/script_editor.ex:216
#: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:219
#: lib/bds/desktop/shell_live/script_editor.ex:234 #: lib/bds/desktop/shell_live/script_editor.ex:234
#: lib/bds/tui.ex:602 #: lib/bds/tui.ex:838
#: lib/bds/ui/registry.ex:38 #: lib/bds/ui/registry.ex:38
#: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:63
#: lib/bds/ui/sidebar.ex:115 #: lib/bds/ui/sidebar.ex:115
@@ -2445,6 +2449,9 @@ msgid "Site"
msgstr "" msgstr ""
#: lib/bds/desktop/shell_live/misc_editor.ex:412 #: lib/bds/desktop/shell_live/misc_editor.ex:412
#: lib/bds/tui.ex:226
#: lib/bds/tui.ex:228
#: lib/bds/tui.ex:659
#: lib/bds/ui/registry.ex:125 #: lib/bds/ui/registry.ex:125
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Site Validation" msgid "Site Validation"
@@ -2565,7 +2572,7 @@ msgstr ""
#: lib/bds/desktop/shell_live/tags_editor.ex:222 #: lib/bds/desktop/shell_live/tags_editor.ex:222
#: lib/bds/desktop/shell_live/tags_editor.ex:253 #: lib/bds/desktop/shell_live/tags_editor.ex:253
#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11
#: lib/bds/tui.ex:603 #: lib/bds/tui.ex:839
#: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:54
#: lib/bds/ui/registry.ex:103 #: lib/bds/ui/registry.ex:103
#: lib/bds/ui/sidebar.ex:289 #: lib/bds/ui/sidebar.ex:289
@@ -2577,7 +2584,7 @@ msgstr ""
#: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live.ex:786
#: lib/bds/desktop/shell_live/panel_renderer.ex:54 #: lib/bds/desktop/shell_live/panel_renderer.ex:54
#: lib/bds/tui.ex:312 #: lib/bds/tui.ex:403
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tasks" msgid "Tasks"
msgstr "" msgstr ""
@@ -2622,7 +2629,7 @@ msgstr ""
#: lib/bds/desktop/shell_live/template_editor.ex:171 #: lib/bds/desktop/shell_live/template_editor.ex:171
#: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:176
#: lib/bds/desktop/shell_live/template_editor.ex:191 #: lib/bds/desktop/shell_live/template_editor.ex:191
#: lib/bds/tui.ex:601 #: lib/bds/tui.ex:837
#: lib/bds/ui/registry.ex:46 #: lib/bds/ui/registry.ex:46
#: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:71
#: lib/bds/ui/sidebar.ex:122 #: lib/bds/ui/sidebar.ex:122
@@ -2845,7 +2852,7 @@ msgid "Updated URLs"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:259 #: lib/bds/desktop/menu_bar.ex:259
#: lib/bds/tui.ex:749 #: lib/bds/tui.ex:985
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Upload Site" msgid "Upload Site"
msgstr "" msgstr ""
@@ -2873,13 +2880,13 @@ msgid "Validate"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:258 #: lib/bds/desktop/menu_bar.ex:258
#: lib/bds/tui.ex:727 #: lib/bds/tui.ex:963
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Validate Site" msgid "Validate Site"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:253 #: lib/bds/desktop/menu_bar.ex:253
#: lib/bds/tui.ex:740 #: lib/bds/tui.ex:976
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Validate Translations" msgid "Validate Translations"
msgstr "" msgstr ""
@@ -3544,7 +3551,7 @@ msgid "Suggested tags"
msgstr "" msgstr ""
#: lib/bds/desktop/menu_bar.ex:257 #: lib/bds/desktop/menu_bar.ex:257
#: lib/bds/tui.ex:728 #: lib/bds/tui.ex:964
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Force Render Site" msgid "Force Render Site"
msgstr "" msgstr ""
@@ -3641,82 +3648,82 @@ msgstr ""
msgid "The endpoint returned no models. You can still type a model name manually." msgid "The endpoint returned no models. You can still type a model name manually."
msgstr "" msgstr ""
#: lib/bds/tui.ex:687 #: lib/bds/tui.ex:923
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI is unavailable in airplane mode without a local endpoint." msgid "AI is unavailable in airplane mode without a local endpoint."
msgstr "" msgstr ""
#: lib/bds/tui.ex:811 #: lib/bds/tui.ex:1049
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Could not load this file." msgid "Could not load this file."
msgstr "" msgstr ""
#: lib/bds/tui.ex:138 #: lib/bds/tui.ex:158
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Editing this item is not available in the terminal UI yet." msgid "Editing this item is not available in the terminal UI yet."
msgstr "" msgstr ""
#: lib/bds/tui.ex:288 #: lib/bds/tui.ex:376
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No suggestions returned." msgid "No suggestions returned."
msgstr "" msgstr ""
#: lib/bds/tui.ex:808 #: lib/bds/tui.ex:1046
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only images can be previewed." msgid "Only images can be previewed."
msgstr "" msgstr ""
#: lib/bds/tui.ex:610 #: lib/bds/tui.ex:846
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Post not found." msgid "Post not found."
msgstr "" msgstr ""
#: lib/bds/tui.ex:379 #: lib/bds/tui.ex:505
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Press enter to preview %{name}." msgid "Press enter to preview %{name}."
msgstr "" msgstr ""
#: lib/bds/tui.ex:657 #: lib/bds/tui.ex:893
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Published." msgid "Published."
msgstr "" msgstr ""
#: lib/bds/tui.ex:673 #: lib/bds/tui.ex:909
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save before switching languages." msgid "Save before switching languages."
msgstr "" msgstr ""
#: lib/bds/tui.ex:658 #: lib/bds/tui.ex:894
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Saved." msgid "Saved."
msgstr "" msgstr ""
#: lib/bds/tui.ex:382 #: lib/bds/tui.ex:508
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Select an entry and press enter to open it." msgid "Select an entry and press enter to open it."
msgstr "" msgstr ""
#: lib/bds/tui.ex:285 #: lib/bds/tui.ex:373
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Suggestions applied." msgid "Suggestions applied."
msgstr "" msgstr ""
#: lib/bds/tui.ex:394 #: lib/bds/tui.ex:520
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (ctrl+t to edit)" msgid "Title (ctrl+t to edit)"
msgstr "" msgstr ""
#: lib/bds/tui.ex:393 #: lib/bds/tui.ex:519
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (editing — enter to confirm)" msgid "Title (editing — enter to confirm)"
msgstr "" msgstr ""
#: lib/bds/tui.ex:441 #: lib/bds/tui.ex:567
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Working…" msgid "Working…"
msgstr "" msgstr ""
#: lib/bds/tui.ex:462 #: lib/bds/tui.ex:589
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "esc to close" msgid "esc to close"
msgstr "" msgstr ""
@@ -3753,37 +3760,92 @@ msgstr ""
msgid "Use the form user@host or user@host:port." msgid "Use the form user@host or user@host:port."
msgstr "" msgstr ""
#: lib/bds/tui.ex:413 #: lib/bds/tui.ex:539
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Preview (ctrl+e to edit)" msgid "Preview (ctrl+e to edit)"
msgstr "" msgstr ""
#: lib/bds/tui.ex:512 #: lib/bds/tui.ex:748
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back"
msgstr "" msgstr ""
#: lib/bds/tui.ex:312 #: lib/bds/tui.ex:403
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All tasks finished." msgid "All tasks finished."
msgstr "" msgstr ""
#: lib/bds/tui.ex:488 #: lib/bds/tui.ex:615
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Commands — esc to close" msgid "Commands — esc to close"
msgstr "" msgstr ""
#: lib/bds/tui.ex:159 #: lib/bds/tui.ex:247
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unknown command." msgid "Unknown command."
msgstr "" msgstr ""
#: lib/bds/tui.ex:478 #: lib/bds/tui.ex:605
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "[report/apply in GUI]" msgid "[report/apply in GUI]"
msgstr "" msgstr ""
#: lib/bds/tui.ex:505 #: lib/bds/tui.ex:670
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "enter open · n new post · 1-5 views · : commands · ? help · r refresh · ctrl+q quit" msgid "%{diffs} differences · %{orphans} orphan files"
msgstr ""
#: lib/bds/tui.ex:702
#, elixir-autogen, elixir-format
msgid "Expected %{expected} · Existing %{existing}"
msgstr ""
#: lib/bds/tui.ex:719
#, elixir-autogen, elixir-format
msgid "Extra files (will be removed):"
msgstr ""
#: lib/bds/tui.ex:715
#, elixir-autogen, elixir-format
msgid "Missing pages (will be rendered):"
msgstr ""
#: lib/bds/tui.ex:226
#, elixir-autogen, elixir-format
msgid "Nothing to apply."
msgstr ""
#: lib/bds/tui.ex:193
#, elixir-autogen, elixir-format
msgid "Nothing to repair."
msgstr ""
#: lib/bds/tui.ex:693
#, elixir-autogen, elixir-format
msgid "Orphan files (not in database):"
msgstr ""
#: lib/bds/tui.ex:709
#, elixir-autogen, elixir-format
msgid "Sitemap changed."
msgstr ""
#: lib/bds/tui.ex:723
#, elixir-autogen, elixir-format
msgid "Updated posts (will be re-rendered):"
msgstr ""
#: lib/bds/tui.ex:660
#, elixir-autogen, elixir-format
msgid "enter apply changes · esc close"
msgstr ""
#: lib/bds/tui.ex:741
#, elixir-autogen, elixir-format
msgid "enter open · n new post · 1-5 views · : commands (:? help) · r refresh · ctrl+q quit"
msgstr ""
#: lib/bds/tui.ex:655
#, elixir-autogen, elixir-format
msgid "enter repair all from files · esc close"
msgstr "" msgstr ""

View File

@@ -20,6 +20,7 @@ surface TuiSurface {
TuiKeyPressed(code, modifiers) TuiKeyPressed(code, modifiers)
TuiEventReceived(entity, entity_id, action) TuiEventReceived(entity, entity_id, action)
TuiSettingsChanged(key) TuiSettingsChanged(key)
ShellTaskCompleted(route)
} }
rule SidebarNavigation { rule SidebarNavigation {
@@ -63,18 +64,32 @@ rule AiQuickAction {
} }
rule CommandPrompt { rule CommandPrompt {
when: TuiKeyPressed(code: ":" | "?") when: TuiKeyPressed(code: ":")
-- Vi-style prompt: ":" opens a filterable list of the parameterless -- Vi-style prompt: ":" opens a filterable list of the parameterless
-- Blog-menu shell commands (metadata diff, validate site, force -- Blog-menu shell commands (metadata diff, validate site, force
-- render, rebuilds, reindex, translations, duplicates, upload, -- render, rebuilds, reindex, translations, duplicates, upload,
-- browser preview URL) and runs the selection through the same -- browser preview URL) and runs the selection through the same
-- BDS.Desktop.ShellCommands backend as the GUI menu; "?" (or ":?") -- BDS.Desktop.ShellCommands backend as the GUI menu; typing ":?"
-- shows the same list as help. Commands whose report/apply follow-up -- shows the full list as help. Overlays clear the cells beneath
-- UI exists only in the GUI are marked so the user knows. Queued -- them. Commands whose follow-up UI is GUI-only (validate
-- tasks report progress in the status line until all tasks finish. -- translations, find duplicates) are marked. Queued tasks report
-- progress in the status line until all tasks finish.
ensures: CommandListShownOrExecuted() ensures: CommandListShownOrExecuted()
} }
rule ReportPanels {
when: ShellTaskCompleted(route: "metadata_diff" | "site_validation")
-- Completed metadata diff and site validation tasks open a
-- scrollable report panel showing the differences. Enter applies
-- the whole report — metadata diff repairs all items from the
-- filesystem (file → db) and imports orphan files; site validation
-- applies the full report incrementally (render missing, remove
-- extra, re-render updated), matching the GUI defaults. Esc closes
-- the report without applying. Reports completed before this
-- session started never pop up.
ensures: ReportShownThenAppliedOrCancelled()
}
rule MultiClientSync { rule MultiClientSync {
when: TuiEventReceived(entity, entity_id, action) when: TuiEventReceived(entity, entity_id, action)
-- Domain events refresh the sidebar; a post deleted elsewhere closes -- Domain events refresh the sidebar; a post deleted elsewhere closes

View File

@@ -169,8 +169,8 @@ defmodule BDS.TUITest do
parent = self() parent = self()
mount!( mount!(
command_executor: fn action -> command_executor: fn action, params ->
send(parent, {:executed, action}) send(parent, {:executed, action, params})
{:ok, %{kind: "output", title: "T", message: "done"}} {:ok, %{kind: "output", title: "T", message: "done"}}
end end
) )
@@ -185,9 +185,19 @@ defmodule BDS.TUITest do
assert text =~ "validate_site" assert text =~ "validate_site"
end end
test "'?' opens the command help list with GUI markers" do test "the palette clears the background underneath" do
state = mount_with_executor!() |> press("?") state = mount_with_executor!()
assert screen_text(state) =~ "Select an entry"
state = press(state, ":")
refute screen_text(state) =~ "Select an entry"
end
test "'?' alone does nothing; ':?' opens the command help with GUI markers" do
state = mount_with_executor!() |> press("?")
assert state.command == nil
state = state |> press(":") |> press("?")
assert state.command.help? assert state.command.help?
text = screen_text(state) text = screen_text(state)
assert text =~ "metadata_diff" assert text =~ "metadata_diff"
@@ -208,7 +218,7 @@ defmodule BDS.TUITest do
|> press("a") |> press("a")
|> press("enter") |> press("enter")
assert_receive {:executed, "metadata_diff"} assert_receive {:executed, "metadata_diff", %{}}
assert state.command == nil assert state.command == nil
assert state.status =~ "done" assert state.status =~ "done"
end end
@@ -216,7 +226,7 @@ defmodule BDS.TUITest do
test "up/down move the selection" do test "up/down move the selection" do
state = mount_with_executor!() |> press(":") |> press("down") |> press("enter") state = mount_with_executor!() |> press(":") |> press("down") |> press("enter")
assert_receive {:executed, action} assert_receive {:executed, action, %{}}
assert is_binary(action) assert is_binary(action)
end end
@@ -228,7 +238,7 @@ defmodule BDS.TUITest do
|> press("z") |> press("z")
|> press("enter") |> press("enter")
refute_receive {:executed, _action}, 50 refute_receive {:executed, _action, _params}, 50
assert state.command == nil assert state.command == nil
assert state.status != nil assert state.status != nil
end end
@@ -238,7 +248,7 @@ defmodule BDS.TUITest do
state = state =
mount!( mount!(
command_executor: fn action -> command_executor: fn action, _params ->
send(parent, {:executed, action}) send(parent, {:executed, action})
{:ok, %{kind: "task_queued", title: "Rebuild", message: "queued"}} {:ok, %{kind: "task_queued", title: "Rebuild", message: "queued"}}
end end
@@ -256,6 +266,147 @@ defmodule BDS.TUITest do
end end
end end
describe "report panels" do
defp diff_snapshot do
%{
running_task_message: nil,
tasks: [
%{
id: "task-diff",
status: :completed,
result: %{
kind: "open_editor",
route: "metadata_diff",
title: "Metadata Diff",
payload: %{
summary: %{diff_count: 1, orphan_count: 1},
diff_reports: [
%{
"entity_type" => "post",
"entity_id" => "p1",
"differences" => [
%{"name" => "title", "db_value" => "Old", "file_value" => "New"}
]
}
],
orphan_reports: [%{"file_path" => "posts/2026/07/lost.md"}]
}
}
}
]
}
end
defp validation_snapshot do
%{
running_task_message: nil,
tasks: [
%{
id: "task-validate",
status: :completed,
result: %{
kind: "open_editor",
route: "site_validation",
title: "Site Validation",
payload: %{
sitemap_path: "sitemap.xml",
sitemap_changed: true,
summary: %{
expected_count: 10,
existing_count: 8,
missing_count: 2,
extra_count: 1,
updated_count: 1
},
missing_url_paths: ["/2026/07/a/", "/2026/07/b/"],
extra_url_paths: ["/stale/"],
updated_post_url_paths: ["/2026/07/c/"],
expected_url_count: 10,
existing_html_url_count: 8
}
}
}
]
}
end
defp mount_for_report!(snapshot) do
parent = self()
state =
mount!(
command_executor: fn action, params ->
send(parent, {:executed, action, params})
{:ok, %{kind: "task_queued", title: "T", message: "queued"}}
end,
task_snapshot_fun: fn -> snapshot end,
# Pre-existing completed tasks must not pop up reports, so the
# tests hand the snapshot in only after mount via this switch.
initial_task_snapshot: %{running_task_message: nil, tasks: []}
)
{:noreply, state} = BDS.TUI.handle_info(:poll_tasks, %{state | task_polling: true})
state
end
test "a completed metadata diff task opens the report panel" do
state = mount_for_report!(diff_snapshot())
assert state.report.route == "metadata_diff"
text = screen_text(state)
assert text =~ "post p1"
assert text =~ "title"
assert text =~ "lost.md"
end
test "esc closes the report without applying" do
state = mount_for_report!(diff_snapshot()) |> press("esc")
assert state.report == nil
refute_receive {:executed, _action, _params}, 50
end
test "enter repairs all metadata diffs from files and imports orphans" do
state = mount_for_report!(diff_snapshot()) |> press("enter")
assert state.report == nil
assert_receive {:executed, "repair_metadata_diff", %{items: items, direction: "file_to_db"}}
assert [%{"entity_type" => "post", "entity_id" => "p1"} | _] = items
assert_receive {:executed, "import_metadata_diff_orphans", %{orphans: orphans}}
assert [%{"file_path" => "posts/2026/07/lost.md"}] = orphans
end
test "a completed site validation task opens the report and enter applies it" do
state = mount_for_report!(validation_snapshot())
assert state.report.route == "site_validation"
text = screen_text(state)
assert text =~ "/2026/07/a/"
assert text =~ "/stale/"
state = press(state, "enter")
assert state.report == nil
assert_receive {:executed, "apply_site_validation", %{report: report}}
assert report.missing_url_paths == ["/2026/07/a/", "/2026/07/b/"]
end
test "completed tasks from before mount never open a report" do
parent = self()
state =
mount!(
command_executor: fn action, params -> send(parent, {:executed, action, params}) end,
task_snapshot_fun: fn -> diff_snapshot() end
)
{:noreply, state} = BDS.TUI.handle_info(:poll_tasks, %{state | task_polling: true})
assert state.report == nil
end
end
test "local tui mode stops the VM when the app exits" do test "local tui mode stops the VM when the app exits" do
parent = self() parent = self()
state = mount!(stop_vm_on_exit: true, stop_fun: fn -> send(parent, :vm_stopped) end) state = mount!(stop_vm_on_exit: true, stop_fun: fn -> send(parent, :vm_stopped) end)