Skip to content

Commit dab3099

Browse files
committed
Merge branch 'dev' into pr/13577
2 parents 895147d + a5a7728 commit dab3099

File tree

5,438 files changed

+378757
-167879
lines changed

Some content is hidden

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

5,438 files changed

+378757
-167879
lines changed

.all-contributorsrc

Lines changed: 519 additions & 7 deletions
Large diffs are not rendered by default.

.claude/commands/update-llms-txt.md

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# Update LLMS.txt Command
2+
3+
This command helps maintain the `public/llms.txt` file by monitoring key navigation files:
4+
5+
1. **Main Navigation**: `src/components/Nav/useNavigation.ts`
6+
2. **Developer Docs**: `src/data/developer-docs-links.yaml`
7+
3. **Footer Links**: `src/components/Footer.tsx`
8+
9+
## How it works
10+
11+
- Adds missing links to appropriate sections
12+
- Preserves existing descriptions and organization
13+
- Follows established llms.txt structure
14+
- **Prefers static markdown files URLs over html URLs** for better LLM comprehension
15+
16+
## Implementation
17+
18+
When this command is executed, I will:
19+
20+
### Step 1: Parse Navigation Files
21+
22+
**Main Navigation** (`src/components/Nav/useNavigation.ts`):
23+
24+
```javascript
25+
// Extract linkSections object structure
26+
// Parse learn, use, build, participate sections
27+
// Get href, label, and description for each link
28+
```
29+
30+
**Developer Docs** (`src/data/developer-docs-links.yaml`):
31+
32+
```yaml
33+
# Parse foundational-topics, ethereum-stack, advanced, design-fundamentals
34+
# Extract href and id mappings
35+
# Build hierarchical structure
36+
```
37+
38+
**Footer Links** (`src/components/Footer.tsx`):
39+
40+
```javascript
41+
// Extract linkSections and dipperLinks arrays
42+
// Get all footer navigation items
43+
// Include external links (blog, ESP, Devcon)
44+
```
45+
46+
### Step 2: Analyze Current llms.txt
47+
48+
- Parse existing sections and their links
49+
- Extract current URLs and descriptions
50+
- Identify section organization and hierarchy
51+
52+
### Step 3: URL to Markdown File Mapping
53+
54+
**Priority: Static markdown files URLs over web html URLs**
55+
56+
For each link, I will:
57+
58+
1. Check if corresponding markdown file exists in `public/content/`. **Ignore translations**: Skip `public/content/translations/` directory (60+ language versions)
59+
2. Use a URL pointing to the markdown file for the page: `https://ethereum.org/content/[page]/index.md`
60+
3. Fall back to web URL only if no markdown file exists
61+
4. Example: `https://ethereum.org/learn/``https://ethereum.org/content/learn/index.md`
62+
5. Example2: `https://ethereum.org/guides/how-to-use-a-wallet/``https://ethereum.org/content/guides/how-to-use-a-wallet/index.md`
63+
64+
### Step 4: Smart Link Categorization
65+
66+
New links are categorized using these rules:
67+
68+
1. **Learn Section**: `/learn/`, `/what-is-*`, `/guides/`, `/quizzes/`, `/glossary/`
69+
2. **Use Section**: `/get-eth`, `/wallets/`, `/dapps/`, `/staking/`, use cases
70+
3. **Build Section**: `/developers/`, `/enterprise/`, developer tools
71+
4. **Participate Section**: `/community/`, `/contributing/`, `/foundation/`
72+
5. **Research Section**: `/whitepaper`, `/roadmap/`, `/eips/`, `/governance/`
73+
74+
### Step 5: Validation & Quality Checks
75+
76+
- Verify all markdown files exist in `public/content/`
77+
- Check for duplicate links within sections
78+
- Validate section organization and hierarchy
79+
- Ensure descriptions are informative and concise
80+
81+
### Step 6: Execute Action
82+
83+
Update llms.txt file with improved structure and validated links
84+
85+
---
86+
87+
The command ensures the llms.txt file remains comprehensive and current with minimal manual maintenance.

.env.example

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,17 @@
44
# be careful not to expose sensitive data (e.g. your Algolia admin key)
55

66
# Algolia environment (app ID, search key and base search index name required for search)
7+
# You can use the following test keys provided by DocSearch for local development/testing:
8+
# NEXT_PUBLIC_ALGOLIA_APP_ID=R2IYF7ETH7
9+
# NEXT_PUBLIC_ALGOLIA_SEARCH_KEY=599cec31baffa4868cae4e79f180729b
10+
# NEXT_PUBLIC_ALGOLIA_BASE_SEARCH_INDEX_NAME=docsearch
11+
# Replace insertValue with your actual keys for production builds.
712
# NEXT_PUBLIC_ALGOLIA_APP_ID=insertValue
813
# NEXT_PUBLIC_ALGOLIA_SEARCH_KEY=insertValue
914
# NEXT_PUBLIC_ALGOLIA_BASE_SEARCH_INDEX_NAME=insertValue
10-
# NEXT_PUBLIC_GITHUB_TOKEN_READ_ONLY=insertValue
15+
16+
# Github token for read-only use with api functions
17+
# GITHUB_TOKEN_READ_ONLY=insertValue
1118

