feat(diagnostic): "+ Projekt" direkt ueber dem Chat
Im Kontext-Streifen gab es keinen Weg, ein Projekt anzulegen — das ging nur unten in den Einstellungen. Der Knopf steht bewusst AUSSERHALB des scrollenden Streifens: bei mehreren Projekten waere er dort nach rechts rausgerutscht. Anlegen zieht jetzt beide Projekt-Oberflaechen nach (Einstellungs-Liste UND Streifen) und setzt den Fokus aufs neue Projekt. Vorher aktualisierte nur die Liste, das neue Projekt blieb im Streifen bis zum 15s-Poll unsichtbar — und der Fokus blieb im Hauptchat, obwohl create_project() serverseitig umschaltet. Man legte also ein Projekt an und schrieb weiter in den Hauptchat. Dazu ein Fehlerpfad: ein fehlgeschlagenes Anlegen (z.B. leerer Name, 400 vom Brain) wurde stillschweigend verschluckt — das Modal schloss, als waere alles gut. Jetzt kommt die Begruendung des Brains als Meldung. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+27
-4
@@ -410,9 +410,16 @@
|
||||
</div>
|
||||
<!-- Multi-Threading: Kontext-Strip ueber dem Chat. Jeder Kontext
|
||||
(Hauptchat + aktive Projekte) als kompakte Karte mit Status-Dot.
|
||||
Tap wechselt den Focus — Chat-Box filtert dann auf diesen Kontext. -->
|
||||
<div id="chat-context-strip" style="display:flex;gap:6px;overflow-x:auto;padding:6px 4px;margin-bottom:6px;border-bottom:1px solid #1E1E2E;">
|
||||
<!-- wird von renderContextStrip() befuellt -->
|
||||
Tap wechselt den Focus — Chat-Box filtert dann auf diesen Kontext.
|
||||
Der „+ Projekt"-Knopf steht AUSSERHALB des scrollenden Streifens,
|
||||
damit er bei vielen Projekten nicht nach rechts rausrutscht. -->
|
||||
<div style="display:flex;align-items:center;gap:8px;margin-bottom:6px;border-bottom:1px solid #1E1E2E;">
|
||||
<div id="chat-context-strip" style="display:flex;gap:6px;overflow-x:auto;padding:6px 4px;flex:1;min-width:0;">
|
||||
<!-- wird von renderContextStrip() befuellt -->
|
||||
</div>
|
||||
<button class="btn secondary" onclick="openCreateProjectModal()"
|
||||
title="Neues Projekt anlegen — wird direkt angelegt, aktiviert und hier fokussiert"
|
||||
style="flex:0 0 auto;padding:4px 10px;font-size:11px;margin-right:4px;">+ Projekt</button>
|
||||
</div>
|
||||
<div class="chat-box" id="chat-box"></div>
|
||||
<div id="thinking-indicator" style="display:none;padding:6px 10px;font-size:12px;color:#FFD60A;background:#1E1E2E;border-radius:0 0 6px 6px;margin-top:-8px;margin-bottom:8px;align-items:center;justify-content:space-between;">
|
||||
@@ -3997,13 +4004,29 @@
|
||||
const description = document.getElementById('project-create-desc').value.trim();
|
||||
if (!name) { alert('Name darf nicht leer sein.'); return; }
|
||||
try {
|
||||
await fetch('/api/brain/projects/create', {
|
||||
const r = await fetch('/api/brain/projects/create', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ name, description }),
|
||||
});
|
||||
if (!r.ok) {
|
||||
let why = 'HTTP ' + r.status;
|
||||
try { const e = await r.json(); if (e && e.detail) why = e.detail; } catch {}
|
||||
throw new Error(why);
|
||||
}
|
||||
const d = await r.json().catch(() => null);
|
||||
closeCreateProjectModal();
|
||||
// Beide Projekt-Oberflaechen nachziehen: die Liste in den Einstellungen
|
||||
// UND den Kontext-Streifen ueber dem Chat. Vorher wurde nur die Liste
|
||||
// aktualisiert — vom Chat aus angelegt blieb das neue Projekt bis zum
|
||||
// naechsten 15s-Poll unsichtbar.
|
||||
loadProjects();
|
||||
await refreshDiagProjectsCache();
|
||||
// create_project() setzt das Projekt serverseitig aktiv — der Focus im
|
||||
// Diagnostic ist davon getrennt, also hier mitziehen. Sonst legt man
|
||||
// ein Projekt an und schreibt weiter in den Hauptchat.
|
||||
const pid = (d && d.id) ? d.id : '';
|
||||
if (pid) switchDiagFocus(pid);
|
||||
} catch (e) { alert('Anlegen fehlgeschlagen: ' + e.message); }
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user