Feature-Seite: alle Funktionen aus dem Modul-Register
Deploy / check (push) Has been cancelled
Deploy / deploy (push) Has been cancelled

/features zeigte bisher dieselbe Landing wie /, obwohl die Navigation und
ein Knopf auf der Startseite eine echte Funktionsliste versprachen.

Die Seite listet jetzt alle 35 Bot-Funktionen, nach denselben Gruppen
sortiert wie im Panel, dazu sechs Punkte zum Drumherum (Webinterface,
Texte, API/SSO, eigene Seiten, Team-Rechte, Betrieb).

Die Einträge kommen über das neue öffentliche /api/features aus
src/modules.js — derselben Quelle, aus der die Modul-Schalter kommen. Eine
neue Funktion erscheint damit automatisch auf der Produktseite, statt dass
jemand daran denken muss. Der Endpunkt gibt bewusst nur Name, Beschreibung
und Gruppe heraus, nicht welche Module hier gerade laufen.

Auch die Zahl auf der Startseite kommt von dort, damit nicht zwei Stellen
dieselbe Zahl pflegen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-31 16:17:50 +02:00
co-authored by Claude Fable 5
parent 2ce274707a
commit a32c267dda
6 changed files with 205 additions and 4 deletions
+9
View File
@@ -23,11 +23,14 @@ const HIGHLIGHTS = [
export default function BotLanding() {
const [status, setStatus] = useState(null);
const [hub, setHub] = useState(null);
const [featureCount, setFeatureCount] = useState(null);
useEffect(() => {
// Nur verlinken, wenn der Hub wirklich woanders liegt
apiGet('/api/legal').then((d) => setHub(d.split ? d.hubUrl : null)).catch(() => {});
apiGet('/api/serverstats').then(setStatus).catch(() => {});
// Zahl kommt aus dem Modul-Register, damit sie nicht veraltet
apiGet('/api/features').then((d) => setFeatureCount(d.features.length)).catch(() => {});
window.scrollTo(0, 0);
}, []);
@@ -59,6 +62,12 @@ export default function BotLanding() {
<section className="content">
<div className="srv-summary">
{featureCount && (
<div className="srv-sum-item">
<span className="srv-sum-n">{featureCount}</span>
<span className="srv-sum-label">Funktionen, einzeln schaltbar</span>
</div>
)}
<div className="srv-sum-item">
<span className="srv-sum-n">16</span>
<span className="srv-sum-label">Slash-Befehle</span>