Keep the stable socket in an opaque detached coordinator while server processes own detached worker discovery and lifecycle. Remove the public drain RPC in favor of server replacement through coordinator routing.
Coordinate create and fork operations by cwd and session ID so only the first caller can publish a destination.
Split destination-reservation conformance from active-source snapshot coordination.
Extract shared fork snapshot planning from the memory repository and use it to atomically publish JSONL branch and tree forks.
Split fork conformance into behavior and coordination cases so JSONL runs its currently supported behavior.
TuiAltScreen.copySelectionToClipboard() wrote a bare OSC 52 sequence and
flashed "Copied!" unconditionally. Terminals that ignore OSC 52 clipboard
writes (macOS Terminal.app, VTE terminals, tmux without OSC 52 passthrough)
left the system clipboard untouched while the toast reported success.
Add an injectable copySelection option to TuiAltScreenOptions (an async
handler returning whether the copy succeeded) and use it when provided,
falling back to the existing OSC 52 write otherwise. The coding agent now
injects its native clipboard implementation (clipboard addon + pbcopy /
wl-copy / xclip / xsel), so selection copy reaches the real clipboard and
the toast only fires on verified success, with "Copy failed" otherwise.
Closes#7761
Co-authored-by: 富永 誠 <makoto@credify.one>
APP_NAME is derived from piConfig.name so a rebranded distribution shows
its own name, and roughly 90 call sites already use it. Twelve
user-facing strings hardcoded "pi" instead, so those messages named the
upstream binary regardless of piConfig.name:
- the trust project folder prompt
- "Restart pi for this to take effect." after a saved trust decision
- the "Start without extensions" hint on an extension load failure
- the invalid session file error
- the executable location in the self-update-unavailable notice
- the three auth command usage strings and the unknown auth command
error, which are printed next to `${APP_NAME} --help` in main.ts and
so contradicted it
- "is configured outside pi." in the provider setup dialog
- the uncaughtException line
Output is unchanged for pi itself: piConfig has no name, so APP_NAME
falls back to "pi".