diff --git a/bridged/src/main/java/dev/ltms/bridged/worker/WorkerService.java b/bridged/src/main/java/dev/ltms/bridged/worker/WorkerService.java index 6535a4f..2003523 100644 --- a/bridged/src/main/java/dev/ltms/bridged/worker/WorkerService.java +++ b/bridged/src/main/java/dev/ltms/bridged/worker/WorkerService.java @@ -134,9 +134,14 @@ public final class WorkerService { : spawnAsPane(cfg, workerEnv, argv, cwd); } - /** CB-112 cwd resolution: spawn arg → profile config → the primary's cwd → the daemon's cwd. */ + /** + * CB-112 cwd resolution: spawn arg → profile config → the primary's cwd → the daemon's cwd. + * Never returns {@code null}/blank: {@code "."} (the daemon's own working directory) is the + * guaranteed last resort so a pathological environment with an unset {@code user.dir} still + * honours the "never assume {@code $HOME}" contract rather than letting herdr default the pane. + */ private static String resolveCwd(String requestedCwd, BridgedConfig.Worker cfg, String callerCwd) { - return firstNonBlank(requestedCwd, cfg.cwd(), callerCwd, System.getProperty("user.dir")); + return firstNonBlank(requestedCwd, cfg.cwd(), callerCwd, System.getProperty("user.dir"), "."); } private static String firstNonBlank(String... values) {