Skip to content

Releases: Justin-Swets/Easyfish

v2.8.7

Choose a tag to compare

@github-actions github-actions released this 07 Oct 19:06

EasyFish

v2.8.7 (2026-10-07)

Full Changelog Previous Releases

  • Window shows with the pole for upgraders; double-click works on pools
    • The status window never appeared for players who had hidden it in an
      older version: the minimap right-click and /fish show used to flip
      showFrame, which 2.8.6 reads as "never show the window". showFrame is
      reset to on once (windowSettingsV2).
    • Double right-click refused to cast while any world-object tooltip was
      under the cursor, which includes fishing pools, and a tooltip still
      fading out could block it at random. Pools (recognised by name) never
      block now; other objects (herbs, chests) still do, and so does an
      active cast such as herb gathering started by the first click.
    • Sync watcher: Windows can drop change notifications, and it missed
      nine saves in a row. Every 15 s it now also compares the save's
      timestamp and syncs anything it missed.
      Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

v2.8.6

Choose a tag to compare

@github-actions github-actions released this 28 Sep 21:23

EasyFish

v2.8.6 (2026-09-28)

Full Changelog Previous Releases

  • Status window appears with the fishing pole
    The window is no longer on screen all the time: it shows when a fishing
    pole is equipped (PLAYER_EQUIPMENT_CHANGED) and hides when it comes
    off. New setting "Only while a fishing pole is equipped" (autoShow,
    default on) under Window; "Show status window" stays the master switch.
    Minimap right-click and /fish show toggle it by hand until the pole
    next goes on or off. The window contains the secure Lure button, so a
    show/hide or resize that happens in combat is deferred to
    PLAYER_REGEN_ENABLED instead of being blocked. Hidden, its update loop
    does not run, so the addon costs nothing while you aren't fishing.
    Also: window settings live only on the Window tab (the General tab had
    them twice plus a duplicated Display heading), and
    tests/check_syntax.py compiles every file with real Lua 5.1 after a
    pure-Python parser accepted a string with a raw line break.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • CurseForge description: invite comments and feedback
    Short invitation under the intro, and a fuller Feedback section:
    what helps most (bugs with error text, Forever vs Classic differences
    only players can report, ideas, favourite features) and where to post
    (Comments tab for quick reports and ideas, GitHub issues for detailed
    bugs).
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

v2.8.5

Choose a tag to compare

@github-actions github-actions released this 24 Sep 14:02

EasyFish

v2.8.5 (2026-09-24)

Full Changelog Previous Releases

  • Cut the status window's work ~15x and stop creating empty spots
    Measured with a new harness that runs the whole addon in Lua 5.1 against
    a simulated WoW API (tests/). With a large history the once-a-second
    status refresh took 0.29 ms and allocated 28 KB; it now takes 0.02 ms
    and 1.7 KB, and no longer grows with history size.
    • NS.Memo caches values that only change when something happens; every
      game event, slash command and settings change bumps NS.gen, and a
      map change also recomputes. Used for the materials line (15 KB per
      refresh on its own), pools in the zone (scanned every spot on every
      map), chests here, and the top-fish rows (prices and icons included;
      rows whose item info the game hasn't loaded yet are retried rather
      than cached blank).
    • Bug: the pool line looked up "the spot here" with a function that
      creates a spot when there is none, so until the first cast of a
      session the dashboard saved an empty spot wherever you walked (5 of
      the 10 spots in real saved data). Looking never creates a spot now,
      and never-fished spots are pruned on load.
      tests/test_core.py (23 behaviour tests), tests/smoke.py (every command,
      settings tab and handler, surfacing errors pcall would hide) and
      tests/perf.py; excluded from the packaged addon.
      Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

v2.8.4

Choose a tag to compare

@github-actions github-actions released this 24 Sep 13:33

EasyFish

v2.8.4 (2026-09-24)

