Script-Editor: CodeMirror 6 in separatem Modal (Stored-Scripts erstellen/bearbeiten) statt rohem Textarea #177
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ziel
Die rohen
<textarea>-Script-Editoren durch einen CodeMirror-6-Editor in einem separaten Modal ersetzen — mit Syntax-Highlighting, Zeilennummern, Tab/Indent. Statt des Inline-Feldes ein Editor-Modal mit klaren Buttons: „Script erstellen" / „Script bearbeiten".Betroffene Stellen (3 — alle auf dieselbe neue Komponente umstellen)
frontend/src/lib/components/admin-node-tabs/NodeCommandPanel.svelte— Stored-Scripts-Verwaltung (das Feld aus dem Screenshot:content+interpreter).frontend/src/lib/components/admin-vm-modal/tabs/CommandsTab.svelte— Inline-Befehl (inlineContent, :145) + Interpreter-Select (:152).NodeSchedulerPanel.sveltenutzt Scripts viascript_id(seit #142) — kein eigener Editor, aber der „Script erstellen/bearbeiten"-Einstieg sollte von dort erreichbar sein.Datenmodell (vorhanden)
StoredScript(server/models/command.py):content(Text) +interpreter(z. B./bin/bash,python3). Keine separatelanguage-Spalte → die CodeMirror-Sprache aus deminterpreterableiten (Mapping unten). Keine Migration nötig.Umsetzung
Abhängigkeiten (npm)
CodeMirror 6 modular:
codemirror,@codemirror/state,@codemirror/view,@codemirror/commands,@codemirror/language,@codemirror/lang-python,@codemirror/legacy-modes(für Shell via StreamLanguage) — plus ein dunkles Theme (@codemirror/theme-one-darkoder eigenes, passend zum App-Dark-Theme).Neue Komponenten
lib/components/editor/CodeEditor.svelte— dünner CodeMirror-6-Wrapper:value(bindable/$bindable),language("shell"|"python"|"plain"),readonly?,placeholder?.onDestroy→view.destroy()), Wert-Sync in beide Richtungen.lib/components/editor/ScriptEditorModal.svelte— das Modal:commandApicreate/update; Schließen ohne Speichern verwirft.Interpreter → CodeMirror-Sprache (Mapping)
python→lang-pythonbash/sh/zsh//bin/*sh→ Shell (StreamLanguage aus legacy-modesshell)#!/usr/bin/env python3bzw.#!/bin/bash).UI-Umbau
<textarea>fürcontentraus; stattdessen Liste der Scripts + Buttons „Script erstellen" und je Eintrag „Bearbeiten" → öffnetScriptEditorModal.<textarea>(:145) durchCodeEditor(kompakt, ~6 Zeilen) ersetzen; großer Editier-Komfort optional über denselben Modal-Button.Akzeptanz
commandApi/StoredScript(keine Backend-/Migration-Änderung).CodeEditor-Komponente (keine Dubletten).Bezug
#142 (command.run nutzt Stored-Script), Konvention „1 Komponente = 1 Datei" (#94, wiki/Development.md).
Branch
feat/codemirror-script-editor