app
Altium - the Altium Bridge
Public Made by Adomby adom
Adom Bridge for Altium Designer: a resident DelphiScript agent gives the AI eval, the 1,100-command process launcher, all 8 EDA surfaces with screenshots, compile/ERC, DRC, OutJob outputs, native SchLib/PcbLib authoring with STEP 3D bodies, and dialog handling by PID.
← Commit history
v0.1.41: favicon route serves the real line mark; install.sh installs it
8 files changed
+27−10
CHANGELOG.md+5@@ -1,5 +1,10 @@ # Changelog +## 0.1.41 — 2026-09-01+- **The tab favicon actually reaches the tab now.** 0.1.40 shipped the correct line-mark `favicon.svg`, but the dashboard's icon route aliased EVERY icon path — `/favicon.svg` included — to `dock-altium.svg`, which is a 60 KB SVG wrapping an embedded PNG raster. Hydrogen's webview reads the page's favicon after load (hydrogen-tab-icons) and renders nothing for that blob, which is precisely the icon-less tab John reported twice. The favicon route now serves `ui/favicon.svg` (the monochrome #e6edf3 line mark, same file as the header icon); `/dock-altium.svg` keeps serving the dock card art.+- **`install.sh` now installs `favicon.svg`.** Its asset list was explicit, so 0.1.40's new file never landed in `~/.local/share/adom/altium-bridge/` — the pkg carried it and the installer dropped it.+- Verified end to end this time: the live server returns the 340-byte mark for `/favicon.svg`, and a Hydrogen workspace capture shows the restored header (mark, subtitle, pill chip with LED, ghost buttons) live in the dock tab.+ ## 0.1.40 — 2026-09-01 - **The dashboard header is whole again, and the dock tab has a favicon.** John, from one glance at the dock: *"why don't i see a favicon ... your header looks wonky ... almost like you're missing a css."* Both right. `index.html` linked `favicon.svg` but the file did not exist (the route 404s honestly since the 2026-08-25 route-table sweep, so the tab showed the generic mark), and an earlier CSS deletion had taken the header's visual rules — `.iconbtn`, `.vsep`, the target-chip pill, the brand font — while the markup and a `.iconbtn:focus-visible` rule survived, so the buttons rendered as UA-default white boxes on the dark bar. - Restored per dash-header's numbers: 28x28 ghost buttons with 18px glyphs (muted at rest, teal on hover), mono pill target chip with the LED inside, 1px vsep, name in Familjen Grotesk 600 15px `var(--text)` — NOT the accent, per the 2026-08-24 ruling, deliberately unlike fusion's current teal name.
adom-bridge-altium-manifest.json+3−3@@ -1,8 +1,8 @@ { "name": "altium",- "version": "0.1.40",- "url": "https://wiki.adom.inc/download/adom/altium-bridge/0.1.40/adom-bridge-altium-v0.1.40.zip",- "sha256": "6053b3d8a436af3e589ba4541b1a8ada713da2820d1464da36059c0d09919267",+ "version": "0.1.41",+ "url": "https://wiki.adom.inc/download/adom/altium-bridge/0.1.41/adom-bridge-altium-v0.1.41.zip",+ "sha256": "92e588a89f54f329f0f9cc38aa99c8595189e2db2121fc43fe9ed733097018f7", "size": 135933, "verbPrefixes": [ "altium_"
adom-bridge-altium-v0.1.41.zipadded⋯ 1 unchanged line ⋯
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "altium", "displayName": "Altium Designer",- "version": "0.1.40",+ "version": "0.1.41", "description": "Drive Altium Designer from Adom: a resident DelphiScript agent (eval + the 1,100-command process launcher), the X2 -R command line, UIA over the VCL shell, dialogs by PID, screenshots of every Altium window, and Altium 365.", "homepage": "https://wiki.adom.inc/adom/altium-bridge", "docs": "https://wiki.adom.inc/adom/altium-bridge",
dashboard/altium_dashboard.py+15−3@@ -1108,9 +1108,21 @@ class Handler(BaseHTTPRequestHandler): {"Cache-Control": "no-store"}) except Exception as e: return self._json({"error": f"module missing: {e}"}, 500)- if path.endswith(("/favicon.svg", "/favicon.png", "/favicon.ico",- "/dock-altium.svg", "/altium-logo.png")):- # endswith: the adom.cloud proxy mounts the app under a sub-path.+ if path.endswith(("/favicon.svg", "/favicon.png", "/favicon.ico")):+ # The TAB icon. Hydrogen's webview reads the page's favicon after load and writes it+ # into the tab (hydrogen-tab-icons), so THIS is what the user sees in the tab strip.+ # It must be the monochrome #e6edf3 LINE MARK — this route used to alias to+ # dock-altium.svg, which is a 60KB SVG wrapping an embedded PNG raster: Hydrogen's tab+ # renderer shows nothing for it, which is exactly the iconless tab John reported+ # (2026-09-01). ui/favicon.svg is the same line drawing as the header mark.+ fav = UI_DIR / "favicon.svg"+ try:+ return self._send(200, "image/svg+xml",+ (fav if fav.is_file() else LOGO_PATH).read_bytes())+ except Exception:+ return self._json({"error": "favicon missing"}, 404)+ if path.endswith(("/dock-altium.svg", "/altium-logo.png")):+ # the dock CARD art (larger, may be rich) — distinct from the tab favicon on purpose try: return self._send(200, "image/svg+xml", LOGO_PATH.read_bytes()) except Exception:
install.sh+1−1@@ -26,7 +26,7 @@ APPDIR="$HOME/.local/share/adom/altium-bridge" BINDIR="$HOME/.local/bin" mkdir -p "$APPDIR/dashboard/ui" "$BINDIR" cp -f "$HERE/dashboard/altium_dashboard.py" "$APPDIR/dashboard/altium_dashboard.py"-for asset in index.html altium-logo.png dock-altium.svg newbie-panel.js; do+for asset in index.html favicon.svg altium-logo.png dock-altium.svg newbie-panel.js; do [ -f "$HERE/dashboard/ui/$asset" ] && cp -f "$HERE/dashboard/ui/$asset" "$APPDIR/dashboard/ui/$asset" done if [ -d "$HERE/dashboard/ui/assets" ]; then
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "altium-bridge",- "version": "0.1.40",+ "version": "0.1.41", "type": "app", "description": "Skills for your container so your AI knows how to drive the Altium Designer bridge (altium_* verbs). The bridge runtime itself is the release zip; Adom Bridge loads that.", "tags": [
src/BRIDGE_VERSION+1−1@@ -1 +1 @@-0.1.40+0.1.41