Forever Classic UI v0.1.0 Beta 5
What's new
## Forever Classic UI 0.1.0 Beta 5
The last three modules -- Classic Party Frames, a Classic Minimap and Classic
action bar art -- and a fix to how FCUI takes Blizzard's frames out of the
layout, found by reading how another addon that actually runs on Forever
refuses to do what FCUI was doing.
Every module in the plan now exists.
### Fixed
- **FCUI no longer re-parents a frame Edit Mode owns.** This is the important
one, and it affects the player frame and the target frame that shipped in
Beta 4 turned on by default. `EditModeSystemMixin:OnSystemLoad` replaces five
of a frame's own methods -- `SetPoint`, `ClearAllPoints`, `SetScale`,
`SetShown` and `Hide` -- with Blizzard's. Re-parenting such a frame taints it,
and Blizzard's own repositioning is then blocked the next time it happens in
combat. BetterBlizzFrames hit exactly this on `PetFrame` and documents it:
`ADDON_ACTION_BLOCKED` on `ClearAllPointsBase`. FCUI's restore path was the
worse half, calling four of those five in a row at the precise moment the
player was asking for their native UI back.
Such frames are now neutralised with `SetAlpha(0)` and `EnableMouse(false)`,
the two useful methods Edit Mode does not replace, and nothing else is
touched. Nothing is re-parented, re-anchored, re-scaled, hidden or shown.
Restoring puts back two numbers.
Whether a frame is Edit Mode's is **probed on the frame**, not guessed from
the client version, so a client without Edit Mode keeps the behaviour it has
always had, unchanged. No offline layer could have caught this:
`ADDON_ACTION_BLOCKED` is not a Lua error, so it fails no `pcall` and no
syntax check.
- `/fcui probe` now reports, per native frame, which of the three strategies it
resolved to. A tester reporting `alpha` against `PlayerFrame` on Forever is
what confirms the fix landed.
### Added
- **Classic Party Frames.** The Vanilla plate, the Vanilla bar geometry, the
dark backing behind the bar cluster, the party flash when a member is your
target, and the portrait debuff overlay -- all transcribed from Blizzard's own
`PartyFrameTemplates.xml`.
**FCUI restyles Blizzard's party frames rather than replacing them**, which is
the opposite of what every other unit-frame module here does. A party frame's
job is to be clicked, and Blizzard's are secure buttons: left click targets,
right click opens the unit menu, and the secure state driver keeps them
correct through a roster change mid-combat, which addon code is not allowed to
do. A replacement that looked right and could not be clicked would be a
regression dressed as a feature.
So targeting, menus, roster handling, auras, pets, ready checks and offline
status all stay Blizzard's and keep working. FCUI supplies the look. The
module listens to four events instead of the twenty-one a replacement would
have needed.
Every write is captured before it happens and reversed when you switch back to
Forever -- no `/reload`. A region whose original state cannot be read cleanly
is left alone entirely rather than changed in a way FCUI could not undo.
- **Classic Minimap.** The Vanilla ring around the map, the Vanilla zone-name
strip, and Vanilla art on the zoom buttons. Both crops are Blizzard's own
values, read out of Classic Era's `Minimap.xml` rather than measured by eye.
The catch, and the reason this module re-applies itself: **Forever rewrites
its minimap skin from a CVar callback.** Its `Camelot/Skin.lua` registers
against `rotateMinimap` and re-sets the ring's atlas and size whenever you
toggle map rotation. Anything applied once and left alone would be undone the
first time a player touched that setting. FCUI re-applies from a post-hook on
`SetAtlas` and from `CVAR_UPDATE`, each covering the other's gap.
**Nothing is resized.** Forever's map is sized from atlas data by Blizzard's
own code, inside a cluster that is both an Edit Mode system and a
self-resizing layout frame. Making it Vanilla's 140px would mean fighting both
on every rotation change. The Vanilla art is fitted to Forever's dimensions
instead, so the ring is very slightly wider than it is tall.
- **Classic action bar art.** The Vanilla dwarf-stone bar under your action
buttons, the Vanilla gryphons at both ends, Blizzard's retail frame and
divider strips faded out.
**Art only, and that is the whole design.** "Classic action bars" sounds like
it means replacing them. It cannot: action buttons are secure buttons, an
addon may not move, hide or re-anchor them in combat, and a replacement button
cannot cast anything without being a secure button itself. What *is* possible
is that Blizzard's frame art is a handful of ordinary unprotected textures
sitting on that protected frame, and swapping a texture is not a protected
action. So every button stays exactly where Blizzard put it and only the
scenery around them changes.
The stone follows the bar's width rather than being fixed, so rescaling the
bar in Edit Mode does not stretch it.
### Notes
**If you are updating from Beta 4, do so.** The Edit Mode fix above affects the
player frame and target frame, which Beta 4 shipped turned on by default.
**All three new modules default to Forever**, so installing this changes nothing
until you opt in, and all three are offered on **Forever and Retail only**.
Classic Era and Mists already draw the Vanilla party frames, minimap border and
bar art themselves, so the Classic button is greyed out there. That is decided
by asking the client what it actually draws, never by checking a version number.
**None of the three moves anything.** They restyle Blizzard's own frames in
place, which is what keeps every clickable thing clickable. Your party frames,
minimap and action bar stay where Edit Mode puts them, at Forever's spacing and
size. "Classic" here means the Vanilla look, not the Vanilla layout.
Switching any of them back to Forever restores Blizzard's art with no `/reload`.
A region whose original state cannot be read cleanly is left alone entirely
rather than changed in a way FCUI could not undo.
Per module:
- **Party frames** -- after a vehicle transition *during combat*, the bars keep
Blizzard's geometry under the Vanilla plate until combat ends, then correct
themselves. Moving them mid-combat is refused by the game, and the workaround
costs more than the defect.
- **Minimap** -- Forever's zoom buttons stay hidden until you hover the map. FCUI
gives them Vanilla art but does not change when they appear.
- **Action bars** -- only two of Vanilla's four stone strips are used: the two
that carried the twelve button slots. The other two held the bag slots and the
micro menu, which on Forever are separate systems living elsewhere.
- **Action bars** -- hiding them disables the twelve buttons' mouse handling as
well as the bar's. Hiding a frame does *not* disable its children, and an
invisible bar you can still click by accident is worse than one you can see.
The `bags` setting is removed. Bags were cancelled, not deferred.
### Still unverified
Said plainly, because it has not changed: **none of this has ever run in a real
WoW client.** Every measurement is transcribed from Blizzard's own published UI
source and checked against it automatically, but no offline layer can open the
game. Three things in this release are most likely to be wrong, and all three
are visual:
- Whether the party frames' bar masks really come off. A leftover mask would
crop the Vanilla bars at both ends.
- Whether the minimap ring looks noticeably oval. It is fitted to Forever's
frame rather than the map being resized, which costs about 5% of aspect.
- Whether the button slots drawn in the Vanilla stone line up with the real
action buttons. Vanilla's art was made for Vanilla's button spacing.
Run `/fcui probe`, `/reload`, and send the `lastProbe` block from your WTF
folder. It now reports which strategy FCUI resolved for every Blizzard frame it
touches, which is the one thing that confirms the Edit Mode fix landed.
## Forever Classic UI 0.1.0 Beta 4
Two new Classic panels, and the first round of fixes driven by real in-game
feedback on other Forever addons rather than by offline analysis alone.
### Added
- **`/fcui probe`.** A diagnostic dump written to SavedVariables as well as
chat. It reports the client build, every capability flag as *detected* rather
than as assumed, which native frame name FCUI actually resolved for each
module, each module's mode and supported modes, whether every texture the
addon draws with exists in this client's data, and a three-deep tree of the
player frame, target frame and cast bar with texture paths. Run it, `/reload`,
and send the `lastProbe` block from the WTF folder. This closes the project's
biggest gap: the offline layers prove FCUI matches Blizzard's published
source, but none of them can run the real Forever client.
### Fixed
- **The frame art now draws over the bars, as Vanilla does.** The bevel around
each health and mana bar is part of the plate, and in Vanilla the bar ends run
underneath it. FCUI drew the bars on top instead, which is the retail look and
left them sitting flat on the art with their ends showing. The art now lives
on its own child frame above the bars, with frame levels set explicitly --
which is Blizzard's own structure, not a workaround: Classic Era's
`TargetFrame.xml` puts the art on `$parentTextureFrame` and pins the bars down
with `useParentLevel="true"`. Same fix for the target-of-target plate.
- **The cast bar border no longer sits under the fill.** Blizzard's cast bar
template *is* the status bar and carries its border, icon and spark as its own
textures at sublevels above the fill. FCUI hung them off a parent frame, so
the fill painted over the border's inner bevel.
- **Classic nameplates no longer break Blizzard's nameplates on Forever.**
FCUI used to set the `nameplateStyle` CVar itself. On a client that guards
unit health behind secret values, that fires Blizzard's own CVar callback
from addon code, which taints it — and tainted code may no longer compare
those secrets, so every nameplate errors half-built. FCUI now asks you to
type `/console nameplateStyle 6` once instead. Chat commands run untainted
and the value is saved with your character, so it is a one-time action.
This was the only FCUI module that would have failed outright on Forever.
- **FCUI no longer writes a field onto Blizzard's frames.** The suppression
flag used when hiding a child frame lived on Blizzard's frame. The same
bookkeeping now lives in a table of FCUI's own, which keeps FCUI clear of the
question entirely on a client where tainting Blizzard's frame code is fatal.
- **Forbidden frames are no longer treated as usable.** A forbidden frame
answers a name-and-type check perfectly well and then raises a Lua error the
moment it is used. Every native frame FCUI resolves is now checked with
`IsForbidden` first.
- **Secret values can no longer poison a restore.** Anchors captured when a
native frame is parked are read through a guard that drops values the client
refuses to expose. Previously a secret anchor would have been stored without
complaint and thrown later, inside the restore path — at the exact moment the
user was trying to get their native UI back. An anchor that cannot be read
cleanly is now dropped, and Blizzard's own anchors are left alone instead.
- A native frame that becomes unreachable while parked is reported and released
rather than retried forever.
### Added — the two Classic panels
Both default to Forever until they have been seen in a real client, so
installing this changes nothing until you opt in.
- **Classic Spellbook.** The Vanilla parchment book, transcribed from Blizzard's
own `SpellBookFrame.xml`, drawn from live game data: twelve slots a page in
two columns, skill-line tabs down the right edge, ranks, passives, cooldowns,
real tooltips, drag to an action bar and click to cast. No spell list ships
with the addon; everything comes from `C_SpellBook`.
- **Classic Quest Log.** The Vanilla book, list above detail in one window, the
way Vanilla actually did it. Zone headers collapse and expand, quests carry
their level and difficulty colour, tracking drives Blizzard's own watch list,
and Abandon goes through Blizzard's confirmation.
- On Forever the quest counter reads out of **40**, read from
`C_QuestLog.GetMaxNumQuestsCanAccept()` rather than written into the addon.
The old 20-quest cap appears nowhere.
- `P` and `L` keep working. In Classic mode they open FCUI's book; in Forever
mode they run Blizzard's own code untouched.
### Notes
- Both panels are offered on Forever and Retail only. Classic Era and Mists
lack the API and already ship these exact windows themselves, so FCUI leaves
them alone there and the Classic button is greyed out.
- Neither panel offers Hidden. A spellbook or quest log you cannot open is not
a UI preference.
- Existing settings are preserved: the two new entries are simply added to your
profile as Forever.
## Forever Classic UI 0.1.0 Beta 3
Every module now supports Classic mode.
### Added
- **Classic Target of Target.** The Vanilla plate, transcribed from Blizzard's
own template. It rides the bottom-right corner of the Classic target frame
and follows it when you move it. Set the target frame to Forever and the
plate keeps its own position instead of disappearing, so you can mix the two.
- **Classic Nameplates.** FCUI does not draw nameplates. Every supported client
already ships a Classic nameplate style of its own, so this mode selects it
and Forever mode restores whatever you had before, remembered across reloads.
### Note
Turning nameplates back to Forever restores your original style. Disabling the
addon outright does not: a setting outlives the addon that changed it. Switch
the module back first, or change the style in Blizzard's own options.
## Forever Classic UI 0.1.0 Beta 2
Visual fidelity pass. Every measurement in the Classic frames is now
transcribed from Blizzard's own Vanilla UI source instead of estimated.
### Fixed
- The Classic player frame drew no art at all. It referenced a texture that
does not exist; Vanilla draws both unit frames from the same file and
mirrors the player.
- The elite / rare dragon painted a second full frame over the target's health
and mana bars. It now swaps the base texture, as Blizzard does.
- Portrait, health and mana bars, name and level were all a few pixels off on
both frames, and the two bars had a gap where Vanilla overlaps them.
- The cast bar border sat centred on the fill instead of above it, and the
spell icon was undersized.
### Added
- Cast bar spark, cast bar shield for non-interruptible casts, and the correct
artwork for rare-elite and minus (critter) targets.
## Forever Classic UI 0.1.0 Beta
Initial public beta release of **Forever Classic UI**.
### Included
- Modular Classic / Forever / Hidden UI system
- Classic Player Frame
- Classic Target Frame
- Classic Player Cast Bar
- Classic Target Cast Bar
- Configuration panel
- SavedVariables support
- Multi-client compatibility layer
### Experimental
- WoW Forever compatibility
- Classic UI geometry and positioning
- Blizzard frame replacement behavior
### Not yet available in Classic mode
- Target of Target
- Nameplates
These modules currently support **Forever** and **Hidden** modes only.
### Known limitations
- Visual rendering has not yet been validated inside the WoW Forever client.
- Some in-client texture paths still require verification.
- Protected frame / taint behavior requires in-game testing.
Feedback and bug reports are welcome.
This mod has no additional files

