diff --git a/CHANGELOG.md b/CHANGELOG.md index e949992..23af665 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ Versionierung [semantisch](https://semver.org/lang/de/). ## [Unreleased] – 2026-07-14 · SysnaptiK Neural Rebrand ### Marke & Plattform +- **NeuralNet-Chat öffnet sofort:** Der Klick auf eine Verbindung schaltet das + Gespräch samt Eingabefeld nun unabhängig vom anschließenden Verlaufsabruf frei; + Chat-Aktionen sind explizit als Buttons markiert. - **NeuralNet-Chat repariert:** Leere, erfolgreiche API-Antworten werden nicht mehr fälschlich als JSON gelesen. Kontaktaktionen aktualisieren die Oberfläche wieder zuverlässig und bestätigte Verbindungen lassen sich direkt im Chat öffnen. diff --git a/mindfluxfuture.md b/mindfluxfuture.md index 2b34e3b..ba38eca 100644 --- a/mindfluxfuture.md +++ b/mindfluxfuture.md @@ -489,6 +489,7 @@ Der Verdacht „Profilbutton fehlt / Einstellungen nicht im Profil / irgendwas i > ✅ **MVP-Stand 2026-07-14:** Opt-in, Kontaktanfragen (annehmen, ablehnen, > zurückziehen) und private Nachrichten nach bestätigter Verbindung sind umgesetzt. > Leere Erfolgsantworten des API-Backends werden im Client robust verarbeitet. +> Der Gesprächsbereich öffnet unmittelbar beim Auswählen einer bestätigten Verbindung. > Blockieren, Melden/Moderation, Duelle und Lernlobby bleiben die nächsten Ausbauschritte. > Ersetzt den `/soziales`-Platzhalter („Straßen? Wo wir hingehen, brauchen wir keine Straßen!"). Ziel: User können sich befreunden, intern miteinander schreiben, gemeinsam lernen und Achievements vergleichen – **vollständig selbst gehostet, ohne einen einzigen externen Dienst**, und DSGVO-konform von Grund auf. diff --git a/src/main/resources/static/js/neuralnet.js b/src/main/resources/static/js/neuralnet.js index 557cca6..9d228cf 100644 --- a/src/main/resources/static/js/neuralnet.js +++ b/src/main/resources/static/js/neuralnet.js @@ -28,13 +28,13 @@ } function render(data) { q('[data-nn-incoming]').innerHTML = data.incoming.length ? data.incoming.map(function (name) { - return item(name, ''); + return item(name, ''); }).join('') : 'Keine offenen Anfragen.'; q('[data-nn-outgoing]').innerHTML = data.outgoing.length ? data.outgoing.map(function (name) { - return item(name, ''); + return item(name, ''); }).join('') : 'Keine gesendeten Anfragen.'; q('[data-nn-connections]').innerHTML = data.connections.length ? data.connections.map(function (name) { - return item(name, ''); + return item(name, ''); }).join('') : 'Noch keine Verbindungen.'; } async function refresh() { @@ -47,15 +47,19 @@ async function loadChat() { if (!selected) return; var rows = await api('/messages/' + encodeURIComponent(selected)); - q('[data-nn-empty]').hidden = true; - q('[data-nn-conversation]').hidden = false; - q('[data-nn-partner]').textContent = selected; q('[data-nn-messages]').innerHTML = rows.map(function (message) { return '
' + esc(message.body) + '' + esc(message.sender) + ' · ' + new Date(message.sentAt).toLocaleString('de-DE', { dateStyle: 'short', timeStyle: 'short' }) + '
'; }).join(''); var box = q('[data-nn-messages]'); box.scrollTop = box.scrollHeight; } + function openChat(user) { + selected = user; + q('[data-nn-empty]').hidden = true; + q('[data-nn-conversation]').hidden = false; + q('[data-nn-partner]').textContent = user; + q('[data-nn-messages]').innerHTML = '

Nachrichten werden geladen …

'; + } function message(text) { var hint = q('.nn-head p'); hint.textContent = text; @@ -77,7 +81,11 @@ if (!button) return; var user = button.dataset.user, action = button.dataset.action; try { - if (action === 'chat') { selected = user; await refresh(); await loadChat(); return; } + if (action === 'chat') { + openChat(user); + try { await loadChat(); } catch (error) { message(error.message); } + return; + } if (action === 'accept') await api('/requests/' + encodeURIComponent(user) + '/accept', 'POST'); if (action === 'decline') await api('/requests/' + encodeURIComponent(user) + '/decline', 'POST'); if (action === 'cancel') await api('/requests/' + encodeURIComponent(user), 'DELETE'); diff --git a/src/main/resources/templates/soziales.html b/src/main/resources/templates/soziales.html index f65f3f1..8fa3f01 100644 --- a/src/main/resources/templates/soziales.html +++ b/src/main/resources/templates/soziales.html @@ -4,7 +4,7 @@ NeuralNet – SysnaptiK Neural - +