waterplane 0.1.18 → 0.1.20

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 (95) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/NOTICES.md +0 -26
  3. package/README.md +22 -20
  4. package/SECURITY.md +575 -562
  5. package/node_modules/@waterplane/shared/dist/exposure.js +0 -1
  6. package/node_modules/@waterplane/shared/dist/exposure.js.map +1 -1
  7. package/node_modules/@waterplane/shared/dist/plugin/api.d.ts +2 -2
  8. package/node_modules/@waterplane/shared/dist/repotwins.d.ts +47 -0
  9. package/node_modules/@waterplane/shared/dist/repotwins.js +80 -0
  10. package/node_modules/@waterplane/shared/dist/repotwins.js.map +1 -1
  11. package/node_modules/@waterplane/shared/dist/wire/repo.d.ts +5 -0
  12. package/node_modules/@waterplane/shared/dist/wire/repo.js.map +1 -1
  13. package/node_modules/@waterplane/shared/dist/wire/session/context.d.ts +4 -0
  14. package/node_modules/@waterplane/shared/dist/wire/session/context.js.map +1 -1
  15. package/npm-shrinkwrap.json +2 -177
  16. package/package.json +1 -2
  17. package/packages/host/dist/agentlogs.d.ts +18 -0
  18. package/packages/host/dist/agentlogs.js +58 -0
  19. package/packages/host/dist/agentlogs.js.map +1 -0
  20. package/packages/host/dist/agents.d.ts +5 -0
  21. package/packages/host/dist/agents.js +3 -2
  22. package/packages/host/dist/agents.js.map +1 -1
  23. package/packages/host/dist/answergate.js +3 -2
  24. package/packages/host/dist/answergate.js.map +1 -1
  25. package/packages/host/dist/clisuggest.d.ts +2 -1
  26. package/packages/host/dist/clisuggest.js +22 -4
  27. package/packages/host/dist/clisuggest.js.map +1 -1
  28. package/packages/host/dist/composer.d.ts +6 -0
  29. package/packages/host/dist/composer.js +7 -1
  30. package/packages/host/dist/composer.js.map +1 -1
  31. package/packages/host/dist/ctxlog/ctxagents.d.ts +0 -29
  32. package/packages/host/dist/ctxlog/ctxagents.js +41 -8
  33. package/packages/host/dist/ctxlog/ctxagents.js.map +1 -1
  34. package/packages/host/dist/healthwatch.js +1 -1
  35. package/packages/host/dist/healthwatch.js.map +1 -1
  36. package/packages/host/dist/main.js +3 -0
  37. package/packages/host/dist/main.js.map +1 -1
  38. package/packages/host/dist/permmode.js +3 -3
  39. package/packages/host/dist/plugins/pluginregistry.js +3 -1
  40. package/packages/host/dist/plugins/pluginregistry.js.map +1 -1
  41. package/packages/host/dist/push.d.ts +3 -2
  42. package/packages/host/dist/push.js +7 -6
  43. package/packages/host/dist/push.js.map +1 -1
  44. package/packages/host/dist/pushsend.d.ts +57 -0
  45. package/packages/host/dist/pushsend.js +146 -0
  46. package/packages/host/dist/pushsend.js.map +1 -0
  47. package/packages/host/dist/question.js +9 -0
  48. package/packages/host/dist/question.js.map +1 -1
  49. package/packages/host/dist/render.js +2 -1
  50. package/packages/host/dist/render.js.map +1 -1
  51. package/packages/host/dist/reponames.d.ts +26 -0
  52. package/packages/host/dist/reponames.js +119 -0
  53. package/packages/host/dist/reponames.js.map +1 -0
  54. package/packages/host/dist/repos.js +13 -0
  55. package/packages/host/dist/repos.js.map +1 -1
  56. package/packages/host/dist/routes/apihost.js +26 -1
  57. package/packages/host/dist/routes/apihost.js.map +1 -1
  58. package/packages/host/dist/screenlog.d.ts +5 -0
  59. package/packages/host/dist/screenlog.js +7 -2
  60. package/packages/host/dist/screenlog.js.map +1 -1
  61. package/packages/host/dist/server/intentEvents.js +3 -2
  62. package/packages/host/dist/server/intentEvents.js.map +1 -1
  63. package/packages/host/dist/server/sessionEvents.js +10 -9
  64. package/packages/host/dist/server/sessionEvents.js.map +1 -1
  65. package/packages/host/dist/sessionSearch.js +3 -1
  66. package/packages/host/dist/sessionSearch.js.map +1 -1
  67. package/packages/host/dist/sessions/apiretry.d.ts +14 -0
  68. package/packages/host/dist/sessions/apiretry.js +28 -2
  69. package/packages/host/dist/sessions/apiretry.js.map +1 -1
  70. package/packages/host/dist/sessions/askwatch.js +1 -1
  71. package/packages/host/dist/sessions/askwatch.js.map +1 -1
  72. package/packages/host/dist/sessions/core.d.ts +5 -0
  73. package/packages/host/dist/tokenscan.d.ts +4 -2
  74. package/packages/host/dist/tokenscan.js +5 -3
  75. package/packages/host/dist/tokenscan.js.map +1 -1
  76. package/packages/host/dist/transcript/transcriptparse.js +5 -2
  77. package/packages/host/dist/transcript/transcriptparse.js.map +1 -1
  78. package/packages/host/dist/turnagents.d.ts +8 -1
  79. package/packages/host/dist/turnagents.js +49 -16
  80. package/packages/host/dist/turnagents.js.map +1 -1
  81. package/packages/host/package.json +0 -2
  82. package/packages/web/dist/assets/demo-CbdAM5Ox.js +26 -0
  83. package/packages/web/dist/assets/index-CF6HCu-P.js +170 -0
  84. package/packages/web/dist/assets/index-D3OoNfGN.css +1 -0
  85. package/packages/web/dist/assets/{shared-BsWIJLE-.js → shared-CsHyApn-.js} +11 -11
  86. package/packages/web/dist/assets/sheets-BwjSEjgB.js +256 -0
  87. package/packages/web/dist/build-id.txt +1 -1
  88. package/packages/web/dist/buildstamp.json +1 -1
  89. package/packages/web/dist/index.html +5 -5
  90. package/packages/web/dist/sw.js +2 -2
  91. package/release.json +3 -3
  92. package/packages/web/dist/assets/demo-BLBaz4G_.js +0 -26
  93. package/packages/web/dist/assets/index-BrvcQFBj.js +0 -170
  94. package/packages/web/dist/assets/index-Dx3VHnr3.css +0 -1
  95. package/packages/web/dist/assets/sheets-C7CXUU6R.js +0 -250
package/CHANGELOG.md CHANGED
@@ -5,6 +5,42 @@ version — so entries are grouped by the release they shipped in. A fixed secur
5
5
  vulnerability in what ships is listed under a **Security:** bullet of the release that
6
6
  fixed it, with its CVE or GHSA id when one exists.
7
7
 
8
+ ## 0.1.20
9
+
10
+ ### New
11
+
12
+ - **The Files browser reopens in the folder you left, per repo.** Each repo remembers its own place.
13
+ - **Every Questions card names the session's conversation beside its title.** Two sessions of one repo can now be told apart.
14
+ - **Each row in the tabs list shows its star, flag, prompt count and cost.** They match the launcher row.
15
+ - **The shift+tab chip sits at the very end of the key row, past CLI.**
16
+ - **The name fields on the New sheet open a lowercase keyboard.** Project, folder and branch names are not sentences.
17
+
18
+ ### Fixed
19
+
20
+ - **A cached list says the link is down only when it is.** The age line used to say so under a strip reading 185 ms. It now says checking, link down, no answer, or the host's refusal. A sheet opened during a reconnect reads the host when the link comes back instead of staying on its cache.
21
+ - **A session no longer reports "asked you" on a turn that asked nothing.** After a pane was narrowed, the leftover tail of an old wider frame ended up on the card. A "?" in the CLI's recap can no longer count as the question.
22
+ - **A torn closing rule no longer publishes the footer as Claude's proposal.** A proposal now needs a complete box and both reads from the same frame.
23
+ - **The Wi-Fi name is shown with Tailscale on.** The name was empty even with the permission granted, because the VPN was read instead of the Wi-Fi network. It is read again when the app resumes.
24
+
25
+ ## 0.1.19
26
+
27
+ ### New
28
+
29
+ - **A changed Markdown file can be shown rendered and edited from its diff.** The diff gets a rendered mode and a pencil. Back from the file lands on that diff, re-read, in the mode you left it.
30
+ - **A repo can be shown under a name you choose.** Set it from the repo's menu with "shown as…". It appears on every device in the launcher, tabs, Start sheets, pickers, search and push titles. Folders, ids and paths keep their own names.
31
+ - **Every reading on the connection strip has a chart behind its tap.** The health sheet charts ping, route, connection, unsaved items, and sends and data by source over 1h, 24h, 7d and 30d. Drops, route moves and what is waiting are listed, and time the app was off screen shows as not measured.
32
+ - **The connection charts share one sticky range control.** It says once how to read a value and what not measured looks like. A chart waits for three measured minutes before it draws.
33
+ - **A crash finding can be sent to a session to be fixed.** Every finding names its source.
34
+ - **The context sheet's head scrolls away with its charts on a phone.** The conversation name and the two doors no longer hold a quarter of the screen. They sit on one gutter with the charts.
35
+ - **The launcher's top gets a drag grip once it needs a second line, and the agent list gets the header's grip.** A shortened agent list scrolls.
36
+
37
+ ### Fixed
38
+
39
+ - **A session that was retried no longer looks like the retry failed.** "Retried (2/8), waiting for the reply" clears as soon as the first reply arrives, not at the end of the turn.
40
+ - **Subagents of a dynamic workflow are now counted everywhere.** One session showed 2 agents and $22 when 83 agents and about $207 had been spent. Each agent's row says what it was launched to do.
41
+ - **The context charts no longer slope between readings.** The window holds and steps at each request, and a compaction drops straight to its measured size instead of reading as an hour of draining.
42
+ - **A message was sometimes not delivered when ultracode was on.** The composer's labelled top rule was not recognised, so text that matched the proposal was taken as already typed and sent as an empty box.
43
+
8
44
  ## 0.1.18
9
45
 
10
46
  ### New
package/NOTICES.md CHANGED
@@ -16,7 +16,6 @@ not a redistribution of Claude Code.
16
16
  | --- | --- | --- | --- |
17
17
  | `@xterm/headless` | 5.5.0 | MIT | https://github.com/xtermjs/xterm.js |
18
18
  | `node-pty` | 1.2.0-beta.15 | MIT | https://github.com/microsoft/node-pty |
19
- | `web-push` | 3.6.7 | **MPL-2.0** | https://github.com/web-push-libs/web-push |
20
19
  | `ws` | 8.22.0 | MIT | https://github.com/websockets/ws |
21
20
 
22
21
  ## `packages/web`
@@ -56,31 +55,6 @@ build time and downloaded to the phone only when the person switches the extensi
56
55
  No runtime dependencies — it's the wire-protocol type definitions shared by
57
56
  the other two workspaces.
58
57
 
59
- ## A note on `web-push` (MPL-2.0)
60
-
61
- Every other runtime dependency above is MIT or ISC — both short,
62
- permissive, attribution-only licenses fully compatible with this project's
63
- MIT license. `web-push` is the one exception: it's licensed under the
64
- **Mozilla Public License 2.0**, a weak-copyleft, *file-level* license.
65
-
66
- That matters less than it sounds. MPL-2.0's copyleft applies to the
67
- *licensed files themselves* — if you modify a file from the MPL-licensed
68
- library and distribute that modified file, you owe the source for that file
69
- under MPL-2.0. It does **not** propagate to code that merely imports the
70
- library and calls its API, the way `packages/host/src/push.ts` does here.
71
- This project:
72
-
73
- - uses `web-push` unmodified, straight from npm as an ordinary dependency
74
- (`packages/host/package.json`), and
75
- - never vendors, forks, or edits any of its source files.
76
-
77
- So using it here imposes no relicensing obligation on this project — the
78
- rest of the codebase stays MIT, and only `web-push`'s own files (which this
79
- project doesn't touch) remain under MPL-2.0. If you fork this project and
80
- start editing `web-push`'s own source directly, MPL-2.0's file-level
81
- copyleft would apply to *those* edited files — but that's a decision you'd
82
- be making, not something inherited from using the library as-is.
83
-
84
58
  ## Verifying this file
85
59
 
86
60
  Every license claim above was read directly from the installed package's own
