Skip to content

Releases: Eyal-WowHub/WowSync

1.0.0-beta.208

1.0.0-beta.208 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Jun 15:02
3be4763

WowSync

1.0.0-beta.208 (2026-06-30)

Full Changelog Previous Releases

  • refactor: regroup core and internal helper folders
    Rename Infrastructure to Core so the addon's foundational pieces live
    under a clearer name, and move the shared utilities that used to sit in
    Core into Libs/Internal where private helper modules belong. The toc
    load order is updated to match, and Libs/Internal is un-ignored so the
    helpers stay tracked.
    Also decouple Colorizer from the addon's accent color: it now exposes a
    generic Wrap(color, text) and the caller supplies the color, removing a
    hidden dependency on a global constant.
  • fix(snapshots): enable exact mode for action bars
    ActionBars now advertises both Merge and Exact apply modes.
    This lets the apply preview expose the per-module mode toggle for
    ActionBars while keeping its default row mode on Exact.
    Update the SnapshotApplyMode examples to point at Talents as the
    additive-only module instead of ActionBars.
  • feat(funding): add Ko-fi funding link

1.0.0-beta.180

1.0.0-beta.180 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Jun 14:07
b7f6d2a

WowSync

1.0.0-beta.180 (2026-06-29)

Full Changelog Previous Releases

  • docs: update warning message in README to reflect beta status and usage caution
  • chore(release): automate CF/Wago publishing
    Add a tag-triggered GitHub Actions workflow with BigWigs packager.
    Publishes tagged builds to CurseForge and Wago from the WowSync repo.
    Add X-Curse-Project-ID and X-Wago-ID to WowSync.toc for routing.
    Supports annotated 1.0.0-beta.X release tags.
  • docs: update screenshot for WowSync window in README
  • perf(hash): avoid per-leaf concat allocations
    Replace the leaf serializer's type:value string concatenation with
    three direct part pushes (type, colon, value text).
    This preserves the canonical serialized output and resulting hashes
    while reducing intermediate string allocations during fingerprinting.
  • fix(snapshots): diff other heads vs live setup
    Previewing another character's head wrongly compared against that
    profile's latest saved snapshot, returning nil and showing nothing when
    the character had no snapshot yet.
    Route a non-current head through PreviewApplyHeadByCharKey so it diffs
    that character's stored setup against the logged-in character's live
    state. The own head keeps its unsaved-changes-vs-latest behaviour.
  • docs(screenshots): refresh UI screenshots
    Update the Imports and Profiles screenshots to reflect the aligned
    action buttons and add a new MainFrame capture for the README.
    Keeps the documented UI in sync with the current layout.
  • docs: overhaul readme and refresh screenshots
    README now describes the current data model, where profiles are
    timelines and snapshots hold the captured module data shown in Current
    and history, and explains export/import sharing and PvP Talents support.
    The main window screenshot is renamed to reflect the profiles view and a
    new imports screenshot is added so the visuals match today's UI.
  • refactor(core): group runtime features together
    Load-time behavior stays the same, but profile, snapshot, import, and
    development capabilities are now treated as one feature area.
    This clarifies the addon architecture so future work can evolve feature
    logic without mixing it with infrastructure concerns.
  • fix(toc): update notes for clarity on profile sync functionality
  • fix(snapshot): sync head preview to unsaved badge
    Change SnapshotView:Preview for head handles to preview against the
    latest saved snapshot instead of the stored head state.
    This makes the Current row preview show unsaved deltas that match the
    unsaved-changes badge, avoiding contradictory UI signals.
  • feat(snapshot-view): add selector accessor
    Add SnapshotView:GetSelector(handle) to return hash#index for saved
    snapshots and nil for character heads.
    This gives UI export code a stable way to reference saved snapshots
    without reading raw snapshot internals.
  • feat(imports): add snapshot share import/export
    Add the import/export core for shared snapshot strings in WowSync.
    Create class-locked import containers with lookup, rename/delete,
    note updates, and duplicate warnings for imported snapshots.
    Add manager APIs to encode/decode, import, preview, and apply imports.
    Wire /ws export and /ws import to open the UI share dialog with
    localized help text, and initialize import DB defaults and load order.
  • feat(actionbars): show icons for all action types
    Resolve preview icons for macros, equipment sets, battle pets,
    and flyouts alongside spells and items. When a texture cannot be
    resolved on the current character, use the empty-slot icon instead
    of a blank entry.
    This keeps ActionBars diff rows visually consistent and makes changed
    slots easier to identify at a glance, even when the referenced action
    is not available locally.
  • refactor: split core and Infrastructure code
    Startup layering now treats Core as foundational library code and
    loads Infrastructure afterward. This aligns load order with the
    refactor boundary so shared primitives are initialized before
    infrastructure services and registries are attached.
    Keeping the runtime bootstrap aligned with the architecture makes
    future moves between layers safer and reduces accidental dependency
    cycles during addon startup.
  • feat(diff): add one-line preview descriptions
    Snapshot diff rows now include one-line context beneath each item
    label, so users can understand what a change represents before
    applying a sync. Add-on entries show addon notes, keybinding entries
    show assigned keys, macro entries show the first meaningful macro
    line, and settings entries show curated CVar descriptions.
    The tracked CVar catalog is now defined as dedicated settings data
    instead of living in branding constants. This keeps constants focused
    on user-facing tunables and makes settings metadata easier to
    maintain, with description text aligned to official wording.
  • feat(snapshot): add module default icons
    Modules can now declare a default icon in Config so diff entries
    without their own icon still render with a recognizable module
    identity. This keeps preview output easier to scan while preserving
    existing per-entry icons where modules already provide them.
    The module contract now documents this capability, and snapshot access
    now exposes module defaults for consumers that render previews.
  • refactor: reorder variables
  • feat(undo): add core preview for rollback
    Expose a read-only undo preview that returns the diff between the
    current setup and the most recent rollback snapshot.
    This gives UI flows a single source for showing pending undo changes
    before the user confirms restoration.
  • feat(combat): gate snapshot actions in combat
    Snapshot save, apply, undo, and delete commands now no-op during combat
    lockdown and report a clear combat message instead of attempting the
    action. This centralizes combat protection in the snapshot flow so
    module behavior stays consistent and protected APIs are never touched
    while locked.
  • feat(pvp): add dedicated talent sync module
    Add a new PvpTalents module that captures active-spec PvP slots,
    applies valid selections per slot, and emits icon-aware diff entries.
    Remove PvP talent handling from Talents and wire module loading and
    locale text so preview and apply reflect actual PvP talent changes.
  • feat(talents): show spec icon in diff preview
    Include each flattened loadout's spec ID and resolve entry icons with
    GetSpecializationInfoByID during talent diff generation.
    This binds preview icons to the loadout specialization instead of
    the player's current specialization state.
  • feat(core): add icon-aware diff preview entries
    Diff results now carry preview entries with a label and optional icon
    instead of label-only strings, so callers can render richer change lists
    without recomputing metadata per module.
    Action bar and macro diffs now provide native textures, while modules
    without icons continue to emit label-only entries.
    This keeps existing count-based consumers unchanged and updates the
    module contract to match what the preview UI expects.
  • fix(screenshots): update MainFrame.png to reflect recent UI changes
  • fix(actionbars): clarify unnamed macro fallback
    Change the ActionBars macro fallback label from "Macro " to
    "Unnamed macro".
    Dynamic #showtooltip macros can expose a shown spell or item id,
    not a macro index. Rendering "Macro 783" implied an index that
    might not exist, which was misleading during debug and diff review.
  • fix(ModuleInterface): clarify ApplyPriority behavior in documentation
  • fix(snapshots): apply modules in a deterministic priority order
    Macros and Talents now apply before ActionBars and Keybindings so the
    macros/spells they reference exist before being placed, preventing silent
    loss of macro buttons on cross-character or exact applies. Modules declare
    Config.ApplyPriority; SnapshotManager iterates them via
    ModuleRegistry:IterableModulesByPriority.
  • fix(actionbars): capture macro names from the action slot
    GetActionInfo's id is the shown spell/item for dynamic #showtooltip
    macros, not the macro index, so GetMacroInfo couldn't name them and
    exact-mode apply cleared them without re-placing. Read the name via
    C_ActionBar.GetActionText instead, and skip placement when no name
    was captured.
  • fix(chat): restore message groups and channels via chat frame methods
    The ChatFrame_* globals used to restore a tab's message groups and
    channels were removed in retail; use the ChatFrameMixin methods.
  • feat(commands): label unpackaged builds as Prerelease
    Show "Prerelease" in /ws status when the addon version metadata is the
    unsubstituted @Project-Version@ token, instead of leaking the raw token.
  • feat(commands): group /ws status output under prefixed headers
    Add an unprefixed PrintLine and use it for /ws status detail lines so
    the addon name prefixes only each section header, not every line.
  • docs(readme): sync slash command docs
    Update the Slash Commands table to document /ws status and /ws debug
    using the same descriptions shown by /ws help.
    Add a diagnost...
Read more