Phase 1 of NIGIG_PDF_FEATURE_PARITY_PLAN.md. Findings verified by running
them, written up in REVIEWS/PDF_PARITY_PHASE1_STATUS.md.
Three of the five exit criteria are met: the workspace is green on the new
rev (pdf 606 passing), both pins are already at 5efe6e24c, and the upstream
baseline is documented - libs/pdf_parse is 4,575 lines with no save/write
path at all, against nigig-pdf's 25,845 lines with writing, encryption,
signatures, structure tree and transparency. nigig-pdf supersedes both
libs/pdf_parse and widgets/src/pdf_view.rs; nothing in either is a
capability we lack.
The remaining two criteria need fork work this repo cannot do.
WHY THE UI SUITE CANNOT PASS YET
The six #[ignore] markers were removed from pdf-makepad/tests/ui.rs and the
docs now claim the suite runs without a Studio hub. The markers went but the
tests did not start passing - TEST_TARGET=pdf-ui was simply red. Three
layers, each found by fixing the one in front of it:
1. studio/hub/src/build_manager.rs:398 spawns the build with `sh -lc`. The
-l makes it a LOGIN shell, which discards the inherited PATH and rebuilds
it from /etc/profile, where ~/.cargo/bin does not appear. cargo is not
found and the child exits 127 in 0.4s. This breaks any rustup-based CI,
not just this sandbox. `sh -c`, or resolving cargo through the CARGO env
var, would fix it.
2. Past that the build runs (88s) and the failure becomes 101.
libs/makepad_test sets MAKEPAD=headless for the child, but
platform/src/os/linux/windowing_backend.rs only knows X11 and Wayland -
there is no headless backend and the env var is not consulted. The app
selects X11, finds no display, and segfaults (139). This is the real
Phase 1 fork task: "terminal/standalone mode" needs a backend, not just
an env var the harness sets.
3. Under xvfb-run the app starts properly and OpenGL initialises, so the
binary is fine - but the hub spawns its child outside that display.
The markers are restored, with a reason pointing at the status document.
A red suite everyone knows to disregard stops reporting the next real
regression, which is strictly worse than an explicit skip.
Also fixes a latent build break this exposed: the fork's app_main! macro
expands to #[cfg(native_activity)], a cfg this crate never declares, which
is a hard error under -D warnings. Declared as expected-but-unset via
[lints.rust] check-cfg rather than silencing unexpected_cfgs wholesale,
which would also hide our own typos.
One genuine improvement on this rev: pdf-makepad now builds in release
inside the workspace. That was previously blocked by a Makepad os::linux
feature-unification bug.
TEST_TARGET=pdf 606 passing, TEST_TARGET=pdf-ui 651 passing + 6 ignored.