Version 1.3.0 (2026-04-10)
--------------------------------------------------------------------------------

ADDED:
- Activity Muting: Mute companion in Dungeons & Delves, Raids, or PvP & Arena
  independently. Checkboxes in Display settings under "Mute In" section.
- Toast Duration: Adjustable display time for quote popups (2-15 seconds).
  Controls in Display settings. Epic/legendary quotes get +4s on top.

FIXED:
- Auto-Summon: Fixed linked pet disappearing shortly after summoning. Root cause:
  SummonPetByGUID is a toggle (same GUID = dismiss), and every SET_CONFIG dispatch
  (theme, portrait scale, toast, mute toggles) re-triggered TrySummon during the
  async animation window when GetSummonedPetGUID() returns nil — toggle-dismissing
  the pet. Fix: narrowed SET_CONFIG filter to only pet-relevant keys (autoSummon,
  activeCompanion), replaced UPDATE_SUMMONPETS_ACTION (fires on both summon AND
  dismiss, caused feedback loops) with PLAYER_MOUNT_DISPLAY_CHANGED for dismount
  recovery, added 1.5s re-entrant summon guard to prevent double-fire during the
  animation window.

CHANGED:
- Portrait: Replaced interaction state flags with duration-based oneshot model.
  Looting, crafting, interacting, and talking animations now play as brief
  reactions (3-5s) instead of looping forever until close events fire. Prevents
  permanently stuck animations from missed close events (house editor, DC at
  vendor, zone transition mid-craft). Crafting re-triggers on each item crafted.
  Separate timer track from quote animations to prevent collisions.

Version 1.2.0 (2026-04-09)
--------------------------------------------------------------------------------

ADDED:
- Toast Position: "Move Toast" mode in Display settings lets you drag the
  talking head popup to any screen position. Position persists across sessions.
  Reset button restores default TOP-CENTER placement. Preview shows accent
  border as drag affordance. Real quotes suppressed during move mode.
