The launcher reported "no client available" because its update source was
pinned to a GitHub Releases manifest in a PRIVATE repo — nothing anonymous
could ever be fetched from it. Switch the feed to the PUBLIC Gitea repo so a
friend needs no account, and add the two commands that publish it.
- ReleaseManifestClient.ProductionManifestUri now points at
git.snakedesert.se/erik/acdream raw on the `dist` branch. No update
machinery changed: the existing strict reader already accepts any HTTPS
manifest, so this is a URL swap plus a build script.
- tools/publish-bin.ps1 publishes the payloads into /bin and writes
bin/manifest.json (schema v1, SHA-256 + size per artifact):
client-win-x64.zip AcDream.App + acdream-headless
launcher-win-x64.zip acdream-launcher + co-deployed acdream-bake
Stamps InformationalVersion ONLY — never -p:Version, which also rewrites
project-reference versions inside the committed packages.<rid>.lock.json
files and churned every one of them with a throwaway build stamp.
- tools/publish-dist.ps1 pushes /bin to the Gitea-only `dist` branch from a
throwaway worktree, leaving the developer's checkout, index, and HEAD
untouched. It refuses a GitHub remote outright.
Why `dist` and not main: the launcher payload is ~103 MB because the launcher
and its co-deployed bake CLI are each self-contained single files (deliberate,
see AcDream.Launcher.csproj). GitHub hard-rejects files over 100 MB, and all
three refs currently track main, so payloads on main would break every GitHub
push. `dist` is a single-commit orphan branch that each publish REPLACES, so
superseded builds never accumulate. /bin stays gitignored repo-wide and is
force-added only on that branch.
Verified live: manifest and both payloads serve anonymously over HTTPS, and a
downloaded client payload matches its declared SHA-256 and size byte for byte.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| A8CellAudit | ||
| cdb | ||
| cdb-scripts | ||
| diag-logs | ||
| dump-keymap | ||
| ghidra_project | ||
| InspectCoatTex | ||
| jsonl | ||
| pdb-extract | ||
| PesChainAudit | ||
| ProjectileVfxAudit | ||
| RainMeshProbe | ||
| RetailTimeProbe | ||
| SetupInspect | ||
| ShaderCompiler | ||
| SkyObjectInspect | ||
| StarsProbe | ||
| TextureDump | ||
| WeatherEnumerator | ||
| WeatherSetupProbe | ||
| analyze_265_steep_slope_capture.py | ||
| analyze_269_slope_stop_capture.py | ||
| analyze_resolve_capture.py | ||
| audit-test-inventory.ps1 | ||
| CampaignLaProcessCorrelation.ps1 | ||
| capture-campaign-la-session-process.ps1 | ||
| compile-shaders.ps1 | ||
| connected-dense-town.route.txt | ||
| connected-r6-soak.route.txt | ||
| connected-world-lifecycle.route.txt | ||
| connected-world-reconnect.route.txt | ||
| decompile_acclient.py | ||
| decompile_full.py | ||
| DecompileTargets.java | ||
| ghidra_decompile.py | ||
| new-campaign-la-update-fixture.ps1 | ||
| publish-bin.ps1 | ||
| publish-dist.ps1 | ||
| README.md | ||
| run-blank-world-ab-probe.ps1 | ||
| run-blank-world-surface-probe.ps1 | ||
| run-campaign-la-preflight.ps1 | ||
| run-connected-loss-gate.ps1 | ||
| run-connected-r6-soak.ps1 | ||
| run-connected-world-lifecycle-gate.ps1 | ||
| run-offline-pixel-gate.ps1 | ||
| run-offline-vulkan-capture.ps1 | ||
| run-portal-churn-soak.ps1 | ||
| run-release-gate.ps1 | ||
| run-repeat-connected-gate.ps1 | ||
| test-campaign-la-gate-helpers.ps1 | ||
| test-campaign-la-script-safety.ps1 | ||
| test-campaign-la-session-status.ps1 | ||
| update-package-locks.ps1 | ||
| verify_un2_fmul.py | ||
Maintained .NET tools
Every .csproj under tools/ is part of AcDream.slnx. The complete Release
gate restores and builds these tools, so a missing personal checkout or an API
change cannot leave a tracked tool silently broken. They are diagnostic/manual
programs: the gate builds them but does not run data-dependent investigations.
| Tool | Purpose | Runtime prerequisite |
|---|---|---|
A8CellAudit |
Inspect landblock, EnvCell, portal, and collision topology. | Installed AC DAT files / the arguments documented by the program. |
dump-keymap |
Extract the retail master input maps and decoded actions. | Installed client_portal.dat. |
PesChainAudit |
Walk weather PES call chains and particle emitters. | Installed AC DAT files. |
ProjectileVfxAudit |
Audit projectile physics-script and particle-emitter VFX mappings. | Installed AC DAT files. |
RainMeshProbe |
Inspect rain surfaces, polygon sidedness, and generated mesh counts. | Installed AC DAT files. |
RetailTimeProbe |
Read retail time-of-day and sky state for comparison. | Windows, a running retail client, and process-read access. |
SetupInspect |
Dump Setup parts, placement poses, and animation frames. | Installed AC DAT files and a Setup ID. |
ShaderCompiler |
Compile the Vulkan GLSL shader set to committed SPIR-V. | Source and output directory arguments. |
SkyObjectInspect |
Inspect Dereth sky/day-group objects and texture data. | Installed AC DAT files. |
StarsProbe |
Audit sky-object geometry, UV ranges, and surfaces. | Installed AC DAT files. |
TextureDump |
Dump render-surface statistics and texture images. | Installed AC DAT files. |
WeatherEnumerator |
Enumerate weather sky objects and their bounds. | Installed AC DAT files. |
WeatherSetupProbe |
Inspect the parts and surfaces of weather Setups. | Installed AC DAT files. |
Build the complete maintained graph with:
dotnet restore AcDream.slnx --locked-mode --force-evaluate
dotnet build AcDream.slnx -c Release --no-restore
Use pwsh ./tools/run-release-gate.ps1 for the authoritative bounded gate.
Package versions and lock-file maintenance are documented in
docs/release-gate.md.