@puddle-code/cli 0.0.33 → 0.0.35

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.
Files changed (30) hide show
  1. package/CHANGELOG.md +9 -4
  2. package/README.md +18 -10
  3. package/dist/index.js +1033 -461
  4. package/dist/public/assets/{Dashboard-D0B3Kact.js → Dashboard-CjcXc41s.js} +1 -1
  5. package/dist/public/assets/{EditorTabClose-DH-LS9Zv.js → EditorTabClose-CR8qjstC.js} +1 -1
  6. package/dist/public/assets/{LazyTerminal-SW0c7j8t.js → LazyTerminal-CSezaFiz.js} +2 -2
  7. package/dist/public/assets/{ModelRefcount-BO6Mp87O.js → ModelRefcount-ruz_Q9xr.js} +1 -1
  8. package/dist/public/assets/PaneEditorBody-66So4Ff7.js +322 -0
  9. package/dist/public/assets/SettingsDialog-Bye-gWnk.js +1 -0
  10. package/dist/public/assets/{Terminal-MrMvzcuc.js → Terminal-Cd5V3epm.js} +2 -2
  11. package/dist/public/assets/Workspace-DWKoGE_e.js +7 -0
  12. package/dist/public/assets/{buffer-store-5mtYW1Xq.js → buffer-store-C7PmP6Kk.js} +2 -2
  13. package/dist/public/assets/{context-menu-7ErbVngu.js → context-menu-CNjTT3SL.js} +1 -1
  14. package/dist/public/assets/{cssMode-DgxyyatT.js → cssMode-BszXvhfs.js} +1 -1
  15. package/dist/public/assets/{editor-context-CJ-O2xj0.js → editor-context-CFhFe8Rl.js} +1 -1
  16. package/dist/public/assets/{editor-sync-CCVhpCCj.js → editor-sync-W2W78_MY.js} +1 -1
  17. package/dist/public/assets/{hotkeys-BJ9IivRE.js → hotkeys-DJt0-uY0.js} +2 -2
  18. package/dist/public/assets/{htmlMode-CsnCJ5rN.js → htmlMode-BdSq1oJt.js} +1 -1
  19. package/dist/public/assets/index-oaI2xX3B.js +10 -0
  20. package/dist/public/assets/{jsonMode-Bm5_kMyH.js → jsonMode-BGITbv0h.js} +1 -1
  21. package/dist/public/assets/{session-seed-CXqY3vWw.js → session-seed-DyZA5Bb-.js} +1 -1
  22. package/dist/public/assets/ssh-mode-D1ZueIgo.js +1 -0
  23. package/dist/public/assets/{tsMode-D76dymM5.js → tsMode-B9a_Su_k.js} +1 -1
  24. package/dist/public/index.html +3 -3
  25. package/package.json +1 -1
  26. package/dist/public/assets/PaneEditorBody-_zHVXavR.js +0 -322
  27. package/dist/public/assets/SettingsDialog-DvUCRTKI.js +0 -1
  28. package/dist/public/assets/Workspace-CNchP0lE.js +0 -7
  29. package/dist/public/assets/index-D9bGlq8g.js +0 -10
  30. package/dist/public/assets/ssh-mode-nM399PS5.js +0 -1
package/CHANGELOG.md CHANGED
@@ -7,12 +7,17 @@ Past releases: see docs/changelogs/.
7
7
 
8
8
  # Changelog
9
9
 
10
- ## [0.0.33] — 2026-08-07
10
+ ## [0.0.35] — 2026-08-09
11
11
 
12
- ### Added
12
+ ### Changed
13
13
 
