4.4 KiB
4.4 KiB
ForgeFlow 0.6.0 release audit
Scope
This audit covers the source release intended for publication to Jens/ForgeFlow and subsequent installation through ForgeFlow's built-in source updater.
Reviewed areas:
- local Git discovery, status, staging, commit, push, fetch and fast-forward;
- large Windows path selections and deleted/renamed files;
- stale Git lock diagnosis, conservative repair and automatic retry;
- divergence recovery with a safety branch;
- Gitea repository and Actions integration;
- SSH host identity, Unraid-to-Gitea preflight and exact-SHA deployment;
- Docker Compose identity normalization while preserving visible container names;
- DockerMan WebUI, icon and shell labels, XML fallback and cache refresh;
- interrupted/stale deployment reconciliation;
- renderer viewport behavior and guided troubleshooting;
- diagnostics redaction and support bundles;
- release publication and built-in source-update lifecycle.
Regression coverage
The automated suite contains 99 passing tests, including real temporary Git repositories and bare remotes. High-risk regressions covered directly include:
- staged and unstaged deletions;
- renamed files;
- a local commit followed by a failed push;
- 850 long selected paths transported through NUL-delimited stdin;
- stale
HEAD.lockremoval while excluding Git object/LFS storage; - backup-before-reset repair of a diverged branch;
- exact remote-SHA checks;
- background SSH deployment completion without a stuck operation;
- startup/manual reconciliation of live Unraid state;
- lowercase-safe Compose project/service/image identities with visible
Portfoliocasing; - DockerMan labels, built-in icon upload, XML fallback and cache invalidation;
- source-updater STARTED handshake, result acknowledgement, direct Electron restart and rollback state.
Product behavior added for the reported incidents
- Git mutations are serialized per repository.
- A lock failure triggers a safe diagnosis and one automatic repair/retry when no active Git process is detected.
- Git Tools provides personalized scan, lock repair, origin repair, fast-forward, push and safety-branch divergence recovery actions.
- Successful SSH deployments become terminal before the secondary server refresh, preventing a live container from leaving ForgeFlow in deployment mode.
- ForgeFlow refreshes configured server truth after startup and through the combined refresh action.
- A healthy live SHA equal to local/Gitea is not offered for deployment again.
- Running containers missing DockerMan metadata can be repaired individually or in one batch from Deployments.
- Built-in/uploaded icons are placed in persistent DockerMan storage, referenced through a
file:///label, written into a user template and copied into known icon caches. - WebUI uses the Unraid label placeholders based on the configured host port and path.
- Update publication creates and publishes
package-lock.json; the updater usesnpm ciwhen it is present. - Update success is persisted before restart, and restart invokes Electron directly rather than relying on a detached npm process.
Static and packaging checks
- every JavaScript/CJS/MJS source file passes
node --check; - required source, branding, documentation, updater and deployment files are present;
- direct dependency versions are pinned;
- renderer privileged actions remain behind the preload/IPC boundary;
- the PowerShell update helper starts with
param(, has no UTF-8 BOM and contains lifecycle state before shutdown/restart; - release archives exclude
.git,node_modules,dist, update downloads and generated ZIPs; - the generated source manifest records SHA-256 and size for every distributed source file.
Remaining live acceptance step
The automated environment cannot execute Windows PowerShell 5.1 or connect to the user's private Gitea/Unraid services. The final live acceptance is therefore deliberately the requested workflow:
- publish the release from an extracted Downloads folder;
- leave the installed older source at
C:\Projects\ForgeFlowuntouched; - open that older ForgeFlow;
- use Settings → ForgeFlow updates → Check now → Download update → Apply & restart;
- confirm the restarted application reports version 0.6.0 and displays the persisted success result.
A failed handoff must keep the old app open. A failed validation must restore the previous source. A successful installation remains installed even when only automatic restart fails.