Skip to content

Remove outdated non-English website content#553

Open
riderx wants to merge 5 commits intomainfrom
codex/english-only-i18n
Open

Remove outdated non-English website content#553
riderx wants to merge 5 commits intomainfrom
codex/english-only-i18n

Conversation

@riderx
Copy link
Copy Markdown
Member

@riderx riderx commented Apr 4, 2026

Summary

  • keep Astro and inlang configured for i18n, but publish English only
  • remove outdated non-English blog, docs, plugin tutorial, and message content
  • hide the language switchers when only one locale is available and fix remaining English links to deleted localized routes

Verification

  • bunx astro check
  • bun run build

Summary by CodeRabbit

  • Configuration

    • Project language set to English-only; multi-locale settings removed.
  • UI Enhancements

    • Language selector hidden when only one locale; improved dropdown accessibility and ARIA state.
  • Content

    • Large number of German blog posts removed.
  • Documentation

    • Many docs/templates removed; new agent instruction document added; editorial/SEO checklists updated.
  • Chores

    • Build scripts simplified and many maintenance scripts removed; multiple dependencies updated.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 4, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c3af98fb-1560-4e73-a224-35f2b9e33671

📥 Commits

Reviewing files that changed from the base of the PR and between 7e7101b and 789af60.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (39)
  • .templates/PLUGIN_DOCUMENTATION_TEMPLATE.md
  • .templates/PLUGIN_ICONS_REFERENCE.md
  • AGENT.md
  • AGENTS.md
  • CLAUDE.md
  • _typos.toml
  • docs/PR_PREVIEW_SETUP.md
  • docs/expo-marketing-reference.md
  • loadedVectorStore/docstore.json
  • loadedVectorStore/faiss.index
  • package.json
  • project.inlang/.gitignore
  • project.inlang/project_id
  • project.inlang/settings.json
  • scripts/blogs/delete_broken_all.tsx
  • scripts/blogs/fix_locales_all.tsx
  • scripts/blogs/remove_mismatching_locales.tsx
  • scripts/blogs/sync_seobot.js
  • scripts/blogs/translate_all.tsx
  • scripts/blogs/translate_untranslated.tsx
  • scripts/check_image_links.js
  • scripts/check_sitemap_404.js
  • scripts/clean_not_used.tsx
  • scripts/cleanup_doc_translate.tsx
  • scripts/commonReplacements.ts
  • scripts/create-missing-translations.sh
  • scripts/fix_code_languages_all.tsx
  • scripts/generate-plugins-readme.ts
  • scripts/generateTutorials.mjs
  • scripts/generate_docs_translations.tsx
  • scripts/generate_plugin_icons.mjs
  • scripts/generate_plugin_translations.tsx
  • scripts/patch-astro-rolldown.js
  • scripts/repair_sitemap.tsx
  • scripts/setup_new_locale.tsx
  • scripts/trainOpenAI.mjs
  • scripts/translate.tsx
  • scripts/verify_missing_html_elements.js
  • scripts/yaml-to-json.js
💤 Files with no reviewable changes (35)
  • project.inlang/project_id
  • project.inlang/.gitignore
  • project.inlang/settings.json
  • scripts/clean_not_used.tsx
  • scripts/blogs/delete_broken_all.tsx
  • docs/expo-marketing-reference.md
  • CLAUDE.md
  • docs/PR_PREVIEW_SETUP.md
  • scripts/check_sitemap_404.js
  • AGENT.md
  • scripts/yaml-to-json.js
  • scripts/fix_code_languages_all.tsx
  • scripts/cleanup_doc_translate.tsx
  • scripts/repair_sitemap.tsx
  • scripts/commonReplacements.ts
  • _typos.toml
  • .templates/PLUGIN_DOCUMENTATION_TEMPLATE.md
  • scripts/blogs/fix_locales_all.tsx
  • scripts/generate-plugins-readme.ts
  • .templates/PLUGIN_ICONS_REFERENCE.md
  • scripts/setup_new_locale.tsx
  • scripts/generateTutorials.mjs
  • scripts/check_image_links.js
  • scripts/blogs/remove_mismatching_locales.tsx
  • scripts/verify_missing_html_elements.js
  • scripts/generate_plugin_icons.mjs
  • scripts/trainOpenAI.mjs
  • scripts/blogs/sync_seobot.js
  • scripts/blogs/translate_untranslated.tsx
  • scripts/patch-astro-rolldown.js
  • scripts/generate_plugin_translations.tsx
  • scripts/generate_docs_translations.tsx
  • scripts/create-missing-translations.sh
  • scripts/blogs/translate_all.tsx
  • scripts/translate.tsx
✅ Files skipped from review due to trivial changes (1)
  • AGENTS.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • package.json

📝 Walkthrough

Walkthrough

The PR removes non-English localization (inlang settings), deletes 50+ German blog posts and many maintenance scripts/docs, adjusts package.json versions and build scripts, and conditions the language-selector UI to render only when multiple locales exist while improving its ARIA/client wiring.

Changes

