Repository navigation
Releases: Justin-Swets/Easyfish
Release list
v2.8.7
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
- The status window never appeared for players who had hidden it in an
v2.8.6
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
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
- NS.Memo caches values that only change when something happens; every
v2.8.4
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
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
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
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-Syncinstead 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 with0xFFFD0000. 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
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.ps1copies your saved file into the addon folder asEasyFish_Saved.lua, which the addon loads on login. - Run
tools\Install-EasyFishSync.ps1once (right-click → Run with PowerShell) to keep the sync running in the background from Windows logon. Per-user scheduled task, no admin rights.-Uninstallremoves 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
/reloadwhile 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
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
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
OnLoadruns 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.