Skip to content

[codex] Refresh blog social images#606

Merged
riderx merged 3 commits into
mainfrom
codex/refresh-blog-social-images
May 1, 2026
Merged

[codex] Refresh blog social images#606
riderx merged 3 commits into
mainfrom
codex/refresh-blog-social-images

Conversation

@riderx
Copy link
Copy Markdown
Member

@riderx riderx commented May 1, 2026

Summary

  • Regenerated 12 weak blog social images with individual AI-generated artwork.
  • Kept existing .webp filenames and existing frontmatter paths.
  • Removed the generic batch-template approach from the branch.

Verification

  • Diff scope is limited to 12 files under apps/web/public/.
  • All changed images are still 1536x1024 WebP assets.
  • git diff --check passes.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 1, 2026

📝 Walkthrough

Walkthrough

This PR systematically updates blog post frontmatter across German, English, and Spanish language directories by converting all head_image asset references from WebP format to JPEG format. Each blog post's header image file extension changes from .webp to .jpg, affecting only the metadata that determines which image asset is displayed.

Changes

Cohort / File(s) Summary
German Language Blog Posts
apps/web/src/content/blog/de/*.md
Updated head_image frontmatter asset paths from .webp to .jpg files across 60+ blog post markdown files, including guides on Capacitor, React, Vue, Angular, and various CI/CD topics.
English Language Blog Posts
apps/web/src/content/blog/en/*.md
Updated head_image frontmatter asset paths from .webp to .jpg files across 80+ blog post markdown files covering similar technical topics and frameworks.
Spanish Language Blog Posts
apps/web/src/content/blog/es/*.md
Updated head_image frontmatter asset paths from .webp to .jpg files across 60+ blog post markdown files with equivalent content to the English and German posts.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Possibly related PRs

Poem

🐰 Hop, hop, images take flight,
From webby formats to JPEGs bright,
Across three tongues, the headers now gleam,
A unified visual theme! 📷✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title '[codex] Refresh blog social images' clearly and specifically describes the main change: updating blog header/social card images from WebP to JPG format across all localized blog posts.
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

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

✨ 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/refresh-blog-social-images

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

@riderx riderx force-pushed the codex/refresh-blog-social-images branch from d580fd9 to ba05050 Compare May 1, 2026 14:11
@riderx riderx marked this pull request as ready for review May 1, 2026 14:24
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: 3

Caution

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

⚠️ Outside diff range comments (1)
apps/web/src/content/blog/es/developing-cross-platform-apps-with-capacitorjs.md.md (1)

1-1: ⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Critical: Double file extension in filename.

The file is named developing-cross-platform-apps-with-capacitorjs.md.md with a double .md extension. This will likely break file resolution, routing, or build processes in the web framework. The file should be renamed to use a single .md extension.

🔧 Required fix

Rename the file from:

apps/web/src/content/blog/es/developing-cross-platform-apps-with-capacitorjs.md.md

To:

apps/web/src/content/blog/es/developing-cross-platform-apps-with-capacitorjs.md
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@apps/web/src/content/blog/es/developing-cross-platform-apps-with-capacitorjs.md.md`
at line 1, The file has a double ".md.md" extension; rename the file
`developing-cross-platform-apps-with-capacitorjs.md.md` to
`developing-cross-platform-apps-with-capacitorjs.md` and update any
references/imports/routes that point to
`developing-cross-platform-apps-with-capacitorjs.md.md` (search the repo for
that exact filename) so the web content loader and routing use the
single-extension filename instead.
🧹 Nitpick comments (1)
apps/web/src/content/blog/en/optimise-your-images-for-updates.md (1)

12-13: Consider updating the alt text to more accurately reflect the image.

The corrected image path is valid, but the head_image_alt text still references "Convert to webp illustration" which may not accurately describe the image-optimization-updates.jpg asset.

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

In `@apps/web/src/content/blog/en/optimise-your-images-for-updates.md` around
lines 12 - 13, The frontmatter's head_image_alt value ("Convert to webp
illustration") likely doesn't match the head_image asset; update the
head_image_alt field to a concise, accurate description of the actual image in
the page frontmatter (the head_image_alt metadata paired with head_image), e.g.,
describe the scene/subject and purpose in a short phrase for accessibility and
SEO, keeping it non-decorative and specific.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/web/src/content/blog/de/alternative-to-appflow.md`:
- Line 13: Update the remaining blog frontmatter head_image fields that still
reference .webp to use .jpg so they match the change in this PR; open each
affected file (notably the frontmatter key head_image in the files listed:
apps/web/src/content/blog/en/why-app-reviews-ratings-matter.md,
how-to-pass-app-store-review-iap.md, how-to-keep-capgo-updates-lean-and-fast.md,
how-capgo-channel-switching-works.md, and first-time-app-review-guide.md) and
change the filename extension from .webp to .jpg (e.g., head_image:
/something.webp -> head_image: /something.jpg).

In `@apps/web/src/content/blog/es/create-react-mobile-apps-with-capacitor.md`:
- Line 12: The OG image MIME type is hardcoded to image/webp in
apps/web/src/services/meta.ts while some posts (e.g., head_image =
/react_capacitor.jpg) are JPEGs; update the meta generation function (the
function that emits og:image:type / the OpenGraph meta builder in meta.ts) to
detect the head_image file extension (or infer MIME from the image path/string)
and output the correct MIME type (image/jpeg, image/png, image/webp, etc.)
instead of always image/webp; locate the code that writes og:image:type and
replace the constant with a small mapper/utility that returns the proper MIME
for the head_image value (fallback to image/jpeg or image/* if unknown).

In
`@apps/web/src/content/blog/es/developing-cross-platform-apps-with-capacitorjs.md.md`:
- Line 14: Several blog files are mistakenly named with a double extension
"developing-cross-platform-apps-with-capacitorjs.md.md"; rename each file to
remove the extra ".md" so the filename becomes
"developing-cross-platform-apps-with-capacitorjs.md", and update any internal
references/links that point to the old double-extension names (check templates
or content lists that reference the localized variants). Ensure the eight
localized copies (the ones sharing the base name
"developing-cross-platform-apps-with-capacitorjs.md.md") are all renamed and
that the new single-.md names are committed so assets like "head_image:
/create_app_with_js.jpg" resolve correctly.

---

Outside diff comments:
In
`@apps/web/src/content/blog/es/developing-cross-platform-apps-with-capacitorjs.md.md`:
- Line 1: The file has a double ".md.md" extension; rename the file
`developing-cross-platform-apps-with-capacitorjs.md.md` to
`developing-cross-platform-apps-with-capacitorjs.md` and update any
references/imports/routes that point to
`developing-cross-platform-apps-with-capacitorjs.md.md` (search the repo for
that exact filename) so the web content loader and routing use the
single-extension filename instead.

---

Nitpick comments:
In `@apps/web/src/content/blog/en/optimise-your-images-for-updates.md`:
- Around line 12-13: The frontmatter's head_image_alt value ("Convert to webp
illustration") likely doesn't match the head_image asset; update the
head_image_alt field to a concise, accurate description of the actual image in
the page frontmatter (the head_image_alt metadata paired with head_image), e.g.,
describe the scene/subject and purpose in a short phrase for accessibility and
SEO, keeping it non-decorative and specific.
🪄 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: a701ae59-d66f-4573-9726-883336d1371b

📥 Commits

Reviewing files that changed from the base of the PR and between 1525c67 and ba05050.

⛔ Files ignored due to path filters (63)
  • apps/web/public/CI_CD_in_Gitlab.jpg is excluded by !**/*.jpg
  • apps/web/public/Codemagic_ios.jpg is excluded by !**/*.jpg
  • apps/web/public/android-16kb-page-size-capacitor-plugins.jpg is excluded by !**/*.jpg
  • apps/web/public/android_app_gitlab.jpg is excluded by !**/*.jpg
  • apps/web/public/android_talkback.jpg is excluded by !**/*.jpg
  • apps/web/public/angular_capacitor.jpg is excluded by !**/*.jpg
  • apps/web/public/app_center.jpg is excluded by !**/*.jpg
  • apps/web/public/appflow_alt.jpg is excluded by !**/*.jpg
  • apps/web/public/apple_appstore.jpg is excluded by !**/*.jpg
  • apps/web/public/bolt_capacitor.jpg is excluded by !**/*.jpg
  • apps/web/public/build_list.jpg is excluded by !**/*.jpg
  • apps/web/public/bypass_illustration.jpg is excluded by !**/*.jpg
  • apps/web/public/capacitor-5-update.jpg is excluded by !**/*.jpg
  • apps/web/public/capacitor-guide.jpg is excluded by !**/*.jpg
  • apps/web/public/capgo-2025-recap-blog-post-img.jpg is excluded by !**/*.jpg
  • apps/web/public/capgo-birth-story.jpg is excluded by !**/*.jpg
  • apps/web/public/capgo-feature-image.jpg is excluded by !**/*.jpg
  • apps/web/public/capgo_banner.jpg is excluded by !**/*.jpg
  • apps/web/public/capgo_birth.jpg is excluded by !**/*.jpg
  • apps/web/public/capgo_ci-cd-illustration.jpg is excluded by !**/*.jpg
  • apps/web/public/capgo_select_update.jpg is excluded by !**/*.jpg
  • apps/web/public/cordova.jpg is excluded by !**/*.jpg
  • apps/web/public/create_app_with_js.jpg is excluded by !**/*.jpg
  • apps/web/public/cross-platform-app-dev-2024.jpg is excluded by !**/*.jpg
  • apps/web/public/deeplink_next_capacitor.jpg is excluded by !**/*.jpg
  • apps/web/public/enable-ios-developer-mode-ios16.jpg is excluded by !**/*.jpg
  • apps/web/public/expo_alternative.jpg is excluded by !**/*.jpg
  • apps/web/public/fastlane_android.jpg is excluded by !**/*.jpg
  • apps/web/public/fastlane_ios.jpg is excluded by !**/*.jpg
  • apps/web/public/github_actions.jpg is excluded by !**/*.jpg
  • apps/web/public/gitlab_ci.jpg is excluded by !**/*.jpg
  • apps/web/public/image-optimization-updates.jpg is excluded by !**/*.jpg
  • apps/web/public/lovable_capacitor.jpg is excluded by !**/*.jpg
  • apps/web/public/migrate_appcenter.jpg is excluded by !**/*.jpg
  • apps/web/public/migrating-cordova-to-capacitor.jpg is excluded by !**/*.jpg
  • apps/web/public/native_app_look.jpg is excluded by !**/*.jpg
  • apps/web/public/next_capgo.jpg is excluded by !**/*.jpg
  • apps/web/public/nuxt_capgo.jpg is excluded by !**/*.jpg
  • apps/web/public/open_source_licence.jpg is excluded by !**/*.jpg
  • apps/web/public/open_source_main.jpg is excluded by !**/*.jpg
  • apps/web/public/organization_system_blog.jpg is excluded by !**/*.jpg
  • apps/web/public/playstore.jpg is excluded by !**/*.jpg
  • apps/web/public/push_notif.jpg is excluded by !**/*.jpg
  • apps/web/public/quasar_capgo.jpg is excluded by !**/*.jpg
  • apps/web/public/rapido_cloud_study_case.jpg is excluded by !**/*.jpg
  • apps/web/public/react_capacitor.jpg is excluded by !**/*.jpg
  • apps/web/public/react_native_vs_react_capacitor.jpg is excluded by !**/*.jpg
  • apps/web/public/revenuecat_iap.jpg is excluded by !**/*.jpg
  • apps/web/public/secure_upload.jpg is excluded by !**/*.jpg
  • apps/web/public/self-hosted-capgo.jpg is excluded by !**/*.jpg
  • apps/web/public/self_hosted.jpg is excluded by !**/*.jpg
  • apps/web/public/social_login_plugin_blog.jpg is excluded by !**/*.jpg
  • apps/web/public/stripe_apple.jpg is excluded by !**/*.jpg
  • apps/web/public/supabase_social_login.jpg is excluded by !**/*.jpg
  • apps/web/public/sveltekit_capacitor.jpg is excluded by !**/*.jpg
  • apps/web/public/update_flow.jpg is excluded by !**/*.jpg
  • apps/web/public/usage_explained.jpg is excluded by !**/*.jpg
  • apps/web/public/versioning.jpg is excluded by !**/*.jpg
  • apps/web/public/voltbuilder_alt.jpg is excluded by !**/*.jpg
  • apps/web/public/vue_angular_react.jpg is excluded by !**/*.jpg
  • apps/web/public/vue_capacitor.jpg is excluded by !**/*.jpg
  • apps/web/public/what-is-cordova-phone-gap.jpg is excluded by !**/*.jpg
  • apps/web/public/xcode_cloud.jpg is excluded by !**/*.jpg
📒 Files selected for processing (237)
  • apps/web/public/CI_CD_in_Gitlab.webp
  • apps/web/public/Codemagic_ios.webp
  • apps/web/public/andriod_app_gitlab.webp
  • apps/web/public/android-16kb-page-size-capacitor-plugins.webp
  • apps/web/public/android_app_gitlab.webp
  • apps/web/public/android_talkback.webp
  • apps/web/public/angular_capacitor.webp
  • apps/web/public/app_center.webp
  • apps/web/public/appflow_alt.webp
  • apps/web/public/apple_appstore.webp
  • apps/web/public/bolt_capacitor.webp
  • apps/web/public/bypass_illustration.webp
  • apps/web/public/capacitor-5-update.webp
  • apps/web/public/capacitor-guide.webp
  • apps/web/public/capgo-2025-recap-blog-post-img.webp
  • apps/web/public/capgo-birth-story.webp
  • apps/web/public/capgo-feature-image.webp
  • apps/web/public/capgo_birth.webp
  • apps/web/public/capgo_ci-cd-illustration.webp
  • apps/web/public/capgo_select_update.webp
  • apps/web/public/convert.jpg.webp.webp
  • apps/web/public/cordova.webp
  • apps/web/public/create_app_with_js.webp
  • apps/web/public/cross-platform-app-dev-2024.webp
  • apps/web/public/deeplink_next_capacitor.webp
  • apps/web/public/enable-ios-developer-mode-ios16.webp
  • apps/web/public/expo_alternative.webp
  • apps/web/public/fastlane_android.webp
  • apps/web/public/fastlane_ios.webp
  • apps/web/public/github_actions.webp
  • apps/web/public/gitlab_ci.webp
  • apps/web/public/lovable_capacitor.webp
  • apps/web/public/migrate_appcenter.webp
  • apps/web/public/migrating-cordova-to-capacitor.webp
  • apps/web/public/native_app_look.webp
  • apps/web/public/next_capgo.webp
  • apps/web/public/nuxt_capgo.webp
  • apps/web/public/open_source_licence.webp
  • apps/web/public/open_source_main.webp
  • apps/web/public/organization_system_blog.webp
  • apps/web/public/playstore.webp
  • apps/web/public/push_notif.webp
  • apps/web/public/quasar_capgo.webp
  • apps/web/public/rapido_cloud_study_case.webp
  • apps/web/public/react_capacitor.webp
  • apps/web/public/react_native_vs_react_capacitor.webp
  • apps/web/public/revenuecat_iap.webp
  • apps/web/public/secure_upload.webp
  • apps/web/public/self-hosted-capgo.webp
  • apps/web/public/self_hosted.webp
  • apps/web/public/social_login_plugin_blog.webp
  • apps/web/public/stripe_apple.webp
  • apps/web/public/supabase_social_login.webp
  • apps/web/public/sveltekit_capacitor.webp
  • apps/web/public/update_flow.webp
  • apps/web/public/usage_explained.webp
  • apps/web/public/versioning.webp
  • apps/web/public/versionning.webp
  • apps/web/public/voltbuilder_alt.webp
  • apps/web/public/vue_angular_react.webp
  • apps/web/public/vue_capacitor.webp
  • apps/web/public/what-is-cordova-phone-gap.webp
  • apps/web/public/xcode_cloud.webp
  • apps/web/src/content/blog/de/a-brand-new-organization-system.md
  • apps/web/src/content/blog/de/alternative-to-appflow.md
  • apps/web/src/content/blog/de/alternative-to-expo.md
  • apps/web/src/content/blog/de/alternative-to-voltbuilder.md
  • apps/web/src/content/blog/de/android-16kb-page-size-capacitor-plugins.md
  • apps/web/src/content/blog/de/angular-mobile-app-capacitor.md
  • apps/web/src/content/blog/de/appcenter-migration.md
  • apps/web/src/content/blog/de/appflow-shutdown-alternative.md
  • apps/web/src/content/blog/de/automatic-build-and-release-with-github-actions.md
  • apps/web/src/content/blog/de/automatic-build-and-release-with-gitlab.md
  • apps/web/src/content/blog/de/automatic-capacitor-android-build-github-action.md
  • apps/web/src/content/blog/de/automatic-capacitor-android-build-gitlab.md
  • apps/web/src/content/blog/de/automatic-capacitor-ios-build-codemagic.md
  • apps/web/src/content/blog/de/automatic-capacitor-ios-build-github-action-with-match.md
  • apps/web/src/content/blog/de/automatic-capacitor-ios-build-github-action.md
  • apps/web/src/content/blog/de/basic-js-css-config-for-native-app-look.md
  • apps/web/src/content/blog/de/birth-of-capgo-revolutionizing-capacitor-app-updates.md
  • apps/web/src/content/blog/de/building-a-native-mobile-app-with-nextjs-and-capacitor.md
  • apps/web/src/content/blog/de/capacitor-comprehensive-guide.md
  • apps/web/src/content/blog/de/capacitor-social-login-release.md
  • apps/web/src/content/blog/de/capgo-price-reduction.md
  • apps/web/src/content/blog/de/capgo-purpose.md
  • apps/web/src/content/blog/de/comparing-react-native-vs-capacitor.md
  • apps/web/src/content/blog/de/cordova-hybrid-app-development.md
  • apps/web/src/content/blog/de/create-offline-screen-in-vue-angular-react.md
  • apps/web/src/content/blog/de/create-react-mobile-apps-with-capacitor.md
  • apps/web/src/content/blog/de/creating-mobile-apps-with-react-and-capacitor.md
  • apps/web/src/content/blog/de/creating-mobile-apps-with-sveltekit-and-capacitor.md
  • apps/web/src/content/blog/de/cross-platform-mobile-app-development-guide-2024.md
  • apps/web/src/content/blog/de/developing-cross-platform-apps-with-capacitorjs.md.md
  • apps/web/src/content/blog/de/do-apple-allow-live-updates.md
  • apps/web/src/content/blog/de/do-capgo-work-for-cordova.md
  • apps/web/src/content/blog/de/do-google-allow-live-updates.md
  • apps/web/src/content/blog/de/enable-ios-developer-mode-ios16.md
  • apps/web/src/content/blog/de/how-capgo-is-born.md
  • apps/web/src/content/blog/de/how-live-updates-for-capacitor-work.md
  • apps/web/src/content/blog/de/how-to-build-capacitor-app-in-xcode-cloud.md
  • apps/web/src/content/blog/de/how-to-bypass-app-store-review.md
  • apps/web/src/content/blog/de/how-to-release-major-version-in-capgo.md
  • apps/web/src/content/blog/de/how-to-segment-users-by-plan-and-channels.md
  • apps/web/src/content/blog/de/how-to-send-specific-version-to-users.md
  • apps/web/src/content/blog/de/how-version-work-in-capgo.md
  • apps/web/src/content/blog/de/how-your-usage-is-counted.md
  • apps/web/src/content/blog/de/in-app-purchases-capacitor.md
  • apps/web/src/content/blog/de/integrate-universal-links-capacitor-nextjs.md
  • apps/web/src/content/blog/de/introducing-end-to-end-security-to-capacitor-updater-with-code-signing.md
  • apps/web/src/content/blog/de/ionic-capacitor-push-notifications-firebase.md
  • apps/web/src/content/blog/de/manage-dev-and-prod-build-with-github-actions.md
  • apps/web/src/content/blog/de/migrating-cordova-to-capacitor.md
  • apps/web/src/content/blog/de/moving-from-microsoft-app-center-to-capgo.md
  • apps/web/src/content/blog/de/open-source-licence.md
  • apps/web/src/content/blog/de/open-source.md
  • apps/web/src/content/blog/de/optimise-your-images-for-updates.md
  • apps/web/src/content/blog/de/quasar-mobile-app-capacitor.md
  • apps/web/src/content/blog/de/self-hosted-capgo.md
  • apps/web/src/content/blog/de/self-hosted-live-updates.md
  • apps/web/src/content/blog/de/setup-ci-and-cd-in-gitlab.md
  • apps/web/src/content/blog/de/setup-stripe-payment-in-us-capacitor.md
  • apps/web/src/content/blog/de/turn-off-android-talkback.md
  • apps/web/src/content/blog/de/update-your-capacitor-apps-seamlessly-using-capacitor-updater.md
  • apps/web/src/content/blog/de/updating-from-capacitor-4-to-capacitor-5.md
  • apps/web/src/content/blog/de/vue-mobile-app-capacitor.md
  • apps/web/src/content/blog/en/a-brand-new-organization-system.md
  • apps/web/src/content/blog/en/alternative-to-appflow.md
  • apps/web/src/content/blog/en/alternative-to-expo.md
  • apps/web/src/content/blog/en/alternative-to-voltbuilder.md
  • apps/web/src/content/blog/en/android-16kb-page-size-capacitor-plugins.md
  • apps/web/src/content/blog/en/angular-mobile-app-capacitor.md
  • apps/web/src/content/blog/en/app-store-age-ratings-guide.md
  • apps/web/src/content/blog/en/appcenter-migration.md
  • apps/web/src/content/blog/en/appflow-shutdown-alternative.md
  • apps/web/src/content/blog/en/automatic-build-and-release-with-github-actions.md
  • apps/web/src/content/blog/en/automatic-build-and-release-with-gitlab.md
  • apps/web/src/content/blog/en/automatic-capacitor-android-build-github-action.md
  • apps/web/src/content/blog/en/automatic-capacitor-android-build-gitlab.md
  • apps/web/src/content/blog/en/automatic-capacitor-ios-build-codemagic.md
  • apps/web/src/content/blog/en/automatic-capacitor-ios-build-github-action-with-match.md
  • apps/web/src/content/blog/en/automatic-capacitor-ios-build-github-action.md
  • apps/web/src/content/blog/en/basic-js-css-config-for-native-app-look.md
  • apps/web/src/content/blog/en/birth-of-capgo-revolutionizing-capacitor-app-updates.md
  • apps/web/src/content/blog/en/build-ios-app-from-windows-capacitor-capgo-build.md
  • apps/web/src/content/blog/en/building-a-native-mobile-app-with-nextjs-and-capacitor.md
  • apps/web/src/content/blog/en/building-a-native-mobile-app-with-nuxt-and-capacitor.md
  • apps/web/src/content/blog/en/capacitor-ai-mobile-apps.md
  • apps/web/src/content/blog/en/capacitor-comprehensive-guide.md
  • apps/web/src/content/blog/en/capacitor-edge-to-edge-display-native-config.md
  • apps/web/src/content/blog/en/capacitor-social-login-release.md
  • apps/web/src/content/blog/en/capgo-2025-year-in-review.md
  • apps/web/src/content/blog/en/capgo-price-reduction.md
  • apps/web/src/content/blog/en/capgo-purpose.md
  • apps/web/src/content/blog/en/comparing-react-native-vs-capacitor.md
  • apps/web/src/content/blog/en/cordova-hybrid-app-development.md
  • apps/web/src/content/blog/en/create-offline-screen-in-vue-angular-react.md
  • apps/web/src/content/blog/en/create-react-mobile-apps-with-capacitor.md
  • apps/web/src/content/blog/en/creating-mobile-apps-with-react-and-capacitor.md
  • apps/web/src/content/blog/en/creating-mobile-apps-with-sveltekit-and-capacitor.md
  • apps/web/src/content/blog/en/cross-platform-mobile-app-development-guide-2024.md
  • apps/web/src/content/blog/en/developing-cross-platform-apps-with-capacitorjs.md.md
  • apps/web/src/content/blog/en/do-apple-allow-live-updates.md
  • apps/web/src/content/blog/en/do-capgo-work-for-cordova.md
  • apps/web/src/content/blog/en/do-google-allow-live-updates.md
  • apps/web/src/content/blog/en/enable-ios-developer-mode-ios16.md
  • apps/web/src/content/blog/en/how-I-manage-semantic-release-with-CapGo-CapacitorUpdater.md
  • apps/web/src/content/blog/en/how-capgo-is-born.md
  • apps/web/src/content/blog/en/how-live-updates-for-capacitor-work.md
  • apps/web/src/content/blog/en/how-to-build-capacitor-app-in-xcode-cloud.md
  • apps/web/src/content/blog/en/how-to-bypass-app-store-review.md
  • apps/web/src/content/blog/en/how-to-release-major-version-in-capgo.md
  • apps/web/src/content/blog/en/how-to-segment-users-by-plan-and-channels.md
  • apps/web/src/content/blog/en/how-to-send-specific-version-to-users.md
  • apps/web/src/content/blog/en/how-version-work-in-capgo.md
  • apps/web/src/content/blog/en/how-your-usage-is-counted.md
  • apps/web/src/content/blog/en/in-app-purchases-capacitor.md
  • apps/web/src/content/blog/en/integrate-universal-links-capacitor-nextjs.md
  • apps/web/src/content/blog/en/introducing-capgo-cloud-build.md
  • apps/web/src/content/blog/en/introducing-end-to-end-security-to-capacitor-updater-with-code-signing.md
  • apps/web/src/content/blog/en/ionic-capacitor-push-notifications-firebase.md
  • apps/web/src/content/blog/en/live-updates-for-flutter-app.md
  • apps/web/src/content/blog/en/manage-dev-and-prod-build-with-github-actions.md
  • apps/web/src/content/blog/en/migrating-cordova-to-capacitor.md
  • apps/web/src/content/blog/en/moving-from-microsoft-app-center-to-capgo.md
  • apps/web/src/content/blog/en/nextjs-mobile-app-capacitor-from-scratch.md
  • apps/web/src/content/blog/en/nuxt-mobile-app-capacitor-from-scratch.md
  • apps/web/src/content/blog/en/open-source-licence.md
  • apps/web/src/content/blog/en/open-source.md
  • apps/web/src/content/blog/en/optimise-your-images-for-updates.md
  • apps/web/src/content/blog/en/quasar-mobile-app-capacitor.md
  • apps/web/src/content/blog/en/self-hosted-capgo.md
  • apps/web/src/content/blog/en/self-hosted-live-updates.md
  • apps/web/src/content/blog/en/setup-ci-and-cd-in-gitlab.md
  • apps/web/src/content/blog/en/setup-stripe-payment-in-us-capacitor.md
  • apps/web/src/content/blog/en/setup-supabase-with-capacitor-social-login.md
  • apps/web/src/content/blog/en/staging-environments-with-capgo-channels.md
  • apps/web/src/content/blog/en/transform-bolt-new-app-to-mobile-with-capacitor.md
  • apps/web/src/content/blog/en/transform-lovable-dev-app-to-mobile-with-capacitor.md
  • apps/web/src/content/blog/en/transform-pwa-to-native-app-with-capacitor.md
  • apps/web/src/content/blog/en/turn-every-pr-into-installable-preview.md
  • apps/web/src/content/blog/en/turn-off-android-talkback.md
  • apps/web/src/content/blog/en/update-your-capacitor-apps-seamlessly-using-capacitor-updater.md
  • apps/web/src/content/blog/en/updating-from-capacitor-4-to-capacitor-5.md
  • apps/web/src/content/blog/en/vue-mobile-app-capacitor.md
  • apps/web/src/content/blog/en/xcode-26-requirement-for-capacitor-apps.md
  • apps/web/src/content/blog/es/a-brand-new-organization-system.md
  • apps/web/src/content/blog/es/alternative-to-appflow.md
  • apps/web/src/content/blog/es/alternative-to-expo.md
  • apps/web/src/content/blog/es/alternative-to-voltbuilder.md
  • apps/web/src/content/blog/es/android-16kb-page-size-capacitor-plugins.md
  • apps/web/src/content/blog/es/angular-mobile-app-capacitor.md
  • apps/web/src/content/blog/es/appcenter-migration.md
  • apps/web/src/content/blog/es/appflow-shutdown-alternative.md
  • apps/web/src/content/blog/es/automatic-build-and-release-with-github-actions.md
  • apps/web/src/content/blog/es/automatic-build-and-release-with-gitlab.md
  • apps/web/src/content/blog/es/automatic-capacitor-android-build-github-action.md
  • apps/web/src/content/blog/es/automatic-capacitor-android-build-gitlab.md
  • apps/web/src/content/blog/es/automatic-capacitor-ios-build-codemagic.md
  • apps/web/src/content/blog/es/automatic-capacitor-ios-build-github-action-with-match.md
  • apps/web/src/content/blog/es/automatic-capacitor-ios-build-github-action.md
  • apps/web/src/content/blog/es/basic-js-css-config-for-native-app-look.md
  • apps/web/src/content/blog/es/birth-of-capgo-revolutionizing-capacitor-app-updates.md
  • apps/web/src/content/blog/es/building-a-native-mobile-app-with-nextjs-and-capacitor.md
  • apps/web/src/content/blog/es/capacitor-comprehensive-guide.md
  • apps/web/src/content/blog/es/capacitor-social-login-release.md
  • apps/web/src/content/blog/es/capgo-price-reduction.md
  • apps/web/src/content/blog/es/capgo-purpose.md
  • apps/web/src/content/blog/es/comparing-react-native-vs-capacitor.md
  • apps/web/src/content/blog/es/cordova-hybrid-app-development.md
  • apps/web/src/content/blog/es/create-offline-screen-in-vue-angular-react.md
  • apps/web/src/content/blog/es/create-react-mobile-apps-with-capacitor.md
  • apps/web/src/content/blog/es/creating-mobile-apps-with-react-and-capacitor.md
  • apps/web/src/content/blog/es/creating-mobile-apps-with-sveltekit-and-capacitor.md
  • apps/web/src/content/blog/es/cross-platform-mobile-app-development-guide-2024.md
  • apps/web/src/content/blog/es/developing-cross-platform-apps-with-capacitorjs.md.md
  • apps/web/src/content/blog/es/do-apple-allow-live-updates.md
  • apps/web/src/content/blog/es/do-capgo-work-for-cordova.md

