- Add TokenSigningSurfaceCard: ABI flags, eip712Domain eth_call decode, verification metadata
- Pass contract profile into GRU standards detection on token page
- Table layout=tabular for Top Holders column layout at all breakpoints
- Fallback provenance name/symbol; show signing card when token API empty
- eip712Domain.ts: decode ERC-5267 tuple return data
Co-authored-by: Cursor <cursoragent@cursor.com>
Corrections per 2026-04 institutional review:
- MLFO reclassified as Global Family Office (was incorrectly labeled central bank)
- BIS Innovation Hub reclassified as Standards Body (does not hold observer seat)
- Added missing entities: ICCC, SAID, PANDA, Order of Hospitallers (XOM)
- Added BRICS founding + expanded member central banks (10 entries)
New institutional tier taxonomy (7 tiers):
sovereign_central_bank, global_family_office, settlement_member,
infrastructure_operator, oversight_judicial, delegated_authority,
standards_body
Backend changes:
- New auth/membership.go: tier types, DefaultTrackForTier mapping,
MembershipStore with DB queries for member directory
- New migration 0017: institutional_members + institutional_member_wallets
tables with seed data for all corrected members
- Updated wallet_auth.go getUserTrack(): now resolves institutional
membership (via wallet junction table) before defaulting to Track 1
- WalletAuthResponse now includes institutional_tier and institution_name
- New REST endpoints: GET /api/v1/membership/{tiers,members,members/:slug}
- Added TrackLabel() helper in featureflags
Frontend changes:
- Added InstitutionalTier type and label map to access.ts
- WalletAccessSession extended with institutionalTier/institutionName
- Navbar getAccessTier() now displays institutional tier label when present
- Session summary shows institution name
Co-Authored-By: Nakamoto, S <defi@defi-oracle.io>
Fixes the 'unfinished router migration + inconsistent packageManager'
finding from the review:
1. src/app/ only ever contained globals.css; every actual route lives
under src/pages/. Keeping both routers in the tree made the build
surface area ambiguous and left a trap where a future contributor
might add a new route under src/app/ and break Next's routing
resolution. PR #9 commits to the pages router and removes src/app/.
2. globals.css moved from src/app/globals.css to src/styles/globals.css
(so it no longer sits under an otherwise-deleted app router folder)
and _app.tsx's import was updated accordingly. This is a no-op at
runtime: the CSS payload is byte-identical.
3. tailwind.config.js had './src/app/**/*.{js,ts,jsx,tsx,mdx}' at the
top of its content glob list. Replaced with './src/styles/**/*.css'
so Tailwind still sees globals.css; the src/components/** and
src/pages/** globs are unchanged.
4. Unified the package manager on npm:
- package.json packageManager: 'pnpm@10.0.0' -> 'npm@10.8.2'.
The lockfile (package-lock.json) and CI (npm ci / npm run lint /
npm run type-check / npm run build in .github/workflows/ci.yml)
have always used npm; the pnpm declaration was aspirational and
would have forced contributors with corepack enabled into a tool
the repo doesn't actually support.
- Added an 'engines' block pinning node >=20 <21 and npm >=10 so
CI, Docker, and a fresh laptop clone all land on the same runtime.
Verification:
npm ci 465 packages, no warnings.
npm run lint next lint: No ESLint warnings or errors.
npm run type-check tsc --noEmit: clean.
npm run build Next.js 14.2.35 compiled 19 pages successfully;
every route (/, /blocks, /transactions, /tokens,
/bridge, /analytics, /operator, /docs, /wallet,
etc.) rendered without emitting a warning.
Advances completion criterion 5 (frontend housekeeping): 'one router;
one package manager; build is reproducible from the lockfile.'
- Introduced a new Diagnostics struct to capture transaction visibility state and activity state.
- Updated BuildSnapshot function to return diagnostics alongside snapshot, completeness, and sampling.
- Enhanced test cases to validate the new diagnostics data.
- Updated frontend components to utilize the new diagnostics information for improved user feedback on freshness context.
This change improves the observability of transaction activity and enhances the user experience by providing clearer insights into the freshness of data.
- Updated branding from "SolaceScanScout" to "Solace" across various files including deployment scripts, API responses, and documentation.
- Changed default base URL for Playwright tests and updated security headers to reflect the new branding.
- Enhanced README and API documentation to include new authentication endpoints and product access details.
This refactor aligns the project branding and improves clarity in the API documentation.
- Add wallet icon (add to MetaMask) on WETH page, Tokens list, token detail
- addTokenToWallet() via EIP-747 wallet_watchAsset; toasts for success/error
- Known-token overrides: WETH9/WETH10 display name and symbol WETH; decimals 18
- Token list: show Wrapped Ether (WETH) for WETH9/WETH10 when API missing
- Token detail: force 18 decimals and name/symbol for WETH9/WETH10
- CSS for .btn-add-token-wallet
Co-authored-by: Cursor <cursoragent@cursor.com>