← Commit history

Publish 1.1.23

John Lauer ·761e73c7d7 ·1mo ago ·parent c4bd179
6 files changed +12−4
README.md+7
@@ -89,6 +89,11 @@ Everything the CLI does is a plain HTTP call, so HD, HW, and any script can hit | terminal.tui.list | `GET /terminal/tui/list` | Handles: id, name, command, running state | | terminal.tui.dispose | `POST /terminal/tui/dispose` `{id?, name?}` | Close a named TUI terminal by handle | | claude.new | `POST /claude/new` | New Claude Code conversation |+| tabs.list | `GET /tabs` | Event-driven tab census from the extension host (`window.tabGroups`): every tab with `kind` (claude \| codex \| kimi \| terminal \| other), label, group/tab index, active flags; Codex rows carry `sessionId` from the editor URI. No DOM, no CDP |+| tabs.events | `GET /tabs/events` (SSE) | The same census pushed on every tab open/close/move/focus change (`event: census`), plus `event: claude-session` when the SessionStart hook reports a new Claude session. Hydrogen holds one stream per workspace instead of polling the iframes |+| claude.session-start | `POST /claude/session-start` `{session_id, transcript_path?, cwd?, source?}` | Ingest for a Claude `SessionStart` hook: records the session (last 100) and broadcasts it on `/tabs/events` |+| claude.sessions | `GET /claude/sessions` | The recorded Claude sessions (id, transcript path, cwd, source, time) |+| claude.open-session | `POST /claude/open-session` `{sessionId, prompt?, retagEntrypoint?}` | Open an EXISTING Claude conversation as an editor tab and CONFIRM it bound (`bound:true` once a CLI resumes that id), instead of the fire-and-forget `claude-vscode.editor.open`. Rewrites a programmatic transcript entrypoint (sdk-cli/sdk-ts/sdk-py -> claude-vscode) first, because the Claude extension silently declines to restore those and opens a fresh tab | | claude.context | `GET /claude/context` | Live AI session stats (context %, cache, tools, compactions) | | command | `POST /command` `{command, args?}` | Any VS Code command (escape hatch) | | notify | `POST /notify` `{message, level?}` | Toast notification |@@ -240,3 +245,5 @@ v1.1.18: terminal.tui accepts optional icon (codicon name -> ThemeIcon) and colo v1.1.19: terminal.tui accepts shellPath/shellArgs/env (createTerminal semantics): the CLI runs AS the terminal process, no shell underneath, no echoed launch line pinned atop the TUI, no quoting constraints, and the tab closes when the process exits. shellPath wins over command; a missing or non-executable shellPath fails explicitly (errorCode shell_path_not_executable) instead of falling back to a bare prompt. Capability marker terminal.tui.shell in the /health roster.  v1.1.20: /command returns errorCode command_not_found (HTTP 400) with did-you-mean suggestions when a command id is unknown (args-taking commands often use the bare id, e.g. moveActiveEditor); terminal.tui injects ADOM_VSCODE_TUI_ID into the terminal env and tui-list reports processId, giving callers a DOM-free identity chain (pid -> /proc environ -> registry id).++v1.1.21: event-driven tab census + Claude session identity (John 2026-09-03: never poll the iframes again). GET /tabs and the SSE stream GET /tabs/events publish the extension host's own tabGroups census on every change; POST /claude/session-start ingests the Claude SessionStart hook (id + transcript path, before the jsonl is flushed) and GET /claude/sessions lists it; POST /claude/open-session opens an existing conversation by id and confirms the bind (retagging sdk-cli transcripts, which the Claude extension otherwise declines). Capability markers in /health: tabs.list, tabs.events, claude.open-session, claude.session-start, claude.sessions.
SKILL.md+1
@@ -50,6 +50,7 @@ Binary: `~/.local/bin/adom-vscode` (also `/usr/local/bin/adom-vscode`). | **adom-vscode-container** | Container identity (hd vs hw), api-key status/inject, port discovery details, /health feature detection | | **adom-vscode-extensions** | List/query/update extensions, incl. the Claude/Codex/Kimi AI assistants | | **adom-vscode-modes** | Full-screen modes (claudecode/claudetty/tty), layout verbs, URL auto-triggers, paste-screenshot |+| **tab census + Claude sessions** (1.1.21, in this skill) | `GET /tabs` (event-driven census of every editor tab, no DOM), `GET /tabs/events` (SSE push on every change), `POST /claude/open-session {sessionId}` (open an existing Claude conversation by id, confirms the bind), `POST /claude/session-start` (SessionStart hook ingest), `GET /claude/sessions`. Hydrogen uses these instead of polling the iframes; see README for fields |  ## CRITICAL: workspace scope is `/home/adom/project` 
VERSION+1−1
@@ -1 +1 @@-1.1.20+1.1.21
bin/adom-vscode
⋯ 1 unchanged line ⋯
package.json+2−2
@@ -1,6 +1,6 @@ {   "slug": "adom-vscode",-  "version": "1.1.22",+  "version": "1.1.23",   "type": "app",   "description": "CLI + VS Code extension that lets AI assistants and the Hydrogen Desktop frontend drive VS Code from inside an Adom container: open files, live get/set of any setting/theme/font (no reload), native streamed exec, a frontend event queue, container identity (hd/hw), api-key status/inject, extension query/update, modes, paste screenshots, and any VS Code command via a local HTTP API on port 8821 (with port-file fallback discovery).",   "license": "PROPRIETARY",@@ -46,4 +46,4 @@     "adom-vscode-extensions",     "adom-vscode-modes"   ]-}\ No newline at end of file+}
page.json+1−1
@@ -4,7 +4,7 @@   "slug": "adom-vscode",   "title": "adom-vscode",   "brief": "Let Claude, Codex and Kimi drive VS Code inside your Adom container",-  "version": "1.1.22",+  "version": "1.1.23",   "license": "PROPRIETARY",   "visibility": "public",   "hero": {