Sync upstream v2.9.0 (merge conflicts)#7
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
* 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>
There was a problem hiding this comment.
Code Review
This pull request restructures the repository's documentation, rules, and tooling to align with the migration of the codebase from the legacy client/ directory to src/. It introduces a ubiquitous language glossary, updates architectural rules, adds new agent skills for scaffolding pages and deprecating environment variables, and removes obsolete migration scripts and legacy API files. The reviewer provided several constructive suggestions to align the documentation and templates with the current codebase state, including updating the schema validation library reference in AGENTS.md from Yup to Valibot, correcting the outdated client/ path to src/ for dayjs imports in code-quality.mdc, noting missing imports for commented-out example code in the PageWithTabs.tsx.tmpl template, and fixing a relative path reference to the Slack message template in prepare-release/SKILL.md.
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.
| Some directories have a `CONTEXT.md` documenting non-obvious patterns specific to that area. Read the relevant one before working in (or reaching into) that directory: | ||
|
|
||
| - `deploy/scripts/` — how the frontend container is built and starts up (Dockerfile stages, entrypoint). | ||
| - `deploy/tools/envs-validator/` — startup validation of `NEXT_PUBLIC_*` envs against yup schemas. |
There was a problem hiding this comment.
The description mentions yup schemas, but the project has migrated to using Valibot for environment variable validation (as documented in .agents/rules/env-vars.mdc). Consider updating this reference to reflect the correct schema library.
| - `deploy/tools/envs-validator/` — startup validation of `NEXT_PUBLIC_*` envs against yup schemas. | |
| - `deploy/tools/envs-validator/` — startup validation of `NEXT_PUBLIC_*` envs against Valibot schemas. |
| ### 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 migrated to src/. Please update the path to src/shared/date-and-time/dayjs.ts to align with the new directory structure.
- Import `dayjs` only via `src/shared/date-and-time/dayjs.ts` — never directly from the `dayjs` package.
| // Detail (entity) pages: read the route param here for the title, e.g. | ||
| // const router = useRouter(); | ||
| // const __entityParam__ = getQueryParamString(router.query.__entityParam__); |
There was a problem hiding this comment.
|
|
||
| Once the pre-release workflow has finished **successfully**, ask the DevOps team to roll up the new pre-release on staging. | ||
|
|
||
| - Build the message from `./slack-message-template.md` (in this skill directory) — it holds the format, the breaking-ENV-change rule, the target channel, and the QA cc. Fill it with the `-alpha` tag, the breaking-ENV list derived per that rule (or `None.`), and the pre-release URL from step 6. The breaking-ENV input comes from the "Changes in ENV variables" section / `release-prs-data.json`. |
There was a problem hiding this comment.
The path ./slack-message-template.md is relative to the repository root when the release process is run. Since the template is located in the skill directory, this path will fail to resolve. Please update it to .agents/skills/prepare-release/slack-message-template.md.
| - Build the message from `./slack-message-template.md` (in this skill directory) — it holds the format, the breaking-ENV-change rule, the target channel, and the QA cc. Fill it with the `-alpha` tag, the breaking-ENV list derived per that rule (or `None.`), and the pre-release URL from step 6. The breaking-ENV input comes from the "Changes in ENV variables" section / `release-prs-data.json`. | |
| - Build the message from `.agents/skills/prepare-release/slack-message-template.md` (in this skill directory) — it holds the format, the breaking-ENV-change rule, the target channel, and the QA cc. Fill it with the `-alpha` tag, the breaking-ENV list derived per that rule (or `None.`), and the pre-release URL from step 6. The breaking-ENV input comes from the "Changes in ENV variables" section / `release-prs-data.json`. |
70114ea to
88f8cf9
Compare
88f8cf9 to
57bdb66
Compare
Upstream Sync - v2.9.0
Auto-merge with upstream
v2.9.0failed due to conflicts.To resolve:
v2.9.0to trigger Docker buildUpstream release notes