1219
# Etherscan API key (required for Etherscan API fetches)
1320
# ETHERSCAN_API_KEY=insertValue
@@ -24,13 +31,20 @@ NEXT_PUBLIC_MATOMO_URL=
2431
NEXT_PUBLIC_MATOMO_SITE_ID=
2532

2633
# Used to avoid loading Matomo in our preview deploys
27-
IS_PREVIEW_DEPLOY=false
34+
NEXT_PUBLIC_IS_PREVIEW_DEPLOY=false
2835

2936
# Build pages only for the specified langs. Leave it empty to build all the langs
3037
# e.g. `en,fr` will only build English and French pages
3138
# Note: always include `en` as it is the default lang of the site
32-
BUILD_LOCALES=
39+
NEXT_PUBLIC_BUILD_LOCALES=
3340

3441
# If resource constraints are being hit during builds, change LIMIT_CPUS to a
3542
# fixed number of CPUs (e.g. 2) to limit the demand during build time
36-
LIMIT_CPUS=
43+
LIMIT_CPUS=
44+
45+
# Enables the bundle analyzer
46+
ANALYZE=false
47+
48+
# Use mock data for development. Set to "false" to use live data but you must have the
49+
# environment variables set to make api requests
50+
USE_MOCK_DATA=true

.eslintrc.json

Lines changed: 59 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
{
2-
"extends": [
3-
"eslint:recommended",
4-
"plugin:@typescript-eslint/recommended",
5-
"next/core-web-vitals",
6-
"prettier",
7-
"plugin:storybook/recommended"
8-
],
2+
"extends": ["eslint:recommended", "next/core-web-vitals", "prettier"],
93
"env": {
10-
"es6": true
4+
"es6": true,
5+
"node": true,
6+
"browser": true
117
},
12-
"plugins": [
13-
"simple-import-sort",
14-
"@typescript-eslint",
15-
"unused-imports"
16-
],
8+
"plugins": ["simple-import-sort", "@typescript-eslint", "unused-imports"],
179
"parser": "@typescript-eslint/parser",
10+
"parserOptions": {
11+
"ecmaVersion": "latest",
12+
"sourceType": "module",
13+
"ecmaFeatures": {
14+
"jsx": true
15+
}
16+
},
1817
"rules": {
1918
"simple-import-sort/imports": [
2019
"error",
@@ -25,77 +24,73 @@
2524
"^(assert|buffer|child_process|cluster|console|constants|crypto|dgram|dns|domain|events|fs|http|https|module|net|os|path|punycode|querystring|readline|repl|stream|string_decoder|sys|timers|tls|tty|url|util|vm|zlib|freelist|v8|process|async_hooks|http2|perf_hooks)(/.*|$)"
2625
],
2726
// Packages. `react` related packages come first.
28-
// Also, put `react-icons` in sorting order not with `react`
29-
[
30-
"^react(?!-.)$",
31-
"^\\w",
32-
"^@\\w"
33-
],
34-
// The Chakra theme directory if imported to story file or other places
35-
[
36-
"^@/@chakra-ui"
37-
],
27+
// Also, put `react-*` in sorting order not with `react`
28+
["^react(?!-.)$", "^\\w", "^@\\w"],
3829
// From the `types` directory.
39-
[
40-
"^@/lib/types",
41-
"^@/lib/interfaces"
42-
],
30+
["^@/lib/types", "^@/lib/interfaces"],
4331
// From the `components` directory.
44-
[
45-
"^@/components"
46-
],
32+
["^@/components"],
4733
// From the `utils` directory.
48-
[
49-
"^@/lib/utils"
50-
],
34+
["^@/lib/utils"],
5135
// From the `data` directory.
52-
[
53-
"^@/data"
54-
],
36+
["^@/data"],
5537
// From the `constants` directory.
5638
["^@/lib/constants"],
57-
// From the `.storybook/utils` file
58-
["^@/storybook-utils"],
39+
// `.storybook` directory and utils files`
40+
["^@/storybook", "^@/storybook-utils"],
5941
// Parent imports. Put `..` last.
60-
[
61-
"^\\.\\.(?!/?$)",
62-
"^\\.\\./?$"
63-
],
42+
["^\\.\\.(?!/?$)", "^\\.\\./?$"],
6443
// Other relative imports. Put same-folder imports and `.` last.
65-
[
66-
"^\\./(?=.*/)(?!/?$)",
67-
"^\\.(?!/?$)",
68-
"^\\./?$"
69-
],
44+
["^\\./(?=.*/)(?!/?$)", "^\\.(?!/?$)", "^\\./?$"],
7045
// Style imports.
71-
[
72-
"^.+\\.s?css$"
73-
],
46+
["^.+\\.s?css$"],
7447
// Side effect imports.
75-
[
76-
"^\\u0000"
77-
]
48+
["^\\u0000"]
7849
]
7950
}
8051
],
8152
"simple-import-sort/exports": "error",
8253
"no-unused-vars": "off",
83-
"@typescript-eslint/no-unused-vars": "off",
84-
"@typescript-eslint/no-explicit-any": [
85-
"error",
86-
{
87-
"fixToUnknown": true
88-
}
89-
],
9054
"unused-imports/no-unused-vars": [
9155
"error",
92-
{
56+
{
9357
"args": "all",
9458
"argsIgnorePattern": "^_$",
9559
"varsIgnorePattern": "^_$"
9660
}
9761
],
98-
"unused-imports/no-unused-imports-ts": "warn"
99-
}
62+
"unused-imports/no-unused-imports": "warn"
63+
},
64+
"overrides": [
65+
{
66+
"files": ["**/*.{ts,tsx}"],
67+
"extends": ["plugin:@typescript-eslint/recommended"],
68+
"rules": {
69+
"@typescript-eslint/no-explicit-any": [
70+
"error",
71+
{
72+
"fixToUnknown": true
73+
}
74+
]
75+
}
76+
},
77+
{
78+
"files": ["**/*.stories.@(js|jsx|ts|tsx|mdx)"],
79+
"extends": ["plugin:storybook/recommended"]
80+
}
81+
],
82+
"ignorePatterns": [
83+
"node_modules/",
84+
".next/",
85+
"out/",
86+
"dist/",
87+
"build/",
88+
".vercel/",
89+
".netlify/",
90+
"coverage/",
91+
"storybook-static/",
92+
"**/*.d.ts",
93+
"src/intl/",
94+
"public/code-examples/"
95+
]
10096
}
101-

