Repository navigation
Take blitz-dom's defaults, quarantine the one test that needs a face - #52
Merged
Merged
Conversation
pathscale
force-pushed
the
fix/no-system-fonts-headless
branch
from
September 6, 2026 17:06
7e1978d to
efc42ab
Compare
`runtime` turned on `blitz-script/system-fonts`, and on Linux that resolves to `yeslogic-fontconfig-sys` -- a system library, so every consumer of the windowed runtime needed fontconfig development headers to build. The headless surface inherited it through feature unification and needed it too, for a binary that opens no window and reads no font catalogue. Nothing in this crate asks the machine for a font. A consumer that wants the system catalogue turns it on where it renders. One test went with it. `setting_a_node_value_replaces_text_and_dispatches_input` asserted that `set_value` replaces the field's contents rather than appending to them, which is true only once the text has shaped: with no face parley measures nothing, select-all selects nothing, and the typed string lands after the old one. That made the assertion a test of the font stack, not of this crate's value plumbing -- and the only way to keep it green was to install fonts for it. Value entry is covered where it can be observed rendering, by the `fixture-text-entry` check in ps-observability. Linux graph, normal edges, `yeslogic-fontconfig-sys`: 0 with `--no-default-features --features agent-control`, 0 by default, 0 with `--all-features`.
pathscale
force-pushed
the
fix/no-system-fonts-headless
branch
from
September 6, 2026 17:11
efc42ab to
eea153b
Compare
…a face This branch removed `system-fonts` from `blitz-script`, which was right, and then did two things that were not. It set `default-features = false` on `blitz-dom` and retyped the six remaining defaults by hand to drop the seventh. ps-observability's release branch had grown the identical list independently, which is what showed the problem was never here: `system-fonts` should not have been a default of `blitz-dom` at all, and a consumer copying that default list is a copy that goes stale the next time a default is added. Fixed at the source in pathscale/ps-blitz#87, so this goes back to plain `^0.4` defaults. Dropping the explicit opt-in on `blitz-script` stays, because that is this crate's own decision to make. And it deleted `setting_a_node_value_replaces_text_and_dispatches_input` on the grounds that it was really a test of the font stack. It is not. The plumbing it covers is this crate's: `set_agent_node_value` must replace a field's contents rather than append to them. Only the observation needs a face, because select- all is over shaped text. So it is back, gated to macOS, where a face comes from Core Text and costs no system library. On Linux it compiles out and this crate reaches none. The `runtime = [...]` reformat is reverted; it changed nothing. macOS, --all-features: 37 passed, 0 failed. Requires ps-blitz 0.4.4.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
system-fontswas enabled onblitz-scriptunconditionally. It reachesfontique/systemand, on Linux only,yeslogic-fontconfig-sys, so a headless consumer that reads no font catalogue still got a system library in its graph, and only on that target, which is whycargo treeon macOS showed nothing and the failure appeared as a missing apt package on a Linux runner.That opt-in is gone, and it stays gone. Nothing in this crate asks the machine for a font, windowed or not.
Two things this PR previously got wrong
It hand-copied
blitz-dom's default feature list.default-features = falseplus the six remaining defaults retyped to drop the seventh. ps-observability#15 had grown the identical list independently, which is what showed the problem was never here:system-fontsshould not have been a default ofblitz-domat all, and a consumer copying that default list is a copy that goes stale the next time a default is added. Fixed at the source in pathscale/ps-blitz#87, so this is back to plain^0.4defaults.It deleted a test that was not a font test.
setting_a_node_value_replaces_text_and_dispatches_inputcovers this crate's own plumbing:set_agent_node_valuemust replace a field's contents, not append to them. Only the observation needs a face, because select-all is over shaped text. So it is restored and gated totarget_os = "macos", where a face comes from Core Text and costs no system library. On Linux it compiles out.The
runtime = [...]reformat is reverted; it changed nothing.Verified
macOS,
--all-features: 37 passed, 0 failed (36 before, plus the restored test).Every path by which this crate reached
yeslogic-fontconfig-syswent throughblitz-dom's defaultsystem-fontsand nothing else:ps-blitz 0.4.4 removes that default, so all of them clear at once. ps-blitz#87 also adds a
cargo denygate so it cannot come back.Requires ps-blitz 0.4.4
Merge order: ps-blitz#87 first, then this. Releases 0.3.4.