fix: Windows core build, embedded init, byte-exact paths, version info

Closes the remaining core/lib/termio/GTK rows (final-Z2.md):
- ghostty-core compiles for Windows (Unix-only exec fields and file
  modes gated); checked with cargo check --target x86_64-pc-windows-gnu.
- Embedded init: ensure_locale, SIGPIPE ignored in ghostty_init for
  C/Swift hosts, Apple crash tags; the argv passed to ghostty_init feeds
  ghostty_config_load_cli_args; ghostty_config_load_file accepts
  non-UTF-8 paths.
- OSC 7 pwd, embedded surface cwd/command/env/initial input,
  ghostty_surface_text and GTK file drops keep raw bytes.
- XTVERSION, TERM_PROGRAM_VERSION, the About dialog and crash metadata
  use ghostty_build_info instead of hardcoded versions.

Test Plan:
- cargo test --workspace (3327 passed)
- cargo clippy --workspace --all-targets -- -D warnings
This commit is contained in:
ddidderr committed 2026-10-12 08:14:02 +02:00
1 parent 8519f1ba1b
commit ebefad5031
30 files changed
+863 -80

No files matched your search

+18
View File
@@ -114,6 +114,24 @@ fn pwd_osc7() {
assert_eq!(h.surface.pwd().as_deref(), Some("/tmp/a b"));
}
#[test]
fn pwd_osc7_keeps_non_utf8_bytes() {
let h = harness!(Harness::recorder(
r"\033]7;file://localhost/tmp/a%%FFb\033\\",
&[]
));
let pwd = h.wait_action("pwd", |a| match a {
Action::Pwd(p) if !p.pwd.is_empty() => Some(p.pwd.clone()),
_ => None,
});
assert_eq!(
ghostty_os::osbytes::config_str_to_bytes(&pwd),
b"/tmp/a\xffb"
);
assert_eq!(h.surface.pwd_bytes().as_deref(), Some(&b"/tmp/a\xffb"[..]));
assert_eq!(h.surface.pwd().as_deref(), Some(pwd.as_str()));
}
#[test]
fn bell_rings_once_per_burst() {
let h = harness!(Harness::recorder(r"\007", &[]));