feat: plan step 4 done

This commit is contained in:
2026-04-26 13:44:31 +02:00
parent 8e8d03fcb0
commit 3c91a30769
11 changed files with 1428 additions and 8 deletions

View File

@@ -68,6 +68,9 @@
"%{count} posts": "%{count} Beiträge",
"2 langs": "2 Sprachen",
"AI Assistant": "KI-Assistent",
"AI Suggestions": "KI-Vorschlaege",
"Alt Text": "Alt-Text",
"Apply Selected": "Auswahl anwenden",
"Across draft, published, and archive": "Über Entwürfe, veröffentlichte Beiträge und Archiv verteilt",
"Activated %{name}": "%{name} aktiviert",
"Archived": "Archiviert",
@@ -77,6 +80,8 @@
"Automation can boot the shell in a separate process and capture screenshots": "Die Automatisierung kann die Shell in einem separaten Prozess starten und Screenshots aufnehmen",
"Blog": "Blog",
"Calendar regeneration is not wired yet, but the base shell now surfaces the command and keeps the Output tab selectable.": "Die Kalender-Neuerstellung ist noch nicht verdrahtet, aber die Basisshell zeigt den Befehl jetzt an und hält den Ausgabe-Tab auswählbar.",
"Cancel": "Abbrechen",
"Caption": "Bildunterschrift",
"Chat": "Chat",
"Close %{title}": "%{title} schließen",
"Close tab": "Tab schließen",
@@ -129,8 +134,14 @@
"Desktop workbench shell wired through Elixir": "Desktop-Workbench-Shell über Elixir verdrahtet",
"Diff Reports": "Diff-Berichte",
"Diffs": "Differenzen",
"Delete": "Loeschen",
"Delete Media": "Medium loeschen",
"Delete Tag": "Tag loeschen",
"Display Text": "Anzeigetext",
"Documentation": "Dokumentation",
"Drafts": "Entwürfe",
"Excerpt": "Auszug",
"External": "Extern",
"Drafts, published entries, and archive history": "Entwürfe, veröffentlichte Einträge und Archivverlauf",
"Edit": "Bearbeiten",
"Extra": "Zusätzlich",
@@ -139,12 +150,17 @@
"Filesystem Sync": "Dateisystem-Abgleich",
"Fill Missing Translations": "Fehlende Übersetzungen ergänzen",
"Find Duplicates": "Duplikate finden",
"Gallery": "Galerie",
"Git": "Git",
"Git Log": "Git-Protokoll",
"Help": "Hilfe",
"Idle": "Leerlauf",
"Images and documents indexed": "Bilder und Dokumente indexiert",
"Import": "Importieren",
"Insert": "Einfuegen",
"Insert Link": "Link einfuegen",
"Insert Media": "Medium einfuegen",
"Internal": "Intern",
"Launch plan": "Startplan",
"Main Language": "Hauptsprache",
"Media": "Medien",
@@ -199,6 +215,7 @@
"Source Control": "Quellcodeverwaltung",
"Stale": "Veraltet",
"Stale Pages": "Veraltete Seiten",
"Slug": "Slug",
"Status": "Status",
"Style": "Stil",
"Switch project": "Projekt wechseln",
@@ -206,15 +223,22 @@
"Tasks": "Aufgaben",
"Template": "Vorlage",
"Templates": "Vorlagen",
"Title": "Titel",
"The app window is now served from the Elixir shell renderer.": "Das App-Fenster wird jetzt vom Elixir-Shell-Renderer ausgeliefert.",
"The shared lower panel is available for tasks, output, git details, and editor-specific diagnostics.": "Das gemeinsame untere Panel steht für Aufgaben, Ausgabe, Git-Details und editorbezogene Diagnosen bereit.",
"Toggle assistant": "Assistent umschalten",
"Toggle offline mode": "Offline-Modus umschalten",
"Toggle panel": "Panel umschalten",
"Toggle sidebar": "Seitenleiste umschalten",
"Translate": "Uebersetzen",
"Translation fill is not wired yet, but the command is now routed into Output instead of being ignored.": "Das Ergänzen fehlender Übersetzungen ist noch nicht verdrahtet, aber der Befehl wird jetzt in die Ausgabe geleitet statt ignoriert zu werden.",
"Translations": "Übersetzungen",
"UI": "UI",
"URL": "URL",
"Available languages": "Verfuegbare Sprachen",
"Cannot be undone.": "Dies kann nicht rueckgaengig gemacht werden.",
"Confirm": "Bestaetigen",
"This item is referenced by:": "Dieses Element wird referenziert von:",
"Updated today": "Heute aktualisiert",
"Updated yesterday": "Gestern aktualisiert",
"Upload Site": "Website hochladen",

