# The environment-variable surface, both directions. 2026-08-30. # # sylpheed-port swept documented -> parsed and found three live-but-undocumented # flags, noting that a capability documented only in an 11 000-line record is, to # anyone reading the interface, a capability that does not exist. This is the # mirror on my side: every env var the CODE reads, checked against the docs. # Like theirs it ENUMERATES, so it completes rather than samples. # # 41 environment variables read by crates/ # 19 documented # 22 NOT documented, splitting cleanly: # # 7 read only in examples/ -- per-example output filters and dump paths. # KF_SHOW, MAX_PAD, OUT_DIR_X, SUPPRESS_SUBSTR, SYLPH_RAW, # VOICE_CHUNK_DUMP, DUMP_XPR_DIR # Scratch. Reachable only by editing an example's command line. # # 15 read in src/ -- LIVE capabilities of the library and CLI: # mesh / 3D XCOLORSUB XDUMPHDR XDUMPVERT XMESHDBG XMIRROR XNODEDUMP # XNODEXFORM XONLYSUB XSPANHIDE XSPANONLY # texture XPR_FORCE_ENDIAN XPR_NO_BC_DWORD_SWAP XPR_NO_DETILE # XPR_NO_ENDIAN XPR_RES_INDEX # # ✅ FOR THE PORT: none of the 15 is in the UI path. Every env var ui_layout.rs # and the screen commands read is documented -- SYLPHEED_REST_RULE and # SYLPHEED_KF_TIME_LEGACY. The menu lane is clean in this direction. # # ⚠️ The five XPR_* are TEXTURE DECODE toggles and the port consumes textures. If # a sprite comparison ever disagrees, these are the knobs, and they are invisible # from the interface. # # 🔴 LIMIT, stated rather than glossed: I verified NONE of the 15 end to end. # `texture export` takes a loose file and the disc keeps its textures inside paks, # so the check cost more than the answer was worth in this iteration. That matters # because sylpheed-port found `--no-hold` PARSED, DOCUMENTED and INERT under an # interaction with `--time`: "parsed and reachable" is not "works". So the honest # claim is that 15 undocumented env vars are READ, not that 15 capabilities exist.