mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-29 20:37:24 -06:00
* fix(apps): a non-Unicode argument is a usage error, not a startup panic (#1108) Both binaries read `std::env::args()`, which panics on an argument that is not valid Unicode: `photocraft-cli info $'caf\xe9.png'` died in `library/std/src/env.rs` before printing anything, and a file manager handing the desktop app a Latin-1 file name would do the same before any window opened. CLI: `photocraft_cli::run_os` takes the raw `OsString`s, and an argument that does not convert is a usage error naming its position and a lossy rendering (exit 2, with the usage text), like any other bad argument. `main` calls it; `run(&[String])` is unchanged for in-process callers. Desktop: the loop matches on `OsStr::to_str`. Flag values that are paths (`--control-token-file`, `--automation-*-root`) become `PathBuf`s directly and so keep working with any name; a non-Unicode `--control-token` is a control-argument error like a bad `--control` port; non-Unicode file arguments are collected and reported in a "Could not open" notice once the app is up, so the launch still succeeds. Test: `a_non_unicode_argument_is_a_usage_error_not_a_panic` (unix) runs the binary with a `caf\xe9.png` argument for `info` and `convert` and asserts exit 2, the message, and no panic output. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * photocraft-cli: put run()'s doc line back above run, not run_os Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: wstock <1394687+wstock@users.noreply.github.com> Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> Co-authored-by: Brandon Thomas <echelon@gmail.com>