From 496a88c0260e9d2c5249391d0a8f4327d215f79a Mon Sep 17 00:00:00 2001 From: Jack Champagne Date: Thu, 9 Jul 2026 12:51:49 -0400 Subject: [PATCH 1/2] =?UTF-8?q?docs(amicode-patches):=20document=20how=20a?= =?UTF-8?q?micode=20consumes=20the=20fork=20(=C2=A75)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cross-references the new amicode-side build DX (harmoniqs/amicode): release-default vendoring, `pnpm opencode:build` / `opencode:pin`, and assert_ui_gate.sh. Complements gotcha 2 (the channel gate) with the consumption workflow, and reinforces § 4 — only a compiled binary shows amicode surfaces (run-from-source proxies the public app). Co-Authored-By: Claude Opus 4.8 (1M context) --- AMICODE-PATCHES.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/AMICODE-PATCHES.md b/AMICODE-PATCHES.md index c80793acb..d1cae4c03 100644 --- a/AMICODE-PATCHES.md +++ b/AMICODE-PATCHES.md @@ -87,6 +87,24 @@ PATH="$HOME/.bun/bin:$PATH" OPENCODE_VERSION=1.17.3 OPENCODE_CHANNEL=dev bun run serve local app assets; only the compiled binary embeds them. (Env kill-switch: `disableEmbeddedWebUi` → proxy mode.) +### 5. How amicode consumes this fork + +amicode (`harmoniqs/amicode`, `packages/extension`) vendors a compiled binary of this fork; it +never runs it from source (per § 4, run-from-source proxies the public `app.opencode.ai`, so the +amicode-branded surfaces only exist in a compiled build). + +- **Default = pinned release.** `opencode.lock.json` `source: release` → a plain `pnpm install` + downloads the pinned, gate-ON release asset. Teammates need no clone/bun. Changing this fork is + an explicit command, never a lock edit. +- **Iterate:** clone this fork beside amicode (`../opencode`), then from amicode run + `pnpm --filter amicode-v2 opencode:build` → invokes `script/build.ts` with `OPENCODE_CHANNEL=dev` + (gotcha 2) and re-vendors the binary. Reload the Extension Dev Host to pick it up. +- **Publish:** push a branch here, tag a release (the release workflow builds both targets with + `dev` and asserts the gate ON), then from amicode `pnpm --filter amicode-v2 opencode:pin ` + to rewrite amicode's lock (downloads + sha256-verifies both assets). +- amicode's `packages/extension/scripts/assert_ui_gate.sh` reds CI/release if any vendored binary + ships with the gate OFF — the automated form of gotcha 2's grep. + ## Branding map (v1.17.3) User-visible brand sites in the served web app (packages/app + packages/ui), enumerated at tag v1.17.3. From 9c1683dd10b993e6aab687583f9d71800f976d48 Mon Sep 17 00:00:00 2001 From: Jack Champagne Date: Mon, 27 Jul 2026 23:07:34 -0400 Subject: [PATCH 2/2] docs: correct pnpm filter to amicode (amicode-v2 does not exist) --- AMICODE-PATCHES.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AMICODE-PATCHES.md b/AMICODE-PATCHES.md index d1cae4c03..c2da0deab 100644 --- a/AMICODE-PATCHES.md +++ b/AMICODE-PATCHES.md @@ -97,10 +97,10 @@ amicode-branded surfaces only exist in a compiled build). downloads the pinned, gate-ON release asset. Teammates need no clone/bun. Changing this fork is an explicit command, never a lock edit. - **Iterate:** clone this fork beside amicode (`../opencode`), then from amicode run - `pnpm --filter amicode-v2 opencode:build` → invokes `script/build.ts` with `OPENCODE_CHANNEL=dev` + `pnpm --filter amicode opencode:build` → invokes `script/build.ts` with `OPENCODE_CHANNEL=dev` (gotcha 2) and re-vendors the binary. Reload the Extension Dev Host to pick it up. - **Publish:** push a branch here, tag a release (the release workflow builds both targets with - `dev` and asserts the gate ON), then from amicode `pnpm --filter amicode-v2 opencode:pin ` + `dev` and asserts the gate ON), then from amicode `pnpm --filter amicode opencode:pin ` to rewrite amicode's lock (downloads + sha256-verifies both assets). - amicode's `packages/extension/scripts/assert_ui_gate.sh` reds CI/release if any vendored binary ships with the gate OFF — the automated form of gotcha 2's grep.