File Details
v0.9.3
- R
- May 12, 2026
- 339.39 KB
- 6
- 11.1.0+3
- MoP Classic + 3
File Name
AldorTax-v0.9.3.zip
Supported Versions
- 11.1.0
- 5.5.0
- 2.5.5
- 1.15.8
tag da4e2f9d2a4814ff9423d2db24e95d7c5881717f v0.9.3
Author: Magnus Vikan <dizzi90@gmail.com>
Date: Tue May 12 01:59:47 2026 +0200
v0.9.3 — universal fall-save alert + Colossal Parachute
Bug fixes:
- Fall-save alert no longer strands on screen after zoning out of a lift area
- Fall-save alert now fires anywhere (e.g. Feralas), not only near a lift
- Colossal Parachute (item 10684) now surfaces as a usable fall-save
Rolled-up unreleased changes since v0.9.2:
- Recalibrate tblift epochOffset (12.54 -> 12.35), based on settled clicks
2026-04-22..2026-05-07 (n=3, circular sd 0.82s)
- Phase 3 of the UI reform: FallUI module built (Show/Hide/SetMode) but
still unwired into ReconfigureLift / UpdateSyncUIVisibility (Phase 5)
commit 7a3e547277f6696a34e3f4b64387b7780295e6e4
Author: Magnus Vikan <dizzi90@gmail.com>
Date: Tue May 12 01:59:30 2026 +0200
Release v0.9.3: universal fall-save alert + Colossal Parachute
Three fall-save-mitigation fixes driven by today's reports:
1. Alert never dismissed after zoning out. The hide path (IsFalling-edge
and 4s auto-dismiss) lived inside the activeLiftID early-return guard,
so zoning to a non-lift area while the alert was up stranded it on
screen indefinitely. Hoist the whole fall-save state machine above
the early-return.
2. Alert wouldn't fire outside a lift zone (e.g. Feralas hill). The show
path was gated by `def.deathZones` and `st.isNearLift/isApproaching`.
Drop both gates — alert now fires on any IsFalling rising edge,
anywhere. The 4s auto-dismiss bounds nuisance from short hops.
3. Colossal Parachute (item 10684) wasn't in the FALL_SAVES table, so
players carrying one never saw it surface. Add it as a universal
consumable just above Noggenfogger (vendor-bought, no random effect,
so it ranks ahead of the elixir) for every class that already had
Noggenfogger as a fallback.
Also rolling up two earlier unreleased commits on main:
- 105b51c Recalibrate tblift epochOffset from 12.54 to 12.35
- 59267e0 Phase 3: implement FallUI Show/Hide/SetMode for fall lifts
(frame is built but still unwired — Phase 5 plumbs it in)
All 64 tests pass.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
commit 59267e0a66a3270081236ebb010c2c2e9a9ef9ba
Author: Magnus Vikan <dizzi90@gmail.com>
Date: Mon May 11 15:42:57 2026 +0200
Phase 3: implement FallUI Show/Hide/SetMode for fall lifts
Fills in the three no-op stubs of the FallUI module parked in ae46bda.
The frame is still unwired (no ReconfigureLift / UpdateSyncUIVisibility
hook — that's Phase 5); the legacy BuildSyncUI / syncUI remains the
active surface in-game. This change only makes the public API contract
real so post-Phase-4 specs and Phase 5 plumbing have something to talk
to.
Dual-perspective walkthrough
----------------------------
World (what the player already sees): Standing on Aldor Rise, the lift
platform is visible at the south edge of the disc — cables, timber
deck, audio cue on cycle. From the Terrace of Light the cables are
still visible but not the platform's phase. From across Shattrath the
lift is gone from sight entirely. Stormspire and SSC are similar: near
the door you can see and hear the chamber; mid-range you only know
the structure is there. The world gives geometry, architecture, audio,
and rough timing-by-eye.
Addon (what only we know): the exact phase boundary — when the
platform crosses FALL→BOTTOM (the safe-step window) or RISE→TOP. The
precise countdown to that transition. Who in the broadcast group
anchored the sync. None of this is visible from the world: the
platform looks the same in the last 0.5s of FALL and the first 0.5s
of BOTTOM, but the consequence of stepping on differs by tens of
meters of damage. FallUI surfaces only that hidden phase information
and does so progressively — dense (segmented bar + sweep) when the
player is on the platform deciding now, minimal (lift name + ETA)
when they're walking toward it and only need the next cycle boundary.
Design decisions
----------------
* Light-mode click target: plain OnMouseUp handler, not a secure
SecureActionButton. PerformCalibrationClick is Lua-only and not
combat-restricted; a secure binding would add complexity without
capability. The feedback memory's "prefer type=macro+macrotext"
guidance applies when going secure is required — here it isn't.
* Sync button (full mode only): UIPanelButtonTemplate labeled
"Say Warning", mirroring syncUI.sayBtn so muscle memory carries
over. The bar segments already provide phase-specific sync clicks;
the button broadcasts the current sync to /say via the existing
/atax say slash dispatch. Hidden in compact and light modes to
reduce footprint.
* Compact-mode dimensions: bar 280×22, frame 304×56. Light-mode
frame 160×36 — just enough for one fontstring with the lift name
("Aldor Lift") and breathing room. Full-mode is 484×94 to match
the legacy syncUI's footprint so cross-mode visual scale is stable.
* Frame positioning: persisted to AldorTaxDB.fallUIPos via GetPoint()
on drag-stop. Different key from syncUI.windowPos so the two frames
don't fight over the same saved point during the unwired interim.
Default anchor TOP UIParent TOP 0 -160 (offset from syncUI's -120
so they're visually distinct if both end up shown).
* Hide() releases per-lift state: curLiftID → nil, barBg._w → 0.
Layout recomputes from scratch on every Show() (segment widths are
not cached past Hide), so Show("aldor") → Show("stormspire") →
Hide() → Show("aldor") yields identical _w/_h/barBg._w to the
first Show. Verified by ad-hoc smoke test against the contract in
spec_post_phase4_ui_transitions.lua.
Verified: all 64 tests still pass (35+15+9+5), post-Phase-4 spec
still self-skips as expected.
commit 105b51ce2f5d7ffddd5434714987091997c04f77
Author: Magnus Vikan <dizzi90@gmail.com>
Date: Mon May 11 15:38:06 2026 +0200
Recalibrate tblift epochOffset from 12.54 to 12.35
Circular mean of South settled clicks 2026-04-22..2026-05-07 (n=3, sd≈0.82).
A second cluster at ~23.8 (n=3, ~11.5s offset) appears on Apr 25 / May 4 —
likely a different physical platform or mis-identified bar, not folded in.
Source: SavedVariables timing samples on PODKAST.
commit ae46bda2f7ba56c49ca2941d2b7443fec7da977d
Author: Magnus Vikan <dizzi90@gmail.com>
Date: Sun May 10 17:08:00 2026 +0200
Phase 3 scaffold: park AldorTaxFallUI frame + tblift_south texture
Parks the FallUI module section below BuildSyncUI: creates the
AldorTaxFallUI frame (hidden), exposes no-op Show/Hide/SetMode stubs,
and annotates each with the Phase 3 build-out contract. The legacy
BuildSyncUI / syncUI remains the active surface until Phase 5.
Also commits tblift_south.tga, the dual-lift background texture
already referenced at LIFTS.tblift.dualBgTexture (line 205).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
commit 7203008d69f39abfc6ebeb893b5941a586fd66be
Author: Magnus Vikan <dizzi90@gmail.com>
Date: Sat May 9 18:13:28 2026 +0200
Release v0.9.2: fix v6 backward-compat — accept v3-v6 on receive side
v0.9.1 bumped MSG_VERSION to 6 to identify clients with the fixed
BroadcastSync srvPhase math. The receive guard (ver > MSG_VERSION) made
v0.9.0 clients silently drop all v0.9.1 messages, breaking sync in
mixed-version groups.
Fix: replace the > MSG_VERSION guard with an explicit set of known-good
versions (3-6). The send side stays at v6. Wire format is unchanged.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

