Skip to content

Refresh community pages, roadmap, and donation flow#42

Merged
wauputr4 merged 9 commits into
mainfrom
codex/community-donation-roadmap
Jul 20, 2026
Merged

Refresh community pages, roadmap, and donation flow#42
wauputr4 merged 9 commits into
mainfrom
codex/community-donation-roadmap

Conversation

@wauputr4

@wauputr4 wauputr4 commented Jul 20, 2026

Copy link
Copy Markdown
Member

Ringkasan

  • merapikan navigasi, footer, beranda, direktori proyek, roadmap, komunitas, falsafah, dan alur donasi
  • menambahkan peringkat top user berbasis data proyek
  • menggabungkan sponsor ke /donasi/ dan mempertahankan redirect /sponsors/
  • menyelaraskan README, CONTRIBUTING, template PR, serta checklist release Cloudflare main ke release
  • menampilkan tanggal pembaruan dan seluruh kontributor unik artikel berdasarkan riwayat commit Markdown
  • mengganti FAQ dengan Top User pada navigasi mobile
  • menindaklanjuti review pada sitemap, tautan, base path, logo sponsor, dan agregasi pengguna

Validasi

  • npm run sync:blog - data terbaru dari repo sumber
  • npm test - 20 test lulus
  • npm run build - 107 halaman, 0 error, 0 warning, 0 hint
  • build dengan ASTRO_BASE=/indopensource.org - redirect tetap menggunakan base path
  • git diff --check - bersih
  • QA melalui server dev lokal

Summary by CodeRabbit

  • New Features
    • Added the Roadmap 2026–2027 page and roadmap previews.
    • Added donation, sponsorship, community directory, and Top User pages.
    • Added owner rankings with project, star, fork, and repository statistics.
    • Added blog draft previews, contributor details, and latest commit links.
  • Improvements
    • Updated navigation, homepage sections, project labels, and footer links.
    • Expanded philosophy content with four principles and source references.
    • Improved SEO metadata, sitemap coverage, analytics support, and robots directives.
  • Bug Fixes
    • Improved internal link handling and sponsor-page redirects.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 20, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
indopensource-org 10a1406 Commit Preview URL

Branch Preview URL
Jul 20 2026, 03:20 PM

@coderabbitai

coderabbitai Bot commented Jul 20, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@wauputr4, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 48 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 0f689a4b-c9b5-499a-96e3-a009e3abc6aa

📥 Commits

Reviewing files that changed from the base of the PR and between b50bb6a and 10a1406.

📒 Files selected for processing (1)
  • scripts/sync-blog-posts.mjs
📝 Walkthrough

Walkthrough

The PR expands the site with donation, roadmap, community, and user-ranking pages; updates blog provenance, SEO, analytics, navigation, and project discovery; revises editorial and policy content; and adds redirects, sitemap entries, and release documentation.

Changes

Site expansion and content restructuring

Layer / File(s) Summary
Donation and roadmap experiences
src/components/DonationPage.astro, src/pages/donasi.astro, src/pages/sponsors.astro, src/data/roadmap.ts, src/pages/roadmap.astro, src/pages/index.astro
Donation and partnership content are extracted into a component, sponsors redirect to /donasi/, and roadmap data is rendered on the roadmap page and homepage.
Community and user directories
src/data/communities.json, src/pages/komunitas.astro, src/lib/projects.ts, src/pages/users.astro, src/pages/projects.astro, src/components/ProjectsDirectory.astro, test/lib.test.mjs
Community data and empty-state handling are added, while project owners are ranked and displayed across directory views with supporting tests.
Blog provenance and preview metadata
scripts/sync-blog-posts.mjs, src/data/blog-posts.json, src/lib/content.ts, src/pages/blog/..., src/pages/blog.astro, src/lib/learning.ts, src/pages/belajar/[slug].astro
Blog synchronization records contributors and latest commits; article pages support draft previews, multiple authors, commit links, and SEO title overrides.
SEO, structured data, and analytics infrastructure
src/layouts/BaseLayout.astro, src/pages/robots.txt.ts, src/pages/sitemap.xml.ts, src/pages/projects/[slug].astro, .env.example
Layout metadata, JSON-LD graphs, CSP directives, analytics injection, robots rules, sitemap dates, and project SEO metadata are updated.
Navigation, routing, and site content
src/components/SiteHeader.astro, src/components/SiteFooter.astro, src/components/HomeHero.astro, src/pages/{contact,forum,tentang,index}.astro, src/pages/{falsafah,faq,kode-etik,legal,press}.astro
Navigation destinations, CTAs, editorial content, FAQ guidance, policies, moderation text, press statistics, and contact routing are revised.
Release and contribution support
README.md, CONTRIBUTING.md, .github/PULL_REQUEST_TEMPLATE.md, docs/release-checklist.md, public/_redirects
Release, deployment, validation, content-quality, and community contribution guidance is expanded, with a permanent sponsors redirect.
Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and matches the main focus on community pages, roadmap, and donation flow updates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/community-donation-roadmap

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.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Code Review

