tag 547a029c93b3a42a06dc21df19226730c0e17d4c v3.1.1
Author:	Vebjørn Baustad <vBaustad@users.noreply.github.com>
Date:	Wed Aug 19 22:06:34 2026 +0200

v3.1.1 - Closing the window in combat

The X now closes the window mid-fight. Once Mythic+ or Teleports has
been opened the window counts as protected and the client refuses to
hide it, so the close used to wait for the fight to end; a secure
handler on the X is allowed to do it now.

A window with no secure page open no longer waits either. /yh and the
minimap still close at the end of the fight, since a snippet only runs
off a real click.

commit ddbce936d0d6bf73ffdffd1b5621834e9d92ad83
Author: Vebjørn Baustad <vBaustad@users.noreply.github.com>
Date:   Wed Aug 19 22:06:34 2026 +0200

    Let the X close the window in combat
    
    Once the Mythic+ or Teleports page has been mounted the window holds
    SecureActionButtonTemplate tiles, and a frame holding a protected frame
    is protected itself, so Hide is refused for the rest of the session and
    the close had to wait for the fight to end.
    
    The X now carries an invisible SecureHandlerClickTemplate button holding
    a frame ref to the window, whose snippet hides it -- allowed in combat,
    the same way a state driver hides an action bar. Built when a secure
    page is first mounted rather than at window build: a secure handler is
    itself protected, and building one in unconditionally would protect the
    window for people who never open either page and take their combat
    dragging away to fix a problem they do not have.
    
    Close() also stops deferring on the assumption that the window is
    protected and asks whether it is. Script-driven closes still defer,
    because a snippet needs a real click and clicking a protected button
    from code is blocked in turn; their notice now points at the X. Escape
    is left alone deliberately -- see the note in Core/ShellFrame.lua.
    
    The stub learned to store attributes and frame refs, without which a
    wired-up handler and one that never got its snippet look the same. New
    loadcheck 'combat close' covers both halves; mutation-tested by dropping
    the securePages condition and by removing the snippet, and it fails on
    each.
    
    Not verified in the client: open Teleports, pull something, click the X.
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

