From 5433cb59acac5892a7f553c472455217e7051b7e Mon Sep 17 00:00:00 2001 From: Chili Palmer Date: Thu, 16 Jul 2026 21:59:59 +0200 Subject: [PATCH] feat: TUI git panel on key 7 with change list, scrollable diff, commit, pull and push (issue #30) --- lib/bds/tui.ex | 220 +++++++++++++++++++++++++++++- priv/gettext/de/LC_MESSAGES/ui.po | 207 +++++++++++++++++----------- priv/gettext/en/LC_MESSAGES/ui.po | 207 +++++++++++++++++----------- priv/gettext/es/LC_MESSAGES/ui.po | 207 +++++++++++++++++----------- priv/gettext/fr/LC_MESSAGES/ui.po | 207 +++++++++++++++++----------- priv/gettext/it/LC_MESSAGES/ui.po | 207 +++++++++++++++++----------- priv/gettext/ui.pot | 207 +++++++++++++++++----------- specs/tui.allium | 16 +++ test/bds/tui_test.exs | 139 +++++++++++++++++++ 9 files changed, 1122 insertions(+), 495 deletions(-) diff --git a/lib/bds/tui.ex b/lib/bds/tui.ex index 21ee57f..9237dbf 100644 --- a/lib/bds/tui.ex +++ b/lib/bds/tui.ex @@ -10,7 +10,10 @@ defmodule BDS.TUI do ## Keys Sidebar focus: `↑/↓`/`j/k` navigate, `enter` open, `n` new post, - `1..5` switch view (posts/media/templates/scripts/tags), `r` refresh, + `1..5` switch view (posts/media/templates/scripts/tags), `7` git panel + (changed files in the sidebar, scrollable whole-folder diff in the main + area; `c` commit all, `u` pull, `s` push, enter jumps the diff to the + selected file), `r` refresh, `p` projects overlay (switch the active project or open an existing blog folder by path, with bash-style tab completion — opening one queues a full database rebuild), `/` vi-style search that live-filters @@ -31,6 +34,7 @@ defmodule BDS.TUI do alias BDS.AI alias BDS.Desktop.UILocale alias BDS.Events + alias BDS.Git alias BDS.Posts alias BDS.Projects alias BDS.UI.PostEditor.{Draft, Metadata, Persistence} @@ -40,7 +44,9 @@ defmodule BDS.TUI do alias ExRatatui.Style alias ExRatatui.Widgets.{Block, Clear, List, Markdown, Paragraph, Tabs, Textarea} - @views ~w(posts media templates scripts tags) + @views ~w(posts media templates scripts tags git) + @git_diff_scroll_step 10 + @git_max_diff_lines 5000 # ── Mount ──────────────────────────────────────────────────────────────── @@ -63,6 +69,8 @@ defmodule BDS.TUI do projects: nil, search: nil, filters_by_view: %{}, + git: nil, + git_commit: nil, report: nil, handled_task_ids: nil, task_polling: false, @@ -122,6 +130,10 @@ defmodule BDS.TUI do when projects != nil, do: projects_key(key, state) + def handle_event(%ExRatatui.Event.Key{kind: "press"} = key, %{git_commit: git_commit} = state) + when git_commit != nil, + do: git_commit_key(key, state) + def handle_event(%ExRatatui.Event.Key{kind: "press"} = key, %{search: search} = state) when search != nil, do: search_key(key, state) @@ -151,6 +163,29 @@ defmodule BDS.TUI do {:noreply, load_sidebar(%{state | view: view, selected: 0, image: nil})} end + # Git is panel "7", matching the GUI panel numbering (issue #30). + defp sidebar_key(%{code: "7"}, state), + do: {:noreply, load_sidebar(%{state | view: "git", selected: 0, image: nil})} + + defp sidebar_key(%{code: "c"}, %{view: "git"} = state) do + if state.git do + {:noreply, %{state | git_commit: %{input: ""}}} + else + {:noreply, not_a_repo_toast(state)} + end + end + + defp sidebar_key(%{code: "u"}, %{view: "git"} = state), do: run_git_async(state, :pull) + defp sidebar_key(%{code: "s"}, %{view: "git"} = state), do: run_git_async(state, :push) + + defp sidebar_key(%{code: "pagedown"}, %{view: "git", git: git} = state) when git != nil do + max_scroll = max(length(git.lines) - 1, 0) + {:noreply, put_in(state.git.scroll, min(git.scroll + @git_diff_scroll_step, max_scroll))} + end + + defp sidebar_key(%{code: "pageup"}, %{view: "git", git: git} = state) when git != nil, + do: {:noreply, put_in(state.git.scroll, max(git.scroll - @git_diff_scroll_step, 0))} + defp sidebar_key(%{code: "r"}, state), do: {:noreply, load_sidebar(state)} defp sidebar_key(%{code: ":"}, state), @@ -191,6 +226,7 @@ defmodule BDS.TUI do case selected_item(state) do %{route: "post", id: post_id} -> {:noreply, open_post(state, post_id)} %{route: "media", id: media_id} -> {:noreply, open_media(state, media_id)} + %{route: "git_file", id: path} -> {:noreply, jump_to_file_diff(state, path)} %{id: _id} -> {:noreply, toast(state, view_label(state.view), dgettext("ui", "Editing this item is not available in the terminal UI yet."))} _other -> {:noreply, state} end @@ -269,6 +305,95 @@ defmodule BDS.TUI do defp apply_report(state, _report), do: state + # ── Events: git panel (issue #30) ───────────────────────────────────────── + + # Commit prompt in the status line, mirroring the search prompt: enter + # commits the whole working tree (git add -A + commit), esc cancels. + defp git_commit_key(%{code: "esc"}, state), do: {:noreply, %{state | git_commit: nil}} + + defp git_commit_key(%{code: "enter"}, %{git_commit: %{input: input}} = state) do + message = String.trim(input) + state = %{state | git_commit: nil} + + cond do + message == "" -> + {:noreply, + toast(state, dgettext("ui", "Commit"), dgettext("ui", "Commit message required."))} + + true -> + case Git.commit_all(state.project_id, message) do + {:ok, _result} -> + {:noreply, + state |> load_sidebar() |> toast(dgettext("ui", "Commit"), dgettext("ui", "Committed."))} + + {:error, reason} -> + {:noreply, toast(state, dgettext("ui", "Commit"), format_git_error(reason))} + end + end + end + + defp git_commit_key(%{code: "backspace"}, %{git_commit: git_commit} = state) do + {:noreply, + %{state | git_commit: %{git_commit | input: String.slice(git_commit.input, 0..-2//1)}}} + end + + defp git_commit_key(%{code: code, modifiers: []}, %{git_commit: git_commit} = state) + when byte_size(code) >= 1 do + if String.length(code) == 1 do + {:noreply, %{state | git_commit: %{git_commit | input: git_commit.input <> code}}} + else + {:noreply, state} + end + end + + defp git_commit_key(_key, state), do: {:noreply, state} + + # Pull and push hit the network, so they run off the UI process and + # report back via {:git_result, op, result}. + defp run_git_async(%{git: nil} = state, _operation), + do: {:noreply, not_a_repo_toast(state)} + + defp run_git_async(state, operation) do + parent = self() + project_id = state.project_id + + {:ok, _pid} = + Task.Supervisor.start_child(BDS.TCP.TaskSupervisor, fn -> + result = + case operation do + :pull -> Git.pull(project_id) + :push -> Git.push(project_id) + end + + send(parent, {:git_result, operation, result}) + end) + + {:noreply, %{state | busy: true}} + end + + defp not_a_repo_toast(state), + do: toast(state, view_label("git"), dgettext("ui", "Not a git repository.")) + + defp jump_to_file_diff(%{git: nil} = state, _path), do: state + + defp jump_to_file_diff(%{git: git} = state, path) do + index = + Enum.find_index(git.lines, fn line -> + String.starts_with?(line, "diff --git") and String.contains?(line, " b/" <> path) + end) + + case index do + nil -> + toast(state, view_label("git"), dgettext("ui", "No diff for this file.")) + + scroll -> + put_in(state.git.scroll, scroll) + end + end + + defp format_git_error({:git_failed, output}), do: output + defp format_git_error(reason), do: inspect(reason) + # ── Events: sidebar search (vi-style "/") ───────────────────────────────── # The prompt lives in the status line and filters the current view live @@ -669,6 +794,24 @@ defmodule BDS.TUI do {:noreply, toast(%{state | busy: false}, dgettext("ui", "AI Suggestions"), inspect(reason))} end + def handle_info({:git_result, operation, result}, state) do + title = + case operation do + :pull -> dgettext("ui", "Pull") + :push -> dgettext("ui", "Push") + end + + state = %{state | busy: false} + + case result do + {:ok, %{output: output}} -> + {:noreply, state |> load_sidebar() |> toast(title, first_output_line(output))} + + {:error, reason} -> + {:noreply, toast(state, title, format_git_error(reason))} + end + end + def handle_info(:poll_tasks, %{task_polling: true} = state) do snapshot = state.task_snapshot_fun.() state = open_completed_reports(state, snapshot) @@ -781,6 +924,11 @@ defmodule BDS.TUI do ] end + defp sidebar_title(%{view: "git", sidebar: %{git_state: "active"} = sidebar}) do + branch = sidebar[:branch] || "?" + view_label("git") <> " [#{branch} ↑#{sidebar[:ahead] || 0} ↓#{sidebar[:behind] || 0}]" + end + defp sidebar_title(state) do case Map.get(state.filters_by_view, state.view) do nil -> view_label(state.view) @@ -793,6 +941,27 @@ defmodule BDS.TUI do defp list_selected([], _selected), do: nil defp list_selected(items, selected), do: min(selected, length(items) - 1) + defp main_widgets(%{view: "git", editor: nil, git: nil}, rect) do + [ + {%Paragraph{ + text: dgettext("ui", "Not a git repository."), + block: %Block{title: view_label("git"), borders: [:all]} + }, rect} + ] + end + + defp main_widgets(%{view: "git", editor: nil, git: git}, rect) do + [ + {%List{ + items: git.lines, + selected: list_selected(git.lines, git.scroll), + scroll_padding: 2, + highlight_style: %Style{modifiers: [:bold]}, + block: %Block{title: dgettext("ui", "Diff (pgup/pgdn scroll)"), borders: [:all]} + }, rect} + ] + end + defp main_widgets(%{editor: nil} = state, rect) do text = case selected_item(state) do @@ -859,6 +1028,7 @@ defmodule BDS.TUI do defp status_widgets(state, rect) do text = cond do + state.git_commit -> dgettext("ui", "Commit message") <> ": " <> state.git_commit.input state.search -> "/" <> state.search.input state.busy -> dgettext("ui", "Working…") state.status -> state.status @@ -1116,6 +1286,13 @@ defmodule BDS.TUI do defp truncate(text) when byte_size(text) > 40, do: String.slice(text, 0, 40) <> "…" defp truncate(text), do: text + defp default_status(%{focus: :sidebar, view: "git"}), + do: + dgettext( + "ui", + "c commit · u pull · s push · enter jump to file · pgup/pgdn scroll diff · 1-5 views · ctrl+q quit" + ) + defp default_status(%{focus: :sidebar}), do: dgettext( @@ -1142,7 +1319,33 @@ defmodule BDS.TUI do _some -> seek_item(items, clamp(state.selected, length(items)), 1) end - %{state | sidebar: view, items: items, selected: selected} + %{state | sidebar: view, items: items, selected: selected, git: load_git_panel(state, view)} + end + + # The whole-folder diff (staged + unstaged) shown in the git panel's main + # area, reloaded together with the sidebar; the scroll position survives + # refreshes. Capped so a giant working tree cannot flood the terminal. + defp load_git_panel(%{view: "git"} = state, %{git_state: "active"}) do + lines = + case Git.diff(state.project_id) do + {:ok, %{staged_diff: staged, unstaged_diff: unstaged}} -> + case String.trim(staged <> "\n" <> unstaged) do + "" -> [dgettext("ui", "No changes.")] + diff -> diff |> String.split("\n") |> Enum.take(@git_max_diff_lines) + end + + _error -> + [] + end + + old_scroll = if state.git, do: state.git.scroll, else: 0 + %{lines: lines, scroll: min(old_scroll, max(length(lines) - 1, 0))} + end + + defp load_git_panel(_state, _view), do: nil + + defp first_output_line(output) do + output |> String.split("\n", parts: 2) |> hd() |> String.trim() end defp search_filter_params(state) do @@ -1152,6 +1355,16 @@ defmodule BDS.TUI do end end + # Git sidebar entries are the changed files from git status; enter jumps + # the diff panel to that file. + defp flatten_items(%{git_state: "active"} = view, "git") do + Enum.map(view.status_files, fn file -> + {:item, %{route: "git_file", id: file.path, label: "#{file.code} #{file.path}"}} + end) + end + + defp flatten_items(_view, "git"), do: [] + defp flatten_items(view, route) do sections = cond do @@ -1224,6 +1437,7 @@ defmodule BDS.TUI do defp view_label("templates"), do: dgettext("ui", "Templates") defp view_label("scripts"), do: dgettext("ui", "Scripts") defp view_label("tags"), do: dgettext("ui", "Tags") + defp view_label("git"), do: dgettext("ui", "Git") # ── Post editor ────────────────────────────────────────────────────────── diff --git a/priv/gettext/de/LC_MESSAGES/ui.po b/priv/gettext/de/LC_MESSAGES/ui.po index 608d74a..ccbe4b7 100644 --- a/priv/gettext/de/LC_MESSAGES/ui.po +++ b/priv/gettext/de/LC_MESSAGES/ui.po @@ -81,11 +81,11 @@ msgstr "KI-Einstellungen" #: 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_html/post_editor.html.heex:43 -#: lib/bds/tui.ex:655 -#: lib/bds/tui.ex:658 -#: lib/bds/tui.ex:661 -#: lib/bds/tui.ex:669 -#: lib/bds/tui.ex:1309 +#: lib/bds/tui.ex:780 +#: lib/bds/tui.ex:783 +#: lib/bds/tui.ex:786 +#: lib/bds/tui.ex:794 +#: lib/bds/tui.ex:1523 #, elixir-autogen, elixir-format msgid "AI Suggestions" msgstr "KI-Vorschlaege" @@ -572,7 +572,7 @@ msgid "Collapse unchanged diff hunks" msgstr "Unveränderte Diff-Blöcke einklappen" #: lib/bds/desktop/shell_live/overlay_manager.ex:422 -#: lib/bds/tui.ex:1405 +#: lib/bds/tui.ex:1619 #, elixir-autogen, elixir-format msgid "Command completed" 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/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 -#: lib/bds/tui.ex:845 +#: lib/bds/tui.ex:1014 #: lib/bds/ui/sidebar.ex:801 #, elixir-autogen, elixir-format msgid "Content" @@ -1030,7 +1030,7 @@ msgid "Filename" msgstr "Dateiname" #: lib/bds/desktop/menu_bar.ex:254 -#: lib/bds/tui.ex:1369 +#: lib/bds/tui.ex:1583 #, elixir-autogen, elixir-format msgid "Fill Missing Translations" msgstr "Fehlende Übersetzungen ergänzen" @@ -1041,7 +1041,7 @@ msgid "Find" msgstr "Suchen" #: lib/bds/desktop/menu_bar.ex:255 -#: lib/bds/tui.ex:1372 +#: lib/bds/tui.ex:1586 #, elixir-autogen, elixir-format msgid "Find Duplicate Posts" msgstr "Doppelte Beiträge finden" @@ -1068,13 +1068,14 @@ msgid "Gallery" msgstr "Galerie" #: lib/bds/desktop/menu_bar.ex:256 -#: lib/bds/tui.ex:1353 +#: lib/bds/tui.ex:1567 #, elixir-autogen, elixir-format msgid "Generate Site" msgstr "Website generieren" #: lib/bds/desktop/shell_live.ex:792 #: lib/bds/desktop/shell_live/socket_state.ex:109 +#: lib/bds/tui.ex:1440 #: lib/bds/ui/sidebar.ex:826 #, elixir-autogen, elixir-format msgid "Git" @@ -1389,9 +1390,9 @@ msgstr "Maximale Beiträge pro Seite" #: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175 -#: lib/bds/tui.ex:1223 -#: lib/bds/tui.ex:1434 -#: lib/bds/tui.ex:1437 +#: lib/bds/tui.ex:1436 +#: lib/bds/tui.ex:1648 +#: lib/bds/tui.ex:1651 #: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:100 #: lib/bds/ui/sidebar.ex:578 @@ -1434,11 +1435,11 @@ msgstr "Metadaten" #: 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:448 -#: lib/bds/tui.ex:229 -#: lib/bds/tui.ex:235 -#: lib/bds/tui.ex:246 -#: lib/bds/tui.ex:1034 -#: lib/bds/tui.ex:1350 +#: lib/bds/tui.ex:265 +#: lib/bds/tui.ex:271 +#: lib/bds/tui.ex:282 +#: lib/bds/tui.ex:1204 +#: lib/bds/tui.ex:1564 #: lib/bds/ui/registry.ex:111 #, elixir-autogen, elixir-format msgid "Metadata Diff" @@ -1484,7 +1485,7 @@ msgstr "Neue Seite" #: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/shell_live/sidebar_create.ex:41 -#: lib/bds/tui.ex:186 +#: lib/bds/tui.ex:221 #, elixir-autogen, elixir-format msgid "New Post" msgstr "Neuer Beitrag" @@ -1762,8 +1763,8 @@ msgid "Open Data Folder" msgstr "Datenordner öffnen" #: lib/bds/desktop/shell_live/index.html.heex:644 -#: lib/bds/tui.ex:507 -#: lib/bds/tui.ex:512 +#: lib/bds/tui.ex:632 +#: lib/bds/tui.ex:637 #, elixir-autogen, elixir-format msgid "Open Existing Blog" msgstr "Bestehenden Blog öffnen" @@ -1775,7 +1776,7 @@ msgid "Open Settings" msgstr "Einstellungen öffnen" #: lib/bds/desktop/menu_bar.ex:217 -#: lib/bds/tui.ex:1374 +#: lib/bds/tui.ex:1588 #, elixir-autogen, elixir-format msgid "Open in Browser" msgstr "Im Browser öffnen" @@ -1923,8 +1924,8 @@ msgstr "Beitrag gespeichert" #: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:761 -#: lib/bds/tui.ex:1222 -#: lib/bds/tui.ex:1233 +#: lib/bds/tui.ex:1435 +#: lib/bds/tui.ex:1447 #: lib/bds/ui/registry.ex:14 #: lib/bds/ui/sidebar.ex:271 #, elixir-autogen, elixir-format @@ -1983,8 +1984,8 @@ msgstr "Projekt und Veröffentlichung" #: lib/bds/desktop/shell_live/chat_surface.ex:15 #: lib/bds/desktop/shell_live/index.html.heex:623 -#: lib/bds/tui.ex:420 -#: lib/bds/tui.ex:425 +#: lib/bds/tui.ex:545 +#: lib/bds/tui.ex:550 #, elixir-autogen, elixir-format msgid "Projects" msgstr "Projekte" @@ -2050,15 +2051,15 @@ msgid "Ready to import:" msgstr "Bereit zum Import:" #: lib/bds/desktop/menu_bar.ex:248 -#: lib/bds/tui.ex:504 -#: lib/bds/tui.ex:1354 +#: lib/bds/tui.ex:629 +#: lib/bds/tui.ex:1568 #, elixir-autogen, elixir-format msgid "Rebuild Database" msgstr "Datenbank neu aufbauen" #: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 -#: lib/bds/tui.ex:1358 +#: lib/bds/tui.ex:1572 #, elixir-autogen, elixir-format msgid "Rebuild Embedding Index" msgstr "Embedding-Index neu aufbauen" @@ -2116,7 +2117,7 @@ msgid "Refresh Translation" msgstr "Übersetzung aktualisieren" #: lib/bds/desktop/menu_bar.ex:252 -#: lib/bds/tui.ex:1361 +#: lib/bds/tui.ex:1575 #, elixir-autogen, elixir-format msgid "Regenerate Calendar" msgstr "Kalender neu erzeugen" @@ -2127,7 +2128,7 @@ msgid "Regenerate Missing Thumbnails" msgstr "Fehlende Vorschaubilder neu erzeugen" #: lib/bds/desktop/menu_bar.ex:249 -#: lib/bds/tui.ex:1355 +#: lib/bds/tui.ex:1569 #, elixir-autogen, elixir-format msgid "Reindex Text" msgstr "Text neu indizieren" @@ -2313,7 +2314,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:219 #: lib/bds/desktop/shell_live/script_editor.ex:234 -#: lib/bds/tui.ex:1225 +#: lib/bds/tui.ex:1438 #: lib/bds/ui/registry.ex:38 #: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:115 @@ -2441,9 +2442,9 @@ msgid "Site" msgstr "Website" #: lib/bds/desktop/shell_live/misc_editor.ex:412 -#: lib/bds/tui.ex:262 -#: lib/bds/tui.ex:264 -#: lib/bds/tui.ex:1039 +#: lib/bds/tui.ex:298 +#: lib/bds/tui.ex:300 +#: lib/bds/tui.ex:1209 #: lib/bds/ui/registry.ex:125 #, elixir-autogen, elixir-format msgid "Site Validation" @@ -2564,7 +2565,7 @@ msgstr "Schlagwortname" #: 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_html/tags_editor.html.heex:11 -#: lib/bds/tui.ex:1226 +#: lib/bds/tui.ex:1439 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 #: lib/bds/ui/sidebar.ex:289 @@ -2576,7 +2577,7 @@ msgstr "Tags" #: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 -#: lib/bds/tui.ex:685 +#: lib/bds/tui.ex:828 #, elixir-autogen, elixir-format msgid "Tasks" msgstr "Aufgaben" @@ -2621,7 +2622,7 @@ msgstr "Template-Syntax ist gültig" #: 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:191 -#: lib/bds/tui.ex:1224 +#: lib/bds/tui.ex:1437 #: lib/bds/ui/registry.ex:46 #: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:122 @@ -2844,7 +2845,7 @@ msgid "Updated URLs" msgstr "Aktualisierte URLs" #: lib/bds/desktop/menu_bar.ex:259 -#: lib/bds/tui.ex:1373 +#: lib/bds/tui.ex:1587 #, elixir-autogen, elixir-format msgid "Upload Site" msgstr "Website hochladen" @@ -2872,13 +2873,13 @@ msgid "Validate" msgstr "Validieren" #: lib/bds/desktop/menu_bar.ex:258 -#: lib/bds/tui.ex:1351 +#: lib/bds/tui.ex:1565 #, elixir-autogen, elixir-format msgid "Validate Site" msgstr "Website validieren" #: lib/bds/desktop/menu_bar.ex:253 -#: lib/bds/tui.ex:1364 +#: lib/bds/tui.ex:1578 #, elixir-autogen, elixir-format msgid "Validate Translations" msgstr "Übersetzungen validieren" @@ -3349,11 +3350,15 @@ msgstr "Änderungen" #: lib/bds/desktop/shell_live/git_handler.ex:46 #: lib/bds/desktop/shell_live/git_handler.ex:52 #: lib/bds/desktop/shell_live/sidebar_components.ex:556 +#: lib/bds/tui.ex:321 +#: lib/bds/tui.ex:327 +#: lib/bds/tui.ex:330 #, elixir-autogen, elixir-format msgid "Commit" msgstr "Commit" #: lib/bds/desktop/shell_live/sidebar_components.ex:555 +#: lib/bds/tui.ex:1031 #, elixir-autogen, elixir-format msgid "Commit message" msgstr "Commit-Nachricht" @@ -3424,6 +3429,7 @@ msgstr "LFS bereinigen" #: lib/bds/desktop/shell_live/git_handler.ex:17 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 +#: lib/bds/tui.ex:800 #, elixir-autogen, elixir-format msgid "Pull" msgstr "Pull" @@ -3431,6 +3437,7 @@ msgstr "Pull" #: lib/bds/desktop/shell_live/git_handler.ex:18 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 +#: lib/bds/tui.ex:801 #, elixir-autogen, elixir-format msgid "Push" msgstr "Push" @@ -3543,7 +3550,7 @@ msgid "Suggested tags" msgstr "Vorgeschlagene Tags" #: lib/bds/desktop/menu_bar.ex:257 -#: lib/bds/tui.ex:1352 +#: lib/bds/tui.ex:1566 #, elixir-autogen, elixir-format msgid "Force Render Site" msgstr "Website vollständig neu generieren" @@ -3640,82 +3647,82 @@ msgstr "OK" 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." -#: lib/bds/tui.ex:1310 +#: lib/bds/tui.ex:1524 #, elixir-autogen, elixir-format msgid "AI is unavailable in airplane mode without a local endpoint." msgstr "KI ist im Flugmodus ohne lokalen Endpunkt nicht verfügbar." -#: lib/bds/tui.ex:1437 +#: lib/bds/tui.ex:1651 #, elixir-autogen, elixir-format msgid "Could not load this file." msgstr "Diese Datei konnte nicht geladen werden." -#: lib/bds/tui.ex:194 +#: lib/bds/tui.ex:230 #, elixir-autogen, elixir-format 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." -#: lib/bds/tui.ex:658 +#: lib/bds/tui.ex:783 #, elixir-autogen, elixir-format msgid "No suggestions returned." msgstr "Keine Vorschläge erhalten." -#: lib/bds/tui.ex:1434 +#: lib/bds/tui.ex:1648 #, elixir-autogen, elixir-format msgid "Only images can be previewed." msgstr "Nur Bilder können in der Vorschau angezeigt werden." -#: lib/bds/tui.ex:1233 +#: lib/bds/tui.ex:1447 #, elixir-autogen, elixir-format msgid "Post not found." msgstr "Beitrag nicht gefunden." -#: lib/bds/tui.ex:800 +#: lib/bds/tui.ex:969 #, elixir-autogen, elixir-format msgid "Press enter to preview %{name}." msgstr "Drücken Sie Enter, um %{name} in der Vorschau anzuzeigen." -#: lib/bds/tui.ex:1280 +#: lib/bds/tui.ex:1494 #, elixir-autogen, elixir-format msgid "Published." msgstr "Veröffentlicht." -#: lib/bds/tui.ex:1296 +#: lib/bds/tui.ex:1510 #, elixir-autogen, elixir-format msgid "Save before switching languages." msgstr "Speichern Sie vor dem Sprachwechsel." -#: lib/bds/tui.ex:1281 +#: lib/bds/tui.ex:1495 #, elixir-autogen, elixir-format msgid "Saved." msgstr "Gespeichert." -#: lib/bds/tui.ex:803 +#: lib/bds/tui.ex:972 #, elixir-autogen, elixir-format msgid "Select an entry and press enter to open it." msgstr "Wählen Sie einen Eintrag aus und öffnen Sie ihn mit Enter." -#: lib/bds/tui.ex:655 +#: lib/bds/tui.ex:780 #, elixir-autogen, elixir-format msgid "Suggestions applied." msgstr "Vorschläge übernommen." -#: lib/bds/tui.ex:815 +#: lib/bds/tui.ex:984 #, elixir-autogen, elixir-format msgid "Title (ctrl+t to edit)" msgstr "Titel (Strg+T zum Bearbeiten)" -#: lib/bds/tui.ex:814 +#: lib/bds/tui.ex:983 #, elixir-autogen, elixir-format msgid "Title (editing — enter to confirm)" msgstr "Titel (Bearbeitung — Enter zum Bestätigen)" -#: lib/bds/tui.ex:863 +#: lib/bds/tui.ex:1033 #, elixir-autogen, elixir-format msgid "Working…" msgstr "Wird bearbeitet…" -#: lib/bds/tui.ex:885 +#: lib/bds/tui.ex:1055 #, elixir-autogen, elixir-format msgid "esc to close" msgstr "Esc zum Schließen" @@ -3752,122 +3759,158 @@ msgstr "Serveradresse (user@host oder user@host:port), Public-Key-Authentifizier msgid "Use the form user@host or user@host:port." msgstr "Verwenden Sie das Format user@host oder user@host:port." -#: lib/bds/tui.ex:834 +#: lib/bds/tui.ex:1003 #, elixir-autogen, elixir-format msgid "Preview (ctrl+e to edit)" msgstr "Vorschau (ctrl+e zum Bearbeiten)" -#: lib/bds/tui.ex:1128 +#: lib/bds/tui.ex:1305 #, 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" 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:685 +#: lib/bds/tui.ex:828 #, elixir-autogen, elixir-format msgid "All tasks finished." msgstr "Alle Aufgaben abgeschlossen." -#: lib/bds/tui.ex:911 +#: lib/bds/tui.ex:1081 #, elixir-autogen, elixir-format msgid "Commands — esc to close" msgstr "Befehle — Esc zum Schließen" -#: lib/bds/tui.ex:529 +#: lib/bds/tui.ex:654 #, elixir-autogen, elixir-format msgid "Unknown command." msgstr "Unbekannter Befehl." -#: lib/bds/tui.ex:901 +#: lib/bds/tui.ex:1071 #, elixir-autogen, elixir-format msgid "[report/apply in GUI]" msgstr "[Bericht/Anwenden in der GUI]" -#: lib/bds/tui.ex:1050 +#: lib/bds/tui.ex:1220 #, elixir-autogen, elixir-format msgid "%{diffs} differences · %{orphans} orphan files" msgstr "%{diffs} Unterschiede · %{orphans} verwaiste Dateien" -#: lib/bds/tui.ex:1082 +#: lib/bds/tui.ex:1252 #, elixir-autogen, elixir-format msgid "Expected %{expected} · Existing %{existing}" msgstr "Erwartet %{expected} · Vorhanden %{existing}" -#: lib/bds/tui.ex:1099 +#: lib/bds/tui.ex:1269 #, elixir-autogen, elixir-format msgid "Extra files (will be removed):" msgstr "Überzählige Dateien (werden entfernt):" -#: lib/bds/tui.ex:1095 +#: lib/bds/tui.ex:1265 #, elixir-autogen, elixir-format msgid "Missing pages (will be rendered):" msgstr "Fehlende Seiten (werden gerendert):" -#: lib/bds/tui.ex:262 +#: lib/bds/tui.ex:298 #, elixir-autogen, elixir-format msgid "Nothing to apply." msgstr "Nichts anzuwenden." -#: lib/bds/tui.ex:229 +#: lib/bds/tui.ex:265 #, elixir-autogen, elixir-format msgid "Nothing to repair." msgstr "Nichts zu reparieren." -#: lib/bds/tui.ex:1073 +#: lib/bds/tui.ex:1243 #, elixir-autogen, elixir-format msgid "Orphan files (not in database):" msgstr "Verwaiste Dateien (nicht in der Datenbank):" -#: lib/bds/tui.ex:1089 +#: lib/bds/tui.ex:1259 #, elixir-autogen, elixir-format msgid "Sitemap changed." msgstr "Sitemap geändert." -#: lib/bds/tui.ex:1103 +#: lib/bds/tui.ex:1273 #, elixir-autogen, elixir-format msgid "Updated posts (will be re-rendered):" msgstr "Aktualisierte Beiträge (werden neu gerendert):" -#: lib/bds/tui.ex:1040 +#: lib/bds/tui.ex:1210 #, elixir-autogen, elixir-format msgid "enter apply changes · esc close" msgstr "Enter Änderungen anwenden · Esc Schließen" -#: lib/bds/tui.ex:1035 +#: lib/bds/tui.ex:1205 #, elixir-autogen, elixir-format msgid "enter repair all from files · esc close" msgstr "Enter alles aus Dateien reparieren · Esc Schließen" -#: lib/bds/tui.ex:494 +#: lib/bds/tui.ex:619 #, elixir-autogen, elixir-format msgid "Imported Blog" msgstr "Importierter Blog" -#: lib/bds/tui.ex:513 +#: lib/bds/tui.ex:638 #, elixir-autogen, elixir-format msgid "Not a folder: %{path}" msgstr "Kein Ordner: %{path}" -#: lib/bds/tui.ex:977 +#: lib/bds/tui.ex:1147 #, elixir-autogen, elixir-format msgid "Projects — enter switch · o open existing · esc close" msgstr "Projekte — Enter Wechseln · O Bestehenden öffnen · Esc Schließen" -#: lib/bds/tui.ex:421 +#: lib/bds/tui.ex:546 #, elixir-autogen, elixir-format msgid "Switched to %{name}." msgstr "Zu %{name} gewechselt." -#: lib/bds/tui.ex:1005 +#: lib/bds/tui.ex:1175 #, elixir-autogen, elixir-format msgid "Matching folders" msgstr "Passende Ordner" -#: lib/bds/tui.ex:943 +#: lib/bds/tui.ex:1113 #, elixir-autogen, elixir-format msgid "Open Existing Blog — type a folder path · tab complete · enter open · esc back" msgstr "Bestehenden Blog öffnen — Ordnerpfad eingeben · Tab Vervollständigen · Enter Öffnen · Esc Zurück" -#: lib/bds/tui.ex:1121 +#: lib/bds/tui.ex:1298 #, elixir-autogen, elixir-format msgid "enter open · n new post · 1-5 views · p projects · / search · : commands (:? help) · r refresh · ctrl+q quit" msgstr "Enter Öffnen · N Neuer Beitrag · 1-5 Ansichten · P Projekte · / Suche · : Befehle (:? Hilfe) · R Aktualisieren · Strg+Q Beenden" + +#: lib/bds/tui.ex:321 +#, elixir-autogen, elixir-format +msgid "Commit message required." +msgstr "Commit-Nachricht erforderlich." + +#: lib/bds/tui.ex:327 +#, elixir-autogen, elixir-format +msgid "Committed." +msgstr "Commit erstellt." + +#: lib/bds/tui.ex:960 +#, elixir-autogen, elixir-format +msgid "Diff (pgup/pgdn scroll)" +msgstr "Diff (Bild↑/Bild↓ blättern)" + +#: lib/bds/tui.ex:1333 +#, elixir-autogen, elixir-format +msgid "No changes." +msgstr "Keine Änderungen." + +#: lib/bds/tui.ex:387 +#, elixir-autogen, elixir-format +msgid "No diff for this file." +msgstr "Kein Diff für diese Datei." + +#: lib/bds/tui.ex:375 +#: lib/bds/tui.ex:947 +#, elixir-autogen, elixir-format +msgid "Not a git repository." +msgstr "Kein Git-Repository." + +#: lib/bds/tui.ex:1291 +#, elixir-autogen, elixir-format +msgid "c commit · u pull · s push · enter jump to file · pgup/pgdn scroll diff · 1-5 views · ctrl+q quit" +msgstr "C Commit · U Pull · S Push · Enter Zur Datei springen · Bild↑/Bild↓ Diff blättern · 1-5 Ansichten · Strg+Q Beenden" diff --git a/priv/gettext/en/LC_MESSAGES/ui.po b/priv/gettext/en/LC_MESSAGES/ui.po index 5c83c74..1ced0ab 100644 --- a/priv/gettext/en/LC_MESSAGES/ui.po +++ b/priv/gettext/en/LC_MESSAGES/ui.po @@ -81,11 +81,11 @@ msgstr "" #: 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_html/post_editor.html.heex:43 -#: lib/bds/tui.ex:655 -#: lib/bds/tui.ex:658 -#: lib/bds/tui.ex:661 -#: lib/bds/tui.ex:669 -#: lib/bds/tui.ex:1309 +#: lib/bds/tui.ex:780 +#: lib/bds/tui.ex:783 +#: lib/bds/tui.ex:786 +#: lib/bds/tui.ex:794 +#: lib/bds/tui.ex:1523 #, elixir-autogen, elixir-format msgid "AI Suggestions" msgstr "" @@ -572,7 +572,7 @@ msgid "Collapse unchanged diff hunks" msgstr "" #: lib/bds/desktop/shell_live/overlay_manager.ex:422 -#: lib/bds/tui.ex:1405 +#: lib/bds/tui.ex:1619 #, elixir-autogen, elixir-format msgid "Command completed" msgstr "" @@ -590,7 +590,7 @@ msgstr "" #: 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/template_editor_html/template_editor.html.heex:32 -#: lib/bds/tui.ex:845 +#: lib/bds/tui.ex:1014 #: lib/bds/ui/sidebar.ex:801 #, elixir-autogen, elixir-format msgid "Content" @@ -1030,7 +1030,7 @@ msgid "Filename" msgstr "" #: lib/bds/desktop/menu_bar.ex:254 -#: lib/bds/tui.ex:1369 +#: lib/bds/tui.ex:1583 #, elixir-autogen, elixir-format msgid "Fill Missing Translations" msgstr "" @@ -1041,7 +1041,7 @@ msgid "Find" msgstr "" #: lib/bds/desktop/menu_bar.ex:255 -#: lib/bds/tui.ex:1372 +#: lib/bds/tui.ex:1586 #, elixir-autogen, elixir-format msgid "Find Duplicate Posts" msgstr "" @@ -1068,13 +1068,14 @@ msgid "Gallery" msgstr "" #: lib/bds/desktop/menu_bar.ex:256 -#: lib/bds/tui.ex:1353 +#: lib/bds/tui.ex:1567 #, elixir-autogen, elixir-format msgid "Generate Site" msgstr "" #: lib/bds/desktop/shell_live.ex:792 #: lib/bds/desktop/shell_live/socket_state.ex:109 +#: lib/bds/tui.ex:1440 #: lib/bds/ui/sidebar.ex:826 #, elixir-autogen, elixir-format msgid "Git" @@ -1389,9 +1390,9 @@ msgstr "" #: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175 -#: lib/bds/tui.ex:1223 -#: lib/bds/tui.ex:1434 -#: lib/bds/tui.ex:1437 +#: lib/bds/tui.ex:1436 +#: lib/bds/tui.ex:1648 +#: lib/bds/tui.ex:1651 #: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:100 #: lib/bds/ui/sidebar.ex:578 @@ -1434,11 +1435,11 @@ msgstr "" #: 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:448 -#: lib/bds/tui.ex:229 -#: lib/bds/tui.ex:235 -#: lib/bds/tui.ex:246 -#: lib/bds/tui.ex:1034 -#: lib/bds/tui.ex:1350 +#: lib/bds/tui.ex:265 +#: lib/bds/tui.ex:271 +#: lib/bds/tui.ex:282 +#: lib/bds/tui.ex:1204 +#: lib/bds/tui.ex:1564 #: lib/bds/ui/registry.ex:111 #, elixir-autogen, elixir-format msgid "Metadata Diff" @@ -1484,7 +1485,7 @@ msgstr "" #: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/shell_live/sidebar_create.ex:41 -#: lib/bds/tui.ex:186 +#: lib/bds/tui.ex:221 #, elixir-autogen, elixir-format msgid "New Post" msgstr "" @@ -1762,8 +1763,8 @@ msgid "Open Data Folder" msgstr "" #: lib/bds/desktop/shell_live/index.html.heex:644 -#: lib/bds/tui.ex:507 -#: lib/bds/tui.ex:512 +#: lib/bds/tui.ex:632 +#: lib/bds/tui.ex:637 #, elixir-autogen, elixir-format msgid "Open Existing Blog" msgstr "" @@ -1775,7 +1776,7 @@ msgid "Open Settings" msgstr "" #: lib/bds/desktop/menu_bar.ex:217 -#: lib/bds/tui.ex:1374 +#: lib/bds/tui.ex:1588 #, elixir-autogen, elixir-format msgid "Open in Browser" msgstr "" @@ -1923,8 +1924,8 @@ msgstr "" #: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:761 -#: lib/bds/tui.ex:1222 -#: lib/bds/tui.ex:1233 +#: lib/bds/tui.ex:1435 +#: lib/bds/tui.ex:1447 #: lib/bds/ui/registry.ex:14 #: lib/bds/ui/sidebar.ex:271 #, elixir-autogen, elixir-format @@ -1983,8 +1984,8 @@ msgstr "" #: lib/bds/desktop/shell_live/chat_surface.ex:15 #: lib/bds/desktop/shell_live/index.html.heex:623 -#: lib/bds/tui.ex:420 -#: lib/bds/tui.ex:425 +#: lib/bds/tui.ex:545 +#: lib/bds/tui.ex:550 #, elixir-autogen, elixir-format msgid "Projects" msgstr "" @@ -2050,15 +2051,15 @@ msgid "Ready to import:" msgstr "" #: lib/bds/desktop/menu_bar.ex:248 -#: lib/bds/tui.ex:504 -#: lib/bds/tui.ex:1354 +#: lib/bds/tui.ex:629 +#: lib/bds/tui.ex:1568 #, elixir-autogen, elixir-format msgid "Rebuild Database" msgstr "" #: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 -#: lib/bds/tui.ex:1358 +#: lib/bds/tui.ex:1572 #, elixir-autogen, elixir-format msgid "Rebuild Embedding Index" msgstr "" @@ -2116,7 +2117,7 @@ msgid "Refresh Translation" msgstr "" #: lib/bds/desktop/menu_bar.ex:252 -#: lib/bds/tui.ex:1361 +#: lib/bds/tui.ex:1575 #, elixir-autogen, elixir-format msgid "Regenerate Calendar" msgstr "" @@ -2127,7 +2128,7 @@ msgid "Regenerate Missing Thumbnails" msgstr "" #: lib/bds/desktop/menu_bar.ex:249 -#: lib/bds/tui.ex:1355 +#: lib/bds/tui.ex:1569 #, elixir-autogen, elixir-format msgid "Reindex Text" msgstr "" @@ -2313,7 +2314,7 @@ msgstr "" #: 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:234 -#: lib/bds/tui.ex:1225 +#: lib/bds/tui.ex:1438 #: lib/bds/ui/registry.ex:38 #: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:115 @@ -2441,9 +2442,9 @@ msgid "Site" msgstr "" #: lib/bds/desktop/shell_live/misc_editor.ex:412 -#: lib/bds/tui.ex:262 -#: lib/bds/tui.ex:264 -#: lib/bds/tui.ex:1039 +#: lib/bds/tui.ex:298 +#: lib/bds/tui.ex:300 +#: lib/bds/tui.ex:1209 #: lib/bds/ui/registry.ex:125 #, elixir-autogen, elixir-format msgid "Site Validation" @@ -2564,7 +2565,7 @@ msgstr "" #: 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_html/tags_editor.html.heex:11 -#: lib/bds/tui.ex:1226 +#: lib/bds/tui.ex:1439 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 #: lib/bds/ui/sidebar.ex:289 @@ -2576,7 +2577,7 @@ msgstr "" #: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 -#: lib/bds/tui.ex:685 +#: lib/bds/tui.ex:828 #, elixir-autogen, elixir-format msgid "Tasks" msgstr "" @@ -2621,7 +2622,7 @@ msgstr "" #: 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:191 -#: lib/bds/tui.ex:1224 +#: lib/bds/tui.ex:1437 #: lib/bds/ui/registry.ex:46 #: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:122 @@ -2844,7 +2845,7 @@ msgid "Updated URLs" msgstr "" #: lib/bds/desktop/menu_bar.ex:259 -#: lib/bds/tui.ex:1373 +#: lib/bds/tui.ex:1587 #, elixir-autogen, elixir-format msgid "Upload Site" msgstr "" @@ -2872,13 +2873,13 @@ msgid "Validate" msgstr "" #: lib/bds/desktop/menu_bar.ex:258 -#: lib/bds/tui.ex:1351 +#: lib/bds/tui.ex:1565 #, elixir-autogen, elixir-format msgid "Validate Site" msgstr "" #: lib/bds/desktop/menu_bar.ex:253 -#: lib/bds/tui.ex:1364 +#: lib/bds/tui.ex:1578 #, elixir-autogen, elixir-format msgid "Validate Translations" msgstr "" @@ -3349,11 +3350,15 @@ msgstr "" #: lib/bds/desktop/shell_live/git_handler.ex:46 #: lib/bds/desktop/shell_live/git_handler.ex:52 #: lib/bds/desktop/shell_live/sidebar_components.ex:556 +#: lib/bds/tui.ex:321 +#: lib/bds/tui.ex:327 +#: lib/bds/tui.ex:330 #, elixir-autogen, elixir-format msgid "Commit" msgstr "" #: lib/bds/desktop/shell_live/sidebar_components.ex:555 +#: lib/bds/tui.ex:1031 #, elixir-autogen, elixir-format msgid "Commit message" msgstr "" @@ -3424,6 +3429,7 @@ msgstr "" #: lib/bds/desktop/shell_live/git_handler.ex:17 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 +#: lib/bds/tui.ex:800 #, elixir-autogen, elixir-format msgid "Pull" msgstr "" @@ -3431,6 +3437,7 @@ msgstr "" #: lib/bds/desktop/shell_live/git_handler.ex:18 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 +#: lib/bds/tui.ex:801 #, elixir-autogen, elixir-format, fuzzy msgid "Push" msgstr "" @@ -3543,7 +3550,7 @@ msgid "Suggested tags" msgstr "" #: lib/bds/desktop/menu_bar.ex:257 -#: lib/bds/tui.ex:1352 +#: lib/bds/tui.ex:1566 #, elixir-autogen, elixir-format msgid "Force Render Site" msgstr "" @@ -3640,82 +3647,82 @@ msgstr "" msgid "The endpoint returned no models. You can still type a model name manually." msgstr "" -#: lib/bds/tui.ex:1310 +#: lib/bds/tui.ex:1524 #, elixir-autogen, elixir-format msgid "AI is unavailable in airplane mode without a local endpoint." msgstr "" -#: lib/bds/tui.ex:1437 +#: lib/bds/tui.ex:1651 #, elixir-autogen, elixir-format, fuzzy msgid "Could not load this file." msgstr "" -#: lib/bds/tui.ex:194 +#: lib/bds/tui.ex:230 #, elixir-autogen, elixir-format msgid "Editing this item is not available in the terminal UI yet." msgstr "" -#: lib/bds/tui.ex:658 +#: lib/bds/tui.ex:783 #, elixir-autogen, elixir-format msgid "No suggestions returned." msgstr "" -#: lib/bds/tui.ex:1434 +#: lib/bds/tui.ex:1648 #, elixir-autogen, elixir-format msgid "Only images can be previewed." msgstr "" -#: lib/bds/tui.ex:1233 +#: lib/bds/tui.ex:1447 #, elixir-autogen, elixir-format msgid "Post not found." msgstr "" -#: lib/bds/tui.ex:800 +#: lib/bds/tui.ex:969 #, elixir-autogen, elixir-format msgid "Press enter to preview %{name}." msgstr "" -#: lib/bds/tui.ex:1280 +#: lib/bds/tui.ex:1494 #, elixir-autogen, elixir-format, fuzzy msgid "Published." msgstr "" -#: lib/bds/tui.ex:1296 +#: lib/bds/tui.ex:1510 #, elixir-autogen, elixir-format msgid "Save before switching languages." msgstr "" -#: lib/bds/tui.ex:1281 +#: lib/bds/tui.ex:1495 #, elixir-autogen, elixir-format, fuzzy msgid "Saved." msgstr "" -#: lib/bds/tui.ex:803 +#: lib/bds/tui.ex:972 #, elixir-autogen, elixir-format msgid "Select an entry and press enter to open it." msgstr "" -#: lib/bds/tui.ex:655 +#: lib/bds/tui.ex:780 #, elixir-autogen, elixir-format msgid "Suggestions applied." msgstr "" -#: lib/bds/tui.ex:815 +#: lib/bds/tui.ex:984 #, elixir-autogen, elixir-format msgid "Title (ctrl+t to edit)" msgstr "" -#: lib/bds/tui.ex:814 +#: lib/bds/tui.ex:983 #, elixir-autogen, elixir-format msgid "Title (editing — enter to confirm)" msgstr "" -#: lib/bds/tui.ex:863 +#: lib/bds/tui.ex:1033 #, elixir-autogen, elixir-format, fuzzy msgid "Working…" msgstr "" -#: lib/bds/tui.ex:885 +#: lib/bds/tui.ex:1055 #, elixir-autogen, elixir-format msgid "esc to close" msgstr "" @@ -3752,122 +3759,158 @@ msgstr "" msgid "Use the form user@host or user@host:port." msgstr "" -#: lib/bds/tui.ex:834 +#: lib/bds/tui.ex:1003 #, elixir-autogen, elixir-format msgid "Preview (ctrl+e to edit)" msgstr "" -#: lib/bds/tui.ex:1128 +#: lib/bds/tui.ex:1305 #, 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" msgstr "" -#: lib/bds/tui.ex:685 +#: lib/bds/tui.ex:828 #, elixir-autogen, elixir-format msgid "All tasks finished." msgstr "" -#: lib/bds/tui.ex:911 +#: lib/bds/tui.ex:1081 #, elixir-autogen, elixir-format msgid "Commands — esc to close" msgstr "" -#: lib/bds/tui.ex:529 +#: lib/bds/tui.ex:654 #, elixir-autogen, elixir-format, fuzzy msgid "Unknown command." msgstr "" -#: lib/bds/tui.ex:901 +#: lib/bds/tui.ex:1071 #, elixir-autogen, elixir-format msgid "[report/apply in GUI]" msgstr "" -#: lib/bds/tui.ex:1050 +#: lib/bds/tui.ex:1220 #, elixir-autogen, elixir-format msgid "%{diffs} differences · %{orphans} orphan files" msgstr "" -#: lib/bds/tui.ex:1082 +#: lib/bds/tui.ex:1252 #, elixir-autogen, elixir-format msgid "Expected %{expected} · Existing %{existing}" msgstr "" -#: lib/bds/tui.ex:1099 +#: lib/bds/tui.ex:1269 #, elixir-autogen, elixir-format msgid "Extra files (will be removed):" msgstr "" -#: lib/bds/tui.ex:1095 +#: lib/bds/tui.ex:1265 #, elixir-autogen, elixir-format msgid "Missing pages (will be rendered):" msgstr "" -#: lib/bds/tui.ex:262 +#: lib/bds/tui.ex:298 #, elixir-autogen, elixir-format, fuzzy msgid "Nothing to apply." msgstr "" -#: lib/bds/tui.ex:229 +#: lib/bds/tui.ex:265 #, elixir-autogen, elixir-format, fuzzy msgid "Nothing to repair." msgstr "" -#: lib/bds/tui.ex:1073 +#: lib/bds/tui.ex:1243 #, elixir-autogen, elixir-format msgid "Orphan files (not in database):" msgstr "" -#: lib/bds/tui.ex:1089 +#: lib/bds/tui.ex:1259 #, elixir-autogen, elixir-format msgid "Sitemap changed." msgstr "" -#: lib/bds/tui.ex:1103 +#: lib/bds/tui.ex:1273 #, elixir-autogen, elixir-format msgid "Updated posts (will be re-rendered):" msgstr "" -#: lib/bds/tui.ex:1040 +#: lib/bds/tui.ex:1210 #, elixir-autogen, elixir-format msgid "enter apply changes · esc close" msgstr "" -#: lib/bds/tui.ex:1035 +#: lib/bds/tui.ex:1205 #, elixir-autogen, elixir-format msgid "enter repair all from files · esc close" msgstr "" -#: lib/bds/tui.ex:494 +#: lib/bds/tui.ex:619 #, elixir-autogen, elixir-format, fuzzy msgid "Imported Blog" msgstr "" -#: lib/bds/tui.ex:513 +#: lib/bds/tui.ex:638 #, elixir-autogen, elixir-format msgid "Not a folder: %{path}" msgstr "" -#: lib/bds/tui.ex:977 +#: lib/bds/tui.ex:1147 #, elixir-autogen, elixir-format msgid "Projects — enter switch · o open existing · esc close" msgstr "" -#: lib/bds/tui.ex:421 +#: lib/bds/tui.ex:546 #, elixir-autogen, elixir-format msgid "Switched to %{name}." msgstr "" -#: lib/bds/tui.ex:1005 +#: lib/bds/tui.ex:1175 #, elixir-autogen, elixir-format msgid "Matching folders" msgstr "" -#: lib/bds/tui.ex:943 +#: lib/bds/tui.ex:1113 #, elixir-autogen, elixir-format, fuzzy msgid "Open Existing Blog — type a folder path · tab complete · enter open · esc back" msgstr "" -#: lib/bds/tui.ex:1121 +#: lib/bds/tui.ex:1298 #, elixir-autogen, elixir-format, fuzzy msgid "enter open · n new post · 1-5 views · p projects · / search · : commands (:? help) · r refresh · ctrl+q quit" msgstr "" + +#: lib/bds/tui.ex:321 +#, elixir-autogen, elixir-format, fuzzy +msgid "Commit message required." +msgstr "" + +#: lib/bds/tui.ex:327 +#, elixir-autogen, elixir-format, fuzzy +msgid "Committed." +msgstr "" + +#: lib/bds/tui.ex:960 +#, elixir-autogen, elixir-format +msgid "Diff (pgup/pgdn scroll)" +msgstr "" + +#: lib/bds/tui.ex:1333 +#, elixir-autogen, elixir-format, fuzzy +msgid "No changes." +msgstr "" + +#: lib/bds/tui.ex:387 +#, elixir-autogen, elixir-format +msgid "No diff for this file." +msgstr "" + +#: lib/bds/tui.ex:375 +#: lib/bds/tui.ex:947 +#, elixir-autogen, elixir-format +msgid "Not a git repository." +msgstr "" + +#: lib/bds/tui.ex:1291 +#, elixir-autogen, elixir-format +msgid "c commit · u pull · s push · enter jump to file · pgup/pgdn scroll diff · 1-5 views · ctrl+q quit" +msgstr "" diff --git a/priv/gettext/es/LC_MESSAGES/ui.po b/priv/gettext/es/LC_MESSAGES/ui.po index d390d4a..7b9ffe6 100644 --- a/priv/gettext/es/LC_MESSAGES/ui.po +++ b/priv/gettext/es/LC_MESSAGES/ui.po @@ -81,11 +81,11 @@ msgstr "Configuración de IA" #: 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_html/post_editor.html.heex:43 -#: lib/bds/tui.ex:655 -#: lib/bds/tui.ex:658 -#: lib/bds/tui.ex:661 -#: lib/bds/tui.ex:669 -#: lib/bds/tui.ex:1309 +#: lib/bds/tui.ex:780 +#: lib/bds/tui.ex:783 +#: lib/bds/tui.ex:786 +#: lib/bds/tui.ex:794 +#: lib/bds/tui.ex:1523 #, elixir-autogen, elixir-format msgid "AI Suggestions" msgstr "Sugerencias de IA" @@ -572,7 +572,7 @@ msgid "Collapse unchanged diff hunks" msgstr "Contraer bloques de diff sin cambios" #: lib/bds/desktop/shell_live/overlay_manager.ex:422 -#: lib/bds/tui.ex:1405 +#: lib/bds/tui.ex:1619 #, elixir-autogen, elixir-format msgid "Command completed" 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/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 -#: lib/bds/tui.ex:845 +#: lib/bds/tui.ex:1014 #: lib/bds/ui/sidebar.ex:801 #, elixir-autogen, elixir-format msgid "Content" @@ -1030,7 +1030,7 @@ msgid "Filename" msgstr "Nombre de archivo" #: lib/bds/desktop/menu_bar.ex:254 -#: lib/bds/tui.ex:1369 +#: lib/bds/tui.ex:1583 #, elixir-autogen, elixir-format msgid "Fill Missing Translations" msgstr "Completar traducciones faltantes" @@ -1041,7 +1041,7 @@ msgid "Find" msgstr "Buscar" #: lib/bds/desktop/menu_bar.ex:255 -#: lib/bds/tui.ex:1372 +#: lib/bds/tui.ex:1586 #, elixir-autogen, elixir-format msgid "Find Duplicate Posts" msgstr "Buscar entradas duplicadas" @@ -1068,13 +1068,14 @@ msgid "Gallery" msgstr "Galeria" #: lib/bds/desktop/menu_bar.ex:256 -#: lib/bds/tui.ex:1353 +#: lib/bds/tui.ex:1567 #, elixir-autogen, elixir-format msgid "Generate Site" msgstr "Generar sitio" #: lib/bds/desktop/shell_live.ex:792 #: lib/bds/desktop/shell_live/socket_state.ex:109 +#: lib/bds/tui.ex:1440 #: lib/bds/ui/sidebar.ex:826 #, elixir-autogen, elixir-format msgid "Git" @@ -1389,9 +1390,9 @@ msgstr "Máximo de publicaciones por página" #: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175 -#: lib/bds/tui.ex:1223 -#: lib/bds/tui.ex:1434 -#: lib/bds/tui.ex:1437 +#: lib/bds/tui.ex:1436 +#: lib/bds/tui.ex:1648 +#: lib/bds/tui.ex:1651 #: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:100 #: lib/bds/ui/sidebar.ex:578 @@ -1434,11 +1435,11 @@ msgstr "Metadatos" #: 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:448 -#: lib/bds/tui.ex:229 -#: lib/bds/tui.ex:235 -#: lib/bds/tui.ex:246 -#: lib/bds/tui.ex:1034 -#: lib/bds/tui.ex:1350 +#: lib/bds/tui.ex:265 +#: lib/bds/tui.ex:271 +#: lib/bds/tui.ex:282 +#: lib/bds/tui.ex:1204 +#: lib/bds/tui.ex:1564 #: lib/bds/ui/registry.ex:111 #, elixir-autogen, elixir-format msgid "Metadata Diff" @@ -1484,7 +1485,7 @@ msgstr "Nueva página" #: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/shell_live/sidebar_create.ex:41 -#: lib/bds/tui.ex:186 +#: lib/bds/tui.ex:221 #, elixir-autogen, elixir-format msgid "New Post" msgstr "Nueva entrada" @@ -1762,8 +1763,8 @@ msgid "Open Data Folder" msgstr "Abrir carpeta de datos" #: lib/bds/desktop/shell_live/index.html.heex:644 -#: lib/bds/tui.ex:507 -#: lib/bds/tui.ex:512 +#: lib/bds/tui.ex:632 +#: lib/bds/tui.ex:637 #, elixir-autogen, elixir-format msgid "Open Existing Blog" msgstr "Abrir blog existente" @@ -1775,7 +1776,7 @@ msgid "Open Settings" msgstr "Abrir Ajustes" #: lib/bds/desktop/menu_bar.ex:217 -#: lib/bds/tui.ex:1374 +#: lib/bds/tui.ex:1588 #, elixir-autogen, elixir-format msgid "Open in Browser" msgstr "Abrir en el navegador" @@ -1923,8 +1924,8 @@ msgstr "Artículo guardado" #: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:761 -#: lib/bds/tui.ex:1222 -#: lib/bds/tui.ex:1233 +#: lib/bds/tui.ex:1435 +#: lib/bds/tui.ex:1447 #: lib/bds/ui/registry.ex:14 #: lib/bds/ui/sidebar.ex:271 #, elixir-autogen, elixir-format @@ -1983,8 +1984,8 @@ msgstr "Proyecto y publicación" #: lib/bds/desktop/shell_live/chat_surface.ex:15 #: lib/bds/desktop/shell_live/index.html.heex:623 -#: lib/bds/tui.ex:420 -#: lib/bds/tui.ex:425 +#: lib/bds/tui.ex:545 +#: lib/bds/tui.ex:550 #, elixir-autogen, elixir-format msgid "Projects" msgstr "Proyectos" @@ -2050,15 +2051,15 @@ msgid "Ready to import:" msgstr "Listo para importar:" #: lib/bds/desktop/menu_bar.ex:248 -#: lib/bds/tui.ex:504 -#: lib/bds/tui.ex:1354 +#: lib/bds/tui.ex:629 +#: lib/bds/tui.ex:1568 #, elixir-autogen, elixir-format msgid "Rebuild Database" msgstr "Reconstruir base de datos" #: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 -#: lib/bds/tui.ex:1358 +#: lib/bds/tui.ex:1572 #, elixir-autogen, elixir-format msgid "Rebuild Embedding Index" msgstr "Reconstruir índice de embeddings" @@ -2116,7 +2117,7 @@ msgid "Refresh Translation" msgstr "Actualizar traducción" #: lib/bds/desktop/menu_bar.ex:252 -#: lib/bds/tui.ex:1361 +#: lib/bds/tui.ex:1575 #, elixir-autogen, elixir-format msgid "Regenerate Calendar" msgstr "Regenerar calendario" @@ -2127,7 +2128,7 @@ msgid "Regenerate Missing Thumbnails" msgstr "Regenerar miniaturas faltantes" #: lib/bds/desktop/menu_bar.ex:249 -#: lib/bds/tui.ex:1355 +#: lib/bds/tui.ex:1569 #, elixir-autogen, elixir-format msgid "Reindex Text" msgstr "Reindexar texto" @@ -2313,7 +2314,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:219 #: lib/bds/desktop/shell_live/script_editor.ex:234 -#: lib/bds/tui.ex:1225 +#: lib/bds/tui.ex:1438 #: lib/bds/ui/registry.ex:38 #: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:115 @@ -2441,9 +2442,9 @@ msgid "Site" msgstr "Sitio" #: lib/bds/desktop/shell_live/misc_editor.ex:412 -#: lib/bds/tui.ex:262 -#: lib/bds/tui.ex:264 -#: lib/bds/tui.ex:1039 +#: lib/bds/tui.ex:298 +#: lib/bds/tui.ex:300 +#: lib/bds/tui.ex:1209 #: lib/bds/ui/registry.ex:125 #, elixir-autogen, elixir-format msgid "Site Validation" @@ -2564,7 +2565,7 @@ msgstr "Nombre de la etiqueta" #: 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_html/tags_editor.html.heex:11 -#: lib/bds/tui.ex:1226 +#: lib/bds/tui.ex:1439 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 #: lib/bds/ui/sidebar.ex:289 @@ -2576,7 +2577,7 @@ msgstr "Etiquetas" #: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 -#: lib/bds/tui.ex:685 +#: lib/bds/tui.ex:828 #, elixir-autogen, elixir-format msgid "Tasks" msgstr "Tareas" @@ -2621,7 +2622,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:176 #: lib/bds/desktop/shell_live/template_editor.ex:191 -#: lib/bds/tui.ex:1224 +#: lib/bds/tui.ex:1437 #: lib/bds/ui/registry.ex:46 #: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:122 @@ -2844,7 +2845,7 @@ msgid "Updated URLs" msgstr "URLs actualizadas" #: lib/bds/desktop/menu_bar.ex:259 -#: lib/bds/tui.ex:1373 +#: lib/bds/tui.ex:1587 #, elixir-autogen, elixir-format msgid "Upload Site" msgstr "Subir sitio" @@ -2872,13 +2873,13 @@ msgid "Validate" msgstr "Validar" #: lib/bds/desktop/menu_bar.ex:258 -#: lib/bds/tui.ex:1351 +#: lib/bds/tui.ex:1565 #, elixir-autogen, elixir-format msgid "Validate Site" msgstr "Validar sitio" #: lib/bds/desktop/menu_bar.ex:253 -#: lib/bds/tui.ex:1364 +#: lib/bds/tui.ex:1578 #, elixir-autogen, elixir-format msgid "Validate Translations" msgstr "Validar traducciones" @@ -3349,11 +3350,15 @@ msgstr "Cambios" #: lib/bds/desktop/shell_live/git_handler.ex:46 #: lib/bds/desktop/shell_live/git_handler.ex:52 #: lib/bds/desktop/shell_live/sidebar_components.ex:556 +#: lib/bds/tui.ex:321 +#: lib/bds/tui.ex:327 +#: lib/bds/tui.ex:330 #, elixir-autogen, elixir-format msgid "Commit" msgstr "Commit" #: lib/bds/desktop/shell_live/sidebar_components.ex:555 +#: lib/bds/tui.ex:1031 #, elixir-autogen, elixir-format msgid "Commit message" msgstr "Mensaje de commit" @@ -3424,6 +3429,7 @@ msgstr "Limpiar LFS" #: lib/bds/desktop/shell_live/git_handler.ex:17 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 +#: lib/bds/tui.ex:800 #, elixir-autogen, elixir-format msgid "Pull" msgstr "Pull" @@ -3431,6 +3437,7 @@ msgstr "Pull" #: lib/bds/desktop/shell_live/git_handler.ex:18 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 +#: lib/bds/tui.ex:801 #, elixir-autogen, elixir-format msgid "Push" msgstr "Push" @@ -3543,7 +3550,7 @@ msgid "Suggested tags" msgstr "Etiquetas sugeridas" #: lib/bds/desktop/menu_bar.ex:257 -#: lib/bds/tui.ex:1352 +#: lib/bds/tui.ex:1566 #, elixir-autogen, elixir-format msgid "Force Render Site" msgstr "Forzar la regeneración del sitio" @@ -3640,82 +3647,82 @@ msgstr "OK" 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." -#: lib/bds/tui.ex:1310 +#: lib/bds/tui.ex:1524 #, elixir-autogen, elixir-format 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." -#: lib/bds/tui.ex:1437 +#: lib/bds/tui.ex:1651 #, elixir-autogen, elixir-format msgid "Could not load this file." msgstr "No se pudo cargar este archivo." -#: lib/bds/tui.ex:194 +#: lib/bds/tui.ex:230 #, elixir-autogen, elixir-format 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." -#: lib/bds/tui.ex:658 +#: lib/bds/tui.ex:783 #, elixir-autogen, elixir-format msgid "No suggestions returned." msgstr "No se recibieron sugerencias." -#: lib/bds/tui.ex:1434 +#: lib/bds/tui.ex:1648 #, elixir-autogen, elixir-format msgid "Only images can be previewed." msgstr "Solo se pueden previsualizar imágenes." -#: lib/bds/tui.ex:1233 +#: lib/bds/tui.ex:1447 #, elixir-autogen, elixir-format msgid "Post not found." msgstr "Entrada no encontrada." -#: lib/bds/tui.ex:800 +#: lib/bds/tui.ex:969 #, elixir-autogen, elixir-format msgid "Press enter to preview %{name}." msgstr "Pulsa Intro para previsualizar %{name}." -#: lib/bds/tui.ex:1280 +#: lib/bds/tui.ex:1494 #, elixir-autogen, elixir-format msgid "Published." msgstr "Publicado." -#: lib/bds/tui.ex:1296 +#: lib/bds/tui.ex:1510 #, elixir-autogen, elixir-format msgid "Save before switching languages." msgstr "Guarda antes de cambiar de idioma." -#: lib/bds/tui.ex:1281 +#: lib/bds/tui.ex:1495 #, elixir-autogen, elixir-format msgid "Saved." msgstr "Guardado." -#: lib/bds/tui.ex:803 +#: lib/bds/tui.ex:972 #, elixir-autogen, elixir-format msgid "Select an entry and press enter to open it." msgstr "Selecciona una entrada y pulsa Intro para abrirla." -#: lib/bds/tui.ex:655 +#: lib/bds/tui.ex:780 #, elixir-autogen, elixir-format msgid "Suggestions applied." msgstr "Sugerencias aplicadas." -#: lib/bds/tui.ex:815 +#: lib/bds/tui.ex:984 #, elixir-autogen, elixir-format msgid "Title (ctrl+t to edit)" msgstr "Título (ctrl+t para editar)" -#: lib/bds/tui.ex:814 +#: lib/bds/tui.ex:983 #, elixir-autogen, elixir-format msgid "Title (editing — enter to confirm)" msgstr "Título (edición — Intro para confirmar)" -#: lib/bds/tui.ex:863 +#: lib/bds/tui.ex:1033 #, elixir-autogen, elixir-format msgid "Working…" msgstr "Procesando…" -#: lib/bds/tui.ex:885 +#: lib/bds/tui.ex:1055 #, elixir-autogen, elixir-format msgid "esc to close" msgstr "esc para cerrar" @@ -3752,122 +3759,158 @@ msgstr "Dirección del servidor (user@host o user@host:port), autenticación de msgid "Use the form user@host or user@host:port." msgstr "Usa el formato user@host o user@host:port." -#: lib/bds/tui.ex:834 +#: lib/bds/tui.ex:1003 #, elixir-autogen, elixir-format msgid "Preview (ctrl+e to edit)" msgstr "Vista previa (ctrl+e para editar)" -#: lib/bds/tui.ex:1128 +#: lib/bds/tui.ex:1305 #, 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" 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:685 +#: lib/bds/tui.ex:828 #, elixir-autogen, elixir-format msgid "All tasks finished." msgstr "Todas las tareas han terminado." -#: lib/bds/tui.ex:911 +#: lib/bds/tui.ex:1081 #, elixir-autogen, elixir-format msgid "Commands — esc to close" msgstr "Comandos — esc para cerrar" -#: lib/bds/tui.ex:529 +#: lib/bds/tui.ex:654 #, elixir-autogen, elixir-format msgid "Unknown command." msgstr "Comando desconocido." -#: lib/bds/tui.ex:901 +#: lib/bds/tui.ex:1071 #, elixir-autogen, elixir-format msgid "[report/apply in GUI]" msgstr "[informe/aplicación en la GUI]" -#: lib/bds/tui.ex:1050 +#: lib/bds/tui.ex:1220 #, elixir-autogen, elixir-format msgid "%{diffs} differences · %{orphans} orphan files" msgstr "%{diffs} diferencias · %{orphans} archivos huérfanos" -#: lib/bds/tui.ex:1082 +#: lib/bds/tui.ex:1252 #, elixir-autogen, elixir-format msgid "Expected %{expected} · Existing %{existing}" msgstr "Esperados %{expected} · Existentes %{existing}" -#: lib/bds/tui.ex:1099 +#: lib/bds/tui.ex:1269 #, elixir-autogen, elixir-format msgid "Extra files (will be removed):" msgstr "Archivos sobrantes (se eliminarán):" -#: lib/bds/tui.ex:1095 +#: lib/bds/tui.ex:1265 #, elixir-autogen, elixir-format msgid "Missing pages (will be rendered):" msgstr "Páginas faltantes (se generarán):" -#: lib/bds/tui.ex:262 +#: lib/bds/tui.ex:298 #, elixir-autogen, elixir-format msgid "Nothing to apply." msgstr "Nada que aplicar." -#: lib/bds/tui.ex:229 +#: lib/bds/tui.ex:265 #, elixir-autogen, elixir-format msgid "Nothing to repair." msgstr "Nada que reparar." -#: lib/bds/tui.ex:1073 +#: lib/bds/tui.ex:1243 #, 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:1089 +#: lib/bds/tui.ex:1259 #, elixir-autogen, elixir-format msgid "Sitemap changed." msgstr "Sitemap modificado." -#: lib/bds/tui.ex:1103 +#: lib/bds/tui.ex:1273 #, elixir-autogen, elixir-format msgid "Updated posts (will be re-rendered):" msgstr "Entradas actualizadas (se volverán a generar):" -#: lib/bds/tui.ex:1040 +#: lib/bds/tui.ex:1210 #, elixir-autogen, elixir-format msgid "enter apply changes · esc close" msgstr "intro aplicar cambios · esc cerrar" -#: lib/bds/tui.ex:1035 +#: lib/bds/tui.ex:1205 #, elixir-autogen, elixir-format msgid "enter repair all from files · esc close" msgstr "intro reparar todo desde archivos · esc cerrar" -#: lib/bds/tui.ex:494 +#: lib/bds/tui.ex:619 #, elixir-autogen, elixir-format msgid "Imported Blog" msgstr "Blog importado" -#: lib/bds/tui.ex:513 +#: lib/bds/tui.ex:638 #, elixir-autogen, elixir-format msgid "Not a folder: %{path}" msgstr "No es una carpeta: %{path}" -#: lib/bds/tui.ex:977 +#: lib/bds/tui.ex:1147 #, elixir-autogen, elixir-format msgid "Projects — enter switch · o open existing · esc close" msgstr "Proyectos — intro cambiar · o abrir existente · esc cerrar" -#: lib/bds/tui.ex:421 +#: lib/bds/tui.ex:546 #, elixir-autogen, elixir-format msgid "Switched to %{name}." msgstr "Cambiado a %{name}." -#: lib/bds/tui.ex:1005 +#: lib/bds/tui.ex:1175 #, elixir-autogen, elixir-format msgid "Matching folders" msgstr "Carpetas coincidentes" -#: lib/bds/tui.ex:943 +#: lib/bds/tui.ex:1113 #, elixir-autogen, elixir-format msgid "Open Existing Blog — type a folder path · tab complete · enter open · esc back" msgstr "Abrir blog existente — escribe la ruta de una carpeta · tab completar · intro abrir · esc volver" -#: lib/bds/tui.ex:1121 +#: lib/bds/tui.ex:1298 #, elixir-autogen, elixir-format msgid "enter open · n new post · 1-5 views · p projects · / search · : commands (:? help) · r refresh · ctrl+q quit" msgstr "intro abrir · n nueva entrada · 1-5 vistas · p proyectos · / buscar · : comandos (:? ayuda) · r actualizar · ctrl+q salir" + +#: lib/bds/tui.ex:321 +#, elixir-autogen, elixir-format +msgid "Commit message required." +msgstr "Se requiere un mensaje de commit." + +#: lib/bds/tui.ex:327 +#, elixir-autogen, elixir-format +msgid "Committed." +msgstr "Commit realizado." + +#: lib/bds/tui.ex:960 +#, elixir-autogen, elixir-format +msgid "Diff (pgup/pgdn scroll)" +msgstr "Diff (pgup/pgdn para desplazar)" + +#: lib/bds/tui.ex:1333 +#, elixir-autogen, elixir-format +msgid "No changes." +msgstr "Sin cambios." + +#: lib/bds/tui.ex:387 +#, elixir-autogen, elixir-format +msgid "No diff for this file." +msgstr "No hay diff para este archivo." + +#: lib/bds/tui.ex:375 +#: lib/bds/tui.ex:947 +#, elixir-autogen, elixir-format +msgid "Not a git repository." +msgstr "No es un repositorio git." + +#: lib/bds/tui.ex:1291 +#, elixir-autogen, elixir-format +msgid "c commit · u pull · s push · enter jump to file · pgup/pgdn scroll diff · 1-5 views · ctrl+q quit" +msgstr "c commit · u pull · s push · intro ir al archivo · pgup/pgdn desplazar el diff · 1-5 vistas · ctrl+q salir" diff --git a/priv/gettext/fr/LC_MESSAGES/ui.po b/priv/gettext/fr/LC_MESSAGES/ui.po index e9ecf55..36d3734 100644 --- a/priv/gettext/fr/LC_MESSAGES/ui.po +++ b/priv/gettext/fr/LC_MESSAGES/ui.po @@ -81,11 +81,11 @@ msgstr "Paramètres IA" #: 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_html/post_editor.html.heex:43 -#: lib/bds/tui.ex:655 -#: lib/bds/tui.ex:658 -#: lib/bds/tui.ex:661 -#: lib/bds/tui.ex:669 -#: lib/bds/tui.ex:1309 +#: lib/bds/tui.ex:780 +#: lib/bds/tui.ex:783 +#: lib/bds/tui.ex:786 +#: lib/bds/tui.ex:794 +#: lib/bds/tui.ex:1523 #, elixir-autogen, elixir-format msgid "AI Suggestions" msgstr "Suggestions IA" @@ -572,7 +572,7 @@ msgid "Collapse unchanged diff hunks" msgstr "Réduire les blocs de diff inchangés" #: lib/bds/desktop/shell_live/overlay_manager.ex:422 -#: lib/bds/tui.ex:1405 +#: lib/bds/tui.ex:1619 #, elixir-autogen, elixir-format msgid "Command completed" 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/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 -#: lib/bds/tui.ex:845 +#: lib/bds/tui.ex:1014 #: lib/bds/ui/sidebar.ex:801 #, elixir-autogen, elixir-format msgid "Content" @@ -1030,7 +1030,7 @@ msgid "Filename" msgstr "Nom de fichier" #: lib/bds/desktop/menu_bar.ex:254 -#: lib/bds/tui.ex:1369 +#: lib/bds/tui.ex:1583 #, elixir-autogen, elixir-format msgid "Fill Missing Translations" msgstr "Compléter les traductions manquantes" @@ -1041,7 +1041,7 @@ msgid "Find" msgstr "Rechercher" #: lib/bds/desktop/menu_bar.ex:255 -#: lib/bds/tui.ex:1372 +#: lib/bds/tui.ex:1586 #, elixir-autogen, elixir-format msgid "Find Duplicate Posts" msgstr "Trouver les doublons" @@ -1068,13 +1068,14 @@ msgid "Gallery" msgstr "Galerie" #: lib/bds/desktop/menu_bar.ex:256 -#: lib/bds/tui.ex:1353 +#: lib/bds/tui.ex:1567 #, elixir-autogen, elixir-format msgid "Generate Site" msgstr "Générer le site" #: lib/bds/desktop/shell_live.ex:792 #: lib/bds/desktop/shell_live/socket_state.ex:109 +#: lib/bds/tui.ex:1440 #: lib/bds/ui/sidebar.ex:826 #, elixir-autogen, elixir-format msgid "Git" @@ -1389,9 +1390,9 @@ msgstr "Nombre maximal d’articles par page" #: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175 -#: lib/bds/tui.ex:1223 -#: lib/bds/tui.ex:1434 -#: lib/bds/tui.ex:1437 +#: lib/bds/tui.ex:1436 +#: lib/bds/tui.ex:1648 +#: lib/bds/tui.ex:1651 #: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:100 #: lib/bds/ui/sidebar.ex:578 @@ -1434,11 +1435,11 @@ msgstr "Métadonnées" #: 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:448 -#: lib/bds/tui.ex:229 -#: lib/bds/tui.ex:235 -#: lib/bds/tui.ex:246 -#: lib/bds/tui.ex:1034 -#: lib/bds/tui.ex:1350 +#: lib/bds/tui.ex:265 +#: lib/bds/tui.ex:271 +#: lib/bds/tui.ex:282 +#: lib/bds/tui.ex:1204 +#: lib/bds/tui.ex:1564 #: lib/bds/ui/registry.ex:111 #, elixir-autogen, elixir-format msgid "Metadata Diff" @@ -1484,7 +1485,7 @@ msgstr "Nouvelle page" #: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/shell_live/sidebar_create.ex:41 -#: lib/bds/tui.ex:186 +#: lib/bds/tui.ex:221 #, elixir-autogen, elixir-format msgid "New Post" msgstr "Nouvel article" @@ -1762,8 +1763,8 @@ msgid "Open Data Folder" msgstr "Ouvrir le dossier de données" #: lib/bds/desktop/shell_live/index.html.heex:644 -#: lib/bds/tui.ex:507 -#: lib/bds/tui.ex:512 +#: lib/bds/tui.ex:632 +#: lib/bds/tui.ex:637 #, elixir-autogen, elixir-format msgid "Open Existing Blog" msgstr "Ouvrir un blog existant" @@ -1775,7 +1776,7 @@ msgid "Open Settings" msgstr "Ouvrir les Réglages" #: lib/bds/desktop/menu_bar.ex:217 -#: lib/bds/tui.ex:1374 +#: lib/bds/tui.ex:1588 #, elixir-autogen, elixir-format msgid "Open in Browser" msgstr "Ouvrir dans le navigateur" @@ -1923,8 +1924,8 @@ msgstr "Article enregistré" #: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:761 -#: lib/bds/tui.ex:1222 -#: lib/bds/tui.ex:1233 +#: lib/bds/tui.ex:1435 +#: lib/bds/tui.ex:1447 #: lib/bds/ui/registry.ex:14 #: lib/bds/ui/sidebar.ex:271 #, elixir-autogen, elixir-format @@ -1983,8 +1984,8 @@ msgstr "Projet et publication" #: lib/bds/desktop/shell_live/chat_surface.ex:15 #: lib/bds/desktop/shell_live/index.html.heex:623 -#: lib/bds/tui.ex:420 -#: lib/bds/tui.ex:425 +#: lib/bds/tui.ex:545 +#: lib/bds/tui.ex:550 #, elixir-autogen, elixir-format msgid "Projects" msgstr "Projets" @@ -2050,15 +2051,15 @@ msgid "Ready to import:" msgstr "Prêt à importer :" #: lib/bds/desktop/menu_bar.ex:248 -#: lib/bds/tui.ex:504 -#: lib/bds/tui.ex:1354 +#: lib/bds/tui.ex:629 +#: lib/bds/tui.ex:1568 #, elixir-autogen, elixir-format msgid "Rebuild Database" msgstr "Reconstruire la base de données" #: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 -#: lib/bds/tui.ex:1358 +#: lib/bds/tui.ex:1572 #, elixir-autogen, elixir-format msgid "Rebuild Embedding Index" msgstr "Reconstruire l’index d’embeddings" @@ -2116,7 +2117,7 @@ msgid "Refresh Translation" msgstr "Actualiser la traduction" #: lib/bds/desktop/menu_bar.ex:252 -#: lib/bds/tui.ex:1361 +#: lib/bds/tui.ex:1575 #, elixir-autogen, elixir-format msgid "Regenerate Calendar" msgstr "Régénérer le calendrier" @@ -2127,7 +2128,7 @@ msgid "Regenerate Missing Thumbnails" msgstr "Régénérer les vignettes manquantes" #: lib/bds/desktop/menu_bar.ex:249 -#: lib/bds/tui.ex:1355 +#: lib/bds/tui.ex:1569 #, elixir-autogen, elixir-format msgid "Reindex Text" msgstr "Réindexer le texte" @@ -2313,7 +2314,7 @@ msgstr "Les capacités de script sont configurées au niveau de l’application #: 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:234 -#: lib/bds/tui.ex:1225 +#: lib/bds/tui.ex:1438 #: lib/bds/ui/registry.ex:38 #: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:115 @@ -2441,9 +2442,9 @@ msgid "Site" msgstr "Site" #: lib/bds/desktop/shell_live/misc_editor.ex:412 -#: lib/bds/tui.ex:262 -#: lib/bds/tui.ex:264 -#: lib/bds/tui.ex:1039 +#: lib/bds/tui.ex:298 +#: lib/bds/tui.ex:300 +#: lib/bds/tui.ex:1209 #: lib/bds/ui/registry.ex:125 #, elixir-autogen, elixir-format msgid "Site Validation" @@ -2564,7 +2565,7 @@ msgstr "Nom du mot-clé" #: 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_html/tags_editor.html.heex:11 -#: lib/bds/tui.ex:1226 +#: lib/bds/tui.ex:1439 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 #: lib/bds/ui/sidebar.ex:289 @@ -2576,7 +2577,7 @@ msgstr "Tags" #: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 -#: lib/bds/tui.ex:685 +#: lib/bds/tui.ex:828 #, elixir-autogen, elixir-format msgid "Tasks" msgstr "Tâches" @@ -2621,7 +2622,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:176 #: lib/bds/desktop/shell_live/template_editor.ex:191 -#: lib/bds/tui.ex:1224 +#: lib/bds/tui.ex:1437 #: lib/bds/ui/registry.ex:46 #: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:122 @@ -2844,7 +2845,7 @@ msgid "Updated URLs" msgstr "URLs mises à jour" #: lib/bds/desktop/menu_bar.ex:259 -#: lib/bds/tui.ex:1373 +#: lib/bds/tui.ex:1587 #, elixir-autogen, elixir-format msgid "Upload Site" msgstr "Téléverser le site" @@ -2872,13 +2873,13 @@ msgid "Validate" msgstr "Valider" #: lib/bds/desktop/menu_bar.ex:258 -#: lib/bds/tui.ex:1351 +#: lib/bds/tui.ex:1565 #, elixir-autogen, elixir-format msgid "Validate Site" msgstr "Valider le site" #: lib/bds/desktop/menu_bar.ex:253 -#: lib/bds/tui.ex:1364 +#: lib/bds/tui.ex:1578 #, elixir-autogen, elixir-format msgid "Validate Translations" msgstr "Valider les traductions" @@ -3349,11 +3350,15 @@ msgstr "Modifications" #: lib/bds/desktop/shell_live/git_handler.ex:46 #: lib/bds/desktop/shell_live/git_handler.ex:52 #: lib/bds/desktop/shell_live/sidebar_components.ex:556 +#: lib/bds/tui.ex:321 +#: lib/bds/tui.ex:327 +#: lib/bds/tui.ex:330 #, elixir-autogen, elixir-format msgid "Commit" msgstr "Commit" #: lib/bds/desktop/shell_live/sidebar_components.ex:555 +#: lib/bds/tui.ex:1031 #, elixir-autogen, elixir-format msgid "Commit message" msgstr "Message de commit" @@ -3424,6 +3429,7 @@ msgstr "Nettoyer LFS" #: lib/bds/desktop/shell_live/git_handler.ex:17 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 +#: lib/bds/tui.ex:800 #, elixir-autogen, elixir-format msgid "Pull" msgstr "Pull" @@ -3431,6 +3437,7 @@ msgstr "Pull" #: lib/bds/desktop/shell_live/git_handler.ex:18 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 +#: lib/bds/tui.ex:801 #, elixir-autogen, elixir-format msgid "Push" msgstr "Push" @@ -3543,7 +3550,7 @@ msgid "Suggested tags" msgstr "Tags suggérés" #: lib/bds/desktop/menu_bar.ex:257 -#: lib/bds/tui.ex:1352 +#: lib/bds/tui.ex:1566 #, elixir-autogen, elixir-format msgid "Force Render Site" msgstr "Forcer la régénération du site" @@ -3640,82 +3647,82 @@ msgstr "OK" 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." -#: lib/bds/tui.ex:1310 +#: lib/bds/tui.ex:1524 #, elixir-autogen, elixir-format 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." -#: lib/bds/tui.ex:1437 +#: lib/bds/tui.ex:1651 #, elixir-autogen, elixir-format msgid "Could not load this file." msgstr "Impossible de charger ce fichier." -#: lib/bds/tui.ex:194 +#: lib/bds/tui.ex:230 #, elixir-autogen, elixir-format 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." -#: lib/bds/tui.ex:658 +#: lib/bds/tui.ex:783 #, elixir-autogen, elixir-format msgid "No suggestions returned." msgstr "Aucune suggestion reçue." -#: lib/bds/tui.ex:1434 +#: lib/bds/tui.ex:1648 #, elixir-autogen, elixir-format msgid "Only images can be previewed." msgstr "Seules les images peuvent être prévisualisées." -#: lib/bds/tui.ex:1233 +#: lib/bds/tui.ex:1447 #, elixir-autogen, elixir-format msgid "Post not found." msgstr "Article introuvable." -#: lib/bds/tui.ex:800 +#: lib/bds/tui.ex:969 #, elixir-autogen, elixir-format msgid "Press enter to preview %{name}." msgstr "Appuyez sur Entrée pour prévisualiser %{name}." -#: lib/bds/tui.ex:1280 +#: lib/bds/tui.ex:1494 #, elixir-autogen, elixir-format msgid "Published." msgstr "Publié." -#: lib/bds/tui.ex:1296 +#: lib/bds/tui.ex:1510 #, elixir-autogen, elixir-format msgid "Save before switching languages." msgstr "Enregistrez avant de changer de langue." -#: lib/bds/tui.ex:1281 +#: lib/bds/tui.ex:1495 #, elixir-autogen, elixir-format msgid "Saved." msgstr "Enregistré." -#: lib/bds/tui.ex:803 +#: lib/bds/tui.ex:972 #, elixir-autogen, elixir-format msgid "Select an entry and press enter to open it." msgstr "Sélectionnez une entrée et appuyez sur Entrée pour l'ouvrir." -#: lib/bds/tui.ex:655 +#: lib/bds/tui.ex:780 #, elixir-autogen, elixir-format msgid "Suggestions applied." msgstr "Suggestions appliquées." -#: lib/bds/tui.ex:815 +#: lib/bds/tui.ex:984 #, elixir-autogen, elixir-format msgid "Title (ctrl+t to edit)" msgstr "Titre (ctrl+t pour modifier)" -#: lib/bds/tui.ex:814 +#: lib/bds/tui.ex:983 #, elixir-autogen, elixir-format msgid "Title (editing — enter to confirm)" msgstr "Titre (édition — Entrée pour confirmer)" -#: lib/bds/tui.ex:863 +#: lib/bds/tui.ex:1033 #, elixir-autogen, elixir-format msgid "Working…" msgstr "Traitement en cours…" -#: lib/bds/tui.ex:885 +#: lib/bds/tui.ex:1055 #, elixir-autogen, elixir-format msgid "esc to close" msgstr "échap pour fermer" @@ -3752,122 +3759,158 @@ msgstr "Adresse du serveur (user@host ou user@host:port), authentification par c msgid "Use the form user@host or user@host:port." msgstr "Utilisez le format user@host ou user@host:port." -#: lib/bds/tui.ex:834 +#: lib/bds/tui.ex:1003 #, elixir-autogen, elixir-format msgid "Preview (ctrl+e to edit)" msgstr "Aperçu (ctrl+e pour modifier)" -#: lib/bds/tui.ex:1128 +#: lib/bds/tui.ex:1305 #, 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" 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:685 +#: lib/bds/tui.ex:828 #, elixir-autogen, elixir-format msgid "All tasks finished." msgstr "Toutes les tâches sont terminées." -#: lib/bds/tui.ex:911 +#: lib/bds/tui.ex:1081 #, elixir-autogen, elixir-format msgid "Commands — esc to close" msgstr "Commandes — échap pour fermer" -#: lib/bds/tui.ex:529 +#: lib/bds/tui.ex:654 #, elixir-autogen, elixir-format msgid "Unknown command." msgstr "Commande inconnue." -#: lib/bds/tui.ex:901 +#: lib/bds/tui.ex:1071 #, elixir-autogen, elixir-format msgid "[report/apply in GUI]" msgstr "[rapport/application dans la GUI]" -#: lib/bds/tui.ex:1050 +#: lib/bds/tui.ex:1220 #, elixir-autogen, elixir-format msgid "%{diffs} differences · %{orphans} orphan files" msgstr "%{diffs} différences · %{orphans} fichiers orphelins" -#: lib/bds/tui.ex:1082 +#: lib/bds/tui.ex:1252 #, elixir-autogen, elixir-format msgid "Expected %{expected} · Existing %{existing}" msgstr "Attendu %{expected} · Existant %{existing}" -#: lib/bds/tui.ex:1099 +#: lib/bds/tui.ex:1269 #, elixir-autogen, elixir-format msgid "Extra files (will be removed):" msgstr "Fichiers en trop (seront supprimés) :" -#: lib/bds/tui.ex:1095 +#: lib/bds/tui.ex:1265 #, elixir-autogen, elixir-format msgid "Missing pages (will be rendered):" msgstr "Pages manquantes (seront rendues) :" -#: lib/bds/tui.ex:262 +#: lib/bds/tui.ex:298 #, elixir-autogen, elixir-format msgid "Nothing to apply." msgstr "Rien à appliquer." -#: lib/bds/tui.ex:229 +#: lib/bds/tui.ex:265 #, elixir-autogen, elixir-format msgid "Nothing to repair." msgstr "Rien à réparer." -#: lib/bds/tui.ex:1073 +#: lib/bds/tui.ex:1243 #, elixir-autogen, elixir-format msgid "Orphan files (not in database):" msgstr "Fichiers orphelins (absents de la base de données) :" -#: lib/bds/tui.ex:1089 +#: lib/bds/tui.ex:1259 #, elixir-autogen, elixir-format msgid "Sitemap changed." msgstr "Sitemap modifié." -#: lib/bds/tui.ex:1103 +#: lib/bds/tui.ex:1273 #, elixir-autogen, elixir-format msgid "Updated posts (will be re-rendered):" msgstr "Articles mis à jour (seront rendus à nouveau) :" -#: lib/bds/tui.ex:1040 +#: lib/bds/tui.ex:1210 #, elixir-autogen, elixir-format msgid "enter apply changes · esc close" msgstr "entrée appliquer les modifications · échap fermer" -#: lib/bds/tui.ex:1035 +#: lib/bds/tui.ex:1205 #, elixir-autogen, elixir-format msgid "enter repair all from files · esc close" msgstr "entrée tout réparer depuis les fichiers · échap fermer" -#: lib/bds/tui.ex:494 +#: lib/bds/tui.ex:619 #, elixir-autogen, elixir-format msgid "Imported Blog" msgstr "Blog importé" -#: lib/bds/tui.ex:513 +#: lib/bds/tui.ex:638 #, elixir-autogen, elixir-format msgid "Not a folder: %{path}" msgstr "Pas un dossier : %{path}" -#: lib/bds/tui.ex:977 +#: lib/bds/tui.ex:1147 #, elixir-autogen, elixir-format msgid "Projects — enter switch · o open existing · esc close" msgstr "Projets — entrée changer · o ouvrir existant · échap fermer" -#: lib/bds/tui.ex:421 +#: lib/bds/tui.ex:546 #, elixir-autogen, elixir-format msgid "Switched to %{name}." msgstr "Passage à %{name}." -#: lib/bds/tui.ex:1005 +#: lib/bds/tui.ex:1175 #, elixir-autogen, elixir-format msgid "Matching folders" msgstr "Dossiers correspondants" -#: lib/bds/tui.ex:943 +#: lib/bds/tui.ex:1113 #, elixir-autogen, elixir-format msgid "Open Existing Blog — type a folder path · tab complete · enter open · esc back" msgstr "Ouvrir un blog existant — saisir le chemin d'un dossier · tab compléter · entrée ouvrir · échap retour" -#: lib/bds/tui.ex:1121 +#: lib/bds/tui.ex:1298 #, elixir-autogen, elixir-format msgid "enter open · n new post · 1-5 views · p projects · / search · : commands (:? help) · r refresh · ctrl+q quit" msgstr "entrée ouvrir · n nouvel article · 1-5 vues · p projets · / rechercher · : commandes (:? aide) · r actualiser · ctrl+q quitter" + +#: lib/bds/tui.ex:321 +#, elixir-autogen, elixir-format +msgid "Commit message required." +msgstr "Message de commit requis." + +#: lib/bds/tui.ex:327 +#, elixir-autogen, elixir-format +msgid "Committed." +msgstr "Commit effectué." + +#: lib/bds/tui.ex:960 +#, elixir-autogen, elixir-format +msgid "Diff (pgup/pgdn scroll)" +msgstr "Diff (pgup/pgdn pour défiler)" + +#: lib/bds/tui.ex:1333 +#, elixir-autogen, elixir-format +msgid "No changes." +msgstr "Aucune modification." + +#: lib/bds/tui.ex:387 +#, elixir-autogen, elixir-format +msgid "No diff for this file." +msgstr "Pas de diff pour ce fichier." + +#: lib/bds/tui.ex:375 +#: lib/bds/tui.ex:947 +#, elixir-autogen, elixir-format +msgid "Not a git repository." +msgstr "Pas un dépôt git." + +#: lib/bds/tui.ex:1291 +#, elixir-autogen, elixir-format +msgid "c commit · u pull · s push · enter jump to file · pgup/pgdn scroll diff · 1-5 views · ctrl+q quit" +msgstr "c commit · u pull · s push · entrée aller au fichier · pgup/pgdn défiler le diff · 1-5 vues · ctrl+q quitter" diff --git a/priv/gettext/it/LC_MESSAGES/ui.po b/priv/gettext/it/LC_MESSAGES/ui.po index f9c582e..94bbb73 100644 --- a/priv/gettext/it/LC_MESSAGES/ui.po +++ b/priv/gettext/it/LC_MESSAGES/ui.po @@ -81,11 +81,11 @@ msgstr "Impostazioni IA" #: 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_html/post_editor.html.heex:43 -#: lib/bds/tui.ex:655 -#: lib/bds/tui.ex:658 -#: lib/bds/tui.ex:661 -#: lib/bds/tui.ex:669 -#: lib/bds/tui.ex:1309 +#: lib/bds/tui.ex:780 +#: lib/bds/tui.ex:783 +#: lib/bds/tui.ex:786 +#: lib/bds/tui.ex:794 +#: lib/bds/tui.ex:1523 #, elixir-autogen, elixir-format msgid "AI Suggestions" msgstr "Suggerimenti IA" @@ -572,7 +572,7 @@ msgid "Collapse unchanged diff hunks" msgstr "Comprimi i blocchi diff invariati" #: lib/bds/desktop/shell_live/overlay_manager.ex:422 -#: lib/bds/tui.ex:1405 +#: lib/bds/tui.ex:1619 #, elixir-autogen, elixir-format msgid "Command completed" 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/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 -#: lib/bds/tui.ex:845 +#: lib/bds/tui.ex:1014 #: lib/bds/ui/sidebar.ex:801 #, elixir-autogen, elixir-format msgid "Content" @@ -1030,7 +1030,7 @@ msgid "Filename" msgstr "Nome file" #: lib/bds/desktop/menu_bar.ex:254 -#: lib/bds/tui.ex:1369 +#: lib/bds/tui.ex:1583 #, elixir-autogen, elixir-format msgid "Fill Missing Translations" msgstr "Completa traduzioni mancanti" @@ -1041,7 +1041,7 @@ msgid "Find" msgstr "Trova" #: lib/bds/desktop/menu_bar.ex:255 -#: lib/bds/tui.ex:1372 +#: lib/bds/tui.ex:1586 #, elixir-autogen, elixir-format msgid "Find Duplicate Posts" msgstr "Trova post duplicati" @@ -1068,13 +1068,14 @@ msgid "Gallery" msgstr "Galleria" #: lib/bds/desktop/menu_bar.ex:256 -#: lib/bds/tui.ex:1353 +#: lib/bds/tui.ex:1567 #, elixir-autogen, elixir-format msgid "Generate Site" msgstr "Genera sito" #: lib/bds/desktop/shell_live.ex:792 #: lib/bds/desktop/shell_live/socket_state.ex:109 +#: lib/bds/tui.ex:1440 #: lib/bds/ui/sidebar.ex:826 #, elixir-autogen, elixir-format msgid "Git" @@ -1389,9 +1390,9 @@ msgstr "Numero massimo di post per pagina" #: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175 -#: lib/bds/tui.ex:1223 -#: lib/bds/tui.ex:1434 -#: lib/bds/tui.ex:1437 +#: lib/bds/tui.ex:1436 +#: lib/bds/tui.ex:1648 +#: lib/bds/tui.ex:1651 #: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:100 #: lib/bds/ui/sidebar.ex:578 @@ -1434,11 +1435,11 @@ msgstr "Metadati" #: 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:448 -#: lib/bds/tui.ex:229 -#: lib/bds/tui.ex:235 -#: lib/bds/tui.ex:246 -#: lib/bds/tui.ex:1034 -#: lib/bds/tui.ex:1350 +#: lib/bds/tui.ex:265 +#: lib/bds/tui.ex:271 +#: lib/bds/tui.ex:282 +#: lib/bds/tui.ex:1204 +#: lib/bds/tui.ex:1564 #: lib/bds/ui/registry.ex:111 #, elixir-autogen, elixir-format msgid "Metadata Diff" @@ -1484,7 +1485,7 @@ msgstr "Nuova pagina" #: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/shell_live/sidebar_create.ex:41 -#: lib/bds/tui.ex:186 +#: lib/bds/tui.ex:221 #, elixir-autogen, elixir-format msgid "New Post" msgstr "Nuovo post" @@ -1762,8 +1763,8 @@ msgid "Open Data Folder" msgstr "Apri cartella dati" #: lib/bds/desktop/shell_live/index.html.heex:644 -#: lib/bds/tui.ex:507 -#: lib/bds/tui.ex:512 +#: lib/bds/tui.ex:632 +#: lib/bds/tui.ex:637 #, elixir-autogen, elixir-format msgid "Open Existing Blog" msgstr "Apri blog esistente" @@ -1775,7 +1776,7 @@ msgid "Open Settings" msgstr "Apri Impostazioni" #: lib/bds/desktop/menu_bar.ex:217 -#: lib/bds/tui.ex:1374 +#: lib/bds/tui.ex:1588 #, elixir-autogen, elixir-format msgid "Open in Browser" msgstr "Apri nel browser" @@ -1923,8 +1924,8 @@ msgstr "Articolo salvato" #: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:761 -#: lib/bds/tui.ex:1222 -#: lib/bds/tui.ex:1233 +#: lib/bds/tui.ex:1435 +#: lib/bds/tui.ex:1447 #: lib/bds/ui/registry.ex:14 #: lib/bds/ui/sidebar.ex:271 #, elixir-autogen, elixir-format @@ -1983,8 +1984,8 @@ msgstr "Progetto e pubblicazione" #: lib/bds/desktop/shell_live/chat_surface.ex:15 #: lib/bds/desktop/shell_live/index.html.heex:623 -#: lib/bds/tui.ex:420 -#: lib/bds/tui.ex:425 +#: lib/bds/tui.ex:545 +#: lib/bds/tui.ex:550 #, elixir-autogen, elixir-format msgid "Projects" msgstr "Progetti" @@ -2050,15 +2051,15 @@ msgid "Ready to import:" msgstr "Pronto per importare:" #: lib/bds/desktop/menu_bar.ex:248 -#: lib/bds/tui.ex:504 -#: lib/bds/tui.ex:1354 +#: lib/bds/tui.ex:629 +#: lib/bds/tui.ex:1568 #, elixir-autogen, elixir-format msgid "Rebuild Database" msgstr "Ricostruisci database" #: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 -#: lib/bds/tui.ex:1358 +#: lib/bds/tui.ex:1572 #, elixir-autogen, elixir-format msgid "Rebuild Embedding Index" msgstr "Ricostruisci indice embeddings" @@ -2116,7 +2117,7 @@ msgid "Refresh Translation" msgstr "Aggiorna traduzione" #: lib/bds/desktop/menu_bar.ex:252 -#: lib/bds/tui.ex:1361 +#: lib/bds/tui.ex:1575 #, elixir-autogen, elixir-format msgid "Regenerate Calendar" msgstr "Rigenera calendario" @@ -2127,7 +2128,7 @@ msgid "Regenerate Missing Thumbnails" msgstr "Rigenera miniature mancanti" #: lib/bds/desktop/menu_bar.ex:249 -#: lib/bds/tui.ex:1355 +#: lib/bds/tui.ex:1569 #, elixir-autogen, elixir-format msgid "Reindex Text" msgstr "Reindicizza testo" @@ -2313,7 +2314,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:219 #: lib/bds/desktop/shell_live/script_editor.ex:234 -#: lib/bds/tui.ex:1225 +#: lib/bds/tui.ex:1438 #: lib/bds/ui/registry.ex:38 #: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:115 @@ -2441,9 +2442,9 @@ msgid "Site" msgstr "Sito" #: lib/bds/desktop/shell_live/misc_editor.ex:412 -#: lib/bds/tui.ex:262 -#: lib/bds/tui.ex:264 -#: lib/bds/tui.ex:1039 +#: lib/bds/tui.ex:298 +#: lib/bds/tui.ex:300 +#: lib/bds/tui.ex:1209 #: lib/bds/ui/registry.ex:125 #, elixir-autogen, elixir-format msgid "Site Validation" @@ -2564,7 +2565,7 @@ msgstr "Nome del tag" #: 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_html/tags_editor.html.heex:11 -#: lib/bds/tui.ex:1226 +#: lib/bds/tui.ex:1439 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 #: lib/bds/ui/sidebar.ex:289 @@ -2576,7 +2577,7 @@ msgstr "Tag" #: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 -#: lib/bds/tui.ex:685 +#: lib/bds/tui.ex:828 #, elixir-autogen, elixir-format msgid "Tasks" msgstr "Attività" @@ -2621,7 +2622,7 @@ msgstr "La sintassi del template è valida" #: 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:191 -#: lib/bds/tui.ex:1224 +#: lib/bds/tui.ex:1437 #: lib/bds/ui/registry.ex:46 #: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:122 @@ -2844,7 +2845,7 @@ msgid "Updated URLs" msgstr "URL aggiornati" #: lib/bds/desktop/menu_bar.ex:259 -#: lib/bds/tui.ex:1373 +#: lib/bds/tui.ex:1587 #, elixir-autogen, elixir-format msgid "Upload Site" msgstr "Carica sito" @@ -2872,13 +2873,13 @@ msgid "Validate" msgstr "Valida" #: lib/bds/desktop/menu_bar.ex:258 -#: lib/bds/tui.ex:1351 +#: lib/bds/tui.ex:1565 #, elixir-autogen, elixir-format msgid "Validate Site" msgstr "Valida sito" #: lib/bds/desktop/menu_bar.ex:253 -#: lib/bds/tui.ex:1364 +#: lib/bds/tui.ex:1578 #, elixir-autogen, elixir-format msgid "Validate Translations" msgstr "Valida traduzioni" @@ -3349,11 +3350,15 @@ msgstr "Modifiche" #: lib/bds/desktop/shell_live/git_handler.ex:46 #: lib/bds/desktop/shell_live/git_handler.ex:52 #: lib/bds/desktop/shell_live/sidebar_components.ex:556 +#: lib/bds/tui.ex:321 +#: lib/bds/tui.ex:327 +#: lib/bds/tui.ex:330 #, elixir-autogen, elixir-format msgid "Commit" msgstr "Commit" #: lib/bds/desktop/shell_live/sidebar_components.ex:555 +#: lib/bds/tui.ex:1031 #, elixir-autogen, elixir-format msgid "Commit message" msgstr "Messaggio di commit" @@ -3424,6 +3429,7 @@ msgstr "Pulisci LFS" #: lib/bds/desktop/shell_live/git_handler.ex:17 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 +#: lib/bds/tui.ex:800 #, elixir-autogen, elixir-format msgid "Pull" msgstr "Pull" @@ -3431,6 +3437,7 @@ msgstr "Pull" #: lib/bds/desktop/shell_live/git_handler.ex:18 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 +#: lib/bds/tui.ex:801 #, elixir-autogen, elixir-format msgid "Push" msgstr "Push" @@ -3543,7 +3550,7 @@ msgid "Suggested tags" msgstr "Tag suggeriti" #: lib/bds/desktop/menu_bar.ex:257 -#: lib/bds/tui.ex:1352 +#: lib/bds/tui.ex:1566 #, elixir-autogen, elixir-format msgid "Force Render Site" msgstr "Forza la rigenerazione del sito" @@ -3640,82 +3647,82 @@ msgstr "OK" 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." -#: lib/bds/tui.ex:1310 +#: lib/bds/tui.ex:1524 #, elixir-autogen, elixir-format msgid "AI is unavailable in airplane mode without a local endpoint." msgstr "L'IA non è disponibile in modalità aereo senza un endpoint locale." -#: lib/bds/tui.ex:1437 +#: lib/bds/tui.ex:1651 #, elixir-autogen, elixir-format msgid "Could not load this file." msgstr "Impossibile caricare questo file." -#: lib/bds/tui.ex:194 +#: lib/bds/tui.ex:230 #, elixir-autogen, elixir-format 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." -#: lib/bds/tui.ex:658 +#: lib/bds/tui.ex:783 #, elixir-autogen, elixir-format msgid "No suggestions returned." msgstr "Nessun suggerimento ricevuto." -#: lib/bds/tui.ex:1434 +#: lib/bds/tui.ex:1648 #, elixir-autogen, elixir-format msgid "Only images can be previewed." msgstr "Solo le immagini possono essere visualizzate in anteprima." -#: lib/bds/tui.ex:1233 +#: lib/bds/tui.ex:1447 #, elixir-autogen, elixir-format msgid "Post not found." msgstr "Post non trovato." -#: lib/bds/tui.ex:800 +#: lib/bds/tui.ex:969 #, elixir-autogen, elixir-format msgid "Press enter to preview %{name}." msgstr "Premi Invio per l'anteprima di %{name}." -#: lib/bds/tui.ex:1280 +#: lib/bds/tui.ex:1494 #, elixir-autogen, elixir-format msgid "Published." msgstr "Pubblicato." -#: lib/bds/tui.ex:1296 +#: lib/bds/tui.ex:1510 #, elixir-autogen, elixir-format msgid "Save before switching languages." msgstr "Salva prima di cambiare lingua." -#: lib/bds/tui.ex:1281 +#: lib/bds/tui.ex:1495 #, elixir-autogen, elixir-format msgid "Saved." msgstr "Salvato." -#: lib/bds/tui.ex:803 +#: lib/bds/tui.ex:972 #, elixir-autogen, elixir-format msgid "Select an entry and press enter to open it." msgstr "Seleziona una voce e premi Invio per aprirla." -#: lib/bds/tui.ex:655 +#: lib/bds/tui.ex:780 #, elixir-autogen, elixir-format msgid "Suggestions applied." msgstr "Suggerimenti applicati." -#: lib/bds/tui.ex:815 +#: lib/bds/tui.ex:984 #, elixir-autogen, elixir-format msgid "Title (ctrl+t to edit)" msgstr "Titolo (ctrl+t per modificare)" -#: lib/bds/tui.ex:814 +#: lib/bds/tui.ex:983 #, elixir-autogen, elixir-format msgid "Title (editing — enter to confirm)" msgstr "Titolo (modifica — Invio per confermare)" -#: lib/bds/tui.ex:863 +#: lib/bds/tui.ex:1033 #, elixir-autogen, elixir-format msgid "Working…" msgstr "Elaborazione…" -#: lib/bds/tui.ex:885 +#: lib/bds/tui.ex:1055 #, elixir-autogen, elixir-format msgid "esc to close" msgstr "esc per chiudere" @@ -3752,122 +3759,158 @@ msgstr "Indirizzo del server (user@host o user@host:port), autenticazione a chia msgid "Use the form user@host or user@host:port." msgstr "Usa il formato user@host o user@host:port." -#: lib/bds/tui.ex:834 +#: lib/bds/tui.ex:1003 #, elixir-autogen, elixir-format msgid "Preview (ctrl+e to edit)" msgstr "Anteprima (ctrl+e per modificare)" -#: lib/bds/tui.ex:1128 +#: lib/bds/tui.ex:1305 #, 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" 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:685 +#: lib/bds/tui.ex:828 #, elixir-autogen, elixir-format msgid "All tasks finished." msgstr "Tutte le attività sono terminate." -#: lib/bds/tui.ex:911 +#: lib/bds/tui.ex:1081 #, elixir-autogen, elixir-format msgid "Commands — esc to close" msgstr "Comandi — esc per chiudere" -#: lib/bds/tui.ex:529 +#: lib/bds/tui.ex:654 #, elixir-autogen, elixir-format msgid "Unknown command." msgstr "Comando sconosciuto." -#: lib/bds/tui.ex:901 +#: lib/bds/tui.ex:1071 #, elixir-autogen, elixir-format msgid "[report/apply in GUI]" msgstr "[report/applicazione nella GUI]" -#: lib/bds/tui.ex:1050 +#: lib/bds/tui.ex:1220 #, elixir-autogen, elixir-format msgid "%{diffs} differences · %{orphans} orphan files" msgstr "%{diffs} differenze · %{orphans} file orfani" -#: lib/bds/tui.ex:1082 +#: lib/bds/tui.ex:1252 #, elixir-autogen, elixir-format msgid "Expected %{expected} · Existing %{existing}" msgstr "Attesi %{expected} · Esistenti %{existing}" -#: lib/bds/tui.ex:1099 +#: lib/bds/tui.ex:1269 #, elixir-autogen, elixir-format msgid "Extra files (will be removed):" msgstr "File in eccesso (verranno rimossi):" -#: lib/bds/tui.ex:1095 +#: lib/bds/tui.ex:1265 #, elixir-autogen, elixir-format msgid "Missing pages (will be rendered):" msgstr "Pagine mancanti (verranno generate):" -#: lib/bds/tui.ex:262 +#: lib/bds/tui.ex:298 #, elixir-autogen, elixir-format msgid "Nothing to apply." msgstr "Niente da applicare." -#: lib/bds/tui.ex:229 +#: lib/bds/tui.ex:265 #, elixir-autogen, elixir-format msgid "Nothing to repair." msgstr "Niente da riparare." -#: lib/bds/tui.ex:1073 +#: lib/bds/tui.ex:1243 #, elixir-autogen, elixir-format msgid "Orphan files (not in database):" msgstr "File orfani (non presenti nel database):" -#: lib/bds/tui.ex:1089 +#: lib/bds/tui.ex:1259 #, elixir-autogen, elixir-format msgid "Sitemap changed." msgstr "Sitemap modificata." -#: lib/bds/tui.ex:1103 +#: lib/bds/tui.ex:1273 #, elixir-autogen, elixir-format msgid "Updated posts (will be re-rendered):" msgstr "Post aggiornati (verranno rigenerati):" -#: lib/bds/tui.ex:1040 +#: lib/bds/tui.ex:1210 #, elixir-autogen, elixir-format msgid "enter apply changes · esc close" msgstr "invio applica le modifiche · esc chiudi" -#: lib/bds/tui.ex:1035 +#: lib/bds/tui.ex:1205 #, elixir-autogen, elixir-format msgid "enter repair all from files · esc close" msgstr "invio ripara tutto dai file · esc chiudi" -#: lib/bds/tui.ex:494 +#: lib/bds/tui.ex:619 #, elixir-autogen, elixir-format msgid "Imported Blog" msgstr "Blog importato" -#: lib/bds/tui.ex:513 +#: lib/bds/tui.ex:638 #, elixir-autogen, elixir-format msgid "Not a folder: %{path}" msgstr "Non è una cartella: %{path}" -#: lib/bds/tui.ex:977 +#: lib/bds/tui.ex:1147 #, elixir-autogen, elixir-format msgid "Projects — enter switch · o open existing · esc close" msgstr "Progetti — invio cambia · o apri esistente · esc chiudi" -#: lib/bds/tui.ex:421 +#: lib/bds/tui.ex:546 #, elixir-autogen, elixir-format msgid "Switched to %{name}." msgstr "Passato a %{name}." -#: lib/bds/tui.ex:1005 +#: lib/bds/tui.ex:1175 #, elixir-autogen, elixir-format msgid "Matching folders" msgstr "Cartelle corrispondenti" -#: lib/bds/tui.ex:943 +#: lib/bds/tui.ex:1113 #, elixir-autogen, elixir-format msgid "Open Existing Blog — type a folder path · tab complete · enter open · esc back" msgstr "Apri blog esistente — digita il percorso di una cartella · tab completa · invio apri · esc indietro" -#: lib/bds/tui.ex:1121 +#: lib/bds/tui.ex:1298 #, elixir-autogen, elixir-format msgid "enter open · n new post · 1-5 views · p projects · / search · : commands (:? help) · r refresh · ctrl+q quit" msgstr "invio apri · n nuovo post · 1-5 viste · p progetti · / cerca · : comandi (:? aiuto) · r aggiorna · ctrl+q esci" + +#: lib/bds/tui.ex:321 +#, elixir-autogen, elixir-format +msgid "Commit message required." +msgstr "Messaggio di commit obbligatorio." + +#: lib/bds/tui.ex:327 +#, elixir-autogen, elixir-format +msgid "Committed." +msgstr "Commit eseguito." + +#: lib/bds/tui.ex:960 +#, elixir-autogen, elixir-format +msgid "Diff (pgup/pgdn scroll)" +msgstr "Diff (pgup/pgdn per scorrere)" + +#: lib/bds/tui.ex:1333 +#, elixir-autogen, elixir-format +msgid "No changes." +msgstr "Nessuna modifica." + +#: lib/bds/tui.ex:387 +#, elixir-autogen, elixir-format +msgid "No diff for this file." +msgstr "Nessun diff per questo file." + +#: lib/bds/tui.ex:375 +#: lib/bds/tui.ex:947 +#, elixir-autogen, elixir-format +msgid "Not a git repository." +msgstr "Non è un repository git." + +#: lib/bds/tui.ex:1291 +#, elixir-autogen, elixir-format +msgid "c commit · u pull · s push · enter jump to file · pgup/pgdn scroll diff · 1-5 views · ctrl+q quit" +msgstr "c commit · u pull · s push · invio vai al file · pgup/pgdn scorri il diff · 1-5 viste · ctrl+q esci" diff --git a/priv/gettext/ui.pot b/priv/gettext/ui.pot index c00ee35..5764463 100644 --- a/priv/gettext/ui.pot +++ b/priv/gettext/ui.pot @@ -94,11 +94,11 @@ msgstr "" #: 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_html/post_editor.html.heex:43 -#: lib/bds/tui.ex:655 -#: lib/bds/tui.ex:658 -#: lib/bds/tui.ex:661 -#: lib/bds/tui.ex:669 -#: lib/bds/tui.ex:1309 +#: lib/bds/tui.ex:780 +#: lib/bds/tui.ex:783 +#: lib/bds/tui.ex:786 +#: lib/bds/tui.ex:794 +#: lib/bds/tui.ex:1523 #, elixir-autogen, elixir-format msgid "AI Suggestions" msgstr "" @@ -585,7 +585,7 @@ msgid "Collapse unchanged diff hunks" msgstr "" #: lib/bds/desktop/shell_live/overlay_manager.ex:422 -#: lib/bds/tui.ex:1405 +#: lib/bds/tui.ex:1619 #, elixir-autogen, elixir-format msgid "Command completed" msgstr "" @@ -603,7 +603,7 @@ msgstr "" #: 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/template_editor_html/template_editor.html.heex:32 -#: lib/bds/tui.ex:845 +#: lib/bds/tui.ex:1014 #: lib/bds/ui/sidebar.ex:801 #, elixir-autogen, elixir-format msgid "Content" @@ -1043,7 +1043,7 @@ msgid "Filename" msgstr "" #: lib/bds/desktop/menu_bar.ex:254 -#: lib/bds/tui.ex:1369 +#: lib/bds/tui.ex:1583 #, elixir-autogen, elixir-format msgid "Fill Missing Translations" msgstr "" @@ -1054,7 +1054,7 @@ msgid "Find" msgstr "" #: lib/bds/desktop/menu_bar.ex:255 -#: lib/bds/tui.ex:1372 +#: lib/bds/tui.ex:1586 #, elixir-autogen, elixir-format msgid "Find Duplicate Posts" msgstr "" @@ -1081,13 +1081,14 @@ msgid "Gallery" msgstr "" #: lib/bds/desktop/menu_bar.ex:256 -#: lib/bds/tui.ex:1353 +#: lib/bds/tui.ex:1567 #, elixir-autogen, elixir-format msgid "Generate Site" msgstr "" #: lib/bds/desktop/shell_live.ex:792 #: lib/bds/desktop/shell_live/socket_state.ex:109 +#: lib/bds/tui.ex:1440 #: lib/bds/ui/sidebar.ex:826 #, elixir-autogen, elixir-format msgid "Git" @@ -1402,9 +1403,9 @@ msgstr "" #: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175 -#: lib/bds/tui.ex:1223 -#: lib/bds/tui.ex:1434 -#: lib/bds/tui.ex:1437 +#: lib/bds/tui.ex:1436 +#: lib/bds/tui.ex:1648 +#: lib/bds/tui.ex:1651 #: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:100 #: lib/bds/ui/sidebar.ex:578 @@ -1447,11 +1448,11 @@ msgstr "" #: 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:448 -#: lib/bds/tui.ex:229 -#: lib/bds/tui.ex:235 -#: lib/bds/tui.ex:246 -#: lib/bds/tui.ex:1034 -#: lib/bds/tui.ex:1350 +#: lib/bds/tui.ex:265 +#: lib/bds/tui.ex:271 +#: lib/bds/tui.ex:282 +#: lib/bds/tui.ex:1204 +#: lib/bds/tui.ex:1564 #: lib/bds/ui/registry.ex:111 #, elixir-autogen, elixir-format msgid "Metadata Diff" @@ -1497,7 +1498,7 @@ msgstr "" #: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/shell_live/sidebar_create.ex:41 -#: lib/bds/tui.ex:186 +#: lib/bds/tui.ex:221 #, elixir-autogen, elixir-format msgid "New Post" msgstr "" @@ -1775,8 +1776,8 @@ msgid "Open Data Folder" msgstr "" #: lib/bds/desktop/shell_live/index.html.heex:644 -#: lib/bds/tui.ex:507 -#: lib/bds/tui.ex:512 +#: lib/bds/tui.ex:632 +#: lib/bds/tui.ex:637 #, elixir-autogen, elixir-format msgid "Open Existing Blog" msgstr "" @@ -1788,7 +1789,7 @@ msgid "Open Settings" msgstr "" #: lib/bds/desktop/menu_bar.ex:217 -#: lib/bds/tui.ex:1374 +#: lib/bds/tui.ex:1588 #, elixir-autogen, elixir-format msgid "Open in Browser" msgstr "" @@ -1936,8 +1937,8 @@ msgstr "" #: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:761 -#: lib/bds/tui.ex:1222 -#: lib/bds/tui.ex:1233 +#: lib/bds/tui.ex:1435 +#: lib/bds/tui.ex:1447 #: lib/bds/ui/registry.ex:14 #: lib/bds/ui/sidebar.ex:271 #, elixir-autogen, elixir-format @@ -1996,8 +1997,8 @@ msgstr "" #: lib/bds/desktop/shell_live/chat_surface.ex:15 #: lib/bds/desktop/shell_live/index.html.heex:623 -#: lib/bds/tui.ex:420 -#: lib/bds/tui.ex:425 +#: lib/bds/tui.ex:545 +#: lib/bds/tui.ex:550 #, elixir-autogen, elixir-format msgid "Projects" msgstr "" @@ -2063,15 +2064,15 @@ msgid "Ready to import:" msgstr "" #: lib/bds/desktop/menu_bar.ex:248 -#: lib/bds/tui.ex:504 -#: lib/bds/tui.ex:1354 +#: lib/bds/tui.ex:629 +#: lib/bds/tui.ex:1568 #, elixir-autogen, elixir-format msgid "Rebuild Database" msgstr "" #: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 -#: lib/bds/tui.ex:1358 +#: lib/bds/tui.ex:1572 #, elixir-autogen, elixir-format msgid "Rebuild Embedding Index" msgstr "" @@ -2129,7 +2130,7 @@ msgid "Refresh Translation" msgstr "" #: lib/bds/desktop/menu_bar.ex:252 -#: lib/bds/tui.ex:1361 +#: lib/bds/tui.ex:1575 #, elixir-autogen, elixir-format msgid "Regenerate Calendar" msgstr "" @@ -2140,7 +2141,7 @@ msgid "Regenerate Missing Thumbnails" msgstr "" #: lib/bds/desktop/menu_bar.ex:249 -#: lib/bds/tui.ex:1355 +#: lib/bds/tui.ex:1569 #, elixir-autogen, elixir-format msgid "Reindex Text" msgstr "" @@ -2326,7 +2327,7 @@ msgstr "" #: 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:234 -#: lib/bds/tui.ex:1225 +#: lib/bds/tui.ex:1438 #: lib/bds/ui/registry.ex:38 #: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:115 @@ -2454,9 +2455,9 @@ msgid "Site" msgstr "" #: lib/bds/desktop/shell_live/misc_editor.ex:412 -#: lib/bds/tui.ex:262 -#: lib/bds/tui.ex:264 -#: lib/bds/tui.ex:1039 +#: lib/bds/tui.ex:298 +#: lib/bds/tui.ex:300 +#: lib/bds/tui.ex:1209 #: lib/bds/ui/registry.ex:125 #, elixir-autogen, elixir-format msgid "Site Validation" @@ -2577,7 +2578,7 @@ msgstr "" #: 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_html/tags_editor.html.heex:11 -#: lib/bds/tui.ex:1226 +#: lib/bds/tui.ex:1439 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 #: lib/bds/ui/sidebar.ex:289 @@ -2589,7 +2590,7 @@ msgstr "" #: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 -#: lib/bds/tui.ex:685 +#: lib/bds/tui.ex:828 #, elixir-autogen, elixir-format msgid "Tasks" msgstr "" @@ -2634,7 +2635,7 @@ msgstr "" #: 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:191 -#: lib/bds/tui.ex:1224 +#: lib/bds/tui.ex:1437 #: lib/bds/ui/registry.ex:46 #: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:122 @@ -2857,7 +2858,7 @@ msgid "Updated URLs" msgstr "" #: lib/bds/desktop/menu_bar.ex:259 -#: lib/bds/tui.ex:1373 +#: lib/bds/tui.ex:1587 #, elixir-autogen, elixir-format msgid "Upload Site" msgstr "" @@ -2885,13 +2886,13 @@ msgid "Validate" msgstr "" #: lib/bds/desktop/menu_bar.ex:258 -#: lib/bds/tui.ex:1351 +#: lib/bds/tui.ex:1565 #, elixir-autogen, elixir-format msgid "Validate Site" msgstr "" #: lib/bds/desktop/menu_bar.ex:253 -#: lib/bds/tui.ex:1364 +#: lib/bds/tui.ex:1578 #, elixir-autogen, elixir-format msgid "Validate Translations" msgstr "" @@ -3362,11 +3363,15 @@ msgstr "" #: lib/bds/desktop/shell_live/git_handler.ex:46 #: lib/bds/desktop/shell_live/git_handler.ex:52 #: lib/bds/desktop/shell_live/sidebar_components.ex:556 +#: lib/bds/tui.ex:321 +#: lib/bds/tui.ex:327 +#: lib/bds/tui.ex:330 #, elixir-autogen, elixir-format msgid "Commit" msgstr "" #: lib/bds/desktop/shell_live/sidebar_components.ex:555 +#: lib/bds/tui.ex:1031 #, elixir-autogen, elixir-format msgid "Commit message" msgstr "" @@ -3437,6 +3442,7 @@ msgstr "" #: lib/bds/desktop/shell_live/git_handler.ex:17 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 +#: lib/bds/tui.ex:800 #, elixir-autogen, elixir-format msgid "Pull" msgstr "" @@ -3444,6 +3450,7 @@ msgstr "" #: lib/bds/desktop/shell_live/git_handler.ex:18 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 +#: lib/bds/tui.ex:801 #, elixir-autogen, elixir-format msgid "Push" msgstr "" @@ -3556,7 +3563,7 @@ msgid "Suggested tags" msgstr "" #: lib/bds/desktop/menu_bar.ex:257 -#: lib/bds/tui.ex:1352 +#: lib/bds/tui.ex:1566 #, elixir-autogen, elixir-format msgid "Force Render Site" msgstr "" @@ -3653,82 +3660,82 @@ msgstr "" msgid "The endpoint returned no models. You can still type a model name manually." msgstr "" -#: lib/bds/tui.ex:1310 +#: lib/bds/tui.ex:1524 #, elixir-autogen, elixir-format msgid "AI is unavailable in airplane mode without a local endpoint." msgstr "" -#: lib/bds/tui.ex:1437 +#: lib/bds/tui.ex:1651 #, elixir-autogen, elixir-format msgid "Could not load this file." msgstr "" -#: lib/bds/tui.ex:194 +#: lib/bds/tui.ex:230 #, elixir-autogen, elixir-format msgid "Editing this item is not available in the terminal UI yet." msgstr "" -#: lib/bds/tui.ex:658 +#: lib/bds/tui.ex:783 #, elixir-autogen, elixir-format msgid "No suggestions returned." msgstr "" -#: lib/bds/tui.ex:1434 +#: lib/bds/tui.ex:1648 #, elixir-autogen, elixir-format msgid "Only images can be previewed." msgstr "" -#: lib/bds/tui.ex:1233 +#: lib/bds/tui.ex:1447 #, elixir-autogen, elixir-format msgid "Post not found." msgstr "" -#: lib/bds/tui.ex:800 +#: lib/bds/tui.ex:969 #, elixir-autogen, elixir-format msgid "Press enter to preview %{name}." msgstr "" -#: lib/bds/tui.ex:1280 +#: lib/bds/tui.ex:1494 #, elixir-autogen, elixir-format msgid "Published." msgstr "" -#: lib/bds/tui.ex:1296 +#: lib/bds/tui.ex:1510 #, elixir-autogen, elixir-format msgid "Save before switching languages." msgstr "" -#: lib/bds/tui.ex:1281 +#: lib/bds/tui.ex:1495 #, elixir-autogen, elixir-format msgid "Saved." msgstr "" -#: lib/bds/tui.ex:803 +#: lib/bds/tui.ex:972 #, elixir-autogen, elixir-format msgid "Select an entry and press enter to open it." msgstr "" -#: lib/bds/tui.ex:655 +#: lib/bds/tui.ex:780 #, elixir-autogen, elixir-format msgid "Suggestions applied." msgstr "" -#: lib/bds/tui.ex:815 +#: lib/bds/tui.ex:984 #, elixir-autogen, elixir-format msgid "Title (ctrl+t to edit)" msgstr "" -#: lib/bds/tui.ex:814 +#: lib/bds/tui.ex:983 #, elixir-autogen, elixir-format msgid "Title (editing — enter to confirm)" msgstr "" -#: lib/bds/tui.ex:863 +#: lib/bds/tui.ex:1033 #, elixir-autogen, elixir-format msgid "Working…" msgstr "" -#: lib/bds/tui.ex:885 +#: lib/bds/tui.ex:1055 #, elixir-autogen, elixir-format msgid "esc to close" msgstr "" @@ -3765,122 +3772,158 @@ msgstr "" msgid "Use the form user@host or user@host:port." msgstr "" -#: lib/bds/tui.ex:834 +#: lib/bds/tui.ex:1003 #, elixir-autogen, elixir-format msgid "Preview (ctrl+e to edit)" msgstr "" -#: lib/bds/tui.ex:1128 +#: lib/bds/tui.ex:1305 #, 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" msgstr "" -#: lib/bds/tui.ex:685 +#: lib/bds/tui.ex:828 #, elixir-autogen, elixir-format msgid "All tasks finished." msgstr "" -#: lib/bds/tui.ex:911 +#: lib/bds/tui.ex:1081 #, elixir-autogen, elixir-format msgid "Commands — esc to close" msgstr "" -#: lib/bds/tui.ex:529 +#: lib/bds/tui.ex:654 #, elixir-autogen, elixir-format msgid "Unknown command." msgstr "" -#: lib/bds/tui.ex:901 +#: lib/bds/tui.ex:1071 #, elixir-autogen, elixir-format msgid "[report/apply in GUI]" msgstr "" -#: lib/bds/tui.ex:1050 +#: lib/bds/tui.ex:1220 #, elixir-autogen, elixir-format msgid "%{diffs} differences · %{orphans} orphan files" msgstr "" -#: lib/bds/tui.ex:1082 +#: lib/bds/tui.ex:1252 #, elixir-autogen, elixir-format msgid "Expected %{expected} · Existing %{existing}" msgstr "" -#: lib/bds/tui.ex:1099 +#: lib/bds/tui.ex:1269 #, elixir-autogen, elixir-format msgid "Extra files (will be removed):" msgstr "" -#: lib/bds/tui.ex:1095 +#: lib/bds/tui.ex:1265 #, elixir-autogen, elixir-format msgid "Missing pages (will be rendered):" msgstr "" -#: lib/bds/tui.ex:262 +#: lib/bds/tui.ex:298 #, elixir-autogen, elixir-format msgid "Nothing to apply." msgstr "" -#: lib/bds/tui.ex:229 +#: lib/bds/tui.ex:265 #, elixir-autogen, elixir-format msgid "Nothing to repair." msgstr "" -#: lib/bds/tui.ex:1073 +#: lib/bds/tui.ex:1243 #, elixir-autogen, elixir-format msgid "Orphan files (not in database):" msgstr "" -#: lib/bds/tui.ex:1089 +#: lib/bds/tui.ex:1259 #, elixir-autogen, elixir-format msgid "Sitemap changed." msgstr "" -#: lib/bds/tui.ex:1103 +#: lib/bds/tui.ex:1273 #, elixir-autogen, elixir-format msgid "Updated posts (will be re-rendered):" msgstr "" -#: lib/bds/tui.ex:1040 +#: lib/bds/tui.ex:1210 #, elixir-autogen, elixir-format msgid "enter apply changes · esc close" msgstr "" -#: lib/bds/tui.ex:1035 +#: lib/bds/tui.ex:1205 #, elixir-autogen, elixir-format msgid "enter repair all from files · esc close" msgstr "" -#: lib/bds/tui.ex:494 +#: lib/bds/tui.ex:619 #, elixir-autogen, elixir-format msgid "Imported Blog" msgstr "" -#: lib/bds/tui.ex:513 +#: lib/bds/tui.ex:638 #, elixir-autogen, elixir-format msgid "Not a folder: %{path}" msgstr "" -#: lib/bds/tui.ex:977 +#: lib/bds/tui.ex:1147 #, elixir-autogen, elixir-format msgid "Projects — enter switch · o open existing · esc close" msgstr "" -#: lib/bds/tui.ex:421 +#: lib/bds/tui.ex:546 #, elixir-autogen, elixir-format msgid "Switched to %{name}." msgstr "" -#: lib/bds/tui.ex:1005 +#: lib/bds/tui.ex:1175 #, elixir-autogen, elixir-format msgid "Matching folders" msgstr "" -#: lib/bds/tui.ex:943 +#: lib/bds/tui.ex:1113 #, elixir-autogen, elixir-format msgid "Open Existing Blog — type a folder path · tab complete · enter open · esc back" msgstr "" -#: lib/bds/tui.ex:1121 +#: lib/bds/tui.ex:1298 #, elixir-autogen, elixir-format msgid "enter open · n new post · 1-5 views · p projects · / search · : commands (:? help) · r refresh · ctrl+q quit" msgstr "" + +#: lib/bds/tui.ex:321 +#, elixir-autogen, elixir-format +msgid "Commit message required." +msgstr "" + +#: lib/bds/tui.ex:327 +#, elixir-autogen, elixir-format +msgid "Committed." +msgstr "" + +#: lib/bds/tui.ex:960 +#, elixir-autogen, elixir-format +msgid "Diff (pgup/pgdn scroll)" +msgstr "" + +#: lib/bds/tui.ex:1333 +#, elixir-autogen, elixir-format +msgid "No changes." +msgstr "" + +#: lib/bds/tui.ex:387 +#, elixir-autogen, elixir-format +msgid "No diff for this file." +msgstr "" + +#: lib/bds/tui.ex:375 +#: lib/bds/tui.ex:947 +#, elixir-autogen, elixir-format +msgid "Not a git repository." +msgstr "" + +#: lib/bds/tui.ex:1291 +#, elixir-autogen, elixir-format +msgid "c commit · u pull · s push · enter jump to file · pgup/pgdn scroll diff · 1-5 views · ctrl+q quit" +msgstr "" diff --git a/specs/tui.allium b/specs/tui.allium index 58358db..db1e9fd 100644 --- a/specs/tui.allium +++ b/specs/tui.allium @@ -110,6 +110,22 @@ rule CommandPrompt { ensures: CommandListShownOrExecuted() } +rule GitPanel { + when: TuiKeyPressed(code: "7") + -- "7" opens the git panel (issue #30) for content sync: the sidebar + -- lists the changed files from git status (code + path, branch with + -- ahead/behind counts in the title), the main area shows a + -- scrollable whole-folder diff (staged + unstaged, capped) paged + -- with pgup/pgdn; enter on a file jumps the diff to it. "c" opens a + -- status-line commit prompt (git add -A + commit, empty messages + -- rejected), "u" pulls (ff-only) and "s" pushes — both run off the + -- UI process and report back as a status toast. Every action is + -- BDS.Git, the same backend as the GUI git panel. A project folder + -- that is not a git repository shows a message and refuses the + -- actions. + ensures: GitPanelShownOrSynced() +} + rule ReportPanels { when: ShellTaskCompleted(route: "metadata_diff" | "site_validation") -- Completed metadata diff and site validation tasks open a diff --git a/test/bds/tui_test.exs b/test/bds/tui_test.exs index 61bc69e..e004232 100644 --- a/test/bds/tui_test.exs +++ b/test/bds/tui_test.exs @@ -680,6 +680,145 @@ defmodule BDS.TUITest do end end + describe "git view" do + defp git!(dir, args) do + {output, 0} = System.cmd("git", args, cd: dir, stderr_to_stdout: true) + output + end + + defp init_repo!(dir) do + git!(dir, ["init"]) + git!(dir, ["config", "user.email", "tui@test"]) + git!(dir, ["config", "user.name", "TUI Test"]) + File.write!(Path.join(dir, "tracked.md"), "original\n") + git!(dir, ["add", "-A"]) + git!(dir, ["commit", "-m", "initial"]) + end + + defp modify!(dir, file, content), do: File.write!(Path.join(dir, file), content) + + test "'7' opens the git view with changed files and a scrollable diff", %{project: project} do + dir = BDS.Projects.project_data_dir(project) + init_repo!(dir) + modify!(dir, "tracked.md", "changed\n") + File.write!(Path.join(dir, "new-file.md"), "brand new\n") + + state = mount!() |> press("7") + + assert state.view == "git" + labels = for {:item, item} <- state.items, do: item.label + assert "M tracked.md" in labels + assert "U new-file.md" in labels + + assert state.git != nil + assert Enum.any?(state.git.lines, &String.starts_with?(&1, "diff --git")) + assert screen_text(state, 140, 40) =~ "diff --git" + end + + test "pgdn/pgup scroll the diff", %{project: project} do + dir = BDS.Projects.project_data_dir(project) + init_repo!(dir) + modify!(dir, "tracked.md", Enum.map_join(1..60, "\n", &"line #{&1}") <> "\n") + + state = mount!() |> press("7") |> press("pagedown") + assert state.git.scroll > 0 + + state = press(state, "pageup") + assert state.git.scroll == 0 + end + + test "enter on a changed file jumps the diff to that file", %{project: project} do + dir = BDS.Projects.project_data_dir(project) + init_repo!(dir) + File.write!(Path.join(dir, "zz-later.md"), "z\n") + git!(dir, ["add", "-A"]) + git!(dir, ["commit", "-m", "second file"]) + modify!(dir, "tracked.md", "changed\n") + modify!(dir, "zz-later.md", "changed too\n") + + state = mount!() |> press("7") + index = Enum.find_index(state.items, fn {:item, item} -> item.id == "zz-later.md" end) + state = %{state | selected: index} |> press("enter") + + line = Enum.at(state.git.lines, state.git.scroll) + assert line =~ "diff --git" + assert line =~ "zz-later.md" + end + + test "'c' opens the commit prompt and enter commits everything", %{project: project} do + dir = BDS.Projects.project_data_dir(project) + init_repo!(dir) + modify!(dir, "tracked.md", "changed\n") + + state = mount!() |> press("7") |> press("c") + assert state.git_commit != nil + assert screen_text(state) =~ "Commit message:" + + state = state |> type("content sync") + assert screen_text(state) =~ "content sync" + + state = press(state, "enter") + + assert state.git_commit == nil + assert {:ok, %{files: []}} = BDS.Git.status(project.id) + assert state.items == [] + assert git!(dir, ["log", "-1", "--format=%s"]) =~ "content sync" + end + + test "an empty commit message is rejected", %{project: project} do + dir = BDS.Projects.project_data_dir(project) + init_repo!(dir) + modify!(dir, "tracked.md", "changed\n") + + state = mount!() |> press("7") |> press("c") |> press("enter") + + assert state.git_commit == nil + assert state.status != nil + assert {:ok, %{files: [_change]}} = BDS.Git.status(project.id) + end + + test "'u' pulls asynchronously and reports the result", %{project: project} do + dir = BDS.Projects.project_data_dir(project) + init_repo!(dir) + + state = mount!() |> press("7") |> press("u") + assert state.busy + + # No remote is configured, so the streamed result is an error toast. + assert_receive {:git_result, :pull, {:error, _reason}}, 5_000 + {:noreply, state} = BDS.TUI.handle_info({:git_result, :pull, {:error, {:git_failed, "no remote"}}}, state) + refute state.busy + assert state.status =~ "no remote" + end + + test "'s' pushes asynchronously", %{project: project} do + dir = BDS.Projects.project_data_dir(project) + init_repo!(dir) + + state = mount!() |> press("7") |> press("s") + assert state.busy + assert_receive {:git_result, :push, {:error, _reason}}, 5_000 + end + + test "git keys in a non-repo project only report", %{project: project} do + state = mount!() |> press("7") + + assert state.view == "git" + assert state.git == nil + assert state.items == [] + assert screen_text(state, 140, 40) =~ "Not a git repository." + + state = press(state, "c") + assert state.git_commit == nil + assert state.status != nil + + state = press(state, "u") + refute state.busy + refute_receive {:git_result, _op, _result}, 100 + _ = project + end + end + test "local tui mode stops the VM when the app exits" do parent = self() state = mount!(stop_vm_on_exit: true, stop_fun: fn -> send(parent, :vm_stopped) end)