package/README.md CHANGED
@@ -15,9 +15,9 @@ customized: a plugin adds the button, switch or status line your way of working
15
15
  [How it compares](#how-it-compares) · [Security](SECURITY.md) · [Open source (MIT)](LICENSE) ·
16
16
  macOS, Linux, Windows via WSL2 · Android app or web app, no iOS app yet
17
17
 
18
- <a href="https://waterplane-dev.github.io/media/first-look-9e3dc02a21.mp4"><img src="docs/media/first-look.gif" width="270" alt="A session starts from the phone; Claude Code on the desktop builds the app and screenshots it in the iOS simulator and the Android emulator; the two screenshots are combined, the clipped Android button circled and sent back; Claude fixes it, re-checks both, and the debug APK arrives as a download for the real phone"></a>
18
+ <a href="https://waterplane-dev.github.io/media/first-look-a706bf617d.mp4"><img src="docs/media/first-look.gif" width="270" alt="A session starts from the phone; Claude Code on the desktop builds the app and screenshots it in the iOS simulator and the Android emulator; the two screenshots are combined, the clipped Android button circled and sent back; Claude fixes it, re-checks both, and the debug APK arrives as a download for the real phone"></a>
19
19
 
20
- *A short loop. [The whole walkthrough as a video](https://waterplane-dev.github.io/media/first-look-9e3dc02a21.mp4), with pause and seek.*
20
+ *A short loop. [The whole walkthrough as a video](https://waterplane-dev.github.io/media/first-look-a706bf617d.mp4), with pause and seek.*
21
21
  <!-- /site:intro -->
22
22
 
23
23
  - **The real CLI, not a re-implementation.** Every slash command, plan and trust prompt and the
@@ -68,7 +68,7 @@ Two more things I was not at ease with:
68
68
  - **Remote desktop to a Mac from a phone is miserable.** Every solution I tried was. It was
69
69
  surprisingly easy to let Claude build an alternative into waterplane that is actually usable from
70
70
  a phone: the [live desktop view](packages/extensions/desktop/README.md), experimental, macOS and Windows,
71
- shipped off by default.
71
+ off by default.
72
72
  <!-- /site:why -->
73
73
 
74
74
  <!-- site:desk -->
@@ -80,9 +80,9 @@ elsewhere: the Mac Studio builds and runs the simulators while the notebook only
80
80
  The window gets a sidebar of repos, the session in the middle and a panel beside it, and it is
81
81
  the same sessions, queue and costs, so what you left on the laptop is waiting on the phone.
82
82
 
83
- <a href="https://waterplane-dev.github.io/media/desktop-7af0b11f01.mp4"><img src="docs/media/desktop.gif" width="720" alt="The same app in a laptop's browser: repos in a sidebar, todo-garden's session started in the main pane, the prompt sent with Cmd+Return, Claude Code builds and checks the iOS simulator and the Android emulator, and the gallery opens as a panel beside the session with both screenshots"></a>
83
+ <a href="https://waterplane-dev.github.io/media/desktop-abba5cda6f.mp4"><img src="docs/media/desktop.gif" width="720" alt="The same app in a laptop's browser: repos in a sidebar, todo-garden's session started in the main pane, the prompt sent with Cmd+Return, Claude Code builds and checks the iOS simulator and the Android emulator, and the gallery opens as a panel beside the session with both screenshots"></a>
84
84
 
85
- *A short loop. [The whole film as a video](https://waterplane-dev.github.io/media/desktop-7af0b11f01.mp4).*
85
+ *A short loop. [The whole film as a video](https://waterplane-dev.github.io/media/desktop-abba5cda6f.mp4).*
86
86
 
87
87
  Desktops can also work for each other. Pair two of them and an agent on one can hand a job to the
88
88
  other (run the Windows build, the tests on the bigger machine): the branch travels through your
@@ -194,9 +194,9 @@ npm run build
194
194
  npm start
195
195
  ```
196
196
 
197
- <a href="https://waterplane-dev.github.io/media/setup-30becef6cf.mp4"><img src="docs/media/setup.gif" width="270" alt="The desktop builds and starts the host; on the phone the app lists the repo, + now starts claude in it, and its trust question is answered with a tap"></a>
197
+ <a href="https://waterplane-dev.github.io/media/setup-3bc9b6dc2e.mp4"><img src="docs/media/setup.gif" width="270" alt="The desktop builds and starts the host; on the phone the app lists the repo, + now starts claude in it, and its trust question is answered with a tap"></a>
198
198
 
199
- *From `npm run build` on the desktop to claude running in your repo on the phone. [The whole setup as a video](https://waterplane-dev.github.io/media/setup-30becef6cf.mp4), with pause and seek.*
199
+ *From `npm run build` on the desktop to claude running in your repo on the phone. [The whole setup as a video](https://waterplane-dev.github.io/media/setup-3bc9b6dc2e.mp4), with pause and seek.*
200
200
 
201
201
  `npm run doctor` (or `waterplane doctor`) is the first thing to re-run when something misbehaves:
202
202
  it names what is wrong and what to type. The host lists the git repos under `~/dev` (or
@@ -208,8 +208,9 @@ HTTPS + MagicDNS in the tailnet admin console once, then open `https://<machine>
208
208
  tailscale serve --bg --https=443 http://127.0.0.1:8770
209
209
  ```
210
210
 
211
- Or use the Android app, which needs no HTTPS: the APK is on the
212
- [latest release](https://github.com/waterplane-dev/waterplane/releases/latest).
211
+ Or use the Android app, which needs no HTTPS: get it on
212
+ [Google Play](https://play.google.com/store/apps/details?id=dev.waterplane.app), or download the
213
+ APK from the [latest release](https://github.com/waterplane-dev/waterplane/releases/latest).
213
214
 
214
215
  Windows, Docker, agent install, notifications, a second phone or desktop, the background service,
215
216
  updating and every environment variable: [docs/install.md](docs/install.md).
@@ -220,9 +221,9 @@ updating and every environment variable: [docs/install.md](docs/install.md).
220
221
  <!-- site:outbox -->
221
222
  ### What Claude made, on your phone
222
223
 
223
- <a href="https://waterplane-dev.github.io/media/gallery-and-files-6250099dbb.mp4"><img src="docs/media/gallery-and-files.png" width="270" alt="The gallery lists what Claude left in the outbox: a markdown file, a live HTML page and a screenshot open on the phone"></a>
224
+ <a href="https://waterplane-dev.github.io/media/gallery-and-files-e1ccd7049c.mp4"><img src="docs/media/gallery-and-files.png" width="270" alt="The gallery lists what Claude left in the outbox: a markdown file, a live HTML page and a screenshot open on the phone"></a>
224
225
 
225
- *[The walkthrough as a video](https://waterplane-dev.github.io/media/gallery-and-files-6250099dbb.mp4).*
226
+ *[The walkthrough as a video](https://waterplane-dev.github.io/media/gallery-and-files-e1ccd7049c.mp4).*
226
227
 
227
228
  What Claude leaves in `.claude/outbox/` appears on the phone as a picture or a file, with a badge on
228
229
  the repo and a notification. Open it full size, draw a circle or a box on it, type what to change,
@@ -233,9 +234,9 @@ of text to point Claude at it.
233
234
  <!-- site:limit -->
234
235
  ### When the usage limit hits, it carries on
235
236
 
236
- <a href="https://waterplane-dev.github.io/media/limit-and-budget-49f91fd711.mp4"><img src="docs/media/limit-and-budget.gif" width="270" alt="Claude stops at the 5-hour usage wall; at the reset waterplane types continue and the turn finishes"></a>
237
+ <a href="https://waterplane-dev.github.io/media/limit-and-budget-228ef9996b.mp4"><img src="docs/media/limit-and-budget.gif" width="270" alt="Claude stops at the 5-hour usage wall; at the reset waterplane types continue and the turn finishes"></a>
237
238
 
238
- *A short loop. [The whole walkthrough as a video](https://waterplane-dev.github.io/media/limit-and-budget-49f91fd711.mp4), with pause and seek.*
239
+ *A short loop. [The whole walkthrough as a video](https://waterplane-dev.github.io/media/limit-and-budget-228ef9996b.mp4), with pause and seek.*
239
240
 
240
241
  When a session hits a Claude usage limit, the host notices, waits for the reset and continues it,
241
242
  reopening the conversation with `--continue` if the CLI exited. Bounded retries, and an off switch
@@ -247,9 +248,9 @@ your words kept and the reason said.
247
248
  <!-- site:queue -->
248
249
  ### Queue it now, or schedule it against the usage windows
249
250
 
250
- <a href="https://waterplane-dev.github.io/media/queue-and-schedule-1cb4c31dac.mp4"><img src="docs/media/queue-and-schedule.gif" width="270" alt="A prompt queued behind a running turn starts by itself when the turn ends; schedules wait for a time or for the weekly window"></a>
251
+ <a href="https://waterplane-dev.github.io/media/queue-and-schedule-159fd268d2.mp4"><img src="docs/media/queue-and-schedule.gif" width="270" alt="A prompt queued behind a running turn starts by itself when the turn ends; schedules wait for a time or for the weekly window"></a>
251
252
 
252
- *A short loop. [The whole walkthrough as a video](https://waterplane-dev.github.io/media/queue-and-schedule-1cb4c31dac.mp4), with pause and seek.*
253
+ *A short loop. [The whole walkthrough as a video](https://waterplane-dev.github.io/media/queue-and-schedule-159fd268d2.mp4), with pause and seek.*
253
254
 
254
255
  A prompt sent while you are offline or while the session is busy waits in a queue and is typed in
255
256
  exactly once. Or post a prompt for later: at a time, when the session goes quiet, after another one
@@ -260,9 +261,9 @@ before the reset, spend what is left"). The Backlog holds a repo's work that nob
260
261
  <!-- site:cost -->
261
262
  ### Know what it costs
262
263
 
263
- <a href="https://waterplane-dev.github.io/media/numbers-6b4a0ebc6b.mp4"><img src="docs/media/numbers.gif" width="270" alt="A week of heavy use priced at API list price, what drives the cost, and a ten-hour session whose subagents are most of its bill"></a>
264
+ <a href="https://waterplane-dev.github.io/media/numbers-8fcb01f5ef.mp4"><img src="docs/media/numbers.gif" width="270" alt="A week of heavy use priced at API list price, what drives the cost, and a ten-hour session whose subagents are most of its bill"></a>
264
265
 
265
- *A short loop. [The whole walkthrough as a video](https://waterplane-dev.github.io/media/numbers-6b4a0ebc6b.mp4), with pause and seek.*
266
+ *A short loop. [The whole walkthrough as a video](https://waterplane-dev.github.io/media/numbers-8fcb01f5ef.mp4), with pause and seek.*
266
267
 
267
268
  Every finished turn says what it cost: tokens in, out and cached, and dollars at list price, plus
268
269
  what the *next* turn will cost compared with a fresh session. The token ledger splits every total by
@@ -277,9 +278,9 @@ than a guess.
277
278
  <!-- site:health -->
278
279
  ### Repo health, so the vibe coding stays maintainable
279
280
 
280
- <a href="https://waterplane-dev.github.io/media/repo-health-a6076318e5.mp4"><img src="docs/media/repo-health.gif" width="270" alt="A repo vibe-coded for eight months scores 46 out of 100: one 8,397-line file caps the score, two severe warnings name it, and the trend slides from 100 in February"></a>
281
+ <a href="https://waterplane-dev.github.io/media/repo-health-c6dd35721b.mp4"><img src="docs/media/repo-health.gif" width="270" alt="A repo vibe-coded for eight months scores 46 out of 100: one 8,397-line file caps the score, two severe warnings name it, and the trend slides from 100 in February"></a>
281
282
 
282
- *A short loop. [The whole walkthrough as a video](https://waterplane-dev.github.io/media/repo-health-a6076318e5.mp4), with pause and seek.*
283
+ *A short loop. [The whole walkthrough as a video](https://waterplane-dev.github.io/media/repo-health-c6dd35721b.mp4), with pause and seek.*
283
284
 
284
285
  Vibe coding drifts into a mess quietly, and a steady number does not mean a healthy repo. Each repo
285
286
  gets one health score out of 100, measured against fixed good values: file length, files reworked
@@ -357,7 +358,7 @@ foremost (opencode support is experimental). The packages and the plugin mechani
357
358
  <!-- site:compare -->
358
359
  ## How it compares
359
360
 
360
- Anthropic's own Remote Control now drives a local Claude Code session from the Claude app, and Happy,
361
+ Anthropic's own Remote Control drives a local Claude Code session from the Claude app, and Happy,
361
362
  Paseo and Orca put coding agents on a phone too. Reaching your agent from a phone is not what is
362
363
  different here. What is: the real terminal plus a reader, no vendor or relay in the path, the build
363
364
  and artifact loop back to the phone (marked-up screenshots into the prompt, verified simulator and
@@ -445,6 +446,7 @@ All public repos: [waterplane](https://github.com/waterplane-dev/waterplane) ·
445
446
  service, updating, configuration.
446
447
  - [Architecture](docs/notes/architecture.md): what runs where, the packages, and the plugins.
447
448
  - [SECURITY.md](SECURITY.md): the threat model, and how to report a security problem.
449
+ - [GOVERNANCE.md](GOVERNANCE.md) and [ROADMAP.md](ROADMAP.md): who decides, and what the next year holds.
448
450
  - [DISCLAIMER.md](DISCLAIMER.md): what else you agree to by running it.
449
451
  - [The Android app](packages/app/README.md): building it, and every permission with its reason.
450
452
  - [CLAUDE.md](CLAUDE.md) and [docs/notes/](docs/notes/README.md): the rules an agent must know before