68 Commits
Author SHA1 Message Date
zeekayandHanzo Dev 334eb9a388 auth: delete the upstream auth; Hanzo IAM is the only gate
The explorer shipped three sign-in systems. Two were Blockscout's and both
spoke to its /account/* backend, which this deployment does not run — measured,
every one of those endpoints 404s on api-explore.lux.network:

  /account/get_csrf 404    /account/send_otp 404     /account/siwe_message 404
  /account/user/info 404   /account/confirm_otp 404  /account/authenticate_via_* 404

So none of it could ever have worked. It is deleted, not re-pointed: the email
+ one-time-code modal, the SIWE wallet login, the CSRF handshake that fired on
every page render, the Dynamic.xyz provider, and the dev page that let you
paste a session cookie by hand. Rewriting any of it against our own backend
would have been building custom auth, which we do not do.

What is left is the standard OIDC client we already had, finished:

  * PKCE (S256). This client is public — it runs in a browser and can hold no
    secret — so the verifier is the only thing binding a redeemed code to the
    page that asked for it. IAM advertises S256 in its discovery document and
    we were not sending a challenge at all.
  * userinfo went to <issuer>/api/userinfo, which is a 404 and an /api/ path we
    do not serve. It is /v1/iam/oauth/userinfo, per IAM's own discovery.
  * logout now ends the IdP session (end_session_endpoint) instead of only
    dropping our cookie and leaving the user signed in upstream.

All three live in lib/oidc.ts, which already said never to rebuild these paths
at a call site.

The header's provider switch collapses to two states — signed in with IAM, or
account disabled and this is the wallet/settings menu. `rewards` is stated off:
its gate read authProvider === 'auth0', so it was already unreachable.

The ConfigMaps carried NEXT_PUBLIC_OIDC_CLIENT_ID=lux-explore-client-id, a
client that has never existed, so authorize answered 400 unknown client_id.
IAM names clients <org>-explore; all four brands now say so, and hanzo/zoo/pars
get the OIDC keys they never had.

Typecheck: no new error classes, production errors 26 -> 22.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-06 19:18:31 -07:00
zeekay 3813d03918 feat: explorer FE — stateless SSR, chain selector, localnet, registry cleanup 2026-03-01 18:00:00 -08:00
zeekay 08cddc0fcb brand: remove all Blockscout branding, replace with Lux Explorer
- Gas tracker FAQ: Blockscout → Lux Explorer
- Chain config web3/chains.ts: explorer name → Lux Explorer
- Auth screens: Blockscout account → Lux account
- Contract verification: Blockscout supports → Lux Explorer supports
- API docs: Blockscout core API → Lux Explorer Core API
- Rewards/merits: Blockscout Merits → Lux Explorer Rewards
- Marketplace disclaimer and integration icons
- Address verification: [email protected] → [email protected]
- Chart export filenames: Blockscout chart/stats → Lux Explorer
- OTEL service name: blockscout_frontend → lux_explorer_frontend
- Dev container: blockscout dev → lux explorer dev
2026-02-27 22:17:37 -08:00
tom goriunovandGitHub 401dc58402 Smart wallet auth (#3220)
* basic login button implementation

* refactoring and add dynamic auth button to the other pages

* connect wallet without authenticating an user

* login and logout user in blockscout account

* refactoring and RPC overrides

* authenticate user with connected wallet

* add ENS to profile button

* override evm chains and fix contract write with waas wallet

* disconnect wallet and fix docker build

* add dynamic imports to components that use web3 wallet packages

* refactor user profile directory

* clean up

* tweaks

* update pw ci script

* fix "connect wallet" button behavior

* handle linking email to profile with dynamic provider

* fix test

* async loading web3 hooks and remove dynamic loading from components that use them

* fix pw tests

* add account navigation in horizontal layout when auth provider is dynamic

* fix address verification modal

* review fixes

* spelling fixes
2026-02-18 19:42:44 +01:00
tom goriunovandGitHub 5d337fc555 Migrate from Jest to Vitest (#3173)
* first part of transition

* second part of transition

* remove jest

* bump up node version and playwright version

* update all screenshots because of the new playwright version

* fix tests

* one more screenshot update
2025-12-10 19:21:07 +01:00
tom goriunovandGitHub 6bd14ecf16 Mobile UI: AD text and alerts (#3074)
* update text size for text ad and alerts on mobile

* more screenshot updates

* fix text ad layout on mobile

* fixes after review

* fix tests
2025-10-17 18:33:18 +02:00
enochleeandGitHub 2d6c5b3773 Added "rel=noopener-noreferrer" attribute for links to external pages (#3039)
* added rel="noopener noreferrer" to link elements using external and noIcon prop

* fix: resolve asChild and external prop conflicts in Link components

* Revert "fix: resolve asChild and external prop conflicts in Link components"

This reverts commit e99580049946b487ce4dc77e7cdab2cd17e5c820.

* fix: remove asChild prop conflicts with external links
2025-10-07 18:03:34 +02:00
Igor StuevandGitHub c4a65d3b0c update docs links (#2992) 2025-09-01 13:46:17 +02:00
Igor StuevandGitHub 7689c9b1d8 Input/select placeholder font change (#2844)
* font weights

* change input placeholder colors

* update screenshots pt 1

* update screenshots pt 2

* update screenshots pt 3
2025-07-15 16:29:30 +02:00
tom goriunovandGitHub fae4990e1f API resource refactoring (#2699)
* add prefix to API resources

* fix pw tests

* refactor config

* remove unnecessary prefixes in resource names

* fixes

* update screenshots
2025-05-01 15:22:38 +02:00
tom goriunovandGitHub f6725649da UI toolkit package (#2691)
* first version of the pack

* single entry point

* add custom components to the package

* move form components to toolkit

* add more utils and hooks to the package

* minor fixes

* add CI workflow

* update readme and package.json

* fix ts

* fix build of env-validator

* fix docker build

* fix icons size

* test fixes

* more test fixes
2025-04-21 19:44:22 +02:00
tom goriunovandGitHub 7648d05541 Auth: Switch the chain before signing the message when the user logs in with their wallet (#2673)
Fixes #2345
2025-04-15 15:23:57 +02:00
tom ffce962477 more test fixes 2025-03-27 20:42:21 +01:00
tom c45537b706 major update of screenshots 2025-03-26 20:05:25 +01:00
tom 31c83b0a89 update styles for progress circle, pagination, dialog and file upload 2025-03-26 14:22:02 +01:00
tom 4b7a930af9 fix some tests 2025-03-26 12:52:10 +01:00
tom 8fa65829c2 fix ts 2025-03-24 20:55:19 +01:00
tom 46a00cedbb fix more ts errors 2025-03-11 16:18:03 +01:00
tom 0fdae008d5 verified addresses modal 2025-02-24 19:58:43 +01:00
tom 0032590eb0 watchlist page refactoring 2025-02-07 19:57:18 +01:00
tom c6ec165d96 tx details tab 2025-02-05 09:36:30 +01:00
tom goriunovandGitHub 4b42c5fa70 Call the API logout endpoint when the user logs out (#2469)
* Call the API logout endpoint when the user logs out

* fix tests

* one more fix
2024-12-16 13:22:09 +01:00
tom goriunovandGitHub 184406a89c Migrate from web3modal to reown (#2321)
* migrate from `web3modal` to `reown`

Fixes #2316

* bump up package versions
2024-12-13 18:32:26 +01:00
tom goriunovandGitHub bd4094ebd1 Bump up Node.js to v22 (#2410)
* Bump up Node.js to v22

Fixes #2404

* update Playwright to v1.49.0

* fix tests

* one more fix

* fix screenshots
2024-11-25 12:43:05 +01:00
tom 125c4880de migrate to eslint 9 and its flat config 2024-11-13 12:54:12 +01:00
48b39022d3 Account v2 (#2262)
* simple profile button and auth modal layout

* connect email and code screens to API

* add screens to modal for wallet authentication

* migrate to pin input

* user profile menu

* refactor otp field

* fix passing set-cookie from api response

* add wallet info into profile menu

* add mobile menu

* show connected wallet address in button

* my profile page re-design

* custom behaviour of connect button on dapp page

* style pin input

* add logout

* handle case when account is disabled

* handle case when wc is disabled

* remove old components

* refactoring

* workflow to link wallet or email to account

* link wallet from profile

* show better OTP code errors

* add email alert on watchlist and verified addresses pages

* deprecate env and remove old code

* remove code for unverified email page

* add auth guard to address action items

* move useRedirectForInvalidAuthToken hook

* add mixpanel events

* refetch csrf token after login and fix connect wallet from contract page

* Add NEXT_PUBLIC_RE_CAPTCHA_V3_APP_SITE_KEY env

* migrate to reCAPTCHA v3

* resend code and change email from profile page

* better wallet sign-in message error

* fix demo envs

* update some screenshots

* profile button design fixes

* fix behaviour "connect wallet" button on contract page

* fix linking email and wallet to existing account

* bug fixes

* restore the login page

* update screenshots

* tests for auth modal and user profile

* add name field to profile page and write some tests

* [skip ci] clean up and more tests

* update texts

* change text once more

* fix verified email checkmark behaviour

* pass api error to the toast while signing in with wallet

* [skip ci] disable email field on profile page

* bug fixes

* update screenshot

* Blockscout account V2

Fixes #2029

* fix texts and button paddings

* Form fields refactoring (#2320)

* text and address fields for watchlist form

* checkbox field component

* refactor private tags form

* refactor api keys and custom abi

* refactor verifiy address and token info forms (pt. 1)

* refactor token info forms (pt. 2)

* refactor token info forms (pt. 3)

* refactor public tags form

* refactor contract verification form

* refactor contract audit form

* refactor auth, profile and csv export forms

* renaming and moving

* more refactoring and test fixes

---------

Co-authored-by: aagaev <[email protected]>
2024-10-30 12:56:57 +01:00
tom goriunovandGitHub 434aae92bb Call contract read methods from the client (#2032)
* display methods accordion

* add method_id to methods

* query read method via public client

* query read methods without inputs at accordion section open

* add custom abi tabs

* add proxy tabs

* custom wagmi config if wc is not configured

* remove ContractAbiItemConstant component

* display tuple properties in method outputs

* display read result

* clean up

* support nested arrays in the read result

* re-write test for contract methods

* change result view for address output

* refactoring

* fix tests

* remove web3 provider fallback

* fix tab loading

* refactoring

* add implementation contract selector

* add "copy to clipboard" for address, remove top-level square brackets

* add preview mode to contract method result

* tests for read result

* fix tests

* change styles for result preview

* review fix
2024-06-24 19:56:06 +02:00
isstuev f81f1c181b Multi chain balance button 2024-05-26 16:14:04 +02:00
tom goriunovandGitHub 22f8016a8f Playwright tests refactoring, pt.5 (#1952)
* next part of test refactoring

* more refactoring

* more refactoring

* fixes and clean-up

* fixes

* build fixes

* more fixes
2024-05-25 15:41:32 +02:00
tom goriunovandGitHub bfb5d6acc7 Update styles of form inputs (#1914)
* Update styles of form inputs

* update token info form

* update demo values

* fix preset for sepolia

* update screenshots
2024-05-15 17:37:02 +02:00
tom goriunovandGitHub 1c49d8143b Design updates (#1767)
* update blob icon

* fix tags on token transfer

* update address tx filter styles

* page padding fixes

* update twitter icon

* updat screenshots

* fix test

* update back arrow color in the modals

* update solidityscan text

* update stats widget bg color
2024-04-08 17:07:01 +02:00
tom goriunovandGitHub f3fc9f9277 update web3modal to v4 (#1731)
* update hooks and methods

* fix typescript

* options fix

* fix pw test build

* try to fix tests

* more pw test fixes

* update screenshots and fix address verification test
2024-03-25 08:41:20 +01:00
isstuev 2e23e95715 some fixes and tests 2024-02-12 20:18:08 +01:00
tom 3e98046b7d Merge branch 'main' of github.com:blockscout/frontend into tom2drum/issue-1414 2023-12-21 11:48:33 +04:00
tom 87bbfdd449 migration: next part 2023-12-20 14:09:33 +04:00
tom 951d8d6adb update Web3Modal to v3
Fixes #1314
2023-12-18 10:20:56 +04:00
tom goriunovandGitHub 79f7ee655c More events for mixpanel analytics (#1160)
* color mode property for PageView and AccountAccess events

* account events

* contract events

* address events

* event for more button
2023-09-19 11:17:36 -03:00
tom 661f7c3120 update screenshots 2023-08-31 17:05:48 -03:00
tom goriunovandGitHub 05945f6cf7 refactor page layout components (#1087)
* update csv export text

* fix pw tests

* base layout and customization for home page and search results page

* refactor rest of the pages

* refactor AppError

* move header padding to layout

* move nextjs utils to separate folder

* combine PageServer and Page

* make useQueryClientConfig hook

* add tests

* remove unused var

* fix envs for pw

* fix pw tests
2023-08-15 19:28:00 -04:00
tom goriunovandGitHub e3551038af app feature list (#1079)
* metadata helpers and values for txs pages

* update titles to the rest of the pages

* refactor getServerSideProps

* dynamically update metadata for token and dapp page

* test

* 404 error page

* make new config

* make use of new config, delete old one

* feature reporter: dev implementation

* feature reporter: docker integration

* resctructure ENVS.md

* sentry feature

* refinements

* add spaces between sections

* tweaks

* switch to camelCase

* clean up

* remove NEXT_PUBLIC_NETWORK_TOKEN_ADDRESS

* v
2023-08-09 15:39:36 -04:00
tom goriunovandGitHub 4ed3447741 customize scroll bar in snippets (#1053)
* custom styles for scrollbar

* style scrollbar for search suggest on home page

* change overflow for search suggest

* fix error screen when API error payload is string

e.g. "Internal server error"

* add resizer img and styles for FF

* update screenshots

* update icon for dark theme
2023-08-07 15:39:24 -04:00
tom c8aa2bde33 fix typo 2023-07-20 09:39:18 -04:00
tom goriunovandGitHub 1906ae4c30 Eliminate underscores in URLs (#1007)
Fixes #988
2023-07-13 12:15:59 -04:00
tom 580b47ad85 update mobile screenshots 2023-06-29 17:05:08 -04:00
tom f8d6fccbfb reset form error when button is clicked again 2023-06-09 12:40:23 -04:00
tom c1ff72e03e update screenshots 2023-05-17 16:22:00 -03:00
tom 85013be28a call resources only if user is authenticated 2023-05-16 16:22:46 -03:00
tom 45b7fd5f27 add comment field and show application rejection reason 2023-04-25 15:14:59 -03:00
tom 7ccd7392d4 tests for account part 2023-04-18 18:56:35 -03:00
tom 8ccfe0dc7c text updates 2023-04-18 14:57:52 -03:00