@leftoff/cli 0.9.7 → 0.9.8-beta.10
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 +39 -0
- package/bin/leftoff.js +414 -379
- package/docs/SECURITY.md +10 -0
- package/docs/peer-protocol.md +2 -0
- package/mod/.claude-plugin/plugin.json +1 -1
- package/mod/hooks/core.js +14 -4
- package/mod/hooks/register.js +1 -1
- package/package.json +1 -1
- package/ui/app.css +425 -1
- package/ui/app.js +952 -40
- package/ui/index.html +18 -6
- package/ui/live-status.js +97 -0
- package/ui/live-view.js +374 -0
- package/ui/live-wake.js +96 -0
- package/ui/nav.js +88 -0
- package/ui/navhide.js +35 -0
- package/ui/needs.js +33 -2
- package/ui/pull.js +31 -0
- package/ui/push.js +140 -0
- package/ui/relay-client.js +70 -5
- package/ui/restore-gate.js +26 -2
- package/ui/sw.js +66 -6
- package/ui/tabs.js +216 -0
- package/ui/tips.js +117 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,45 @@
|
|
|
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
|
+
## Unreleased
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **Live link (beta, opt-in)**: start a session with `leftoff live` to send it messages from the board or your phone, see Claude's answers, and answer its permission prompts there. A Live badge marks those sessions.
|
|
9
|
+
- **Outside events**: CI or a webhook can post into a live session with this Mac's key (`leftoff live key`), signed through your leftoff.dev board.
|
|
10
|
+
- **Restore from your phone or another Mac**: it asks that Mac first, and nothing opens until someone there confirms.
|
|
11
|
+
- **Sidebar**: the sections move to a narrow rail on the left, with a count on Needs you. On phones they sit in a bar at the bottom, the rest under More.
|
|
12
|
+
- **Tabs**: sessions open in tabs next to the board. A click opens one italic preview tab that the next click replaces; it stays once you send a Live message, type there, or double-click it. On a phone, an Open row on the board and a swipe between open sessions. The layout follows the window's width, so iPad, Split View and folding keep your tabs.
|
|
13
|
+
- **Quick look**: hover Needs you (or long-press it on a phone) to see the five longest waits and Allow or Deny a permission prompt right there.
|
|
14
|
+
- **Pull to refresh** on phones: pull down from the top of any page to read it again.
|
|
15
|
+
- **Always allow here** on permission prompts, like Claude Code's own "don't ask again". It adds the exact rule (say `Bash(rm /tmp/x)`) to the project's `.claude/settings.local.json`; the ⓘ beside it shows which rule and where. Quick look calls it **Always**.
|
|
16
|
+
|
|
17
|
+
- **A session from another Mac loads from that Mac.** On your leftoff.dev board, opening a session that lives on another Mac gets its Live chat, timeline, files and Find lists straight from that Mac, so nothing comes up empty. Find lists works from any Mac now, and when that Mac is offline the page says so plainly.
|
|
18
|
+
- **Resume a Live session as Live.** Resume and Copy resume on a session you started with `leftoff live` now run `leftoff live -- --resume <id>`, so it reconnects to Live. Anything after `--` goes to Claude Code as is.
|
|
19
|
+
- **The Live badge pulses while Claude is working** on a turn, and stays still when the session is idle (no motion with Reduce Motion on).
|
|
20
|
+
- **Notifications on your phone.** Add the board to your iPhone's Home Screen (iOS 16.4+), tap **Turn on notifications** under More, and you get a notification when Claude needs your OK or a Live reply lands. The Mac running the session sends it, encrypted end to end. Any browser with Push works the same.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
- On phones the top row and the bottom bar slide away while you scroll down and come back when you scroll up, like Safari. They stay put while you type.
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
- Live chat on your phone catches up when you come back to it, and keeps checking while Claude is working, so a reply never hides behind a **Working** bubble until you pull to refresh. If it can't reach your Mac for a while, the bubble says **Reconnecting…** instead of counting.
|
|
27
|
+
- Opening a session from a card shows right away: the card responds to the tap and the page opens at once while its details load, which is also faster now.
|
|
28
|
+
- `leftoff upgrade` asks npm for fresh package info, so a version published minutes ago installs instead of failing with "No matching version".
|
|
29
|
+
- Live chat: a message no longer stays on **Working** after Claude has answered. It settles when the turn ends, including a second message sent while Claude was busy ("Answered with the reply above"), and stuck ones clear when you update.
|
|
30
|
+
- Live chat: a message sent while an older one was stuck now gets its own reply instead of sitting on **Starting**, and each message shows the time it was sent instead of a frozen "just now".
|
|
31
|
+
- Live chat: **Jump to latest ↓** now shows whenever you've scrolled up, not only when something new arrives, and the chat stays at the bottom while Claude's reply grows.
|
|
32
|
+
- Your leftoff.dev board no longer sits on a blank page while it waits for your Mac. It shows "Connecting to your Mac…" right away and never waits more than about 10 seconds.
|
|
33
|
+
- It no longer says your Macs are asleep when they just dropped off or aren't answering. It says "Reconnecting…" or "isn't answering", tries your other Mac, and opens the board by itself on iPhone too.
|
|
34
|
+
- Leftoff notices a dead relay connection and reconnects. Its log says why the relay closed it, and `leftoff status` shows the relay.
|
|
35
|
+
- `leftoff upgrade --beta` on a git or curl install now stops and gives the command that works (`npm i -g @leftoff/cli@beta --force`), instead of saying "Up to date" or updating from main.
|
|
36
|
+
- Live link: a live session gets a name right away (its first prompt, then Claude Code's /rename), shows one Live pill, and never sits under "empty" or reads "dormant". Cards get a **Chat** button.
|
|
37
|
+
- Live link: after Send your message shows Sent ✓ or Received ✓✓, and Claude's side shows what it's doing (Working · 45s, the command it's running), then its answer with the tools folded into "Ran 3 commands". Claude's answer is the one from the session, formatting included, and long answers scroll instead of being cut off.
|
|
38
|
+
- Live link: the chat survives a restart or a refresh, and shows the session's earlier turns too, including what you typed in the terminal ("You · terminal"). The last 20 show, with **Show earlier** for more. A message caught by a restart says "No reply recorded" instead of spinning forever.
|
|
39
|
+
- Live link: the thread opens at the bottom and stays there (it no longer jumps back to the top), with **Jump to latest** when you've scrolled up. It says when a tool ran without asking, and who sent a message ("You · from laptop").
|
|
40
|
+
- Live link: a session you only talk to from the board now takes its first message as its title and counts its turns. They used to stay at "repo · branch, 0 turns" because board messages don't fire Claude Code's prompt hook. Leftoff now reads them from the session's transcript, so cards already stuck that way are fixed when Leftoff starts. A long message no longer leaves a `<channel …>` tag as the title, the repo chip hides while it would just repeat the title, and long titles wrap after a "/" instead of mid-word.
|
|
41
|
+
- A session's page has tidier buttons: one line each, the same height, with short labels (Timeline, Copy resume, Checkpoint ▾). Go is left out when it can't run, and on a narrow window or a phone the buttons move under a long title instead of squeezing it. Card buttons no longer wrap either.
|
|
42
|
+
- `leftoff live "a prompt"` keeps the prompt as a prompt. It also says that Claude Code's "no MCP server configured" line is harmless.
|
|
43
|
+
|
|
5
44
|
## [0.9.7] - 2026-10-14
|
|
6
45
|
|
|
7
46
|
### Added
|