Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
262 commits
Select commit Hold shift + click to select a range
d1da780
i18n(de): Crowdin translations
wackerow Feb 11, 2026
51db278
i18n(es): Crowdin translations
wackerow Feb 11, 2026
ca886fa
i18n(fr): Crowdin translations
wackerow Feb 11, 2026
43c664b
i18n(hi): Crowdin translations
wackerow Feb 11, 2026
7c48606
i18n(id): Crowdin translations
wackerow Feb 11, 2026
c8966a5
i18n(it): Crowdin translations
wackerow Feb 11, 2026
a2723da
i18n(ja): Crowdin translations
wackerow Feb 11, 2026
5270195
i18n(ko): Crowdin translations
wackerow Feb 11, 2026
9748cd5
i18n(mr): Crowdin translations
wackerow Feb 11, 2026
572cdae
i18n(pl): Crowdin translations
wackerow Feb 11, 2026
cdd3b03
i18n(pt-br): Crowdin translations
wackerow Feb 11, 2026
00b188c
i18n(ru): Crowdin translations
wackerow Feb 11, 2026
a058238
i18n(sw): Crowdin translations
wackerow Feb 11, 2026
2aa4ad9
i18n(ta): Crowdin translations
wackerow Feb 11, 2026
8f55b35
i18n(te): Crowdin translations
wackerow Feb 11, 2026
945f181
i18n(tr): Crowdin translations
wackerow Feb 11, 2026
bb78aa2
i18n(uk): Crowdin translations
wackerow Feb 11, 2026
d669107
i18n(ur): Crowdin translations
wackerow Feb 11, 2026
88bfc0c
i18n(vi): Crowdin translations
wackerow Feb 11, 2026
1f884fd
i18n(zh-tw): Crowdin translations
wackerow Feb 11, 2026
2e061c0
i18n(zh): Crowdin translations
wackerow Feb 11, 2026
3ef2bbb
i18n: post-import sanitization
wackerow Feb 11, 2026
76675a5
fix: escape angle brackets in translated MDX files
github-actions[bot] Feb 11, 2026
357d29f
fix(i18n): run sanitizer on pt-br translations
minimalsm Feb 13, 2026
4f5eaed
fix(i18n): run sanitizer on ko translations
minimalsm Feb 13, 2026
681bb5a
fix(i18n): add missing post_import_sanitize module
minimalsm Feb 13, 2026
bc8ed97
chore: trigger rebuild
minimalsm Feb 13, 2026
3c518c2
fix(i18n): fix MDX compilation errors in pt-br translations
minimalsm Feb 13, 2026
a14dadb
fix(i18n): repair broken code fences in ko/erc20-annotated-code
minimalsm Feb 13, 2026
92ac083
chore: trigger rebuild
minimalsm Feb 13, 2026
3949f80
chore: trigger rebuild
minimalsm Feb 13, 2026
e5c461e
fix(i18n): wrap exposed Solidity code in fences in ko/erc20-annotated…
minimalsm Feb 13, 2026
404a1e0
chore: trigger rebuild (batched)
minimalsm Feb 13, 2026
a221563
fix(i18n): add heading prefix to non-heading line with heading ID
minimalsm Feb 13, 2026
b640f5f
chore: trigger rebuild
minimalsm Feb 13, 2026
65337f4
Merge branch 'dev' into merge-dev-17122
minimalsm Feb 13, 2026
beb2725
Merge branch 'dev' into merge-dev-17166
minimalsm Feb 13, 2026
ee76657
fix(i18n): remove corrupted image path in pt-br restaking frontmatter
minimalsm Feb 13, 2026
b5f005a
Redesign /community/support/ from developer FAQ to crisis-first suppo…
Feb 16, 2026
2e50443
WIP
qbzzt Feb 17, 2026
01fd093
fix(i18n): post_import_sanitize on ai-trading-agents
wackerow Feb 18, 2026
a02d695
Merge branch 'dev' into pr/17583
wackerow Feb 18, 2026
53cf548
Need to verify from section
Feb 18, 2026
efa035a
WIP
qbzzt Feb 19, 2026
47422b0
fix(i18n): markdown syntax
wackerow Feb 19, 2026
076eacc
docs: document MDX build error from split backticks in Crowdin transl…
wackerow Feb 19, 2026
9e8e78f
refactor: ssr page, rm redundant markdown lander
wackerow Feb 19, 2026
e6c3ace
refactor: use SimpleHero
wackerow Feb 19, 2026
dec16e7
refactor: use ui/alert, rm redundant span wrapper
wackerow Feb 19, 2026
bbb9879
Ready for the update
Feb 20, 2026
9d024a1
Removed metadata
Feb 20, 2026
32a1e64
refactor: use glossary API in i18n scripts
wackerow Feb 20, 2026
ea91e01
Replace box-shadow with semantic gradient tokens on support cards
Feb 20, 2026
6cf29d9
Update public/content/developers/tutorials/creating-a-wagmi-ui-for-yo…
qbzzt Feb 24, 2026
8eec51d
Changes requested by @myelinated-wackerow
Feb 24, 2026
8e8257e
A few more changes
Feb 24, 2026
02fde4c
deprecation: remove Waffle tutorials
myelinated-wackerow Feb 25, 2026
9bff2b4
auth: update bounty-hunters CODEOWNERS
wackerow Feb 25, 2026
f7da9e3
Fix review items in wagmi v3 tutorial update
myelinated-wackerow Feb 25, 2026
76274a8
refactor(ui): WindowBox
wackerow Feb 26, 2026
690fb6c
refactor(ui): Use WindowBox for cards
wackerow Feb 26, 2026
63ac2d7
feat: add revoke link to protect section
wackerow Feb 26, 2026
7eed3e3
adding missing alt text to MDX files
mnelsonBT Feb 26, 2026
975a70d
add missing alt text for images in react code
mnelsonBT Feb 26, 2026
58b3707
fixes from validation test
mnelsonBT Feb 26, 2026
399404a
fix: rm deprecated tutorials links; replace with others
wackerow Feb 26, 2026
046af8c
reverting alt text per paul eval
mnelsonBT Feb 26, 2026
ea49d0a
patch(a11y): rm broken alt from logos
wackerow Feb 26, 2026
cd96ff4
revert: bento/logo decoration alt text
wackerow Feb 27, 2026
7c7078e
fix(a11y/i18n): untitled logo alts
wackerow Feb 27, 2026
0e8df09
patch: rm unused type property
wackerow Feb 27, 2026
98b1a7a
Final (???) suggestion from @myelinated-wackerow
qbzzt Feb 28, 2026
f02dfa1
feat: add hong kong and rome hubs
wackerow Feb 28, 2026
4d5b38e
seo: add sr only text to location title
wackerow Feb 28, 2026
520aa8e
intl: add hub strings for HK and Rome
wackerow Feb 28, 2026
062f848
Fixed the fixes
qbzzt Feb 28, 2026
40ef0aa
Merge remote-tracking branch 'origin/dev' into i18n/import/2026-01-25…
myelinated-wackerow Feb 28, 2026
fb0742b
Merge branch 'master' into dev
wackerow Feb 28, 2026
b7cbe81
fix(i18n): sanitize ko translations PR #17166
myelinated-wackerow Feb 28, 2026
067af8f
fix(i18n): review fixes for ko translations
myelinated-wackerow Feb 28, 2026
2ffe7d2
feat(i18n): add 3 new sanitizer fix functions
myelinated-wackerow Feb 28, 2026
1833d9a
docs: add ko translation review findings
myelinated-wackerow Feb 28, 2026
564ce4e
feat(i18n): add 4 sanitizer fixes for ko builds
myelinated-wackerow Feb 28, 2026
bbc3226
fix(i18n): fix 5 ko MDX build failures
myelinated-wackerow Feb 28, 2026
12ce5e0
Merge branch 'dev' into i18n/import/2026-01-25T17-44-07-ko
myelinated-wackerow Mar 1, 2026
e179a88
feat(i18n): add 3 sanitizer fixes for ko
myelinated-wackerow Mar 2, 2026
87ca098
fix(i18n): sanitize ko translation files
myelinated-wackerow Mar 2, 2026
5199f53
feat(i18n): add italic non-Latin fix
myelinated-wackerow Mar 2, 2026
27f5c8e
fix(i18n): apply italic fix to ko files
myelinated-wackerow Mar 2, 2026
996a683
fix(sentry): improve error coverage, add module tags, and upgrade SDK
pettinarip Mar 2, 2026
a0f3910
fix(sentry): normalize all page transactions to strip locale prefix
pettinarip Mar 2, 2026
b19fb94
Remove Breadcrumbs link from scams page
konopkja Mar 2, 2026
feae150
fix(sentry): filter extension and third-party noise from error tracking
pettinarip Mar 2, 2026
52069ef
Update security page: lead with recovery phrase instead of private keys
konopkja Mar 2, 2026
f7056ea
Rewrite misconception headlines as questions
konopkja Mar 2, 2026
9cc2a62
Update misconception link labels to match question format
konopkja Mar 2, 2026
143da32
Merge pull request #17166 from ethereum/i18n/import/2026-01-25T17-44-…
wackerow Mar 2, 2026
57f487f
Change alert title to 'Ethereum is not a company'
konopkja Mar 2, 2026
abea428
Merge branch 'dev' into pr/17583
wackerow Mar 2, 2026
da2ee78
deprecate(i18n): non-English support page
wackerow Mar 2, 2026
19f0491
feat: add custom matomo events
wackerow Mar 2, 2026
6da372d
feat(ui): add AlertIcon to ui/alert
wackerow Mar 2, 2026
a0c9bfb
refactor: use ui/alert AlertIcon for alert icon
wackerow Mar 2, 2026
5994068
patch: em dash spacing
wackerow Mar 2, 2026
b2f259e
patch: bold boundary
wackerow Mar 2, 2026
a45086e
feat: add internet analogy
wackerow Mar 2, 2026
552491d
feat: add analysis links
wackerow Mar 2, 2026
889fb0c
feat: add open source tooling options
wackerow Mar 2, 2026
88462cb
refactor: open source tooling first
wackerow Mar 2, 2026
94d82f2
i18n: extract support page strings
myelinated-wackerow Mar 2, 2026
9f16f1a
fix(lint): add root flag to eslint config
wackerow Mar 2, 2026
8ea728a
patch: add ethereum hrefs
wackerow Mar 2, 2026
b8400fc
patch: added `sizes` for stablecoin thumbnails
wackerow Mar 2, 2026
f59fb14
Merge branch 'dev' into SEOaudit/imagealttext
wackerow Mar 2, 2026
62aff88
Merge pull request #17672 from mnelsonBT/SEOaudit/imagealttext
wackerow Mar 2, 2026
68d06af
patch(ui): use 14px font-size on breadcrumbs
wackerow Mar 2, 2026
c849f50
i18n: link first ethereum.org mention
myelinated-wackerow Mar 2, 2026
1e91ff7
fix: apply `select-none` to external link text
myelinated-wackerow Mar 2, 2026
94bed59
fix: wildcard allow githubusercontent.com subdomains
myelinated-wackerow Mar 2, 2026
81e3089
refactor: extract ContributorCard component
myelinated-wackerow Mar 2, 2026
659684d
fix: remove broken contributor profile URLs
myelinated-wackerow Mar 2, 2026
f932997
patch: auto formatting
wackerow Mar 3, 2026
3cb2adb
Merge pull request #17603 from qbzzt/260216-wagmi-update
wackerow Mar 3, 2026
6a65018
Merge branch 'master' into dev
wackerow Mar 3, 2026
205932b
Merge branch 'dev' into update-contributors
wackerow Mar 3, 2026
d5b6e30
patch(a11y): remove decorative alt tag from profiles
wackerow Mar 3, 2026
25291c6
Merge remote-tracking branch 'origin/dev' into i18n/import/2026-01-20…
myelinated-wackerow Mar 3, 2026
e5fbbc7
Merge pull request #17583 from konopkja/content/redesign-support-page
wackerow Mar 3, 2026
f2d789c
Merge branch 'dev' into i18n-support-page
myelinated-wackerow Mar 3, 2026
16abdc2
i18n(ar): Crowdin translations
wackerow Mar 3, 2026
7ce0229
i18n(bn): Crowdin translations
wackerow Mar 3, 2026
c849274
i18n(cs): Crowdin translations
wackerow Mar 3, 2026
6fed3cf
i18n(de): Crowdin translations
wackerow Mar 3, 2026
dddb3de
i18n(es): Crowdin translations
wackerow Mar 3, 2026
a1685d9
i18n(fr): Crowdin translations
wackerow Mar 3, 2026
9f9cc17
i18n(hi): Crowdin translations
wackerow Mar 3, 2026
81a6bd8
i18n(id): Crowdin translations
wackerow Mar 3, 2026
4aed8c2
i18n(it): Crowdin translations
wackerow Mar 3, 2026
2b13a99
i18n(ja): Crowdin translations
wackerow Mar 3, 2026
9b1ea32
i18n(ko): Crowdin translations
wackerow Mar 3, 2026
74c42f4
i18n(mr): Crowdin translations
wackerow Mar 3, 2026
d084d46
i18n(pl): Crowdin translations
wackerow Mar 3, 2026
3a8ba31
i18n(pt-br): Crowdin translations
wackerow Mar 3, 2026
d5c9980
i18n(ru): Crowdin translations
wackerow Mar 3, 2026
0356e8c
i18n(sw): Crowdin translations
wackerow Mar 3, 2026
a505126
i18n(ta): Crowdin translations
wackerow Mar 3, 2026
f73f591
i18n(te): Crowdin translations
wackerow Mar 3, 2026
0422b9d
i18n(tr): Crowdin translations
wackerow Mar 3, 2026
84d35e5
i18n(uk): Crowdin translations
wackerow Mar 3, 2026
f84d13d
i18n(ur): Crowdin translations
wackerow Mar 3, 2026
b2814a7
i18n(vi): Crowdin translations
wackerow Mar 3, 2026
036fdf2
i18n(zh-tw): Crowdin translations
wackerow Mar 3, 2026
9b73edc
i18n(zh): Crowdin translations
wackerow Mar 3, 2026
496e910
i18n(ar): Crowdin translations
wackerow Mar 3, 2026
fbe7dfb
i18n(bn): Crowdin translations
wackerow Mar 3, 2026
2eee7bb
i18n(cs): Crowdin translations
wackerow Mar 3, 2026
6a9a39e
i18n(de): Crowdin translations
wackerow Mar 3, 2026
fb55013
i18n(es): Crowdin translations
wackerow Mar 3, 2026
c52242a
i18n(fr): Crowdin translations
wackerow Mar 3, 2026
c866c01
i18n(hi): Crowdin translations
wackerow Mar 3, 2026
a3d0e43
i18n(id): Crowdin translations
wackerow Mar 3, 2026
1fccd53
i18n(it): Crowdin translations
wackerow Mar 3, 2026
5c84f28
i18n(ja): Crowdin translations
wackerow Mar 3, 2026
8cc37f8
i18n(ko): Crowdin translations
wackerow Mar 3, 2026
300ff9c
i18n(mr): Crowdin translations
wackerow Mar 3, 2026
4510c06
i18n(pl): Crowdin translations
wackerow Mar 3, 2026
10330e5
i18n(pt-br): Crowdin translations
wackerow Mar 3, 2026
f2e879b
i18n(ru): Crowdin translations
wackerow Mar 3, 2026
7ee2ca9
i18n(sw): Crowdin translations
wackerow Mar 3, 2026
7e6ad05
i18n(ta): Crowdin translations
wackerow Mar 3, 2026
5657bbc
i18n(te): Crowdin translations
wackerow Mar 3, 2026
29c5465
i18n(tr): Crowdin translations
wackerow Mar 3, 2026
214084d
i18n(uk): Crowdin translations
wackerow Mar 3, 2026
46abc05
i18n(ur): Crowdin translations
wackerow Mar 3, 2026
5fba32c
i18n(vi): Crowdin translations
wackerow Mar 3, 2026
c77f166
i18n(zh-tw): Crowdin translations
wackerow Mar 3, 2026
599f90a
i18n(zh): Crowdin translations
wackerow Mar 3, 2026
d6120f2
i18n(ar): JSX attribute translations
wackerow Mar 3, 2026
fffb761
i18n(cs): JSX attribute translations
wackerow Mar 3, 2026
f8d6121
i18n(de): JSX attribute translations
wackerow Mar 3, 2026
80b5f5d
i18n(es): JSX attribute translations
wackerow Mar 3, 2026
567ccbc
i18n(mr): JSX attribute translations
wackerow Mar 3, 2026
11c36fe
i18n(pl): JSX attribute translations
wackerow Mar 3, 2026
2a002d2
i18n(pt-br): JSX attribute translations
wackerow Mar 3, 2026
77df6d5
i18n(ru): JSX attribute translations
wackerow Mar 3, 2026
d89c6ae
i18n(sw): JSX attribute translations
wackerow Mar 3, 2026
fe98aa8
i18n(te): JSX attribute translations
wackerow Mar 3, 2026
5549b8f
i18n(tr): JSX attribute translations
wackerow Mar 3, 2026
7810132
i18n(uk): JSX attribute translations
wackerow Mar 3, 2026
2cfdec3
i18n(ur): JSX attribute translations
wackerow Mar 3, 2026
2830922
i18n(vi): JSX attribute translations
wackerow Mar 3, 2026
38be5a3
i18n(zh-tw): JSX attribute translations
wackerow Mar 3, 2026
a36dde2
i18n(zh): JSX attribute translations
wackerow Mar 3, 2026
945ee3f
feat(ui): update tutorials layout
wackerow Mar 3, 2026
02a8bdc
fix(i18n): improve sanitizer fixes and tests
myelinated-wackerow Mar 3, 2026
b1d9b72
fix(i18n): sanitize pt-br translation import
myelinated-wackerow Mar 3, 2026
cddd6da
feat(i18n): warn on translated inline code spans
myelinated-wackerow Mar 3, 2026
7c2bafb
fix(i18n): restore inline code spans in pt-br
myelinated-wackerow Mar 3, 2026
558412c
fix(i18n): fix brand names and typos in pt-br
myelinated-wackerow Mar 3, 2026
545cc40
Merge remote-tracking branch 'origin/dev' into i18n/import/2026-01-20…
myelinated-wackerow Mar 3, 2026
b905197
Merge pull request #17122 from ethereum/i18n/import/2026-01-20T04-39-…
wackerow Mar 3, 2026
4aa5112
Merge pull request #17676 from ethereum/patch-team-logo-alts
pettinarip Mar 3, 2026
0073f0b
Merge pull request #17665 from ethereum/bounty-codeowners
pettinarip Mar 3, 2026
f741318
Merge pull request #17686 from ethereum/ethereum-everywhere
pettinarip Mar 3, 2026
e47cc62
Merge pull request #17693 from ethereum/open-source-explorers
pettinarip Mar 3, 2026
02e3f0b
Merge pull request #17699 from ethereum/fix/sr-only-copy-paste
pettinarip Mar 3, 2026
19db46a
Merge pull request #17703 from ethereum/tutorials-layout
pettinarip Mar 3, 2026
ba69874
Merge pull request #17696 from ethereum/icon-sizes
pettinarip Mar 3, 2026
5b087aa
Merge pull request #17697 from ethereum/breadcrumb-font-size
pettinarip Mar 3, 2026
f891f6e
Merge pull request #17695 from ethereum/eslint-root
pettinarip Mar 3, 2026
905f6b7
Merge remote-tracking branch 'origin/dev' into i18n/import/2026-03-03…
myelinated-wackerow Mar 3, 2026
57a4be2
fix(i18n): review support page translations
myelinated-wackerow Mar 3, 2026
b7eb0a3
feat: add structured data for community hubs
myelinated-wackerow Mar 3, 2026
c3b22ae
Merge remote-tracking branch 'origin/dev' into i18n/import/2026-03-03…
myelinated-wackerow Mar 3, 2026
3b41160
fix(i18n): sanitize and review support MD
myelinated-wackerow Mar 3, 2026
10354a0
Merge branch 'dev' into i18n-support-page
wackerow Mar 3, 2026
af549ca
Merge branch 'i18n-support-page' into i18n/import/2026-03-03T04-59-13…
myelinated-wackerow Mar 3, 2026
63d7b3d
Merge branch 'i18n-support-page' into i18n/import/2026-03-03T03-22-37…
myelinated-wackerow Mar 3, 2026
efcb590
fix(sanitizer): skip PascalCase MDX components
myelinated-wackerow Mar 3, 2026
cee4a84
Merge pull request #17702 from ethereum/i18n/import/2026-03-03T04-59-…
wackerow Mar 4, 2026
b21039f
Merge pull request #17701 from ethereum/i18n/import/2026-03-03T03-22-…
wackerow Mar 4, 2026
ff3c2d5
fix: t.rich link rendering
wackerow Mar 4, 2026
0299b6c
Merge branch 'dev' into remove-waffle-tutorials
wackerow Mar 4, 2026
23a862f
refactor: use explicit avatars subdomains
wackerow Mar 3, 2026
a1681c3
Merge branch 'dev' into update-contributors
wackerow Mar 4, 2026
17680e4
Merge pull request #17275 from ethereum/i18n/import/2026-02-11T20-35-…
wackerow Mar 4, 2026
bbf469d
Merge pull request #17610 from ethereum/i18n-glossary-fetch
wackerow Mar 4, 2026
8495f14
Remove broken links from community grants page
konopkja Mar 4, 2026
bc90fb2
Increase max bounty payment to $1,000,000
fredrik0x Mar 4, 2026
53b4088
Merge pull request #17698 from ethereum/update-contributors
pettinarip Mar 4, 2026
cae5adf
Merge branch 'dev' into fix/remove-broken-grant-links
wackerow Mar 4, 2026
c77bb6a
Merge pull request #17709 from konopkja/fix/remove-broken-grant-links
wackerow Mar 4, 2026
1c1bc28
docs: update README.md [skip ci]
allcontributors[bot] Mar 4, 2026
1939fb6
docs: update .all-contributorsrc [skip ci]
allcontributors[bot] Mar 4, 2026
c7bc57a
Merge pull request #17714 from ethereum/all-contributors/add-skaunov
wackerow Mar 4, 2026
c617ca5
docs: update README.md [skip ci]
allcontributors[bot] Mar 4, 2026
e081fe0
docs: update .all-contributorsrc [skip ci]
allcontributors[bot] Mar 4, 2026
e343ff3
Merge pull request #17715 from ethereum/all-contributors/add-codebyan…
wackerow Mar 4, 2026
e20f414
build(deps): bump svgo from 3.3.2 to 3.3.3
dependabot[bot] Mar 5, 2026
96bce74
Merge pull request #17694 from ethereum/i18n-support-page
wackerow Mar 5, 2026
5481974
Merge pull request #17664 from ethereum/remove-waffle-tutorials
wackerow Mar 5, 2026
d103b0f
Merge pull request #17692 from ethereum/fix/sentry-cleanup
wackerow Mar 5, 2026
8b59aa0
Merge pull request #17711 from ethereum/fredrik0x-patch-1
wackerow Mar 5, 2026
dc7e853
Merge pull request #17716 from ethereum/dependabot/npm_and_yarn/svgo-…
wackerow Mar 5, 2026
e272958
fix(seo): fix JSON-LD namespace and schema types on /wallets/find-wal…
konopkja Mar 5, 2026
6577c9e
Merge pull request #17706 from ethereum/hub-schema
pettinarip Mar 5, 2026
75db5df
fix(seo): correct chromium platform label
myelinated-wackerow Mar 6, 2026
58744aa
fix(seo): restore image in CollectionPage
myelinated-wackerow Mar 6, 2026
6716d46
Merge pull request #17721 from konopkja/fix/find-wallet-jsonld
wackerow Mar 6, 2026
4c19f42
10.26.0
wackerow Mar 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
77 changes: 4 additions & 73 deletions .all-contributorsrc

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"root": true,
"extends": ["eslint:recommended", "next/core-web-vitals", "prettier"],
"env": {
"es6": true,
Expand Down
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@
* @wackerow @pettinarip @minimalsm

# Owners of specific files
/src/data/consensus-bounty-hunters.json @asanso @fredriksvantes
/src/data/*-bounty-hunters.json @fredriksvantes @0xMushow @bshastry @0xTylerHolmes
/src/data/wallets/new-to-crypto.ts @konopkja @minimalsm
146 changes: 73 additions & 73 deletions README.md

Large diffs are not rendered by default.

67 changes: 56 additions & 11 deletions app/[locale]/bug-bounty/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ export default async function Page({ params }: { params: Promise<Params> }) {
const { locale } = await params

const t = await getTranslations({ namespace: "page-bug-bounty" })
const tCommon = await getTranslations({ namespace: "common" })

const commitHistoryCache: CommitHistory = {}
const { contributors, lastEditLocaleTimestamp } =
Expand Down Expand Up @@ -304,39 +305,83 @@ export default async function Page({ params }: { params: Promise<Params> }) {
</Text>
<ClientRow>
<Client>
<Image src={besu} alt="" {...iconImageProps()} />
<Image
src={besu}
alt={tCommon("item-logo", { item: "Besu" })}
{...iconImageProps()}
/>
</Client>
<Client>
<Image src={erigon} alt="" {...iconImageProps()} />
<Image
src={erigon}
alt={tCommon("item-logo", { item: "Erigon" })}
{...iconImageProps()}
/>
</Client>
<Client>
<Image src={geth} alt="" {...iconImageProps()} />
<Image
src={geth}
alt={tCommon("item-logo", { item: "Geth" })}
{...iconImageProps()}
/>
</Client>
<Client>
<Image src={nethermind} alt="" {...iconImageProps()} />
<Image
src={nethermind}
alt={tCommon("item-logo", { item: "Nethermind" })}
{...iconImageProps()}
/>
</Client>
<Client>
<Image src={reth} alt="" {...iconImageProps()} />
<Image
src={reth}
alt={tCommon("item-logo", { item: "Reth" })}
{...iconImageProps()}
/>
</Client>
</ClientRow>
<ClientRow>
<Client>
<Image src={lighthouseLight} alt="" {...iconImageProps(true)} />
<Image
src={lighthouseLight}
alt={tCommon("item-logo", { item: "Lighthouse" })}
{...iconImageProps(true)}
/>
</Client>
<Client>
<Image src={lodestar} alt="" {...iconImageProps()} />
<Image
src={lodestar}
alt={tCommon("item-logo", { item: "Lodestar" })}
{...iconImageProps()}
/>
</Client>
<Client>
<Image src={nimbus} alt="" {...iconImageProps()} />
<Image
src={nimbus}
alt={tCommon("item-logo", { item: "Nimbus" })}
{...iconImageProps()}
/>
</Client>
<Client>
<Image src={prysm} alt="" {...iconImageProps()} />
<Image
src={prysm}
alt={tCommon("item-logo", { item: "Prysm" })}
{...iconImageProps()}
/>
</Client>
<Client>
<Image src={tekuLight} alt="" {...iconImageProps(true)} />
<Image
src={tekuLight}
alt={tCommon("item-logo", { item: "Teku" })}
{...iconImageProps(true)}
/>
</Client>
<Client>
<Image src={grandine} alt="" {...iconImageProps()} />
<Image
src={grandine}
alt={tCommon("item-logo", { item: "Grandine" })}
{...iconImageProps()}
/>
</Client>
</ClientRow>
<div className="mb-12 mt-8 w-full border-t bg-background-highlight px-0 py-16 shadow-table-item-box">
Expand Down
89 changes: 89 additions & 0 deletions app/[locale]/community/events/page-jsonld.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,93 @@ import { getLocaleYear } from "@/lib/utils/date"
import {
ethereumCommunityOrganization,
ethereumFoundationOrganization,
ethereumFoundationReference,
} from "@/lib/utils/jsonld"
import { normalizeUrlForJsonLd } from "@/lib/utils/url"

import { communityHubSchemas } from "@/data/community-hub-schemas"
import communityHubs from "@/data/community-hubs"

function buildHubSchemaNodes(
hub: (typeof communityHubs)[number],
description: string
) {
const schema = communityHubSchemas[hub.id]
if (!schema) return []

const placeId = `#hub-location-${hub.id}`
const seriesId = `#coworking-series-${hub.id}`

const serviceNode = {
"@type": "Service" as const,
name: "Ethereum Community Coworking and Events",
description,
provider: ethereumFoundationReference,
areaServed: {
"@type": "City" as const,
name: hub.location,
},
}

const placeNode: Record<string, unknown> = {
"@type": "Place" as const,
"@id": placeId,
name: schema.hubName ?? `Ethereum Community Hub (${hub.location})`,
}

if (schema.address) {
placeNode.address = {
"@type": "PostalAddress" as const,
streetAddress: schema.address.streetAddress,
addressLocality: schema.address.addressLocality,
...(schema.address.postalCode && {
postalCode: schema.address.postalCode,
}),
addressCountry: schema.address.addressCountry,
}
}

if (schema.containedInPlace) {
placeNode.containedInPlace = {
"@type": "LocalBusiness" as const,
name: schema.containedInPlace.name,
...(schema.containedInPlace.url && {
url: schema.containedInPlace.url,
}),
}
}

const eventNode = {
"@type": ["EventSeries", "Event"] as const,
"@id": seriesId,
name: schema.eventSeriesName ?? "Open Ethereum Coworking Hours",
description: schema.eventDescription,
isAccessibleForFree: true,
url: hub.coworkingSignupUrl,
eventStatus: "https://schema.org/EventScheduled",
eventAttendanceMode: "https://schema.org/OfflineEventAttendanceMode",
organizer: ethereumFoundationReference,
location: { "@id": placeId },
eventSchedule: {
"@type": "Schedule" as const,
...(schema.schedule.startDate && {
startDate: schema.schedule.startDate,
}),
...(schema.schedule.startTime && {
startTime: schema.schedule.startTime,
}),
...(schema.schedule.endTime && {
endTime: schema.schedule.endTime,
}),
repeatFrequency: schema.schedule.repeatFrequency,
byDay: schema.schedule.byDay,
scheduleTimezone: schema.schedule.scheduleTimezone,
},
}

return [serviceNode, placeNode, eventNode]
}

export default async function EventsJsonLD({
locale,
contributors,
Expand All @@ -30,6 +114,10 @@ export default async function EventsJsonLD({
url: contributor.html_url,
}))

const hubSchemaNodes = communityHubs.flatMap((hub) =>
buildHubSchemaNodes(hub, t(hub.descriptionKey))
)

const jsonLd = {
"@context": "https://schema.org",
"@graph": [
Expand Down Expand Up @@ -118,6 +206,7 @@ export default async function EventsJsonLD({
publisher: ethereumFoundationOrganization,
reviewedBy: ethereumFoundationOrganization,
},
...hubSchemaNodes,
],
}

Expand Down
20 changes: 9 additions & 11 deletions app/[locale]/community/events/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,13 @@ const Page = async ({ params }: { params: PageParams }) => {
sizes="6rem"
/>
</div>
<h3 className="text-2xl font-bold">{location}</h3>
<h3 className="text-2xl font-bold">
{location}
<span className="sr-only">
&nbsp;
{t("page-events-meta-ethereum-community-hub")}
</span>
</h3>
<div className="space-y-[1lh]">
<p>{t(descriptionKey)}</p>
<p>{t(ctaKey)}</p>
Expand Down Expand Up @@ -434,11 +440,7 @@ const Page = async ({ params }: { params: PageParams }) => {
<div className="flex flex-col gap-y-8 rounded-4xl bg-gradient-to-b from-accent-a/5 to-accent-a/15 px-4 py-6 md:p-12 dark:from-accent-a/10 dark:to-accent-a/20">
<div className="flex items-center gap-3">
<div className="size-16 overflow-hidden rounded-full">
<Image
src={ethereumEverywhereLogo}
alt={t("item-logo", { name: "Ethereum Everywhere" })}
sizes="4rem"
/>
<Image src={ethereumEverywhereLogo} alt="" sizes="4rem" />
</div>
<h3 className="text-xl font-bold">
{t("page-events-support-ethereum-everywhere")}
Expand Down Expand Up @@ -502,11 +504,7 @@ const Page = async ({ params }: { params: PageParams }) => {
<div className="flex flex-col gap-y-8 rounded-4xl bg-gradient-to-b from-accent-c/5 to-accent-c/15 px-4 py-6 md:p-12 dark:from-accent-c/10 dark:to-accent-c/20">
<div className="flex items-center gap-3">
<div className="size-16 overflow-hidden rounded-full">
<Image
src={geodeLabsLogo}
alt={t("item-logo", { name: "GeodeLabs" })}
sizes="4rem"
/>
<Image src={geodeLabsLogo} alt="" sizes="4rem" />
</div>
<h3 className="text-xl font-bold">
{t("page-events-support-geode-labs")}
Expand Down
Loading
Loading