← Commit history
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": [