Sync upstream v2.9.1 (merge conflicts)#8
Conversation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…lockscout#3461) * Average block time: new ENV to update in realtime Resolves blockscout#3407 * [skip ci] fixes
…cout#3460) * feat: migrate name-services files to client/features/name-services/ Move domains and clusters files from legacy paths into client/features/name-services/: - types/api/ens.ts → domains/types/api.ts (merged) - types/api/clusters.ts → clusters/types/api.ts (merged) - stubs/ENS.ts → domains/stubs.ts - stubs/clusters.ts → clusters/stubs.ts - mocks/ens/ → domains/mocks/ - mocks/clusters/ → clusters/mocks/ - ui/shared/entities/ens/ → domains/components/ - ui/shared/entities/clusters/ → clusters/components/ - lib/clusters/ → clusters/hooks/ and clusters/utils/ - ui/nameServices/domains/ → domains/pages/index/ - ui/nameServices/directories/ → clusters/pages/index/ - ui/nameDomain/ → domains/pages/details/ - ui/cluster/ → clusters/pages/details/ - ui/pages/NameServices.tsx → common/pages/ - ui/pages/NameDomain.tsx → domains/pages/details/ - ui/pages/Cluster.tsx → clusters/pages/details/ Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com> * fixes --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com> Co-authored-by: tom <tom@ohhhh.me>
[Migration 6-10] Feature: rewards — move to client/features/rewards/ Agent-Logs-Url: https://github.com/blockscout/frontend/sessions/65be2ab2-d127-4211-aacb-0cdd3692d7b1 Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feat(migration/6-16): move dex-pools feature to client/features/dex-pools Agent-Logs-Url: https://github.com/blockscout/frontend/sessions/f20ff970-15af-4975-a30e-5483aeb19830 Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com>
* feat: migrate marketplace files to client/features/marketplace/ - types/client/marketplace.ts → client/features/marketplace/types/client.ts - stubs/marketplace.ts → client/features/marketplace/stubs.ts - mocks/apps/ → client/features/marketplace/mocks/ - mocks/essentialDapps/ → client/features/marketplace/mocks/ - lib/contexts/marketplace.tsx → client/features/marketplace/context.tsx - lib/hooks/useGraphLinks.tsx → client/features/marketplace/hooks/useGraphLinks.tsx - ui/marketplace/** → client/features/marketplace/ (hooks, components, pages) - ui/pages/Marketplace* → client/features/marketplace/pages/ Split ui/marketplace/utils.ts into: - client/features/marketplace/utils/sort.ts (SortValue, SORT_OPTIONS) - client/features/marketplace/utils/dapp.ts (getAppUrl) Updated all import paths across the repo including: - pages/apps/, pages/essential-dapps/ (dynamic imports) - client/api/services/admin.ts - client/slices/search/ files - client/features/account/ user-profile files - playwright/TestApp.tsx, pages/_app.tsx - global.d.ts, types/, configs/ files Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com> * fix: update app.html path in MarketplaceApp.pw.tsx after migration Agent-Logs-Url: https://github.com/blockscout/frontend/sessions/53f597bb-92a8-42d4-a522-72124b0667b8 Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com>
feat: migrate advanced-filter feature to client/ (task 6-11) Agent-Logs-Url: https://github.com/blockscout/frontend/sessions/9eb8f172-90c1-42b5-814f-28aa802b519f Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com>
[Migration 6-21] Feature: tx-interpretation — move types, stubs, mocks, utils, component Agent-Logs-Url: https://github.com/blockscout/frontend/sessions/db0c8652-ae94-4996-a4b2-ee755a01fce0 Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com>
* feat: [Migration 6-8] move validators to chain-variant trees Agent-Logs-Url: https://github.com/blockscout/frontend/sessions/653c3d88-8c65-4029-bbcf-f73927181ffd Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com> * update screenshots --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com> Co-authored-by: tom <tom@ohhhh.me>
* API page: PRO API Tab Resolves blockscout#3408 * add script to detect pro api instance * add utm and fix icon color * let user redefine the pro api variable * [skip ci] review fixes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ission` (blockscout#3478) feat(migration-6-22): migrate address-metadata, merge public-tags-submission Agent-Logs-Url: https://github.com/blockscout/frontend/sessions/e0d3eadb-c3ea-4c8d-9f77-cde244a30543 Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com>
…cout#3481) * feat: migrate multichain and multichain-button features to client/ (6-3) Agent-Logs-Url: https://github.com/blockscout/frontend/sessions/3a77ef5d-f314-4986-aa6e-dfe4b057ff38 Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com> * [skip ci] fixes --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com> Co-authored-by: tom <tom@ohhhh.me>
…#3482) * [Migration 6-27] Features: web3-wallet and connect-wallet Agent-Logs-Url: https://github.com/blockscout/frontend/sessions/116ee604-9f2e-4f3c-b949-deb07ac2ddfb Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com> * [skip ci] fixes --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com> Co-authored-by: tom <tom@ohhhh.me>
…ckscout#3484) * feat(migration-6-13): move cross-chain-txs, gas-tracker, sol2uml to client/features Agent-Logs-Url: https://github.com/blockscout/frontend/sessions/a3b87e12-c516-499b-a208-62c641fd8f29 Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com> * [skip ci] fixes --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com> Co-authored-by: tom <tom@ohhhh.me>
…scout#3485) * clean up lib, mocks, stubs and types * refactor easter eggs feature * clean up ui/pages/ * clean up ui/shared/ and ui/snippets/ * update tasks
The Next.js proxy route picked its target host from the user-controlled "x-endpoint" header (and a protocol-relative request path could override the default base host), allowing server-side request forgery (CWE-918) — e.g. fetching cloud metadata or internal services and returning the body. Restrict forwarding to an allow-list of origins derived solely from server-side config: the local instance API endpoints, every multichain cluster chain endpoint, and every essential-dapps chain core endpoint. The resolved request origin is checked against this set, returning 403 otherwise. Fixes code-scanning alert blockscout#43. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* bump up packages to mitigate some security vulnerabilities * ts fix
…cout#3529) * refactor sorting functions to use collator for consistent string comparison * add eslint rule * [skip ci] update comment
* Initial plan * feat: remove MUD framework feature Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com> * clean up * [skip ci] fix toolkit build --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tom2drum <22130104+tom2drum@users.noreply.github.com> Co-authored-by: tom <tom@ohhhh.me>
* Add `Circulating supply` value on Token page Resolves blockscout#2599 * [skip ci] update value labels * update screenshots
…cout#3533) code editor: dispose all models when component unmount itself
Document the env-var deprecation process as a new deprecate-env-var skill covering immediate removal and grace-period deprecation, including the demo-deploy gotcha. Split envs-rules.json's drop list into stable ignoredEnvs (build-time keys) and deprecatedEnvs (removed vars), adjust fetch.ts to drop both, and document the separation in the dev-server CONTEXT.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor csp policies * fix ts
Add end-of-workflow steps: verify with user, commit/push docs to main, publish the <tag>-alpha pre-release, watch the pre-release workflow in the background, then request a staging roll-up in Slack. Add a separate Slack message template file and fix the stale .cursor skill path. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
) * Add Usercentrics CMP (cookie consent + GDPR compliance) * [wip] change setup to manual * store user response for every service * fixes and debug * more fixes and debug * more fixes * store consent in local storage * fix ts * remove previous solution with async hook * add ads services * fix infinite page reload * fix update consent handler * add draft env * save consent only from user action * review fixes * add link to footer to open consent modal * [skip ci] remove console logs --------- Co-authored-by: tom <tom@ohhhh.me>
mixpanel: route data to EU servers
…kscout#3516) * generate function clean-up * refactor templates * update page descriptions * remove chain name from page title * fix token product schema * improve dapps pages metadata * fix tests * change default value for NEXT_PUBLIC_OG_ENHANCED_DATA_ENABLED to "true" * "New page" skill (blockscout#3519) * change default value for NEXT_PUBLIC_OG_ENHANCED_DATA_ENABLED to "true" * add "add-new-page" skill for scaffolding new pages Adds an interactive agent skill that scaffolds a new page (index / detail / general) from per-type templates and wires it into navigation, metadata, server guard, route types, and analytics. Layout-only: data fetching, pagination, filtering, sorting and action bars are left as TODOs and out of scope. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * add tabs support to add-new-page skill Step 0 now decides layout (tabs or not); tabbed pages get a RoutedTabs shell plus one content body per tab, each in its own kebab-case sub-folder (mirroring src/slices/tx/pages/details). Adds PageWithTabs and GeneralInfo templates and the details-tab-comes-first rule. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * [skip ci] tweaks --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * update metadata descriptions * grammar fixes * Address PR review comments - PageMetadata: render og:image/twitter:image only when an image URL is set - token structured-data: fix grammar in comment - ENVS docs: OG description is a plain string, drop placeholder from example - add-new-page tabs template: Tab 1 import now points to tab1/ Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
bump dynamic wallet to 4.91.4 version
There was a problem hiding this comment.
Code Review
This pull request completes the migration of the frontend codebase from the legacy client/ directory to the new src/ structure. It updates documentation, architectural rules, and configuration files to reflect this change. The review comment correctly identifies that one path in .agents/rules/code-quality.mdc still references the retired client/ directory and needs to be updated to src/.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| ### Date and time | ||
|
|
||
| - Import `dayjs` only via `lib/date/dayjs.ts` — never directly from the `dayjs` package. | ||
| - Import `dayjs` only via `client/shared/date-and-time/dayjs.ts` — never directly from the `dayjs` package. |
There was a problem hiding this comment.
The path client/shared/date-and-time/dayjs.ts is outdated because the client/ directory has been retired and migrated to src/. Please update this reference to the correct path under src/ (e.g., src/shared/date-and-time/dayjs.ts).
- Import `dayjs` only via `src/shared/date-and-time/dayjs.ts` — never directly from the `dayjs` package.
424f688 to
27260b5
Compare
27260b5 to
66d6fb3
Compare
Resolve the WIP merge of upstream v2.9.1 by aligning the tree exactly to the upstream tag, keeping only the fork's CI workflows (docker-publish.yml, sync-upstream.yml). Details: - useApiFetch credentials change and zerodev CSP entry were both adopted upstream in v2.9.1, so the fork no longer needs to carry them. - Drop the experimental pageview tracking feature (usePageViewTracking, /api/monitoring/pageview, route-map entries, checkRealBrowser and rollbar tweaks). It was upstream experimental code (author isstuev) that leaked in via the v2.8.0-alpha.2 sync; it is gated to blockscout.com domains only, so it was dead code on DOScan, and upstream v2.9.1 replaced it with server-side counting in getServerSideProps handlers. - Fix LICENSE that carried committed conflict markers from the v2.8.0-alpha.2 sync; now matches upstream v2.9.1 exactly. - Remove stale files left behind by upstream's repo restructure: client/shared/metadata/* (og-type dict was removed upstream, title/description templates moved to src/shell/metadata/templates), duplicated Playwright baselines under ui/address and src/features/marketplace (canonical copies live at the new paths). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Upstream Sync - v2.9.1
Auto-merge with upstream
v2.9.1failed due to conflicts. Resolved in 75b0017 by aligning the tree exactly to the upstreamv2.9.1tag, keeping only the fork's CI workflows (docker-publish.yml,sync-upstream.yml).Resolution details
usePageViewTracking,/api/monitoring/pageview, route-map entries,checkRealBrowsertype change): upstream experimental code (author isstuev) that leaked in via the v2.8.0-alpha.2 sync. Hard-gated to blockscout.com domains (dead code on DOScan) and posts to monitor.blockscout.com. Upstream v2.9.1 replaced it with server-side counting.captureUncaught/captureUnhandledRejectionsflags: from fork-history commit dc24faf; upstream deliberately removed exactly these two lines in 90b3ab2 (ancestor of v2.8.1 and v2.9.1). Dropping matches upstream defaults. Note: if Rollbar is enabled via envs, client-side uncaught errors are no longer auto-captured.client/shared/metadata/*(og-type dict removed upstream; templates moved tosrc/shell/metadata/templates), duplicated Playwright baselines underui/addressandsrc/features/marketplace(canonical copies live at the new paths).Verified:
git diff v2.9.1 HEADshows only the two fork workflows. ESLint 0 errors, tsc clean, cspell clean. Independent review passed (1 advisory on commit-message attribution, corrected here).After merge: create tag
v2.9.1to trigger Docker build.Upstream release notes
🤖 Generated with Claude Code