This pull request introduces several new pages and components, including a dedicated DonationPage component, a roadmap page with local timeline data, and a users page ranking top contributors. It also refactors the site navigation, footer, and community directory to pull data dynamically, while refining content across legal, FAQ, and press pages. The code review feedback recommends avoiding hardcoded sponsor logos in DonationPage.astro by defining them in the data array, and suggests extracting the duplicated logic for grouping projects and calculating top users across multiple pages into a shared utility function.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread src/components/DonationPage.astro
Comment thread src/components/DonationPage.astro
Comment thread src/pages/index.astro Outdated
@wauputr4
wauputr4 marked this pull request as ready for review July 20, 2026 12:12
@wauputr4

Copy link
Copy Markdown
Member Author

@codex review

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

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 (3)
src/pages/index.astro (1)

20-32: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Normalize the owner key for robust aggregation.

GitHub usernames are case-insensitive. If projects.json records the same owner with different casing across different projects (e.g., Owner vs owner), the exact string match in the Map will split their stats into multiple entries.

Consider normalizing the Map key with .toLowerCase() while preserving the original casing for display.

♻️ Proposed refactor
 const usersByOwner = new Map<string, { owner: string; avatarUrl: string; repositories: number; stars: number }>();
 for (const project of projects.filter((item) => !item.syncFailed && item.owner)) {
   const owner = project.owner as string;
-  const user = usersByOwner.get(owner) || {
+  const ownerKey = owner.toLowerCase();
+  const user = usersByOwner.get(ownerKey) || {
     owner,
     avatarUrl: project.ownerAvatarUrl || `https://avatars.githubusercontent.com/${encodeURIComponent(owner)}?size=80`,
     repositories: 0,
     stars: 0
   };
   user.repositories += 1;
   user.stars += project.stars;
-  usersByOwner.set(owner, user);
+  usersByOwner.set(ownerKey, user);
 }
🤖 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 `@src/pages/index.astro` around lines 20 - 32, Normalize the owner key used by
usersByOwner to lowercase before Map lookup and storage, while retaining the
original project.owner value in the user object for display. Ensure differently
cased GitHub usernames aggregate into the same repositories and stars totals.
src/pages/projects.astro (1)

31-49: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Extract user ranking computation to a shared helper.

This aggregation logic for usersByOwner and topUsers is nearly identical to the logic introduced in src/pages/users.astro. Consider extracting this into a shared helper function (e.g., in src/lib/projects.ts or a new src/lib/users.ts) to avoid duplication and ensure consistency between the pages.

🤖 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 `@src/pages/projects.astro` around lines 31 - 49, Extract the usersByOwner
aggregation and topUsers sorting logic from the page into a shared helper,
colocated in an appropriate library module such as projects or users. Update
both projects.astro and users.astro to call this helper so owner grouping,
avatar fallback, ranking order, and five-user limit remain consistent.
src/pages/legal.astro (1)

8-29: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consider opening external policy links in a new tab.

The policies array defines isExternal: true for the new external links, but the rendering logic below (Line 70) does not apply target="_blank" and rel="noopener noreferrer". For consistency with other pages, consider updating the link element to open external policies in a new tab.

♻️ Proposed fix

Apply this change to the anchor tag around Line 70:

-                  <a class="meta-row mt-4 inline-block font-semibold text-brand underline decoration-2 underline-offset-4 hover:text-accent" href={href}>Selengkapnya →</a>
+                  <a class="meta-row mt-4 inline-block font-semibold text-brand underline decoration-2 underline-offset-4 hover:text-accent" href={href} {...(p.isExternal ? { target: '_blank', rel: 'noopener noreferrer' } : {})}>Selengkapnya →</a>
🤖 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 `@src/pages/legal.astro` around lines 8 - 29, Update the policy anchor
rendering logic to use the existing policies.isExternal flag: external links
must open in a new tab with target="_blank" and rel="noopener noreferrer", while
internal links retain their current behavior.
🤖 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 `@src/pages/contact.astro`:
- Around line 20-22: Update the roadmap card rendering loop to apply
external-link attributes only when c.href starts with "http": conditionally set
rel to "noopener noreferrer" and render the "(situs eksternal)" screen-reader
text only for those URLs, leaving the internal /roadmap/ link without either.

In `@src/pages/sitemap.xml.ts`:
- Around line 40-44: Add /users/, /faq/, /kode-etik/, /legal/, and /press/ to
the staticPages array alongside the existing public routes, ensuring all
specified pages are included in sitemap generation.

In `@src/pages/sponsors.astro`:
- Around line 1-3: Update the redirect target in the sponsors page frontmatter
to pass the donation path through the existing withBase helper before calling
Astro.redirect, preserving the 301 status and ensuring the target respects the
configured ASTRO_BASE.

---

Nitpick comments:
In `@src/pages/index.astro`:
- Around line 20-32: Normalize the owner key used by usersByOwner to lowercase
before Map lookup and storage, while retaining the original project.owner value
in the user object for display. Ensure differently cased GitHub usernames
aggregate into the same repositories and stars totals.

In `@src/pages/legal.astro`:
- Around line 8-29: Update the policy anchor rendering logic to use the existing
policies.isExternal flag: external links must open in a new tab with
target="_blank" and rel="noopener noreferrer", while internal links retain their
current behavior.

In `@src/pages/projects.astro`:
- Around line 31-49: Extract the usersByOwner aggregation and topUsers sorting
logic from the page into a shared helper, colocated in an appropriate library
module such as projects or users. Update both projects.astro and users.astro to
call this helper so owner grouping, avatar fallback, ranking order, and
five-user limit remain consistent.
🪄 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: 6b12bbaf-c409-4fa9-94cd-00596b57e184

📥 Commits

Reviewing files that changed from the base of the PR and between 4d0cfab and bb5e3a9.

⛔ Files ignored due to path filters (1)
  • public/brand/tokengratis-icon.png is excluded by !**/*.png
📒 Files selected for processing (24)
  • src/components/DonationPage.astro
  • src/components/HomeHero.astro
  • src/components/ProjectsDirectory.astro
  • src/components/SiteFooter.astro
  • src/components/SiteHeader.astro
  • src/data/communities.json
  • src/data/roadmap.ts
  • src/layouts/BaseLayout.astro
  • src/pages/contact.astro
  • src/pages/donasi.astro
  • src/pages/falsafah.astro
  • src/pages/faq.astro
  • src/pages/forum.astro
  • src/pages/index.astro
  • src/pages/kode-etik.astro
  • src/pages/komunitas.astro
  • src/pages/legal.astro
  • src/pages/press.astro
  • src/pages/projects.astro
  • src/pages/roadmap.astro
  • src/pages/sitemap.xml.ts
  • src/pages/sponsors.astro
  • src/pages/tentang.astro
  • src/pages/users.astro

Comment thread src/pages/contact.astro
Comment thread src/pages/sitemap.xml.ts
Comment thread src/pages/sponsors.astro

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bb5e3a9240

ℹ️ About Codex in GitHub

Your team has set up Codex to 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 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/pages/sitemap.xml.ts
@wauputr4

Copy link
Copy Markdown
Member Author

/gemini review

@wauputr4

Copy link
Copy Markdown
Member Author

@codex review

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Code Review

This pull request updates the IndopenSource website by transitioning to Cloudflare Workers, introducing a release checklist, and updating contribution guidelines. It also adds a 'Top User' ranking page, a dedicated 'Roadmap' page, a redesigned 'Donasi' page, and refactors the 'Komunitas' page to load data from a local JSON file. Review feedback suggests sanitizing external community URLs with safeHref to prevent XSS vulnerabilities, tightening the CSP script-src directive in BaseLayout.astro to adhere to the principle of least privilege, and improving accessibility by removing redundant words like 'avatar' from image alt attributes.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread src/pages/komunitas.astro
Comment thread src/pages/komunitas.astro Outdated
Comment thread src/layouts/BaseLayout.astro Outdated
Comment thread src/pages/blog/[slug].astro Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a7e0944cd3

ℹ️ About Codex in GitHub

Your team has set up Codex to 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 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/pages/sponsors.astro
Comment thread scripts/sync-blog-posts.mjs Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/pages/index.astro (1)

224-242: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Inconsistent usage of withBase for internal links.

The links in this section use withBase('/blog/'), withBase('/users/'), and withBase('/donasi/'), whereas other internal links in this file (e.g., href="/falsafah/" on line 82, href="/cara-berkontribusi/" on line 111, href="/roadmap/" on line 132, etc.) are written as raw strings. If the site relies on a base path configuration, ensure that withBase is applied consistently across all internal links to prevent broken navigation.

🤖 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 `@src/pages/index.astro` around lines 224 - 242, Standardize internal-link
handling in the `index.astro` page by applying `withBase` consistently to the
other internal `href` values, including links such as `/falsafah/`,
`/cara-berkontribusi/`, and `/roadmap/`, while preserving the existing
`withBase` usage in the Blog, Top User, and donation cards.
🧹 Nitpick comments (4)
README.md (1)

75-79: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consider removing the legacy GitHub Pages workflow entirely.

Instead of leaving warnings in the public README.md about the legacy GitHub Pages deployment, consider deleting .github/workflows/deploy-pages.yml completely if Cloudflare is now the sole production environment. This reduces technical debt and prevents confusion for new contributors.

  • README.md#L75-L79: Remove this warning once the legacy file is deleted.
  • README.md#L116-L118: Remove this related warning in the auto-sync section.
🤖 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 `@README.md` around lines 75 - 79, Remove the legacy
.github/workflows/deploy-pages.yml workflow if Cloudflare is the sole production
deployment path, then remove the related warning text at README.md lines 75-79
and 116-118. Ensure the README no longer presents GitHub Pages as an active or
fallback deployment path.
src/pages/blog/[...slug].astro (1)

29-31: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Hardcoded per-slug SEO title override doesn't scale.

A one-off slug check (post.slug === 'bagaimana-open-source-mampu-bertahan') is used to override the SEO title instead of a data-driven field. src/lib/learning.ts just introduced exactly this pattern as an seoTitle?: string field on LearningResource — following the same approach here (adding seoTitle to the blog-post schema/JSON and using post.seoTitle || ${post.title} - IndopenSource\) avoids accumulating slug-specific branches as more articles need custom SEO titles.

🤖 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 `@src/pages/blog/`[...slug].astro around lines 29 - 31, Replace the
slug-specific condition in the blog page SEO title logic with a data-driven
optional seoTitle field on blog-post data, schema, and JSON; use post.seoTitle
when present and otherwise fall back to `${post.title} - IndopenSource`,
following the existing LearningResource pattern in src/lib/learning.ts.
src/layouts/BaseLayout.astro (1)

251-273: 🔒 Security & Privacy | 🔵 Trivial

Analytics scripts load unconditionally with no consent gate.

Cloudflare Insights and GA gtag.js are injected on every page load whenever the corresponding env vars are set, with no cookie/consent-management check beforehand. Consider gating this behind a consent mechanism if the site expects EU visitors or falls under Indonesia's UU PDP, since GA in particular sets cookies and processes IP-based data.

🤖 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 `@src/layouts/BaseLayout.astro` around lines 251 - 273, Gate both analytics
initialization blocks in BaseLayout.astro behind the site’s existing
cookie/consent-management mechanism, requiring affirmative consent before
creating or appending the Cloudflare beacon or Google Analytics scripts and
before calling gtag. Preserve the environment-token checks and ensure analytics
remain disabled when consent is absent or declined.
src/pages/projects/[slug].astro (1)

25-28: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Brittle exact-string match for a boilerplate description.

Substituting metaDescription only when it exactly equals 'Proyek dari daftar awesome-indonesia.' is fragile — any change to that placeholder upstream (data regeneration, wording tweak, trailing whitespace) silently stops the override from firing, and affected project pages quietly revert to the shared boilerplate meta description (an SEO regression that won't surface until manually checked). Consider fixing the placeholder at its source (wherever project.metaDescription/description gets set to this generic text) rather than pattern-matching it per page render.

🤖 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 `@src/pages/projects/`[slug].astro around lines 25 - 28, Remove the
exact-string placeholder handling from the `sourceDescription`/`metaDescription`
logic in the page and fix the generic “awesome-indonesia” description at the
source where `project.metaDescription` or `project.description` is populated.
Ensure the source emits the intended project-specific description directly, so
rendering does not depend on brittle text matching.
🤖 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 `@scripts/sync-blog-posts.mjs`:
- Around line 264-266: Update the resolvedAuthors assignment near
resolvedAuthor.fromFrontmatter to always use commitMeta.authors when it contains
contributors, regardless of frontmatter attribution; fall back to
[resolvedAuthor.author] only when commitMeta.authors is empty. Preserve the
existing commit-derived author ordering and avoid discarding contributors when
fromFrontmatter is true.

---

Outside diff comments:
In `@src/pages/index.astro`:
- Around line 224-242: Standardize internal-link handling in the `index.astro`
page by applying `withBase` consistently to the other internal `href` values,
including links such as `/falsafah/`, `/cara-berkontribusi/`, and `/roadmap/`,
while preserving the existing `withBase` usage in the Blog, Top User, and
donation cards.

---

Nitpick comments:
In `@README.md`:
- Around line 75-79: Remove the legacy .github/workflows/deploy-pages.yml
workflow if Cloudflare is the sole production deployment path, then remove the
related warning text at README.md lines 75-79 and 116-118. Ensure the README no
longer presents GitHub Pages as an active or fallback deployment path.

In `@src/layouts/BaseLayout.astro`:
- Around line 251-273: Gate both analytics initialization blocks in
BaseLayout.astro behind the site’s existing cookie/consent-management mechanism,
requiring affirmative consent before creating or appending the Cloudflare beacon
or Google Analytics scripts and before calling gtag. Preserve the
environment-token checks and ensure analytics remain disabled when consent is
absent or declined.

In `@src/pages/blog/`[...slug].astro:
- Around line 29-31: Replace the slug-specific condition in the blog page SEO
title logic with a data-driven optional seoTitle field on blog-post data,
schema, and JSON; use post.seoTitle when present and otherwise fall back to
`${post.title} - IndopenSource`, following the existing LearningResource pattern
in src/lib/learning.ts.

In `@src/pages/projects/`[slug].astro:
- Around line 25-28: Remove the exact-string placeholder handling from the
`sourceDescription`/`metaDescription` logic in the page and fix the generic
“awesome-indonesia” description at the source where `project.metaDescription` or
`project.description` is populated. Ensure the source emits the intended
project-specific description directly, so rendering does not depend on brittle
text matching.
🪄 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: 57542806-a0c5-4af4-9f64-0b1bf50ae43e

📥 Commits

Reviewing files that changed from the base of the PR and between bb5e3a9 and b50bb6a.

⛔ Files ignored due to path filters (3)
  • public/brand/apple-touch-icon.png is excluded by !**/*.png
  • public/brand/favicon-96.png is excluded by !**/*.png
  • public/brand/favicon.ico is excluded by !**/*.ico
📒 Files selected for processing (30)
  • .env.example
  • .github/PULL_REQUEST_TEMPLATE.md
  • CONTRIBUTING.md
  • README.md
  • docs/release-checklist.md
  • public/_redirects
  • scripts/sync-blog-posts.mjs
  • src/components/DonationPage.astro
  • src/components/HomeHero.astro
  • src/components/SiteHeader.astro
  • src/data/blog-posts.json
  • src/layouts/BaseLayout.astro
  • src/lib/content.ts
  • src/lib/learning.ts
  • src/lib/projects.ts
  • src/pages/belajar/[slug].astro
  • src/pages/blog.astro
  • src/pages/blog/[...slug].astro
  • src/pages/contact.astro
  • src/pages/falsafah.astro
  • src/pages/index.astro
  • src/pages/komunitas.astro
  • src/pages/legal.astro
  • src/pages/projects.astro
  • src/pages/projects/[slug].astro
  • src/pages/robots.txt.ts
  • src/pages/sitemap.xml.ts
  • src/pages/sponsors.astro
  • src/pages/users.astro
  • test/lib.test.mjs
🚧 Files skipped from review as they are similar to previous changes (8)
  • src/pages/sponsors.astro
  • src/pages/legal.astro
  • src/components/DonationPage.astro
  • src/pages/komunitas.astro
  • src/components/SiteHeader.astro
  • src/pages/falsafah.astro
  • src/pages/projects.astro
  • src/components/HomeHero.astro

Comment thread scripts/sync-blog-posts.mjs
@wauputr4
wauputr4 merged commit e2c3386 into main Jul 20, 2026
3 checks passed
@wauputr4
wauputr4 deleted the codex/community-donation-roadmap branch July 20, 2026 15:20
wauputr4 added a commit that referenced this pull request Jul 20, 2026
* Sync content data

* Sync content data

* Refresh community pages, roadmap, and donation flow (#42)

* feat: refresh community website content

* docs: align release and contribution guides

* fix: address release review findings

* feat: show blog commit contributors

* feat: link latest article commit

* fix: simplify homepage repository card

* feat: improve SEO analytics and AI discovery

* feat: add draft previews and release polish

* fix: preserve blog commit contributors

* docs: add README banner

* fix: finalize Cloudflare release setup

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant