feat: add content and style (撰寫參與指南內容)#240
Conversation
Dokploy Preview Deployment
|
📝 WalkthroughWalkthroughThis PR adds new shared callout components, updates global prose and navbar behavior, and introduces a broad set of English and Chinese participate-guide pages covering attendee, speaker, sponsor, community, overseas, and welcome-party information. ChangesUI Components, Styling, and Navigation
Estimated code review effort: 2 (Simple) | ~15 minutes Participate Guide Content Pages
Estimated code review effort: 2 (Simple) | ~20 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f24844a52d
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| { | ||
| key: 'participate', | ||
| children: [ | ||
| { label: t('menu.participate_index'), path: '/participate' }, |
There was a problem hiding this comment.
Prerender the hidden participate routes
The GitHub Pages workflow runs pnpm build (nuxt generate), and Nuxt's prerenderer only discovers routes from rendered <a> tags or explicit prerender routes. These new content routes are only inside the closed CpDropdown/mobile menu (v-if false during SSR), and no nitro.prerender.routes/prerenderRoutes entries were added, so /participate and the new /participate/* pages are not emitted in .output/public and will 404 on direct visits after deployment.
Useful? React with 👍 / 👎.
|
|
||
| ## Pages | ||
|
|
||
| - [First Timer](./first-time.md) |
There was a problem hiding this comment.
Remove
.md suffixes from internal links
These Markdown links are emitted as normal hrefs by the content renderer, but the catch-all page queries extensionless routes such as /participate/first-time; clicking ./first-time.md from the generated site navigates to a .md URL that no route/content path matches. Please use extensionless URLs (for example /participate/first-time or ./first-time) for this and the other related-page links added in the participate content.
Useful? React with 👍 / 👎.
| - Early bird period: 2025-07-10 21:00 to 2025-08-05 20:00 (UTC+8) | ||
| - Pre-purchase period: 2025-07-10 21:00 to 2025-08-07 20:45 |
There was a problem hiding this comment.
Correct the drink-ticket sale years
This 2026 Welcome Party page lists ticket sale windows in July/August 2025, so users will see the preorder periods as having expired a year before the event even though the party date is 2026/08/07; the Chinese page has the same stale years. Update these to the 2026 sale windows or remove the dates until they are confirmed.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Actionable comments posted: 17
🧹 Nitpick comments (2)
app/components/content/Danger.vue (1)
1-19: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winConsider extracting a shared
Calloutbase component.Danger.vue, Tip.vue, and Warning.vue (and Info.vue) share identical structure/markup, differing only in color utility classes and the border color. Consolidating into a single component with a
variant/colorprop would reduce duplication and ease future maintenance (e.g. adding icons or ARIA roles to all callouts at once).♻️ Example consolidated component
<script setup lang="ts"> const props = defineProps<{ title?: string variant?: 'info' | 'tip' | 'warning' | 'danger' }>() const styles = { info: 'text-primary-800 border-primary-400 bg-primary-50', tip: 'text-green-900 border-cp-green bg-green-50', warning: 'text-yellow-950 border-yellow-500 bg-yellow-50', danger: 'text-red-950 border-red-500 bg-red-50', } const variantClass = styles[props.variant ?? 'info'] </script> <template> <aside :class="`text-sm my-4 px-4 py-3 border-l-4 rounded ${variantClass}`"> <p v-if="title" class="font-bold my-0"> {{ title }} </p> <div class="[&>:first-child]:mt-0 [&>:last-child]:mb-0"> <slot /> </div> </aside> </template>🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@app/components/content/Danger.vue` around lines 1 - 19, Extract the duplicated callout markup in Danger.vue, Tip.vue, Warning.vue, and Info.vue into a shared Callout component with a variant prop. Keep the common structure in the new base component (aside, title, slot wrapper) and move only the color/border utility classes into a variant-to-class mapping. Update the existing components to delegate to this shared Callout so the unique symbols like Danger.vue, Tip.vue, Warning.vue, and Info.vue all reuse the same implementation.app/assets/css/main.css (1)
1-9: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueConsider using UnoCSS theme tokens instead of hardcoded hex colors.
Elsewhere in this PR (Danger/Tip/Warning/Info components), colors are expressed via UnoCSS theme utility classes (e.g.
bg-primary-50,text-red-950). This block instead hardcodes hex values, which could drift from the theme palette over time.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@app/assets/css/main.css` around lines 1 - 9, The `.prose :where(:not(pre) > code)` rule uses hardcoded hex colors that should align with the UnoCSS theme palette. Update the color, border, and background values to use theme tokens or equivalent UnoCSS utility-driven values consistent with the Danger/Tip/Warning/Info components, so this block stays synchronized with the shared design system.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@app/components/shared/CpNavbar.vue`:
- Around line 227-236: The zh locale block in CpNavbar.vue is missing the
invitation_letter_guide translation used by t('menu.invitation_letter_guide'),
so add the corresponding zh label alongside the other menu keys in the locale
object. Keep it consistent with the existing en locale entry and the surrounding
menu translation symbols so the navbar renders the translated text instead of
the raw key.
In `@content/en/participate/activity.md`:
- Around line 20-24: The Markdown block in the `:::info` section has extra
leading indentation on the bullet item, which is tripping the markdown check.
Update the content in `activity.md` so the list item under the `:::info` block
is aligned without the leading spaces, keeping the `:::info` wrapper and the
link text intact.
- Around line 1-3: Add frontmatter metadata to the Activity content entry so
`app/pages/[...slug].vue` can populate page meta correctly. Update the markdown
file to include `title` and `description` in frontmatter, keeping the existing
H1/body content intact, and make sure the values match the page’s current
subject so the entry is self-describing.
In `@content/en/participate/open-source-community.md`:
- Around line 57-60: Clarify the permitted poster placement in the classroom
entrance decoration guidance to match the later restriction. Update the wording
in the “Classroom Entrance Decoration” section so it explicitly says materials
may be posted only at the classroom entrance or on COSCUP-provided boards, and
avoid implying any generic nearby board is allowed. Keep the phrasing consistent
with the existing “Classroom Entrance Decoration” and “Session schedule”
guidance so readers can easily find the approved location.
- Around line 70-80: The sample agenda date is inconsistent with the surrounding
Sunday references and should be corrected in the open-source community template.
Update the example text in the schedule section so the "TR 515" agenda uses the
same Sunday date as the rest of the document, keeping the "Example title" and
session schedule snippets aligned.
In `@content/en/participate/speaker-participation.md`:
- Around line 26-30: The markdown table in speaker-participation.md needs its
spacing/alignment normalized to match the repository’s expected table
formatting. Reflow the table under the Room and Projector Aspect Ratio headings
so the column separators and cell padding are consistent with the project’s
markdown style, keeping the same content in the same rows.
In `@content/en/participate/sponsor-partner.md`:
- Around line 23-25: The embedded Flickr media in the sponsor-partner page lacks
accessible labels, so update each iframe/embedded media block to include a
concise title or replace it with a linked image plus caption. Apply this to both
embed instances in the section containing the Flickr player iframe, using the
surrounding figure/embed markup to locate and label each one distinctly.
In `@content/en/participate/welcome-party.md`:
- Around line 51-62: Refresh the ticketing copy in the welcome-party content
before publishing: the current ticket block still contains draft values such as
the 2025 sale window, the `TBD` purchase link, and placeholder row labels in the
ticket table. Update the ticketing details in the welcome-party markdown section
so the periods, link, and ticket type names reflect the finalized 2026 event
information, and verify the text around the drink ticket purchase block reads as
publish-ready copy.
In `@content/zh/participate/activity.md`:
- Around line 13-15: Remove the extra blank line immediately before the “##
會場與樓層” heading in the markdown content so it matches the expected formatting.
Update the section in the participate activity document by tightening the
spacing around that heading, and verify there are no stray empty lines left
before the heading text.
- Around line 1-3: The participation page markdown is missing frontmatter
metadata, so `app/pages/[...slug].vue` cannot reliably populate page meta from
the content entry. Add frontmatter at the top of the document with `title` and
`description` for this page, keeping the existing H1 content intact, and ensure
the values match the page’s Chinese participation topic so the metadata is
available consistently.
In `@content/zh/participate/open-source-community.md`:
- Around line 71-80: Update the example date in the open-source community guide
so it matches the surrounding references; the sample title and agenda markup
under the example section currently use TR 515 (08/10 Sunday), but they should
be consistent with the 08/09 Sunday date used elsewhere. Fix the text in the
example block and the related HTML heading in the same section so readers copy
the correct date.
- Around line 58-60: The posting-location guidance in the open-source community
participation doc is inconsistent: the section under the agenda room decoration
guidance allows posting on the classroom door or nearby board, while the later
venue rules restrict postings to the conference-provided board. Update the
related text in the section with the agenda room decoration guidance and the
venue posting rule so they use the same allowed location wording, and reference
the same posting-board terminology consistently throughout the document.
In `@content/zh/participate/oversea.md`:
- Around line 239-260: The emergency helper note uses a different mailbox than
the main emergency-contact instructions, so urgent reports may go to the wrong
inbox. Update the Chinese note in the same section to match the canonical
emergency address already used above, keeping the mailbox consistent across the
emergency guidance. Locate the embedded email reference in the helper note and
replace it so both the main instructions and the note point to the same COSCUP
emergency mailbox.
In `@content/zh/participate/speaker-participation.md`:
- Around line 26-30: The table in the speaker participation markdown needs its
spacing normalized to match the English page’s reflowed Markdown style. Update
the table under the room/projector section in speaker-participation.md so the
column alignment and spacing follow the same formatting pattern used elsewhere,
keeping the content unchanged.
In `@content/zh/participate/sponsor-partner.md`:
- Around line 23-25: The embedded Flickr media in the sponsor-partner content
lacks accessible names, so update each iframe element to include a short
descriptive title or replace the embed with a linked image that has a caption;
apply the same fix to both embedded media instances referenced by the comment
and keep the change within the existing figure/iframe markup.
In `@content/zh/participate/welcome-party.md`:
- Around line 52-63: Refresh the ticketing section in welcome-party.md before
publishing: update the early-bird and pre-order dates for the 2026 guide,
replace the `待補` purchase link with the real URL, and rename the placeholder
table labels in the ticket pricing block. Use the existing ticketing block near
the “酒券可透過...” text and the ticket table to keep the `welcome-party` content
current and complete.
- Around line 71-75: The space-description text in the welcome-party translation
uses mistranslated venue terms, so update the copy in the front-area/back-area
paragraph to match the English source. Replace the incorrect references in the
“感覺有點擠?” section so it refers to the front area and the bistro rather than a
hotel, and keep the rest of the seating/amenities description aligned with the
same intent.
---
Nitpick comments:
In `@app/assets/css/main.css`:
- Around line 1-9: The `.prose :where(:not(pre) > code)` rule uses hardcoded hex
colors that should align with the UnoCSS theme palette. Update the color,
border, and background values to use theme tokens or equivalent UnoCSS
utility-driven values consistent with the Danger/Tip/Warning/Info components, so
this block stays synchronized with the shared design system.
In `@app/components/content/Danger.vue`:
- Around line 1-19: Extract the duplicated callout markup in Danger.vue,
Tip.vue, Warning.vue, and Info.vue into a shared Callout component with a
variant prop. Keep the common structure in the new base component (aside, title,
slot wrapper) and move only the color/border utility classes into a
variant-to-class mapping. Update the existing components to delegate to this
shared Callout so the unique symbols like Danger.vue, Tip.vue, Warning.vue, and
Info.vue all reuse the same implementation.
🪄 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 Plus
Run ID: a3d8e6c9-ce43-4481-9f82-64ed77495862
⛔ Files ignored due to path filters (2)
public/participate/welcome-party/space-en.pngis excluded by!**/*.pngpublic/participate/welcome-party/space-zh.pngis excluded by!**/*.png
📒 Files selected for processing (23)
app/assets/css/main.cssapp/components/content/Danger.vueapp/components/content/Info.vueapp/components/content/Tip.vueapp/components/content/Warning.vueapp/components/shared/CpNavbar.vuecontent/en/participate/activity.mdcontent/en/participate/first-time.mdcontent/en/participate/index.mdcontent/en/participate/open-source-community.mdcontent/en/participate/oversea.mdcontent/en/participate/speaker-participation.mdcontent/en/participate/sponsor-partner.mdcontent/en/participate/welcome-party.mdcontent/zh/participate/activity.mdcontent/zh/participate/first-time.mdcontent/zh/participate/index.mdcontent/zh/participate/open-source-community.mdcontent/zh/participate/oversea.mdcontent/zh/participate/speaker-participation.mdcontent/zh/participate/sponsor-partner.mdcontent/zh/participate/welcome-party.mdnuxt.config.ts
| participate_index: "參與指南" | ||
| participate_first_time: "第一次參與" | ||
| participate_activity: "活動參與" | ||
| participate_speaker_participation: "講者參與" | ||
| participate_welcome_party: "前夜派對" | ||
| participate_oversea: "海外參與者" | ||
| participate_open_source_community: "開源社群、攤位及議程軌" | ||
| participate_sponsor_partner: "贊助夥伴" | ||
| sponsors: "贊助夥伴" | ||
| bof: "周邊活動 / BoF" |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Missing invitation_letter_guide key in zh locale block.
The en locale block includes invitation_letter_guide: "Invitation Letter Guide", but the zh block lacks this key even though line 32 references t('menu.invitation_letter_guide') for both locales. When the zh locale is active, this will render the raw key string (or fall back with a console warning if a fallback locale is configured) instead of a translated label.
🌐 Proposed fix
participate_sponsor_partner: "贊助夥伴"
+ invitation_letter_guide: "邀請函申請指南"
sponsors: "贊助夥伴"
bof: "周邊活動 / BoF"📝 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.
| participate_index: "參與指南" | |
| participate_first_time: "第一次參與" | |
| participate_activity: "活動參與" | |
| participate_speaker_participation: "講者參與" | |
| participate_welcome_party: "前夜派對" | |
| participate_oversea: "海外參與者" | |
| participate_open_source_community: "開源社群、攤位及議程軌" | |
| participate_sponsor_partner: "贊助夥伴" | |
| sponsors: "贊助夥伴" | |
| bof: "周邊活動 / BoF" | |
| participate_index: "參與指南" | |
| participate_first_time: "第一次參與" | |
| participate_activity: "活動參與" | |
| participate_speaker_participation: "講者參與" | |
| participate_welcome_party: "前夜派對" | |
| participate_oversea: "海外參與者" | |
| participate_open_source_community: "開源社群、攤位及議程軌" | |
| participate_sponsor_partner: "贊助夥伴" | |
| invitation_letter_guide: "邀請函申請指南" | |
| sponsors: "贊助夥伴" | |
| bof: "周邊活動 / BoF" |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@app/components/shared/CpNavbar.vue` around lines 227 - 236, The zh locale
block in CpNavbar.vue is missing the invitation_letter_guide translation used by
t('menu.invitation_letter_guide'), so add the corresponding zh label alongside
the other menu keys in the locale object. Keep it consistent with the existing
en locale entry and the surrounding menu translation symbols so the navbar
renders the translated text instead of the raw key.
| ## Classroom Entrance Decoration | ||
|
|
||
| We recommend that communities prepare classroom entrance decorations and a daily Session schedule so attendees passing by can quickly understand the room's topic, time slots, and upcoming Sessions. The simplest method is to print paper and post it at the classroom entrance or on a nearby board. | ||
|
|
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Clarify the allowed poster location.
Line 59 says to post at the classroom entrance or a nearby board, but Line 240 later limits posting to COSCUP-provided boards. Please make this explicit so teams do not attach materials in a prohibited place.
Proposed fix
- The simplest method is to print paper and post it at the classroom entrance or on a nearby board.
+ The simplest method is to print paper and post it on a COSCUP-provided board near the classroom entrance.📝 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.
| ## Classroom Entrance Decoration | |
| We recommend that communities prepare classroom entrance decorations and a daily Session schedule so attendees passing by can quickly understand the room's topic, time slots, and upcoming Sessions. The simplest method is to print paper and post it at the classroom entrance or on a nearby board. | |
| ## Classroom Entrance Decoration | |
| We recommend that communities prepare classroom entrance decorations and a daily Session schedule so attendees passing by can quickly understand the room's topic, time slots, and upcoming Sessions. The simplest method is to print paper and post it on a COSCUP-provided board near the classroom entrance. |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@content/en/participate/open-source-community.md` around lines 57 - 60,
Clarify the permitted poster placement in the classroom entrance decoration
guidance to match the later restriction. Update the wording in the “Classroom
Entrance Decoration” section so it explicitly says materials may be posted only
at the classroom entrance or on COSCUP-provided boards, and avoid implying any
generic nearby board is allowed. Keep the phrasing consistent with the existing
“Classroom Entrance Decoration” and “Session schedule” guidance so readers can
easily find the approved location.
| Example title: | ||
|
|
||
| ```text | ||
| TR 515 (08/10 Sunday) - Agenda | ||
| XXX Open Source Session Track | ||
| ``` | ||
|
|
||
| Example Session schedule: | ||
|
|
||
| <p style="font-size: 1.5em; font-weight: 700; margin-bottom: 0; text-align: center;">TR 515 (08/10 Sunday) - Agenda</p> | ||
| <p style="font-size: 0.95em; margin-top: 4px; text-align: center;">XXX Open Source Session Track</p> |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Fix the sample Sunday date.
The example uses 08/10 Sunday, which does not match the surrounding 08/09 Sunday references. Please update the template so it reflects the actual event day.
Proposed fix
-TR 515 (08/10 Sunday) - Agenda
+TR 515 (08/09 Sunday) - Agenda🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@content/en/participate/open-source-community.md` around lines 70 - 80, The
sample agenda date is inconsistent with the surrounding Sunday references and
should be corrected in the open-source community template. Update the example
text in the schedule section so the "TR 515" agenda uses the same Sunday date as
the rest of the document, keeping the "Example title" and session schedule
snippets aligned.
| For emergency assistance from the COSCUP exchange team, send an email to `coscupengt+2701012 [at] gmail.com`. You do not need to write a polished message. Please send the information quickly: | ||
|
|
||
| - Subject: `Emergency Contact - [Your Name]` | ||
| - Who you are: the name you use at COSCUP. | ||
| - When it happened. | ||
| - Where it happened. | ||
| - What happened. | ||
| - How we can contact you. | ||
| - If possible, what kind of help you need right now. | ||
|
|
||
| In most situations, you can ask people nearby for help in English or by using a translation app. If you do not have internet or phone access, you can prepare the Chinese note below and show it to someone nearby. The note asks them to help you communicate, send an email to COSCUP, and possibly bring you to a nearby convenience store or police station. | ||
|
|
||
| If someone brings you to a convenience store after reading the note, please stay there and wait. COSCUP will try to contact the convenience store after receiving the email. | ||
|
|
||
| :::info{title="給協助者看的中文紙條"} | ||
|
|
||
| 當您看到這個紙條表示你面前的這位朋友遇到麻煩需要協助,您是否可以開啟翻譯軟體簡單溝通問題。 | ||
|
|
||
| 如果遇到的麻煩無法立刻解決,您是否可以協助寄送 Email 到: | ||
|
|
||
| ```text | ||
| coscupengt+105105@gmail.com |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
Use one canonical emergency mailbox here.
This helper note points to a different address than the main emergency-contact section above. That split can send urgent reports to the wrong inbox. Please align this with the same mailbox used in the earlier emergency instructions.
🔧 Proposed fix
- coscupengt+105105@gmail.com
+ coscupengt+2701012@gmail.com📝 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.
| For emergency assistance from the COSCUP exchange team, send an email to `coscupengt+2701012 [at] gmail.com`. You do not need to write a polished message. Please send the information quickly: | |
| - Subject: `Emergency Contact - [Your Name]` | |
| - Who you are: the name you use at COSCUP. | |
| - When it happened. | |
| - Where it happened. | |
| - What happened. | |
| - How we can contact you. | |
| - If possible, what kind of help you need right now. | |
| In most situations, you can ask people nearby for help in English or by using a translation app. If you do not have internet or phone access, you can prepare the Chinese note below and show it to someone nearby. The note asks them to help you communicate, send an email to COSCUP, and possibly bring you to a nearby convenience store or police station. | |
| If someone brings you to a convenience store after reading the note, please stay there and wait. COSCUP will try to contact the convenience store after receiving the email. | |
| :::info{title="給協助者看的中文紙條"} | |
| 當您看到這個紙條表示你面前的這位朋友遇到麻煩需要協助,您是否可以開啟翻譯軟體簡單溝通問題。 | |
| 如果遇到的麻煩無法立刻解決,您是否可以協助寄送 Email 到: | |
| ```text | |
| coscupengt+105105@gmail.com | |
| For emergency assistance from the COSCUP exchange team, send an email to `coscupengt+2701012 [at] gmail.com`. You do not need to write a polished message. Please send the information quickly: | |
| - Subject: `Emergency Contact - [Your Name]` | |
| - Who you are: the name you use at COSCUP. | |
| - When it happened. | |
| - Where it happened. | |
| - What happened. | |
| - How we can contact you. | |
| - If possible, what kind of help you need right now. | |
| In most situations, you can ask people nearby for help in English or by using a translation app. If you do not have internet or phone access, you can prepare the Chinese note below and show it to someone nearby. The note asks them to help you communicate, send an email to COSCUP, and possibly bring you to a nearby convenience store or police station. | |
| If someone brings you to a convenience store after reading the note, please stay there and wait. COSCUP will try to contact the convenience store after receiving the email. | |
| :::info{title="給協助者看的中文紙條"} | |
| 當您看到這個紙條表示你面前的這位朋友遇到麻煩需要協助,您是否可以開啟翻譯軟體簡單溝通問題。 | |
| 如果遇到的麻煩無法立刻解決,您是否可以協助寄送 Email 到: | |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@content/zh/participate/oversea.md` around lines 239 - 260, The emergency
helper note uses a different mailbox than the main emergency-contact
instructions, so urgent reports may go to the wrong inbox. Update the Chinese
note in the same section to match the canonical emergency address already used
above, keeping the mailbox consistent across the emergency guidance. Locate the
embedded email reference in the helper note and replace it so both the main
instructions and the note point to the same COSCUP emergency mailbox.
| 酒券可透過事前購買、邀請票或現場購買取得。 | ||
|
|
||
| - 早鳥票時間:2025-07-10 21:00 至 2025-08-05 20:00 (UTC+8) | ||
| - 事前購買時間:2025-07-10 21:00 至 2025-08-07 20:45 | ||
| - 可現場購票。 | ||
| - 購買酒券連結:待補 | ||
|
|
||
| | 酒券類型 | 價格 | | ||
| | --- | --- | | ||
| | 早鳥預購前夜派對酒券<br>Early bird pre-order Pre-Party Drink Ticket (Location) | NTD$350 | | ||
| | 現場購買前夜派對酒券<br>On-site Purchase of Pre-party Drink Ticket | NTD$400 | | ||
|
|
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Refresh the ticketing block before publishing.
This still uses 2025 dates, leaves the purchase link as 待補, and keeps placeholder row labels. For a 2026 guide, that will send readers to stale or incomplete purchase info.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@content/zh/participate/welcome-party.md` around lines 52 - 63, Refresh the
ticketing section in welcome-party.md before publishing: update the early-bird
and pre-order dates for the 2026 guide, replace the `待補` purchase link with the
real URL, and rename the placeholder table labels in the ticket pricing block.
Use the existing ticketing block near the “酒券可透過...” text and the ticket table
to keep the `welcome-party` content current and complete.
| ## 感覺有點擠? | ||
|
|
||
| 我們不只有表面區域,歡迎您至酒店後面聊天。穿過酒店大堂到後面的室外區域,也備有水冷扇、飲料、桌椅。 | ||
|
|
||
|  |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Fix the space-description translation.
表面區域 / 酒店 are mistranslations here; the English copy is referring to the front area and the bistro, not a hotel. As written, this sentence will confuse readers looking for the back-area seating.
Suggested fix
-我們不只有表面區域,歡迎您至酒店後面聊天。穿過酒店大堂到後面的室外區域,也備有水冷扇、飲料、桌椅。
+我們不只有前方區域,歡迎您到餐酒館後方聊天。穿過大廳到後面的室外區域,也備有水冷扇、飲料、桌椅。📝 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.
| ## 感覺有點擠? | |
| 我們不只有表面區域,歡迎您至酒店後面聊天。穿過酒店大堂到後面的室外區域,也備有水冷扇、飲料、桌椅。 | |
|  | |
| ## 感覺有點擠? | |
| 我們不只有前方區域,歡迎您到餐酒館後方聊天。穿過大廳到後面的室外區域,也備有水冷扇、飲料、桌椅。 | |
|  |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@content/zh/participate/welcome-party.md` around lines 71 - 75, The
space-description text in the welcome-party translation uses mistranslated venue
terms, so update the copy in the front-area/back-area paragraph to match the
English source. Replace the incorrect references in the “感覺有點擠?” section so it
refers to the front area and the bistro rather than a hotel, and keep the rest
of the seating/amenities description aligned with the same intent.
- CpDropdown: render menu with v-show so the generate crawler discovers the participate routes (they were behind v-if and never prerendered, causing 404s on direct visits) - Strip .md suffixes from internal content links and make them locale-aware absolute paths (/participate/* and /en/participate/*) - welcome-party: use :NuxtPicture with a baseURL-relative src so the space map image resolves through IPX instead of 404ing - Add title/description frontmatter to all participate pages, matching the existing content convention - sponsor-partner: add title attributes to Flickr iframes for a11y - Fix markdown formatting flagged by the linter (table spacing, stray blank lines, list indentation)
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
app/components/shared/CpDropdown.vue (1)
22-37: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueConsider adding
aria-expanded/aria-haspopupto the toggle button.Now that the menu stays mounted and toggles via
v-show, it's a good opportunity to expose the open state to assistive tech, since the DOM structure permanently reflects a disclosure widget pattern.♻️ Optional accessibility improvement
<button class="flex gap-1 whitespace-nowrap items-center" type="button" + :aria-expanded="open" + aria-haspopup="true" `@click`="toggle()" >🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@app/components/shared/CpDropdown.vue` around lines 22 - 37, Add accessibility state to the dropdown toggle in CpDropdown.vue by updating the button that calls toggle() to expose the disclosure state for assistive tech. Use the existing open state to bind aria-expanded, and add aria-haspopup to indicate the menu behavior, keeping the change localized to the button/ul pair that controls the v-show menu.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@content/en/participate/activity.md`:
- Line 8: Update the wording in the participant overview text on the activity
page to use the hyphenated lower-case form “in-person” instead of “In-Person”;
adjust the sentence in the main page copy so the phrasing reads naturally while
keeping the rest of the content unchanged.
In `@content/en/participate/first-time.md`:
- Line 19: Update the copy in the first-time participation markdown so the
sentence uses “in-person” instead of “In-Person” in the OPass App description;
keep the rest of the wording unchanged and adjust the phrasing in that line to
match the lower-case hyphenated style.
---
Nitpick comments:
In `@app/components/shared/CpDropdown.vue`:
- Around line 22-37: Add accessibility state to the dropdown toggle in
CpDropdown.vue by updating the button that calls toggle() to expose the
disclosure state for assistive tech. Use the existing open state to bind
aria-expanded, and add aria-haspopup to indicate the menu behavior, keeping the
change localized to the button/ul pair that controls the v-show menu.
🪄 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 Plus
Run ID: ad816af1-2db2-4530-b117-c40bde48ddc7
📒 Files selected for processing (17)
app/components/shared/CpDropdown.vuecontent/en/participate/activity.mdcontent/en/participate/first-time.mdcontent/en/participate/index.mdcontent/en/participate/open-source-community.mdcontent/en/participate/oversea.mdcontent/en/participate/speaker-participation.mdcontent/en/participate/sponsor-partner.mdcontent/en/participate/welcome-party.mdcontent/zh/participate/activity.mdcontent/zh/participate/first-time.mdcontent/zh/participate/index.mdcontent/zh/participate/open-source-community.mdcontent/zh/participate/oversea.mdcontent/zh/participate/speaker-participation.mdcontent/zh/participate/sponsor-partner.mdcontent/zh/participate/welcome-party.md
✅ Files skipped from review due to trivial changes (6)
- content/zh/participate/first-time.md
- content/zh/participate/index.md
- content/zh/participate/speaker-participation.md
- content/zh/participate/open-source-community.md
- content/zh/participate/activity.md
- content/en/participate/oversea.md
🚧 Files skipped from review as they are similar to previous changes (6)
- content/en/participate/speaker-participation.md
- content/en/participate/welcome-party.md
- content/zh/participate/welcome-party.md
- content/zh/participate/sponsor-partner.md
- content/zh/participate/oversea.md
- content/en/participate/open-source-community.md
|
|
||
| # Activity | ||
|
|
||
| This page summarizes information from a participant's point of view, including attendees, speakers, general community partners, overseas communities, temporary activity organizers, and anyone who wants to meet more open source communities In-Person. If this is your first time participating, we recommend reading [First Timer](/en/participate/first-time) first, then returning to this page to plan transportation, Sessions, meals, and onsite activities. |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Use in-person here.
The capitalization reads awkwardly in this sentence; lower-case/hyphenated phrasing is clearer.
🧰 Tools
🪛 LanguageTool
[grammar] ~8-~8: Use a hyphen to join words.
Context: ..., and anyone who wants to meet more open source communities In-Person. If this is...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@content/en/participate/activity.md` at line 8, Update the wording in the
participant overview text on the activity page to use the hyphenated lower-case
form “in-person” instead of “In-Person”; adjust the sentence in the main page
copy so the phrasing reads naturally while keeping the rest of the content
unchanged.
Source: Linters/SAST tools
| Before the event, we recommend that you: | ||
|
|
||
| 1. Browse the official schedule and bookmark a few Sessions you definitely want to attend. | ||
| 2. Install or check the [OPass App](https://opass.app) so you can view Sessions, bookmark activities, and join In-Person interactions. |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Use in-person here.
In-Person reads awkwardly in this sentence; lower-case/hyphenated phrasing is cleaner.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@content/en/participate/first-time.md` at line 19, Update the copy in the
first-time participation markdown so the sentence uses “in-person” instead of
“In-Person” in the OPass App description; keep the rest of the wording unchanged
and adjust the phrasing in that line to match the lower-case hyphenated style.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4008f483a4
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
|
||
| - Your passport should be valid for at least 6 months. | ||
| - VISA: whether you need a visa, eVisa, or visa-free entry. | ||
| - Invitation Letter: whether you need an invitation letter from COSCUP. For visa and invitation letter application instructions, refer to: [Invitation Letter Application Guide for Visa](https://coscup.org/2026/participate/invitation-letter-guide). |
There was a problem hiding this comment.
Point English content at English routes
The English guide is hard-coding default-locale URLs for resources that have English versions: this invitation-guide link omits /en, and the same pattern appears on the Transportation and CoC links elsewhere in the English participation content. Because the site default locale is zh and invitation-letter-guide.vue renders the HackMD section from locale.value, overseas readers who click these links from English pages land on Chinese instructions; use the English-prefixed route (and cococo-en for CoC) from English content.
Useful? React with 👍 / 👎.
|
|
||
| :::info{title="Conference Information"} | ||
|
|
||
| - Please refer to the venue map information page: [https://coscup.org/2026/venue](https://coscup.org/2026/venue) |
There was a problem hiding this comment.
Avoid linking to a missing venue page
This new link points attendees to /2026/venue, but this repo has no content/*/venue.md or app/pages/venue.vue route (I searched for venue; only these new content references and the map component appear). Since the catch-all page throws a 404 when no content is found, users clicking the venue-map link from either locale will hit a missing page unless the route is added or the link is changed to an existing page.
Useful? React with 👍 / 👎.
| Example title: | ||
|
|
||
| ```text | ||
| TR 515 (08/10 Sunday) - Agenda |
There was a problem hiding this comment.
Correct the copied agenda example date
The example immediately above tells communities to use the actual 2026 conference dates, 08/08 Saturday or 08/09 Sunday, but this copyable template switches to 08/10 Sunday; in 2026, August 10 is Monday and after COSCUP ends. Communities copying this room-signage example would publish the wrong day/date, and the Chinese page repeats the same template.
Useful? React with 👍 / 👎.
Summary
This update expands the COSCUP 2026 participation guide with bilingual content, makes the new pages discoverable from the main navigation, and adds styled Markdown callout support for highlighted information blocks.
The main changes include:
:::info,:::tip,:::warning, and:::danger.Changes
Participation Guide Content
Added bilingual participation guide pages under
content/en/participateandcontent/zh/participate.New guide pages include:
Also added welcome party space map images:
public/participate/welcome-party/space-en.pngpublic/participate/welcome-party/space-zh.pngNavigation
Updated the main navigation so the participation guide pages are reachable from the menu.
Added menu entries for:
Also added a top-level
Fringe Events / BoFmenu item that opens the related Google Docs page in a new browser tab.Markdown Highlight Styles
Added support for styled Markdown callout blocks used in participation guide content.
Supported callout components:
:::info:::tip:::warning:::dangerEach callout supports an optional title and uses a distinct visual style for better readability.
Inline Code Styling
Added global prose styling for inline Markdown code so inline code snippets render with a neutral gray background, border, and readable text color.
The styling also removes the default generated backticks around inline code.
Notes
Summary by CodeRabbit