View File

@@ -68,6 +68,9 @@
"%{count} posts": "%{count} posts",
"2 langs": "2 langs",
"AI Assistant": "AI Assistant",
"AI Suggestions": "AI Suggestions",
"Alt Text": "Alt Text",
"Apply Selected": "Apply Selected",
"Across draft, published, and archive": "Across draft, published, and archive",
"Activated %{name}": "Activated %{name}",
"Archived": "Archived",
@@ -77,6 +80,8 @@
"Automation can boot the shell in a separate process and capture screenshots": "Automation can boot the shell in a separate process and capture screenshots",
"Blog": "Blog",
"Calendar regeneration is not wired yet, but the base shell now surfaces the command and keeps the Output tab selectable.": "Calendar regeneration is not wired yet, but the base shell now surfaces the command and keeps the Output tab selectable.",
"Cancel": "Cancel",
"Caption": "Caption",
"Chat": "Chat",
"Close %{title}": "Close %{title}",
"Close tab": "Close tab",
@@ -129,8 +134,14 @@
"Desktop workbench shell wired through Elixir": "Desktop workbench shell wired through Elixir",
"Diff Reports": "Diff Reports",
"Diffs": "Diffs",
"Delete": "Delete",
"Delete Media": "Delete Media",
"Delete Tag": "Delete Tag",
"Display Text": "Display Text",
"Documentation": "Documentation",
"Drafts": "Drafts",
"Excerpt": "Excerpt",
"External": "External",
"Drafts, published entries, and archive history": "Drafts, published entries, and archive history",
"Edit": "Edit",
"Extra": "Extra",
@@ -139,12 +150,17 @@
"Filesystem Sync": "Filesystem Sync",
"Fill Missing Translations": "Fill Missing Translations",
"Find Duplicates": "Find Duplicates",
"Gallery": "Gallery",
"Git": "Git",
"Git Log": "Git Log",
"Help": "Help",
"Idle": "Idle",
"Images and documents indexed": "Images and documents indexed",
"Import": "Import",
"Insert": "Insert",
"Insert Link": "Insert Link",
"Insert Media": "Insert Media",
"Internal": "Internal",
"Launch plan": "Launch plan",
"Main Language": "Main Language",
"Media": "Media",
@@ -199,6 +215,7 @@
"Source Control": "Source Control",
"Stale": "Stale",
"Stale Pages": "Stale Pages",
"Slug": "Slug",
"Status": "Status",
"Style": "Style",
"Switch project": "Switch project",
@@ -206,15 +223,22 @@
"Tasks": "Tasks",
"Template": "Template",
"Templates": "Templates",
"Title": "Title",
"The app window is now served from the Elixir shell renderer.": "The app window is now served from the Elixir shell renderer.",
"The shared lower panel is available for tasks, output, git details, and editor-specific diagnostics.": "The shared lower panel is available for tasks, output, git details, and editor-specific diagnostics.",
"Toggle assistant": "Toggle assistant",
"Toggle offline mode": "Toggle offline mode",
"Toggle panel": "Toggle panel",
"Toggle sidebar": "Toggle sidebar",
"Translate": "Translate",
"Translation fill is not wired yet, but the command is now routed into Output instead of being ignored.": "Translation fill is not wired yet, but the command is now routed into Output instead of being ignored.",
"Translations": "Translations",
"UI": "UI",
"URL": "URL",
"Available languages": "Available languages",
"Cannot be undone.": "Cannot be undone.",
"Confirm": "Confirm",
"This item is referenced by:": "This item is referenced by:",
"Updated today": "Updated today",
"Updated yesterday": "Updated yesterday",
"Upload Site": "Upload Site",

View File

@@ -68,6 +68,9 @@
"%{count} posts": "%{count} publicaciones",
"2 langs": "2 idiomas",
"AI Assistant": "Asistente de IA",
"AI Suggestions": "Sugerencias de IA",
"Alt Text": "Texto alternativo",
"Apply Selected": "Aplicar seleccionados",
"Across draft, published, and archive": "Entre borradores, publicaciones y archivo",
"Activated %{name}": "%{name} activado",
"Archived": "Archivado",
@@ -77,6 +80,8 @@
"Automation can boot the shell in a separate process and capture screenshots": "La automatización puede iniciar el shell en un proceso separado y capturar pantallas",
"Blog": "Blog",
"Calendar regeneration is not wired yet, but the base shell now surfaces the command and keeps the Output tab selectable.": "La regeneración del calendario aún no está conectada, pero el shell base ahora muestra el comando y mantiene seleccionable la pestaña Salida.",
"Cancel": "Cancelar",
"Caption": "Leyenda",
"Chat": "Chat",
"Close %{title}": "Cerrar %{title}",
"Close tab": "Cerrar pestaña",
@@ -129,8 +134,14 @@
"Desktop workbench shell wired through Elixir": "Shell del área de trabajo de escritorio conectado mediante Elixir",
"Diff Reports": "Informes de diff",
"Diffs": "Diferencias",
"Delete": "Eliminar",
"Delete Media": "Eliminar medio",
"Delete Tag": "Eliminar etiqueta",
"Display Text": "Texto mostrado",
"Documentation": "Documentación",
"Drafts": "Borradores",
"Excerpt": "Extracto",
"External": "Externo",
"Drafts, published entries, and archive history": "Borradores, entradas publicadas e historial de archivo",
"Edit": "Editar",
"Extra": "Extra",
@@ -139,12 +150,17 @@
"Filesystem Sync": "Sincronización del sistema de archivos",
"Fill Missing Translations": "Completar traducciones faltantes",
"Find Duplicates": "Buscar duplicados",
"Gallery": "Galeria",
"Git": "Git",
"Git Log": "Registro Git",
"Help": "Ayuda",
"Idle": "Inactivo",
"Images and documents indexed": "Imágenes y documentos indexados",
"Import": "Importar",
"Insert": "Insertar",
"Insert Link": "Insertar enlace",
"Insert Media": "Insertar medio",
"Internal": "Interno",
"Launch plan": "Plan de lanzamiento",
"Main Language": "Idioma principal",
"Media": "Medios",
@@ -199,6 +215,7 @@
"Source Control": "Control de código fuente",
"Stale": "Desactualizado",
"Stale Pages": "Páginas desactualizadas",
"Slug": "Slug",
"Status": "Estado",
"Style": "Estilo",
"Switch project": "Cambiar proyecto",
@@ -206,15 +223,22 @@
"Tasks": "Tareas",
"Template": "Plantilla",
"Templates": "Plantillas",
"Title": "Titulo",
"The app window is now served from the Elixir shell renderer.": "La ventana de la aplicación ahora se sirve desde el renderizador shell de Elixir.",
"The shared lower panel is available for tasks, output, git details, and editor-specific diagnostics.": "El panel inferior compartido está disponible para tareas, salida, detalles de Git y diagnósticos específicos del editor.",
"Toggle assistant": "Alternar asistente",
"Toggle offline mode": "Alternar modo sin conexión",
"Toggle panel": "Alternar panel",
"Toggle sidebar": "Alternar barra lateral",
"Translate": "Traducir",
"Translation fill is not wired yet, but the command is now routed into Output instead of being ignored.": "El completado de traducciones aún no está conectado, pero el comando ahora se enruta a Salida en lugar de ignorarse.",
"Translations": "Traducciones",
"UI": "UI",
"URL": "URL",
"Available languages": "Idiomas disponibles",
"Cannot be undone.": "No se puede deshacer.",
"Confirm": "Confirmar",
"This item is referenced by:": "Este elemento esta referenciado por:",
"Updated today": "Actualizado hoy",
"Updated yesterday": "Actualizado ayer",
"Upload Site": "Subir sitio",

View File

@@ -68,6 +68,9 @@
"%{count} posts": "%{count} articles",
"2 langs": "2 langues",
"AI Assistant": "Assistant IA",
"AI Suggestions": "Suggestions IA",
"Alt Text": "Texte alternatif",
"Apply Selected": "Appliquer la selection",
"Across draft, published, and archive": "Répartis entre brouillons, publications et archives",
"Activated %{name}": "%{name} activé",
"Archived": "Archivé",
@@ -77,6 +80,8 @@
"Automation can boot the shell in a separate process and capture screenshots": "Lautomatisation peut démarrer le shell dans un processus séparé et capturer des captures décran",
"Blog": "Blog",
"Calendar regeneration is not wired yet, but the base shell now surfaces the command and keeps the Output tab selectable.": "La régénération du calendrier nest pas encore câblée, mais le shell de base expose maintenant la commande et garde longlet Sortie sélectionnable.",
"Cancel": "Annuler",
"Caption": "Legende",
"Chat": "Chat",
"Close %{title}": "Fermer %{title}",
"Close tab": "Fermer longlet",
@@ -129,8 +134,14 @@
"Desktop workbench shell wired through Elixir": "Shell datelier bureau câblé via Elixir",
"Diff Reports": "Rapports de diff",
"Diffs": "Différences",
"Delete": "Supprimer",
"Delete Media": "Supprimer le media",
"Delete Tag": "Supprimer le tag",
"Display Text": "Texte affiche",
"Documentation": "Documentation",
"Drafts": "Brouillons",
"Excerpt": "Extrait",
"External": "Externe",
"Drafts, published entries, and archive history": "Brouillons, éléments publiés et historique darchives",
"Edit": "Édition",
"Extra": "Supplémentaire",
@@ -139,12 +150,17 @@
"Filesystem Sync": "Synchronisation du système de fichiers",
"Fill Missing Translations": "Compléter les traductions manquantes",
"Find Duplicates": "Trouver les doublons",
"Gallery": "Galerie",
"Git": "Git",
"Git Log": "Journal Git",
"Help": "Aide",
"Idle": "Inactif",
"Images and documents indexed": "Images et documents indexés",
"Import": "Importer",
"Insert": "Inserer",
"Insert Link": "Inserer un lien",
"Insert Media": "Inserer un media",
"Internal": "Interne",
"Launch plan": "Plan de lancement",
"Main Language": "Langue principale",
"Media": "Médias",
@@ -199,6 +215,7 @@
"Source Control": "Contrôle de source",
"Stale": "Obsolète",
"Stale Pages": "Pages obsolètes",
"Slug": "Slug",
"Status": "Statut",
"Style": "Style",
"Switch project": "Changer de projet",
@@ -206,15 +223,22 @@
"Tasks": "Tâches",
"Template": "Modèle",
"Templates": "Modèles",
"Title": "Titre",
"The app window is now served from the Elixir shell renderer.": "La fenêtre de lapplication est maintenant servie par le moteur de rendu shell Elixir.",
"The shared lower panel is available for tasks, output, git details, and editor-specific diagnostics.": "Le panneau inférieur partagé est disponible pour les tâches, la sortie, les détails Git et les diagnostics spécifiques à léditeur.",
"Toggle assistant": "Afficher ou masquer lassistant",
"Toggle offline mode": "Basculer le mode hors ligne",
"Toggle panel": "Afficher ou masquer le panneau",
"Toggle sidebar": "Afficher ou masquer la barre latérale",
"Translate": "Traduire",
"Translation fill is not wired yet, but the command is now routed into Output instead of being ignored.": "Le remplissage des traductions nest pas encore câblé, mais la commande est maintenant envoyée vers Sortie au lieu dêtre ignorée.",
"Translations": "Traductions",
"UI": "UI",
"URL": "URL",
"Available languages": "Langues disponibles",
"Cannot be undone.": "Cette action est irreversible.",
"Confirm": "Confirmer",
"This item is referenced by:": "Cet element est reference par :",
"Updated today": "Mis à jour aujourdhui",
"Updated yesterday": "Mis à jour hier",
"Upload Site": "Téléverser le site",

View File

@@ -68,6 +68,9 @@
"%{count} posts": "%{count} post",
"2 langs": "2 lingue",
"AI Assistant": "Assistente IA",
"AI Suggestions": "Suggerimenti IA",
"Alt Text": "Testo alternativo",
"Apply Selected": "Applica selezionati",
"Across draft, published, and archive": "Tra bozze, pubblicati e archivio",
"Activated %{name}": "%{name} attivato",
"Archived": "Archiviato",
@@ -77,6 +80,8 @@
"Automation can boot the shell in a separate process and capture screenshots": "Lautomazione può avviare la shell in un processo separato e catturare schermate",
"Blog": "Blog",
"Calendar regeneration is not wired yet, but the base shell now surfaces the command and keeps the Output tab selectable.": "La rigenerazione del calendario non è ancora collegata, ma la shell di base ora espone il comando e mantiene selezionabile la scheda Output.",
"Cancel": "Annulla",
"Caption": "Didascalia",
"Chat": "Chat",
"Close %{title}": "Chiudi %{title}",
"Close tab": "Chiudi scheda",
@@ -129,8 +134,14 @@
"Desktop workbench shell wired through Elixir": "Shell del banco di lavoro desktop collegata tramite Elixir",
"Diff Reports": "Report diff",
"Diffs": "Differenze",
"Delete": "Elimina",
"Delete Media": "Elimina media",
"Delete Tag": "Elimina tag",
"Display Text": "Testo visualizzato",
"Documentation": "Documentazione",
"Drafts": "Bozze",
"Excerpt": "Estratto",
"External": "Esterno",
"Drafts, published entries, and archive history": "Bozze, elementi pubblicati e cronologia archivio",
"Edit": "Modifica",
"Extra": "Extra",
@@ -139,12 +150,17 @@
"Filesystem Sync": "Sincronizzazione filesystem",
"Fill Missing Translations": "Completa traduzioni mancanti",
"Find Duplicates": "Trova duplicati",
"Gallery": "Galleria",
"Git": "Git",
"Git Log": "Log Git",
"Help": "Aiuto",
"Idle": "Inattivo",
"Images and documents indexed": "Immagini e documenti indicizzati",
"Import": "Importa",
"Insert": "Inserisci",
"Insert Link": "Inserisci collegamento",
"Insert Media": "Inserisci media",
"Internal": "Interno",
"Launch plan": "Piano di lancio",
"Main Language": "Lingua principale",
"Media": "Media",
@@ -199,6 +215,7 @@
"Source Control": "Controllo del codice sorgente",
"Stale": "Obsoleto",
"Stale Pages": "Pagine obsolete",
"Slug": "Slug",
"Status": "Stato",
"Style": "Stile",
"Switch project": "Cambia progetto",
@@ -206,15 +223,22 @@
"Tasks": "Attività",
"Template": "Template",
"Templates": "Template",
"Title": "Titolo",
"The app window is now served from the Elixir shell renderer.": "La finestra dellapp è ora servita dal renderer shell Elixir.",
"The shared lower panel is available for tasks, output, git details, and editor-specific diagnostics.": "Il pannello inferiore condiviso è disponibile per attività, output, dettagli Git e diagnostica specifica delleditor.",
"Toggle assistant": "Attiva/disattiva assistente",
"Toggle offline mode": "Attiva/disattiva modalità offline",
"Toggle panel": "Attiva/disattiva pannello",
"Toggle sidebar": "Attiva/disattiva barra laterale",
"Translate": "Traduci",
"Translation fill is not wired yet, but the command is now routed into Output instead of being ignored.": "Il completamento delle traduzioni non è ancora collegato, ma il comando ora viene instradato in Output invece di essere ignorato.",
"Translations": "Traduzioni",
"UI": "UI",
"URL": "URL",
"Available languages": "Lingue disponibili",
"Cannot be undone.": "Questa azione non puo essere annullata.",
"Confirm": "Conferma",
"This item is referenced by:": "Questo elemento e referenziato da:",
"Updated today": "Aggiornato oggi",
"Updated yesterday": "Aggiornato ieri",
"Upload Site": "Carica sito",

View File

@@ -847,6 +847,113 @@ button {
display: none;
}
.editor-toolbar-button.is-destructive {
color: #f48771;
}
.shell-overlay-backdrop,
.gallery-overlay-backdrop {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.68);
display: flex;
align-items: center;
justify-content: center;
pointer-events: auto;
z-index: 10000;
}
.shell-overlay-dismiss {
position: absolute;
inset: 0;
border: none;
background: transparent;
padding: 0;
}
.gallery-overlay {
position: relative;
width: min(980px, calc(100vw - 48px));
max-height: calc(100vh - 48px);
display: flex;
flex-direction: column;
overflow: hidden;
background: #1e1e1e;
border: 1px solid #3c3c3c;
border-radius: 8px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
z-index: 1;
}
.insert-modal-media-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
gap: 12px;
padding: 16px;
}
.insert-modal-media-item {
display: flex;
flex-direction: column;
gap: 8px;
border: 1px solid #3c3c3c;
border-radius: 8px;
background: #252526;
color: inherit;
padding: 10px;
text-align: left;
}
.insert-modal-media-thumb {
width: 100%;
min-height: 112px;
border-radius: 6px;
object-fit: cover;
background: rgba(255, 255, 255, 0.04);
}
.insert-modal-media-title {
font-weight: 600;
color: #ffffff;
}
.language-picker-options {
display: flex;
flex-direction: column;
gap: 8px;
}
.language-picker-option {
width: 100%;
display: grid;
grid-template-columns: 28px 1fr auto;
gap: 12px;
align-items: center;
border: none;
border-radius: 4px;
padding: 12px 16px;
background: transparent;
color: inherit;
text-align: left;
}
.language-picker-label,
.language-picker-status,
.lightbox-counter {
color: #9d9d9d;
font-size: 12px;
}
.lightbox-counter {
margin-top: 4px;
}
@media (max-width: 720px) {
.insert-modal-media-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
.panel-header {
height: 35px;
display: flex;