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
83 lines
2.3 KiB
Markdown
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.
|