created_at: 2022-03-02T00:00:00.000Z
updated_at: 2026-04-08T14:34:13.000Z
head_image: /appflow_alt.webp
head_image: /appflow_alt.jpg
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
# Description: Search for any remaining .webp references in blog post head_image frontmatter

echo "Searching for remaining .webp head_image references in blog posts..."

# Search for head_image: lines containing .webp in blog content directories
rg -n --type=md -g 'apps/web/src/content/blog/**/*.md' '^head_image:.*\.webp' || echo "✅ No .webp head_image references found"

echo ""
echo "Note: This search excludes in-body image references, which should be preserved per PR objectives."

Repository: Cap-go/website

Length of output: 794


Update remaining blog post head_image references from WebP to JPG format.

Verification found 5 additional blog posts with .webp head_image references that need to be updated to match the format applied in this PR:

  • apps/web/src/content/blog/en/why-app-reviews-ratings-matter.md (line 10)
  • apps/web/src/content/blog/en/how-to-pass-app-store-review-iap.md (line 10)
  • apps/web/src/content/blog/en/how-to-keep-capgo-updates-lean-and-fast.md (line 13)
  • apps/web/src/content/blog/en/how-capgo-channel-switching-works.md (line 10)
  • apps/web/src/content/blog/en/first-time-app-review-guide.md (line 10)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/content/blog/de/alternative-to-appflow.md` at line 13, Update
the remaining blog frontmatter head_image fields that still reference .webp to
use .jpg so they match the change in this PR; open each affected file (notably
the frontmatter key head_image in the files listed:
apps/web/src/content/blog/en/why-app-reviews-ratings-matter.md,
how-to-pass-app-store-review-iap.md, how-to-keep-capgo-updates-lean-and-fast.md,
how-capgo-channel-switching-works.md, and first-time-app-review-guide.md) and
change the filename extension from .webp to .jpg (e.g., head_image:
/something.webp -> head_image: /something.jpg).

created_at: 2023-02-21T00:00:00.000Z
updated_at: 2026-04-08T14:34:13.000Z
head_image: /react_capacitor.webp
head_image: /react_capacitor.jpg
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 | ⚡ Quick win

head_image now points to JPG, but OG type is still hardcoded to WebP globally.

This post now uses /react_capacitor.jpg (Line 12), while apps/web/src/services/meta.ts still emits og:image:type = image/webp (Line 16). That mismatch can break/soft-fail social preview parsing for refreshed cards.

Suggested fix in apps/web/src/services/meta.ts
 export function createMetaImage(image: string | null = null, title: string | null = null): Meta[] {
   if (image) {
     const image_unsecure = image.replace('https://', 'http://')
     const titleFix = title || (image.split('/').pop() || '.').split('.')[0]
+    const ext = (image.split('.').pop() || '').toLowerCase()
+    const mimeByExt: Record<string, string> = {
+      jpg: 'image/jpeg',
+      jpeg: 'image/jpeg',
+      webp: 'image/webp',
+      png: 'image/png',
+      gif: 'image/gif',
+      avif: 'image/avif',
+    }
+    const imageType = mimeByExt[ext] ?? 'image/jpeg'
     return [
       {
         hid: 'og:image:alt',
         property: 'og:image:alt',
         content: titleFix,
       },
       {
         hid: 'og:image:type',
         property: 'og:image:type',
-        content: 'image/webp',
+        content: imageType,
       },
       {
         hid: 'og:image',
         property: 'og:image',
         content: image_unsecure,
       },
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/content/blog/es/create-react-mobile-apps-with-capacitor.md` at
line 12, The OG image MIME type is hardcoded to image/webp in
apps/web/src/services/meta.ts while some posts (e.g., head_image =
/react_capacitor.jpg) are JPEGs; update the meta generation function (the
function that emits og:image:type / the OpenGraph meta builder in meta.ts) to
detect the head_image file extension (or infer MIME from the image path/string)
and output the correct MIME type (image/jpeg, image/png, image/webp, etc.)
instead of always image/webp; locate the code that writes og:image:type and
replace the constant with a small mapper/utility that returns the proper MIME
for the head_image value (fallback to image/jpeg or image/* if unknown).

created_at: 2023-12-02T00:00:00.000Z
updated_at: 2026-04-08T14:34:13.000Z
head_image: /create_app_with_js.webp
head_image: /create_app_with_js.jpg
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
# Description: Verify JPG asset exists and check for double extension issues

echo "=== Checking if new JPG asset exists ==="
# Check for the JPG file in common static asset directories
fd -t f "create_app_with_js.jpg" apps/web/

echo -e "\n=== Checking for blog files with double .md.md extension ==="
# Find any blog markdown files with double extension
fd -e "md.md" -t f . apps/web/src/content/blog/

echo -e "\n=== Checking for old WebP reference (should be removed) ==="
# Search for any remaining references to the old WebP file
rg -n "create_app_with_js\.webp" apps/web/src/content/blog/

Repository: Cap-go/website

Length of output: 925


Fix double .md.md extension across 8 blog files.

The new JPG asset (/create_app_with_js.jpg) is correctly placed and the old WebP reference has been removed. However, this file and 7 other language versions have an incorrect double extension: .md.md should be .md. Affected files:

  • apps/web/src/content/blog/de/developing-cross-platform-apps-with-capacitorjs.md.md
  • apps/web/src/content/blog/en/developing-cross-platform-apps-with-capacitorjs.md.md
  • apps/web/src/content/blog/es/developing-cross-platform-apps-with-capacitorjs.md.md
  • apps/web/src/content/blog/fr/developing-cross-platform-apps-with-capacitorjs.md.md
  • apps/web/src/content/blog/id/developing-cross-platform-apps-with-capacitorjs.md.md
  • apps/web/src/content/blog/it/developing-cross-platform-apps-with-capacitorjs.md.md
  • apps/web/src/content/blog/ja/developing-cross-platform-apps-with-capacitorjs.md.md
  • apps/web/src/content/blog/ko/developing-cross-platform-apps-with-capacitorjs.md.md
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@apps/web/src/content/blog/es/developing-cross-platform-apps-with-capacitorjs.md.md`
at line 14, Several blog files are mistakenly named with a double extension
"developing-cross-platform-apps-with-capacitorjs.md.md"; rename each file to
remove the extra ".md" so the filename becomes
"developing-cross-platform-apps-with-capacitorjs.md", and update any internal
references/links that point to the old double-extension names (check templates
or content lists that reference the localized variants). Ensure the eight
localized copies (the ones sharing the base name
"developing-cross-platform-apps-with-capacitorjs.md.md") are all renamed and
that the new single-.md names are committed so assets like "head_image:
/create_app_with_js.jpg" resolve correctly.

@riderx riderx force-pushed the codex/refresh-blog-social-images branch from ba05050 to f6a0774 Compare May 1, 2026 15:20
@riderx riderx force-pushed the codex/refresh-blog-social-images branch from f6a0774 to a6fa4d9 Compare May 1, 2026 19:07
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented May 1, 2026

@riderx riderx merged commit 4232781 into main May 1, 2026
10 checks passed
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