Files
Nexumi/docs/PHASE-TRACKING.md
TheOnlyMace ed2ea23e87 Refactor channel and role selection in various forms to use Discord components
- 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.
2026-07-22 21:23:57 +02:00

5.6 KiB
Raw Blame History

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, Entrypoint websecure, certresolver=letsencrypt
  • Host-Port 3000 entfernt; 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; /login leitet 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 (Netz traefik-network muss existieren)
  • TLS-Zertifikat (Resolver-Name ggf. an Traefik anpassen)
  • Login / → Dashboard; Session-Cookie Secure

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 Job retention/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
  • /privacy und /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. deploymain mergen (nur auf Freigabe).