FishingKit - Classic

All-in-one fishing companion: gear swapping, lure management with live timer, session stats, clam opening, and more. Features skill tracking, zone info, quick action buttons, and comprehensive catch statistics. Essential for serious anglers!

File Details

FishingKit-Classic-1.0.11.zip

  • R
  • Mar 4, 2026
  • 95.54 KB
  • 132
  • 1.15.8+1
  • Classic

File Name

FishingKit-Classic-1.0.11.zip

Supported Versions

  • 1.15.8
  • 1.15.7

FishingKit - Classic Era Edition - Changelog

v1.0.11-classic

Improvements

Double-Click to Cast — Complete Rewrite

  • Completely rewritten from the ground up using the SetOverrideBindingSpell approach (inspired by ZenFishing)
  • Removed the broken SecureActionButtonTemplate approach which detected double-clicks but never actually cast the spell
  • How it works now: Double-right-click in the 3D world to cast Fishing. Single right-click behaves normally (loot bobber, interact, camera). SetOverrideBindingSpell binds BUTTON2 directly to the Fishing spell on double-click detection — no SecureActionButton, no PreClick/PostClick, no attributes
  • Override binding cleared on every non-double-click (matching ZenFishing's ClearClickHandler pattern) so single clicks are never intercepted
  • Override binding cleared on entering combat
  • Loot window check (LootFrame:IsShown()) prevents double-click from firing while looting
  • Minimum 0.05s / maximum 0.4s double-click detection window
  • Default changed from disabled to enabled — works out of the box
  • Toggle on/off in General config tab

Combat Recovery Reworked

  • Re-equip fishing gear after combat — previously the addon swapped to normal/combat gear after combat ended, which made no sense while fishing. Now it re-equips your fishing gear so you can resume fishing immediately
  • Chat message updated: "Combat detected! Will re-equip fishing gear when combat ends."
  • Config checkbox renamed from "Auto-swap to normal gear on combat" to "Re-equip fishing gear after combat"

Community Pool Visibility Toggle

  • New config option: "Show community (unconfirmed) pool pins" in the Pools tab
  • When disabled, hides all community (chartreuse) pool pins from both minimap and world map
  • Routes built with /fk route will only include your personally discovered pools when community pools are hidden
  • Enabled by default — toggle off to see only your confirmed pool locations

Fixes

  • Fixed C_Container API crash — Classic Era does not have the C_Container namespace in all clients. Added a compatibility shim in Core.lua that creates C_Container wrapper functions around the legacy API (GetContainerNumSlots, GetContainerItemLink, GetContainerItemInfo, PickupContainerItem) so all code can use the C_Container namespace safely
  • Fixed GetContainerItemInfo return value handling — Classic's legacy GetContainerItemInfo returns multiple values, while the C_Container version returns a table. The compatibility shim normalizes the return to always be a table with .iconFileID, .stackCount, .itemLink, .quality, and .isLocked fields
  • Fixed config panel overflow — config panel split into 6 tabbed sections to prevent checkboxes from overflowing the panel bounds. Tab labels shortened to fit

Files Modified

  • Core.lua (v1.0.11-classic, C_Container compatibility shim, combat recovery rework, doubleClickCast default true, new showCommunityPools setting)
  • UI.lua (double-click casting complete rewrite using SetOverrideBindingSpell, removed SecureActionButton/PreClick/PostClick approach)
  • Config.lua (combat checkbox label updated, community pools checkbox, doubleClickCast default true, 6-tab layout)
  • Pools.lua (community pool filtering in minimap and world map pin rendering)
  • Navigation.lua (community pool filtering in BuildRoute)
  • CHANGELOG.md
  • fishing.md

v1.0.10-classic

Code Quality & Compliance Audit

Full codebase audit for API compliance, memory safety, documentation accuracy, and engineering best practices.

Critical Fixes

  • Removed Interface 20505 from TOC — Classic Era edition does not contain TBC content (no Outland zones, fish, or pools). Removed TBC Anniversary interface version to prevent loading on the wrong client. Supported interfaces: 11508 (Classic Era), 30405 (Wrath Classic), 50503 (Cata Classic)
  • Added C_Timer compatibility shim — Classic Era clients may lack the C_Timer API. Added a full polyfill (C_Timer.After and C_Timer.NewTicker) using an OnUpdate frame, preventing crashes on clients without native C_Timer support
  • Fixed STV Fishing Contest detectionIsContestActive() relied solely on C_DateAndTime which doesn't exist in Classic Era. Added Lua date() fallback so contest detection works on all supported clients

AH Panel Fixes

  • Fixed AH price list overflowing panel bounds — Content frame now properly inset from AuctionFrame edges (TOPLEFT +12/-10, BOTTOMRIGHT -8/+37) matching Auctionator's wrapper pattern. Bottom clearance increased from 10px to 37px to clear the tab buttons
  • Removed broken SetClipsChildren calls — This API doesn't exist in Classic WoW. ScrollFrame natively clips its viewport
  • Added column headers — "Fish" and "Price Per Unit" header labels above the scroll area
  • Scroll child width set dynamically — Uses OnSizeChanged callback instead of hardcoded width
  • Fixed FontString memory leak — AH price list now uses FontString pooling instead of creating new FontStrings on every refresh

Nil Safety & Defensive Checks

  • Equipment.lua — GetItemIDFromLink result now checked for nil before comparison in EquipItemByLink
  • Core.lua — Nested C_Timer callbacks for combat gear swap now guard FK.Equipment existence
  • Alerts.lua — StartWatching frame cached and reused instead of creating new unnamed frames each cycle
  • Navigation.lua — C_Map.GetBestMapForUnit calls now guarded with namespace existence check, preventing crashes if C_Map is unavailable
  • Slash commands/fk scale now gives explicit error messages for non-numeric input and out-of-range values

Documentation Fixes

  • Pool count corrected — Was 552, actual is 551 (both fishing.md and CHANGELOG.md)
  • Missing slash commands documented — Added /fk route stop and /fk route nearest alias notation
  • Section header emojis added — All fishing.md section headers now match TBC edition's emoji format for visual consistency

Files Modified

  • FishingKit-Classic.toc (version bump, Interface 20505 removed)
  • Core.lua (v1.0.10-classic, C_Timer shim, IsContestActive fallback, AH panel rewrite, FontString pooling, nil guards, slash command validation)
  • Equipment.lua (nil guard on GetItemIDFromLink)
  • Alerts.lua (frame reuse guard in StartWatching)
  • Navigation.lua (C_Map namespace guard)
  • CHANGELOG.md
  • fishing.md (pool count, slash commands, emojis, version bump)

v1.0.9-classic

New Features

Pre-filled Pool Spawn Database (PoolData.lua)

  • Ships with 551 known pool spawn locations across 24 Classic Azeroth zones
  • All coordinates sourced from Wowhead — real spawn data, not estimates
  • Map pins appear immediately on first install — no discovery needed
  • Static data merges with user-discovered pools (user pools always take precedence)
  • Community pools shown in chartreuse (yellow-green) to distinguish from discovered pools (cyan)
  • Tooltip shows "Community Pool Data" with "Fish here to confirm this location" hint
  • Once you fish at a community pool, it converts to a confirmed discovered pool (cyan)

Community vs Discovered Pool Pins

  • Two-color pin system for instant visual distinction on maps
  • Chartreuse (yellow-green): Community pool data from the pre-filled database (unconfirmed)
  • Cyan (teal): Pools you've personally discovered or confirmed by fishing
  • Tooltips show source: "Community Pool Data" or "Seen: X time(s)" with last-seen timestamp
  • Applies to both minimap pins and world map pins

Navigation Chat Info

  • /fk route skip and waypoint chat messages now include source tag
  • Shows [Community] (chartreuse) or [Discovered] (green) next to pool name and coordinates

Bag Space in Footer Bar

  • New center element in the footer shows "Bags: free/total" at all times
  • Color-coded: green (>10 free), orange (5-10), red (<5), flashing "Bags FULL!" at 0

Catch Percentage per Fish

  • Each fish in the "Fish Caught" stats tab now shows its percentage of total catches
  • New "%" column header alongside Fish and Count

Top 5 Catches Ranking

  • Gold-highlighted "Top 5 Catches" section at the top of the Fish Caught tab
  • Numbered ranks (1-5) with quality-colored names, counts, and percentages

Rare Fish Tracker

  • Dedicated "Rare Fish" section in the Fish Caught tab
  • Shows all rare fish from the database with catch status and personal drop rates
  • "Discovered: X/Y" summary counter
  • Uncaught rare fish displayed in gray with "Not yet caught" text
  • Added Old Ironjaw, Old Crafty, and Speckled Tastyfish as rare catches

Cycle Fish Time Windows

  • Nightfin Snapper (18:00-06:00) and Sunscale Salmon (06:00-18:00) now tracked by server time
  • Zone info panel shows "Nightfin: NOW" (green) or "Nightfin: 18:00" (gray) when in relevant zones
  • Chat alert fires when a time window opens while you're in an applicable zone
  • Integrates with existing seasonal fish display (Winter Squid, Summer Bass)
  • Toggle alerts in Config > Alerts > "Cycle fish time window alerts"

Automatic SavedVariable Backups

  • Auto-backup every 24 hours on login (10-second delay for stability)
  • /fk backup — Force an immediate backup
  • /fk backup restore — Restore from last backup (confirmation dialog, requires /reload)
  • /fk backup info — Show last backup timestamp and age
  • Backs up both global (account-wide) and per-character saved variables

v1.0.8-classic

New Features

Double-Click to Cast (Initial Implementation)

  • Double-right-click anywhere to cast Fishing
  • Initial implementation using SecureActionButtonTemplate with override binding
  • 0.05-0.4 second double-click detection window
  • Binding automatically cleared during combat
  • Toggle on/off in General config tab
  • Note: This implementation had issues — the SecureActionButton detected double-clicks but the spell cast did not reliably fire. Completely rewritten in v1.0.11-classic using SetOverrideBindingSpell

Persistent Footer Bar

  • New footer bar at the bottom of the panel, always visible even when collapsed
  • Left side: last fish caught (name and quantity, stays for 5 minutes)
  • Right side: "2x Click to Cast" indicator when double-click casting is enabled
  • Replaced previous title bar indicator and cast bar last-catch display

Improvements

Reliable Cast Bar

  • Cast bar now uses UnitChannelInfo/UnitCastingInfo as authoritative source of truth
  • Self-healing: if WoW API says the player is fishing but addon state is corrupted, state is automatically restored
  • Eliminates cast bar desync issues during rapid double-click recasting

Accurate Cast Counting

  • Casts counted when bobber hits the water (CHANNEL_START event) for reliable tracking
  • Fish got away events properly counted as valid casts with gotAway stat
  • User cancellations during cast animation (before bobber deployed) are not counted
  • Uses castGen counter to prevent stale events from corrupting state

Debug Print Cleanup

  • Converted all hardcoded debug prints to FK:Debug() (only visible with /fk debug)
  • Removed user-facing debug spam from event handlers and double-click system
  • User-facing prints (help text, goal listing, release list) unchanged

Fixes

  • Fixed cast bar not resetting properly during rapid double-click recasting
  • Fixed last fish caught display being immediately overwritten by idle text
  • Fixed stale LOOT_CLOSED events resetting state for new casts (lootCastGen tracking)
  • Fixed stale SPELLCAST_FAILED/INTERRUPTED events from old casts corrupting new cast state

Files Modified

  • Core.lua (v1.0.8-classic, double-click setting, castGen counter, channelStarted flag, CHANNEL_START cast counting, debug print cleanup)
  • UI.lua (double-click casting system, footer bar, UnitChannelInfo self-heal in cast bar, debug print cleanup)
  • Statistics.lua (UndoCastCount method for interrupted casts)
  • Config.lua (double-click casting toggle in General tab)
  • FishingKit-Classic.toc (version bump to 1.0.8-classic)
  • CHANGELOG.md
  • fishing.md

v1.0.7-classic

Initial Classic Era Release

Standalone Classic Era port of FishingKit, forked from the TBC Anniversary Edition v1.0.11.

Classic Era Adaptations

  • Removed all TBC/Outland content (zones, fish, pools, equipment)
  • Removed navigation arrow (Classic Era restricts UnitPosition/GetPlayerFacing in open world)
  • Removed Find Fish tracking system (Weather-Beaten Journal not available in Classic Era)
  • Pool recording uses player map position directly (no facing offset)
  • Minimap pins use normalized coordinate fallback
  • Route navigation uses world map lines and manual waypoint skip only
  • Interface set to 11503+ for Classic Era compatibility
  • Separate SavedVariables (FishingKitClassicDB/FishingKitClassicCharDB) to avoid collisions
  • All frame names prefixed with FishingKitClassic to prevent global conflicts