fix(os,termio): FreeBSD support, dev-profile resource precedence, docs

Final fix pass per the stopping criterion (docs/rewrite/PLAN.md),
resolving the remaining RV18 build/behaviour items (final-Z21.md):
- termio errno access uses the per-target libc accessor (__error on
  FreeBSD/DragonFly/Apple, __errno on OpenBSD/NetBSD/Android) instead of
  __errno_location everywhere, unblocking non-Linux BSD builds.
- FreeBSD resource discovery follows Zig (site-terminfo, local/share).
- Zig's Debug-only resource precedence (and the dev workspace-resources
  fallback) key off a ghostty_debug_build cfg set from PROFILE=="debug"
  instead of debug_assertions, so release builds with assertions honor
  GHOSTTY_RESOURCES_DIR first like Zig ReleaseSafe.
- KNOWN_DIFFERENCES.md lists the remaining P3 differences deliberately
  left unfixed (theme-preview editing details, a cleanup timeout edge
  case) and what cannot be verified on this machine.
- DEVIANT_FIXES.md registers the PTY-hangup output drain (35), the
  canvas BGRA conversion (36) and the dev resources fallback.

Test Plan:
- cargo test --workspace --no-fail-fast (exit 0)
- cargo check --target x86_64-unknown-freebsd -p ghostty-os
This commit is contained in:
ddidderr committed 2026-10-12 16:53:27 +02:00
1 parent c126ae873d
commit 4fa55855e8
6 files changed
+83 -7

No files matched your search

+7
View File
@@ -0,0 +1,7 @@
# Z21 final fix pass
- RV18 #1: removed the reachable `debug_assert!(!b)` in `Terminal::print_grapheme` (Zig ReleaseFast ignores it). The panic hunt (`difftest_fuzz panics`, new Rust-only mode, debug build, ~60k cases) then found a second input-reachable defect: Devanagari conjunct at the right margin on the bottom row (margin wrap scrolls) returned `InvalidCoordinate` and left a grapheme flag without data, so the formatter panicked later. Fixed by moving the grapheme from the cell that holds it. 0 panics afterwards; Zig differential 3000 cases, 0 divergences.
- RV18 #2-#4: errno accessor per target, FreeBSD resources conventions, `ghostty_debug_build` cfg (new `crates/ghostty-os/build.rs`).
- FreeBSD check: `cargo check --target x86_64-unknown-freebsd -p ghostty-os` passes (with FREETYPE_NO_PKG_CONFIG=1); `-p ghostty-termio` is blocked by dear-imgui-sys (no FreeBSD bindings) via ghostty-inspector; the `errno_now` cfg block was compiled alone against libc for FreeBSD and Linux.
- Docs: DEVIANT_FIXES.md entry 10 rewritten, entries 35 (PTY hangup drain, 6629fb0) and 36 (canvas BGRA, d89691b), dev resources fallback row (967e3a1); new KNOWN_DIFFERENCES.md.
- Side effect: the in-workspace resources fallback is now dev-profile only.