.github/CODEOWNERS

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55

66
# These owners will be the default owners for everything in
77
# the repo. Unless a later match takes precedence,
8-
* @wackerow @corwintines @pettinarip @minimalsm @nhsz
8+
* @wackerow @corwintines @pettinarip @minimalsm
99

1010
# Owners of specific files
11-
/src/data/consensus-bounty-hunters.json @djrtwo @asanso @fredriksvantes
11+
/src/data/consensus-bounty-hunters.json @asanso @fredriksvantes
12+
/src/data/wallets/new-to-crypto.ts @konopkja @minimalsm

.github/ISSUE_TEMPLATE/suggest_quiz.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: Suggest quiz
2-
description: Add, update, delete questions for a quiz on ethereum.osg
2+
description: Add, update, delete questions for a quiz on ethereum.org
33
title: Add/Update/Delete quiz question
44
labels: ["feature ✨", "quiz 📚"]
55
body:
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: Suggest a resource
2+
description: Suggest a new resource to list on ethereum.org/resources
3+
title: Suggest a resource
4+
labels: ["resource 📚"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Before suggesting a resource, make sure you've read [our listing policy](https://www.ethereum.org/en/contributing/adding-resources/).
10+
- type: markdown
11+
attributes:
12+
value: Only continue with the issue if your resource meets the criteria listed there.
13+
- type: markdown
14+
attributes:
15+
value: If it does, complete the following information which we need to accurately list the resource.
16+
- type: markdown
17+
id: resource_info
18+
attributes:
19+
value: "## Resource info"
20+
- type: input
21+
id: resource_name
22+
attributes:
23+
label: Name
24+
description: Please provide the official name of the resource
25+
validations:
26+
required: true
27+
- type: input
28+
id: resource_url
29+
attributes:
30+
label: Resource URL
31+
description: Please provide a URL to the resource
32+
validations:
33+
required: true
34+
- type: textarea
35+
id: resource_description
36+
attributes:
37+
label: Description
38+
description: Please provide a short 1-2 sentence description of the resource
39+
validations:
40+
required: true
41+
- type: textarea
42+
id: resource_logo
43+
attributes:
44+
label: Logo
45+
description: |
46+
Please provide an SVG or transparent PNG
47+
Tip: You can attach images by clicking this area to highlight it and then dragging files in.
48+
- type: input
49+
id: resource_category
50+
attributes:
51+
label: Category
52+
description: Please specify a best fit to categorize the resource (e.g., DeFi, NFT, Scaling, etc.)
53+
- type: checkboxes
54+
id: resource_work_on
55+
attributes:
56+
label: Would you like to work on this issue?
57+
options:
58+
- label: "Yes"
59+
required: false
60+
- label: "No"
61+
required: false
62+
validations:
63+
required: true

.github/labeler.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
"dependencies 📦":
1313
- package.json
1414
- yarn.lock
15+
- pnpm-lock.yaml
1516

1617
"config ⚙️":
1718
- i18n.config.json
1819
- next.config.js
19-
- next-i18next.config,js
2020
- next-sitemap.config.js
2121
- tsconfig.json
2222
- .nvmrc

0 commit comments

Comments
 (0)