chore: q2 2026 upgrade - #888
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughThe PR updates Polkadot API client setup and binary decoding, hardens GraphQL and UI data handling, changes dropdown and OG image interfaces, refreshes project dependencies and build configuration, and applies documentation and import-order updates. ChangesPolkadot API migration
Estimated code review effort: 3 (Moderate) | ~25 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
ESLint install failed. For unrecoverable errors, disable the tool in CodeRabbit configuration. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Deploying app with
|
| Latest commit: |
b7e7fb4
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://a2287309.app-bzd.pages.dev |
| Branch Preview URL: | https://chore-q2-2026-upgrade.app-bzd.pages.dev |
|
🚅 Deployed to the app-pr-888 environment in chaotic-art-preview
|
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (2)
app/utils/polkadotSdkCompat.ts (1)
1-3: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueRemove the unused compatibility wrapper
app/utils/polkadotSdkCompat.ts:1—withPolkadotSdkCompatis a no-op and isn’t referenced elsewhere. Remove it, or add a short comment if it’s meant to stay as future scaffolding.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@app/utils/polkadotSdkCompat.ts` around lines 1 - 3, Remove the unused no-op withPolkadotSdkCompat function and its app/utils/polkadotSdkCompat.ts module; if the wrapper is intentionally retained as future scaffolding, add a concise comment documenting that purpose.app/utils/polkadotApiCompat.ts (1)
1-4: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAvoid the hardcoded
node_modulesdist import here. This shim is the rootpolkadot-apialias, so a future package layout change will break every import that goes through it. Use a stable entry point if one exists, or add a smoke test that fails when this path disappears.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@app/utils/polkadotApiCompat.ts` around lines 1 - 4, Replace the hardcoded ../../node_modules/polkadot-api/dist/src/index.js imports and re-export in the polkadotApiCompat shim with a stable public polkadot-api entry point, if available. If no stable entry exists, add a smoke test covering the PapiBinary import and exports so package layout changes fail clearly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@nuxt.config.ts`:
- Line 178: Update the Nuxt configuration’s storesDirs setting to target the
actual app/stores directory, using the appropriate ./app/stores/** glob so Pinia
auto-imports can discover the existing stores.
In `@package.json`:
- Around line 7-9: Update the README.md prerequisites section to match the
versions declared in package.json: require Node.js 24.x and pnpm 11.1.2,
replacing the outdated Node.js 20.x and pnpm 9+ text.
---
Nitpick comments:
In `@app/utils/polkadotApiCompat.ts`:
- Around line 1-4: Replace the hardcoded
../../node_modules/polkadot-api/dist/src/index.js imports and re-export in the
polkadotApiCompat shim with a stable public polkadot-api entry point, if
available. If no stable entry exists, add a smoke test covering the PapiBinary
import and exports so package layout changes fail clearly.
In `@app/utils/polkadotSdkCompat.ts`:
- Around line 1-3: Remove the unused no-op withPolkadotSdkCompat function and
its app/utils/polkadotSdkCompat.ts module; if the wrapper is intentionally
retained as future scaffolding, add a concise comment documenting that purpose.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 571825a8-f3ec-4a43-8b60-ca5c48ff5af7
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (36)
.papi/polkadot-api.jsonREADME.mdapp/assets/css/main.cssapp/components/OgImage/Drops.takumi.vueapp/components/OgImage/Frame.takumi.vueapp/components/OgImage/Gallery.takumi.vueapp/components/OgImage/OgBase.takumi.vueapp/components/collection/analytics/AnalyticsSaleFloorTrend.vueapp/components/collection/analytics/AnalyticsTopMetricCard.vueapp/components/collection/analytics/AnalyticsTrends.vueapp/components/gallery/GalleryDetails.vueapp/components/gallery/GalleryItemToolBar.vueapp/components/massmint/MassMint.vueapp/components/profile/tabs/profileActivity/ProfileActivity.vueapp/components/trade/ActivityTable/RowItem.vueapp/composables/create/useCollectionForm.tsapp/composables/create/useNftForm.tsapp/composables/massmint/useMassMint.tsapp/composables/onchain/useNextItemId.tsapp/composables/onchain/useNftPallets.tsapp/composables/useSubscriptionGraphql.tsapp/composables/useToken.tsapp/composables/useWalletManager.tsapp/pages/[chain]/drops/[slug].vueapp/pages/[chain]/gallery/[token].vueapp/plugins/1.vue-query.tsapp/plugins/sdk.client.tsapp/utils/polkadotApiCompat.tsapp/utils/polkadotSdkCompat.tsapp/utils/polkadotWsProvider.tsnuxt.config.tspackage.jsonpnpm-workspace.yamlserver/api/__sitemap__/collections.tsserver/api/__sitemap__/drops.tsserver/api/__sitemap__/nfts.ts
💤 Files with no reviewable changes (2)
- app/composables/onchain/useNextItemId.ts
- app/composables/massmint/useMassMint.ts
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
app/components/listingCart/shared/ListingCartPriceInput.vue (1)
10-14: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueSetter type should accept
numberas well.With
type="number"on the<UInput>, Vue'svModelNumberdirective passes anumber(or empty string) to the setter at runtime, but the setter is typed as(value: string). Widen the type for accuracy.♻️ Proposed type fix
const inputValue = computed({ get: () => String(price.value), - set: (value: string) => { + set: (value: string | number) => { price.value = value }, })🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@app/components/listingCart/shared/ListingCartPriceInput.vue` around lines 10 - 14, Update the setter in the inputValue computed property to accept both string and number values, while preserving the existing assignment to price.value and support for empty-string input.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@app/composables/useInfiniteQuery.ts`:
- Around line 73-76: In the `useInfiniteQuery` pagination logic, update
`hasMoreData` to `false` before the early return when `data` is absent, so
`canLoadMore` remains consistent with the exhausted state.
---
Nitpick comments:
In `@app/components/listingCart/shared/ListingCartPriceInput.vue`:
- Around line 10-14: Update the setter in the inputValue computed property to
accept both string and number values, while preserving the existing assignment
to price.value and support for empty-string input.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 2adcfc8b-0c9f-4547-9265-b570d0da5986
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (14)
app/components/gallery/TokenActivity.vueapp/components/landing/topCollections/utils/useTopCollections.tsapp/components/listingCart/shared/ListingCartPriceInput.vueapp/components/profile/tabs/profileActivity/ProfileActivity.vueapp/components/swap/SwapLanding.vueapp/components/trade/makeOffer/CreateCollectionOfferButton.vueapp/components/trade/makeOffer/MakeOfferModal.vueapp/components/trade/overviewModal/TokenSearchInput.vueapp/composables/useInfiniteQuery.tsapp/composables/useSubscriptionGraphql.tsapp/composables/useToken.tsapp/graphql/queries/trades.tsapp/pages/[chain]/collection/[collection_id].vuepackage.json
✅ Files skipped from review due to trivial changes (1)
- app/components/trade/overviewModal/TokenSearchInput.vue
🚧 Files skipped from review as they are similar to previous changes (3)
- app/components/profile/tabs/profileActivity/ProfileActivity.vue
- app/composables/useToken.ts
- package.json
kylymo
left a comment
There was a problem hiding this comment.
Hermes review — changes requested
I reviewed the full PR diff and the deployed/CI status. CI is green, but I recommend a few changes before merging.
Blocking
nuxt.config.ts:158—pinia.storesDirspoints at the wrong directory. The repository stores are underapp/stores, while this PR changes the configuration to['stores', 'stores/**']. Unless the stores are also moved, Pinia auto-import discovery can break. Please restore:storesDirs: ['./app/stores/**']
Non-blocking correctness
app/composables/useInfiniteQuery.ts:73— missing Apollo data leaveshasMoreDataastrue. Set it tofalsebefore returning, or handle the response as an error, so the pagination state cannot claim that more data is available after an empty result.app/components/listingCart/shared/ListingCartPriceInput.vue— verify the model typing forv-model.number. The modifier can produce a number or an empty string; the model/setter typing should explicitly support both values.
Simplification / reviewability
This PR combines a broad dependency/runtime upgrade, PAPI v2 migration, Takumi OG-image migration, behavior fixes, and import-only formatting changes. The non-lockfile source diff is relatively small, but the scope is still difficult to review. I recommend splitting the dependency/runtime upgrade from application behavior changes, or at least grouping/squashing the commits into those sections. Import-only reorderings and unrelated cleanup should be removed from this PR.
Positive notes
- The PAPI v2 migration direction looks correct: removing compatibility-token waits, using
Binary.toText(...), and switching to the new WebSocket provider API. - The Kusama chain identifier corrections, GraphQL limits, and optional Apollo-data handling are useful fixes.
- CI and deployment checks are currently passing.
Follow-up: minor findings and simplification opportunitiesThe blocking Minor findings
Simplification / scope recommendations
These are not all merge blockers, but addressing them would make the PR substantially easier to review and reduce the chance of hiding a behavioral regression among upgrade-related changes. |
|
Fixed missing infinite-query data handling. The remaining findings were verified and require no changes. |
Summary by CodeRabbit
New Features
Bug Fixes
Documentation