================================================================================
Vamoose's Endeavors - Changelog
================================================================================

Version 1.6.8 (Released January 2026)
--------------------------------------------------------------------------------

HOUSE XP CALCULATION:
- Dynamic scale: Uses live API scale for post-hotfix (no hardcoded fallback)
- Two-period cap system:
  - Pre cap increase: 1000 XP cap (historical, won't change)
  - Post cap increase: 2250 XP weekly cap
- Non-repeatable tasks use fixed XP values:
  - Kill a Profession Rare: 150 XP (2x multiplier)
  - Daily Quests: 50 XP
  - Champion a Faction Envoy: 10 XP
- House XP tooltip shows breakdown of pre/post cap increase earnings

UI IMPROVEMENTS:
- House XP display only dims when weekly cap (2250) is reached
- Contribution display now has tooltip: "Neighborhood Contribution (this character)"

BUG FIXES:
- Coupon column now auto-retries if quest API isn't ready at login

--------------------------------------------------------------------------------

Version 1.6.7 (Released January 2026)
--------------------------------------------------------------------------------

CODE SIMPLIFICATION:
- Simplified floor XP learning system (~90 lines removed)
  - Now uses most recent activity log entry for floor tasks
  - Trusts API timesCompleted >= 5 to determine floor status
  - Removed complex two-value floor detection algorithm
  - Removed LearnTaskRules() function (archived to Utilities/)
- Scale derivation remains accurate: floorXP / progressContributionAmount

--------------------------------------------------------------------------------

Version 1.6.6 (Released January 2026)
--------------------------------------------------------------------------------

TOOLTIP IMPROVEMENTS:
- "Next House XP" now shows raw progressContributionAmount (what player receives)
- "Next Endeavor Contribution" shows calculated neighborhood contribution

--------------------------------------------------------------------------------

Version 1.6.5 (Released January 2026)
--------------------------------------------------------------------------------

TOOLTIP IMPROVEMENTS:
- Renamed "Next XP" to "Next House XP" for clarity
- Added "House XP (API)" line showing raw progressContributionAmount from API

--------------------------------------------------------------------------------

Version 1.6.4 (Released January 2026)
--------------------------------------------------------------------------------

NEW DEBUG COMMAND:
- Added /ve scale - Shows current scale factor, roster size, and floor tasks
  used for scale derivation

BUG FIXES:
- Fixed floor XP learning to prefer most recent observation
  - Previously, older player data could overwrite newer observations
  - Now tracks observation timestamps and uses the most recent floor value
  - Handles Blizzard mid-season value changes correctly

--------------------------------------------------------------------------------

Version 1.6.3 (Released January 2026)
--------------------------------------------------------------------------------

SIMPLIFIED XP FORMULA:
- Formula reduced to: nextXP = progressContributionAmount × scale
- API already handles decay (progressContributionAmount changes: 50→40→25→20)
- Scale derived from floor tasks: scale = floorXP / progressContrib
- Each house derives its own scale from its activity log

REMOVED (~160 lines):
- LearnRelativeScales() - decay is in API, not needed
- GetRelativeScale() - not needed
- ShowRelativeScales() - not needed
- /ve scales command - removed

BUG FIXES:
- Fixed scale not clearing when switching houses via dropdown
- Scale cache and taskRules now reset on house switch
- House 1 (~0.037 scale) and House 2 (~0.029 scale) now calculate correctly

--------------------------------------------------------------------------------

Version 1.6.2 (Released January 2026)
--------------------------------------------------------------------------------

ARCHITECTURE:
- Ultra-minimal config: Only ONE hardcoded value (COMPLETIONS_TO_FLOOR = 5)
- All other values derived from API or activity log observations
- Base XP comes ONLY from API progressContributionAmount (no fallback defaults)
- Decay rate and floor% derived mathematically from COMPLETIONS_TO_FLOOR

SIMPLIFIED:
- LearnTaskRules() now only observes: atFloor, floorXP, scale
- Removed learned values: decayRate, floor%, firstRunXP (all derived now)
- GetTaskInfo() simplified: returns only { base } from API
- Removed TASK_DATA pattern matching table (~40 lines)
- Removed legacy config: DECAY table, MULTIPLIERS table, legacy aliases

REMOVED FROM CONSTANTS:
- VE.Constants.XP_FORMULA.DECAY (standard, accelerated, raidboss, onetime)
- VE.Constants.XP_FORMULA.MULTIPLIERS (standard, raidboss, profession)
- VE.Constants.ROSTER_SCALE, VE.Constants.TASK_MULTIPLIERS aliases

BUG FIXES:
- Fixed incorrect firstRunXP calculation (was back-calculating from unknown floor%)
- "Find Treasures from Sealed Scrolls" no longer shows inflated 3.096 firstRunXP
- "Home: Complete Weekly Neighborhood Quests" no longer shows 24% decay

--------------------------------------------------------------------------------

Version 1.6.1 (Released January 2026)
--------------------------------------------------------------------------------

NEW FEATURES:
- Per-task decay learning: Each task now learns its own decay rate and floor
  - More accurate than previous decay-type clustering approach
  - Works backwards from most recent activity log entries (freshest data)
  - Detects "flat_drop" pattern for raid bosses (100% → 0%)
- New /ve rules command: Shows learned decay rules per task
  - /ve rules - Show all learned task rules
  - /ve rules [taskname] - Filter by task name

TECHNICAL:
- Simplified decay system architecture:
  - taskRules storage: Per-task { decayRate, floor, atFloor, floorXP }
  - BuildTaskRulesFromLog(): Analyzes last 2 completions per player per task
  - LearnTaskRules(): Learns from consecutive XP values
  - GetTaskDecayMultiplier(): Returns multiplier using per-task rules
  - CalculateDecayMultiplier() now tries per-task rules first, falls back to config
- Prediction formula verified: actualXP = baseXP × rosterScale × decayMultiplier
  - Cross-checked against API progressContributionAmount (baseXP)
  - Confirmed decay=20%, floor=20% for standard tasks
- Floor data now preserved (not overwritten by decay-derived calculations)

--------------------------------------------------------------------------------

Version 1.6.0 (Released January 2026)
--------------------------------------------------------------------------------

BUG FIXES:
- Fixed floor calculation returning 0.09 instead of 0.20 when roster size changed
  - Root cause: Activity log spanned a 10x scale change (roster grew from small to large)
  - Algorithm was mixing data from different scale periods, causing incorrect normalization
  - Fix: Added scale period detection to normalize historical data to current scale
- Fixed inactive house being viewed on login instead of active endeavor house
  - Now prioritizes active neighborhood over saved selection on login
  - User's manual dropdown selections during a session are still respected

TECHNICAL:
- Added DetectScalePeriods() to identify roster scale changes over time
- Added GetScalePeriodForEntry() to map entries to their scale period
- Updated LearnDecayFromActivity() with scale normalization before clustering
- House selection on login checks if saved selection matches active neighborhood

--------------------------------------------------------------------------------

Version 1.5.9 (Released January 2026)
--------------------------------------------------------------------------------

TECHNICAL:
- Refactored decay system: Consolidated duplicate code into single source of truth
  - TASK_DATA table now holds base XP, decay type, and multiplier per task
  - GetTaskInfo() returns { base, decay, multiplier } for any task
  - CalculateDecayMultiplier() handles all decay types: onetime, accelerated, standard, raidboss
  - Removed redundant functions: GetTaskMultiplier, GetTaskBaseValue, IsRaidBossTask, IsOneTimeTask, CalculateDRMultiplier
  - Removed duplicate local TASK_BASE_VALUES table
- CalculateNextContribution() now uses unified decay system (reduced from 8 to 4 lines)

--------------------------------------------------------------------------------

Version 1.5.8 (Released January 2026)
--------------------------------------------------------------------------------

NEW FEATURES:
- Next Best Task Highlighting: Gold/silver/bronze tints show top 3 tasks by XP
  - Ranks incomplete repeatable tasks by predicted next XP reward
  - Medal icons (gold/silver/bronze) on XP badge for ranked tasks
  - Background tint persists on hover (restores on mouse leave)
  - Tooltip shows "Best/2nd Best/3rd Best Next Endeavor: +X.XXX XP"
  - Toggle button in section header to show/hide highlighting
  - Sort by Next XP button to order tasks by predicted contribution

- Zero XP Warning: Red highlight for tasks that give no XP
  - Shows when API reports 0 XP or DR reduces next completion to 0
  - Theme-aware error color (uses theme's error palette)
  - Red background tint and red XP text for visual warning

- House XP Formula Info: Config tab now explains the decay system
  - Base values, Standard Decay (20%), Accelerated Decay (25%)
  - Exceptions for Raid Bosses and One-Time tasks
  - Note about 1000 XP cap per endeavor

- Endeavor XP Formula Implementation:
  - Full formula: Reward = Base × Roster_Scale × Task_Multiplier × DR_Multiplier
  - Roster Scale detection from activity log (4 tiers: 1-2, 3-5, 6-10, 11+ chars)
  - Task multipliers: Standard=1.0, Raid Boss=2.0, Profession Rare=1.2
  - Standard DR: max(0.20, 1 - 0.20 × (N - 1))
  - Raid Boss DR: Step-down (100% for N≤2, 50% for N=3-5, 0% for N≥6)

UI IMPROVEMENTS:
- House dropdown menu auto-sizes to fit long house names
- Task tooltip: Renamed "Base XP" to "Current House XP reward" for clarity
- XP text now uses theme's success color (green) for all themes
- ThemeEngine respects warning state when applying colors

TECHNICAL:
- Added ROSTER_SCALE constants with tier detection thresholds
- Added TASK_MULTIPLIERS and TASK_BASE_VALUES lookup tables
- DetectRosterScale() analyzes activity log to determine current tier (5min cache)
- GetTaskMultiplier() returns task-specific bonus multiplier
- CalculateDRMultiplier() handles standard vs raid boss DR curves
- GetTaskRankings() returns top 3 tasks sorted by predicted next XP
- Added _isNoXPWarning flag for ThemeEngine to preserve warning colors

--------------------------------------------------------------------------------

Version 1.5.7 (Released January 2026)
--------------------------------------------------------------------------------

NEW FEATURES:
- Activity Tab Filters: Three new filters for Recent Activity feed
  - "Me Only" button: Show only your current character's contributions
  - "My Chars" button: Show all your alts' contributions (uses rankings data)
  - Task dropdown: Filter by specific task type
  - Filters are combinable (e.g., My Chars + specific task)
  - "Me Only" and "My Chars" are mutually exclusive
- CSV Export: Export activity log data for external analysis
  - Export button in Recent Activity header (housing invite icon)
  - Opens popup window with CSV-formatted data (Player, Task, XP, Time)
  - Select all and copy to paste into Excel or text file
- Task XP Cache: Backend support for task XP lookup from activity log
  - BuildTaskXPCache() builds map of taskID -> XP amount
  - GetTaskXP() returns actual earned XP for completed tasks
  - Cache rebuilds on INITIATIVE_ACTIVITY_LOG_UPDATED event
- Task Tooltip XP Display: Hover over tasks to see contribution values
  - "Base Contribution" shows the task's XP point value
  - "Last Contribution" shows your character's personal XP earned
  - Per-player filtering ensures only your data is shown
  - Shows "0 - not completed" for tasks you haven't done yet

UI IMPROVEMENTS:
- Filter buttons use atlas icons (friend icon for Me Only, friends icon for My Chars)
- Active filters show colored highlights (green for Me Only, accent for My Chars/Task)
- Task dropdown built from task list (not activity log) for better performance
- "No activity matches your filters" message when filters exclude all entries

--------------------------------------------------------------------------------

Version 1.5.6 (Released January 2026)
--------------------------------------------------------------------------------

BUG FIXES:
- Fixed housing and endeavor data not loading on login
  - Housing APIs now called with 1.5s delay to wait for server data
  - Added PLAYER_ENTERING_WORLD handler for reliable initialization
  - SetViewingNeighborhood() now called before requesting initiative info

NEW FEATURES:
- Initiative Name Collection: Tracks discovered initiative types over time
  - Run /ve initiatives to see all initiative types you've encountered
  - Data persists across sessions and builds as initiatives rotate
  - Useful for discovering the full list of housing endeavor types
- Info Tab: Browse collected initiative types with collapsible details
  - Shows title, description, ID, and first/last seen dates
  - Encourages community contribution to expand the database

UI IMPROVEMENTS:
- Updated minimize button icon (Map-Filter-Button atlas)
- Updated theme toggle button icon (Crosshair_Transmogrify_32 atlas)
- Consistent 18x18 size and 0.85 brightness for title bar icons
- Polished tab bar layout with improved button sizing and spacing

--------------------------------------------------------------------------------

Version 1.5.5 (Released January 2026)
--------------------------------------------------------------------------------

NEW FEATURES:
- Active Neighborhood Display: Shows which house is your active endeavor destination
  - House icon with neighborhood name below the dropdown
  - Updates automatically when changed via VE or Blizzard's dashboard

BUG FIXES:
- Fixed neighborhood switching bugs where VE would override Blizzard dashboard
  - Removed SetViewingNeighborhood from auto-refresh paths
  - VE no longer forces dashboard to switch back to active house
- Fixed "Set as Active" button incorrectly showing "Fetching..." state
  - Simplified empty state logic by removing complex flag-based tracking
  - Now purely based on whether viewing the active neighborhood

CODE CLEANUP:
- Removed dead SetupNeighborhoodContext function
- Removed unused setActiveClicked flag and related logic
- Cleaned up unused local variables in Endeavors.lua

--------------------------------------------------------------------------------

Version 1.5.4 (Released January 2026)
--------------------------------------------------------------------------------

PERFORMANCE:
- Removed QUEST_LOG_UPDATE and CRITERIA_UPDATE event handlers that caused game
  choppiness during herb/lumber gathering (events fire dozens per second)

BUG FIXES:
- Task progress now updates in real-time without needing to refresh or reopen
  - Root cause: UI cache key only checked task count, not progress values
  - Fix: Added progress hash to cache key so UI rebuilds when any task changes

TECHNICAL:
- Optimized Endeavors.lua with file-level caching and reusable sort array
- Progress hash includes task index to detect reordering

--------------------------------------------------------------------------------

Version 1.5.3 (Released January 2026)
--------------------------------------------------------------------------------

NEW FEATURES:
- Housing Dashboard Integration: "Endeavor Tracker" button in Blizzard's native Housing Dashboard
  - Click to toggle the VE window directly from the dashboard
  - Toggle visibility via "Show Dashboard Button" in Config tab
- Decimal precision control: arrows to adjust contribution decimal places (1-3) in Activity tab
- Theme tooltip now shows current theme name in addition to next theme

HOUSING THEME ENHANCEMENTS:
- Custom logo texture in title bar (replaces text for Housing Theme)
- Wood frame border around window (atlas-based)
- Section headers use housing-woodsign atlas background
- Decorative foliage on section header corners (left and right)
- Scrollbar handles use decor-abilitybar-divider atlas
- Section headers now full-width (removed horizontal padding)
- Refresh button now icon-only (sync icon)

UI IMPROVEMENTS:
- Sort icons now centered over their XP/Coupon boxes in Endeavors tab
- Removed pip icon from Leaderboard section header
- Added sectionHeaderYOffset constant for consistent vertical positioning
- Correct frame layer order: background → foliage → text/icons
- Title bar buttons (theme, minimize) now dimmed when not hovered (matches close)
- House level/XP text right-aligned in header
- Refined header element positioning and spacing

BUG FIXES:
- Fixed house level/XP not updating when switching between houses

--------------------------------------------------------------------------------

Version 1.5.2 (Released January 2026)
--------------------------------------------------------------------------------

NEW FEATURES:
- Multi-house dropdown now matches Blizzard's Housing Dashboard behavior
  - Switching houses only changes viewing context (not active endeavor)
  - "Set as Active" button appears when viewing non-active house
  - Click button to set house as your active endeavor destination

BUG FIXES:
- Fixed Endeavors tab showing "Fetching..." instead of Set as Active button
- Fixed setActiveClicked flag not resetting on house switch

--------------------------------------------------------------------------------

Version 1.5.1 (Released January 2026)
--------------------------------------------------------------------------------

BUG FIXES:
- Fixed memory leak: countdown ticker now stops when window is hidden
- Fixed race condition with retry timer cleanup
- Fixed dropdown selection resetting when house list updates
- Added GUID validation to prevent empty string API calls
- Added type safety check for house level favor data
- Added defensive nil check for character tracking

IMPROVEMENTS:
- Fetch status now displays below dropdown (house level always visible)
- House selection now persists across sessions and reloads
- Removed aggressive 60-second auto-refresh (data updates via events)
- Coupon rewards now show base value with "(Decreases with completions)" note
- Added /ve coupons debug command to inspect reward API data
- Currency ID now uses Constants for maintainability

TECHNICAL:
- OnHide handler cancels timers and cleans up tooltips
- OnShow recreates ticker only when needed
- GUID checks now verify against empty strings
- Coupon calculation simplified to use API totalRewardAmount directly

--------------------------------------------------------------------------------

Version 1.5.0 (Released January 2026)
--------------------------------------------------------------------------------

NEW FEATURES:
- Multi-House Support: House dropdown lets you switch between owned houses
  - Automatically selects current/active neighborhood on login
  - House selection persists across sessions
- House Level Display: Shows "Lv X" with XP progress (current/next level)
  - Visual indicator of house progression
- Fetch Status Display: Shows data loading state in header
  - "Fetching..." / "Retrying..." / "Data loaded" states
  - "Last updated" timestamp for activity log
- Leaderboard "My Total" Row: Shows combined contributions across all your alts
  - Tracks all characters automatically
  - Shows character count "(X chars)"
- House XP Earned: Shows estimated total House XP from completed endeavors
  - Progressive diminishing returns formula: factor = 0.96 - 0.10 * n
  - Known base values for each task type (50, 25, 150, 10)
  - Tooltip explains the formula and progression
- Task Sorting: Sort task list by XP or Coupons (ascending/descending)
  - Sort state persists across sessions
  - Completed tasks always sort to bottom
- Discord Link: Improved display with Discord icon, auto-select, copy hint
- Debug Command: /ve xpdump shows task XP data for analysis

BUG FIXES:
- Automatic Data Loading: Endeavor data now loads on login without opening
  Blizzard's Housing Dashboard (SetViewingNeighborhood API fix)
- Non-repeatable tasks now show base coupon reward (no DR applied)
- Coupon badge no longer cut off on right side

UI IMPROVEMENTS:
- House dropdown in header for multi-house selection
- House level badge next to house dropdown
- Fetch status indicator with loading/error states
- House XP Formula section in Config tab with base value reference
- Coupon badge slightly taller for better text fit

TECHNICAL:
- SetViewingNeighborhood() called before RequestNeighborhoodInitiativeInfo()
- Multi-house selection via C_Housing.GetPlayerOwnedHouses()
- GetTaskTotalHouseXPEarned() calculates XP with progressive DR
- TASK_BASE_VALUES lookup table for known base values by task pattern
- Sort state saved to VE_DB.ui.taskSort
- myCharacters tracking for cross-alt leaderboard aggregation

--------------------------------------------------------------------------------

Version 1.4.0 (Released January 2026)
--------------------------------------------------------------------------------

NEW FEATURES:
- Housing Theme: New theme mimicking native WoW Housing Dashboard aesthetic
  - Uses Blizzard Atlas textures for authentic look
  - Dark charcoal background with bronze/wood trim
  - Blizzard Gold accents and header text
  - 3-part tab rendering (left cap, center, right cap) for native tab appearance

UI IMPROVEMENTS:
- Equal-width tab buttons that fill the window width (4px padding)
- Renamed tabs: "Leaderboard" → "Rankings", "Settings" → "Config"
- Removed bottom highlight line from tabs for cleaner look
- Added padding above season name header

TECHNICAL:
- Atlas texture support in ThemeEngine with vertical flip for Blizzard tab textures
- Tab width calculated dynamically based on window width
- SetTexCoord(0, 1, 1, 0) for proper tab orientation

--------------------------------------------------------------------------------

Version 1.3.0
--------------------------------------------------------------------------------

NEW FEATURES:
- 10 Theme Options: Solarized Dark/Light, Gruvbox Dark/Light, Everforest Dark/Light,
  Everforest Access, Kanagawa Dark/Light, and Accessibility High Contrast
- Theme Toggle Button: "T" button in title bar cycles through all themes
- Live Theme Switching: All UI elements update instantly when changing themes
- Font Size Adjustment: Scale all fonts from -4 to +8 in Settings
- UI Scale: Resize entire window from 80% to 140%
- Background Transparency: Adjust opacity from 30% to 100%
- Font Family Selection: Choose from Arial Narrow, Friz Quadrata, Skurri,
  Morpheus, or Expressway

BUG FIXES:
- House level now displays correctly on addon open (was showing stale data)
- Fixed house selection to prefer current/active neighborhood

UI IMPROVEMENTS:
- Consistent font sizing across all tabs (Activity, Leaderboard, Endeavors)
- Settings controls aligned with dropdown edges for cleaner layout
- Task rows use consistent body font sizing

TECHNICAL:
- Smart house selection matching Blizzard's dashboard logic
- Background opacity applied via theme skinners
- Font family stored in SavedVariables

--------------------------------------------------------------------------------

Version 1.2.0
--------------------------------------------------------------------------------

NEW FEATURES:
- 5 Theme Options: Solarized Dark, Solarized Light, Gruvbox Dark, Gruvbox Light,
  and Everforest
- Theme Toggle Button: Quick access "T" button in title bar cycles through themes
- Live Theme Switching: All UI elements update instantly when changing themes

UI IMPROVEMENTS:
- Borderless title bar for cleaner appearance
- Centered title text
- Improved button spacing and alignment
- Refresh button properly themed across all color schemes
- Theme button shows accent color indicator

TECHNICAL:
- Theme Engine with widget registry for live updates
- ThemeDisplayNames for user-friendly tooltip labels
- All buttons and panels now respond to theme changes

--------------------------------------------------------------------------------

Version 1.1.1
--------------------------------------------------------------------------------

BUG FIXES:
- Activity log now loads automatically on login (fixes inconsistent leaderboard
  data across characters)
- Previously, activity data only loaded when opening Activity/Leaderboard tabs

--------------------------------------------------------------------------------

Version 1.1.0
--------------------------------------------------------------------------------

NEW FEATURES:
- Leaderboard Tab: See contribution rankings for all neighborhood members
  - Gold/Silver/Bronze colors for top 3 contributors
  - Current player highlighted in cyan
- Activity Tab: Track recent neighborhood activity
  - Top 5 Tasks: Most completed tasks by count
  - Activity Feed: Recent completions sorted by time (newest first)
  - Shows player name, task name, XP earned, and time ago

UI IMPROVEMENTS:
- Coupons display moved to title bar (always visible)
- Title text left-aligned after Refresh button
- Loading state for activity data ("Loading activity data...")
- Auto-refresh when activity log updates from server

TECHNICAL:
- Added VE_ACTIVITY_LOG_UPDATED event for reactive UI updates
- Activity log loaded flag to distinguish loading vs empty states
- Hover states properly maintain player highlight colors

--------------------------------------------------------------------------------

Version 1.0.2
--------------------------------------------------------------------------------

IMPROVEMENTS:
- Enhanced /ve tasks debug command: now searches for lumber, harvest, rare tasks
- Improved debug output: shows progressContributionAmount and all currency rewards

VERIFIED BEHAVIOR:
- Coupon rewards: correctly displays "next reward" value (base - timesCompleted)
- XP/Points: API progressContributionAmount shows diminished value (next reward)
- Both values represent what you'll earn on next completion, not base values

--------------------------------------------------------------------------------

Version 1.0.1
--------------------------------------------------------------------------------

NEW FEATURES:
- Community Coupons Display: Shows total coupons in header (currency ID 3363)
- Per-Task Coupon Rewards: Cyan badge shows coupon reward for each task
- Auto-Refresh: UI updates automatically when coupons are earned

UI IMPROVEMENTS:
- Reduced window width from 388px to 338px for cleaner layout
- Reorganized header: season name/days on row 1, full-width progress bar below
- Total Coupons moved to Endeavor Tasks header row (right-aligned)
- Changed frame strata to MEDIUM (no longer always on top)

TECHNICAL:
- Added GetTaskCouponReward() to query quest rewards via rewardQuestID
- Registered CURRENCY_DISPLAY_UPDATE event for live updates

--------------------------------------------------------------------------------

Version 1.0.0
--------------------------------------------------------------------------------

INITIAL RELEASE

NEW FEATURES:
- Endeavor Task List: View all housing endeavor tasks from C_NeighborhoodInitiative API
- Completion Tracking: Green/gray indicators show task completion status
- Repeatable Task Icons: Green refresh icon (UI-RefreshButton) for repeatable tasks
- Progress Display: Shows X/Y progress for multi-step tasks (e.g., "47/100")
- Point Values: Gold badge showing endeavor points awarded per task
- Progress Bar: Visual season progress with diamond milestone markers
- Season Info: Shows endeavor name and days remaining
- Solarized Theme: Dark and Light theme support with toggle
- Minimap Button: Quick access to open/close the window
- Config Tab: Settings for debug mode, minimap button visibility, theme

ARCHITECTURE:
- Redux-lite state management (Store with actions/reducers)
- Event bus for component communication
- Modular UI framework with reusable components
- C_NeighborhoodInitiative API integration
- Placeholder data fallback when API unavailable

COMMANDS:
- /ve - Toggle main window
- /ve debug - Toggle debug mode
- /ve refresh - Force refresh endeavor data
- /ve theme - Toggle dark/light theme
- /ve dump - Show current state

---

Future Plans:
- Multi-character progress tracking
- Character comparison grid
- Activity log display
- Task tracking (pin to objectives)

================================================================================
