code wiki / (root) / nx_games_page.nx

nx_games_page.nx

buildroot/runtime/nx_games_page.nx

30974 B356 linesdepth 3pulls 4 transitivereach 0 importersview sourcekind tooltopic games
docsdependenciesstructsconstsfunctions

about

nx_games_page.nx -- EMIT the live nishifamily.com/games portal page. Classic abstract/board/puzzle games built from scratch (rules are not copyrightable -> clean original implementations, no ROMs rehosted, no third-party code). Client behaviour and the shared emit helpers live in nx_games_js.nx; this organ authors document structure, tokens and copy. license_tier: ORIGINAL genealogy_id: nishi_games_portal lineage_id: nx_games_page_v2 v2 (2026-08-10) closes three MEASURED defects. Full evidence ledger and method: knowledge/papers/games_portal_measured_2026-08-10.md (compiled by nx_paper_forge, 59 cited rows) 1. REFLOW FAILURE. v1's boards were fixed pixel: #c4 was repeat(7,46px) with 5px gaps and 8px padding, an intrinsic minimum of 7*46+6*5+2*8 = 368px against a 320px bar, so it overflowed every phone. v1's @media block resized only #ttt, so republishing v1 would NOT have fixed it. MEASURED on v1's own artifact by nx_uiq_responsive: worst_grid_min_px=368 reflow_fails=1 RED. v2 uses intrinsic tracks (repeat(N,1fr) + aspect-ratio), so a board's minimum width follows its container and cannot be re-fixed by a hardcoded pixel sum. BAR: W3C WCAG 2.1 SC 1.4.10 Reflow (AA) -- an external standard, not a local taste. 2. TWO PORTALS, ONE NAME. /games and /world/games both shipped the same title and h1 with no canonical claim. proxy_routes.conf states the estate's own law -- "subdomain = capability, root path = visitor content" -- and games are visitor content, so /games is canonical. v2 is the single index and lists the /world/* engines as what they are: engine demos. 3. HONEST STATES. v1 advertised chess, go and reversi as "coming soon" with no engine behind any, while 21 real nx_wasm_* game organs were listed nowhere. v2 says Playable here / Engine demo / Not started, and never prints a date it has not earned.

dependencies 2 imports · 0 importers

nx_games_js.nx nx_brand_tokens.nx nx_games_page.nx

imports: nx_games_js.nxnx_brand_tokens.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main gm_cat bt_emit_root_buf bt_app sys_mmap nxa_die sys_write sys_exit nxa_lock_take nxa_lock_addr sys_write ↻ nxa_lock_give nxa_lock_addr ↻ nxa_report_overrun sys_write ↻ nxa_dump_printable sys_write ↻ nxa_dump_sizes sys_write ↻ bt_slice_eq bt_ident_safe bt_value_safe bt_find bt_app_n bt_emit_dark_root_buf bt_app ↻ sys_mmap ↻ bt_slice_eq ↻ bt_ident_safe ↻ bt_value_safe ↻ bt_app_n ↻ gm_catn sys_mmap ↻

structs

none

consts

42const GM_OUT: *u8 = "web_assets/games.html"
47const GM_WORLD_OUT: *u8 = "web_assets/world_games.html"
51const GM_BANK: *u8 = "web_assets/sudoku_bank.js"
52const GM_CAP: i64 = 262144
53const GM_BCAP: i64 = 131072
57const GM_TOKCAP: i64 = 8192
63const GM_BP_MD: i64 = 860
64const GM_BP_SM: i64 = 640

functions

83func gm_brand() -> *u8
87func main() -> i64