# Progress fix — 11 September 2026

The reported hang was a long extraction with no visible progress. The running
0.2.0 launcher had a live `tar` process using about 95% CPU and a growing
staging directory. It was extracting the adjacent `h2pc_data.bin` after the
user selected `h2pc_setup_2.1.exe`. The archive is a compressed 7-Zip payload.

That user-started installation subsequently completed. Its log confirmed Wine
configuration and successful WMADMOD.DLL registration; `installed.json` was
created and both the existing and updated launcher CLI reported `installed`.
The running launcher and its installation were not replaced during diagnosis.
This is setup validation, not a new gameplay or audio playback test.

## Changes

- Show archive validation, live unpacked size, and extraction elapsed time.
- Show download bytes and elapsed time during dependency downloads.
- Display setup activity in the main panel, including an overall elapsed timer.
- Log timestamped status, subprocess arguments, exit status, duration, and timeouts.
- Keep progress logging separate from captured archive listings, and use append
  handles so parent progress messages do not overwrite subprocess output.
- Allow up to one hour for large archive extraction rather than the generic
  fifteen-minute subprocess limit. Extraction still has a bounded timeout.

## Verification

41 checks passed, including optional integration tests against the real audio
package and the actual `h2pc_setup_2.1.exe` selection. The isolated real import
used the production importer and finished in 3 minutes 10 seconds, with updates
roughly every two seconds and 4.88 GB unpacked at the end. Game validation passed
and the bundled DirectX package was present. The temporary test installation
was removed by the test harness.

The progress screen was rendered and visually inspected at the minimum content
size (860 × 660). The app compiled for arm64 and x86_64, and its property list
and ad-hoc signature validated. The updated app recognizes the user's completed
installation without requiring reimport. The app remains not notarized.

To repeat the integration checks, run `scripts/test.sh` with
`HALO_TEST_GAME_SOURCE` pointing to the original setup EXE and
`HALO_TEST_AUDIO_PACKAGE` pointing to the supported downloaded MPSetup.exe.
These optional checks do not launch Wine or the game.
