Commit Graph
66 Commits
Author SHA1 Message Date
SamandClaude Fable 5 d16d33dfca world books open, and anvils stop offering a cursor gear
- clicking a book in the world opens it and turns its pages: letters and world books share one reader
- the cursor's object rules are the client's own 31-row strategy table now, so decorative objects stop pretending to be usable
- trainer and tradeskill windows draw each row's icon by the reference's own law, and the trainer's filter dropdown toggles again
- water color follows the zone's light blend, so lakes stop snapping between area tints

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 16:03:35 +07:00
SamandClaude Fable 5 19461d1e0f fishing becomes whole: the bite, the line, the splash and the reel
- the whole loop plays: the line arcs rod tip to bobber, the bite splashes with its own sound, and clicking the bobber reels in
- the verdicts read like 1.12: yellow "your fish got away" lines, the reel-in sound, the fishing loot window
- "You feel rested." prints on the transition, rest states come from the client's own Exhaustion table, and level 60 trades the XP strip for the max-level rail
- the Skills pane lists what the real client lists: the hidden rows, the sort, gray numberless single-rank lines

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 16:03:16 +07:00
SamandClaude Fable 5 f35c3cb0f6 rested XP arrives: the zzz badge, the blue bar and the tick
- resting flashes the zzz on your portrait, the XP bar fills its rested blue, and the exhaustion tick rides the bar with hover numerals
- a dual-wielded pair keeps both hands in the dressing room
- a footfall plays one sound, not two
- the minimap wears the time-of-day clock, and the keybinding capsules go back to 1.12's red

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 16:02:58 +07:00
SamandClaude Fable 5 cd58f90bec a chat link is one token now, and tooltips print true costs
- a chat link edits as one atomic token: the caret can't land inside it, its colors survive, one keypress removes it whole
- spell tooltips print the resolved mana cost through the reference's own table walk, and the "% of base mana" line dies
- the spirit healer's confirm comes back after a cancel and wears its warning icon
- the dressing room's pane is a live animating model, and a tried-on bow lands in the hand

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 16:02:39 +07:00
SamandClaude Fable 5 d99ad8bc7d the dressing room opens, and the pet gets its paper doll
- ctrl-click an item to try it on: the dressing room dresses your double, and shift-click posts the item link to chat
- the pet tab lands in the character window: paper doll stats, family and diet, the right-click menu, and dropping food on the pet feeds it
- water-only spells refuse on dry land: aquatic form gates to swimming, client-side like the real one
- the macro icon picker's white squares get their art back, and option rows explain themselves on hover

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 16:02:21 +07:00
SamandClaude Fable 5 31c224548c the spellbook grows its pet tab, and the pet bar gets its keys
- the spellbook's pet tab lists what the pet knows, with autocast toggled right on the page
- pet ability cooldowns sweep on the pet bar, and the bar binds to 1.12's Secondary Action Button keys
- the options window scrolls its pages in a real trough with seated arrows, nothing overflows the frame anymore
- Esc un-queues a queued strike, and a hostile unit's frame stops showing buffs the real client hides

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 16:01:27 +07:00
SamandClaude Fable 5 5de1f3e7b8 feign death plays dead everywhere, and the attack keys go exclusive
- feign death plays dead for real: the body collapses and stays down, both bars read 0 and DEAD, the nameplate drops, the combat hum goes quiet
- melee and Auto Shot are exclusive now: starting one stops the other, even mid-swing
- another client's addon chatter no longer prints as party chat
- right-click presses look pressed, rage and happiness read on their real scale, and the login boxes blink their caret

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 16:00:00 +07:00
Sam Sung f17b303ffe Delete banner.jpg 2026-08-07 08:40:03 +07:00
SamandClaude Fable 5 8549f14dd6 footprints on snow and sand, and the drunk effect staggers in
- drink enough and the screen blurs and your walk meanders, the camera carried along with the stagger; the underwater blur ships in the same lane
- boots leave prints on snow and sand that fade away in about six seconds, paws and hooves included
- key bindings move into the Options window with the rest of the settings, and action buttons abbreviate their hotkeys the way the client does
- the pet bar rearranges by drag, a running pet spell shows its active icon and a click cancels it, and spell ribbons follow their verified physics

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 19:05:51 +07:00
SamandClaude Fable 5 ff1524f85f key bindings become real, and the pet knows when to refuse
- every rebindable key runs through one chord-to-command engine, set in the era Key Bindings window, and buttons show their real keys
- a spell aimed at the ground sends its projectile to that spot, arcing to the point instead of a target
- a pet ordered onto something it can't attack refuses cleanly, and its frame shows the happiness face read from the client's own data
- a window's tabs clamp to the drawn edge and highlight exactly where they sit

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 19:04:33 +07:00
SamandClaude Fable 5 3b6975fdef the pet gets its frame, flooded rooms fill, and macros really fire
- the pet gets its own unit frame beside yours, and an Attack order no longer latches as the standing command
- five rooms that always read bone dry hold their water now, the Deeprun Tram's flooded stretches among them
- macros fire through the client's own chat door, and the macro window fits its tabs and scrolls its icon chooser
- the options window grows a Nameplates page and its first dropdown, and the name-display switches apply live in the world

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 19:03:43 +07:00
SamandClaude Fable 5 77dc8f8ead pets get their action bar, macros arrive, and hunters draw the bow
- a hunter's or warlock's pet has its action bar now: attack, follow, stay, the pet's own spells with cooldowns and autocast sparkles
- the macro system lands: the macro window, the icon chooser, /cast and /macro, and macros dragged onto the action bar
- hunter shots look right at last: the bow draws and releases on the shot, and the arrow lays a spark trail its whole flight
- the options window re-dresses in 1.12's own art with the classic dialog look, and gets a working search box and clickable steppers

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 19:03:13 +07:00
SamandClaude Fable 5 994be22f5c outdoor lava flows, and Undercity gets its lost corridor back
- lava renders outside Blackrock at last: the mesher was dropping every open-world lava and slime surface, and 28 river mouths get their missing sea back in the same sweep
- Undercity's broken corridor returns, geometry and color both: a one-byte file overrun dropped the whole room, and a paint job one record short was being thrown away entire
- collision goes one-sided like the real client: walls stop you from the front and let you pass from behind
- the Booty Bay entrance is wood and rope again instead of a black cutout, glass picks up a real reflection, and models far from the map's center stop trembling

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 19:02:47 +07:00
SamandClaude Fable 5 a03cb5d5d2 Chain Lightning draws its chain, and the Controls page lands
- the beam is on screen: Chain Lightning arcs outward hop by hop and Drain Life ropes from hand to victim — a write-order edge was erasing the finished geometry every frame, and a tripwire now guards the whole class
- the Controls page lands (sticky targeting, auto loot, invert mouse), UI scale waits for the era Apply button, and the terrain-distance slider retires
- with auto-loot in effect a lootable corpse shows the triple-pouch cursor, the real client's tell
- the character-screen freeze before a loading screen is gone: the shader warm-up hides behind a fully presented cover and tears down only its own roots

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 18:54:58 +07:00
SamandClaude Fable 5 060aa574fb dark doorways light up, and the Audio and Graphics pages land
- a building's transition corridors carry the reference's bright-doorway fade: the black tunnel between sunlit outside and a lit interior is gone
- the Options window gets its first real pages: seven 1.12 sound rows on Audio and the two 1.12 Video Options sliders on Graphics, all live CVars
- terrain culls like the real client: the ground is one-sided, so from underneath you see through it exactly as 1.12.1 does
- the beam system's data plane lands: 48 live chain, drain and funnel beams read off the real patch chain, with a byte-exact wire golden — the renderer follows

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 18:54:47 +07:00
SamandClaude Fable 5 7eca017eb0 the Options window goes era, and settings finally persist
- one era-style Options window: window chrome, category list, search box and its own ESC rung, with the game menu reshaped to match
- settings are real CVars now: GetCVar/SetCVar reach Lua, and your changes persist as a diff in benilla/config.toml
- all local state lives in one visible benilla/ folder beside your Data/ — nothing hides in platform config dirs
- UI text stays crisp at any scale and survives a mid-session resolution change: glyphs measure in the environment they raster in

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 18:54:37 +07:00
SamandClaude Fable 5 422e1b08e7 the cooldown sweep is pinned, and the shoulder armor calms down
- the GCD system now matches the real client end to end: opening a chest no longer eats the running global cooldown, and a running sweep's start stops wobbling between frames
- the mounted left shoulder's wild swing is fixed at the bone: a bone flagged to ignore its parent's rotation now does, decided before any camera-facing runs
- a gameobject effect with several animation sequences plays the right one: Molten Core's rune flame spreads and dances instead of collapsing into a bright dot
- the targeting cursor asks the thing under it and greys by default like the real client, and the ground-target reticle keeps its own location rules

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 18:54:26 +07:00
SamandClaude Fable 5 b82cc3dd4f the loading screen warms every shader, and locked chests say LOCKED
- the loading screen now compiles every shader the world can reach: sky, water, spell shards and model variants stop hitching the first time they appear
- a locked chest's cursor carries the LOCKED word like the real client, and the lock verdict never leaks into the sent packet
- enchanting asks before it acts: a bind-on-enchant item gets its confirm popup, and so does replacing an enchant that's already there
- a long gossip menu scrolls like the reference with rows grown to their wrapped text, and music already playing is not restarted when the server re-sends it

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 18:54:16 +07:00
SamandClaude Fable 5 906e997aa6 click your mount again to dismount, and the poof puffs
- clicking your mount item while mounted dismounts you, and the mount icon no longer wears a stack "1"
- the horse appears and you're simply in the seat pose with the mount's cloud puff, no spellcast finishing over the saddle — and dismounting cuts clean to standing, no phantom jump-landing
- a mounted rider counter-turns head only, item-targeted spells show the targeting cursor, and the wrong thing in a quiver says "Only Arrows can be placed in that."
- liquid lookups ride a spatial index, and the camera's waterline comes from the client's own corner probe

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 17:54:27 +07:00
SamandClaude Fable 5 2d83c8392c mounting keeps your buff visuals, and tooltips say the enchant
- the mount transition re-seats the rider instead of rebuilding them: shield glows, weapon enchants and worn visuals stay lit through mount and dismount
- an enchanted item's tooltip carries its enchant line, coloured per slot, with a temporary enchant's countdown
- a server refusal with nothing to say now says nothing: the raw "Inventory error" debug line is gone, real refusals still print
- the mail icon clears when you close the mailbox, and translucent models classify against the water plane

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 17:53:22 +07:00
SamandClaude Fable 5 450eea2cb3 double-clicking your mount no longer kills the cast bar
- an item use is a real cast with an in-flight gate: the double-click never hides the bar and never ships a duplicate use
- the action bar answers both mouse buttons, and three more click-registration gaps are closed
- a cast right after a camera drag no longer dies to the position you already left
- landing while mounted keeps the gait's cadence, and particle clouds and ribbon trails sort correctly above and below the water surface

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 17:52:40 +07:00
SamandClaude Fable 5 ec36c06271 buff timers survive a teleport, and ogres walk at ogre pace
- a buff or debuff keeps its duration timer through a teleport: the table dies with the session now, not with the map change
- a scaled-up creature paces its animation by its size — the Dire Maul ogre's walk drops from 2.2× to true speed, mounts likewise
- the phantom "you have mail" icon at login is gone: no mail means no icon
- underwater there is no sky, and the camera eye never straddles the waterline

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 17:52:05 +07:00
SamandClaude Fable 5 f68c0cd958 /follow works end to end, and a parried swing rings out
- follow a player and the screen names who you're following, the right-click menu grows its Follow row, and your own movement is what cancels it — creatures are refused like the real client
- a locked lockbox click asks the server instead of refusing silently, a quest-starter chest offers its quest before opening, and an item on cooldown hides its green "open" line
- a parried swing plays its clang like the real client keys it
- the README's What works / Not built yet caught up on a week of shipping

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 17:51:08 +07:00
SamandClaude Fable 5 94de741cb1 /target, /assist and /follow, and right click opens a clam
- /target and /assist find units by name like the original, and /follow walks you behind your target
- right click opens clams and lockboxes, and the tooltip promises it
- the freeze thaws clean, poses release instead of sticking, and you drop to neutral standing before it grips
- unit frame art layers over the bars like the original

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-02 18:02:44 +07:00
SamandClaude Fable 5 2f40b6a9a0 ice block freezes you solid, and loot lines link their item
- ice block freezes the body the frame it lands, before the arm even rises
- the loot message links the item, so the name wears its quality colour
- a looted item drops into the bag that actually took it
- effect models live their authored life, born, held, decayed, and bar fills sit under their borders

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-02 18:01:42 +07:00
SamandClaude Fable 5 a3c5b20698 breath and fatigue bars, combo points, and a stun stops everything
- the breath and fatigue bars are in, driven by the server's timers
- combo points show on the target frame, rogue and druid only, per target, and Overpower lights on them
- a stun freezes turning too, and gm fly over water stays in the air
- /sit and the shipped slash commands work, sheathing sounds like the weapon's material, and the bar never holds an outgrown spell rank

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-02 18:01:15 +07:00
SamandClaude Fable 5 143a734b91 slow fall, levitate and water walking work, and Z sheathes your weapon
- the granted movement modes are one system now: slow fall slows, levitate hovers, water walking holds the surface, a root pins you even mid-air
- casting while moving refuses with the real error, and a jump cast plays its animation in the air
- Z cycles melee, ranged, stowed, every landed swing draws the weapon, and Alt-Z hides the UI
- login faces where you logged out, and the dev shortcuts moved to Ctrl+Shift off the Windows key

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-02 18:00:46 +07:00
SamandClaude Fable 5 eb239ddf25 effect clocks run true, and Orgrimmar's ground items stop strobing
- spell shimmer timing is right: shared clocks tick together, each cast anchors its own
- the flickering ground items in Orgrimmar are fixed, a transparent draw-order tie
- static scenery answers the mouse again, and the freeze debuff's crackle rings at the target
- bug reports moved to Discord, GitHub issues are closed

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-02 18:00:04 +07:00
Sam Sung 0827173781 ci: auto-close pull requests — not accepting PRs, use Discord 2026-08-02 06:07:18 +07:00
Sam Sung 914b4d6b69 readme: bug reports go to Discord — issues are disabled 2026-08-02 05:56:51 +07:00
SamandClaude Fable 5 5384fcd5bc roots wear their ice, and Arcane Intellect's flare settles down
- root and snare state visuals are read from the spell kit's tenth effect slot and planted in the world at the unit's feet, where they belong
- Arcane Intellect's flare is one size cast to cast now: a joint-lane card was taking the sequence twinkle twice (joint and card), sometimes swelling it to 2.5 yards
- refusing a gear piece now names the reason instead of printing a bare count

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 17:02:14 +07:00
SamandClaude Fable 5 59b4a4f4ce buff timers tick, ground spells find the floor, stuck drags let go
- buff durations count down properly: the bar polls the remaining time every frame and a server-sent span reads as real seconds
- ground-targeted spells find the floor: Consecration's and Flamestrike's hovering discs ride the decal projector, and Frost Nova's births ride its expanding ring (the emitter params are per-frame tracks now)
- a spell or action stuck on the cursor lets go on a left click, and a macOS hardware-cursor drift heals itself in-process
- a stealthed weapon fades right: the fade twin's cutout follows the source blend, so an opaque batch never alpha-tests mid-fade

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 17:01:51 +07:00
SamandClaude Fable 5 ab65981ebf cooldown pies, warmed shaders, and a tamer Frost Nova glow
- the spellbook draws the cooldown pie on a spell that's cooling down, and the active form's slot lights its checked ring
- shader variants warm at startup (with a tripwire if one ever compiles live), so a first cast no longer hitches on shader compile
- additive glow stacks clamp the way the original scene does, taming Frost Nova's blown-out mist, and shoulder cards split only at rigidly separable bones
- the login handshake now reads the same under both SRP encodings, and cooldown events no longer race the net step

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 17:01:30 +07:00
SamandClaude Fable 5 167f80d92d stealth dims its sparkles, and gear changes stop rebuilding you
- a stealthed unit's particles and ribbons now dim with the body, and a depth-prime pass stops overlapping translucent parts from darkening each other
- changing gear re-dresses the character in place instead of tearing the whole model down and rebuilding it
- terrain tiles furnish cell-by-cell and model render forms build paced across frames, so first contact with fresh ground no longer hitches
- Ghost Wolf renders properly ghostly, and a live toggle swaps its action-bar icon to the active form while it holds

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 17:01:07 +07:00
SamandClaude Fable 5 76cc038998 zone discovery says so, and tile crossings stop churning
- crossing into a new zone lands the whole discovery moment: the "Discovered" toast, the experience line in chat, and the race-keyed jingle
- crossing a tile boundary no longer recycles a whole row of terrain: a keep-band holds what you just left, unloading is budgeted, and fresh requests stagger instead of bursting
- a sheath swap moves the weapon (and its sparkles) to the new slot instead of rebuilding it, and a fading model now dims its own effects with it
- pressing the cast button again cancels the cast, and a form that can't cast a spell refuses it locally instead of round-tripping the server

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 17:00:40 +07:00
SamandClaude Fable 5 9562380a64 deaths dissolve properly and item effects reach every pane
- elementals no longer freeze mid-air as corpses: a one-shot death band's clock now clamps instead of wrapping, so the authored dissolve plays out
- an equipped item's sparkles, cards and glows reach the character-select booth and the character sheet's model pane, and a tint reaches a unit's attached items too
- unit lighting is back on the terrain-shade chain, and light ramps chase a clamped target so walking from sun into shade actually ramps
- test accounts gained a full-roster seeding verb (every class levelled, geared and specced in one command)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 19:41:05 +07:00
SamandClaude Fable 5 3fbfebd604 stealth you can see, item glows, and smooth character-select skies
- stealth reads as stealth now: the body fades to the reference's 30 % and creeps with the proper stealth walk and stand poses
- the item and enchant glow subsystem exists: permanent weapon glows and enchant visuals show in the world and at character select
- the character-select background's colour banding (the reported "16-bit" look) is fixed at the render target, and the tauren stage's black corners with it
- aura body tints got a real per-instance channel, so a spell can tint the whole unit without touching its neighbours

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 19:40:54 +07:00
SamandClaude Fable 5 56c62c7591 point-and-click casting: Blizzard lands where you aim
- ground-targeted spells work end to end: press the button, get the targeting cursor, click the ground, and the cast ships on the wire the way the real client sends it
- a reticle sized to the spell's real radius rides the cursor, and on the click the storm model, falling shards and area sound all land at the point
- character screens: a newly created character comes back selected on the list, and the authored layout scales to small windows instead of clipping the bottom controls off
- blob shadows ride their receiver's clip transform and the raster bias that kept them faint is measured and fixed

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 19:40:05 +07:00
SamandClaude Fable 5 d3e05f32e5 the world only pays for what's on screen, and the leak is gone
- terrain draws per chunk now, and one authority culls everything outside: buildings, billboard cards, particle emitters
- the fps and memory creep on long flights is fixed twice over: material animations only tick what something draws, and far-away art is released by distance (with a 30 s dwell floor so fast cameras don't thrash it)
- the second crash ever reported (a cast racing a despawning unit at flight speed) is fixed, with a regression test that reproduces the exact panic
- every build now prints which commit it is, so a bug report can say exactly what it ran

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 19:39:56 +07:00
SamandClaude Fable 5 03aa04e54d no world until a character is in one
- The login screen stops paying for a world nobody is in. It had been
  streaming and simulating all of Elwynn Forest behind a static image — the
  client began life as a terrain viewer and the streamers never had an off
  switch. The world now boots when you enter it, aimed at the map your
  character is actually on, and logging out releases it. Login frame cost:
  p50 18.6 to 10.3 cpu ms, worst paced frame 308 to 20 ms; entering
  Stratholme is a covered 1.2 s load.
- More login-screen honesty: the fullscreen glue image was re-uploaded to
  the GPU every frame — 22 MB a frame for a still picture — and the
  braziers' fire had been invisible since the 25th, simulating perfectly
  into a camera that is off, because two booths had computed the same render
  layer. Both fixed; the flames are back.
- Indoors got truer: the outdoor world draws only through the portal windows
  actually in frame, as the original does; the painted-skybox gate settled
  on the reference's real rule — any sky-flagged room the portal flood
  reaches; and interior objects — gates, hanging signs, chains — take their
  room's baked light, anchored at their box centre instead of an artist
  pivot that often sits under the floor.
- Hovering with a tooltip up takes its full fix: a tooltip content change
  used to run the whole-UI layout solve twice, and it runs once now, on top
  of the morning's fix that made an unchanged tooltip cost nothing at all.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 19:54:41 +07:00
SamandClaude Fable 5 34fdbd1d16 the keyring lands, keys open doors, and a building can own the sky
- The keyring is built. Your first key makes the keyring button appear by
  the bags, opening the window the original keeps its dungeon keys in — the
  server had been sending the keys all along; nothing had ever shown them.
- Keys open their doors now. The client used to cast the open as a bare
  spell, which the server rightly refuses; it now sends the item-use the
  original sends, carrying which key from which slot. The tooltip plays
  along: "Locked" turns the soft green when something you carry opens it,
  and a key stops inventing a "Use: Opening" line it never had.
- A building can own the sky: a WMO can name its own painted skybox, and
  Stratholme's burning city now draws its near-black-to-red dome instead of
  the zone's khaki gradient. The exact rule for when it applies settles in
  the next snapshot.
- Signpost tooltips follow the cursor again — the tooltip anchor forks per
  object class, corner for doors, cursor for signs — and the Blasted Lands
  lightning stops striking the same spot for ever: a placed doodad re-rolls
  its animation variation every play-window, like the original.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 19:54:18 +07:00
SamandClaude Fable 5 2536f04d56 open gates stop blocking, and mouseover learns what it owes each object
- The second half of the open-door fix: the system that applies a door's
  state to its collider had never run once. The state arrives with the
  spawn, the collider is baked from the model hull frames later, and the
  reconcile demanded both in the same frame — so every door kept the solid
  collider it was born with. Open gates and forcefields are walkable now,
  and the inspector prints solid-or-passable out loud.
- The mouseover follows the original's law: an object you cannot use — in
  use, waiting on a quest, or hostile-faction scenery like the enemy's own
  doors — shows nothing at all on hover. No tooltip, no highlight, no
  cursor. Each object type answers for itself, the way the real client
  dispatches it.
- Dun Morogh's snow trees lose their white plates and hard creases: model
  textures authored clamp-to-edge were all sampled repeat-wrapped, so a
  canopy's deliberate out-of-range margin wrapped back into opaque texels.
  The sampler honours the authored address mode now, on this tree, a bad
  bush, and hundreds of models like them.
- Odds and ends: the Blasted Lands lightning can actually strike (its
  emitters sampled an animation slot that is silent for that model),
  donation turn-in quests show their real Continue panel, boss emotes expand
  their $name macros, and a rare one-in-256 login failure — a session key
  the client hashed differently than the server does — is gone.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 19:54:02 +07:00
SamandClaude Fable 5 83d86e9b2f locked doors start refusing, and indoor creatures appear already lit
- Locked doors no longer open on a bare right-click. The client now reads a
  lock the way the original does — the free "quick open" every character
  carries stops matching keyed doors, so a padlocked door greys the cursor
  and refuses unless something you have actually opens it. The same gate
  fixes the skinning knife: it only shows for characters who know Skinning.
  (Opening a door with its key lands later today.)
- A locked door's tooltip matches the original now: one red "Locked" line,
  a single white requirement line, seated in the screen corner instead of
  chasing the cursor.
- A door that spawns open sends no state field at all on the wire — the
  server omits zero-valued fields and "open" is zero — and the client read
  that silence as "unknown" and left the collider solid. Absent now reads as
  open. This is the first of two independent defects behind open gates that
  still block; the second falls in the next snapshot.
- Indoor creatures and objects fade in already lit by their room, instead of
  appearing sun-lit and snapping to interior light the instant the fade ends.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 19:53:26 +07:00
SamandClaude Fable 5 ac4d859a1b the doodad sun law, read straight from the real client's own draw calls
- Why fences glowed noon-warm at midnight: our sun lane multiplied the
  day/night colour by the client's documented 2.5 for doodads on lit ground,
  which pushes past white and clips to a daylit face. Two days of binary
  archaeology confirmed that multiply is real — on a render path the
  reference machine turns out not to run.
- The settle was an API trace of the actual 1.12.1 client standing at the
  same fences: on its Direct3D path the sun arrives at the day/night colour
  clamped to at most full strength — one for lit ground, half in baked
  shadow, never brighter than the palette. Our lane now commits exactly
  that. Midnight is moonlit blue, and adjacent lit/shaded fences blend the
  way the original does.
- Along the way: a capture-window override for era-resolution A/Bs, and a
  calibration dial that lived exactly one day — the by-eye level it found
  matched the traced law to a few parts in 255, then retired.
- Separately, the $-macro text expander now runs everywhere the original
  runs it: chat lines, mail bodies and item text, not just the UI strings.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 19:53:10 +07:00
SamandClaude Fable 5 73646cbeaf the midnight fence hunt begins, and a spell's ground glow comes back
- Sun-lit fences rendered noon-bright at midnight. The hunt starts here: the
  model sun response switches to the curve read out of the real client's own
  shipped vertex program, the terrain-shadow bit under any doodad became a
  one-command query, and a new golden frame holds a fence lying across the
  shadow boundary — both states of the sun term in a single image (with a
  night twin). The full resolution lands in the next snapshot.
- Arcane Explosion's ground decal drew as a black tile: the additive blend
  was lost when a decal hopped render lanes. A regression, bisected with a
  human grading each build, and fixed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 19:52:55 +07:00
SamandClaude Fable 5 011d0b3e23 a lighting matrix joins the goldens, and captures stop drifting with LOD
- A creature and a chest, photographed in sunlight, in baked shade and
  indoors, from both sides — a matrix of golden frames that pins how every
  light lane renders a model, so a lighting regression in any one lane shows
  up as exactly one failing cell. Building it found two real races.
- Captures pin the animation-LOD gate off now — the third discovered source
  of run-to-run drift, where a slow capture run dropped bones from a skeleton
  and the golden image quietly disagreed with itself.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 19:52:40 +07:00
SamandClaude Fable 5 fb219c8372 portrait booths wait for their materials instead of freezing a bad frame
- A real defect behind black character-frame portraits: the portrait booth
  could catch a model whose material had not finished loading, bake that one
  unlucky frame, and then sleep — freezing a black or world-lit pane until
  something else forced a re-bake. A booth now refuses to bake until every
  part is resident, and retries next frame.
- The zoomed-to-max paperdoll had the same shape: the pane's framing anchors
  were fabricated while a display was still loading — a zero pivot height
  floored to 0.1, aiming the camera at a 0.1-unit subject — and the bad
  framing latched. Anchors now wait for the real model too.
- The reported black portrait itself is reproduced headlessly at last, and
  the trigger is gear arriving late, not the map change. Along the way the
  booth's own debug camera turned out to be photographing nothing — it shot
  before waking the booth, so every dump it ever took was blank. Fixed; the
  hunt continues on a working instrument.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 19:52:25 +07:00
SamandClaude Fable 5 fa5fa6dbce the golden sweep gains two hand-framed spots and stops faking green
- Two new golden-capture spots framed by a human eye rather than a lane list:
  the Goldshire inn common room (the interior everyone actually stands in) and
  a Felwood vista. The sweep also captures the world-map field now.
- An honest-tooling fix: a scenario that failed to produce its image used to
  vanish from the diff and the sweep still read green. A missing shot is now
  its own loud failure — a clean sweep means every frame was actually compared.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 19:51:57 +07:00
SamandClaude Fable 5 993adf79b9 an idle frame skips the quiet UI, and a lighting hunt closes clean
- The UI stopped paying to discover that nothing changed. Layout used to hash
  ~1,900 frames' worth of inputs every frame just to decide "quiet"; it now
  tracks a mutation epoch and answers with one integer compare, and a settled
  frame reuses last frame's rendered quads instead of re-rasterizing every
  glyph. ~0.9 ms off every idle frame — with a verify mode, forced on across
  all 489 UI tests, that re-runs every skipped resolve in full and asserts it
  would have produced identical results.
- Across this run of snapshots, the one number everything is graded by: CPU
  work per frame at the crowded dungeon spot went from ~29 ms to ~16.5 ms.
- A lighting question got the full treatment and an honest answer. Units
  briefly took a different day/night lighting law; it read wrong on screen the
  same evening, and a build-by-build hunt a full week back confirmed the
  world's look never regressed in the first place — the change is reverted,
  nothing about the look changes in this snapshot, and the question stays
  parked until the one remaining unknown in the reference client is pinned.
- The character pane's model booth grew a headless eye — a dump of exactly
  what it draws, no live session needed — built for that hunt, kept for the
  next one.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 21:56:26 +07:00
SamandClaude Fable 5 80978df983 the loading screen gets a lifecycle, and stops lying at both ends
- Entering the world used to show an uncovered, movable world before the screen
  came up — seconds of it on a slower machine ("like the Stormwind intro
  video", as one report with video put it). The screen also cleared onto bare
  terrain with the buildings still streaming in, and could hang forever if you
  arrived swimming or flying. It has a real lifecycle now: it rises at the
  entry edges (character pick, transfer, teleport), clears only when the scene
  is actually presentable — terrain, buildings, props and their collision all
  resident — and its physics hold releases in every movement mode, not just
  walking. The progress bar counts buildings too.
- A far teleport flashed a frame of the destination before the screen rose.
  The "swap never flashes" guarantee existed only in comments — a streamer
  rework had silently dropped the scheduling constraint that enforced it; it
  is structural now. And logout got its missing cover: the original's plain
  black cut, not a frame of torn-down world.
- Animation parking now governs everything with a rig. ~350 animated objects
  (braziers, doors, chests) were sampling their loops off-screen forever, and
  a patrolling parked mob kept writing pose data nothing could read — ~620 rig
  refreshes a frame became 7, and creatures in rooms the camera can't reach
  through any portal park too.
- The engine's own tax got measured: bare Bevy spends ~3.9 CPU ms a frame on
  this machine drawing nothing at all, which resets what "fast enough"
  honestly means for everything built on top of it. A shipping build profile
  (fat LTO) landed alongside — worth about −1 ms at the pin, kept out of
  everyday builds.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 21:56:09 +07:00