Skip to content

SOFAStack 8th anniversary challenge activity page.html#1335

Open
tangtang-0521 wants to merge 2 commits intosofastack:masterfrom
tangtang-0521:patch-30
Open

SOFAStack 8th anniversary challenge activity page.html#1335
tangtang-0521 wants to merge 2 commits intosofastack:masterfrom
tangtang-0521:patch-30

Conversation

@tangtang-0521
Copy link
Copy Markdown
Contributor

@tangtang-0521 tangtang-0521 commented Mar 27, 2026

feat: add 8th anniversary challenge folder

Summary by CodeRabbit

  • New Features
    • Added a Chinese anniversary challenge event page showcasing "SOFAStack 8周年:AI Agent PR 挑战赛任务池".
    • Displays 32 curated tasks with project grouping and difficulty labels in a card-based grid.
    • Interactive project tabs let users filter tasks and open each task's external issue link to view and claim.

feat: add 8th anniversary challenge folder
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 27, 2026

📝 Walkthrough

Walkthrough

Adds a new static HTML page for SOFAStack 8th Anniversary AI Agent PR challenge that renders a 32-item task pool with project tabs and client-side filtering/rendering via an embedded issueData array and filterProject(projectName, el) function.

Changes

Cohort / File(s) Summary
Event Challenge Page
content/zh/activities/anniversary-2026/index.html
New static HTML page containing: a sticky project tab bar, issueData (32 items), DOM-driven filterProject() function to filter by project and render glass-card issue grid (#issue-grid), and initial call to render all items.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Suggested reviewers

  • zhenjunMa

Poem

🐰 Eight hops for eight years bright,
Cards like carrots in morning light,
Tabs that twitch and filters play,
Agents nibble tasks today—
Claim a prize and jump with delight! 🎉

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding a new activity page for SOFAStack's 8th anniversary challenge. It directly corresponds to the file addition and page purpose described in the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@content/zh/activities/anniversary-2026/index.html`:
- Around line 27-35: The UI hardcodes issue counts ("32" in the header and
numbers in the tab buttons) that no longer match the actual issueData; update
the header and each button label (elements using the tab-btn class and
onclick="filterProject(...)") to derive counts from the issueData structure
instead of literal numbers — e.g., compute total via issueData.length and
per-project counts by filtering issueData for project names like "SOFA
Registry", "SOFA JRaft", "SOFARPC", "SOFABoot" and inject those computed values
into the header text and the button innerText so the displayed counts always
reflect the actual data.
- Line 115: The anchor element that renders external links (the <a> tag with
href="${item.url}" and target="_blank") is missing a rel attribute; update that
anchor to include rel="noopener noreferrer" so external links opened in a new
tab are protected from reverse-tabnabbing and prevent the opened page from
accessing window.opener.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 446f997a-6a5d-4f2b-9c35-6b59ead2b1e2

📥 Commits

Reviewing files that changed from the base of the PR and between 035e828 and d7f7de6.

📒 Files selected for processing (1)
  • content/zh/activities/anniversary-2026/index.html

Comment on lines +27 to +35
<p class="text-[10px] text-gray-500 uppercase tracking-widest italic">32 Real Issues Waiting for Your AI Agent</p>
</header>

<nav class="flex overflow-x-auto gap-2 mb-6 border-b border-gray-800 no-scrollbar sticky top-0 bg-[#0d1117] z-10 py-2 justify-start md:justify-center px-2">
<button onclick="filterProject('all', this)" class="tab-btn active">全部项目 (32)</button>
<button onclick="filterProject('SOFA Registry', this)" class="tab-btn">SOFA Registry (7)</button>
<button onclick="filterProject('SOFA JRaft', this)" class="tab-btn">SOFA JRaft (6)</button>
<button onclick="filterProject('SOFARPC', this)" class="tab-btn">SOFARPC (10)</button>
<button onclick="filterProject('SOFABoot', this)" class="tab-btn">SOFABoot (9)</button>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Fix displayed issue counts: UI currently shows 32/10, but data is 33/11.

Line 27 and Lines 31–35 hardcode counts that don’t match issueData (Lines 66–76 shows 11 SOFARPC items; total is 33). This is a user-facing correctness issue.

🔧 Minimal fix
-        <p class="text-[10px] text-gray-500 uppercase tracking-widest italic">32 Real Issues Waiting for Your AI Agent</p>
+        <p class="text-[10px] text-gray-500 uppercase tracking-widest italic">33 Real Issues Waiting for Your AI Agent</p>

-        <button onclick="filterProject('all', this)" class="tab-btn active">全部项目 (32)</button>
+        <button onclick="filterProject('all', this)" class="tab-btn active">全部项目 (33)</button>
@@
-        <button onclick="filterProject('SOFARPC', this)" class="tab-btn">SOFARPC (10)</button>
+        <button onclick="filterProject('SOFARPC', this)" class="tab-btn">SOFARPC (11)</button>

Also applies to: 66-76

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/zh/activities/anniversary-2026/index.html` around lines 27 - 35, The
UI hardcodes issue counts ("32" in the header and numbers in the tab buttons)
that no longer match the actual issueData; update the header and each button
label (elements using the tab-btn class and onclick="filterProject(...)") to
derive counts from the issueData structure instead of literal numbers — e.g.,
compute total via issueData.length and per-project counts by filtering issueData
for project names like "SOFA Registry", "SOFA JRaft", "SOFARPC", "SOFABoot" and
inject those computed values into the header text and the button innerText so
the displayed counts always reflect the actual data.

<h3 class="text-sm font-bold mb-2 leading-tight min-h-[2.5rem]">${item.title}</h3>
<p class="text-gray-500 text-[11px] leading-relaxed line-clamp-2">${item.desc}</p>
</div>
<a href="${item.url}" target="_blank" class="block text-center w-full py-2.5 rounded bg-blue-600 hover:bg-blue-500 text-[11px] font-bold transition-all active:scale-95">
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Add rel="noopener noreferrer" to external links opened in new tabs.

Line 115 uses target="_blank" without rel, which leaves a reverse-tabnabbing/security gap.

🔒 Suggested fix
-                    <a href="${item.url}" target="_blank" class="block text-center w-full py-2.5 rounded bg-blue-600 hover:bg-blue-500 text-[11px] font-bold transition-all active:scale-95">
+                    <a href="${item.url}" target="_blank" rel="noopener noreferrer" class="block text-center w-full py-2.5 rounded bg-blue-600 hover:bg-blue-500 text-[11px] font-bold transition-all active:scale-95">
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<a href="${item.url}" target="_blank" class="block text-center w-full py-2.5 rounded bg-blue-600 hover:bg-blue-500 text-[11px] font-bold transition-all active:scale-95">
<a href="${item.url}" target="_blank" rel="noopener noreferrer" class="block text-center w-full py-2.5 rounded bg-blue-600 hover:bg-blue-500 text-[11px] font-bold transition-all active:scale-95">
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/zh/activities/anniversary-2026/index.html` at line 115, The anchor
element that renders external links (the <a> tag with href="${item.url}" and
target="_blank") is missing a rel attribute; update that anchor to include
rel="noopener noreferrer" so external links opened in a new tab are protected
from reverse-tabnabbing and prevent the opened page from accessing
window.opener.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (1)
content/zh/activities/anniversary-2026/index.html (1)

65-76: Comment says "10 items" but there are 11 SOFARPC entries.

The inline comment is misleading; the array actually contains 11 SOFARPC items (lines 66–76).

📝 Suggested fix
-            // SOFARPC (10 items)
+            // SOFARPC (11 items)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/zh/activities/anniversary-2026/index.html` around lines 65 - 76, The
inline comment "// SOFARPC (10 items)" is incorrect because there are 11 SOFARPC
entries; update that comment to reflect the correct count (e.g., "// SOFARPC (11
items)") or remove the hard-coded count entirely so it can't go out of sync with
the array of objects (the array of objects with project: 'SOFARPC' entries,
titles like "Serialization Type in Tracelog" and "ServerConfig Random Port Fix"
identify the affected block).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@content/zh/activities/anniversary-2026/index.html`:
- Line 69: The listed activity object has an incorrect level value: change the
level property from 'Difficulty' to 'Hard' in the activity entry with title
'Support TripleX - Multi-Transports' (the object containing project: 'SOFARPC',
title: 'Support TripleX - Multi-Transports', url:
'https://github.com/sofastack/sofa-rpc/issues/1545') so it matches the
established 'Easy'/'Medium'/'Hard' pattern and maintains semantic consistency.
- Line 25: The inline style on the H1 element with class "text-3xl font-bold
mb-2 tracking-tight" has a malformed text-shadow value ("0 0-10px ..."); update
the text-shadow to use a valid blur radius by replacing "0 0-10px" with "0 0
10px" so the style becomes "text-shadow: 0 0 10px rgba(88,166,255,0.5)".
- Around line 32-33: The tab buttons pass project names with spaces that don't
match issueData keys, so filterProject (the onclick target) never finds matches;
either change the button arguments to the exact project identifiers used in
issueData (e.g., use "SOFARegistry" and "SOFAJRaft" in the two <button>
elements) or update filterProject to normalize both sides (e.g., strip
spaces/compare case-insensitively) before comparing i.project === projectName;
reference filterProject and issueData when making the change so the string
comparison is consistent.

---

Nitpick comments:
In `@content/zh/activities/anniversary-2026/index.html`:
- Around line 65-76: The inline comment "// SOFARPC (10 items)" is incorrect
because there are 11 SOFARPC entries; update that comment to reflect the correct
count (e.g., "// SOFARPC (11 items)") or remove the hard-coded count entirely so
it can't go out of sync with the array of objects (the array of objects with
project: 'SOFARPC' entries, titles like "Serialization Type in Tracelog" and
"ServerConfig Random Port Fix" identify the affected block).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ed8b08f6-0f6e-4d1e-afd9-00362251b637

📥 Commits

Reviewing files that changed from the base of the PR and between d7f7de6 and 63da946.

📒 Files selected for processing (1)
  • content/zh/activities/anniversary-2026/index.html

<body class="p-4 md:p-8">

<header class="text-center mb-8">
<h1 class="text-3xl font-bold mb-2 tracking-tight" style="text-shadow: 0 0-10px rgba(88,166,255,0.5)">🦐 养虾修代码</h1>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix CSS syntax error in text-shadow.

The value 0 0-10px is malformed — it's missing a space between 0 and -10px. Since blur-radius cannot be negative, this should likely be 0 0 10px.

🔧 Suggested fix
-        <h1 class="text-3xl font-bold mb-2 tracking-tight" style="text-shadow: 0 0-10px rgba(88,166,255,0.5)">🦐 养虾修代码</h1>
+        <h1 class="text-3xl font-bold mb-2 tracking-tight" style="text-shadow: 0 0 10px rgba(88,166,255,0.5)">🦐 养虾修代码</h1>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<h1 class="text-3xl font-bold mb-2 tracking-tight" style="text-shadow: 0 0-10px rgba(88,166,255,0.5)">🦐 养虾修代码</h1>
<h1 class="text-3xl font-bold mb-2 tracking-tight" style="text-shadow: 0 0 10px rgba(88,166,255,0.5)">🦐 养虾修代码</h1>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/zh/activities/anniversary-2026/index.html` at line 25, The inline
style on the H1 element with class "text-3xl font-bold mb-2 tracking-tight" has
a malformed text-shadow value ("0 0-10px ..."); update the text-shadow to use a
valid blur radius by replacing "0 0-10px" with "0 0 10px" so the style becomes
"text-shadow: 0 0 10px rgba(88,166,255,0.5)".

Comment on lines +32 to +33
<button onclick="filterProject('SOFA Registry', this)" class="tab-btn">SOFA Registry (7)</button>
<button onclick="filterProject('SOFA JRaft', this)" class="tab-btn">SOFA JRaft (6)</button>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Critical: Project names in buttons don't match issueData — filtering is broken.

The filter function uses strict equality (i.project === projectName), but:

  • Button passes 'SOFA Registry' (with space), data uses 'SOFARegistry' (no space)
  • Button passes 'SOFA JRaft' (with space), data uses 'SOFAJRaft' (no space)

Clicking these tabs will show zero results.

🐛 Suggested fix — align button values with data
-        <button onclick="filterProject('SOFA Registry', this)" class="tab-btn">SOFA Registry (7)</button>
-        <button onclick="filterProject('SOFA JRaft', this)" class="tab-btn">SOFA JRaft (6)</button>
+        <button onclick="filterProject('SOFARegistry', this)" class="tab-btn">SOFA Registry (7)</button>
+        <button onclick="filterProject('SOFAJRaft', this)" class="tab-btn">SOFA JRaft (6)</button>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/zh/activities/anniversary-2026/index.html` around lines 32 - 33, The
tab buttons pass project names with spaces that don't match issueData keys, so
filterProject (the onclick target) never finds matches; either change the button
arguments to the exact project identifiers used in issueData (e.g., use
"SOFARegistry" and "SOFAJRaft" in the two <button> elements) or update
filterProject to normalize both sides (e.g., strip spaces/compare
case-insensitively) before comparing i.project === projectName; reference
filterProject and issueData when making the change so the string comparison is
consistent.

{ project: 'SOFARPC', level: 'Easy', title: 'Serialization Type in Tracelog', desc: '在 tracelog 中记录序列化类型', url: 'https://github.com/sofastack/sofa-rpc/issues/1552' },
{ project: 'SOFARPC', level: 'Medium', title: 'Support Server Async Capability', desc: '支持服务端返回 CompletableFuture 模型', url: 'https://github.com/sofastack/sofa-rpc/issues/1550' },
{ project: 'SOFARPC', level: 'Easy', title: 'AI Assisted Documentation Optimization', desc: '使用 AI 优化和翻译文档,支持中英双语', url: 'https://github.com/sofastack/sofa-rpc/issues/1547' },
{ project: 'SOFARPC', level: 'Difficulty', title: 'Support TripleX - Multi-Transports', desc: 'Triple 协议支持 H1/H2/H3 传输层', url: 'https://github.com/sofastack/sofa-rpc/issues/1545' },
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Inconsistent difficulty level: 'Difficulty' instead of 'Hard'.

All other items use Easy, Medium, or Hard, but this entry uses 'Difficulty'. While the CSS handles it (.tag-difficulty), this inconsistency may confuse maintainers and breaks the semantic pattern.

🔧 Suggested fix
-            { project: 'SOFARPC', level: 'Difficulty', title: 'Support TripleX - Multi-Transports', desc: 'Triple 协议支持 H1/H2/H3 传输层', url: 'https://github.com/sofastack/sofa-rpc/issues/1545' },
+            { project: 'SOFARPC', level: 'Hard', title: 'Support TripleX - Multi-Transports', desc: 'Triple 协议支持 H1/H2/H3 传输层', url: 'https://github.com/sofastack/sofa-rpc/issues/1545' },
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{ project: 'SOFARPC', level: 'Difficulty', title: 'Support TripleX - Multi-Transports', desc: 'Triple 协议支持 H1/H2/H3 传输层', url: 'https://github.com/sofastack/sofa-rpc/issues/1545' },
{ project: 'SOFARPC', level: 'Hard', title: 'Support TripleX - Multi-Transports', desc: 'Triple 协议支持 H1/H2/H3 传输层', url: 'https://github.com/sofastack/sofa-rpc/issues/1545' },
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/zh/activities/anniversary-2026/index.html` at line 69, The listed
activity object has an incorrect level value: change the level property from
'Difficulty' to 'Hard' in the activity entry with title 'Support TripleX -
Multi-Transports' (the object containing project: 'SOFARPC', title: 'Support
TripleX - Multi-Transports', url:
'https://github.com/sofastack/sofa-rpc/issues/1545') so it matches the
established 'Easy'/'Medium'/'Hard' pattern and maintains semantic consistency.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant