app
adom-desktop-altium-bridge
Public Unreviewedby barrett-land
Adom Desktop bridge for Altium Designer — build and edit file-based symbol/footprint/Integrated libraries with LCSC/JLCPCB part numbers attached, and generate batch outputs (STEP, PDF, Gerber, BOM, CPL) from an OutJob, by driving Altium via DelphiScript.
← Commit history
Publish 0.0.38
7 files changed
+42−16
altium-bridge-manifest.json+3−3@@ -1,3 +1,3 @@-{ "manifest_version": 1, "name": "altium", "version": "0.0.37",- "url": "https://wiki.adom.inc/download/barrett-land/adom-desktop-altium-bridge/latest/altium-bridge-v0.0.37.zip",- "sha256": "1e9099ece05ec7dcba5dc003f69181825c3f49d35844e65dd2fa211b7db54464", "size": 26085, "released_at": "2026-08-05T20:43:10Z" }+{ "manifest_version": 1, "name": "altium", "version": "0.0.38",+ "url": "https://wiki.adom.inc/download/barrett-land/adom-desktop-altium-bridge/0.0.38/altium-bridge-v0.0.38.zip",+ "sha256": "344a652908fb81506e9f99ae37510714b8561fed297d3880cc5ec374cce7d4e9", "size": 26084, "released_at": "2026-08-05T20:48:33Z" }
altium-bridge-v0.0.38.zipadded⋯ 1 unchanged line ⋯
bridge-src/BRIDGE_VERSION+1−1@@ -1 +1 @@-0.0.37+0.0.38
bridge-src/bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "altium", "displayName": "Altium Bridge",- "version": "0.0.37",+ "version": "0.0.38", "description": "Drives Altium Designer from a container: build, clone and edit file-based symbol/footprint/Integrated libraries with LCSC/JLCPCB part numbers attached, and generate batch outputs (STEP, PDF, Gerber, BOM, CPL) from an OutJob. Pairs with the container-side altium-jlc orchestrator (adom-jlcpcb + chip-fetcher).", "homepage": "https://wiki.adom.inc/adom/adom-desktop-altium-bridge", "author": "Adom Inc.",
bridge-src/deploy.sh+35−9@@ -74,11 +74,17 @@ rm -f "$REPO"/altium-bridge-v*.zip SHA=$(sha256sum "$ZIP" | cut -d' ' -f1) SIZE=$(stat -c%s "$ZIP") -# The url MUST use the /latest/ segment: /download/<owner>/<slug>/<version>/<file>-# is not a route the wiki serves and 404s at install time.+# /download/<owner>/<slug>/<...>/<file> serves RELEASE ASSETS, and the /latest/+# segment resolves per-platform: it picks an asset whose platform tag matches the+# requester. So the two files are addressed differently on purpose:+# - the manifest is uploaded as platform "any" and read from the stable /latest/+# URL, which is what install docs and callers hardcode;+# - the zip is windows-tagged, so it is referenced by its VERSION-PINNED url,+# which resolves regardless of who is asking.+# Pointing the manifest at /latest/<zip> instead 404s for any non-Windows caller. cat > "$MANIFEST" <<EOF { "manifest_version": 1, "name": "altium", "version": "${VER}",- "url": "${BASE}/${ZIP_NAME}",+ "url": "https://wiki.adom.inc/download/${REF}/${VER}/${ZIP_NAME}", "sha256": "${SHA}", "size": ${SIZE}, "released_at": "$(date -u +%Y-%m-%dT%H:%M:%SZ)" } EOF echo " ${ZIP_NAME} size=${SIZE} sha256=${SHA:0:16}…"@@ -86,6 +92,12 @@ echo " ${ZIP_NAME} size=${SIZE} sha256=${SHA:0:16}…" [ "$DO_PUBLISH" = 1 ] || { echo "==> built only (pass --publish to ship)"; exit 0; } # --- 4. publish the page repo ------------------------------------------------+# Cut the registry release FIRST: `release upload` needs the version to exist, and+# `pkg publish` rewrites page files (README/SKILL/package.json) from the tarball —+# so the repo push has to come after it to have the last word.+echo "==> publishing the package (registry layer)"+adom-wiki pkg publish -y --skip-lint >/dev/null+ echo "==> pushing page repo to $REF" # `repo push` takes an explicit file list, so enumerate everything tracked. Skip the # .git dir and any stale zip that step 3 already deleted from disk.@@ -98,14 +110,28 @@ for old in ${OLD_ZIPS+"${OLD_ZIPS[@]}"}; do adom-wiki repo rm "$REF" "$old" || true done -echo "==> verifying the published manifest resolves"+echo "==> uploading release assets"+# The package tarball is the install payload; the bridge zip is a downloadable+# RELEASE asset. Platform tags matter — see the manifest comment above.+adom-wiki release upload "$REF" "$VER" "$ZIP" --platform windows --arch any >/dev/null+adom-wiki release upload "$REF" "$VER" "$MANIFEST" --platform any --arch any >/dev/null++echo "==> verifying the published artifacts resolve" PUB_URL="${BASE}/altium-bridge-manifest.json" curl -fsS "$PUB_URL" > /tmp/altium-manifest-check.json-curl -fsS -o /dev/null "${BASE}/${ZIP_NAME}"-python3 -c "-import json; d=json.load(open('/tmp/altium-manifest-check.json'))-assert d['version']=='${VER}', f\"served manifest is v{d['version']}, expected ${VER}\"-print(' manifest + zip both resolve at v${VER}')"+python3 - "$VER" <<'PY'+import json, sys, urllib.request+ver = sys.argv[1]+d = json.load(open('/tmp/altium-manifest-check.json'))+assert d['version'] == ver, f"served manifest is v{d['version']}, expected v{ver}"+with urllib.request.urlopen(d['url']) as r: # follow the manifest's own url+ body = r.read()+assert len(body) == d['size'], f"zip is {len(body)} bytes, manifest claims {d['size']}"+import hashlib+got = hashlib.sha256(body).hexdigest()+assert got == d['sha256'], f"zip sha {got[:16]} != manifest {d['sha256'][:16]}"+print(f" manifest v{ver} resolves, and its url serves a {len(body)}-byte zip with a matching sha256")+PY [ "$DO_INSTALL" = 1 ] || { echo "==> published (pass --install to update the desktop)"; exit 0; }
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-desktop-altium-bridge",- "version": "0.0.37",+ "version": "0.0.38", "type": "app", "description": "Adom Desktop bridge for Altium Designer \u2014 build and edit file-based symbol/footprint/Integrated libraries with LCSC/JLCPCB part numbers attached, and generate batch outputs (STEP, PDF, Gerber, BOM, CPL) from an OutJob, by driving Altium via DelphiScript.", "tags": [
page.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-desktop-altium-bridge",- "version": "0.0.37",+ "version": "0.0.38", "type": "app", "description": "Adom Desktop bridge for Altium Designer — build and edit file-based symbol/footprint/Integrated libraries with LCSC/JLCPCB part numbers attached, and generate batch outputs (STEP, PDF, Gerber, BOM, CPL) from an OutJob, by driving Altium via DelphiScript.", "tags": [