Commit Graph

16 Commits

Author SHA1 Message Date
David Ibia 81e5c6be67 feat(owt): add all and cd commands for workspaces across repos
- owt all lists the workspaces of every repo with their branch and
  source checkout, from any directory
- owt cd jumps into a workspace by name, repo/name or an fzf picker
  that starts filtered to the current repo
- An owt function in .zshrc performs the cd, since a script cannot
  change its parent shell's directory
2026-10-06 23:02:29 +01:00
David Ibia e7264987f4 feat(bin): add pbcopy/pbpaste shims for headless clipboard over OSC 52
Headless servers have no DISPLAY or WAYLAND_DISPLAY, so xclip and xsel
cannot reach a clipboard even when installed. These shims use OSC 52 to
hand text to the terminal emulator on the other end of the SSH connection,
which puts it on the local machine's clipboard.

Inside tmux, pbcopy uses `tmux load-buffer -w -` so the text lands in the
tmux paste buffer and is forwarded outward (requires `set-clipboard on`).
Outside tmux it writes the escape sequence to /dev/tty directly. Both fall
back to xclip/wl-copy when a real display is present.

pbpaste reads the tmux buffer only; terminals refuse OSC 52 reads, since
that would let any remote program siphon the user's clipboard.
2026-10-05 19:47:14 +01:00
David Ibia be1bae96ca feat(omo): add omo-notify macOS notification hook 2026-10-03 16:37:09 +01:00
David Ibia 6e2350dc66 feat(owt): share the main checkout's omo memory with workspaces
omo keys project memory by folder path, so each workspace started with an
empty store. owt new and owt open now link the workspace's memory id to the
main checkout's store, and owt done and owt rm remove the link.
2026-10-03 15:13:26 +01:00
David Ibia b11d1adcc5 feat(owt): add Conductor-style git worktree workspaces
owt new creates a randomly named workspace per task under ~/worktrees/<repo>,
copies .env files, installs dependencies and opens omo in a tmux window with
the workspace's Linear conventions. owt done checks merge state (git or a
merged Gitea PR via tea) before removing the worktree, branches and window.
2026-10-03 14:53:46 +01:00
David Ibia 74a718efa8 fix(docker-nuke): give accurate recovery advice when the daemon does not return
The failure path advised --deep and a disk-space check regardless of cause.
On the first live run that was wrong on both counts: 101 GiB were free and
--deep was irrelevant. Docker Desktop had crashed on startup, and the actual
fix was launching it from the Dock.

Branch the advice on whether any Docker process survived the relaunch. No
survivors means the app did not stay up, which no programmatic relaunch can
work around; survivors mean it is up but not answering yet.
2026-07-20 16:51:16 +01:00
David Ibia 7831f0c799 fix(docker-nuke): make dump failure non-fatal and surface failed kills 2026-07-20 02:40:47 +01:00
David Ibia 1b07307860 feat(docker-nuke): wire up main, dry-run mode, and docs 2026-07-20 01:56:07 +01:00
David Ibia ecd414362a feat(docker-nuke): add restart, daemon polling, and triage summary 2026-07-20 01:41:26 +01:00
David Ibia 252a356426 feat(docker-nuke): add three-stage kill escalation 2026-07-20 01:06:49 +01:00
David Ibia a49eb5adef feat(docker-nuke): add pre-kill diagnostic dump with retention 2026-07-20 00:15:45 +01:00
David Ibia 49380dc87d feat(docker-nuke): add timeout-bounded daemon health check 2026-07-19 23:22:03 +01:00
David Ibia ca256661b8 feat(docker-nuke): add self-excluding Docker process discovery 2026-07-19 23:10:37 +01:00
David Ibia 4e1e09559b feat(docker-nuke): add run_timeout helper with pure-bash fallback 2026-07-19 22:01:45 +01:00
David Ibia 36caeafd03 feat(docker-nuke): add script scaffold, arg parsing, and test harness 2026-07-19 21:49:14 +01:00
David Ibia e34f495368 feat(bin): add new scripts for managing Claude profiles and sessions. 2025-11-09 14:09:30 +01:00