Skip to content

Commit 721fc89

Browse files
committed
docs(huxerui): record that wix belongs behind mcpp pack --format, not in the build
Section 4 already argues this descriptor should not declare `xim:wix` -- wix builds an MSI, and a consumer that merely imports huxerui has no use for it. That is right but incomplete: it treats the declaration as misplaced when the mechanism it belongs to simply did not exist yet. mcpp 2026.9.11.1 opened the `--format` value set. `mcpp pack` owns the mechanism and the universal formats; every other format lives in a package that declares `mcpp::provides_pack_format("<name>")` in its build program, unconditionally, and submits its action only when asked. Under that, `xim:wix` stops being a top-level `[xlings.workspace]` entry provisioned for every build of every consumer, and becomes a dependency of the feature that provides `msi` -- reached only by someone actually packing one. The timeline is the whole explanation: HuxerUI v0.3.0 released 2026-09-10 17:36 UTC mcpp 2026.9.11.1 released, --format 2026-09-10 20:34 UTC `provides_pack_format` appears zero times in v0.3.0's build.mcpp and rules.cppm. Not a road not taken -- a road that did not exist, by under three hours. Recorded rather than acted on: the v0.3.0 tag is immutable and upstream is out of scope here. What the descriptor CAN do is behave as though the move had already happened, which is what not declaring wix does -- so a future 0.3.1 needs no change on this side. Also notes that the two Windows problems are independent: with wix gone from the build entirely, runtime_pointer_interaction.cpp still does not compile against MSVC STL 14.51.
1 parent cfff769 commit 721fc89

1 file changed

Lines changed: 50 additions & 0 deletions

File tree

.agents/docs/2026-09-11-add-huxerui-plan.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,3 +290,53 @@ The practical rule: **a change to a xim package cannot be verified from this
290290
repo's CI unless `MCPP_VERSION` also moves.** Raising the pin to 2026.9.11.2
291291
evicts the cache, which is the only reason the windows leg can now see the
292292
fixed recipe.
293+
294+
## 12. Where `xim:wix` actually belongs — `mcpp pack --format`
295+
296+
This descriptor declares no `xim:wix`, and section 4 argues that from the
297+
consumer's side: wix builds an MSI, nothing else in the SDK touches it, and
298+
upstream's own manifest says an application wanting an installer declares it
299+
itself. That argument is right but incomplete, and the fuller one arrived three
300+
hours too late to be in v0.3.0.
301+
302+
**mcpp 2026.9.11.1 opened the `--format` value set.** `mcpp pack` owns the
303+
mechanism and the two universal formats (`tar`, `dir`); every other format lives
304+
in a package and the engine dispatches to it:
305+
306+
```cpp
307+
mcpp::provides_pack_format("msi"); // unconditional
308+
if (std::string_view(mcpp::pack_format()) != "msi") return 0; // conditional
309+
// … submit the wix action …
310+
```
311+
312+
*Declare unconditionally, submit conditionally* — the declaration is what lets
313+
`--format bogus` list what is available. `xim-pkgindex`'s `appimagetool` (#802)
314+
is the same shape from the tool side.
315+
316+
Under that mechanism `xim:wix` stops being a top-level `[xlings.workspace]`
317+
entry — which is provisioned for **every** build of every consumer — and becomes
318+
the dependency of the feature that provides the `msi` format, provisioned only
319+
when someone actually asks for an MSI. `mcpp test -p huxerui-module` would never
320+
touch it.
321+
322+
The timeline is the whole explanation:
323+
324+
| | |
325+
|---|---|
326+
| HuxerUI v0.3.0 released | 2026-09-10 17:36 UTC |
327+
| mcpp 2026.9.11.1 released (`--format` opens) | 2026-09-10 20:34 UTC |
328+
329+
`provides_pack_format` appears **zero** times in v0.3.0's `build.mcpp` and
330+
`rules.cppm`. Not a road not taken — a road that did not exist yet, by under
331+
three hours.
332+
333+
**Nothing to do here, and that is the point.** v0.3.0's tag is immutable, so the
334+
descriptor cannot reach this; what it can do is not make the problem worse, and
335+
not declaring wix is exactly that. When a 0.3.1 or 0.4.0 moves wix behind
336+
`provides_pack_format("msi")`, this descriptor needs no change — it already
337+
behaves as though that move had happened.
338+
339+
Note also that the two Windows problems are independent. Even with wix out of
340+
the build entirely, `runtime_pointer_interaction.cpp` still fails to compile
341+
against MSVC STL 14.51 (§11 and the `windows-2022` pin). Fixing the packaging
342+
axis would not have unblocked this leg.

0 commit comments

Comments
 (0)