Commit e5f3f8a7 authored by jan.koester's avatar jan.koester
Browse files

Unify AI rules, ensure prompt is consistent and in English for both AI Window and generation

parent bec2bd4b
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -310,7 +310,8 @@ QString LocalApi::generateAiPrompt(const QString &userRequest) {
        "- Start with a single root <section> or <div> that wraps everything\n"
        "- Use semantic HTML: <section>, <article>, <div>, <h1>-<h6>, <p>, <ul>/<ol>, <img>, <table>, <a>\n"
        "- Every opened tag MUST be properly closed (e.g. <h1>Title</h1>, not <h1>Title)\n"
        "- No JavaScript, no <script>, no <iframe>, no <form>, no download links\n\n"
        "- No JavaScript, no <script>, no <iframe>, no <form>, no download links\n"
        "- The generated text content must be in English\n\n"

        "== STYLING ==\n"
        "The page defines these CSS custom properties. Use them for ALL colors via var(...):\n"
+12 −14
Original line number Diff line number Diff line
@@ -96,30 +96,28 @@ Item {
    }
    
    function generatePromptText() {
        var basePrompt = "Systemrolle: Du bist ein erfahrener Frontend-Entwickler und Webdesigner.\n"
        basePrompt += "Aufgabe: Erstelle oder überarbeite ein HTML-Template für das Blog-System 'Blogi'.\n\n"
        basePrompt += "Benutzer-Anfrage:\n" + promptArea.text

        basePrompt += "\n\n(WICHTIG für Blogi-Templates: Antworte AUSSCHLIESSLICH mit validem, semantischem HTML5-Code. Nutze wo passend sinnvolle Tags wie <header>, <nav>, <main>, <article>, <aside> und <footer>. Schreibe absolut keine Erklärungen, keinen Begrüßungstext und verwende keine Markdown-Codeblöcke wie ```html. Liefere NUR den nackten, sofort verwendbaren HTML-Code zurück!)"
        basePrompt += "\n(WICHTIG: Verwende für Farben ausschließlich CSS-Variablen aus den bereitgestellten Stylesheets, ohne diese Variablen (:root Modifikatoren) im CSS neu zu definieren oder zu überschreiben!)"
        var req = promptArea.text;

        if (cbDesktop.checked && cbMobile.checked) {
            basePrompt += "\n(Hinweis: Berücksichtige sowohl Desktop- als auch Mobile-Layout/Responsivität.)"
            req += "\n(Note: Consider both Desktop and Mobile layout/responsiveness.)"
        } else if (cbDesktop.checked) {
            basePrompt += "\n(Hinweis: Optimiere in erster Linie für Desktop-Layout.)"
            req += "\n(Note: Optimize primarily for Desktop layout.)"
        } else if (cbMobile.checked) {
            basePrompt += "\n(Hinweis: Optimiere in erster Linie für Mobile-Layout.)"
            req += "\n(Note: Optimize primarily for Mobile layout.)"
        }

        basePrompt += "\n\nHTML Code:\n"
        req += "\n\nExisting HTML Code:\n"
        var html = localApi.renderPreview()
        basePrompt += html + "\n"
        req += (html ? html : "<div/>") + "\n"
        
        if (cbIncludeCSS.checked) {
            basePrompt += "\nCSS (style.css):\n" + localApi.readFile("style.css")
            basePrompt += "\nCSS (mystyle.css):\n" + localApi.readFile("mystyle.css")
            var s1 = localApi.readFile("style.css")
            if(s1) req += "\nCSS (style.css):\n" + s1
            var s2 = localApi.readFile("mystyle.css")
            if(s2) req += "\nCSS (mystyle.css):\n" + s2
        }
        return basePrompt;
        
        return localApi.generateAiPrompt(req);
    }
    
    function sendToLlm(promptText) {