Fuloh QoL

Fuloh's QoL gathers a pack of small, useful features into one modular addon.

File Details

0.5.4

  • R
  • Apr 5, 2026
  • 1.27 MB
  • 23
  • 12.0.5+2
  • Retail

File Name

Fuloh_QoL-0.5.4.zip

Supported Versions

  • 12.0.5
  • 12.0.1
  • 12.0.0

lightweight tag 9e74215c84581da6aaf821a6d0676d8849e51c5e 0.5.4
Author:    FloMoit <kororo@free.fr>
Date:    Sun Apr 5 23:44:47 2026 +0200

commit 9e74215c84581da6aaf821a6d0676d8849e51c5e
Author: FloMoit <kororo@free.fr>
Date:   Sun Apr 5 23:44:47 2026 +0200

    fix: forward-declare HandlePing/HandlePong so OnChatMsgAddon can call them

    HandlePing and HandlePong were defined in the Setup Window section, which
    appears after OnChatMsgAddon in the file. In Lua 5.1, references inside a
    function are resolved at compile time: since the locals hadn't been declared
    yet when OnChatMsgAddon was compiled, Lua resolved them as globals (_G).
    Those globals are nil, causing a silent error on every KVPING/KVPONG event.

    Fix: add HandlePing and HandlePong to the existing forward-declaration line,
    and assign them with `= function` instead of `local function` so the upvalue
    captured by OnChatMsgAddon gets the correct function when it's called.

    Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

commit 31a15ad999e41a0d2d28b50b8c78ebd2c2cbae94
Author: FloMoit <kororo@free.fr>
Date:   Sun Apr 5 21:55:41 2026 +0200

    feat: add vote setup window with KVPING/KVPONG discovery

    Opens an intermediary setup window when /fuloh vote is used instead of
    starting immediately. Shows party keystones and addon-installed players
    gathered via KVPING/KVPONG before the initiator clicks Start Vote.

    - Constants: OPCODE_PING/PONG, SETUP_UI block, new localized strings
    - Comms: SendPing/SendPong, SendStart carries duration, ParseMessage
      handles KVPING/KVPONG with explicit pingID field (not sessionID)
    - UI: full setup frame (draggable, ESC-closable, timer spinner 10-120s);
      fix ShowVotingPopup timer to use sessionData.duration instead of
      hardcoded C.VOTE_DURATION
    - KeyVote: OpenSetupWindow, HandlePing/HandlePong, BuildSetupKeystoneList,
      OnSetupStart/OnSetupClose; StartVote accepts optional duration;
      HandleStart stores session.duration; testsetup sub-command added

    Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>