Cohort / File(s) Summary
Localization config
project.inlang/settings.json, project.inlang/project_id, project.inlang/.gitignore
Removed inlang project settings and project_id; tracked ignore for project.inlang deleted.
Language selector components
src/components/Footer.astro, src/components/doc/LanguageSelect.astro
Render selector only when >1 locale (showLanguageSelector = locales.length > 1); pass showLanguageSelector to inline scripts; guard DOM wiring; add/maintain ARIA (aria-expanded, aria-current); convert menu links to buttons; safer outside-click checks.
German blog content
src/content/blog/de/*
Deleted 50+ German blog markdown files (full frontmatter and bodies) across tutorials, guides, CI/CD, OTA/security, and related content.
Scripts removed
scripts/**/*, scripts/*.js, scripts/*.mjs, scripts/*.tsx, etc.
Removed many maintenance and translation scripts (e.g., translate.tsx, generate_docs_translations.tsx, generate_plugin_translations.tsx, trainOpenAI.mjs, sync_seobot.js, check_image_links.js, repair_sitemap.tsx, and many others).
Docs & templates removed/changed
AGENT.md, CLAUDE.md, docs/PR_PREVIEW_SETUP.md, docs/expo-marketing-reference.md, .templates/*
Deleted various documentation and template files; added expanded AGENTS.md replacing AGENT.md content.
Utilities removed
scripts/commonReplacements.ts, other helper scripts
Removed exported commonReplacements utility and other helper scripts used by translation/generation workflows.
Build / deps
package.json
Removed runtime env overrides from just:build/build scripts; bumped multiple dependencies/devDependencies (TypeScript, OpenAI client, mermaid, tailwindcss, zod, etc.) and removed langchain from devDependencies.
Config / tooling
_typos.toml, .templates/*
Adjusted _typos.toml exclusions (removed many non-English content exclusions); removed plugin documentation/icon reference templates.

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~120 minutes

Possibly related PRs

Suggested labels

💰 Rewarded

Poem

🐰 I hopped through files with whiskers bright,

English stays and others take flight.
Buttons hide when just one tongue’s near,
I tidy scripts and nibble a gear.
A little hop — the repo’s light.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/english-only-i18n

Copy link
Copy Markdown

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

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: 4ae10abd8f

ℹ️ 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".

Copy link
Copy Markdown
Contributor

@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: 4

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

Inline comments:
In `@src/components/doc/LanguageSelect.astro`:
- Around line 27-33: The language items rendered in LanguageSelect.astro map
function use <a> elements without href and tabindex="-1", making them
unfocusable; update the markup for the elements generated by locales.map (the
anchor with id={`language_${j}`} and role="menuitem") so they are
keyboard-accessible: either convert the <a> to a semantic <button> (preferred)
or add a valid href and change tabindex to "0", ensure keyboard activation
handlers (on:click and on:keydown Enter/Space) are wired to the existing locale
selection logic, and add visible focus styling and appropriate ARIA state (e.g.,
aria-current for the active locale) so keyboard users can tab to and activate
each option.
- Around line 12-21: The dropdown toggle button with id "language-menu-button"
must expose its open/closed state and keep a visible focus indicator: add an
aria-expanded attribute (bound to the component/menu open state) and
aria-controls pointing to the dropdown list's id (create a matching id like
"language-menu" on the menu/list element), and remove/replace the
"focus:outline-none" utility with visible focus styles (e.g., use
focus-visible:ring-2 focus-visible:ring-offset-2 or similar Tailwind focus
classes) so the toggle shows a clear focus ring when keyboard-focused.
- Around line 42-43: Replace the invalid top-level bare "return" by wrapping the
script's runtime logic in an if (showLanguageSelector) block: remove the
top-level return and enclose the existing DOM lookup and event wiring
(references: showLanguageSelector, languageMenu via id "language-menu", button
via id "language-menu-button") inside if (showLanguageSelector) { ... } so the
code only runs when the selector should be shown and no top-level return
remains.

In `@src/components/Footer.astro`:
- Around line 322-330: The language dropdown button (id
"language-dropdown-button") lacks ARIA state and removes visible focus; update
the toggle behavior so the button includes aria-expanded (true/false) and
aria-controls="language-dropdown" and ensure the toggle code updates
aria-expanded when opening/closing the element with id "language-dropdown"
(toggle the "hidden" class there). Replace the utility class
"focus:outline-none" on the button with a visible focus style (e.g.,
focus-visible:ring/focus-visible:outline or equivalent site focus utility) so
keyboard focus is visible, and ensure any JS that opens/closes the menu also
moves focus appropriately and updates aria attributes.
🪄 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: fbeb92e6-60ec-447c-8f72-f443978f46ac

📥 Commits

Reviewing files that changed from the base of the PR and between d07ba44 and 4ae10ab.

📒 Files selected for processing (300)
  • messages/de.json
  • messages/es.json
  • messages/fr.json
  • messages/id.json
  • messages/it.json
  • messages/ja.json
  • messages/ko.json
  • messages/zh.json
  • project.inlang/settings.json
  • src/components/Footer.astro
  • src/components/doc/LanguageSelect.astro
  • src/content/blog/de/2-way-communication-in-capacitor-apps.md
  • src/content/blog/de/5-common-ota-update-mistakes-to-avoid.md
  • src/content/blog/de/5-security-best-practices-for-mobile-app-live-updates.md
  • src/content/blog/de/5-steps-for-resolving-version-conflicts-in-capacitor-apps.md
  • src/content/blog/de/5-steps-to-deploy-hotfixes-with-capgo.md
  • src/content/blog/de/5-steps-to-distribute-custom-capacitor-plugins.md
  • src/content/blog/de/5-steps-to-implement-oauth2-in-capacitor-apps.md
  • src/content/blog/de/a-brand-new-organization-system.md
  • src/content/blog/de/account-deletion-compliance-apple-guidelines.md
  • src/content/blog/de/alternative-to-appflow.md
  • src/content/blog/de/alternative-to-expo.md
  • src/content/blog/de/alternative-to-voltbuilder.md
  • src/content/blog/de/android-16kb-page-size-capacitor-plugins.md
  • src/content/blog/de/android-setup-for-capacitor-apps.md
  • src/content/blog/de/angular-mobile-app-capacitor.md
  • src/content/blog/de/api-key-security-for-app-store-compliance.md
  • src/content/blog/de/api-rate-limiting-for-app-store-compliance.md
  • src/content/blog/de/app-store-metadata-what-developers-must-know.md
  • src/content/blog/de/app-store-vs-direct-updates-what-developers-need-to-know.md
  • src/content/blog/de/appcenter-migration.md
  • src/content/blog/de/appflow-cicd-integration-best-practices.md
  • src/content/blog/de/appflow-shutdown-alternative.md
  • src/content/blog/de/apple-policy-updates-for-capacitor-apps-2025.md
  • src/content/blog/de/apple-privacy-rules-for-capacitor-apps.md
  • src/content/blog/de/apple-vs-google-privacy-compliance-for-third-party-data.md
  • src/content/blog/de/automated-consent-tracking-for-capacitor-apps.md
  • src/content/blog/de/automatic-build-and-release-with-github-actions.md
  • src/content/blog/de/automatic-build-and-release-with-gitlab.md
  • src/content/blog/de/automatic-capacitor-android-build-github-action.md
  • src/content/blog/de/automatic-capacitor-android-build-gitlab.md
  • src/content/blog/de/automatic-capacitor-ios-build-codemagic.md
  • src/content/blog/de/automatic-capacitor-ios-build-github-action-with-match.md
  • src/content/blog/de/automatic-capacitor-ios-build-github-action.md
  • src/content/blog/de/basic-js-css-config-for-native-app-look.md
  • src/content/blog/de/best-practices-for-capacitor-code-sharing.md
  • src/content/blog/de/best-practices-for-capacitor-script-automation.md
  • src/content/blog/de/biometric-authentication-in-capacitor-apps.md
  • src/content/blog/de/birth-of-capgo-revolutionizing-capacitor-app-updates.md
  • src/content/blog/de/building-a-native-mobile-app-with-nextjs-and-capacitor.md
  • src/content/blog/de/capacitor-app-initialization-step-by-step-guide.md
  • src/content/blog/de/capacitor-apps-and-data-sharing-policies.md
  • src/content/blog/de/capacitor-apps-and-russias-data-laws-compliance-tips.md
  • src/content/blog/de/capacitor-changelog-management-ultimate-guide.md
  • src/content/blog/de/capacitor-cicd-pipeline-setup-guide.md
  • src/content/blog/de/capacitor-cicd-plugins-vs-appflow-key-differences.md
  • src/content/blog/de/capacitor-cli-commands-common-issues-and-fixes.md
  • src/content/blog/de/capacitor-cli-commands-for-version-updates.md
  • src/content/blog/de/capacitor-cli-plugin-commands-overview.md
  • src/content/blog/de/capacitor-cli-project-setup-guide.md
  • src/content/blog/de/capacitor-community-forums-for-plugin-developers.md
  • src/content/blog/de/capacitor-comprehensive-guide.md
  • src/content/blog/de/capacitor-live-updates-handling-version-conflicts.md
  • src/content/blog/de/capacitor-live-updates-staying-compliant-with-apple.md
  • src/content/blog/de/capacitor-native-bridge-android-plugin-basics.md
  • src/content/blog/de/capacitor-native-bridge-web-to-android-data-transfer.md
  • src/content/blog/de/capacitor-ota-updates-app-store-approval-guide.md
  • src/content/blog/de/capacitor-ota-updates-best-practices-for-performance.md
  • src/content/blog/de/capacitor-ota-updates-boosting-low-end-device-performance.md
  • src/content/blog/de/capacitor-ota-updates-cicd-integration-guide.md
  • src/content/blog/de/capacitor-ota-updates-cloud-hosting-options-compared.md
  • src/content/blog/de/capacitor-ota-updates-debugging-issues.md
  • src/content/blog/de/capacitor-ota-updates-security-tips.md
  • src/content/blog/de/capacitor-ota-updates-staying-compliant.md
  • src/content/blog/de/capacitor-ota-updates-targeting-ios-vs-android.md
  • src/content/blog/de/capacitor-ota-updates-version-targeting-explained.md
  • src/content/blog/de/capacitor-ota-updates-versioning-best-practices.md
  • src/content/blog/de/capacitor-ota-updates-vs-app-store-restrictions.md
  • src/content/blog/de/capacitor-ota-updates-vs-traditional-testing-methods.md
  • src/content/blog/de/capacitor-ota-updates-vs-traditional-versioning.md
  • src/content/blog/de/capacitor-plugin-contribution-guide.md
  • src/content/blog/de/capacitor-plugin-options-for-ota-updates.md
  • src/content/blog/de/capacitor-plugins-for-secure-session-management.md
  • src/content/blog/de/capacitor-plugins-what-you-need-to-know.md
  • src/content/blog/de/capacitor-social-login-release.md
  • src/content/blog/de/capacitor-vs-appflow-ota-update-solutions-compared.md
  • src/content/blog/de/capacitor-vs-appflow-versioning-differences.md
  • src/content/blog/de/capgo-for-app-store-safe-ota-updates.md
  • src/content/blog/de/capgo-integration-with-github-actions-guide.md
  • src/content/blog/de/capgo-price-reduction.md
  • src/content/blog/de/capgo-purpose.md
  • src/content/blog/de/capgo-vs-appflow-deployment-solutions-compared.md
  • src/content/blog/de/ccpa-compliance-for-mobile-apps.md
  • src/content/blog/de/checklist-for-cybersecurity-compliance-in-china.md
  • src/content/blog/de/checklist-for-google-play-ota-compliance.md
  • src/content/blog/de/checklist-for-ota-updates-under-australias-privacy-act.md
  • src/content/blog/de/checklist-for-token-signing-in-capacitor-apps.md
  • src/content/blog/de/checklist-for-validating-capacitor-app-updates.md
  • src/content/blog/de/chinas-cybersecurity-law-impact-on-app-updates.md
  • src/content/blog/de/chinas-data-privacy-laws-impact-on-mobile-apps.md
  • src/content/blog/de/code-integrity-in-capacitor-apps-key-techniques.md
  • src/content/blog/de/common-cicd-bottlenecks-in-ota-pipelines.md
  • src/content/blog/de/common-live-update-issues-and-solutions-for-developers.md
  • src/content/blog/de/common-mistakes-in-custom-attribute-segmentation.md
  • src/content/blog/de/comparing-react-native-vs-capacitor.md
  • src/content/blog/de/compliance-checks-in-cicd-for-capacitor-apps.md
  • src/content/blog/de/configuring-rollback-for-capacitor-updates.md
  • src/content/blog/de/cordova-hybrid-app-development.md
  • src/content/blog/de/cpra-compliance-for-app-developers.md
  • src/content/blog/de/create-offline-screen-in-vue-angular-react.md
  • src/content/blog/de/create-react-mobile-apps-with-capacitor.md
  • src/content/blog/de/creating-and-deleting-update-channels-in-capacitor.md
  • src/content/blog/de/creating-mobile-apps-with-react-and-capacitor.md
  • src/content/blog/de/creating-mobile-apps-with-sveltekit-and-capacitor.md
  • src/content/blog/de/cross-platform-mobile-app-development-guide-2024.md
  • src/content/blog/de/cross-platform-uiux-best-practices-for-capacitor-apps.md
  • src/content/blog/de/custom-ios-plugin-optimization-best-practices.md
  • src/content/blog/de/developing-cross-platform-apps-with-capacitorjs.md.md
  • src/content/blog/de/development-vs-production-key-differences-in-capacitor-apps.md
  • src/content/blog/de/do-apple-allow-live-updates.md
  • src/content/blog/de/do-capgo-work-for-cordova.md
  • src/content/blog/de/do-google-allow-live-updates.md
  • src/content/blog/de/enable-ios-developer-mode-ios16.md
  • src/content/blog/de/error-handling-in-capacitor-apps-ux-best-practices.md
  • src/content/blog/de/error-logging-tools-for-capacitor-ota-updates.md
  • src/content/blog/de/firebase-crashlytics-for-capacitor-apps.md
  • src/content/blog/de/fix-capacitor-version-mismatch-errors.md
  • src/content/blog/de/fixing-build-failures-in-capacitor-ci-cd-pipelines.md
  • src/content/blog/de/git-flow-vs-trunk-based-for-cicd.md
  • src/content/blog/de/google-play-compliance-key-update-strategies.md
  • src/content/blog/de/google-play-staged-rollouts-how-it-works.md
  • src/content/blog/de/how-I-manage-semantic-release-with-CapGo-CapacitorUpdater.md
  • src/content/blog/de/how-capacitor-bridges-web-and-native-code.md
  • src/content/blog/de/how-capacitor-handles-platform-differences.md
  • src/content/blog/de/how-capgo-is-born.md
  • src/content/blog/de/how-ccpa-enforcement-impacts-apps.md
  • src/content/blog/de/how-chinas-cybersecurity-law-impacts-app-developers.md
  • src/content/blog/de/how-chinas-data-laws-impact-app-store-submissions.md
  • src/content/blog/de/how-cicd-tools-trigger-ota-updates.md
  • src/content/blog/de/how-delta-updates-reduce-payload-size.md
  • src/content/blog/de/how-end-to-end-encryption-secures-updates.md
  • src/content/blog/de/how-live-updates-for-capacitor-work.md
  • src/content/blog/de/how-mobile-apps-stay-compliant-with-us-privacy-laws.md
  • src/content/blog/de/how-native-bridge-works-in-capacitor-android-apps.md
  • src/content/blog/de/how-ota-encryption-meets-app-store-compliance.md
  • src/content/blog/de/how-ota-updates-affect-app-store-security.md
  • src/content/blog/de/how-rbac-secures-ota-updates-in-capacitor-apps.md
  • src/content/blog/de/how-to-add-dependencies-in-capacitor-plugins.md
  • src/content/blog/de/how-to-add-geolocation-targeting-to-ota-updates.md
  • src/content/blog/de/how-to-add-third-party-plugins-in-capacitor-apps.md
  • src/content/blog/de/how-to-build-capacitor-app-in-xcode-cloud.md
  • src/content/blog/de/how-to-bypass-app-store-review.md
  • src/content/blog/de/how-to-customize-build-scripts-with-capacitor-cli.md
  • src/content/blog/de/how-to-handle-user-data-in-capacitor-apps.md
  • src/content/blog/de/how-to-handle-user-data-requests-under-ccpa.md
  • src/content/blog/de/how-to-monitor-capacitor-app-updates.md
  • src/content/blog/de/how-to-profile-cross-platform-apps-with-capacitor.md
  • src/content/blog/de/how-to-release-major-version-in-capgo.md
  • src/content/blog/de/how-to-resolve-android-build-errors-in-capacitor.md
  • src/content/blog/de/how-to-schedule-ota-updates-for-capacitor-apps.md
  • src/content/blog/de/how-to-secure-ota-updates-with-key-management.md
  • src/content/blog/de/how-to-segment-users-by-plan-and-channels.md
  • src/content/blog/de/how-to-send-specific-version-to-users.md
  • src/content/blog/de/how-to-track-ota-update-success-in-capacitor-apps.md
  • src/content/blog/de/how-to-use-aar-files-in-capacitor-plugins.md
  • src/content/blog/de/how-to-use-capacitor-cli-for-ota-updates.md
  • src/content/blog/de/how-to-use-capgo-documentation-for-ota-updates.md
  • src/content/blog/de/how-to-use-semantic-versioning-with-capgo-ota-updates.md
  • src/content/blog/de/how-version-work-in-capgo.md
  • src/content/blog/de/how-your-usage-is-counted.md
  • src/content/blog/de/icp-filing-for-mobile-apps-in-china-step-by-step-guide.md
  • src/content/blog/de/in-app-purchases-capacitor.md
  • src/content/blog/de/installing-capacitor-cli-step-by-step-guide.md
  • src/content/blog/de/integrate-universal-links-capacitor-nextjs.md
  • src/content/blog/de/integrity-checks-for-capacitor-updates.md
  • src/content/blog/de/introducing-end-to-end-security-to-capacitor-updater-with-code-signing.md
  • src/content/blog/de/ionic-capacitor-push-notifications-firebase.md
  • src/content/blog/de/key-management-under-chinas-encryption-rules.md
  • src/content/blog/de/live-updates-faq-answers-for-app-developers.md
  • src/content/blog/de/manage-dev-and-prod-build-with-github-actions.md
  • src/content/blog/de/managing-dependencies-in-capacitor-projects.md
  • src/content/blog/de/managing-secrets-in-cicd-pipelines.md
  • src/content/blog/de/merge-policies-for-teams-using-capacitor-apps.md
  • src/content/blog/de/migrating-cordova-to-capacitor.md
  • src/content/blog/de/mobile-app-update-strategies-a-developers-checklist.md
  • src/content/blog/de/monitor-ota-updates-in-capacitor-apps.md
  • src/content/blog/de/moving-from-microsoft-app-center-to-capgo.md
  • src/content/blog/de/npm-scripts-for-capacitor-ota-updates-explained.md
  • src/content/blog/de/open-source-licence.md
  • src/content/blog/de/open-source-vs-proprietary-app-update-solutions.md
  • src/content/blog/de/open-source.md
  • src/content/blog/de/optimise-your-images-for-updates.md
  • src/content/blog/de/ota-security-checklist-for-capacitor-apps.md
  • src/content/blog/de/ota-updates-in-beta-staying-policy-compliant.md
  • src/content/blog/de/ota-updates-in-cicd-security-and-compliance-tips.md
  • src/content/blog/de/payment-data-security-for-app-store-approval.md
  • src/content/blog/de/pci-dss-compliance-for-mobile-apps-key-requirements.md
  • src/content/blog/de/phased-rollouts-for-capacitor-live-updates.md
  • src/content/blog/de/pipeda-compliance-for-mobile-apps-in-canada.md
  • src/content/blog/de/pipeline-security-for-capacitor-apps-key-insights.md
  • src/content/blog/de/privacy-manifest-for-capacitor-apps-guide.md
  • src/content/blog/de/quasar-mobile-app-capacitor.md
  • src/content/blog/de/real-time-update-metrics-for-capacitor-apps.md
  • src/content/blog/de/real-time-updates-with-user-segmentation.md
  • src/content/blog/de/refresh-token-rotation-in-cicd-workflows.md
  • src/content/blog/de/rollback-mechanisms-in-capacitor-plugins.md
  • src/content/blog/de/rollback-strategies-for-capacitor-live-updates.md
  • src/content/blog/de/rollback-strategies-for-cicd-workflows.md
  • src/content/blog/de/secure-storage-for-offline-tokens-in-capacitor.md
  • src/content/blog/de/self-hosted-capgo.md
  • src/content/blog/de/self-hosted-live-updates.md
  • src/content/blog/de/set-up-performance-monitoring-in-capacitor.md
  • src/content/blog/de/setting-up-capacitor-local-environment.md
  • src/content/blog/de/setting-up-cicd-for-capacitor-apps.md
  • src/content/blog/de/setup-ci-and-cd-in-gitlab.md
  • src/content/blog/de/setup-stripe-payment-in-us-capacitor.md
  • src/content/blog/de/ssl-pinning-for-capacitor-apps.md
  • src/content/blog/de/staged-rollouts-vs-full-releases-comparison.md
  • src/content/blog/de/staging-ota-updates-best-practices.md
  • src/content/blog/de/state-privacy-laws-for-mobile-apps-comparison.md
  • src/content/blog/de/testing-capacitor-ota-updates-with-mock-scenarios.md
  • src/content/blog/de/testing-capacitor-ota-updates.md
  • src/content/blog/de/token-revocation-in-capacitor-apps-guide.md
  • src/content/blog/de/top-6-tools-for-managing-app-updates-in-2025.md
  • src/content/blog/de/top-api-security-standards-for-app-store-compliance.md
  • src/content/blog/de/top-tools-for-debugging-ota-updates-in-capacitor.md
  • src/content/blog/de/top-tools-for-debugging-platform-specific-code-in-capacitor.md
  • src/content/blog/de/turn-off-android-talkback.md
  • src/content/blog/de/ultimate-guide-to-app-store-compliant-ota-updates.md
  • src/content/blog/de/ultimate-guide-to-capacitor-ota-updates.md
  • src/content/blog/de/ultimate-guide-to-debugging-capacitor-apps.md
  • src/content/blog/de/ultimate-guide-to-ota-update-security-for-capacitor-apps.md
  • src/content/blog/de/understanding-apples-privacy-manifest.md
  • src/content/blog/de/update-your-capacitor-apps-seamlessly-using-capacitor-updater.md
  • src/content/blog/de/updating-from-capacitor-4-to-capacitor-5.md
  • src/content/blog/de/us-privacy-laws-mobile-app-checklist.md
  • src/content/blog/de/usage-frequency-segmentation-for-app-updates.md
  • src/content/blog/de/user-consent-for-ota-updates-best-practices.md
  • src/content/blog/de/version-control-tips-for-mobile-ci-cd.md
  • src/content/blog/de/version-tagging-in-capacitor-apps.md
  • src/content/blog/de/vue-mobile-app-capacitor.md
  • src/content/blog/de/what-is-native-bridge-in-capacitor.md
  • src/content/blog/de/why-consent-management-matters-for-app-compliance.md
  • src/content/blog/en/capacitor-ota-updates-app-store-approval-guide.md
  • src/content/blog/en/capacitor-ota-updates-cloud-hosting-options-compared.md
  • src/content/blog/en/capacitor-ota-updates-security-tips.md
  • src/content/blog/en/capacitor-ota-updates-version-targeting-explained.md
  • src/content/blog/en/capacitor-ota-updates-versioning-best-practices.md
  • src/content/blog/en/capacitor-ota-updates-vs-app-store-restrictions.md
  • src/content/blog/en/capacitor-ota-updates-vs-traditional-testing-methods.md
  • src/content/blog/en/capacitor-ota-updates-vs-traditional-versioning.md
  • src/content/blog/en/error-logging-tools-for-capacitor-ota-updates.md
  • src/content/blog/en/npm-scripts-for-capacitor-ota-updates-explained.md
  • src/content/blog/en/server-setup-for-capacitor-ota-updates.md
  • src/content/blog/en/testing-capacitor-ota-updates-with-mock-scenarios.md
  • src/content/blog/en/testing-capacitor-ota-updates.md
  • src/content/blog/en/top-tools-for-debugging-ota-updates-in-capacitor.md
  • src/content/blog/es/2-way-communication-in-capacitor-apps.md
  • src/content/blog/es/5-common-ota-update-mistakes-to-avoid.md
  • src/content/blog/es/5-security-best-practices-for-mobile-app-live-updates.md
  • src/content/blog/es/5-steps-for-resolving-version-conflicts-in-capacitor-apps.md
  • src/content/blog/es/5-steps-to-deploy-hotfixes-with-capgo.md
  • src/content/blog/es/5-steps-to-distribute-custom-capacitor-plugins.md
  • src/content/blog/es/5-steps-to-implement-oauth2-in-capacitor-apps.md
  • src/content/blog/es/a-brand-new-organization-system.md
  • src/content/blog/es/account-deletion-compliance-apple-guidelines.md
  • src/content/blog/es/alternative-to-appflow.md
  • src/content/blog/es/alternative-to-expo.md
  • src/content/blog/es/alternative-to-voltbuilder.md
  • src/content/blog/es/android-16kb-page-size-capacitor-plugins.md
  • src/content/blog/es/android-setup-for-capacitor-apps.md
  • src/content/blog/es/angular-mobile-app-capacitor.md
  • src/content/blog/es/api-key-security-for-app-store-compliance.md
  • src/content/blog/es/api-rate-limiting-for-app-store-compliance.md
  • src/content/blog/es/app-store-metadata-what-developers-must-know.md
  • src/content/blog/es/app-store-vs-direct-updates-what-developers-need-to-know.md
  • src/content/blog/es/appcenter-migration.md
  • src/content/blog/es/appflow-cicd-integration-best-practices.md
  • src/content/blog/es/appflow-shutdown-alternative.md
  • src/content/blog/es/apple-policy-updates-for-capacitor-apps-2025.md
  • src/content/blog/es/apple-privacy-rules-for-capacitor-apps.md
  • src/content/blog/es/apple-vs-google-privacy-compliance-for-third-party-data.md
  • src/content/blog/es/automated-consent-tracking-for-capacitor-apps.md
  • src/content/blog/es/automatic-build-and-release-with-github-actions.md
  • src/content/blog/es/automatic-build-and-release-with-gitlab.md
  • src/content/blog/es/automatic-capacitor-android-build-github-action.md
  • src/content/blog/es/automatic-capacitor-android-build-gitlab.md
  • src/content/blog/es/automatic-capacitor-ios-build-codemagic.md
  • src/content/blog/es/automatic-capacitor-ios-build-github-action-with-match.md
  • src/content/blog/es/automatic-capacitor-ios-build-github-action.md
  • src/content/blog/es/basic-js-css-config-for-native-app-look.md
  • src/content/blog/es/best-practices-for-capacitor-code-sharing.md
  • src/content/blog/es/best-practices-for-capacitor-script-automation.md
  • src/content/blog/es/biometric-authentication-in-capacitor-apps.md
  • src/content/blog/es/birth-of-capgo-revolutionizing-capacitor-app-updates.md
  • src/content/blog/es/building-a-native-mobile-app-with-nextjs-and-capacitor.md
  • src/content/blog/es/capacitor-app-initialization-step-by-step-guide.md
  • src/content/blog/es/capacitor-apps-and-data-sharing-policies.md
  • src/content/blog/es/capacitor-apps-and-russias-data-laws-compliance-tips.md
  • src/content/blog/es/capacitor-changelog-management-ultimate-guide.md
💤 Files with no reviewable changes (74)
  • src/content/blog/de/biometric-authentication-in-capacitor-apps.md
  • src/content/blog/de/5-steps-to-deploy-hotfixes-with-capgo.md
  • src/content/blog/de/apple-vs-google-privacy-compliance-for-third-party-data.md
  • src/content/blog/de/capacitor-ota-updates-security-tips.md
  • src/content/blog/de/capacitor-plugin-contribution-guide.md
  • src/content/blog/de/capacitor-ota-updates-staying-compliant.md
  • src/content/blog/de/capacitor-community-forums-for-plugin-developers.md
  • src/content/blog/de/automatic-capacitor-ios-build-codemagic.md
  • src/content/blog/de/capacitor-ota-updates-version-targeting-explained.md
  • src/content/blog/de/capacitor-cli-project-setup-guide.md
  • src/content/blog/de/capacitor-app-initialization-step-by-step-guide.md
  • src/content/blog/de/capacitor-apps-and-russias-data-laws-compliance-tips.md
  • src/content/blog/de/automated-consent-tracking-for-capacitor-apps.md
  • src/content/blog/de/birth-of-capgo-revolutionizing-capacitor-app-updates.md
  • src/content/blog/de/app-store-metadata-what-developers-must-know.md
  • src/content/blog/de/basic-js-css-config-for-native-app-look.md
  • src/content/blog/de/best-practices-for-capacitor-code-sharing.md
  • src/content/blog/de/capacitor-ota-updates-app-store-approval-guide.md
  • src/content/blog/de/appflow-cicd-integration-best-practices.md
  • src/content/blog/de/capacitor-plugins-what-you-need-to-know.md
  • src/content/blog/de/alternative-to-expo.md
  • src/content/blog/de/capacitor-native-bridge-android-plugin-basics.md
  • src/content/blog/de/capacitor-changelog-management-ultimate-guide.md
  • src/content/blog/de/capacitor-cli-commands-common-issues-and-fixes.md
  • src/content/blog/de/capacitor-ota-updates-best-practices-for-performance.md
  • src/content/blog/de/capacitor-plugin-options-for-ota-updates.md
  • src/content/blog/de/automatic-capacitor-android-build-gitlab.md
  • src/content/blog/de/capacitor-live-updates-handling-version-conflicts.md
  • src/content/blog/de/automatic-capacitor-ios-build-github-action.md
  • src/content/blog/de/5-security-best-practices-for-mobile-app-live-updates.md
  • src/content/blog/de/api-key-security-for-app-store-compliance.md
  • src/content/blog/de/apple-privacy-rules-for-capacitor-apps.md
  • src/content/blog/de/best-practices-for-capacitor-script-automation.md
  • src/content/blog/de/capacitor-social-login-release.md
  • src/content/blog/de/5-steps-to-distribute-custom-capacitor-plugins.md
  • src/content/blog/de/apple-policy-updates-for-capacitor-apps-2025.md
  • src/content/blog/de/app-store-vs-direct-updates-what-developers-need-to-know.md
  • src/content/blog/de/5-common-ota-update-mistakes-to-avoid.md
  • src/content/blog/de/capacitor-live-updates-staying-compliant-with-apple.md
  • src/content/blog/de/capacitor-ota-updates-versioning-best-practices.md
  • src/content/blog/de/appflow-shutdown-alternative.md
  • src/content/blog/de/capacitor-apps-and-data-sharing-policies.md
  • src/content/blog/de/capacitor-comprehensive-guide.md
  • src/content/blog/de/android-setup-for-capacitor-apps.md
  • src/content/blog/de/alternative-to-voltbuilder.md
  • src/content/blog/de/building-a-native-mobile-app-with-nextjs-and-capacitor.md
  • src/content/blog/de/automatic-capacitor-android-build-github-action.md
  • src/content/blog/de/capacitor-cicd-plugins-vs-appflow-key-differences.md
  • src/content/blog/de/capacitor-ota-updates-vs-app-store-restrictions.md
  • src/content/blog/de/capacitor-native-bridge-web-to-android-data-transfer.md
  • src/content/blog/de/automatic-build-and-release-with-github-actions.md
  • src/content/blog/de/capacitor-ota-updates-vs-traditional-versioning.md
  • src/content/blog/de/alternative-to-appflow.md
  • src/content/blog/de/capacitor-plugins-for-secure-session-management.md
  • src/content/blog/de/capacitor-ota-updates-boosting-low-end-device-performance.md
  • src/content/blog/de/appcenter-migration.md
  • src/content/blog/de/capacitor-ota-updates-targeting-ios-vs-android.md
  • src/content/blog/de/automatic-capacitor-ios-build-github-action-with-match.md
  • src/content/blog/de/2-way-communication-in-capacitor-apps.md
  • src/content/blog/de/android-16kb-page-size-capacitor-plugins.md
  • src/content/blog/de/5-steps-for-resolving-version-conflicts-in-capacitor-apps.md
  • src/content/blog/de/capacitor-ota-updates-cicd-integration-guide.md
  • src/content/blog/de/5-steps-to-implement-oauth2-in-capacitor-apps.md
  • src/content/blog/de/automatic-build-and-release-with-gitlab.md
  • src/content/blog/de/capacitor-ota-updates-vs-traditional-testing-methods.md
  • src/content/blog/de/capacitor-cli-commands-for-version-updates.md
  • src/content/blog/de/angular-mobile-app-capacitor.md
  • src/content/blog/de/capacitor-cicd-pipeline-setup-guide.md
  • src/content/blog/de/capacitor-ota-updates-debugging-issues.md
  • src/content/blog/de/account-deletion-compliance-apple-guidelines.md
  • src/content/blog/de/capacitor-ota-updates-cloud-hosting-options-compared.md
  • src/content/blog/de/capacitor-cli-plugin-commands-overview.md
  • src/content/blog/de/api-rate-limiting-for-app-store-compliance.md
  • src/content/blog/de/a-brand-new-organization-system.md

Copy link
Copy Markdown
Contributor

@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.

🧹 Nitpick comments (1)
src/components/doc/LanguageSelect.astro (1)

64-69: Consider adding outside-click handler for consistency.

Unlike Footer.astro, this component lacks a document click listener to close the menu and reset aria-expanded when clicking outside. While not critical (menu items navigate away), adding it would improve UX and ensure aria-expanded stays accurate if the user clicks elsewhere without selecting a locale.

Optional: Add outside-click handler
       button.onclick = () => {
         const willShow = languageMenu.classList.contains('hidden')
         languageMenu.classList.toggle('hidden')
         button.setAttribute('aria-expanded', String(willShow))
         if (willShow) adjustMenuPosition()
       }
+
+      document.addEventListener('click', (event) => {
+        if (event.target instanceof Node && !button.contains(event.target) && !languageMenu.contains(event.target)) {
+          languageMenu.classList.add('hidden')
+          button.setAttribute('aria-expanded', 'false')
+        }
+      })
+
       locales.forEach((j) => {
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/doc/LanguageSelect.astro` around lines 64 - 69, Add a
document-level outside-click handler so clicking outside the language menu
closes it and resets aria-expanded: when toggling via button.onclick
(referencing button.onclick, languageMenu, adjustMenuPosition, and the
aria-expanded attribute) register a document click listener that checks clicks
outside languageMenu and button, hides languageMenu (toggle/remove 'hidden'),
sets button.setAttribute('aria-expanded', 'false'), and removes the document
listener; also ensure the listener is removed whenever the menu is hidden (e.g.,
after navigation or when button toggles off) to avoid leaks and duplicate
handlers.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@src/components/doc/LanguageSelect.astro`:
- Around line 64-69: Add a document-level outside-click handler so clicking
outside the language menu closes it and resets aria-expanded: when toggling via
button.onclick (referencing button.onclick, languageMenu, adjustMenuPosition,
and the aria-expanded attribute) register a document click listener that checks
clicks outside languageMenu and button, hides languageMenu (toggle/remove
'hidden'), sets button.setAttribute('aria-expanded', 'false'), and removes the
document listener; also ensure the listener is removed whenever the menu is
hidden (e.g., after navigation or when button toggles off) to avoid leaks and
duplicate handlers.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 88d4433e-bab6-4bdd-997f-2181c0391d79

📥 Commits

Reviewing files that changed from the base of the PR and between 4ae10ab and d6b8bfe.

📒 Files selected for processing (2)
  • src/components/Footer.astro
  • src/components/doc/LanguageSelect.astro

@chatgpt-codex-connector
Copy link
Copy Markdown

💡 Codex Review

https://github.com/Cap-go/website/blob/31057ec580a137498e055387779a688cc419fe13/src/pages/blog/[slug].astro#L14
P2 Badge Restore static path generation for SEO-critical blog routes

Setting export const prerender = false on this dynamic page removes getStaticPaths()-driven static generation, while the repo is configured to generate sitemap files via @astrojs/sitemap in astro.config.mjs. Astro’s sitemap integration only emits statically generated routes, so these blog detail URLs will no longer be included in sitemap output, reducing search-engine discovery; the same pattern was introduced in src/pages/blog/category/[slug].astro and src/pages/plugins/[slug].astro in this commit.

ℹ️ 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".

@socket-security
Copy link
Copy Markdown

socket-security bot commented Apr 4, 2026

Copy link
Copy Markdown
Contributor

@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: 1

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

Inline comments:
In `@package.json`:
- Around line 12-14: CI builds fail to enforce BUILD_CONCURRENCY expected by
astro.config.mjs because package.json scripts removed explicit build resource
configuration; update the GitHub Actions workflow definitions (the deploy and
test workflows) to set an environment variable BUILD_CONCURRENCY to a safe
default (e.g., "2" or "4") under the workflow or job env section so Astro builds
and any scripts reading process.env.BUILD_CONCURRENCY get a predictable value;
ensure both .github/workflows/deploy.yml and .github/workflows/test.yml include
BUILD_CONCURRENCY in their env blocks so the build step that runs the
scripts/generate-plugins-readme.ts and astro build uses the new limit.
🪄 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: 60213e38-adf6-4788-acdd-a155573655df

📥 Commits

Reviewing files that changed from the base of the PR and between d6b8bfe and 7e7101b.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (1)
  • package.json

Comment on lines +12 to +14
"just:build": "bun run clean:build-cache && astro build",
"generate:plugins-readme": "bun run scripts/generate-plugins-readme.ts",
"build": "bun run clean:build-cache && NODE_OPTIONS=${NODE_OPTIONS:---max-old-space-size=16384} BUILD_CONCURRENCY=${BUILD_CONCURRENCY:-1} UV_THREADPOOL_SIZE=${UV_THREADPOOL_SIZE:-16} astro build",
"build": "bun run clean:build-cache && astro build",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify whether build tuning env vars are still configured outside package.json.

set -euo pipefail

echo "== package.json build scripts =="
rg -n '"(just:build|build)"\s*:' package.json

echo
echo "== Astro concurrency wiring =="
rg -n 'BUILD_CONCURRENCY|availableParallelism|concurrency' astro.config.mjs

echo
echo "== CI/workflow env references =="
rg -n --iglob '*.{yml,yaml}' 'BUILD_CONCURRENCY|NODE_OPTIONS|UV_THREADPOOL_SIZE'

Repository: Cap-go/website

Length of output: 748


🏁 Script executed:

# More comprehensive search for CI/workflow configurations
echo "== All .github directory contents =="
find .github -type f 2>/dev/null | head -20

echo
echo "== Search for workflow files by pattern =="
fd -e yml -e yaml

echo
echo "== Check for .env files =="
fd -e env | head -20

echo
echo "== Check for any build/concurrency references in common CI locations =="
rg -l 'BUILD_CONCURRENCY|NODE_OPTIONS|UV_THREADPOOL_SIZE' --type yaml --type yml 2>/dev/null || echo "No matches found"

Repository: Cap-go/website

Length of output: 872


🏁 Script executed:

# Read the astro.config.mjs file to understand the full context
echo "== Full astro.config.mjs (first 40 lines) =="
head -40 astro.config.mjs

echo
echo "== Search for deployment/build config files =="
fd -e toml -e json | grep -E '(dockerfile|netlify|vercel|build|deploy)' -i

echo
echo "== Check for any build settings in astro.config =="
rg -A 5 'concurrency:|vite:' astro.config.mjs

Repository: Cap-go/website

Length of output: 2789


🏁 Script executed:

# Check git log for recent changes to package.json to see what was removed
echo "== Recent changes to package.json (last 5 entries) =="
git log --oneline -5 -- package.json 2>/dev/null || echo "Git history not available"

echo
echo "== Search for platform-specific deployment configs =="
fd 'netlify\|vercel\|cloudflare\|docker' -i

echo
echo "== Check if there are any build env vars in astro deployment integrations =="
rg 'NODE_OPTIONS|UV_THREADPOOL_SIZE|BUILD_CONCURRENCY' src/ --type js --type mjs 2>/dev/null | head -10

echo
echo "== Verify what package.json scripts currently contain =="
jq '.scripts | keys[] as $k | "\($k): \(.[$k])"' package.json 2>/dev/null | grep -E 'build|just'

Repository: Cap-go/website

Length of output: 718


CI builds need explicit BUILD_CONCURRENCY tuning — currently missing.

Build resource configuration was removed from package.json scripts, but astro.config.mjs still expects BUILD_CONCURRENCY env var. Without it, builds now depend entirely on host system defaults, risking resource contention or OOM on constrained CI runners.

Add BUILD_CONCURRENCY (e.g., 2–4) to the workflow environment in .github/workflows/deploy.yml and .github/workflows/test.yml to restore predictable build performance.

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

In `@package.json` around lines 12 - 14, CI builds fail to enforce
BUILD_CONCURRENCY expected by astro.config.mjs because package.json scripts
removed explicit build resource configuration; update the GitHub Actions
workflow definitions (the deploy and test workflows) to set an environment
variable BUILD_CONCURRENCY to a safe default (e.g., "2" or "4") under the
workflow or job env section so Astro builds and any scripts reading
process.env.BUILD_CONCURRENCY get a predictable value; ensure both
.github/workflows/deploy.yml and .github/workflows/test.yml include
BUILD_CONCURRENCY in their env blocks so the build step that runs the
scripts/generate-plugins-readme.ts and astro build uses the new limit.

@chatgpt-codex-connector
Copy link
Copy Markdown

💡 Codex Review

export const locales = ["en"]

P2 Badge Update legacy locale redirects after removing locales

Setting locales to only "en" removes all non-English routes, but public/_redirects still sends legacy localized blog URLs to locale-prefixed targets like /de/capwesome/ and /es/capwesome/ (lines 21-34). With the new locale config, those destinations no longer exist, so users hitting those old links now get redirected into a 404 instead of a valid page; retarget these rules to an existing English URL (for example /capwesome/) or add a locale-prefix fallback redirect.

ℹ️ 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".

@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud bot commented Apr 4, 2026

Copy link
Copy Markdown

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

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: 789af60add

ℹ️ 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".

@@ -1,240 +0,0 @@
#!/usr/bin/env bun
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Restore deleted script still required by deploy build

.github/workflows/deploy.yml still runs bun run build:prepare, and package.json defines build:prepare to call generate:plugins-readme; deleting this file makes that step fail immediately with a missing script/module error, so the deploy pipeline can no longer reach astro build. Please either keep this script or update the build:prepare chain (and workflow) to remove the dependency.

Useful? React with 👍 / 👎.

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