Modal Open/Close Events Date: 2026-01-28 SUMMARY Added global Rsx events for modal open and close. This allows any part of your application to react to modal lifecycle without direct modal access. Useful for pausing background processes, analytics, keyboard shortcuts, etc. AFFECTED FILES /rsx/lib/modal/modal.js /rsx/lib/modal/CLAUDE.md (documentation only) CHANGES REQUIRED File: /rsx/lib/modal/modal.js ------------------------------------------------------------------------- In the _process_queue() method, add the modal_open trigger after setting this._current. Find this code: // Create modal instance const modal_instance = await this._create_modal(); this._current = modal_instance; // Determine if we should animate based on: Change it to: // Create modal instance const modal_instance = await this._create_modal(); this._current = modal_instance; // Trigger modal open event Rsx.trigger('modal_open', { modal: modal_instance, options }); // Determine if we should animate based on: ------------------------------------------------------------------------- In the same _process_queue() method, add the modal_close trigger before resolving the promise. Find this code: // Record close timestamp BEFORE resolving (ensures it's set before next modal can start) this._last_close_timestamp = Date.now(); // Resolve the promise with the result resolve(result); Change it to: // Record close timestamp BEFORE resolving (ensures it's set before next modal can start) this._last_close_timestamp = Date.now(); // Trigger modal close event before resolving Rsx.trigger('modal_close', { modal: modal_instance, result }); // Resolve the promise with the result resolve(result); USAGE // Listen for modal open Rsx.on('modal_open', (data) => { console.log('Modal opened:', data.modal, data.options); }); // Listen for modal close Rsx.on('modal_close', (data) => { console.log('Modal closed:', data.modal, data.result); }); VERIFICATION 1. Open any modal in your application 2. Check browser console for 'modal_open' event (if you added a listener) 3. Close the modal 4. Check browser console for 'modal_close' event