Full Changelog Previous Releases

  • Double right-click only fishes; history moves to its own addon
    Double right-click equipped the fishing pole from anywhere, including
    right-clicking an enemy to attack it. It now only arms with a fishing
    pole already equipped, never with a creature, NPC or object under the
    mouse, never in combat, and never equips anything. The double-click
    reaches the cast button as its own virtual button ("EasyCast"), so the
    cast button checks again at the moment of the click and swallows it if
    anything changed; the Cast key binding can still equip the pole since
    pressing it is deliberate. Verified by running EasyFish.lua against a
    simulated WoW API through 12 scenarios.
    Lua warning "Error loading EasyFish_Saved.lua": the TOC listed a file
    only the sync tool creates, so every install without the sync warned
    on every login, and updating EasyFish deleted it until the sync put it
    back. The sync now writes the history as a companion addon,
    EasyFish_History, which EasyFish loads through OptionalDeps: no
    warning without it, and updates never touch it. Older installs that
    still list EasyFish_Saved.lua keep being fed until they update.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

v2.8.3

Choose a tag to compare

@github-actions github-actions released this 24 Sep 01:09

EasyFish

v2.8.3 (2026-09-24)

Full Changelog Previous Releases

  • Publish to CurseForge automatically on version tags
    GitHub Action runs the BigWigs packager whenever a v* tag is pushed:
    builds the zip, uploads it to CurseForge (project 1709292, via the
    CF_API_KEY secret) and creates the GitHub release with the zip.
    .pkgmeta lifts the EasyFish/ subfolder to the top of the package so
    the zip holds EasyFish/EasyFish.toc, keeps tools/ at EasyFish/tools,
    and leaves out branding/, curseforge/ and repo files. The TOC version
    is now @Project-Version@ so it always matches the tag. Dry-run
    verified locally: detects Forever (1.60.1) and the project ID.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Target WoW: Forever only
    Drop the Retail interface numbers (120105, 120100) from the TOC.
    EasyFish is built and tested for Forever (16001) only, and the TOC
    decides which game versions CurseForge lists it for.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add CurseForge project description
    Markdown source plus an HTML copy for rich-text editors. Every
    command and feature listed was checked against the code.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Restyle the logo in a fantasy-MMO look
    Hand-painted style float with thick outlines, rim light, a riveted
    brass band, brass cap and eyelet, and a teal and gold feather plume.
    Saturated dusk sky with light rays over mountain and pine silhouettes,
    turquoise water. Bevelled bronze frame with teal corner gems.
    Wordmark in Cinzel Black with gold gradient, extrusion, dark outline,
    glow and gloss. Cinzel is SIL OFL (license in branding/fonts) and is
    embedded in the SVGs so they render the same anywhere. Still entirely
    original: no game assets or Blizzard fonts.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add EasyFish logo for CurseForge
    Original artwork (no game assets): an egg-shaped red and white float
    in rippling water at sunset, in a gold frame. Icon-only avatar and a
    version with the EasyFish wordmark, as SVG sources plus 1024/512/400
    PNG renders. branding/make_logo.py regenerates them (renders with
    Edge headless).
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

EasyFish 2.8.2

Choose a tag to compare

@Justin-Swets Justin-Swets released this 23 Sep 13:48

EasyFish 2.8.2

The background sync no longer shows a PowerShell window. On Windows 11, Windows Terminal ignores PowerShell's "start hidden" setting, so the watcher stayed on screen, and closing it stopped the sync. It now runs through conhost --headless, which never creates a window.

If you installed the sync from 2.8.0 or 2.8.1, run EasyFish\tools\Install-EasyFishSync.ps1 again. It stops the old watcher and replaces it. The addon itself is unchanged.

EasyFish 2.8.1

Choose a tag to compare

@Justin-Swets Justin-Swets released this 23 Sep 03:56

EasyFish 2.8.1

Fixes for the background history sync from 2.8.0. The addon itself is unchanged.

  • Installer: the sync script now installs to <Forever folder>\WTF\EasyFish-Sync instead of %LOCALAPPDATA%. Apps installed from the Microsoft Store (and some launchers) see a private copy of AppData, so a script copied there was invisible to Task Scheduler and the task failed with 0xFFFD0000. The installer now also checks the task is really running and says so if not.
  • Watcher: updating the addon replaces its folder and deletes the history snapshot. The watcher now notices within 15 seconds and puts it back, so the next login still loads your history.

If you installed the sync from 2.8.0, run EasyFish\tools\Install-EasyFishSync.ps1 again. It replaces the old task.

EasyFish 2.8.0

Choose a tag to compare

@Justin-Swets Justin-Swets released this 23 Sep 03:50

EasyFish 2.8.0

History now survives logins on the Forever beta

The Forever beta client writes SavedVariables when you log out but never reads them back, so every login started with empty history — and each logout overwrote the saved file with that one session.

  • New: tools\Sync-EasyFish.ps1 copies your saved file into the addon folder as EasyFish_Saved.lua, which the addon loads on login.
  • Run tools\Install-EasyFishSync.ps1 once (right-click → Run with PowerShell) to keep the sync running in the background from Windows logon. Per-user scheduled task, no admin rights. -Uninstall removes it.
  • Sessions played while history failed to load are kept and merged back in on the next login, once.
  • Every save is backed up to WTF\Account\<account>\SavedVariables\EasyFish-sync\backups.
  • Avoid /reload while fishing — the client can reload faster than the sync reacts (the session is still in the backups).

Chest contents count toward gold/hour

  • Items and coins from opened chests/trunks now count toward session value and gold/hour.
  • Coin slots were being recorded as items ("1 Silver 42 Copper"); they're now measured as the change in your money, and old bogus entries are cleaned up.
  • Items the game hadn't cached yet were valued at nothing — prices now retry until the item info arrives.
  • The dashboard chest row shows what the chests held; chat reports what each chest was worth.
  • The auction scan now also prices anything that has come out of a fished-up chest.

Upgrading: log out of the game, replace the EasyFish folder, run EasyFish\tools\Install-EasyFishSync.ps1, log in.

EasyFish 2.7.0

Choose a tag to compare

@Justin-Swets Justin-Swets released this 22 Sep 21:15

EasyFish 2.7.0 — pool tracking

Wreckage and debris pools are where crates and trunks come from, and schools are where the good fish are. Pools are not exposed to the addon API, so EasyFish finds them two ways:

  • By name — with soft-targeting on (Extras → keyboard fishing), the client names what your cast is aimed at. A known pool name is a certain match.
  • By behaviour — pool loot ignores the junk roll, so a run of junk-free catches from one spot is recorded as a pool even if we never saw its name (marked "inferred").

What you get

  • Pool spots drawn with a crate icon and green ring on the world map and minimap, separate from ordinary fishing pins
  • Tooltip shows the pool type, catch count, and chests pulled there
  • Dashboard line when you are standing on a known pool, or a count of pools in the zone
  • /fish pools (this zone) and /fish pools all
  • New Pools settings tab with the burst threshold

Recognised pool types: wreckage, debris, flotsam, Oily Blackmouth, Firefin Snapper, Sagefish, Stonescale, Mightfish, lobster, generic schools, elemental water.

EasyFish 2.6.1

Choose a tag to compare

@Justin-Swets Justin-Swets released this 22 Sep 01:38

EasyFish 2.6.1

Fix: opening the world map raised an assertion in Blizzard_MapCanvas (OnMapChanged → AcquirePin) caused by the heatmap's world-map pin provider.

  • Pin template is now a Frame (the map canvas pools pins as FRAME type) and the provider registers its template type
  • Pin OnLoad runs Blizzard's base pin setup first
  • Pin creation is protected: if the map API ever rejects a pin again, world-map pins disable themselves with a chat message instead of breaking the map. Minimap pins are unaffected.