Skip to content

Commit 1ba870f

Browse files
Oba-Oneclaude
andauthored
fix(shared,client,agent): harden vault crowdfunding flow (#543)
* Lock public endowment recovery to vault/endow scope * docs(agent): lock NYC vault demo phases * style(client,agent): format push-blocking files * docs(agent): rename NYC vault plan hub * docs(agent): correct vault crowdfunding route scope * docs(agent): lock vault pilot fixture scope * docs(agent): promote vault skill lane * feat(shared,client): add vault campaign route foundation * feat(shared): add Card Endow proof contracts * feat(shared,client): add Octant wallet endow flow * fix(shared,client,agent): harden vault card endow readiness * docs: refresh vault crowdfunding Linear proof * fix(client,shared): harden vault Card Endow QA * fix(agent): harden preview CORS and Fly runtime image * fix(agent): pin Fly Bun image version * fix(agent): avoid Fly production lock drift * fix(agent): include workspace manifests in Fly image * fix(agent): use production deps in Fly image * fix(agent): restore Fly build type graph * fix(agent): include shared runtime exports in Fly image * fix(agent): copy package node modules in Fly image * fix(agent): run Fly import check from package cwd * fix(agent): restore Fly workspace image layout * fix(agent): slim Fly runtime image * fix(shared,client,agent): ship vault card endow proof * fix(agent): allow Green Goods Vercel previews * fix(agent): reduce Fly build graph * fix(client,shared): harden vault checkout flow state * fix(client): stabilize vault checkout flow * fix(client,shared): stabilize vault checkout layout * fix(client): keep vaults on editorial shell * test(client): cover vaults public shell routes * fix(client,shared): harden vault checkout QA * fix(shared,client): harden vault checkout presentation * fix(shared,client): align vault WETH checkout UX * fix(client,shared): redesign vault endow checkout UX * fix(shared,client): enable card endow for both vaults Treat Greenpill NYC and EVMavericks as card-ready from their supplied Octant vault tuples and keep live value movement proof-gated. * fix(client,shared): repair vault checkout regressions Repairs regressions in the /vaults Octant endow checkout plus the aligned UX fixes confirmed with the user. - Stable surface: one fixed height across every step (desktop dialog, moderate mobile sheet) so the checkout no longer resizes between steps. - Freeze the settlement amount at "Continue" so a live ETH/USD price tick can no longer reset progress or strand an in-flight transaction (the root cause of the wallet "Submitting…" hang and the card re-submit churn). - Wallet success: real success screen with explorer link, Fund link and a Done button that closes the sheet; lifecycle toast re-enabled. The Confirm button is replaced on success, so a completed endowment cannot be double-submitted. - Card path: combine approve + deposit into one "Complete endowment" action (staged Approving…/Depositing…, retry resumes at deposit), drop the redundant confirm checkbox; all safety gates preserved. - Recovery affordance: after ~30s a stuck transaction shows "taking longer" and unlocks close (no retry) so funds-in-flight are never a dead end. - Restore the green campaign Endow CTA. - Campaign cards show an on-chain vault total via a new read-only useOctantVaultStats hook (no wallet runtime; donor counts are a follow-up). - New/updated strings in en/es/pt; obsolete card-stage keys removed. - Tests cover amount-freeze, wallet success/no-double-submit, the combined card flow, the dropped checkbox, and the stats strip. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(client,shared): declutter vault campaign card Drop the repetitive "Guardrail" detail row (identical boilerplate across campaigns) and remove the redundant EditorialDivider between the on-chain "In vault" stat and the campaign story — the stats band already carries its own border, so the divider plus the surrounding gap stacked ~49px of dead whitespace. Story → 24px gap. Removes the now-orphaned card.guardrail i18n key from en/es/pt (parity preserved); riskNote campaign data is retained in the model, just no longer surfaced on the card. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(client,shared): refine vaults hero/section copy, drop Vaults from nav - Hero subtitle: replace the "Wallet Endow and Card Endow open…" mechanics with purpose-led copy ("Fund public-goods work that keeps giving — your contribution settles into a dedicated Octant vault, and the position stays yours."). - Section subtitle: replace the web3-centric "No wallet connection needed to browse." with supporter-facing impact copy. - Remove the Vaults entry from the public SiteHeader nav (the /vaults route stays reachable directly); drop the now-orphaned public.nav.vaults i18n key. - Update SiteHeader + display-mode nav tests to the four-item nav, and the PublicVaults assertion to the new section copy. es/pt translations updated. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(shared,client): block wallet endow before approving when WETH is short The Octant vaults pull WETH via transferFrom on deposit. Wallet Endow approved then deposited WETH with no balance check, so a wallet holding ETH (not WETH) would approve successfully and then fail the deposit with an opaque simulation revert. Add a pre-flight WETH balanceOf check in useOctantVaultWalletEndow before the approval: if the connected wallet holds less than the endow amount, throw a clear error (reason "insufficientBalance") so no approval transaction ever fires. The balance read fails open so a flaky RPC can't block a valid deposit. Surface a specific "wrap ETH to WETH first" message inline in the checkout sheet (en/es/pt) instead of the generic wallet error, and suppress the competing error toast for this reason. Export VaultDepositStageError + reason type from the barrel; add ERC20_BALANCE_ABI. Tests: hook test (insufficient WETH -> throws before any sendContractCall), dialog test (clear message surfaces), and fix the existing two-step deposit test's read sequence for the new balanceOf call. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat(shared,client): route-local vault position management on /vaults Add /vaults?manage=positions route-local management of Octant V2 Ethereum WETH vault positions, for both connected-wallet and card/recovered email-wallet owners. Endow now hands off to in-route position management instead of /fund. shared: - useOctantVaultPositions: owner-agnostic chain-aware reads (balanceOf -> convertToAssets + maxWithdraw at DEFAULT_WITHDRAW_MAX_LOSS_BPS); active positions only. - useOctantVaultWithdraw: connected-wallet write via transaction sender with chainId threaded; mirrors useOctantVaultWalletEndow. - octant-vault-card-wallet-cache: localStorage of safe fields only (recovered wallet, campaign slug, vault address, chainId, timestamp) - no email/provider/receipt/PII, no URL leakage. - octantPositions query key + barrel exports. client: - VaultManagePositionsPanel: desktop side-sheet / mobile bottom-sheet, Connected/Card wallet tabs, collapsed->expand->max->amount->review-> confirm withdraw row. - VaultCardWalletManage (lazy): thirdweb autoConnect session rehydration (no re-verify after a just-completed endow) with restore-email fallback. - Vaults wiring: ?manage=positions param, visible Manage positions entry, endow-success 'Manage vault position' handoff. - Remove /fund CTAs/copy from vault checkout success and slow states. i18n: en/es/pt for manage panel + revised checkout copy. Max button uses locale-independent formatUnits (round-trips through parseUnits); the old display formatter filled 15 WETH for 1.5 in comma-decimal locales. Discriminating regression test added (red-green proven). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(client,shared): replace vault card widget with bridge panel * fix(shared): raise storybook build heap * fix(shared,client): implement Octant vault QA fixes * ci: pin bun version in workflows * fix(shared,client,agent): harden vault card QA fixes * fix(shared): harden vault wrap and localize copy * test(admin): cover viem address mock * fix(shared,client): finish Octant vault QA Implement shares-first Octant redeem handling for vault positions, including maxRedeem-based limits, redeem argument construction, WETH proceeds previews, and visible unavailable states. Add the conservative aggregate project-supporting value metric with unavailable/zero/positive coverage. Refs PRD-441 Refs PRD-587 Refs PRD-589 * feat(client): streamline card endow batch settlement * fix(shared,client): use Octant redeem signature * fix(shared,client): enforce card minimum and streamline card endow flow Card endow QA fixes from manual testing: - Enforce the $2 Stripe/Coinbase onramp buyer minimum at the amount step (card method only) with inline error, tile subtitle hint, and a shared OCTANT_VAULT_CARD_ENDOW_MIN_USD_CENTS constant, instead of failing with a generic prepare error after checkout opens. - Remove the redundant "Review card route" step: email verification now lands directly on the pay screen (2 steps, was 3). Route facts and the technical WETH details expander move beside the payment CTA. Checkout locking shifts from screen entry to payment-session-active, so Back stays available until "Open secure card checkout" is clicked and returns after a FAILED reset. - Fix the stranded about:blank checkout tab: noopener/noreferrer in the window.open features string made the handle null in real browsers, so the pre-opened tab could never be redirected (test mocks hid this). Sever opener manually and redirect via location.replace. - Make the 5s payment-status poll visually silent: background checks no longer clear statusOutcome/busy upfront, so the pending notice stops blinking and shifting content every poll cycle. Poll scheduling moves to the shared useTimeout hook with an explicit re-arm tick, and provider prepare/status failures are logged instead of swallowed. - Translate the es/pt fallback-stage eyebrow that locale coverage flagged as an English-identical value. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs(design): regenerate client PWA token audit after card endow refactor Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(shared,client,agent): harden card endow proof gates and recovery /vaults Card Endow production hardening: - Three visible donor stages: verify email wallet (1/3), secure card payment (2/3), vault deposit and proof (3/3); the OTP field renders only after a code is sent. - Settlement proof gates before any approve/deposit: the prepared onramp quote must match the exact chain/WETH/receiver/amount route, Onramp.status must be COMPLETED with a non-contradicting purchase tuple, and WETH balanceOf(receiver) must cover the expected amount. Failures stay route-local and recoverable; approve then deposit ordering and the inline Step 3 fallback are preserved. - Pending-funded recovery: once a payment is provably COMPLETED the safe public tuple (wallet, campaign, vault, chain, token, amount, status) is cached so /vaults?manage=positions can finish the deposit later; confirmed shares upgrade the entry. No emails, OTPs, provider or receipt identifiers are ever cached or placed in URLs. - Agent proof route now fails closed without server-side verifiers and reads vault.balanceOf(receiver) on-chain instead of trusting the client-supplied shareBalance; production wires chain-aware tuple and share verification through per-chain RPC resolution. - EVMavericks gains its live /vaults provider-proof entry so the client Card Endow allowlist and the agent registry stay in lockstep. - Spanish /vaults strings normalized for missing diacritics; vacuous txHash null comparison removed (CodeQL). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs(design): regenerate client PWA token audit after develop merge Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs(plans): record card endow production hardening evidence Plan-hub follow-up for the /vaults Card Endow hardening shipped in ca05de9..bfb28a6 on PR 543: - status.json: productionHardening evidence block (donor flow stages, settlement proof gates, pending-funded recovery, server-side agent share proof, provider-proof registry sync, validation runs), two history entries, and linear.productionHardeningComments mapping the posted Linear comment IDs (PRD-441/442/443/444). - plan.todo.md: decision log rows 22-23 and hardening validation items. - eval.md: AC-8/AC-9/AC-11/AC-11a evidence updated with the 2026-06-12 hardening proof. Linear updates were comments only; no state changes. plan-hub linear-sync returns zero warnings. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(agent): add schema-backed Octant vault skill * chore(agent): remove extracted Octant skill from PR * refactor(agent): switch public signup to Resend provider * fix(client): prefetch vault card onramp and buy ETH not USDC Two QA fixes for the /vaults Octant card endow checkout, both in the headless Bridge.Onramp panel: - Prefetch the onramp session when the pay step opens so the secure checkout link is ready instantly. Removes the about:blank placeholder tab and the prepare() wait; opening is now a synchronous window.open from the click gesture. Locking is gated on opening (not on a session existing), so a prefetched session no longer locks Back prematurely. - Route the onramp to ETH (Coinbase first, onrampTokenAddress=ETH) so the donor buys ETH, which Bridge wraps into the vault's WETH, instead of a USDC intermediate. Destination tuple stays WETH; proof gates intact. Verified the receiver always settles in WETH via a live prepare() quote on both providers. 586/586 client tests pass; tsc + oxlint clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(client): drop onramp ETH intermediate that 400s on client Bridge The prior commit passed onrampTokenAddress=ETH to Bridge.Onramp.prepare to avoid the USDC step. That param is accepted on the server/secret-key path but rejected with 400 INVALID_INPUT by the client-scoped (browser client ID) onramp, so card checkout could not open at all. Remove it and rely on each provider's native default — Coinbase (primary) onramps to ETH, Stripe (fallback) to USDC. Restores the pre-regression call shape; the prefetch and Coinbase-first order are kept. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(client): wrap native ETH to WETH in card endow settlement Close the gap where card endow stalled at funds_pending if the onramp left native ETH (not WETH) in the recovered wallet. The pay panel now gates on combined WETH + native-ETH coverage and reports the ETH shortfall; settlement prepends a WETH deposit(){value} wrap before approve+deposit inside the sponsored EIP-7702 batch (one gasless op), with the same wrap in the sequential fallback guarded against double-wrap on retry. Correct whether Bridge delivers WETH, native ETH, or a mix; the onramp call and proof/validators are unchanged. Tests: 3 new PublicVaults cases (3-tx wrap batch, partial-WETH shortfall, sequential wrap idempotency); 589/589 client tests pass, tsc + oxlint clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(plans): park card endow flow, ship wallet-only 2026-06-22 decision after human QA: the card-funded Card Endow flow is built and saved on this branch but PARKED, not shipping. Ethereum-mainnet card settlement (~5 min for onramp funds to land) plus onramp KYC and ETH->WETH wrapping is unviable for the non-crypto-savvy target donors. First /vaults release ships Wallet Endow only; a viable card flow would target a fast chain (Arbitrum) but is not committed (reopens 'Arbitrum is context, not target'). Records the decision in plan.todo.md (Decision 24 + 'Card Flow — Parked' section) and status.json (workflow.cardEndowDisposition + dated notes). No card code changed; the built flow stays saved on feature/nyc-vault-crowdfunding. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(shared,client): live strategy APY + real pilot copy on /vaults - Add useOctantVaultStrategyApy + a yearn-v3 yield-source adapter: reads the pilots' inner Yearn V3 vault APR from yDaemon as the strategy's gross/donation-funding rate, degrading to an honest 'unavailable' state (never invents a number). Source recorded in the manifest since the YDS strategy exposes no on-chain getter. - Render the live source rate and clarify the aggregate project-support metric; add the withdraw-in-full ownership narrative. - Reserve gas headroom before offering an in-checkout ETH->WETH wrap so a near-empty-ETH wallet can't strand the follow-on approve/deposit. - Rework campaign cards: funding purpose is the description, 'Where your support goes' replaces recipient-logic mechanics, Manage positions is a text button. Real pilot copy (Greenpill NYC / Decentral Park; EVMavericks fantasy league 12.5% -> Protocol Guild, 87.5% league winnings) across en/es/pt. - Trim verbose non-rendered manifest metadata. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore(client): regenerate PWA token audit (DesignMD) Refreshes the generated DesignMD token-usage audit so check:design-generated passes — the committed artifact had drifted from current source line numbers, failing the Design Guardrails gate on PR #543. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(shared,client): remove stale recovery copy * Tighten vault card layout and copy * fix(client): adjust vault card story layout * Remove vault checkout payment-method picker * fix(shared,client): tighten recovery flow validation * fix(shared,client): harden vault endow checkout Keep wallet endow checkout one-step, preserve clean vault routing, and keep in-flight transactions close-locked through slow recovery messaging. * fix(client): block vault endow in local fork mode Disable Ethereum Octant Wallet Endow before submit when the local Arbitrum fork runtime is active, so QA sees a clear blocked state instead of a toast-time mutation failure. * fix(shared,client): scope editorial toast styling * fix(client): stabilize vault checkout validation layout * chore: update repo context and cleanup * Refine vault checkout layout and test expectations * Clarify vault checkout step labels and recovery copy * refactor(shared,client): simplify recovery flow --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent f7f221f commit 1ba870f

214 files changed

Lines changed: 24009 additions & 2602 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dockerignore

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
**
2+
3+
!package.json
4+
!bun.lock
5+
6+
!packages/
7+
!packages/admin/
8+
!packages/admin/package.json
9+
!packages/agent/
10+
!packages/agent/**
11+
!packages/client/
12+
!packages/client/package.json
13+
!packages/contracts/
14+
!packages/contracts/package.json
15+
!packages/contracts/abis/
16+
!packages/contracts/abis/**
17+
!packages/contracts/deployments/
18+
!packages/contracts/deployments/**
19+
!packages/indexer/
20+
!packages/indexer/package.json
21+
!packages/shared/
22+
!packages/shared/package.json
23+
!packages/shared/src/
24+
!packages/shared/src/**
25+
26+
!docs/
27+
!docs/package.json
28+
!scripts/
29+
!scripts/**
30+
31+
packages/agent/dist/

.env.schema

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ VITE_USE_HASH_ROUTER=false
303303
TELEGRAM_BOT_TOKEN_OP_REF=
304304
ENCRYPTION_SECRET_OP_REF=
305305
TELEGRAM_WEBHOOK_SECRET_OP_REF=
306-
RESEND_API_KEY_OP_REF=
306+
LUMA_API_KEY_OP_REF=
307307
THIRDWEB_SECRET_KEY_OP_REF=
308308
THIRDWEB_WEBHOOK_SECRET_OP_REF=
309309
# @required=forEnv(staging,production)
@@ -326,9 +326,11 @@ TELEGRAM_IDEAS_TOPIC=
326326
DB_PATH=data/agent.db
327327
LOG_LEVEL=
328328
BOT_API_TOKEN=
329-
RESEND_API_KEY=if($RESEND_API_KEY_OP_REF, op($RESEND_API_KEY_OP_REF), '')
330-
RESEND_GREEN_GOODS_SEGMENT_ID=
331-
RESEND_GREEN_GOODS_TOPIC_ID=
329+
LUMA_API_KEY=if($LUMA_API_KEY_OP_REF, op($LUMA_API_KEY_OP_REF), '')
330+
LUMA_CALENDAR_ID=
331+
LUMA_GREEN_GOODS_TAG_ID=
332+
# @public
333+
LUMA_GREEN_GOODS_TAG_NAME=Subscriber
332334
# Public thirdweb client ID used by agent-created checkout sessions.
333335
# Not required on client/admin Vercel projects.
334336
# @public

.env.template

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
# @defaultRequired=false
1212
# @plugin(@varlock/1password-plugin@0.2.2)
1313
# @initOp(token=$OP_SERVICE_ACCOUNT_TOKEN, allowAppAuth=forEnv(development,test))
14-
# @setValuesBulk(if($OP_ENABLE_ENVIRONMENT_LOAD, if($OP_ENVIRONMENT, opLoadEnvironment($OP_ENVIRONMENT), ''), '')
14+
# @setValuesBulk(if($OP_ENABLE_ENVIRONMENT_LOAD, if($OP_ENVIRONMENT, opLoadEnvironment($OP_ENVIRONMENT), ''), ''))
1515
# ---
1616

1717
# =====================================================================
@@ -312,9 +312,11 @@ TELEGRAM_WEBHOOK_SECRET=op://GreenGoods/TELEGRAM_WEBHOOK_SECRET/credential
312312
DB_PATH=data/agent.db
313313
LOG_LEVEL=
314314
BOT_API_TOKEN=
315-
RESEND_API_KEY=op://GreenGoods/RESEND_API_KEY/credential
316-
RESEND_GREEN_GOODS_SEGMENT_ID=
317-
RESEND_GREEN_GOODS_TOPIC_ID=
315+
LUMA_API_KEY=op://GreenGoods/LUMA_API_KEY/credential
316+
LUMA_CALENDAR_ID=op://GreenGoods/LUMA_CALENDAR_ID/credential
317+
LUMA_GREEN_GOODS_TAG_ID=
318+
# @public
319+
LUMA_GREEN_GOODS_TAG_NAME=Subscriber
318320
THIRDWEB_SECRET_KEY=op://GreenGoods/THIRDWEB_SECRET_KEY/credential
319321
THIRDWEB_WEBHOOK_SECRET=op://GreenGoods/THIRDWEB_WEBHOOK_SECRET/credential
320322
# @required=forEnv(staging,production)

.github/workflows/admin.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ jobs:
6969
- name: Setup Bun
7070
uses: oven-sh/setup-bun@v2
7171
with:
72-
bun-version: latest
72+
bun-version: 1.3.10
7373

7474
- name: Install dependencies
7575
run: bun install --frozen-lockfile
@@ -96,7 +96,7 @@ jobs:
9696
- name: Setup Bun
9797
uses: oven-sh/setup-bun@v2
9898
with:
99-
bun-version: latest
99+
bun-version: 1.3.10
100100

101101
- name: Install dependencies
102102
run: bun install --frozen-lockfile
@@ -136,7 +136,7 @@ jobs:
136136
- name: Setup Bun
137137
uses: oven-sh/setup-bun@v2
138138
with:
139-
bun-version: latest
139+
bun-version: 1.3.10
140140

141141
- name: Install dependencies
142142
run: bun install --frozen-lockfile
@@ -171,7 +171,7 @@ jobs:
171171
- name: Setup Bun
172172
uses: oven-sh/setup-bun@v2
173173
with:
174-
bun-version: latest
174+
bun-version: 1.3.10
175175

176176
- name: Setup pnpm
177177
uses: pnpm/action-setup@v6
@@ -236,7 +236,7 @@ jobs:
236236
- name: Setup Bun
237237
uses: oven-sh/setup-bun@v2
238238
with:
239-
bun-version: latest
239+
bun-version: 1.3.10
240240

241241
- name: Install dependencies
242242
run: bun install --frozen-lockfile

.github/workflows/agent.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545
- name: Setup Bun
4646
uses: oven-sh/setup-bun@v2
4747
with:
48-
bun-version: latest
48+
bun-version: 1.3.10
4949

5050
- name: Install dependencies
5151
run: bun install --frozen-lockfile
@@ -74,7 +74,7 @@ jobs:
7474
- name: Setup Bun
7575
uses: oven-sh/setup-bun@v2
7676
with:
77-
bun-version: latest
77+
bun-version: 1.3.10
7878

7979
- name: Install dependencies
8080
run: bun install --frozen-lockfile

.github/workflows/client.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ jobs:
6969
- name: Setup Bun
7070
uses: oven-sh/setup-bun@v2
7171
with:
72-
bun-version: latest
72+
bun-version: 1.3.10
7373

7474
- name: Install dependencies
7575
run: bun install --frozen-lockfile
@@ -96,7 +96,7 @@ jobs:
9696
- name: Setup Bun
9797
uses: oven-sh/setup-bun@v2
9898
with:
99-
bun-version: latest
99+
bun-version: 1.3.10
100100

101101
- name: Install dependencies
102102
run: bun install --frozen-lockfile
@@ -137,7 +137,7 @@ jobs:
137137
- name: Setup Bun
138138
uses: oven-sh/setup-bun@v2
139139
with:
140-
bun-version: latest
140+
bun-version: 1.3.10
141141

142142
- name: Install dependencies
143143
run: bun install --frozen-lockfile
@@ -173,7 +173,7 @@ jobs:
173173
- name: Setup Bun
174174
uses: oven-sh/setup-bun@v2
175175
with:
176-
bun-version: latest
176+
bun-version: 1.3.10
177177

178178
- name: Setup pnpm
179179
uses: pnpm/action-setup@v6
@@ -238,7 +238,7 @@ jobs:
238238
- name: Setup Bun
239239
uses: oven-sh/setup-bun@v2
240240
with:
241-
bun-version: latest
241+
bun-version: 1.3.10
242242

243243
- name: Install dependencies
244244
run: bun install --frozen-lockfile

.github/workflows/contracts.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ jobs:
6262
- name: Setup Bun
6363
uses: oven-sh/setup-bun@v2
6464
with:
65-
bun-version: latest
65+
bun-version: 1.3.10
6666

6767
- name: Install dependencies
6868
run: bun install --frozen-lockfile
@@ -96,7 +96,7 @@ jobs:
9696
- name: Setup Bun
9797
uses: oven-sh/setup-bun@v2
9898
with:
99-
bun-version: latest
99+
bun-version: 1.3.10
100100

101101
- name: Install dependencies
102102
run: bun install --frozen-lockfile
@@ -134,7 +134,7 @@ jobs:
134134
- name: Setup Bun
135135
uses: oven-sh/setup-bun@v2
136136
with:
137-
bun-version: latest
137+
bun-version: 1.3.10
138138

139139
- name: Install dependencies
140140
run: bun install --frozen-lockfile
@@ -230,7 +230,7 @@ jobs:
230230
- name: Setup Bun
231231
uses: oven-sh/setup-bun@v2
232232
with:
233-
bun-version: latest
233+
bun-version: 1.3.10
234234

235235
- name: Install dependencies
236236
run: bun install --frozen-lockfile

.github/workflows/design.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ jobs:
9494
- name: Setup Bun
9595
uses: oven-sh/setup-bun@v2
9696
with:
97-
bun-version: latest
97+
bun-version: 1.3.10
9898

9999
- name: Install dependencies
100100
run: bun install --frozen-lockfile
@@ -130,7 +130,7 @@ jobs:
130130
- name: Setup Bun
131131
uses: oven-sh/setup-bun@v2
132132
with:
133-
bun-version: latest
133+
bun-version: 1.3.10
134134

135135
- name: Install dependencies
136136
run: bun install --frozen-lockfile

.github/workflows/docs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545
- name: Setup Bun
4646
uses: oven-sh/setup-bun@v2
4747
with:
48-
bun-version: latest
48+
bun-version: 1.3.10
4949

5050
- name: Install dependencies
5151
run: bun install --frozen-lockfile

.github/workflows/indexer.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ jobs:
4747
- name: Setup Bun
4848
uses: oven-sh/setup-bun@v2
4949
with:
50-
bun-version: latest
50+
bun-version: 1.3.10
5151

5252
- name: Setup pnpm
5353
uses: pnpm/action-setup@v6
@@ -97,7 +97,7 @@ jobs:
9797
- name: Setup Bun
9898
uses: oven-sh/setup-bun@v2
9999
with:
100-
bun-version: latest
100+
bun-version: 1.3.10
101101

102102
- name: Setup pnpm
103103
uses: pnpm/action-setup@v6

0 commit comments

Comments
 (0)