app
adom-vscode
Public Made by Adomby adom
Let Claude, Codex and Kimi drive VS Code inside your Adom container
← Commit history
release 1.1.75
13 files changed
+15−10
README.md+2@@ -276,6 +276,8 @@ v1.1.20: /command returns errorCode command_not_found (HTTP 400) with did-you-me 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. +v1.1.75: the full Title Bar layout is a third as wide (short gauge bars, about 90 px for Claude with three rows); a widget with no mark no longer reserves the mark space (the clock had 20 px of nothing left of the time).+ v1.1.74: the helper measures a widget on a hidden max-content clone (any markup, never fed by the slot width; the clock had asked for 361 px); the tall label clip applies to bar rows only; /preview?h= follows the width the widget asks for; crisp pictures of both layouts on the widgets page. v1.1.73: widget pages measure their intrinsic content, so a slot shrinks to what is shown (Codex in the compact bar) and grows to fit (Claude in the compact bar, three rows narrow when tall).
VERSION+1−1@@ -1 +1 @@-1.1.74+1.1.75
bin/adom-vscode⋯ 1 unchanged line ⋯
bin/hydrogen-widget-claude-usagebin/hydrogen-widget-codex-usagebin/hydrogen-widget-lib.py+9−6@@ -33,14 +33,17 @@ html,body{margin:0;height:100%%;background:transparent;color:#e6ebef;font-family /* Tall: rows stacked. Columns take their natural width (label, value) and the bar takes the rest, so nothing is ever clipped whatever the slot width; a long label is trimmed with an ellipsis instead of pushing the value out of view. */- .w{font-size:9px;line-height:1;padding:2px 6px}+ /* Narrow on purpose (John 2026-09-14: "make this 1/3rd the width"): the bar is a short gauge,+ not a ruler; the label and value carry the number. About 90 px for three rows with a mark. */+ .w{font-size:8px;line-height:1;padding:1px 4px;gap:4px}+ .mark{width:13px;height:13px} .rows{flex-direction:column;align-items:stretch;justify-content:center;gap:2px;min-width:0}- .row{display:grid;grid-template-columns:auto minmax(56px,1fr) auto;align-items:center;gap:4px;min-width:0}- .lbl{font-size:7.5px}.row .lbl{max-width:5.5em;overflow:hidden;text-overflow:ellipsis}.bar{width:auto;height:5px}.v{font-size:9px;min-width:0}- .big{font-size:15px}.err{font-size:9px;white-space:normal;line-height:1.1;max-width:130px}+ .row{display:grid;grid-template-columns:auto minmax(18px,1fr) auto;align-items:center;gap:3px;min-width:0}+ .lbl{font-size:6.5px}.row .lbl{max-width:4.2em;overflow:hidden;text-overflow:ellipsis}.bar{width:auto;height:4px}.v{font-size:8px;min-width:0}+ .big{font-size:14px}.err{font-size:8px;white-space:normal;line-height:1.1;max-width:96px} } @media (max-height:33px){ .err{overflow:hidden;text-overflow:ellipsis;max-width:100%%} }-</style><body><div class="w"><span class="mark" style="color:%(mark_color)s">%(mark_svg)s</span><div class="rows" id="w">%(title)s…</div></div>+</style><body><div class="w">%(mark_html)s<div class="rows" id="w">%(title)s…</div></div> <script> const R=%(refresh_ms)d; function bar(l,p,sev){const c=(sev==='critical'||p>=90)?'hot':(sev==='warning'||p>=70)?'warn':'';return `<span class="row"><span class="lbl">${l}</span><span class="bar ${c}"><i style="width:${Math.max(0,Math.min(100,p))}%%"></i></span><span class="v">${Math.round(p)}%%</span></span>`;}@@ -104,7 +107,7 @@ def serve(title, data_fn, render_js, refresh_ms=60000, mark=None): 'const f=document.getElementById("w");f.dataset.w=m.width;if(!fixed)f.style.width=Math.max(48,Math.min(640,m.width))+"px";});</script></body>') % (title, w, h, 'true' if fixed else 'false') self._send(200, 'text/html; charset=utf-8', page.encode()) elif self.path.startswith('/health'): self._send(200, 'application/json', b'{"ok":true}')- else: self._send(200, 'text/html; charset=utf-8', (PAGE % {'title': title, 'refresh_ms': refresh_ms, 'render_js': render_js, 'mark_svg': ('<svg viewBox="0 0 16 16">' + mark['svg'] + '</svg>') if mark['svg'] else '', 'mark_color': mark['color']}).encode())+ else: self._send(200, 'text/html; charset=utf-8', (PAGE % {'title': title, 'refresh_ms': refresh_ms, 'render_js': render_js, 'mark_html': ('<span class="mark" style="color:%s"><svg viewBox="0 0 16 16">%s</svg></span>' % (mark['color'], mark['svg'])) if (mark and mark.get('svg')) else ''}).encode()) # Bind with retries: a previous instance Hydrogen just stopped may still be releasing the # port for a moment. Ten tries over five seconds, then give up loudly (the log says why). ThreadingHTTPServer.allow_reuse_address = True
bin/hydrogen-widget-marks.pyinstall.shpackage.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-vscode",- "version": "1.1.74",+ "version": "1.1.75", "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",
page.json+2−2@@ -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.74",+ "version": "1.1.75", "license": "PROPRIETARY", "visibility": "public", "hero": {@@ -141,4 +141,4 @@ "adom-vscode-extensions", "adom-vscode-modes" ]-}+}
widgets/docs/claude-usage-compact.png⋯ 1 unchanged line ⋯
widgets/docs/claude-usage.png⋯ 1 unchanged line ⋯
widgets/docs/codex-usage.png⋯ 1 unchanged line ⋯