Files
tty7/crates
l0ng-ai 5f77c40f96 feat(agents): install agent hooks onto the machine that runs the agent
Hook installation was written for one machine — this one — and a remote
workspace runs its agents on the far side of the connection, where none of
that is true: a different `$HOME`, a different filesystem separator, and a
`tty7` binary at a path this client published rather than the one it is
running from.

`HookTarget` is that machine, borrowed for the length of one background
task: `local` resolves our own home and binary, `remote` takes the home a
handshake reported and the `tty7-server-<version>` this client installed
there. Every path the installer builds now goes through it, via `Host::join`
rather than `PathBuf::join` — a Windows client installing onto a Linux box
was writing `/home/me\.claude`. The three things that are only true locally
(our own environment variables, atomic writes, running the `codex` CLI) are
gated on `is_local` instead of assumed. Settings grows a machine picker so
the page states which one it is acting on.

Also in this commit, three unrelated UI fixes:

- The settings sidebar's search placeholder sat 6px right of every nav
  label under it — a `small` (14px) magnifier where the rows use 16, a 4px
  gap where they use 8, and an `Input` that adds `input_px` (12px at the
  default size) whether or not it draws a box. All three corrected, so the
  placeholder starts on the rows' 32px text column.

- The "'X' is still running — reopen it from the workspace menu" toast is
  gone, along with the `workspace_detach_hint_seen` flag that existed only
  to show it once. Detaching a workspace is what ⌘W has always done here
  and the Window menu already lists what came off screen; a one-time
  lecture on top of that is noise. Old configs carrying the key still load
  — `Config` doesn't deny unknown fields.
2026-07-28 17:08:21 +08:00
..