Cogworks

The shared mainspring of the Cogworks WoW addon suite — event bus, theme, and cross-cog plumbing for FlipQueue, Tempo, Maxcraft, and beyond.

File Details

v0.10.0

  • R
  • Apr 28, 2026
  • 157.04 KB
  • 7
  • 12.0.5+1
  • Retail

File Name

cogworks-v0.10.0.zip

Supported Versions

  • 12.0.5
  • 12.0.1

Cogworks

v0.10.0 (2026-04-28)

Full Changelog Previous Releases

  • chore(release): v0.10.0
    Resolves #9, #10, #11, #13. Bumps lib.version 0.9.0 -> 0.10.0;
    MINOR is already 12 from feature work since the v0.9.0 tag.
    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • docs: purge Ledger cog name; Tally is the ledger
    The "Ledger" placeholder cog name was retired — Tally IS the ledger.
    Updated every roster table, prose mention, and section heading
    across the doc set:
    • README, CLAUDE.md, CHANGELOG: roster row + sibling enumerations
    • AGENT_BRIEF: roster + reading order + decision tree, plus a
      one-liner so future agents seeing "Ledger" in older notes know
      to read it as Tally
    • SYNDICATOR_INTEGRATION: audience list, event-bridge consumer
      reference, Phase 6b owned-list (TallyDB instead of LedgerDB),
      closing pointer
    • PLAN: current-state table, Syndicator stance per cog, Phase 6b
      heading, "Tally" section (was "Ledger cog (new)") absorbed
      rebranded with name candidates dropped — name is chosen
    • launch/curseforge, wago, scope, discord_announcement: pitch
      prose + roster tables
    • Items.lua comment: cross-cog example previously inverted
      (FlipQueue ledger / Tally research) flipped to match the
      actual ownership (FlipQueue auctions / Tally ledger)
      The word "ledger" survives where it describes a feature/domain
      that Tally owns (sales reconciliation, ledger snapshots, ledger
      entries) — that's coherent now that Tally is the ledger cog.
      Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • fix(gears): purge Ledger, retriangulate edges, drop ? overlay
    Three things in one pass — they all touch the same applyState +
    roster + cluster-positions block, so splitting would just mean
    re-touching the same lines.
    • Purge Ledger: Tally IS the ledger. The placeholder Ledger
      roster entry is gone; Tally's role line absorbs the net-worth /
      sales-evaluation language. Comments mentioning "the planned
      Ledger" updated to refer to Tally.
    • Retriangulate edges: Maxcraft and Tally now sit above the
      core trio as triangle apexes (Maxcraft above the Tempo↔hub
      mesh, Tally above the hub↔FlipQueue mesh) — a separate layer
      from the core, conveying lower coupling. Cluster frame shrunk
      to fit the new bounding box (180×120) and content shifted so it
      centers around y=0.
    • Drop the ? overlay: the missing-glyph FontString did nothing
      for the user that desaturation didn't already convey, and on
      dimmed gears it was just noise. State is now signalled by
      saturation + ring tint alone; the planned branch keeps a
      slightly different tint for any future planned cogs.
      Also tightened CW alpha: hub inner bumped 52→56 (ratio ~0.88) so
      the cw-inner.tga's anti-aliased edge falls behind the gear teeth,
      and SetVertexColor calls now pass explicit alpha=1.
      Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • fix(gears): close inner-glyph-to-ring gap
    First-pass inner sizes targeted the 32/53 minimap-button ratio
    (~0.60). In-game CogBorder's central hole reads larger than the
    tracking-border's hole, so the inner glyph floated short of the
    ring leaving a visible donut of empty space — most noticeable on
    the hub (64px ring), still visible on core (56px), and only barely
    acceptable on edges (44px).
    Bumped inner sizes to ~0.82 of the ring on every tier:
    hub 64 → 52 (was 38)
    core 56 → 46 (was 34)
    edge 44 → 36 (was 26)
    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • fix(gears): case-insensitive standalone-vs-embedded path detection
    cogworks.toc is named lowercase, so WoW reports the standalone addon
    name as "cogworks" at file load. libArtPath was comparing literal
    == "Cogworks" and falling through to the embedded path
    (...\Libs\Cogworks-1.0...), which doesn't exist when running
    standalone — the gear assembly rendered with no chrome and no inner
    glyphs (just the missing-glyph "?" overlays).
    Comparison now uses :lower(), and the path interpolates the actual
    caller name so the standalone addon folder is found regardless of
    how the user installed it.
    The COG-10 RegisterCogMinimapButton fix routes through libArtPath
    too, so this also covers the (theoretical) case of a consumer cog
    named with non-canonical capitalization.
    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • fix(gears): drop speculative Tally CurseForge URL
    Tally has no CurseForge slug yet, so the placeholder
    /wow/addons/tally would have routed clicks at the missing-gear
    to a 404. Leave url unset; the OnClick path no-ops cleanly when
    url is nil. Restore once Tally has a real listing.
    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • feat(gears): cluster + row layouts, minimap-style chrome, counter-rotation
    The previous gear assembly drew round portrait icons on a brass disk in a
    linear row connected by thin bars. That read as icons-on-a-stick rather
    than a gear assembly. Reworks the widget so each node renders with the
    suite's actual minimap chrome (CogBorder gear-tooth ring + per-cog inner
    glyph) and adds two layouts:
    * "cluster" (default) — Cogworks at center; FlipQueue and Tempo flank
    the hub with teeth meshed; hub spins clockwise, the meshed pair
    counter-rotates with the radius-ratio period match. Maxcraft, Tally,
    and Ledger float at the edges (no mesh) — natural integration shape.
    * "row" — linear arrangement with thin connectors; gears spin the same
    direction. For tight horizontal space.
    Per-cog reference inner-glyph TGAs move into Cogworks-1.0/Art/inner/ so
    they ship with the external; the assembly now renders the suite faithfully
    even when no consumer cogs are installed (saturation + "?"/"..." overlays
    carry the install signal). Animation runs always — the cluster is a
    visual of the suite, not a status indicator.
    Tally added to SuiteRoster (its inner glyph was already in the v1 readability
    set from COG-004; it's a real live cog and belongs in the cluster).
    libArtPath helper centralizes the standalone/embedded path resolution; the
    minimap-button gearBorderPath now goes through it. lib.loaderAddon captures
    the loader's addonName at file load so library code can construct paths
    without the caller passing one.
    MINOR 11 → 12.
    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • feat(COG-9): suite-wide semantic icon registry
    WoW's default fonts don't include the Unicode Geometric-Shapes block,
    so widgets that want a chevron / check / × hit the missing-glyph box
    problem and resolve it inline (Sections.lua's refreshArrow already did
    this with friendslist atlas names). The registry hoists that lookup
    into Cogworks: callers ask for an icon by semantic name and the lib
    picks the known-working representation.
    Public API:
    cw:RegisterIcon(name, def) -- def.atlas = "..." OR def.path = "..." (+ l/r/t/b)
    cw:ApplyIcon(texture, name) -- returns true on success, false on miss
    cw:HasIcon(name)
    Built-ins seeded: chevron-right, chevron-down (consumed by Sections).
    More built-ins added as widgets surface gaps.
    Sections.lua refreshArrow migrated as the first consumer / smoke test.
    MINOR 10 → 11.
    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • fix(COG-10): RegisterCogMinimapButton works in embedded layout
    Two bugs from v0.6.0 (#10, dup #8) made the wrapper a no-op for any
    consumer cog that embedded Cogworks via the .pkgmeta external — i.e.
    every real adoption path. Tally hit both during gezmodean-wow/tally#3.
    1. LDBIcon:SetButtonBorder only exists in LibDBIcon-1.0 ~v56+. The
    suite's vendored copies are typically older (Tally is on v44), so
    the call silently no-oped or errored.
    2. The hard-coded path Interface\AddOns\Cogworks\Art\CogBorder only
    resolves when the standalone Cogworks addon is installed — the
    external pulls Cogworks-1.0/ into Libs/, not the top-level Art/.
    Fix adopts Tally's verified overlay pattern: hide LibDBIcon's default
    tracking-border texture and add a gear OVERLAY child on the button.
    No SetButtonBorder dependency, so v44+ works.
    CogBorder.tga moves into Cogworks-1.0/Art/ so it ships with the
    external. Path is constructed from the caller's addonName, with a
    special case for the standalone (where the layout has no Libs\ segment).
    MINOR 9 → 10. No API surface change for callers.
    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com