@leftoff/cli 0.9.8-beta.11 → 0.9.8-beta.12

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 CHANGED
@@ -4,6 +4,8 @@ What changed in Leftoff (called Checkpoints until 0.4.5), newest first. The boar
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ - Live: your messages render markdown (lists, code, bold), same as Claude's.
8
+
7
9
  ### Added
8
10
  - **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
11
  - **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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "leftoff",
3
- "version": "0.9.8-beta.11",
3
+ "version": "0.9.8-beta.12",
4
4
  "description": "Leftoff (formerly Checkpoints): WTF was I working on? Tracks every Claude Code session on this machine, writes a 3-line checkpoint when one goes quiet, and adds /cp (checkpoint now), /cp-name and a /leftoff pane. Talks to the local Leftoff daemon on 127.0.0.1:7429 and falls back to writing markdown in ~/checkpoints.",
5
5
  "author": {
6
6
  "name": "Joel"
@@ -28,7 +28,7 @@ const END_TIMEOUT_MS = 1000
28
28
  const MODEL_TIMEOUT_MS = 20000
29
29
 
30
30
  // Module state. $.state is not used: the pane redraws with $.ui.invalidate.
31
- const MOD_VERSION = '0.9.8-beta.11' // keep in step with .claude-plugin/plugin.json
31
+ const MOD_VERSION = '0.9.8-beta.12' // keep in step with .claude-plugin/plugin.json
32
32
 
33
33
  const st = {
34
34
  internal: false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leftoff/cli",
3
- "version": "0.9.8-beta.11",
3
+ "version": "0.9.8-beta.12",
4
4
  "description": "Leftoff: WTF was I working on? Tracks every Claude Code session, writes a 3-line checkpoint when one goes quiet, and gives you a daily digest and a board, on your Mac and (optionally) your phone.",
5
5
  "keywords": [
6
6
  "claude",
package/ui/app.css CHANGED
@@ -2076,6 +2076,7 @@ mark.tx, .co-snip mark, .tx-snip mark, .tx-msg-text mark { background: var(--tx-
2076
2076
  .lv-md pre code { background: none; border: 0; padding: 0; }
2077
2077
  .lv-md a { color: var(--accent); text-decoration: underline; }
2078
2078
  .lv-md blockquote { margin: 6px 0; padding-left: 10px; border-left: 3px solid var(--line); color: var(--muted); }
2079
+ .lv-you .lv-md code, .lv-you .lv-md pre { background: color-mix(in srgb, var(--accent) 8%, var(--card)); border-color: color-mix(in srgb, var(--accent) 25%, var(--line)); }
2079
2080
  .lv-note { margin-top: 6px; font-size: 12px; color: var(--muted); }
2080
2081
  /* the status line under a message: Sent → Received → Working → Replied, with a spinner and the time */
2081
2082
  .lv-status { margin-top: 6px; font-size: 12px; color: var(--muted); }
package/ui/live-view.js CHANGED
@@ -208,8 +208,9 @@ export function entryHtml(m, { esc, ago, md, now = Date.now(), status = null, at
208
208
  if (m.from === 'claude') body = '<div class="lv-text lv-md">' + (md ? md(m.text || '') : esc(m.text || '')) + '</div>'
209
209
  else if (m.from === 'you') {
210
210
  const a = messageAttachments(m)
211
- body = (a.text || !a.attachments.length ? '<div class="lv-text">' + esc(a.text) + '</div>' : '') + (a.attachments.length && attHtml ? attHtml(a.attachments, m) : '')
212
- } else body = '<div class="lv-text">' + esc(m.text || '') + '</div>'
211
+ body = (a.text || !a.attachments.length ? '<div class="lv-text lv-md">' + (md ? md(a.text) : esc(a.text)) + '</div>' : '') + (a.attachments.length && attHtml ? attHtml(a.attachments, m) : '')
212
+ } else if (m.from === 'terminal') body = '<div class="lv-text lv-md">' + (md ? md(m.text || '') : esc(m.text || '')) + '</div>'
213
+ else body = '<div class="lv-text">' + esc(m.text || '') + '</div>'
213
214
  let foot = ''
214
215
  if (m.from === 'claude') {
215
216
  // what Claude did for this turn sits with Claude's answer: still working, the tools it ran, the note