Skip to content

chore: q2 2026 upgrade - #888

Open
hassnian wants to merge 26 commits into
mainfrom
chore/q2-2026-upgrade
Open

chore: q2 2026 upgrade#888
hassnian wants to merge 26 commits into
mainfrom
chore/q2-2026-upgrade

Conversation

@hassnian

@hassnian hassnian commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

  • New Features

    • Refreshed Open Graph image setup and marketplace preview linking across key pages (including homepage, gallery, drops, and collections).
    • Improved analytics and gallery action dropdowns with clearer grouped menu items.
    • Listing cart price input now consistently coerces entries to numbers.
  • Bug Fixes

    • Updated Kusama and asset-hub chain identifiers.
    • Improved on-chain metadata URI decoding and added safer refresh/URI handling.
    • Prevented crashes by handling missing GraphQL/response data more defensively.
  • Documentation

    • Updated README prerequisites (Node.js requirement) and external live product link.

@vercel

vercel Bot commented Jul 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
app Ready Ready Preview, Comment Jul 23, 2026 5:58am
koda Ready Ready Preview, Comment Jul 23, 2026 5:58am

@railway-app
railway-app Bot temporarily deployed to chaotic-art-preview / app-pr-888 July 10, 2026 05:46 Destroyed
@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It 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 reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 260821b9-63ac-4f67-a88e-3e5301511ad6

📥 Commits

Reviewing files that changed from the base of the PR and between 501ccf9 and b7e7fb4.

📒 Files selected for processing (1)
  • app/composables/useInfiniteQuery.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • app/composables/useInfiniteQuery.ts

📝 Walkthrough

Walkthrough

The 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.

Changes

Polkadot API migration

