e56a1fd8f6
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 16s
The redirect only matched task=update.install, which Joomla 4/5/6 do not use. Their 'Install the update' flow server-side-redirects to the updating page (view=update), which then extracts the downloaded package from JavaScript (AJAX to com_joomlaupdate/extract.php). So the view=update page LOAD is the last server-side moment before any files change. Intercept that page load (in onAfterRoute, before com_joomlaupdate renders it), redirect to the full-screen backup with a returnurl back to view=update&is_backed_up=1, then the browser returns and the JS extraction runs. update.finalise is deliberately NOT intercepted -- by then the files are already extracted, too late for a pre-update backup. Legacy task=update.install (Joomla 3) still handled. Claude-Session: https://claude.ai/code/session_01WbGBN9VyRK61zczYWcCQ2i