- Linked Battle Pet: Each companion can have a linked battle pet that
  auto-summons when that companion is selected. Section appears below the
  signature quote in the Companion tab. Pet selector popup with search and
  full collection browsing. Auto-resummon after loading screens, pet battles,
  and vehicle exits. Manual override detection (if you summon a different pet
  manually, VC won't fight it until the next companion switch).
- Auto-Summon settings: Global toggles in Display tab for auto-summon and
  auto-resummon behavior.

FIXED:
- Portrait: Fixed companion getting stuck in DISTRESSED (Cower) animation on
  flight paths. PLAYER_CONTROL_LOST fires on taxi, and the priority chain
  checked _controlLost before UnitOnTaxi, so DISTRESSED always won. Now
  checks UnitOnTaxi first so the companion shows FLYING on flight paths.
- Debug: Fixed side panel overlay not updating when animation state changes.
  UpdateDebugText was only called from manual anim cycling, not from
  SetPortraitAnimation.

================================================================================
Vamoose's Companion - Changelog
================================================================================

Version 1.1.1 (2026-04-08)
--------------------------------------------------------------------------------

FIXED:
- Portrait: Fixed crash in raids, M+, and PvP from Midnight secret boolean
  values. APIs like IsFlying, IsMounted, and UnitIsAFK return opaque values
  in protected contexts that crash on boolean test. Portrait now detects
  secret contexts and degrades to combat animation. Belt-and-suspenders
  pcall wrapper catches any cases the context guard misses.
- Collectors: Fixed UnitIsAFK boolean test leaking secret value outside pcall.
  The test is now inside the pcall closure so the error is caught properly.
- Collectors: Fixed UnitName potentially returning a secret string in instanced
  combat, causing string.find to crash on the loot message filter.

Version 1.1.0 (2026-04-07)

MODEL PIPELINE:
- Unified model loading pipeline following Blizzard's canonical pattern
  (destroy actor, fresh create, Hide -> Callback -> Load -> Show)
- Fixed model positioning bug on first load and companion/variant switching
- Fixed talking head model auto-fit (callback was being overwritten)
- Fixed portrait scale not applying to model on reload
- AutoFitActor now accounts for effective UI scale
- Portrait facing calculated upfront in opts (no post-callback overwrite)
- 5s login defer for clean ModelScene initialization

PORTRAIT FRAME STYLES:
- New Display setting: Classic / Ornate / Minimal
- Classic: Barbershop atlas frame (default)
- Ornate: Filigree portrait frame with parchment talking head and gold text
- Minimal: No frame, no bond pips, no mood wash
- Bond pips and mood bar adjust position per frame style
- Style persists across sessions

ORNATE TALKING HEAD:
- Custom toast frame at natural aspect ratio (600x255)
- Dark brown parchment text with warm shadow
- Larger model viewport with adjusted positioning
- NineSlice and drop shadow hidden in ornate/minimal modes

SETTINGS PANEL:
- Steampunk copper title texture replaces MORPHEUS font text
- Theme color swatches (VPP-style clickable chips with tooltip)
- New Info tab with Discord link, Buy Me a Coffee, and about text
- Forge-Background atlas on companion preview
- Sidebar simplified: name only (removed title, bond bar, mood)
- Sidebar preview cards: square, camera zoom for small creatures
- All fonts switched from Arial Narrow to Friz Quadrata
- Companion preview mood bar removed

THEME AWARENESS:
- 36+ new VC.Theme:Register() calls across Settings and Companion page
- New ThemeEngine skinners: DimText, AccentText, Separator
- Sidebar background, separators, labels all update on theme change
- Sidebar hover closures read scheme at call time (not build time)
- ColorblindSafe theme added (13 themes total)

QUOTE DATABASE:
- 75 rep "loss" quotes rewritten as "gain" (WoW has no rep decrease)

MODEL VARIANTS:
- Removed duplicate variants across all companions
- Removed toucan and mechanical parrot from Patches
- Patches portraitZ and toast scale tuned

Version 1.0.0 (2026-04-07)
--------------------------------------------------------------------------------

First public release.

COMPANIONS:
- 4 companions: Vamoose, Scurry, Gazlowe, Patches
- Each with a unique personality, chat color, theme accent, and 3D model
- Multiple model variants per companion with a browsable Model Viewer

REACTIVE QUOTE ENGINE:
- 30+ event types: boss kills, achievements, deaths, quests, gold, zones,
  level ups, housing milestones, M+ completions, pet battles, crafting,
  fishing, transmog, reputation, scenarios, and more
- 4-tier quote quality (common / uncommon / rare / epic / legendary)
- Weighted random selection with history deduplication
- Priority scoring and per-category cooldowns to prevent spam
- 4 chattiness levels (Minimal / Relaxed / Chatty / Maximum)
- Per-event-type toggles across 5 groups

TALKING HEAD DISPLAY:
- Cinematic popup with 3D companion model and typewriter text reveal
- Quality-tier visual effects (colored borders, sheen on epic/legendary)
- Click to dismiss or auto-hide after configurable duration
- Chat mode available as alternative (or both simultaneously)

ANIMATED PORTRAIT:
- Draggable portrait frame with live 3D companion model
- Context-aware animations: idle, walking, running, mounted, flying,
  swimming, combat, fishing, sleeping, AFK, and more
- Auto-facing toward screen center
- Bonding pips and mood ring on portrait border
- Scalable from 60% to 160%

BONDING SYSTEM:
- Rapport builds through gameplay (quests, boss kills, achievements, logins)
- 5 bond levels: Stranger, Acquaintance, Companion, Trusted, Soulbound
- Login streaks build rapport; absences apply gentle penalty
- Bond level-ups trigger special companion-specific quotes

MOOD TRACKING:
- Session mood influenced by gameplay (achievements boost, deaths lower)
- Visualized as color wash on portrait border

PORTRAIT FRAME STYLES:
- Classic: Barbershop atlas frame (default)
- Ornate: Filigree portrait frame with parchment talking head and gold text
- Minimal: No frame, no bond pips, no mood wash -- just the model
- Style applies to both portrait and talking head

SETTINGS PANEL:
- 4-tab layout: Companion, Display, Events, History
- Portrait Frame selector (Classic / Ornate / Minimal)
- Model variant browser with clickable grid
- Quote history with quality indicators and replay button
- Slipstream Dark theme

SLASH COMMANDS:
- /vc -- Show help
- /vc companion <name> -- Switch companion
- /vc mute / unmute -- Toggle muting
- /vc test [category] -- Fire test quote
- /vc status -- Show companion status

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