app
Adom Hydrogen
Public Made by Adomby adom
The whole Adom experience as one signed native app: your editor, your AI agent, and the full electronics design toolchain, running locally on your own machine.
← Commit history
Add Claude conversation management + Remote Control (claude.ai/mobile) deep-dive doc, README section, and screenshot
3 files changed
+153
README.md+21@@ -84,6 +84,27 @@ Claude Code is built into both the editor and the terminal and signed in with yo --- +## Your conversations, anywhere — Remote Control + the conversation API++HD treats each Claude chat as a first-class **conversation** you (and the AI) can manage+through a simple API: list what's open, open or close conversations, switch between them, read+each one's title, message count, and draft, and type into a specific one — instantly or with a+human typing animation.++The standout: **turn on Remote Control for any conversation and HD hands you a `claude.ai`+URL.** Open it in your browser or the **Claude mobile app** and you're viewing and driving the+*same* conversation in the cloud — start at your desk in HD, continue from your phone. And+because HD automatically matches each live conversation to its on-disk log, you can always get+its session id and read the full transcript.++This is for humans and for the AI in your workspace alike (see the bundled+`hd-claude-management` skill). **Full guide:+[Claude Conversation Management →](claude-conversation-management.md)**++++---+ ## What's new in v15 Hydrogen Desktop's golden workspace image is **v15**, and it's built a fundamentally cleaner way:
claude-conversation-management.mdadded+132@@ -0,0 +1,132 @@+# Claude Conversation Management — and taking a conversation to claude.ai / your phone++Hydrogen Desktop runs Claude Code as **conversation tabs** inside the editor. HD exposes a+**first-class API** to manage those conversations — list them, open and close them, switch+between them, read each one's full state, type into a specific one, and **turn on Remote+Control so you can continue the same conversation on claude.ai or the Claude mobile app**.++Everything here works for **you**, for the **AI inside your workspace**, and for HD's own+setup steps — they all call the same endpoints. It all runs in the background: no window+focus, no stolen keystrokes.++++## Why this matters++- **Run several conversations at once** and drive each independently — one mapping your+ design stack, one wiring up InstaPCB pricing, one answering a quick question — all+ scriptable.+- **Keep going on your phone.** Turn on Remote Control and HD hands you a `claude.ai` URL.+ Open it in any browser or the Claude mobile app and you're looking at — and controlling —+ the *same* conversation in the cloud. Start at your desk in HD, continue from the couch on+ your phone.+- **Nothing gets lost.** Every conversation is stored as a local log you can read, and HD+ can hand you its session id automatically.++## The model: every conversation has a stable id++Each conversation is addressed by a stable **`context_id`**. That's how you reliably target+one — not its tab position (tabs come and go) and not its title (untitled until you send a+message). Ask HD for the list, then act on a conversation by its id.++> The control API runs on a dynamic local port — find it in the HD log or via port+> discovery. Examples below use `$HD` for `http://127.0.0.1:<port>`.++## See what's open++```bash+curl -s $HD/claude/conversations+```+```jsonc+{+ "count": 2,+ "conversations": [+ { "ordinal": 0, "context_id": 16, "title": "Find the capital of France",+ "compose_text": "", "msg_count": 8,+ "session_id": "b352055b-471f-46dc-b412-a4450642e831" },+ { "ordinal": 1, "context_id": 19, "title": "Untitled",+ "compose_text": "a draft I haven't sent", "msg_count": 5, "session_id": null }+ ]+}+```+- `title` is the name Claude gives the conversation after its first message (before that it's+ `Untitled`).+- `session_id` is the conversation's on-disk GUID (null until it has messages).++## Open, close, switch++```bash+curl -s -X POST $HD/claude/new-conversation # open a new conversation tab+curl -s -X POST $HD/claude/tabs/close-all # close them all (and clean the blank panel)+curl -s -X POST $HD/claude/tabs/activate -d '{"label":"Eiffel"}' # switch by title+curl -s -X POST $HD/claude/tabs/close-empty-groups # remove a stale empty split panel+```+HD keeps your editor tidy: it removes leftover **empty** editor panels automatically on+launch, while **preserving** an intentional two-group (left/right) layout if you use one.++## Type a message into a specific conversation++```bash+# Instant (fast):+curl -s -X POST $HD/claude/inject \+ -d '{"text":"summarize this repo","context_index":16,"typed":false,"submit":true}'++# With the human typing animation, then send:+curl -s -X POST $HD/claude/inject \+ -d '{"text":"hello","context_index":16,"typed":true,"delay_ms":50,"submit":true}'+```+- `typed`: `true` = animated character-by-character; `false` = instant paste.+- `submit`: `true` = press Enter; `false` = leave it in the compose box as a draft.+- It lands in **exactly** that conversation, even with many open and even when it's not the+ one on screen.++## ⭐ Remote Control: continue on claude.ai / your phone++```bash+curl -s -X POST $HD/claude/remote-control -d '{"context_index":16}'+```+```jsonc+{+ "ok": true,+ "context_id": 16,+ "remote_control_url": "https://claude.ai/code/session_012v2M3kAjeBEwsT8QeXzpd7"+}+```+Open that `remote_control_url` on **claude.ai** (in your browser or the **Claude mobile+app**) and you can see and drive that exact conversation from anywhere. This is the bridge+from "a conversation locked inside my desktop app" to "my conversation, in the cloud, on any+device."++## How HD knows which on-disk log is which conversation++Claude stores each conversation as `~/.claude/projects/<project>/<uuid>.jsonl` (with its+`sessionId`, generated title, and every message). The conversation's webview doesn't expose+that GUID, so HD matches a live conversation to its log by the **first user message** — exact+and unique — then fills in the `session_id` and the authoritative title for you. So you never+have to hunt through log files by hand; `GET /claude/conversations` gives you the id directly.++Read a full transcript anytime:+```bash+cat ~/.claude/projects/*/<session_id>.jsonl+```++## For the AI in your workspace++Your in-workspace AI can do all of the above. The bundled **`hd-claude-management`** skill+documents every endpoint with examples, so you can ask things like *"open three conversations+and ask each a different question"* or *"turn on remote control for this conversation and give+me the link for my phone."*++## Endpoint reference++| Endpoint | Method | What it does |+|---|---|---|+| `/claude/conversations` | GET | Full per-conversation data incl. `session_id` |+| `/claude/contexts` | GET | Light list: `context_id` + `compose_text` |+| `/claude/tabs` | GET | Raw editor tabs |+| `/claude/new-conversation` | POST | Open a new conversation tab |+| `/claude/tabs/close-all` | POST | Close all tabs + remove the empty panel |+| `/claude/tabs/activate` | POST | Switch visible tab by `{index}` or `{label}` |+| `/claude/tabs/close-empty-groups` | POST | Remove empty editor groups (keeps populated) |+| `/claude/inject` | POST | Type into `{context_index}` (`typed`,`submit`,`delay_ms`) |+| `/claude/remote-control` | POST | Turn on RC → returns the `claude.ai` cloud URL |
screenshots/claude-conversations.pngadded⋯ 1 unchanged line ⋯