Commit Graph

77 Commits

Author SHA1 Message Date
Xurkon 568cd44af8 fix: port Phase 1 perf/correctness audit fixes onto main
Brings the still-needed changes from questie-phase1perf that main lacked.
Main already had the Lua 5.0 shims (QuestieLoader bit/strsplit, QuestieStream
and QuestieSerializer math.mod sweep), so those are omitted.

- QuestieNameplate: skip missing entries instead of return-aborting the whole
  activeGUIDs loop (one bad unit no longer stalls every nameplate update)
- QuestieQuest.ClearAllNotes: skip DB-missing quests instead of aborting, so
  remaining quests' notes still get cleared
- QuestieOptionsTracker: fix fadeTickerValue:Cancel -> fadeTicker:Cancel (3x);
  fadeTickerValue is a number, the ticker handle is fadeTicker
- QuestieCommsData: nil-guard GetNPC/GetObject before reading .name
- QuestieAnnounce: bound the alreadySentBandaid dedup cache (reset at 1000)
- QuestieDB.IsComplete: hoist GetQuest into expectedQuest (one call, not two)
- QuestieFramePool/QuestieFrame: drop the dead BaseOnUpdate ticker branch
  (BaseOnUpdate was never defined; behavior was always OnUpdate=nil)
- QuestieLib: document unused questId arg on Ascension_IsScalingEnabled
- Database/Corrections x3: strip stray UTF-8 BOM
- Questie-X.toc: remove duplicate QuestieSlash.lua load line
2026-06-12 06:48:53 -05:00
Xurkon 900ff4a4e4 fix(map): extend minimap fade range slider 2026-06-11 15:17:18 -05:00
Xurkon 49bc586c15 fix(tooltip): make Ascension quest-line stripping opt-in (#16)
HideAscensionQuestLines ran on every tooltip and removed any line
matching a quest-objective pattern (N/M, [N] ...), clobbering other
tooltip addons' lines (durability, stack counts, etc.). Gate it behind a
new General-tab option 'Hide Ascension quest progress lines' (default
off) so Questie no longer modifies tooltip lines it does not own by
default. Existing installs read the unset option as off automatically.
2026-06-10 20:39:21 -05:00
Xurkon e852e02d32 fix(tooltip): make ElvUI tooltip style opt-in, reset for existing installs (#16)
The ElvUI tooltip style shipped on by default, so Questie restyled every
default WoW tooltip (stripping the border) for users who never asked for
it and don't run ElvUI. Default is now false, plus migration [8] resets
it off once for existing profiles.
2026-06-10 20:26:41 -05:00
Xurkon 2c695c45fe feat(learner): zone-scoped export; 200k entry cap; SmoothReset after import
QuestieLearnerExport:
- Extract _Encode helper to consolidate serialize+deflate+encode
- Add ExportZone(serverKey, zoneId) to export only the learned data
  for a specific zone (NPCs/objects with spawns in that zone, plus
  their dropped items and related quests) for smaller, faster exports
- Cap ValidateImport at 200k entries to guard against pathological
  payloads that could stall the client during merge
- Call SmoothReset after MergeImport so newly imported spawns appear
  on the map without requiring /reload

QuestieOptionsDatabase:
- Refresh AceConfigRegistry after import so Database tab stats update
  immediately (previously required /reload or opening Options)
- Add Export Current Zone button tied to ExportZone()
2026-06-10 05:39:39 -05:00
Xurkon 1b06808655 feat(map): raise Minimap Icon Range Cutoff max to 1000
Players who run fully zoomed-out minimaps need a larger visibility radius
since quest objective spawns can be far apart. Raise the slider max from
200 to 1000 (yards). Default (100) and minimum (25) unchanged.
2026-06-10 05:07:30 -05:00
Xurkon ab560d5711 fix(map): completed/accepted/repeatable available-quest pins (#7 #9 #10)
#7: Completed quests kept showing as available '!'. The server completed-
quest list arrives async via QUEST_QUERY_COMPLETE, often after available
quests were first drawn. Recalculate available quests once char.complete is
populated by that event so completed quests are removed (also clears the
already-completed subset of #8).

#9: An accepted quest's available '!' could linger on the minimap until
/reload. UnloadQuestFramesByDataType unloaded the frame but left its name in
questIdFrames and _G; it now removes those references so the icon is torn
down immediately on both map and minimap.

#10: Added 'Hide repeatable quests below level 60' (Icons tab, off by
default) to hide repeatable available quests (e.g. the Ascension Callboard)
from map/minimap until level 60. Enforced in _DrawQuestIfAvailable and
ShouldBeHidden so existing minimap pins are removed too; reappear at 60.

Lint: selene 0 errors. Tests: 145 successes / same 7 pre-existing failures.
2026-06-09 23:18:38 -05:00
Xurkon fa37ab8eb5 feat(tooltip): ElvUI style without ElvUI; source in secondary only; fix learner source label
- ElvUI tooltip style: new 'ElvUI tooltip style' option (General tab, on by
  default) skins GameTooltip/WorldMapTooltip/ItemRefTooltip/shopping tooltips
  and the secondary learner frame with ElvUI's transparent flat look (dark bg
  + thin 1px border) when ElvUI is not installed. Corrected the secondary
  frame fallback that used the chunky WoW border. No-op when ElvUI is loaded.

- Source attribution now shows ONLY inside the secondary learner tooltip when
  'Use secondary learner tooltip' is enabled; removed from the main NPC/object/
  item tooltip and gated off entirely when the secondary tooltip is disabled
  (map-pin source gated the same way).

- Fixed learner-learned pins mislabelled 'AscensionDB': GetPinDataSource is now
  mode-aware and returns 'Learner' in learner mode when the entity has a learner
  record, even if AscensionDB also curates it (curated coords are discarded by
  GetNPC/GetObject in learner mode anyway).

Test-neutral (145 successes / same 7 pre-existing failures + 1 error).
2026-06-09 21:52:55 -05:00
Xurkon 08b266d7ba fix(tooltip): never add learner spawn data to the main tooltip
The 'Use secondary learner tooltip' option's off-path appended learner
spawn/kill lines directly to the main GameTooltip. The toggle now gates
the data entirely: on = shown in the separate secondary frame, off = not
shown anywhere. Learner spawn/kill data is never inline in the main NPC
tooltip under any setting.

Removed the now-unused _AddTooltipSeparator helper and updated the option
description.
2026-06-09 18:20:39 -05:00
Xurkon 0c4631be6e feat(tooltip): accurate per-pin data source attribution
Re-adds the 'Show data source' tooltip option (General tab, default off),
but accurate this time. The previous version was removed because it
guessed the source from the global data-source mode (showing Learner when
data was AscensionDB, etc.). This tags each pin with its real provenance
at creation and reads that tag.

- QuestieDB.GetPinDataSource(entityType, id, spawnData): resolves
  Learner (per-spawn isLearned or learner record), AscensionDB (curated
  ascensionOverrideKeys override), or base Questie DB. Never guesses.
- Objective pins tagged per-spawn in _DetermineIconsToDraw; available/
  finisher pins defaulted by quest in DrawWorldIcon; manual notes tagged
  Townsfolk in DrawManualIcon.
- World-map pins read the per-pin tag (MapIconTooltip); unit/object/item
  hovers derive per-id at the render layer (TooltipHandler via
  QuestieTooltips:GetDataSourceLine). Comms appended via KeyExists.
- No line shown when source is genuinely unknown (never misleading).
2026-06-09 17:57:58 -05:00
Xurkon 700445c248 fix(options): use {} not { ... } for tab tables
Five Options files seeded their tab tables with { ... } instead of {}.
At chunk scope WoW passes ... = (addonName, addonTable), so each table
got two stray junk entries instead of being empty; { ... } is also a
strict Lua 5.0 parse error. Fixed QuestieOptions.tabs and the Arrow,
General, Keybinds, and Tracker tab tables. Cherry-picked from
phase2-lua50-sweep (the only version-independent fix in that branch).
2026-06-08 16:24:46 -05:00
Xurkon 78aefa4af8 perf: skip TestGameCache wait on clustering-only redraws
- SmoothReset now accepts { skipCacheTest = true } to short-circuit the game cache wait and draw-queue drain
- ClusterRedraw passes the flag so icon-cluster and dense-pin-clustering sliders redraw immediately
- QuestieOptionsAdvanced wires the spawn-pin-dedup-radius slider directly to ClusterRedraw instead of the delayed SmoothReset path
2026-06-07 08:42:40 -05:00
Xurkon f5d8e24810 fix: speed up slider redraws 2026-06-06 14:33:35 -05:00
Xurkon 1ca426ee9f feat: expand learner tooltip controls 2026-06-06 14:30:07 -05:00
Xurkon 1f3de0e02e feat: add learner tooltip controls 2026-06-06 13:59:31 -05:00
Xurkon 2cb129ae4b feat: add debug message throttle 2026-06-06 13:44:49 -05:00
Xurkon a1c6a181fc fix: refresh learner settings live 2026-06-06 12:19:23 -05:00
Xurkon 6597d20b7d feat: refine learner data source and pin rendering 2026-06-06 00:04:50 -05:00
Xurkon cf16e7e95b feat: show runtime learner mode in database tab 2026-06-05 21:09:10 -05:00
Xurkon e40e9bc1b3 fix: show selected learner data source mode 2026-06-05 21:06:08 -05:00
Xurkon 64d5fb2f10 fix: keep learner mode live 2026-06-05 20:51:42 -05:00
Xurkon 9d02c8a231 fix: fully clear learned data buckets 2026-06-05 20:37:34 -05:00
Xurkon 3eda8d01ed fix: force learner on when base db is missing 2026-06-05 20:23:29 -05:00
Xurkon a0409eef8c feat: add learner/static data source mode 2026-06-05 20:15:26 -05:00
Xurkon 1f6b6b14dc perf: align learner debounce defaults 2026-06-05 14:10:58 -05:00
Xurkon ccd2bc10d6 refactor: centralize performance options 2026-06-04 17:07:14 -05:00
Xurkon b62def52fd feat: add questie comms performance options 2026-06-04 17:05:03 -05:00
Xurkon a113791d64 perf: add questie comms disable gate 2026-06-04 17:04:12 -05:00
Xurkon c6bfa95c9e perf: wire questie comms throttles 2026-06-04 17:01:37 -05:00
Xurkon 5e3ac7cdd1 fix: synchronize learner performance options 2026-06-04 16:59:37 -05:00
Xurkon a1424bdd53 perf: add arrow performance controls 2026-06-04 16:53:21 -05:00
Xurkon f160570a95 perf: add learner performance controls 2026-06-04 16:37:03 -05:00
Xurkon 51561b97d8 perf: batch learner updates and remove Turtle support 2026-06-04 06:47:45 -05:00
Xurkon 4b7c295210 fix: stabilize minimap range cutoff and update release docs 2026-06-03 06:05:55 -05:00
Xurkon fe1f79cd2b chore: release 1.6.3 2026-06-02 11:25:28 -05:00
Xurkon a2a325c8ab Guard all LibSharedMedia-3.0 usages against nil LSM - OptionalDep may not load
- Use LibStub(..., true) silent flag on all LSM acquisition sites
- Guard HashTable() calls in Options files (returns nil if no font type registered)
- Guard all Fetch() call sites with inline 'LSM30 and LSM30:Fetch() or fallback'
- Make font values lazy functions in options dropdowns so LSM has time to register
- Affects: QuestieOptionsTracker, QuestieOptionsArrow, QuestieArrow, QuestieTracker,
  TrackerHeaderFrame, TrackerLinePool, TrackerQuestTimers
2026-04-24 04:24:38 -05:00
Xurkon 97c8f60a28 QuestieOptionsArrow: guard LibSharedMedia HashTable call - LSM is OptionalDep, may not be present or have font type registered at load time 2026-04-24 03:59:33 -05:00
Xurkon 49477da2d0 v1.6.0: Stable Map Search & Blood of Heroes Data Fix 2026-04-08 17:34:15 -05:00
Xurkon 49ef9b6e55 fix: Use pairs() instead of ipairs() for hash table iteration 2026-04-02 20:51:08 -05:00
Xurkon 03a58e0c28 feat: Add expanded font list with common WoW fonts to Arrow and Tracker options 2026-04-02 20:43:17 -05:00
Xurkon a9f4a97979 cleanup: Remove debug prints and duplicate spacer 2026-04-02 19:45:17 -05:00
Xurkon 2efbc0e799 fix: Use SharedMedia:Fetch to get actual font object 2026-04-02 19:42:15 -05:00
Xurkon aa51ea8f2a fix: Import SharedMedia in Arrow options 2026-04-02 19:34:24 -05:00
Xurkon 447ba0513e fix: Guard against QuestieConfigFrame being nil in OpenConfigWindow 2026-04-02 19:30:56 -05:00
Xurkon 57f6cc4471 feat: Add arrow font settings; Add Apply to All font options to Tracker 2026-04-02 19:27:05 -05:00
Xurkon cf462d9a9f debug: Add print to scale set 2026-04-02 19:16:21 -05:00
Xurkon 1decb399b3 fix: Remove duplicate arrow_alpha and debug prints 2026-04-02 19:14:08 -05:00
Xurkon fb8c4292c9 debug: Add prints to trace scale update 2026-04-02 19:06:56 -05:00
Xurkon a1f273bba5 fix: Add UpdateSettings function to apply scale/alpha without touching visibility 2026-04-02 19:04:20 -05:00
Xurkon ef61faa9f9 fix: Use method call syntax for ApplyScale 2026-04-02 18:58:27 -05:00