Symptom:
- error around
dlopen/ missingletui_ffi
Checks:
- run
bun run build-ffi - confirm release artifact exists under
letui-ffi/target/release - rerun demo:
bun run examples/<file>.ts
Symptom:
- cursor/raw mode feels wrong after crash
Checks:
- use one guarded
quit()path - avoid duplicate
app.quit()calls - prefer
Ctrl+Qfallback during debugging
Symptom:
onKeycallback never runs
Checks:
- key string must match raw terminal data exactly
- focused node may be consuming event first
- test with plain keys first (
q,r,+,-)
Symptom:
Inputvisible but no text updates
Checks:
- focus the input first (mouse click or
input.focus()) - ensure
onChange/onSubmithandlers do not throw - verify text updates via
input.props.text()or UI text node
Symptom:
- colors not applied, layout odd
Checks:
- use numeric colors (
0xRRGGBB), not"#RRGGBB" - check prop names against exported
StyleProps/BoxPropsinsrc/types.ts - use valid border styles only:
"square"or"rounded"
Checks:
- keep updates signal-driven; avoid rebuilding whole subtrees each tick
- keep node identity stable so runtime can reuse Rust tree state
- enable debug metrics:
run(root, { debug: true }) - inspect
dump/metrics.txtfor phase bottlenecks
Interpretation:
- high
serialize: too much JS-side tree churn or effect work - high
textSync: large text rewrites; prefer targetedsetTexton stable nodes - high
rust: layout/paint cost in native side - high
flush: terminal I/O bound; reduce changed surface area