promotional bannermobile promotional banner

ElastiBar

Extra action bars you can stretch, place, and show on your own rules.
Back to Files

Elastibar-1.0.1-beta1

File nameElastibar-1.0.1-beta1.zip
Uploaded
Oct 6, 2026
Downloads
14
Size
38.5 KB
Flavors
Forever
File ID
9083078
Type
B
Beta
Supported game versions
  • 1.60.1

What's new

Elastibar

1.0.1-beta1 (2026-10-06)

Full Changelog

  • Merge pull request #9 from unselfish-means/chore/bump-1.0.1-beta1
    chore(release): bump version to 1.0.1-beta1
  • chore(release): bump version to 1.0.1-beta1
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Merge pull request #8 from unselfish-means/chore/curseforge-project-id
    chore(release): add the CurseForge project ID and the beta tag rule
  • chore(release): add the CurseForge project ID and the beta tag rule
    Elastibar's CurseForge project is 1730569. While it's in beta, every
    tag must contain "beta" so the packager uploads a Beta file, not a
    Release. CLAUDE.md spells out the rule and the tag commands; the README
    says it's in beta.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Merge pull request #7 from unselfish-means/chore/curseforge-display-name
    chore(release): name CurseForge files <Addon>-<version>
  • chore(release): name CurseForge files <Addon>-<version>
    The CurseForge display name now matches the zip's file name, for example
    Reclaim-1.0.3, instead of the bare version.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Merge pull request #6 from unselfish-means/chore/bump-1.0.0
    chore(release): bump version to 1.0.0
  • chore(release): bump version to 1.0.0
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Merge pull request #5 from unselfish-means/chore/bigwigs-packager
    chore(release): upload to CurseForge with the BigWigs packager
  • docs: add a player-facing README and a CLAUDE.md for development
    The README describes what's on main for players and is the CurseForge
    description. CLAUDE.md points to the design specs, platform notes, dev
    workflow, and release setup. .pkgmeta ignores both so they don't ship.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • chore(release): read the CurseForge token from the CURSEFORGE_API_TOKEN secret
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • chore(release): describe the BigWigs packager in .pkgmeta
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • chore(release): package and upload to CurseForge with the BigWigs packager
    Add the shared tag-triggered workflow that runs BigWigsMods/packager. It
    fails on purpose until the .toc has an X-Curse-Project-ID and the
    CF_API_TOKEN secret is set.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Merge pull request #4 from unselfish-means/chore/curseforge-packaging
    chore(release): add .pkgmeta for CurseForge automatic packaging
  • chore(release): add .pkgmeta for CurseForge automatic packaging
    Ship Elastibar/Elastibar as the package root and leave out the dev-only
    ElastibarProbe, docs, scripts, and tests.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Merge pull request #3 from unselfish-means/feat/visibility-editor
    feat(visibility): add the visibility rule editor
  • fix(visibility): dock the editor on whichever side of the settings panel has room
    Near the right edge of the screen, clamping pushed the editor back over the
    panel. It now docks to the left there, and re-docks after the panel is dragged.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • feat(visibility): add the visibility rule editor
    A docked editor window with presets, context-aware snippets, a draft that
    survives closing and reloads, a live preview that never sends unknown
    conditions to the game, and the translated rule for spec names.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Merge pull request #2 from unselfish-means/feat/account-rules
    feat(buttons): enforce account-bar rules; support mounts, battle pets, and toys
  • Merge pull request #1 from unselfish-means/docs/github-account
    docs(platform): record the unselfish-means GitHub setup
  • docs(platform): record the unselfish-means GitHub setup
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • feat(buttons): enforce account-bar rules; support mounts, battle pets, and toys
    Account bars now refuse spells, pet actions, and character macros with
    a message, leaving them on the cursor. Mounts (cast by name), battle
    pets (/summonpet), and toys (secure "toy" action) can be placed on any
    bar, with icons, active glow, tooltips, and Shift-drag pickup. The
    random favorite mount is refused for now.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Merge pull request #4 from unselfish-means/feat/layout
    feat(layout): resize, snap, and configure bars in Edit Mode; shift-drag buttons
  • fix(buttons): place cursor contents on click so swapped items can be dropped
    After a swap the old contents are on the cursor but no drag is in
    progress, so the next action is a click, which ran the button's action
    instead. Switch the action off in PreClick when the cursor holds
    something and place it in PostClick, restoring the action if nothing
    was placed. A release that arrives as both a drop and a click is
    handled once per frame. Swap is now a decided behavior in the spec.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • feat(layout): add a per-bar "Hide empty slots" setting
    A checkbox in the bar settings panel (off for new bars) makes empty
    buttons invisible. Uses alpha, which isn't protected, so it works in
    combat and invisible slots still accept drops; they reappear while
    something is on the cursor and while Edit Mode is open. Replaces the
    global option in the options spec.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • fix(layout): keep the bar settings panel still while adjusting sliders
    The panel was anchored to the bar, so resizing or rescaling the bar
    moved the panel under the cursor and made the sliders jump. Open it at a
    fixed screen position next to the bar instead, and make it draggable.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • feat(buttons): shift-drag to move or clear button contents
    Shift + drag picks a button's contents up onto the cursor and empties
    it: drop on another Elastibar button to move, on a Blizzard bar to place
    there, anywhere else to clear. Dropping onto an occupied button swaps,
    putting the old contents on the cursor instead of losing them.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • feat(layout): resize, snap, and configure bars in Edit Mode
    • Drag a bar's right edge, bottom edge, or corner to change columns and
      rows live (1..12 each), keeping the top-left corner fixed; buttons
      shrunk away keep their contents.
    • Moving is a custom drag that snaps the top-left corner to Elastibar's
      own grid (lines shown while dragging, Shift to skip, /eb grid <px>).
    • A bar settings panel replaces the right-click menu: Scale, Columns,
      and Rows sliders, Layer (Behind/Normal/Above UI/Top), and Visibility,
      Rename, and Delete.
    • Specs updated with the step 3 decisions; grid math and size clamping
      have standalone tests.
      Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Merge pull request #3 from unselfish-means/feat/pet-actions
    feat(buttons): support pet actions
  • fix(buttons): resolve pet actions dragged from the spellbook
    The cursor reports spellbook positions for pet actions, which the slot
    guess treated as pet bar slots. Watch C_SpellBook.PickupSpellBookItem
    for the picked spell ID and name and find the pet bar slot holding it
    (commands like Attack match by name). Drop the slot guess; if the pet
    action isn't on the pet bar, say so instead of placing the wrong one.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • fix(buttons): take the pet action slot from PickupPetAction
    Pet commands (Attack, Follow) have no spell to match, and the cursor's
    values don't map to slots on this client, so Attack could land as
    Follow. Watch PickupPetAction (taint-safe hooksecurefunc) for the exact
    slot dragged from the pet bar; keep spell matching as a fallback.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • fix(buttons): place the dragged pet action and keep it visible without a pet
    The cursor's first value for a pet action isn't the pet bar slot on
    this client, so the button mirrored the wrong slot. Find the slot whose
    spell matches a cursor value (falling back to a slot-like value) and
    log the raw values. Remember each pet action's icon and name so the
    button shows it greyed out when no pet is summoned.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • feat(buttons): support pet actions
    Pet actions dragged from the pet bar mirror that pet bar slot via the
    secure "pet" action type, so pet commands (Attack, Follow, stances)
    work alongside pet spells. Buttons show the slot's icon, cooldown
    (falling back to the spell duration object if values are secret),
    usability, range, active state, and tooltip, and update on pet events.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Merge pull request #2 from unselfish-means/feat/bar-model
    feat(bars): add the bar model with character and account bars
  • fix(bars): make button clicks work and stop random checked highlights
    Set typerelease alongside type with pressAndHoldAction, as Button Forge
    does: presses are dropped, so mouse clicks act on release. Drive the
    CheckButton checked glow from IsCurrentSpell/IsAutoRepeatSpell instead
    of letting clicks toggle it. Stop ElastibarProbe auto-running at login,
    where its control conditional printed "Unknown macro option".
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • feat(bars): add the bar model with character and account bars
    Replaces the 2x2 spike with real bars built from saved records:
    • BarStore (pure Lua, tested): create, delete, rename, list, find;
      account bars in ElastibarDB, character bars in ElastibarCharDB;
      buttons keyed by row,col so resizing keeps contents; migrates the
      spike bar into a character bar named "Spike".
    • Bar/Bars: pooled secure frames with per-bar layout, scale, layer,
      per-Edit-Mode-layout position, and translated visibility; every
      change refused in combat.
    • EditMode: the spike's Edit Mode hook for every bar, with a per-bar
      scale panel that keeps the bar centered.
    • Slash commands (list, new, delete, rename, vis, taintlog) until the
      options panel exists.
      Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Merge pull request #1 from unselfish-means/feat/editmode-spike
    feat: spike bar, Edit Mode hook, and v1 feature specs
  • docs(platform): attribute BuffFrame errors to taintLog, not MoveAny
    The BuffFrame errors stopped with MoveAny enabled once taint logging
    became opt-in. Details_RaidCheck errors come from its raid plugin.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • docs(specs): confirm Edit Mode hook works on Forever; record debugging lessons
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • fix(spike): make taint logging opt-in
    Chat errors on XP messages appeared only in sessions where the spike
    turned the taintLog CVar on at login. Only re-enable it after
    /eb taintlog.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • fix(spike): stop combat taint from item range checks; use secret-safe spell cooldowns
    The taint log showed every blocked action came from C_Item.IsItemInRange,
    which is protected in combat; Edit Mode hooks were clean. Skip item range
    in combat, show spell cooldowns via GetSpellCooldownDuration and
    SetCooldownFromDurationObject, and log whether item cooldowns are secret.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • docs(platform): note secret-value cooldown restriction in combat
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • fix(spike): hide Edit Mode overlay on exit; auto-enable taint log; probe secret values
    Blizzard's ShowHighlighted re-shows the overlay, so hide it after
    resetting the highlight. This client resets taintLog on reload, so the
    spike turns it on at each login unless /eb taintlog off. Log which
    duration/secret-value APIs exist, since SetCooldown rejects secret
    cooldown values from addon code in combat.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • feat(spike): add /eb taintlog to set the taintLog CVar directly
    /console fails in this beta's chat code, so set the CVar via SetCVar.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • feat(spike): log diagnostics to SavedVariables and add Edit Mode name tooltip
    Everything Elastibar prints is also kept in ElastibarDB.log so taint
    and /eb editmode output can be read after a reload. Edit Mode events
    and selection are logged, diagnostics run once per session, and the
    overlay shows an "Elastibar" tooltip on hover like Blizzard's frames.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • fix(spike): size spike buttons at 45px and stop Edit Mode hover error
    ActionButtonTemplate is natively 45px on Forever, so the 36px grid let
    buttons spill past the bar and the Edit Mode overlay. Blizzard's
    selection overlay hover script needs self.system; replace OnEnter and
    OnLeave like the other overlay scripts. Document both in the specs.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • feat(spike): hook the spike bar into Blizzard Edit Mode
    Shows a selection overlay on the spike bar while Edit Mode is open,
    lets it be selected and dragged, keeps positions per Edit Mode layout,
    and opens a small scale dialog (50-200% in 10% steps). Reports any
    ADDON_ACTION_BLOCKED/FORBIDDEN events, and /eb editmode prints which
    Edit Mode pieces this client offers.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • docs(specs): mark minimap icon behavior decided
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • docs(specs): mark options panel location and contents decided
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • docs(specs): mark LibDBIcon and separate icon/compartment toggles decided
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • docs(specs): add addon compartment entry to options spec
    Forever has Blizzard's addon compartment; installed addons register via
    the AddonCompartmentFunc toc field or LibDBIcon.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • docs(specs): add options panel and minimap icon specs
    Also record that the spike confirmed account macros use indexes 1-120.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • docs(specs): drop templates from v1, make scale per bar, record spike results
    Live-linked templates overlapped with account bars; v1 keeps character
    and account bars only. Scale is a per-bar setting. The 2x2 spike passed
    in game with no errors, including in combat.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • docs(specs): record decisions on delete, scope, templates, scale, edit mode
    No delete confirmation; scope changes out of v1; templates are live
    links; per-bar scale follows Blizzard's action bar scale; hook into
    Blizzard Edit Mode if possible; Shift-drag to move or remove button
    contents; mounts, toys, and pets count as items; custom macro tooltip
    formatting may move to vNext.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • docs(specs): document decided v1 feature specs
    Bars, layout and edit mode, buttons, visibility (including spec-name
    rules and the rule editor), and platform facts from ElastibarProbe.
    Each requirement is tagged Decided, Proposed, or Open.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • feat(spike): add 2x2 spike bar with spec-name visibility rules
    One character bar of custom secure buttons on WoW: Forever: drag-and-drop
    spells, items, and macros; cooldown, count, usable, and range display;
    tooltips; a movable handle; and a visibility rule set with /eb vis.
    Spec names in rules ([spec:beast]) are translated to native [spec:N]
    using the talent columns from C_Traits group display info. A tie or no
    points means no named tree matches. Includes standalone tests for the
    translation.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • chore(probe): prototype per-spec-group talent column lookup
    GetGroupDisplayInfoByTreeID names the three talent columns. Walk the
    config for each spec group via GetCombatConfigIDForSpecGroup and total
    ranks per named column. Also pass GetGroupCurrencyInfo a groupIDs table.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • chore(probe): record talent node groups and group display info
    Nodes carry groupIDs, and C_Traits.GetGroupDisplayInfoByTreeID may hold
    the column names the talent UI shows. Also records the class spec IDs.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • chore(probe): discover talent APIs and rank spread by node position
    The trait config has one tree with no sub-trees, so list every
    talent-related function and frame the client exposes, dump one
    purchased node, and total ranks per column position.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • chore(probe): walk the trait config for talent tree names and points
    GetTalentTabInfo is absent and GetSpecializationInfo is class-level on
    Forever, so look for tree names and per-tree ranks in the active
    C_Traits config, grouped by tree and sub-tree.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • chore(probe): record talent tree names and points per spec group
    Needed to translate [spec:<tree name>] visibility rules into the
    native [spec:N] talent-group conditional.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • chore(probe): add control to detect inconclusive conditional checks
    On the 1.60.1 beta every conditional read as supported because unknown
    conditionals evaluate false and their no-prefixed form true. A made-up
    control conditional now flags when the <input disabled="disabled" type="checkbox" checked="checked" />/[nox] heuristic can't tell
    real conditionals from unknown ones.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • chore(deploy): add script to link addons into the beta client
    Junctions every top-level folder with a matching .toc into the
    _classic_beta_ AddOns folder. Idempotent; never replaces a real folder.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • chore(probe): add ElastibarProbe API discovery addon
    Dev-only addon that records which APIs, frame templates, macro
    conditionals, and frame strata the WoW: Forever client (toc 16001)
    supports. Results are stored per build in ElastibarProbeDB as sorted
    line lists so builds can be diffed as text. Defers while in combat.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

This mod has no related projects