Skip to content

Commit adf81f4

Browse files
authored
Merge pull request #268 from openscan-explorer/dev
v1.2.2-a
2 parents 677d79a + 2e35035 commit adf81f4

88 files changed

Lines changed: 6946 additions & 1168 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/rules/workflow.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,13 @@ What outcome or resolution are you looking for?
235235
Any other details that might be helpful.
236236
```
237237

238+
## No AI Attribution
239+
240+
**NEVER include any AI or Claude attribution** in commits, PRs, issues, or any generated content. This includes:
241+
- No `Co-Authored-By: Claude` in commit messages
242+
- No "Generated with Claude Code" in PR bodies
243+
- No AI-related footers, badges, or mentions anywhere
244+
238245
## Creating PRs with Claude
239246

240247
**IMPORTANT: Always use the PR template when creating pull requests.**

.github/workflows/audit.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: Audit
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- dev
7+
- main
8+
9+
jobs:
10+
audit:
11+
runs-on: ubuntu-latest
12+
permissions:
13+
contents: read
14+
steps:
15+
- name: Checkout
16+
uses: actions/checkout@v5
17+
with:
18+
persist-credentials: false
19+
- name: Setup Node
20+
uses: actions/setup-node@v4
21+
with:
22+
node-version: 24
23+
- name: Run audit
24+
run: npm run audit

.github/workflows/e2e-evm-networks.yml

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@ jobs:
99
e2e-evm:
1010
runs-on: ubuntu-latest
1111
timeout-minutes: 15
12+
strategy:
13+
fail-fast: false
14+
matrix:
15+
shard:
16+
- name: shard-a
17+
tests: "e2e/tests/evm-networks/arbitrum.spec.ts e2e/tests/evm-networks/base.spec.ts e2e/tests/evm-networks/optimism.spec.ts"
18+
- name: shard-b
19+
tests: "e2e/tests/evm-networks/bsc.spec.ts e2e/tests/evm-networks/polygon.spec.ts"
1220

1321
steps:
1422
- uses: actions/checkout@v4
@@ -27,8 +35,8 @@ jobs:
2735
- name: Build application
2836
run: ./scripts/build-production.sh
2937

30-
- name: Run EVM Networks E2E tests
31-
run: bun run test:e2e:evm-networks
38+
- name: Run EVM Networks E2E tests (${{ matrix.shard.name }})
39+
run: bunx playwright test ${{ matrix.shard.tests }}
3240
env:
3341
CI: true
3442
INFURA_API_KEY: ${{ secrets.INFURA_API_KEY }}
@@ -38,6 +46,6 @@ jobs:
3846
uses: actions/upload-artifact@v4
3947
if: failure()
4048
with:
41-
name: playwright-report-evm
49+
name: playwright-report-evm-${{ matrix.shard.name }}
4250
path: playwright-report/
4351
retention-days: 7

.github/workflows/publish-npm.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,5 @@ jobs:
3737
uses: JS-DevTools/npm-publish@v4
3838
with:
3939
registry: "https://registry.npmjs.org/"
40-
package: ./dist
40+
package: ./dist
41+
tag: "alpha"

bun.lock

Lines changed: 10 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "openscan",
3-
"version": "1.2.1-alpha",
3+
"version": "1.2.2-alpha",
44
"private": true,
55
"type": "module",
66
"packageManager": "bun@1.1.0",
@@ -13,13 +13,10 @@
1313
},
1414
"dependencies": {
1515
"@erc7730/sdk": "^0.1.3",
16-
"@openscan/network-connectors": "^1.3.0",
16+
"@openscan/network-connectors": "1.3.2",
1717
"@rainbow-me/rainbowkit": "^2.2.8",
1818
"@react-native-async-storage/async-storage": "^1.24.0",
19-
"@testing-library/dom": "^10.4.0",
20-
"@testing-library/jest-dom": "^6.6.3",
21-
"@testing-library/react": "^16.2.0",
22-
"@testing-library/user-event": "^13.5.0",
19+
"@tanstack/react-query": "^5.90.21",
2320
"ethers": "^6.14.4",
2421
"i18next": "^25.8.0",
2522
"i18next-browser-languagedetector": "^8.2.0",
@@ -29,7 +26,6 @@
2926
"react-i18next": "^16.5.4",
3027
"react-markdown": "^10.1.0",
3128
"react-router-dom": "^7.4.1",
32-
"vitest": "^4.0.14",
3329
"wagmi": "^2.15.6",
3430
"web-vitals": "^2.1.4"
3531
},
@@ -77,6 +73,11 @@
7773
"@vitejs/plugin-react": "^5.1.2",
7874
"dotenv": "^17.2.3",
7975
"happy-dom": "^20.1.0",
80-
"vite": "^7.3.1"
76+
"vite": "^7.3.1",
77+
"@testing-library/dom": "^10.4.0",
78+
"@testing-library/jest-dom": "^6.6.3",
79+
"@testing-library/react": "^16.2.0",
80+
"@testing-library/user-event": "^13.5.0",
81+
"vitest": "^4.0.14"
8182
}
8283
}

src/App.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import "./styles/forms.css";
1818
import "./styles/rainbowkit.css";
1919
import "./styles/responsive.css";
2020
import "./styles/ai-analysis.css";
21+
import "./styles/rpcs.css";
2122

2223
import Loading from "./components/common/Loading";
2324
import {
@@ -39,6 +40,7 @@ import {
3940
LazyHome,
4041
LazyMempool,
4142
LazyProfile,
43+
LazyRpcs,
4244
LazySearch,
4345
LazySettings,
4446
LazySubscriptions,
@@ -127,6 +129,7 @@ function AppContent() {
127129
<Route path="about" element={<LazyAbout />} />
128130
<Route path="contact" element={<LazyContact />} />
129131
<Route path="devtools" element={<LazyDevTools />} />
132+
<Route path="rpcs" element={<LazyRpcs />} />
130133
<Route path="subscriptions" element={<LazySubscriptions />} />
131134
<Route path="profile/:profileType/:profileId" element={<LazyProfile />} />
132135
<Route path="supporters" element={<LazySupporters />} />

src/components/LazyComponents.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const Profile = lazy(() => import("./pages/profile"));
1212
const Supporters = lazy(() => import("./pages/supporters"));
1313
const Contact = lazy(() => import("./pages/contact"));
1414
const Search = lazy(() => import("./pages/search"));
15+
const Rpcs = lazy(() => import("./pages/rpcs"));
1516

1617
// Lazy load page components - Bitcoin
1718
const BitcoinNetwork = lazy(() => import("./pages/bitcoin"));
@@ -71,6 +72,7 @@ export const LazyProfile = withSuspense(Profile);
7172
export const LazySupporters = withSuspense(Supporters);
7273
export const LazyContact = withSuspense(Contact);
7374
export const LazySearch = withSuspense(Search);
75+
export const LazyRpcs = withSuspense(Rpcs);
7476
export const LazyGasTracker = withSuspense(GasTracker);
7577

7678
/**
@@ -89,6 +91,7 @@ export function preloadAllRoutes() {
8991
import("./pages/supporters");
9092
import("./pages/contact");
9193
import("./pages/search");
94+
import("./pages/rpcs");
9295
// Bitcoin pages
9396
import("./pages/bitcoin");
9497
import("./pages/bitcoin/BitcoinBlockPage");

src/components/common/Footer.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type React from "react";
22
import { useTranslation } from "react-i18next";
33
import { useNavigate } from "react-router";
4+
import { useSettings } from "../../context/SettingsContext";
45
import { ENVIRONMENT } from "../../utils/constants";
56

67
interface FooterProps {
@@ -10,6 +11,7 @@ interface FooterProps {
1011
const Footer: React.FC<FooterProps> = ({ className = "" }) => {
1112
const { t } = useTranslation();
1213
const navigate = useNavigate();
14+
const { isSuperUser } = useSettings();
1315

1416
// Get commit hash from environment variable, fallback to 'development'
1517
const commitHash = process.env.REACT_APP_COMMIT_HASH || "development";
@@ -39,7 +41,7 @@ const Footer: React.FC<FooterProps> = ({ className = "" }) => {
3941
navigate("/supporters");
4042
};
4143
return (
42-
<footer className={`app-footer ${className}`}>
44+
<footer className={`app-footer ${isSuperUser ? "super-user-active" : ""} ${className}`}>
4345
<div className="footer-content">
4446
<div className="footer-left">
4547
<button

src/components/navbar/NavbarLogo.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ export default function NavbarLogo() {
4444
const dropdownRef = useRef<HTMLDivElement>(null);
4545
const location = useLocation();
4646
const navigate = useNavigate();
47-
4847
// Get current subdomain info
4948
const subdomain = getSubdomain();
5049
const subdomainRedirect = getSubdomainRedirect();

0 commit comments

Comments
 (0)