promotional bannermobile promotional banner

Copy That

A Simple Copy Chat AddOn

File Details

2.0.0

  • R
  • Jun 17, 2026
  • 13.84 KB
  • 296
  • 12.0.7+3
  • Classic + 3

File Name

CopyThat-2.0.0-Release.zip

Supported Versions

  • 12.0.7
  • 5.5.4
  • 2.5.5
  • 1.15.8

Changelog

All notable changes to CopyThat are documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[2.0.0] - 2026-06-16

Added

  • Complete ground-up rewrite on a lightweight NexEnhance / CharInspectPlus-style engine: shared namespace, module registry, central event dispatcher, and profile-based saved variables.
  • Modules/ChatCopy.lua — self-contained chat copy module with live setting callbacks (OnSettingChanged) so options apply without /reload.
  • Multi-flavor support — single package loads on Midnight retail, The War Within, Cataclysm Classic, and Classic Era (TOC Interface lines for each client).
  • Blizzard Settings panel with a CharInspectPlus-style layout:
    • Landing page (logo, version, tagline, slash-command quick reference, live module stats).
    • General subcategory for all configuration.
  • Core/Widgets.lua + Core/Widgets.xml for wrapped description text on the General page.
  • Mandatory localization via Core/Locales/enUS.lua (no raw UI literals).
  • Automatic saved-variable migration from the legacy flat Dashi-era CopyThatDB layout (isEnabled, iconAlpha, iconPosition) into the new chatCopy module table.
  • Cursor rules for addon conventions and Midnight / 12.0.7 API guidance.

Changed

  • Removed the Dashi dependency entirely; events, database, and settings now use native Blizzard APIs and an in-house core.
  • Settings UI no longer uses Dashi widgets — options are registered through Settings.RegisterVerticalLayoutCategory and subcategories.
  • /copythat and /ct now open the General settings page directly.
  • Copy button is parented to UIParent again (anchored to the active chat frame), matching the original 1.x behaviour and keeping the icon visible across chat tab changes.
  • Restored the custom Media/CopyButton.tga icon (replacing the temporary stock guild-note texture used during the rewrite).
  • Bumped TOC Interface to 120007 (Patch 12.0.7 / Midnight: Revelations) alongside supported classic interface versions.
  • Version bumped to 2.0.0 to reflect the architectural break from 1.x.

Fixed

  • Copy button not appearing on first load until toggling enable or icon position — caused by OnEnable running during ADDON_LOADED on /reload before chat frames were ready; module enable is now deferred one tick via C_Timer.After(0) on PLAYER_LOGIN.
  • C_Timer.After callback error (bad argument #2) — Enable was referenced before its local declaration; function order corrected.
  • OnEnable treating enable = nil as disabled after migration — now uses IsEnabled() consistently (nil defaults to on).
  • Install() retry loop — button creation waits until the active chat frame exists, then explicitly shows the button.
  • Retail vs classic scroll area: MinimalScrollBar + ScrollUtil on retail, UIPanelScrollFrameTemplate fallback on classic clients.

Removed

  • Libs/Dashi/ embed and all Dashi-driven config (Config/Settings.lua, Config/About.lua, monolithic CopyThat.lua).
  • Separate About settings sub-page — overview content moved to the landing page.