follow-up(!13): post-merge tasks after Terra Classic wallet matrix (#11) #13

Closed
opened 2026-08-26 01:43:07 +00:00 by PlasticDigits · 11 comments
PlasticDigits commented 2026-08-26 01:43:07 +00:00 (Migrated from gitlab.com)

Context

Shipped in !31 (closes #11): /sign/terra-classic offers the ustr-cmm wallet matrix (Station, Keplr, Leap, Cosmostation, LUNC Dash, Galaxy Station) instead of Keplr-only signArbitrary.

Local merge review (see #11 comment): no conflicts; unit + API + Playwright (19, 5 workers) green. GitLab CI was ci_quota_exceeded (not a code defect).

These items remain after merge.

Remaining work

  • Manual QA — desktop extensions: Station, Keplr, Leap, Cosmostation against staging/prod — each Connect & sign → signed_latest: true.
  • Manual QA — Android Chrome WC: LUNC Dash and Galaxy Station in-page Open / Copy pairing → signed_latest: true (no Keplr required).
  • Ops: set a Legal-owned VITE_WC_PROJECT_ID on the portal host and rebuild. Galaxy Station WC v2 is hidden until this is set. Do not copy ustr-cmm / DEX Cloud ids into git or Coolify from another app.
  • Integrator: ustr-cmm (and other redirectors) should pass the connected terra1… as account into buildSignUrl so the portal binds that address. SDK already accepts it; callers were not updated in !31.
  • UX leftover still on #10: signShell busy stays true when Terra onSign returns early (no wallet / missing extension). Fix there, not a second copy of the same bug.

Not in this issue

  • #10 Keplr stay-in-Chrome WC / busy flag (pre-!31 leftover).
  • #7 wildcard CORS.
  • CI ci_quota_exceeded — GitLab minutes/quota, same as #10. Not a code defect.
  • DEX/bridge connect bugs (cl8y-dex-terraclassic#554, cl8y-bridge-monorepo#137) — other repos.

Verify (when QA/ops land)

# Galaxy Station row appears only when the portal build has VITE_WC_PROJECT_ID
# Desktop: each injected wallet → signed_latest
# Android Chrome: LUNC Dash / Galaxy Station pairing → signed_latest
## Context Shipped in [!31](https://gitlab.com/PlasticDigits/cl8y-ecosystem-legal/-/merge_requests/13) (closes [#11](https://gitlab.com/PlasticDigits/cl8y-ecosystem-legal/-/issues/11)): `/sign/terra-classic` offers the ustr-cmm wallet matrix (Station, Keplr, Leap, Cosmostation, LUNC Dash, Galaxy Station) instead of Keplr-only `signArbitrary`. Local merge review (see [#11 comment](https://gitlab.com/PlasticDigits/cl8y-ecosystem-legal/-/work_items/11#note_3735845920)): no conflicts; unit + API + Playwright (19, 5 workers) green. GitLab CI was `ci_quota_exceeded` (not a code defect). These items remain after merge. ## Remaining work - [ ] **Manual QA — desktop extensions:** Station, Keplr, Leap, Cosmostation against staging/prod — each Connect & sign → `signed_latest: true`. - [ ] **Manual QA — Android Chrome WC:** LUNC Dash and Galaxy Station in-page Open / Copy pairing → `signed_latest: true` (no Keplr required). - [ ] **Ops:** set a Legal-owned `VITE_WC_PROJECT_ID` on the portal host and rebuild. Galaxy Station WC v2 is hidden until this is set. Do **not** copy ustr-cmm / DEX Cloud ids into git or Coolify from another app. - [ ] **Integrator:** ustr-cmm (and other redirectors) should pass the connected `terra1…` as `account` into `buildSignUrl` so the portal binds that address. SDK already accepts it; callers were not updated in !31. - [ ] **UX leftover still on [#10](https://gitlab.com/PlasticDigits/cl8y-ecosystem-legal/-/issues/10):** `signShell` `busy` stays true when Terra `onSign` returns early (no wallet / missing extension). Fix there, not a second copy of the same bug. ## Not in this issue - [#10](https://gitlab.com/PlasticDigits/cl8y-ecosystem-legal/-/issues/10) Keplr stay-in-Chrome WC / `busy` flag (pre-!31 leftover). - [#7](https://gitlab.com/PlasticDigits/cl8y-ecosystem-legal/-/issues/7) wildcard CORS. - CI `ci_quota_exceeded` — GitLab minutes/quota, same as #10. Not a code defect. - DEX/bridge **connect** bugs (`cl8y-dex-terraclassic#554`, `cl8y-bridge-monorepo#137`) — other repos. ## Verify (when QA/ops land) ```bash # Galaxy Station row appears only when the portal build has VITE_WC_PROJECT_ID # Desktop: each injected wallet → signed_latest # Android Chrome: LUNC Dash / Galaxy Station pairing → signed_latest ```
PlasticDigits commented 2026-08-26 01:43:08 +00:00 (Migrated from gitlab.com)

marked as related to #11

marked as related to #11
PlasticDigits commented 2026-08-26 01:43:08 +00:00 (Migrated from gitlab.com)

marked as related to #10

marked as related to #10
PlasticDigits commented 2026-08-26 01:43:34 +00:00 (Migrated from gitlab.com)

mentioned in issue #11

mentioned in issue #11
PlasticDigits commented 2026-08-26 01:59:38 +00:00 (Migrated from gitlab.com)

mentioned in issue #10

mentioned in issue #10
PlasticDigits commented 2026-08-26 01:59:45 +00:00 (Migrated from gitlab.com)

Agentic ops — 2026-08-26

Reviewed !31 / #11, #10, skills/terra-classic-adr036, SDK buildSignUrl, ustr-cmm ConnectedTermsGate, DEX ConnectedTermsGate.

Prod check (live terms.cl8y.com)

Check Result
API /health 200 ok
Wallet matrix in prod bundle (index-vPR1ThuM.js) Station / Keplr / Leap / Cosmostation / LUNC Dash / Galaxy Station / Open in Keplr are deployed
VITE_WC_PROJECT_ID Unset. Built legalWalletConnectProjectId() is return "". Galaxy Station WC is hidden (isGalaxyWalletConnectConfigured() === false). LUNC Dash WC v1 does not need this id.

Done in this workspace (not merged yet)

  1. SDK TermsGate now passes account into buildSignUrl (packages/cl8y-clickwrap/src/react/TermsGate.tsx). DEX already uses the default gate + account={address} — it will bind terra1… after a clickwrap publish + DEX bump. Tests: packages/cl8y-clickwrap 23/23.
  2. #10 busy leftover fixed in signShell (see #10). Not duplicated here.
  3. README production web env documents VITE_WC_PROJECT_ID.

Still this issue — Coolify (cannot do from here)

Galaxy Station row stays disabled until the Legal portal build has a Legal-owned Reown/WalletConnect Cloud id.

  1. Create a new project at https://dashboard.reown.com/ named e.g. CL8Y Legal (allowed URL https://terms.cl8y.com). Do not paste ustr-cmm / DEX / voting Cloud ids.
  2. Coolify → terms.cl8y.com web build (Vite static site, not the API):
    • Add build-time env: VITE_WC_PROJECT_ID=<that project id>
    • Keep existing VITE_API_BASE_URL=https://api.terms.cl8y.com
    • Rebuild and redeploy (Vite inlines the id; a runtime-only env change will not enable Galaxy Station).
  3. Confirm: Android Chrome → /sign/terra-classic → Galaxy Station reason is Mobile wallet, not Not available.
# After Coolify rebuild — project id must no longer compile to empty
js=$(curl -sS https://terms.cl8y.com/ | grep -oE '/assets/index-[^"]+\.js')
curl -sS "https://terms.cl8y.com${js}" | grep -o 'Galaxy Station WalletConnect is not configured'
# Bundle still contains that error string (fail-closed). The offer gate is:
# Galaxy Station row enabled on a phone = id was present at build time.

Still this issue — integrator (ustr-cmm)

ustr-cmm does not use TermsGate’s Accept button. Custom UnsignedTermsPanel calls buildSignUrl without account:

https://gitlab.com/PlasticDigits2/ustr-cmm/-/blob/master/frontend/src/components/legal/ConnectedTermsGate.tsx

Patch in PlasticDigits2/ustr-cmm (not this repo):

function UnsignedTermsPanel({ account }: { account: string }) {
  // ...
  const url = buildSignUrl(terms.sign_urls.terra_classic, {
    redirectUri: resolveLegalRedirectUri() ?? undefined,
    appName: LEGAL_CLICKWRAP.appName,
    account,
  });
  window.location.href = url;
}

// in ConnectedTermsGate:
unsigned={<UnsignedTermsPanel account={address} />}

DEX (frontend-dapp/.../ConnectedTermsGate.tsx) already passes account into SDK TermsGate. After the clickwrap version with this TermsGate fix is published, bump DEX — no DEX source change required for account=.

Still this issue — manual QA

  • Desktop: Station, Keplr, Leap, Cosmostation on prod Terra sign → each signed_latest: true
  • Android Chrome: LUNC Dash pairing → signed_latest: true (no Keplr). Galaxy Station after Coolify WC id.
  • Claimed-account fail-closed: add &account=terra1… that is not the connected wallet → reject, no accept.

No blockchain txs required. No API Coolify change for this issue.

## Agentic ops — 2026-08-26 Reviewed !31 / #11, #10, [`skills/terra-classic-adr036`](https://gitlab.com/PlasticDigits/cl8y-ecosystem-legal/-/blob/main/skills/terra-classic-adr036/SKILL.md), SDK `buildSignUrl`, ustr-cmm `ConnectedTermsGate`, DEX `ConnectedTermsGate`. ### Prod check (live `terms.cl8y.com`) | Check | Result | |-------|--------| | API `/health` | 200 `ok` | | Wallet matrix in prod bundle (`index-vPR1ThuM.js`) | Station / Keplr / Leap / Cosmostation / LUNC Dash / Galaxy Station / Open in Keplr **are deployed** | | `VITE_WC_PROJECT_ID` | **Unset.** Built `legalWalletConnectProjectId()` is `return ""`. Galaxy Station WC is hidden (`isGalaxyWalletConnectConfigured() === false`). LUNC Dash WC v1 does not need this id. | ### Done in this workspace (not merged yet) 1. **SDK `TermsGate` now passes `account` into `buildSignUrl`** (`packages/cl8y-clickwrap/src/react/TermsGate.tsx`). DEX already uses the default gate + `account={address}` — it will bind `terra1…` after a clickwrap publish + DEX bump. Tests: `packages/cl8y-clickwrap` 23/23. 2. **#10 `busy` leftover** fixed in `signShell` (see #10). Not duplicated here. 3. README production web env documents `VITE_WC_PROJECT_ID`. ### Still this issue — Coolify (cannot do from here) Galaxy Station row stays disabled until the **Legal portal** build has a Legal-owned Reown/WalletConnect Cloud id. 1. Create a **new** project at https://dashboard.reown.com/ named e.g. `CL8Y Legal` (allowed URL `https://terms.cl8y.com`). Do **not** paste ustr-cmm / DEX / voting Cloud ids. 2. Coolify → **terms.cl8y.com web build** (Vite static site, not the API): - Add build-time env: `VITE_WC_PROJECT_ID=<that project id>` - Keep existing `VITE_API_BASE_URL=https://api.terms.cl8y.com` - **Rebuild and redeploy** (Vite inlines the id; a runtime-only env change will not enable Galaxy Station). 3. Confirm: Android Chrome → `/sign/terra-classic` → Galaxy Station reason is **Mobile wallet**, not **Not available**. ```bash # After Coolify rebuild — project id must no longer compile to empty js=$(curl -sS https://terms.cl8y.com/ | grep -oE '/assets/index-[^"]+\.js') curl -sS "https://terms.cl8y.com${js}" | grep -o 'Galaxy Station WalletConnect is not configured' # Bundle still contains that error string (fail-closed). The offer gate is: # Galaxy Station row enabled on a phone = id was present at build time. ``` ### Still this issue — integrator (ustr-cmm) ustr-cmm **does not use** `TermsGate`’s Accept button. Custom `UnsignedTermsPanel` calls `buildSignUrl` without `account`: https://gitlab.com/PlasticDigits2/ustr-cmm/-/blob/master/frontend/src/components/legal/ConnectedTermsGate.tsx Patch in **PlasticDigits2/ustr-cmm** (not this repo): ```tsx function UnsignedTermsPanel({ account }: { account: string }) { // ... const url = buildSignUrl(terms.sign_urls.terra_classic, { redirectUri: resolveLegalRedirectUri() ?? undefined, appName: LEGAL_CLICKWRAP.appName, account, }); window.location.href = url; } // in ConnectedTermsGate: unsigned={<UnsignedTermsPanel account={address} />} ``` DEX (`frontend-dapp/.../ConnectedTermsGate.tsx`) already passes `account` into SDK `TermsGate`. After the clickwrap version with this TermsGate fix is published, bump DEX — no DEX source change required for `account=`. ### Still this issue — manual QA - [ ] Desktop: Station, Keplr, Leap, Cosmostation on [prod Terra sign](https://terms.cl8y.com/sign/terra-classic?property=ust1cmm.com) → each `signed_latest: true` - [ ] Android Chrome: LUNC Dash pairing → `signed_latest: true` (no Keplr). Galaxy Station after Coolify WC id. - [ ] Claimed-account fail-closed: add `&account=terra1…` that is **not** the connected wallet → reject, no accept. No blockchain txs required. No API Coolify change for this issue.
PlasticDigits commented 2026-08-26 04:08:01 +00:00 (Migrated from gitlab.com)

mentioned in issue cl8y-dex-terraclassic#658

mentioned in issue cl8y-dex-terraclassic#658
PlasticDigits commented 2026-08-29 11:21:11 +00:00 (Migrated from gitlab.com)

mentioned in issue #14

mentioned in issue #14
PlasticDigits commented 2026-08-31 04:58:07 +00:00 (Migrated from gitlab.com)

mentioned in issue #16

mentioned in issue #16
PlasticDigits commented 2026-08-31 04:58:23 +00:00 (Migrated from gitlab.com)

mentioned in issue #18

mentioned in issue #18
PlasticDigits commented 2026-08-31 09:23:19 +00:00 (Migrated from gitlab.com)

Verify — 2026-08-31

Re-checked leftover #13 items against main (4f29049) and live terms.cl8y.com.

Already on main / live

  • Wallet matrix in prod: Station, Keplr, Leap, Cosmostation, LUNC Dash, Galaxy Station, Open in Keplr
  • LUNC Dash row: Mobile wallet (WC v1 does not need Cloud id)
  • SDK TermsGate Accept forwards account (0.1.1+, packages/cl8y-clickwrap); unit test green
  • #10 busy leftover is fixed in signShell (not duplicated here)

Coolify / ops — still blocked

  • VITE_WC_PROJECT_ID: prod bundle still has Galaxy Station WalletConnect not configured. Live picker shows Galaxy Station Not available. Create a Legal-owned Reown project (https://terms.cl8y.com), set the id on the web Coolify build, rebuild (Vite inlines it). Do not copy ustr-cmm / DEX Cloud ids.

Integrator — other repo

  • ustr-cmm UnsignedTermsPanel still calls buildSignUrl without account (PlasticDigits2/ustr-cmm). DEX default TermsGate is fine after clickwrap bump.

Manual QA — still needs a person

  • Desktop: Station, Keplr, Leap, Cosmostation on prod Terra sign → each signed_latest: true
  • Android Chrome: LUNC Dash pairing → signed_latest: true. Galaxy Station after Coolify WC id.
  • Claimed-account fail-closed: &account=terra1… that is not the connected wallet → reject, no accept

Leaving open until ops + real-wallet QA land.

## Verify — 2026-08-31 Re-checked leftover #13 items against `main` (`4f29049`) and live `terms.cl8y.com`. ### Already on main / live - [x] Wallet matrix in prod: Station, Keplr, Leap, Cosmostation, LUNC Dash, Galaxy Station, Open in Keplr - [x] LUNC Dash row: **Mobile wallet** (WC v1 does not need Cloud id) - [x] SDK `TermsGate` Accept forwards `account` (`0.1.1+`, `packages/cl8y-clickwrap`); unit test green - [x] #10 `busy` leftover is fixed in `signShell` (not duplicated here) ### Coolify / ops — still blocked - [ ] **`VITE_WC_PROJECT_ID`:** prod bundle still has Galaxy Station WalletConnect **not configured**. Live picker shows Galaxy Station **Not available**. Create a Legal-owned Reown project (`https://terms.cl8y.com`), set the id on the **web** Coolify build, rebuild (Vite inlines it). Do **not** copy ustr-cmm / DEX Cloud ids. ### Integrator — other repo - [ ] ustr-cmm `UnsignedTermsPanel` still calls `buildSignUrl` without `account` (PlasticDigits2/ustr-cmm). DEX default `TermsGate` is fine after clickwrap bump. ### Manual QA — still needs a person - [ ] Desktop: Station, Keplr, Leap, Cosmostation on [prod Terra sign](https://terms.cl8y.com/sign/terra-classic?property=ust1cmm.com) → each `signed_latest: true` - [ ] Android Chrome: LUNC Dash pairing → `signed_latest: true`. Galaxy Station after Coolify WC id. - [ ] Claimed-account fail-closed: `&account=terra1…` that is not the connected wallet → reject, no accept Leaving open until ops + real-wallet QA land.
PlasticDigits commented 2026-08-31 11:18:06 +00:00 (Migrated from gitlab.com)

Closing after API + web redeploy check.

Remaining real-wallet / integrator smoke is pending a user reopening report if something still fails in the wild.

Closing after API + web redeploy check. Remaining real-wallet / integrator smoke is pending a user reopening report if something still fails in the wild.
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-08-31 11:18:08 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
code/cl8y-ecosystem-legal#13
No description provided.