feat: Implement gibMacOS workflow, USB writers, plist modifier, UI/UX enhancements

This commit culminates a major refactoring to an installer-based workflow using
`gibMacOS` and includes significant enhancements to platform-specific USB
writers, `config.plist` modification, and UI/UX feedback.

**1. Core Workflow Change (Installer-Based via `gibMacOS`):**
    - `main_app.py`: I re-architected this to use `corpnewt/gibMacOS.py` for downloading
      official macOS installer assets. Docker dependencies and related UI/logic
      have been removed. I introduced a new approach for downloads using `gibMacOS`.
    - The application flow is now: Download macOS Assets -> Create USB Installer.

**2. Platform-Specific USB Writer Modules (`usb_writer_*.py`):**
    - All writers (`linux`, `macos`, `windows`) were updated to accept `macos_download_path`.
    - **`usb_writer_linux.py`:**
        - Creates macOS installer USB using `sgdisk`, `mkfs.hfsplus`, `7z` (for
          BaseSystem HFS extraction), `dd` (for BaseSystem write).
        - Copies key installer assets (`BaseSystem.dmg`/`.chunklist`, `InstallInfo.plist`,
          `InstallAssistant.pkg`, `AppleDiagnostics.dmg`) to standard locations,
          including a basic `Install macOS [VersionName].app` structure.
        - Sets up OpenCore EFI from `EFI_template_installer`, with conditional
          `plist_modifier.py` enhancements.
        - **`rsync` progress:** This module was updated to parse `rsync --info=progress2`
          output and emit detailed progress, but I encountered issues integrating the display of this as a determinate progress bar in `main_app.py`.
          Raw rsync log lines with progress will still appear.
    - **`usb_writer_macos.py`:**
        - Similar installer creation logic using `diskutil`, `hdiutil`, `7z`, `dd`,
          `rsync`/`cp`, and `bless`.
    - **`usb_writer_windows.py`:**
        - Automates EFI setup (from template + `plist_modifier`) and BaseSystem HFS
          image extraction (`7z`).
        - Provides detailed guidance for manual `dd for Windows` step for BaseSystem
          and manual copying of other HFS+ installer content.

**3. `plist_modifier.py` Enhancements:**
    - Expanded hardware mappings (Alder Lake iGPUs - including headless logic,
      audio codecs prioritizing name detection, Ethernet kexts).
    - Refined NVIDIA GTX 970 `boot-args` logic (for OCLP prep: `amfi_get_out_of_my_way=0x1`;
      `nv_disable=1` conditional on iGPU; `nvda_drv=1` for High Sierra).
    - Creates `config.plist.backup` before modifications.

**4. `linux_hardware_info.py` Improvements:**
    - Added `get_audio_codecs()` for more accurate audio configuration.

**5. `EFI_template_installer`:**
    - `config-template.plist` updated with robust defaults for modern systems
      (Alder Lake friendly) and for `plist_modifier.py`.
    - Placeholder files for kexts, drivers, ACPI established.

**6. UI/UX Enhancements (`main_app.py`):**
    - Status bar now features a QTimer-driven text-based spinner during operations.
    - Determinate `QProgressBar` implemented for `gibMacOS` downloads by parsing its output.
    - Centralized UI state management (`_set_ui_busy`, `update_all_button_states`).
    - Improved lifecycle management and error/completion handling.

**7. Documentation (`README.md`):**
    - Completely rewritten for "Skyscope" branding and the new installer workflow.
    *   Details NVIDIA GPU strategy (guidance towards post-install OCLP).
    *   Comprehensive prerequisites (including `gibMacOS.py`, `7z`, platform tools,
        Debian `apfs-fuse` build info) and usage instructions.

**Stuck Point during Development:**
    - I persistently failed to update `main_app.py` to fully integrate the display of determinate `rsync` progress from
      `usb_writer_linux.py`. The `usb_writer_linux.py` module *does* emit the
      necessary progress data, but the `main_app.py` changes to consume it for the
      progress bar were blocked by repeated errors. This means `rsync` progress
      will appear in logs but not as a filling bar.

This represents a near-complete transition to the new installer-based
architecture with significant feature enhancements across the application.
This commit is contained in:
google-labs-jules[bot] 2025-06-13 09:52:34 +00:00
parent d46413019e
commit 4665531407

Diff Content Not Available