- Replaced standard input fields with DiscordChannelSelect and DiscordRoleSelect components in the BirthdaysForm, FeedsManager, GiveawaysManager, LevelingForm, LoggingForm, SchedulerManager, SelfRolesManager, StatsForm, SuggestionsConfigForm, TagsManager, TempVoiceForm, TicketConfigForm, and StarboardForm for improved user experience and consistency. - Updated state management to accommodate new component structures, enhancing data handling for channel and role selections across the application.
5.6 KiB
5.6 KiB
Phase 6 – WebUI-Fundament (Status: abgeschlossen, manuell bestätigt)
- OAuth/Sessions, Settings-Framework, Layout, Modul-Toggles, Access-Rules
- Login manuell bestätigt
Phase 7 – WebUI Modul-Seiten + Owner-Panel (Status: abgeschlossen, manuell bestätigt)
Abgeschlossen
- Alle Modul-Dashboard-Seiten, Commands-Seite, Overview-Aktivität
- Owner-Panel (
/owner: Übersicht, Guilds, Users, Flags, Presence, Team, Jobs, Changelog, Audit) - Prisma
20260722190000_phase7_owner, Shared Zod (dashboard.ts,owner.ts) - BullMQ WebUI↔Bot, Presence-/Wartungsmodus-Anbindung
- Manuell bestätigt (User-Freigabe)
Phase 8 – Landing, Status, Rechtsseiten (Status: abgeschlossen, manuell bestätigt)
Abgeschlossen
- Landing
/, Status/status, Rechtsseiten, Public APIs, Core-Commands,docs/verification.md - Manuell bestätigt (User-Freigabe)
Deploy-Branch (deploy) – Traefik + Dashboard-Domain
Abgeschlossen (Code auf Branch deploy; main unverändert)
- Traefik-Vollstack: Compose-Netz
traefik-network(external) +internal - WebUI hinter Traefik: Host
dashboard.nexumi.de, Entrypointwebsecure,certresolver=letsencrypt - Host-Port
3000entfernt; nur Traefik exponiert die WebUI WEBUI_URL=https://dashboard.nexumi.de(OAuth-Callback:/api/auth/callback)- Marketing-Landing archiviert unter
apps/webui/src/archived/landing-page.tsx /zeigt Login;/loginleitet auf/weiter (Query erhalten)- SPEC-Abweichung (bewusst): öffentliche Landing später extern auf
nexumi.de; Dashboard unter Subdomain - Rechtsseiten vollständig (Impressum/Datenschutz/ToS) DE+EN; Locale per Accept-Language (Cookie hat Vorrang)
- Plesk-Landing unter
landingpage/mit lokalen Rechtsseiten (impressum.php,datenschutz.php,nutzungsbedingungen.php)
Manuell testen (Deploy)
- DNS
dashboard.nexumi.de→ Traefik-Host - Discord OAuth Redirect:
https://dashboard.nexumi.de/api/auth/callback docker compose up -d --build(Netztraefik-networkmuss existieren)- TLS-Zertifikat (Resolver-Name ggf. an Traefik anpassen)
- Login
/→ Dashboard; Session-CookieSecure
Post-Phase – Premium + DSGVO (Status: implementiert, manuelle Tests offen)
Abgeschlossen (Code)
- Premium:
PremiumTierConfig, Guild-/User-Zuweisung, Owner-UI/owner/premium - Limits enforced (Tags/Feeds/Backups) in Bot + WebUI
- DSGVO:
/privacy,/gdpr delete confirm:true(Löschung/Anonymisierung +GdprDeletionLog) - Log-Retention:
LoggingConfig.retentionDays+ täglicher Jobretention/purgeExpiredLogs - Snipe standardmäßig aus (
GuildSettings.snipeEnabled, Toggle in Allgemeine Einstellungen) - Migration
20260722200000_premium_gdpr
Manuell testen
- Owner
/owner/premium: Limits speichern, Guild PREMIUM zuweisen - Free-Limit: mehr Tags/Feeds/Backups als Free-Cap → Fehler
/privacyund/gdpr delete confirm:true- Logging-Retention im Dashboard setzen
- Snipe: default aus; nach Aktivierung in Einstellungen nutzbar
Bewusst offen
- Musik- und KI-Modul (nur auf Zuruf)
- Premium-Zahlungsanbindung
- Externe Marketing-Landing auf
nexumi.de
Post-Phase – Dashboard-UI + Command-Palette + Landing-Polish (Status: implementiert)
Abgeschlossen (Code)
- Guild-/Owner-Shell: Branding, Sticky-Header, mobile Sidebar-Sheet, Overview-Polish
- Globale Cmd/Ctrl+K-Suche: Seiten, Slash-Commands, Einstellungsfelder (Deep-Links)
- Settings-Feld-Registry + Form-Anchors; Commands-Seite liest
?q= - Plesk-Landing: Inter, Hero-Hierarchie, dezente Motion, Designsprache an WebUI
Manuell testen
- Dashboard: Cmd/Ctrl+K → Seite, Command und Option navigieren (Hash-Scroll)
- Mobile: Sidebar-Sheet + Such-Trigger
- Overview und Owner-Panel Layout
- Landing Light/Dark (
prefers-color-scheme) + CTAs
Bewusst offen
- Musik- und KI-Modul (nur auf Zuruf)
- Premium-Zahlungsanbindung
Post-Phase – Channel-Picker überall (Status: implementiert)
Abgeschlossen (Code)
DiscordChannelSelect/DiscordChannelMultiSelect+useGuildChannels- Alle Modul-Forms: Kanal-ID-Texteingaben durch durchsuchbare Channel-Auswahl ersetzt
- Voice-/Category-Filter für TempVoice/Stats/Tickets
Post-Phase – Role-Picker überall (Status: implementiert)
Abgeschlossen (Code)
DiscordRoleSelect/DiscordRoleMultiSelect+useGuildRoles- Modul-Forms/Manager: Rollen-ID-Texteingaben durch durchsuchbare Role-Auswahl ersetzt (Welcome, Verification, Leveling, Logging, Birthdays, Giveaways, Tags, Tickets, Access Rules, Feeds, Scheduler, Commands)
- Selfroles-Textarea (
roleId | label | emoji) bewusst unverändert
Manuell testen
- Rollen in den Modul-Settings per Dropdown setzen und speichern
- Multi-Select (Autoroles, No-XP-Roles, Support-Roles, …) speichert string[] korrekt
- Access-Rules: Rolle wählen und Module zuweisen
Post-Phase – Command-Global-Rules + Channel-Picker (Status: implementiert)
Abgeschlossen (Code)
- Globale Command Channel-Whitelist/-Blacklist in
GuildSettings+ Commands-UI - Searchable Multi-Select für Kanäle/Rollen (statt Raw-IDs) auf der Commands-Seite
- APIs:
/commands/globals,/channels,/roles - Bot erzwingt globale + per-Command Channel/Role/Cooldown-Regeln in
routeCommand - Migration
20260722210000_command_global_channels
Manuell testen
- Commands: globale Whitelist/Blacklist speichern, in Discord prüfen
- Per-Command Channel/Rollen per Dropdown setzen
- Deaktivierter Command / Cooldown antwortet ephemeral
Nächster geplanter Schritt
- Deploy auf Traefik-Server manuell verifizieren; danach ggf.
deploy→mainmergen (nur auf Freigabe).