Files
wehub-resource-sync 9e8f1bbeed
Dashboard / frontend (push) Failing after 0s
Dashboard / api (push) Failing after 0s
Lint PowerShell / powershell-lint (ubuntu-latest) (push) Failing after 1s
Python Lint / Lint Python with Ruff (push) Failing after 1s
ShellCheck / Lint shell scripts (push) Failing after 1s
Matrix Smoke / linux-smoke (push) Failing after 1s
Matrix Smoke / distro: cachyos (push) Failing after 15s
Matrix Smoke / distro: linux-mint-21.3 (push) Failing after 15s
Matrix Smoke / distro: debian-12 (push) Failing after 5m21s
Matrix Smoke / distro: fedora-41 (push) Failing after 4m56s
Matrix Smoke / distro: ubuntu-24.04 (push) Failing after 2m13s
Matrix Smoke / distro: rocky-9 (push) Failing after 10m39s
Matrix Smoke / distro: manjaro (push) Failing after 12m11s
Matrix Smoke / distro: opensuse-tw (push) Failing after 11m53s
Matrix Smoke / distro: archlinux (push) Failing after 20m3s
Matrix Smoke / distro: ubuntu-22.04 (push) Failing after 13m49s
Validate .env Schema / tier-1-env-validation (push) Successful in 52s
Validate .env Schema / tier-2-env-validation (push) Successful in 44s
Validate .env Schema / tier-3-env-validation (push) Successful in 52s
Validate .env Schema / tier-4-env-validation (push) Successful in 51s
Validate Extensions Catalog / Check catalog is up-to-date (push) Failing after 9m47s
Secret Scan / Scan for secrets (push) Failing after 21m4s
Validate Docker Compose / Validate Docker Compose files (push) Has been cancelled
Python Type Check / Type check with mypy (push) Has been cancelled
Validate .env Schema / tier-0-env-validation (push) Has been cancelled
Test Linux / integration-smoke (push) Has been cancelled
Lint PowerShell / powershell-lint (windows-latest) (push) Has been cancelled
Matrix Smoke / macos-smoke (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:31:33 +08:00

83 lines
2.3 KiB
Markdown

# GUI Progress Protocol Integration Guide
## Overview
The Tauri installer GUI communicates with the existing bash installer via a
simple line protocol. When the environment variable `ODS_INSTALLER_GUI=1` is
set, each phase emits structured progress lines that the GUI parses to update
the progress bar.
## Setup
1. Copy `progress-protocol.sh` to `ods/installers/lib/progress.sh`
2. Add `source "${LIB_DIR}/progress.sh"` to `install-core.sh` (after the other
lib sources)
3. Add one `ods_progress` call at the start of each phase:
## Phase Integration
Add these lines at the **top** of each phase file (after the header comment):
```bash
# 01-preflight.sh
ods_progress 5 "preflight" "Running preflight checks"
# 02-detection.sh
ods_progress 12 "detection" "Detecting GPU hardware"
# 03-features.sh
ods_progress 18 "features" "Selecting features"
# 04-requirements.sh
ods_progress 25 "requirements" "Installing system dependencies"
# 05-docker.sh
ods_progress 30 "docker" "Setting up Docker"
# 06-directories.sh
ods_progress 38 "directories" "Preparing installation directory"
# 07-devtools.sh
ods_progress 42 "devtools" "Installing development tools"
# 08-images.sh
ods_progress 48 "images" "Downloading container images"
# Also add inside the image pull loop:
# ods_progress $((48 + pull_index * 3)) "images" "Pulling ${image_name}"
# 09-offline.sh
ods_progress 65 "offline" "Configuring offline mode"
# 10-amd-tuning.sh
ods_progress 70 "amd-tuning" "Tuning AMD GPU settings"
# 11-services.sh
ods_progress 75 "services" "Starting services"
# 12-health.sh
ods_progress 85 "health" "Checking service health"
# 13-summary.sh
ods_progress 98 "summary" "Finishing up"
```
## Protocol Format
```
ODS_PROGRESS:<percent>:<phase_id>:<human_message>
```
- `percent`: 0-100 integer
- `phase_id`: kebab-case identifier matching the phase filename
- `human_message`: display text for the GUI
## Notes
- The `ods_progress` function is a no-op when `ODS_INSTALLER_GUI` is unset,
so it has zero impact on terminal installs.
- The Tauri installer sets `ODS_INSTALLER_GUI=1` via the process environment
before spawning `install.sh`.
- The GUI also has fallback heuristic parsing that looks for keywords like
"pulling", "starting services", "health check" etc. in stdout, so even
without these lines the progress bar will roughly work.