Skip to content

Sync upstream v2.9.0 (merge conflicts)#7

Open
JOY (JOY) wants to merge 86 commits into
mainfrom
sync-upstream-v2.9.0
Open

Sync upstream v2.9.0 (merge conflicts)#7
JOY (JOY) wants to merge 86 commits into
mainfrom
sync-upstream-v2.9.0

Conversation

@JOY

Copy link
Copy Markdown

Upstream Sync - v2.9.0

Auto-merge with upstream v2.9.0 failed due to conflicts.

To resolve:

  1. Check out this branch locally
  2. Resolve conflicts
  3. Push and merge this PR
  4. Then create tag v2.9.0 to trigger Docker build

Upstream release notes

tom goriunov (tom2drum) and others added 30 commits May 19, 2026 20:04
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
Copilot AI and others added 18 commits June 18, 2026 18:04
* 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>
)

* migrate to type shorhands

* migrate tx and block types

* clean up address, internal txs, token transfers and logs types

* migrate rollup types

* migrate chain variants, gas and other types

* migrate advanced filters types

* migrate search types

* fix tests

* fix ts
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@gemini-code-assist gemini-code-assist 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.

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.

Comment thread .agents/AGENTS.md
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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

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.

Suggested change
- `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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

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.

Comment on lines +17 to +19
// Detail (entity) pages: read the route param here for the title, e.g.
// const router = useRouter();
// const __entityParam__ = getQueryParamString(router.query.__entityParam__);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

The commented-out example code references useRouter and getQueryParamString, but these are not imported in this template. If a developer uncommented these lines, it would cause a compilation error. Consider adding the commented-out imports at the top of the template or noting them in the comments.


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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

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.

Suggested change
- 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`.

@JOY JOY (JOY) force-pushed the sync-upstream-v2.9.0 branch 9 times, most recently from 70114ea to 88f8cf9 Compare July 2, 2026 05:47
@JOY JOY (JOY) force-pushed the sync-upstream-v2.9.0 branch from 88f8cf9 to 57bdb66 Compare July 2, 2026 10:26
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.

5 participants