6.2 KiB
6.2 KiB
Context
TrueGrowth desktop already has a local API boundary, task center, Model Center, ComfyUI integration, FunClip-related readiness, social publishing bridge, and local persistence split between Electron userData and .truegrowth-runtime. Commercial delivery needs a first-run experience that treats these as one runtime estate instead of feature-by-feature setup fragments.
Goals
- Provide one product-level runtime readiness summary in Model Center.
- Make first-run setup safe for Windows and macOS customers.
- Download Hugging Face model assets with realtime progress and resumable status.
- Prefer bundled or per-user managed dependencies over asking users to install developer tools manually.
- Keep heavy runtimes stopped until the user starts or initializes the feature, avoiding machine-wide freezes.
- Give manual guidance when automation cannot legally or safely complete the step.
Non-Goals
- Silent administrator-level system modification.
- Guaranteed GPU support on every machine.
- Bundling every model in the desktop installer.
- Replacing ComfyUI, FunClip, social-auto-upload, or Agent-Reach internals.
- Exposing raw install logs, stack traces, command lines, or foreign-brand setup pages to customers.
Runtime Directory Strategy
- The packaged application directory is treated as read-only.
- Customer runtime state defaults to a per-user TrueGrowth directory:
- macOS: Electron
app.getPath('userData')or~/Library/Application Support/TrueGrowth - Windows:
%APPDATA%/TrueGrowth
- macOS: Electron
- Runtime installs live under this directory, for example:
runtimes/ComfyUIruntimes/pythonruntimes/ffmpegmodels/comfyuicache/huggingfacelogs/runtime
- Development builds may keep using project-local paths, but the setup summary must explicitly report whether it is using development paths or customer runtime paths.
Dependency Resolution Strategy
Each dependency is represented as a readiness resource with:
id,label,category,platformsstatus:ready,missing,needs_action,installing,downloading,failed,external,unsupportedsource:bundled,managed,system,configured,download,manual,developmentcanAutoInstall,requiresAdmin,requiresRestart,requiresNetwork,licenseRequiredversion,path,sizeBytes,requiredBytes,availableBytesprogresswith bytes, percent, speed, ETA, stage, and task id when applicableactionssuch asinstall,download,openGuide,chooseMirror,configurePath,retry,clearPartial
Safe automation:
- Install or update dependencies only inside the managed runtime directory.
- Install Python packages into a managed venv or embedded Python when present.
- Clone or update ComfyUI only inside the managed ComfyUI directory.
- Download model files into ComfyUI model directories or managed model cache.
- Use bundled ffmpeg when present; otherwise guide the user or install managed ffmpeg only if the package is available in the app bundle or approved download source.
Manual guidance:
- If Git or Python is absent and no bundled/managed installer is available, show OS-specific install steps.
- If Windows requires Visual C++ runtime, long path support, or GPU driver/CUDA setup, report it as a guided prerequisite.
- If macOS blocks unsigned binaries or quarantine attributes, show customer-safe recovery steps and only remove quarantine for app-managed runtime files when allowed.
Mirror and Network Strategy
- Provide a runtime source selector with options such as:
- Hugging Face official
- configured mirror endpoint
- custom endpoint
- Store the selected endpoint in local runtime settings.
- Apply the endpoint to Hugging Face CLI/API downloads through
HF_ENDPOINT. - Disable Xet by default when it improves compatibility for large downloads, while keeping the setting visible in diagnostics.
- Preflight network access to GitHub, Hugging Face endpoint, and selected mirror with customer-facing status.
Hugging Face Download Progress
- Single-file downloads should stream response bytes and patch the runtime task with:
- downloaded bytes
- total bytes when known
- percent
- speed
- ETA
- target path
- Snapshot downloads should prefer a controllable download helper over opaque child-process output when possible. The helper should emit structured progress events for files and total bytes.
- If the Hugging Face CLI is used as a fallback, parse progress output when possible; otherwise report stage progress and cache status.
- Incomplete downloads must be resumable when the underlying cache supports it, and the UI must show whether cache cleanup or retry is recommended.
Model Center UX
- Add a first-run environment panel in Model Center before model cards.
- Group readiness by:
- System prerequisites
- Local image / ComfyUI
- AI clipping / FunClip / ASR
- Digital human / voice
- Publishing / browser automation
- Network and mirrors
- Every group shows readiness, progress, next action, and whether other features can still be used.
- Primary actions use TrueGrowth orange and feed into task center.
- The lower-left global task status remains the global progress entry; no fixed topbar is introduced.
Safety and Resource Controls
- Do not auto-start heavy services at app boot.
- Before starting ComfyUI/FunClip/ASR, check memory/disk/GPU basics and show expected resource use.
- Allow one runtime initialization task per dependency group at a time.
- Cancellation should stop downloads where possible and leave resumable cache state.
- Logs stay available in diagnostics but are summarized before being shown to users.
Risks
- Cross-platform dependency installation is fragile. Mitigation: prefer managed/bundled dependencies and degrade to exact guidance.
- Hugging Face snapshot progress is harder than single-file progress. Mitigation: implement a structured helper for official downloads, with CLI parsing as fallback.
- Large local models can exhaust customer disks. Mitigation: preflight every model, show target path and required space, and keep partial-cache cleanup explicit.
- Heavy AI runtimes can freeze weak machines. Mitigation: no automatic heavy service start on boot, readiness/resource checks before launch, and clear unsupported states.