Layer / File(s) Summary
Client and build compatibility
app/plugins/sdk.client.ts, nuxt.config.ts
The SDK uses the direct websocket provider, and Vite optimizes updated Polkadot API dependencies.
On-chain transaction and metadata decoding
app/composables/onchain/*, app/composables/massmint/useMassMint.ts, app/components/trade/ActivityTable/RowItem.vue, app/composables/useToken.ts
Compatibility-token waits are removed from transaction and query flows, while on-chain binary values are decoded with Binary.toText.
UI contracts and resilient data flows
app/components/collection/analytics/*, app/components/gallery/*, app/pages/[chain]/*, app/pages/index.vue, app/composables/useInfiniteQuery.ts, app/graphql/queries/trades.ts, app/components/trade/*, app/components/swap/*
Dropdown items and OG image calls use updated shapes, GraphQL queries accept limits, and missing query data receives safe fallbacks.
Project configuration and supporting updates
package.json, pnpm-workspace.yaml, README.md, .papi/polkadot-api.json, app/assets/css/main.css, server/api/__sitemap__/*, app/plugins/1.vue-query.ts, app/composables/create/*
Build scripts, dependencies, workspace policy, chain identifiers, CSS tokens, documentation, comments, and import ordering are updated.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 4.76% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the PR’s broad Q2 2026 upgrade scope and accurately reflects the main dependency/runtime and cleanup changes.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/q2-2026-upgrade

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

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 10, 2026

Copy link
Copy Markdown

Deploying app with  Cloudflare Pages  Cloudflare Pages

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

View logs

@railway-app

railway-app Bot commented Jul 10, 2026

Copy link
Copy Markdown

🚅 Deployed to the app-pr-888 environment in chaotic-art-preview

Service Status Web Updated (UTC)
app 😴 Sleeping (View Logs) Web Jul 23, 2026 at 6:05 am

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (2)
app/utils/polkadotSdkCompat.ts (1)

1-3: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Remove the unused compatibility wrapper app/utils/polkadotSdkCompat.ts:1withPolkadotSdkCompat is 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 win

Avoid the hardcoded node_modules dist import here. This shim is the root polkadot-api alias, 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

📥 Commits

Reviewing files that changed from the base of the PR and between c16bc4f and 76153be.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (36)
  • .papi/polkadot-api.json
  • README.md
  • app/assets/css/main.css
  • app/components/OgImage/Drops.takumi.vue
  • app/components/OgImage/Frame.takumi.vue
  • app/components/OgImage/Gallery.takumi.vue
  • app/components/OgImage/OgBase.takumi.vue
  • app/components/collection/analytics/AnalyticsSaleFloorTrend.vue
  • app/components/collection/analytics/AnalyticsTopMetricCard.vue
  • app/components/collection/analytics/AnalyticsTrends.vue
  • app/components/gallery/GalleryDetails.vue
  • app/components/gallery/GalleryItemToolBar.vue
  • app/components/massmint/MassMint.vue
  • app/components/profile/tabs/profileActivity/ProfileActivity.vue
  • app/components/trade/ActivityTable/RowItem.vue
  • app/composables/create/useCollectionForm.ts
  • app/composables/create/useNftForm.ts
  • app/composables/massmint/useMassMint.ts
  • app/composables/onchain/useNextItemId.ts
  • app/composables/onchain/useNftPallets.ts
  • app/composables/useSubscriptionGraphql.ts
  • app/composables/useToken.ts
  • app/composables/useWalletManager.ts
  • app/pages/[chain]/drops/[slug].vue
  • app/pages/[chain]/gallery/[token].vue
  • app/plugins/1.vue-query.ts
  • app/plugins/sdk.client.ts
  • app/utils/polkadotApiCompat.ts
  • app/utils/polkadotSdkCompat.ts
  • app/utils/polkadotWsProvider.ts
  • nuxt.config.ts
  • package.json
  • pnpm-workspace.yaml
  • server/api/__sitemap__/collections.ts
  • server/api/__sitemap__/drops.ts
  • server/api/__sitemap__/nfts.ts
💤 Files with no reviewable changes (2)
  • app/composables/onchain/useNextItemId.ts
  • app/composables/massmint/useMassMint.ts

Comment thread nuxt.config.ts
Comment thread package.json

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
app/components/listingCart/shared/ListingCartPriceInput.vue (1)

10-14: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Setter type should accept number as well.

With type="number" on the <UInput>, Vue's vModelNumber directive passes a number (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

📥 Commits

Reviewing files that changed from the base of the PR and between 76153be and a97dacd.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (14)
  • app/components/gallery/TokenActivity.vue
  • app/components/landing/topCollections/utils/useTopCollections.ts
  • app/components/listingCart/shared/ListingCartPriceInput.vue
  • app/components/profile/tabs/profileActivity/ProfileActivity.vue
  • app/components/swap/SwapLanding.vue
  • app/components/trade/makeOffer/CreateCollectionOfferButton.vue
  • app/components/trade/makeOffer/MakeOfferModal.vue
  • app/components/trade/overviewModal/TokenSearchInput.vue
  • app/composables/useInfiniteQuery.ts
  • app/composables/useSubscriptionGraphql.ts
  • app/composables/useToken.ts
  • app/graphql/queries/trades.ts
  • app/pages/[chain]/collection/[collection_id].vue
  • package.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

Comment thread app/composables/useInfiniteQuery.ts

@kylymo kylymo left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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:158pinia.storesDirs points at the wrong directory. The repository stores are under app/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 leaves hasMoreData as true. Set it to false before 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 for v-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.

@kylymo

kylymo commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator

Follow-up: minor findings and simplification opportunities

The blocking storesDirs issue and the pagination-state issue are already covered in the formal review. These are the additional lower-priority findings and cleanup recommendations:

Minor findings

  1. app/components/listingCart/shared/ListingCartPriceInput.vue

    v-model.number can pass either a number or an empty string, but the model/setter typing should explicitly reflect that. Please verify the typecheck and widen the setter/model type if necessary.

  2. app/composables/useSubscriptionGraphql.ts and ProfileActivity.vue

    The switch from lodash to lodash-es is reasonable for ESM/bundling, but please confirm that the direct lodash-es dependency and its type package are intentional and needed. If this is only to satisfy one import, a consistent project-wide policy would be preferable.

  3. Null-safe Apollo changes

    Several changes use data?.foo ?? [] or data?.foo ?? null. These are safer, but the behavior should be deliberate: silently treating an unavailable GraphQL response as an empty result can hide API failures. Consider distinguishing “no results” from “request/data unavailable” where the UI needs to show an error or retry state.

  4. app/graphql/queries/trades.ts

    Adding a required $limit variable is a good protection against unbounded queries, but please ensure every caller uses an intentional limit and that the chosen default (100 in useTrades) is documented or tested against the indexer's maximum page size.

Simplification / scope recommendations

  • Split the broad dependency/runtime upgrade from the PAPI v2, Takumi OG-image, and behavior changes, or at least group the commits into those sections.
  • Remove import-order-only changes from this PR unless they are required by the new lint configuration. They add noise without changing behavior.
  • Keep the lockfile regeneration in the dependency-upgrade commit; it accounts for nearly all of the apparent diff size.
  • Avoid unrelated cleanup such as new Date().getTime()Date.now() unless it is required for the upgrade.
  • Keep comments and naming changes tied to the actual migration. For example, the OG-image comment edits can be minimized to the files that genuinely changed renderer implementation.
  • The changes to app/assets/css/main.css should remain only if they are required by the Nuxt UI/Tailwind upgrade; otherwise they would be easier to review separately as a styling fix.

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.

@hassnian

Copy link
Copy Markdown
Collaborator Author

Fixed missing infinite-query data handling. The remaining findings were verified and require no changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants