@leftoff/cli 0.9.17 → 0.9.18-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -1
- package/bin/leftoff.js +522 -478
- package/mod/.claude-plugin/plugin.json +1 -1
- package/mod/hooks/register.js +1 -1
- package/package.json +1 -1
- package/ui/app.css +6 -0
- package/ui/app.js +52 -12
- package/ui/ask.js +1 -0
- package/ui/live-view.js +3 -3
- package/ui/semdiff.js +2 -2
- package/ui/start.js +87 -12
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
What changed in Leftoff (called Checkpoints until 0.4.5), newest first. The board's **What's new** page and `leftoff changelog` both read this file.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Unreleased
|
|
6
|
+
|
|
7
|
+
- **Continue in terminal / Continue headless.** An idle session can switch how it runs and keep its conversation: a headless one continues in a terminal of Leftoff's (`claude --resume` / `codex resume`, same session), and one in Leftoff's terminal continues headless. The old process ends before the new one starts, so the session never runs twice; one that's mid-turn or waiting on you is refused, and if the new side can't start, it goes back where it was.
|
|
8
|
+
|
|
9
|
+
- **Terminal sessions keep running.** A session in the board terminal or your terminal app now survives closing that window or tab, closing the board, and restarting or updating Leftoff: each terminal runs in a small detached host of its own, and Leftoff finds it again when it starts. With nothing showing it, it reads “◌ running · detached”; Go brings back the terminal app window attached to it (or shows it in the board), Open in Terminal attaches a window to the same session, and `leftoff attach <id>` works even while the daemon is stopped, including a session started just before the restart. Only Stop or Exit ends it. (After updating, Leftoff rewrites its login service once so a restart leaves these running.)
|
|
10
|
+
|
|
11
|
+
- **Headless Codex.** Codex can run with no terminal: pick Codex and Headless in New session (or `leftoff start --codex --headless "…"`) and talk to it in Live from the board or your phone. Its answers stream in, its command and edit approvals wait in Needs you, Stop interrupts it, a message sent while it works is Queued (Cancel or Send now), and the next message after a Stop or a restart picks the same Codex session back up. Permissions become Codex's sandbox and approval policy, never the bypass.
|
|
12
|
+
|
|
13
|
+
- **Pick where a session runs.** New session asks the agent (Claude Code or Codex) and the mode: **Headless** (talk to it in Live, from any device), **Board terminal** (a terminal Leftoff keeps, in the board and on your phone) or **My terminal app** (that same terminal, opened in Ghostty, iTerm or Terminal through `leftoff attach`). It's remembered per Mac and per agent, and starts the way Start did before until you pick. From a terminal: `leftoff start [--codex] [--headless | --term | --app]`.
|
|
14
|
+
|
|
15
|
+
- **Start with Codex.** New session asks Claude Code or Codex when this Mac has both, remembers the pick on this Mac, and picks Codex by itself when Claude Code isn't installed. Codex runs in the board's own terminal in the folder you chose (a new worktree, Permissions and the first message carry over; a phone sees it too), and its session opens as soon as Codex writes it, linked to that start by folder and time. From a terminal: `leftoff start --codex "first message"` (or `--agent codex`) runs Codex right there. Resume on a Codex session still runs `codex resume`.
|
|
16
|
+
|
|
17
|
+
- **Codex stands in when Claude can't.** Walk me through it has a Codex choice: `codex exec`, read-only, with no network, in the session's folder, on your own Codex login. A Codex session's walkthrough uses it when you haven't picked a model (before, it was a fresh Claude). When Claude fails because it's signed out or hit a subscription or usage limit, the walkthrough falls back to Codex, then to your summarizer. The header says "Written by Codex (Claude unavailable: usage limit reached)", and Claude is skipped for the next 10 minutes. Ask falls back the same way. On a Codex session started from the board, Ask about this change puts the question in Codex's own box.
|
|
18
|
+
|
|
19
|
+
- **Exact Needs you for Codex started from the board.** Codex doesn't save approval prompts to its session file, so for other Codex sessions Leftoff still guesses after 8 seconds. Codex started from the board is asked, for that run only, to post its own notifications in the terminal Leftoff owns. "Approval requested: …" and "Codex wants to edit …" now show on the card the moment Codex asks. Your Codex config is untouched.
|
|
20
|
+
|
|
21
|
+
- **Go finds the Codex sessions Leftoff started.** A Codex session started from the board brings up its terminal on the board, on any device. One started with `leftoff start --codex` is focused in the terminal app you typed it in, like a Claude Code session, and so is one resumed in the board's terminal. Codex started elsewhere still says Leftoff can't tell where it is.
|
|
6
22
|
|
|
7
23
|
- **Point the walkthrough's question at exact lines.** Click a line number in a walkthrough's code to pick it; shift-click or drag for a range, and Cmd/Ctrl-click to add lines from another file or step (on a phone, tap one number, then another). The picks show as chips over the ask box, and the question goes into the chat with each ref and its exact lines.
|
|
8
24
|
|