# TOAST Addon Roadmap

## Versie strategie
Addon en bot hebben aparte versienummers.
- Addon: 0.9.x = alpha (intern testen), 1.0.0 = publieke release
- Bot: 2.0.0 = wanneer addon live gaat

## Huidig: v0.9.0 (intern, CurseForge unlisted)

### Gedaan
- [x] Addon skeleton + /toast slash dispatcher
- [x] roster.lua gegenereerd vanuit leaderboard CSV
- [x] In-game leaderboard (/toast lb)
  - RIO ranking, class colors, role iconen, prefix iconen
  - Zoekbalk, eigen rij highlight, hover effect
  - Key kolom 80px breed
- [x] Live key kolom via TOAST comms + LibKeystone
  - BigWigs, DBM, Details! automatisch afgeluisterd
  - Key persistentie via SavedVariables
  - KEY_REQUEST systeem bij login
- [x] Nieuwe keystone auto-broadcast na dungeon
  - CHALLENGE_MODE_COMPLETED + ITEM_CHANGED/ITEM_PUSH detectie
  - Zelfde patroon als LibKeystone
- [x] Whisper-based key collection voor community-leden buiten guild
  - DiscoveryWhispers() bij login (alle niet-guild roster-leden)
  - MaybeRefreshUnknowns() bij lb openen (5 min cooldown, alleen
    bekende maar verouderde entries)
  - BuildGuildLookup() om eigen guildleden te skippen
  - "No player named" chat spam onderdrukt via
    ChatFrame_AddMessageEventFilter
- [x] Online status indicator in leaderboard
  - Groen stipje: gezien < 60 min
  - Grijs stipje: heeft addon, > 60 min geleden
  - Leeg: onbekend/geen addon
- [x] Minimap button via LibDBIcon-1.0
- [x] Addon lijst icoon + omschrijving
- [x] CurseForge project aangemaakt (unlisted, approved)
- [x] Weekly key reset (woensdag na 09:00 lokale tijd)

---

## v0.9.1-alpha — Dashboard + Herkenning + Polish

### Design principes
- Dashboard = "wat kan ik nu doen?"
- Leaderboard = "waar sta ik?"
- Drie user types: active key players, leaderboard enjoyers,
  casual Discord users
- EUI-stijl design: donkere cards, accent lijnen, hover effects
- Geen PixelPerfect library (overkill voor onze schaal)
- Geen nieuwe artwork nodig — polish zit in kleuren, spacing,
  hover-effecten en font-keuzes (pure Lua)
- Na 0.9.1: media bestanden converteren van BLP naar PNG/TGA

### Kleurenpalet
- TOAST goud:       #E0BE5D  (accent lijnen, titels, eigen rij)
  RGB: 224, 190, 93   HSL: 44, 120, 157
- TOAST teal:       #00EAC9  (live/community signalen)
  RGB: 0, 234, 201   HSL: 172, 100, 46
  Gebruik: alleen voor live/community signalen — online status,
  verse key data, LIVE-labels, actieve addon-state, kleine
  counters. NIET voor generieke sectietitels of normale tekst;
  daarvoor blijft TOAST goud (identiteit, structuur, ranking,
  primaire acties) de standaard.
- Card achtergrond:   SetColorTexture(0.06, 0.08, 0.10, 0.50)
- Card border:        SetColorTexture(1, 1, 1, 0.12)
- Card hover bg:      SetColorTexture(0.11, 0.13, 0.15, 0.50)
- Card hover border:  SetColorTexture(1, 1, 1, 0.22)
- Subtitel tekst:     alpha 0.45
- Accent lijn:        2px bovenaan card in TOAST goud

### UI Design referentie
Gebaseerd op EllesmereUI design patterns (zie EUI source in
/mnt/user-data/uploads/ voor referentie):
- Cards: CreateFrame("Button") met donkere SetColorTexture bg,
  1px border met lage alpha, gekleurde accent-lijn bovenaan
- Hover: bg wordt lichter, border alpha omhoog, titel alpha naar 1
- Consistente spacing via constanten (PAD, GAP)
- Font: GameFontNormal/GameFontHighlight, custom sizes waar nodig

### Features

#### 1. Dashboard hoofdscherm (modules/dashboard.lua)
/toast opent het dashboard (niet meer direct het leaderboard).
/toast lb blijft het leaderboard openen.
Layout: één kolom, drie visuele blokken + footer.

A) YOUR STATUS (bovenaan)
   - TOAST logo + "Welcome back, [discord_naam]"
   - Prefix icoon + rank + score + resi + huidige key
   - Data uit TOAST_DB.me (gezet bij login)
   - Doel: bevestigt "de addon kent mij"

B) CURRENT SEAMEN KEYS (midden, grootste blok)
   - Scrollbare lijst van bekende keys van online leden
   - Kolommen: naam, role/class icoon, key level + dungeon, status
   - Alleen verse keys tonen (lastSeen < 60 min)
   - Doel: dagelijks nut, geen alt-tab naar Discord nodig

