build: the exe is LlamaCasty.exe, and the publish script proves the artifact
Renames AssemblyName to LlamaCasty before the first Steam depot — Steamworks is explicit that renaming a live exe is painful, so this had to land first, not later. Four assembly-qualified pack URIs carried the old name, not three: MainWindow (window icon), OverlayHost (logo), RenameRecordingDialog and KeepBroadcastDialog. Pack URIs resolve by assembly name at runtime, so a stale one compiles, passes every test and then silently renders nothing the first time that view opens. AssemblyIdentityTests guards both halves — the assembly name, and no source XAML still naming the legacy assembly. Packaging/Package.appxmanifest and package-msix.sh carry the exe name too. scripts/publish.sh replaces the by-hand publish: single-file win-x64, ReadyToRun, ffmpeg beside the exe, and it refuses to finish if ffmpeg, LICENSE, PRIVACY.md or THIRD-PARTY-NOTICES.txt are missing, or if a test assembly leaked in. That last guard exists because the first publish was wrong in a way no test could see: PublishSingleFile + IncludeNativeLibrariesForSelfExtract bundled the libav*.dll family into the exe — a 9-file output with no ffmpeg folder and a 182 MB binary, so the locator would have found nothing at runtime. ExcludeFromSingleFile="true" on the content keeps the folder a folder. Diffing against a control publish without the single-file flags found it; guessing at item globs wasted two attempts first (recorded in MyMistakes.md). Measured: 127 MB exe + 129 MB ffmpeg = 257 MB depot. Tests: AssemblyIdentity, StorePackaging, BuildStamp, BundledFonts all pass; app builds with 0 warnings.
This commit is contained in:
@@ -7,22 +7,18 @@
|
||||
|
||||
## Next up
|
||||
|
||||
**The surge week (4 days, in this order).** Not every row below — this slice only, because it is
|
||||
what the first public release is waiting on:
|
||||
**The surge week (3 days, in this order).** Not every row below — this slice only, because it is
|
||||
what the first public release is waiting on. Day 1 (artifact shape) is **done**: the exe is
|
||||
`LlamaCasty.exe` and `scripts/publish.sh` stages the depot folder.
|
||||
|
||||
1. **Artifact shape** — `LlamaCasty.exe` rename (three pack URIs), `dotnet publish` profile with
|
||||
`steam_api64.dll` beside the exe. Ends with a build that starts standalone and falls back to the
|
||||
free profile.
|
||||
2. **OutputProfile gate** — ≤921,600 px / ≤30 fps for the stream **and** the recorder, greyed tier
|
||||
1. **OutputProfile gate** — ≤921,600 px / ≤30 fps for the stream **and** the recorder, greyed tier
|
||||
entries, plus the TASK 53 geometry tests that pin every tier.
|
||||
3. **Entitlement seam** — `IEntitlement` with the Steam DLC path and a fake for tests, Polar's
|
||||
customer-portal path for the monthly, `--activate` parsing, system messages.
|
||||
4. **Real-machine day** — licence UI skeleton, a Steam-less launch proving the free profile, a test
|
||||
broadcast.
|
||||
2. Then the **entitlement seam** (`IEntitlement`, Steam DLC path behind a fake, Polar path) and the
|
||||
licence UI.
|
||||
|
||||
Detail: [`commercial.md`](docs/ai/commercial.md) → Output profile / Entitlement;
|
||||
[`Distribution.md`](Distribution.md). Day 5, if the four go well: the visibility picker (a hard
|
||||
prerequisite for any *public* build).
|
||||
[`Distribution.md`](Distribution.md). After that: the visibility picker (a hard prerequisite for
|
||||
any *public* build).
|
||||
|
||||
**TASK 3·17 — the Text layer** stays the first product row after the surge. The `TextOverlay` source
|
||||
type exists as a placeholder and nothing else does: `AddSource` creates it 0×0, all four compositor
|
||||
@@ -80,9 +76,9 @@ Dog test.
|
||||
`UpdateBroadcast` in the same unit (it is the only code that can change a broadcast's privacy).
|
||||
- **Kill the dev multi-instance affordance** — `Helpers/InstanceProfile.cs` is already `#if DEBUG`;
|
||||
re-prove it on a Release build.
|
||||
- **Release engineering** — `scripts/publish.sh` (self-contained win-x64, no test artifacts),
|
||||
Debug-only `InternalsVisibleTo`, the `LlamaCasty.exe` assembly rename (three pack URIs, incl.
|
||||
`MainWindow.xaml:14`), full license texts beside `THIRD-PARTY-NOTICES.txt` (TASK 4 req 9).
|
||||
- **Release engineering** — `scripts/publish.sh` **done** (self-contained win-x64, `ffmpeg\`
|
||||
guarded, no test artifacts), `LlamaCasty.exe` assembly rename **done**, full license texts beside
|
||||
`THIRD-PARTY-NOTICES.txt` (TASK 4 req 9). Outstanding: Debug-only `InternalsVisibleTo`.
|
||||
- **Gold pass** (TASK 36): the screens/layers audit, native-Windows verification, and the
|
||||
branding-flash decision.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user