14
- - "App shortcuts in terminals" (a switch atop Settings → Hotkeys, per profile like the bindings it governs; protocol 14.2, default on): chords bound to puddle actions ⌃⇥/⌃⇧⇥ tab cycling, ⌘K, sidebar toggles now work while a terminal is focused, instead of being eaten by xterm and sent to the agent. Turn it off to hand those keys back to terminal apps; terminal-owned keys (⌃A, ⌃`) go to the terminal either way.
14
+ - Auto-resume ("Resume sessions" in Settings → Host) is now ON by default: a daemon restart brings interrupted sessions straight back. Config version 3 migrates an existing `autoResume: false` the old default that `loadConfig` wrote to every config.json to true exactly once; a false set after the migration is respected.
15
15
 
16
16
  ### Fixed
17
17
 
18
- - Auto-theming agents (e.g. Claude Code with `theme: auto`) no longer come up dark under a light puddle theme: they sample the terminal background at spawn, usually before any viewer has attached, so the browser-side answer to their OSC 10/11 colour query arrived for nobody. The daemon now answers those queries itself, from the colours the client reports over the WS on connect and on every theme switch (protocol 14.1, additive — against an older daemon the viewer-side answering remains). A running agent that already sampled keeps its choice until its next start/resume.
18
+ - The accounts UI's logged-in badge now updates the moment a login verifies. The daemon records the flag only after the agent's own auth check answers after the login dialog has closed so the badge sat stale until an unrelated refetch; it now broadcasts an `account` WS message on every change and the UI patches its cached lists live. Protocol **15.1** (additive).
19
+
20
+ ### Added
21
+
22
+ - Markdown/HTML tabs gain a third view mode, **linked** (chain icon): the tab chip's toggle now cycles source → preview → linked, the icon naming the current mode. A linked tab is a follow-along rendered preview — it retargets to the most recently active renderable tab (every linked pane moving together), scoped per project under project-based layout and profile-wide otherwise, and keeps rendering its last target until the next one. Protocol **15.0** (major: a 14.x daemon's strict `view` enum would reject any snapshot carrying a linked tab, so it must auto-upgrade rather than fail every workspace save).
23
+ - The desktop app's "Restart to update" reopens the windows it closed: the shell records every open window's target (local and SSH — targets only, never credentials) as the swap begins, and the relaunch brings each back, falling back to the host picker when none can be reopened. One-shot with a 15-minute TTL, so a failed swap's leftover cannot resurrect windows on a later launch.
package/README.md CHANGED
@@ -54,11 +54,21 @@ Daemon-only installs (no CLI) use the `install.sh` attached to each release —
54
54
  curl -fsSL https://github.com/PerceptronV/puddle-code/releases/latest/download/install.sh | sh
55
55
  ```
56
56
 
57
+ **Managing components:**
58
+
59
+ The CLI installs, upgrades, and removes all three components — daemon, desktop app, and itself — with optional versions and SSH targets:
60
+
61
+ ```sh
62
+ puddle upgrade # everything installed → the newest release
63
+ puddle install daemon@v0.0.32 user@host # pin a host's daemon to a version
64
+ puddle remove daemon # uninstall; your data stays unless you --purge
65
+ ```
66
+
57
67
  **Desktop app (optional):**
58
68
 
59
69
  The same cockpit also ships as a standalone desktop app — identical UI and engine, plus a File → "Connect to SSH Host…" menu for remote hosts. Grab the dmg (macOS arm64) or AppImage (Linux x64) from the Releases page.
60
70
 
61
- On macOS, an installed Puddle CLI can install or update the desktop app directly: quit Puddle, then run `puddle upgrade desktop`. A fresh install goes to `/Applications` when writable, otherwise `~/Applications`.
71
+ An installed Puddle CLI manages the desktop app directly: quit Puddle, then `puddle install desktop`, `puddle upgrade desktop`, or `puddle remove desktop`. On macOS a fresh install goes to `/Applications` when writable, otherwise `~/Applications`; on Linux `install desktop` asks where to put the AppImage (default `~/puddle`) and opens the folder — later updates happen from inside the app.
62
72
 
63
73
  The macOS downloads are **not code-signed** (an open-source project without Apple Developer Program fees), so Gatekeeper will refuse the first launch. Either allow it once — open the app, let macOS block it, then System Settings → Privacy & Security → **Open Anyway** — or clear the download quarantine in a terminal:
64
74
 
@@ -92,7 +102,7 @@ Building from source avoids the dance entirely (locally built apps are never qua
92
102
 
93
103
  The CLI serves the UI at a stable local origin and reverse-proxies the API to the daemon, directly in local mode, through the tunnel in SSH mode. The daemon is headless and host-agnostic on `127.0.0.1:7434`. UI updates ship with the CLI (`npm update -g @puddle-code/cli` refreshes the cockpit for every host); the daemon only has to update when the versioned protocol breaks, and the CLI does that automatically. A mandatory bearer token plus Host/Origin validation guard the localhost API against malicious web pages.
94
104
 
95
- Everything lives under `~/.puddle` on the host, installed without sudo. Uninstalling is stopping the service and deleting that directory.
105
+ Everything lives under `~/.puddle` on the host, installed without sudo and `puddle remove daemon` takes it apart again.
96
106
 
97
107
  ## Development & teardown
98
108
 
@@ -115,19 +125,17 @@ systemctl --user disable --now puddled # Linux (systemd user unit)
115
125
  kill "$(cat ~/.puddle/puddled.pid)" # nohup fallback (no supervisor)
116
126
  ```
117
127
 
118
- **Restore the production daemon.** When you're done testing, put the release build back over your dev one: stop the daemon (above), clear the installed binaries with `rm -rf ~/.puddle/bin` (your `~/.puddle` state — profiles, sessions, worktrees — is untouched), then run the production `puddle launch`, which refetches the daemon from GitHub Releases. (Clearing `bin` is what forces the refetch: the installer skips a version whose files are already present, so a dev build sharing the release's version number would otherwise stay put.)
119
-
120
- **Uninstall.** Removing the CLI alone leaves the daemon installed and running — a full teardown stops the daemon, then removes its state, its service file, and the production CLI:
128
+ **Restore the production daemon.** When you're done testing, `puddle remove daemon` (answer no to the purge question your profiles, sessions, and worktrees stay), then run the production `puddle launch`, which refetches the daemon from GitHub Releases. (Removal is what forces the refetch: the installer skips a version whose files are already present, so a dev build sharing the release's version number would otherwise stay put.)
121
129
 
122
- > ⚠️ `~/.puddle` **is** your local state — the SQLite database with every profile, account, and session (plus conversation history), the daemon's worktree tracking, and the auth token. Deleting it is irreversible and wipes all of it. Uninstall only when you mean to start clean.
130
+ **Uninstall.** Removing the CLI alone leaves the daemon installed and running a full teardown is:
123
131
 
124
132
  ```sh
125
- rm -rf ~/.puddle
126
- rm ~/Library/LaunchAgents/dev.puddle.puddled.plist # macOS
127
- rm ~/.config/systemd/user/puddled.service && systemctl --user daemon-reload # Linux
128
- npm uninstall -g @puddle-code/cli
133
+ puddle remove daemon --purge # stops the daemon, unregisters its service, deletes ~/.puddle
134
+ puddle remove cli # npm uninstall -g, once the daemons you care about are gone
129
135
  ```
130
136
 
137
+ > ⚠️ `~/.puddle` **is** your local state — the SQLite database with every profile, account, and session (plus conversation history), the daemon's worktree tracking, and the auth token. `--purge` deletes it irreversibly (the command lists dirty or unpushed worktrees and asks first); without it, `puddle remove daemon` keeps the data for a later reinstall.
138
+
131
139
  ## Licence
132
140
 
133
141
  Puddle is licensed under the [MIT License](LICENSE). Copyright (c) 2026 Yiding Song.