C) LEADERBOARD PREVIEW + KNOP (onder keys)
   - "Je staat #26 van 46" met persoon boven en onder je
   - Grote LEADERBOARD knop → opent /toast lb
   - Doel: competitiedrang triggeren

D) FOOTER: Community Pulse
   - "X addon users online • Y keys bekend • Z actieve leden"
   - Klein Discord icoon rechtsonder (opent EditBox met invite link)
   - Doel: sociale druk om addon te installeren

#### 2. Herkenning systeem
Bij PLAYER_LOGIN:
- UnitName("player") checken tegen TOAST.roster (leaderboard)
- Match → TOAST_DB.me = { name, realm, discord, prefix, rank,
  rio, role, resi, key }
- Geen match → welkomstpopup tonen
- In v0.9.2 uitbreiden met fallback naar volledig roster

#### 3. Welkomstpopup
Als UnitName("player") NIET in TOAST.roster (leaderboard):
- Frame met TOAST logo
- "Join The SEAMEN — an open Mythic+ community"
- EditBox met Discord invite link (geselecteerd, Ctrl+C)
- "Don't show again" checkbox → TOAST_DB.dismissedWelcome = true
- Alleen tonen als TOAST_DB.dismissedWelcome ~= true
- In v0.9.2: check verbreden naar volledig roster

#### 4. Rechterclick context menu (modules/leaderboard.lua)
Op een naam in het leaderboard, rechterclick toont dropdown:
- Invite: C_PartyInfo.InviteUnit("Name-Realm")
- Whisper: ChatFrame_OpenTemporaryWindow
(View Crew komt in v0.9.2 wanneer volledig roster beschikbaar is)

#### 5. Discord join-link
EditBox met auto-geselecteerde Discord invite URL.
Toegankelijk via:
- Klein icoon rechtsonder in dashboard footer
- Welkomstpopup voor niet-roster characters

### Bestanden
Nieuw:
- modules/dashboard.lua (hoofdscherm)

Gewijzigd:
- modules/core.lua (/toast → dashboard, /toast lb → leaderboard)
- modules/leaderboard.lua (rechterclick menu)
- TOAST.toc (nieuwe modules + versie 0.9.1-alpha)

---

## v0.9.2-alpha — Roster + Roles + Live Scores

### Features
- [ ] Tooltip integratie (modules/tooltip.lua)
  - GameTooltip hook op mouseover van elke speler
  - Als naam in roster: toon discord naam + seamen_rank in TOAST goud
  - Drie lagen: leaderboard (actief) → roster (inactive) → niet gevonden
- [ ] Volledige roster in de addon
  - Gegenereerd vanuit bot data, bevat alle ~330 SEAMEN leden
  - Inactive leden herkenbaar in tooltip als "SEAMEN: inactive"
- [ ] Discord roles per gebruiker (seamen_rank)
  - Gekoppeld aan Discord ID, niet aan character
  - Rangen: ABYSSAL JELLYLORD (4000+), CALYPSO EXPEDITION LEAD (3800+),
    HADAL SYSTEMS OVERSEER (3600+), SUBNAUTIC COMMS SPEC. (3400+),
    AQUATIC OPS ENGINEER (3200+), SENIOR DIVE TECHNICIAN (3000+),
    SHALLOW WATER SPEC. (2800+), ALBINO DOLPHIN HANDLER (2600+),
    DECKHAND (<2600)
  - Bot haalt role op via Discord API, schrijft mee in roster data
- [ ] View Crew in rechterclick menu
  - Alle entries met dezelfde discord_nickname (alts)
  - Popup met character lijst + class + role + score
- [ ] Live M+ score broadcast via comms
  - C_PlayerInfo.GetPlayerMythicPlusRatingSummary("player")
  - Scores persistent via SavedVariables
  - Leaderboard toont live score, fallback naar statische rio
- [ ] Herkenning uitbreiden: leaderboard → roster → welkomstpopup
- [ ] Roster sync via CurseForge (dagelijks 09:00)
- [ ] Media converteren van BLP naar PNG/TGA

---

## v1.0.0 — Publieke release

- [ ] Alle v0.9.x features stabiel
- [ ] CurseForge listing publiek (niet meer unlisted)
- [ ] README.md voor eindgebruikers
- [ ] Installatie instructies
- [ ] Bot versie 2.0.0

---

## Najaar — Bridge captain (v1.x)

- [ ] Bridge script op captain's PC
  - Leest TOAST SavedVariables (keys)
  - POST naar TOAST bot
- [ ] #current-keys Discord channel
- [ ] Twee bridge captains (één TIDE, één SEAMEN)

---

## Laag prioriteit / optioneel

- [ ] !lfm trigger in guild chat → key broadcast (in-game only)
- [ ] !lfm → Discord LFM-event (bridge-afhankelijk)
- [ ] Right-click menu minimap button
- [ ] Minimap button hide/show toggle

## On hold, afhankelijk van 12.1 PTR

- [ ] In-game LFM/listing-systeem (alleen bouwen als Blizzard het
  niet zelf oplost via hun Discord integratie in 12.1)
