File Details
Vamoose's Endeavors v1.16.0
- R
- Apr 23, 2026
- 578.42 KB
- 11.8K
- 12.0.5+2
- Retail
File Name
VamoosesEndeavors-1.16.0.zip
Supported Versions
- 12.0.5
- 12.0.1
- 12.0.0
FIXED:
- AltSharing was registered for the wrong neighborhood-change event
(VE_NEIGHBORHOOD_CHANGED instead of VE_ACTIVE_NEIGHBORHOOD_CHANGED).
Long-standing latent bug surfaced by post-1.15.0 audit — its handler had
been silently never firing. Cross-faction channels now actually re-join
when you switch active neighborhoods.
CHANGED:
- Removed `/ve scale`, `/ve validate`, `/ve rules`, `/ve observer` debug
commands and their stale entries in `/ve` help — all relics of the old
scale-derivation/Observer architecture deleted in 1.15.0.
- Schema migration v3 now also clears legacy `learnedFormula`, `taskRules`,
and `formulaCheckpoint` SavedVars keys (was being done unconditionally on
every login).
- Trimmed `VE_XPEngine` context: dropped unread `taskXPCache`,
`taskXPByPlayer`, `playerCompletions`, and `_ptc` fields (and the dedup
work that built them). Per-rebuild allocation roughly halved.
- Removed `VE_XPEngine` public methods with zero callers:
`GetDecayMultiplier`, `HasContext`, `ClearContext`,
`GetPlayerCompletionCount`. Public surface now only exposes what the UI
actually reads.
- `EndeavorTracker:GetActivityLogData` no longer falls back to
`self.cachedActivityLog` — the fallback was unreachable since both paths
are populated together.
- Fixed: `INITIATIVE_TASK_COMPLETED` 30-second activity-log fallback timer was
fire-and-forget — five rapid task completions stacked five separate
fallback timers instead of debouncing. Now cancel-and-replace, single
fallback in flight at a time.
- Fixed: `SetAsActiveEndeavor` spawned two un-cancellable timers per click
(1.5s + 3s). Two rapid "Set Active" clicks meant four orphaned timers
doing duplicate work. Now stored on cancellable handles.
- Fixed: defensive nil-guard on `pending.taskName` in coupon correlation —
would have errored on `VE_DB.taskActualCoupons[nil]` if the task name
was ever missing from the pending queue.
- Removed dead `Tracker:GetCouponGainsThisSession` (zero callers) and the
`VE_FETCH_STATUS_CHANGED` event trigger (no listeners).
- v3 schema migration now also clears `houseXP` from per-guid `houseData`
entries (pre-1.15.0 wrote it; v1.15.0+ doesn't).
- Cleaned up vestigial XP FORMULA comment block in Constants.lua and the
duplicate "5." section heading.
- Misc unused-local cleanup across HousingTracker, AltSharing, and
Endeavors.lua (LSP nits).
- Fixed: `houseInfo.houseName` is `0` (number, truthy) for unnamed houses
per Blizzard API — the `or` fallback was rendering "0" instead of
"House N" / "Select House" / "Unknown" in the dropdown and active-
endeavor display. Both call sites now type-check the string.
- Fixed: `showLoginActiveEndeavor` config setting was in defaults and
read by EndeavorTracker but never written to SavedVariables — toggling
it off in the Config tab silently reset to ON every reload.
- Fixed: HousingTracker `Initialize()` and `PLAYER_ENTERING_WORLD` 1.5s
startup timers were fire-and-forget — could stack if both fired in the
same load sequence. Now share a single cancellable handle.
- Fixed: EndeavorTracker had three more orphan timers in `OnEvent`
(PLAYER_ENTERING_WORLD house-list fetch, login-msg announcer, coupon
retry). All converted to cancellable `NewTimer` with cancel-replace.
Dropped the now-redundant `_couponRetryScheduled` flag.
- Fixed: `UpdateCoupons` lacked the `if C_CurrencyInfo` guard every other
call site uses. Coupon icon now also loads for players with 0 coupons
(was previously gated behind `quantity > 0`).
- Fixed: theme switch on the Activity and Leaderboard tabs left rows
rendered in the previous theme's colors when the activity log
timestamp hadn't changed. Both now pass `forceUpdate=true`.
- Fixed: mini favourites panel rows in the header used inline
`SetBackdropColor` and weren't registered with the theme engine — theme
switch left their backdrop in the previous color. Now registered as
Panel widgets so ThemeEngine re-skins them.
- `maxLevel` fallback (HousingTracker + Store default) lowered from 50 to
9 so it matches the current Midnight S2 cap and doesn't ping as a
"magic number" — the API is still authoritative when available; the
fallback only fires if the C call errors.
- Removed dead `CHANNEL_UI_UPDATE` event registration in AltSharing — no
handler had ever existed for it.
- Fixed (real root cause): the header's contribution was computed by
matching log entries against the CURRENT character's name, so playing on
an alt with no contributions to the active initiative showed 0 even
though the account had earned plenty. Now sums entries across all
characters that have logged in with VE (the same set the leaderboard's
account-grouped row shows), matching Blizzard's per-character API value
only when you have one character.
- Removed 18 debug slash commands. `/ve` (toggle window), `/ve debug`
(toggle debug mode), and `/ve reset` (factory reset, asks for confirmation)
are the only ones left. The rest were XP debugging scaffolding from
the pre-12.0.5 architecture (xpdump, coupons, tasks, questreward,
currencies, allcurrencies, activity, broadcast, roster, apis, house,
initiatives, relearn, dumplog, decorinfo, coffer, quote, refresh,
heal, dump, couponstore). Init.lua dropped from 816 lines to ~250.
- EndeavorTracker simplification pass:
- Deleted `pendingRetryTimer` field and 3 cancellation blocks — was set
nowhere, retry mechanism it backed had been removed long ago.
- Dropped `attempt` parameter from `FetchEndeavorData` — no caller passed
a real value, the `attempt > 0` branches (retry logging, "retrying"
state) were unreachable.
- Replaced two inline "clear endeavor data" duplicates with calls to the
pre-existing `ClearEndeavorData` helper, parameterized to accept the
season-name string.
- Trimmed `fetchStatus` from 4 fields to 2 — removed `attempt` (write-
only) and `nextRetry` (write-only).
- `UpdateFetchStatus` signature reduced from `(state, attempt, nextRetry)`
to just `(state)`. All ~7 call sites simplified.
- Removed unreachable `"retrying"` state from the 3 tab fetchState checks.
- Renamed Rankings tab section header "Leaderboard" -> "Initiative
Contribution" so the column unambiguously reads as contribution (matches
Blizzard's `playerTotalContribution` API field), not as XP. Discord
feedback flagged the ambiguity.
- Folded `Modules/HousingTracker.lua` into `EndeavorTracker.lua` and deleted
the module (~330 lines absorbed). Same rationale as the v1.16 XPEngine
fold-in: HousingTracker had one feeder (Blizzard housing events) and one
consumer pattern, which made the separate module pure indirection. Public
methods moved: `RequestHouseInfo`, `UpdateCoupons`. Two redundant methods
deleted (zero callers): `GetHouseLevel`, `GetCoupons`. Duplicate
`PLAYER_HOUSE_LIST_UPDATED` registration + debounce timer collapsed.
Duplicate startup timer (1.5s vs 2s) collapsed into the existing
`_initFetchTimer`. UI consumers swap `VE.HousingTracker.X` ->
`VE.EndeavorTracker.X`. No behaviour change.
- Removed the `/ve memory` chart — moveable bar-chart window that sampled
VE's addon memory once per second. Useful during the memory-leak hunts
of v1.10-ish, no longer earning its 200 lines. Use stock `/dump
GetAddOnMemoryUsage("VamoosesEndeavors")` if you want a one-off number.
- Removed three now-redundant timers: `_setActiveRefreshTimer` (3s in
SetAsActiveEndeavor), `pendingSelectTimer` (1.5s in SelectHouse), and
`_loginMsgTimer` (12s login-msg fallback in _ProcessHouseListUpdate).
All three were doing manual "wait + RefreshActivityLogCache" or "wait +
print" work that the new INITIATIVE_ACTIVITY_LOG_UPDATED listener +
reliable NEIGHBORHOOD_INITIATIVE_UPDATED firing makes obsolete. Net:
three fewer timer handles to track and cancel.
- Restored: per-character breakdown tooltip on the contribution display.
Hover the contribution number to see how much each of your characters
contributed this cycle, sorted by amount.
- Fixed: header `playerContribution` could stay 0 when the panel opened
before `PLAYER_HOUSE_LIST_UPDATED` fired. Root cause was layered:
`RefreshActivityLogCache` early-returned at an `IsViewingActiveNeighborhood`
gate whenever `viewingGUID` wasn't loaded yet, AND `_RebuildXPIndexes`
bailed out on a `currentHouseGUID` check. Both gates removed. The
activity log now drives the display directly: when valid log data
arrives, indexes rebuild and the header updates. Per-house caching in
`VE_DB.houseData` and the `_RestoreCachedXP` wipe/restore dance were
also dropped — house switch triggers a new activity log which triggers
a fresh rebuild. Header shows 0 briefly on first login until the log
arrives, which is fine.
- Subscribed to `INITIATIVE_ACTIVITY_LOG_UPDATED` (Blizzard event we'd been
working around). Activity log refreshes are now event-driven with a 5s
debounce instead of polling — server tells us when fresh data lands and
we render once. The 30-second post-completion fallback timer is gone
entirely (the new event covers it). The event can fire ~50/min on an
active neighborhood, hence the 5s debounce — no need to re-render that
fast.
- Removed `nextXPCache` in Endeavors tab — was an in-sort memoization for
`CalculateNextContribution` that's now fast enough to call directly.
Saves a table allocation, two cache-management loops, and the
staleness-on-house-switch class of bugs we kept worrying about.
- VE_Health.lua cleanup: removed two no-op stub migrations (v1 → v1 and
v1 → v2 were placeholders with no body), removed CONFIG_TYPE_DEFAULTS
type-check loop (was paranoid coverage of one bool we own), refactored
v3 migration with a `dropKey` helper to remove the repetitive
if-exists-then-log-then-nil pattern, added an early-out when schema is
already current so the loop is skipped entirely on every load past the
first one.
- Slimmed task row tooltip to just task name + description + click hints.
Cut "Current House XP reward", "Base reward: +N coupons", "Next House
XP", "Next Endeavor Contribution" lines — all redundant with the badges
already on the row itself.
- Folded `VE_XPEngine` into `EndeavorTracker` and deleted the module.
XPEngine had a single feeder (EndeavorTracker) and one feeder feeding
itself via `IngestActivityLog`/`IngestLiveTasks` was paying for the
abstraction zero times. The four UI-facing methods
(`GetHouseXP`, `GetPlayerContribution`, `GetAccountCompletionCount`,
`CalculateNextContribution`, `GetTaskRankings`) and the activity-log
helpers now live directly on `EndeavorTracker`. UI consumers swap
`VE.XPEngine` → `VE.EndeavorTracker`. No behaviour change.
- Removed initiative-completion loot icon machinery from the progress bar
factory (Framework: ~50 lines). Was Observer-mode-only and already
retired in 1.15.0; the implementation followed.
- Deleted obsolete `plans/OBSERVER_REDESIGN_PLAN.md`,
`plans/HOUSE_XP_FIX_PLAN.md`, `plans/xp_calculation_flow.md` — all
described architectures that no longer exist.

