Skip to content

Comments

fix: restructure French docs to match other locales (fr/docs/ path)#492

Open
Pitiakova wants to merge 6 commits intomainfrom
fix/fr-features-path
Open

fix: restructure French docs to match other locales (fr/docs/ path)#492
Pitiakova wants to merge 6 commits intomainfrom
fix/fr-features-path

Conversation

@Pitiakova
Copy link
Contributor

@Pitiakova Pitiakova commented Feb 23, 2026

Problem

The French locale had all docs content at fr/ root level (e.g. fr/live-updates/, fr/getting-started/), while all other locales store content under fr/docs/ (e.g. de/docs/live-updates/, es/docs/live-updates/).

Starlight routes /fr/docs/live-updates/features/ to fr/docs/live-updates/features.mdx, not fr/live-updates/features.mdx, so all French pages were falling back to English.

This also caused the entire left sidebar to show in English for all French docs pages.

Changes

  • Copied all French content from fr/ to fr/docs/ to match the structure of de, es, id, it, ja, ko, zh locales
  • Sections moved: getting-started, cli, live-updates, plugins, public-api, upgrade, webapp, plugin, contributing
  • Files moved: faq.mdx, getting-help.mdx, how-to.mdx, index.mdx
  • Fixed locale: fr field position to be first in frontmatter for features.mdx and update-types.mdx
  • Fixed sidebar ordering for update-types (order: 4) and integrations (order: 3) in French live-updates

Result

  • French sidebar now shows all items in French
  • French Features page renders in French
  • French docs follow same structure as all other locales (268 files)

Made with Cursor

Summary by CodeRabbit

  • Documentation
    • Added comprehensive French-language documentation including FAQ, getting help guide, and how-to tutorials.
    • Added detailed French documentation for live updates features: channels, encryption, custom storage, compliance, China configuration, rollbacks, and update behavior.
    • Added French CI/CD integration guides for Azure DevOps, GitHub Actions, GitLab CI, and Bitbucket Pipelines.

Pitiakova and others added 5 commits February 23, 2026 15:03
- Move fr/docs/live-updates/features.mdx to fr/live-updates/features.mdx (correct French structure)
- Remove duplicate fr/docs/live-updates/ files (index, update-types, version-targeting)
- Fix update-types order from 2 to 4 in French live-updates
- Fix integrations order from 1 to 3 in French live-updates

French locale uses fr/live-updates/ not fr/docs/live-updates/ unlike other locales.

Co-authored-by: Cursor <cursoragent@cursor.com>
…pdate-types

Co-authored-by: Cursor <cursoragent@cursor.com>
…ht routing

Co-authored-by: Cursor <cursoragent@cursor.com>
…ng other locales structure

Co-authored-by: Cursor <cursoragent@cursor.com>
… structure

Co-authored-by: Cursor <cursoragent@cursor.com>
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 23, 2026

📝 Walkthrough

Walkthrough

This PR adds comprehensive French-language documentation to Capgo, introducing 19+ new MDX and Markdown files covering FAQ, getting started guides, live updates features (channels, encryption, custom storage, compliance), CI/CD integrations (Azure DevOps, Bitbucket, GitHub Actions, GitLab), and update behavior, alongside minor formatting fixes to existing French documentation files.

Changes

Cohort / File(s) Summary
Core French Documentation
src/content/docs/fr/docs/faq.mdx, src/content/docs/fr/docs/getting-help.mdx, src/content/docs/fr/docs/how-to.mdx, src/content/docs/fr/docs/index.mdx
Added foundational French documentation pages including FAQ (Code Push, bundles, roadmap, CI usage, stores), getting help (Discord/email support), how-to guides with LinkCard navigation, and localized index with featured sections and quick links.
Live Updates Core
src/content/docs/fr/docs/live-updates/.../{breaking-changes,channels,china-configuration,compliance,custom-storage,differentials,encryption,rollbacks,update-behavior}.md*
Comprehensive French live updates documentation covering update channels, versioning, regional configuration, privacy/compliance, custom storage options, differential updates, end-to-end encryption, rollback procedures, and update behavior customization with code examples and configuration guidance.
CI/CD Integrations
src/content/docs/fr/docs/live-updates/integrations/{azure-devops,bitbucket-pipeline,github-actions,gitlab-ci,index}.mdx
Added detailed French integration guides for major CI/CD platforms (Azure DevOps, Bitbucket, GitHub Actions, GitLab) with pipeline examples, multi-channel deployments, security practices, monitoring setup, and an integrations index page.
Frontmatter Fixes
src/content/docs/fr/live-updates/features.mdx, src/content/docs/fr/live-updates/update-types.mdx
Minor formatting adjustments to YAML frontmatter: moved locale field to top of block in features.mdx and restructured description formatting in update-types.mdx.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

💰 Rewarded

Poem

🐰 With whiskers twitching and pride so bright,
French docs now shine with proper light,
From FAQ to CI, encryption's key,
Updates flow in French—c'est magnifique, vraiment!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the main change: restructuring French documentation to move files from fr/ to fr/docs/ path to align with other locale structures.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/fr-features-path

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

❤️ Share

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

@riderx
Copy link
Member

riderx commented Feb 23, 2026

@ToriChanIntegration please fix the merge conflict on the branch

# Conflicts:
#	src/content/docs/fr/cli/cloud-build/android.mdx
#	src/content/docs/fr/cli/cloud-build/credentials.mdx
#	src/content/docs/fr/cli/cloud-build/getting-started.mdx
#	src/content/docs/fr/cli/cloud-build/ios.mdx
#	src/content/docs/fr/cli/cloud-build/troubleshooting.mdx
#	src/content/docs/fr/cli/commands.mdx
#	src/content/docs/fr/cli/migrations/cli-from-0x-to-1x.mdx
#	src/content/docs/fr/cli/migrations/encryption.md
#	src/content/docs/fr/cli/overview.mdx
#	src/content/docs/fr/cli/reference/account.mdx
#	src/content/docs/fr/cli/reference/app.mdx
#	src/content/docs/fr/cli/reference/build.mdx
#	src/content/docs/fr/cli/reference/bundle.mdx
#	src/content/docs/fr/cli/reference/channel.mdx
#	src/content/docs/fr/cli/reference/doctor.mdx
#	src/content/docs/fr/cli/reference/index.mdx
#	src/content/docs/fr/cli/reference/init.mdx
#	src/content/docs/fr/cli/reference/key.mdx
#	src/content/docs/fr/cli/reference/login.mdx
#	src/content/docs/fr/cli/reference/organisation.mdx
#	src/content/docs/fr/contributing/adding-plugins.mdx
#	src/content/docs/fr/docs/live-updates/update-types.mdx
#	src/content/docs/fr/getting-started/add-an-app.mdx
#	src/content/docs/fr/getting-started/cicd-integration.mdx
#	src/content/docs/fr/getting-started/deploy.mdx
#	src/content/docs/fr/getting-started/onboarding.mdx
#	src/content/docs/fr/getting-started/quickstart.mdx
#	src/content/docs/fr/getting-started/troubleshooting.mdx
#	src/content/docs/fr/getting-started/wrapping-up.mdx
#	src/content/docs/fr/live-updates/update-types.mdx
#	src/content/docs/fr/plugin/api.md
#	src/content/docs/fr/plugins/accelerometer/getting-started.mdx
#	src/content/docs/fr/plugins/accelerometer/index.mdx
#	src/content/docs/fr/plugins/admob/getting-started.mdx
#	src/content/docs/fr/plugins/admob/index.mdx
#	src/content/docs/fr/plugins/age-signals/getting-started.mdx
#	src/content/docs/fr/plugins/age-signals/index.mdx
#	src/content/docs/fr/plugins/alarm/getting-started.mdx
#	src/content/docs/fr/plugins/alarm/index.mdx
#	src/content/docs/fr/plugins/android-inline-install/getting-started.mdx
#	src/content/docs/fr/plugins/android-inline-install/index.mdx
#	src/content/docs/fr/plugins/android-kiosk/getting-started.mdx
#	src/content/docs/fr/plugins/android-kiosk/index.mdx
#	src/content/docs/fr/plugins/android-usagestatsmanager/getting-started.mdx
#	src/content/docs/fr/plugins/android-usagestatsmanager/index.mdx
#	src/content/docs/fr/plugins/appinsights/getting-started.mdx
#	src/content/docs/fr/plugins/appinsights/index.mdx
#	src/content/docs/fr/plugins/audio-recorder/getting-started.mdx
#	src/content/docs/fr/plugins/audio-recorder/index.mdx
#	src/content/docs/fr/plugins/audiosession/getting-started.mdx
#	src/content/docs/fr/plugins/audiosession/index.mdx
#	src/content/docs/fr/plugins/autofill-save-password/getting-started.mdx
#	src/content/docs/fr/plugins/autofill-save-password/index.mdx
#	src/content/docs/fr/plugins/background-geolocation/getting-started.mdx
#	src/content/docs/fr/plugins/background-geolocation/index.mdx
#	src/content/docs/fr/plugins/barometer/getting-started.mdx
#	src/content/docs/fr/plugins/barometer/index.mdx
#	src/content/docs/fr/plugins/camera-preview/getting-started.mdx
#	src/content/docs/fr/plugins/camera-preview/index.mdx
#	src/content/docs/fr/plugins/capacitor-plus/getting-started.mdx
#	src/content/docs/fr/plugins/capacitor-plus/index.mdx
#	src/content/docs/fr/plugins/compass/getting-started.mdx
#	src/content/docs/fr/plugins/compass/index.mdx
#	src/content/docs/fr/plugins/contacts/getting-started.mdx
#	src/content/docs/fr/plugins/contacts/index.mdx
#	src/content/docs/fr/plugins/crisp/getting-started.mdx
#	src/content/docs/fr/plugins/crisp/index.mdx
#	src/content/docs/fr/plugins/data-storage-sqlite/getting-started.mdx
#	src/content/docs/fr/plugins/data-storage-sqlite/index.mdx
#	src/content/docs/fr/plugins/document-scanner/getting-started.mdx
#	src/content/docs/fr/plugins/document-scanner/index.mdx
#	src/content/docs/fr/plugins/downloader/getting-started.mdx
#	src/content/docs/fr/plugins/downloader/index.mdx
#	src/content/docs/fr/plugins/env/getting-started.mdx
#	src/content/docs/fr/plugins/env/index.mdx
#	src/content/docs/fr/plugins/fast-sql/getting-started.mdx
#	src/content/docs/fr/plugins/fast-sql/index.mdx
#	src/content/docs/fr/plugins/ffmpeg/getting-started.mdx
#	src/content/docs/fr/plugins/ffmpeg/index.mdx
#	src/content/docs/fr/plugins/file-compressor/getting-started.mdx
#	src/content/docs/fr/plugins/file-compressor/index.mdx
#	src/content/docs/fr/plugins/file/getting-started.mdx
#	src/content/docs/fr/plugins/file/index.mdx
#	src/content/docs/fr/plugins/flash/getting-started.mdx
#	src/content/docs/fr/plugins/flash/index.mdx
#	src/content/docs/fr/plugins/gtm/getting-started.mdx
#	src/content/docs/fr/plugins/gtm/index.mdx
#	src/content/docs/fr/plugins/health/getting-started.mdx
#	src/content/docs/fr/plugins/health/index.mdx
#	src/content/docs/fr/plugins/home-indicator/getting-started.mdx
#	src/content/docs/fr/plugins/home-indicator/index.mdx
#	src/content/docs/fr/plugins/ibeacon/getting-started.mdx
#	src/content/docs/fr/plugins/ibeacon/index.mdx
#	src/content/docs/fr/plugins/inappbrowser/getting-started.mdx
#	src/content/docs/fr/plugins/inappbrowser/index.mdx
#	src/content/docs/fr/plugins/index.mdx
#	src/content/docs/fr/plugins/is-root/getting-started.mdx
#	src/content/docs/fr/plugins/is-root/index.mdx
#	src/content/docs/fr/plugins/ivs-player/getting-started.mdx
#	src/content/docs/fr/plugins/ivs-player/index.mdx
#	src/content/docs/fr/plugins/jw-player/getting-started.mdx
#	src/content/docs/fr/plugins/jw-player/index.mdx
#	src/content/docs/fr/plugins/launch-navigator/getting-started.mdx
#	src/content/docs/fr/plugins/launch-navigator/index.mdx
#	src/content/docs/fr/plugins/live-reload/getting-started.mdx
#	src/content/docs/fr/plugins/live-reload/index.mdx
#	src/content/docs/fr/plugins/llm/getting-started.mdx
#	src/content/docs/fr/plugins/llm/index.mdx
#	src/content/docs/fr/plugins/media-session/getting-started.mdx
#	src/content/docs/fr/plugins/media-session/index.mdx
#	src/content/docs/fr/plugins/mute/getting-started.mdx
#	src/content/docs/fr/plugins/mute/index.mdx
#	src/content/docs/fr/plugins/mux-player/getting-started.mdx
#	src/content/docs/fr/plugins/mux-player/index.mdx
#	src/content/docs/fr/plugins/native-audio/getting-started.mdx
#	src/content/docs/fr/plugins/native-audio/index.mdx
#	src/content/docs/fr/plugins/native-biometric/getting-started.mdx
#	src/content/docs/fr/plugins/native-biometric/index.mdx
#	src/content/docs/fr/plugins/native-market/getting-started.mdx
#	src/content/docs/fr/plugins/native-market/index.mdx
#	src/content/docs/fr/plugins/native-purchases/android-create-subscription.mdx
#	src/content/docs/fr/plugins/native-purchases/android-introductory-offer.mdx
#	src/content/docs/fr/plugins/native-purchases/android-play-store-review.mdx
#	src/content/docs/fr/plugins/native-purchases/android-sandbox-testing.mdx
#	src/content/docs/fr/plugins/native-purchases/getting-started.mdx
#	src/content/docs/fr/plugins/native-purchases/index.mdx
#	src/content/docs/fr/plugins/native-purchases/ios-app-store-review.mdx
#	src/content/docs/fr/plugins/native-purchases/ios-create-subscription.mdx
#	src/content/docs/fr/plugins/native-purchases/ios-introductory-offer.mdx
#	src/content/docs/fr/plugins/native-purchases/ios-sandbox-testing.mdx
#	src/content/docs/fr/plugins/native-purchases/ios-subscription-group.mdx
#	src/content/docs/fr/plugins/nativegeocoder/getting-started.mdx
#	src/content/docs/fr/plugins/nativegeocoder/index.mdx
#	src/content/docs/fr/plugins/navigation-bar/getting-started.mdx
#	src/content/docs/fr/plugins/navigation-bar/index.mdx
#	src/content/docs/fr/plugins/nfc/getting-started.mdx
#	src/content/docs/fr/plugins/nfc/index.mdx
#	src/content/docs/fr/plugins/pay/getting-started.mdx
#	src/content/docs/fr/plugins/pay/index.mdx
#	src/content/docs/fr/plugins/pdf-generator/getting-started.mdx
#	src/content/docs/fr/plugins/pdf-generator/index.mdx
#	src/content/docs/fr/plugins/pedometer/getting-started.mdx
#	src/content/docs/fr/plugins/pedometer/index.mdx
#	src/content/docs/fr/plugins/persistent-account/getting-started.mdx
#	src/content/docs/fr/plugins/persistent-account/index.mdx
#	src/content/docs/fr/plugins/photo-library/getting-started.mdx
#	src/content/docs/fr/plugins/photo-library/index.mdx
#	src/content/docs/fr/plugins/printer/getting-started.mdx
#	src/content/docs/fr/plugins/printer/index.mdx
#	src/content/docs/fr/plugins/realtimekit/getting-started.mdx
#	src/content/docs/fr/plugins/realtimekit/index.mdx
#	src/content/docs/fr/plugins/ricoh360-camera/getting-started.mdx
#	src/content/docs/fr/plugins/ricoh360-camera/index.mdx
#	src/content/docs/fr/plugins/screen-orientation/getting-started.mdx
#	src/content/docs/fr/plugins/screen-orientation/index.mdx
#	src/content/docs/fr/plugins/screen-recorder/getting-started.mdx
#	src/content/docs/fr/plugins/screen-recorder/index.mdx
#	src/content/docs/fr/plugins/shake/getting-started.mdx
#	src/content/docs/fr/plugins/shake/index.mdx
#	src/content/docs/fr/plugins/share-target/getting-started.mdx
#	src/content/docs/fr/plugins/share-target/index.mdx
#	src/content/docs/fr/plugins/sim/getting-started.mdx
#	src/content/docs/fr/plugins/sim/index.mdx
#	src/content/docs/fr/plugins/social-login/apple/android.mdx
#	src/content/docs/fr/plugins/social-login/apple/general.mdx
#	src/content/docs/fr/plugins/social-login/apple/ios.mdx
#	src/content/docs/fr/plugins/social-login/apple/web.mdx
#	src/content/docs/fr/plugins/social-login/facebook.mdx
#	src/content/docs/fr/plugins/social-login/firebase/google/android.mdx
#	src/content/docs/fr/plugins/social-login/firebase/google/general.mdx
#	src/content/docs/fr/plugins/social-login/firebase/google/ios.mdx
#	src/content/docs/fr/plugins/social-login/firebase/google/web.mdx
#	src/content/docs/fr/plugins/social-login/firebase/introduction.mdx
#	src/content/docs/fr/plugins/social-login/getting-started.mdx
#	src/content/docs/fr/plugins/social-login/google/android.mdx
#	src/content/docs/fr/plugins/social-login/google/general.mdx
#	src/content/docs/fr/plugins/social-login/google/ios.mdx
#	src/content/docs/fr/plugins/social-login/google/web.mdx
#	src/content/docs/fr/plugins/social-login/index.mdx
#	src/content/docs/fr/plugins/social-login/migrations/apple.mdx
#	src/content/docs/fr/plugins/social-login/migrations/facebook.mdx
#	src/content/docs/fr/plugins/social-login/migrations/google.mdx
#	src/content/docs/fr/plugins/social-login/migrations/v7.mdx
#	src/content/docs/fr/plugins/social-login/supabase/Apple/android.mdx
#	src/content/docs/fr/plugins/social-login/supabase/Apple/general.mdx
#	src/content/docs/fr/plugins/social-login/supabase/Apple/ios.mdx
#	src/content/docs/fr/plugins/social-login/supabase/Apple/web.mdx
#	src/content/docs/fr/plugins/social-login/supabase/google/android.mdx
#	src/content/docs/fr/plugins/social-login/supabase/google/general.mdx
#	src/content/docs/fr/plugins/social-login/supabase/google/ios.mdx
#	src/content/docs/fr/plugins/social-login/supabase/google/web.mdx
#	src/content/docs/fr/plugins/social-login/supabase/introduction.mdx
#	src/content/docs/fr/plugins/speech-recognition/getting-started.mdx
#	src/content/docs/fr/plugins/speech-recognition/index.mdx
#	src/content/docs/fr/plugins/speech-synthesis/getting-started.mdx
#	src/content/docs/fr/plugins/speech-synthesis/index.mdx
#	src/content/docs/fr/plugins/streamcall/getting-started.mdx
#	src/content/docs/fr/plugins/streamcall/index.mdx
#	src/content/docs/fr/plugins/textinteraction/getting-started.mdx
#	src/content/docs/fr/plugins/textinteraction/index.mdx
#	src/content/docs/fr/plugins/twilio-voice/getting-started.mdx
#	src/content/docs/fr/plugins/twilio-voice/index.mdx
#	src/content/docs/fr/plugins/updater/api.md
#	src/content/docs/fr/plugins/updater/cordova.md
#	src/content/docs/fr/plugins/updater/debugging.mdx
#	src/content/docs/fr/plugins/updater/events.mdx
#	src/content/docs/fr/plugins/updater/getting-started.mdx
#	src/content/docs/fr/plugins/updater/index.mdx
#	src/content/docs/fr/plugins/updater/known-issues.mdx
#	src/content/docs/fr/plugins/updater/local-dev/capacitor-updater.mdx
#	src/content/docs/fr/plugins/updater/local-dev/cli.mdx
#	src/content/docs/fr/plugins/updater/local-dev/contributing.mdx
#	src/content/docs/fr/plugins/updater/local-dev/getting-started.mdx
#	src/content/docs/fr/plugins/updater/notify-app-ready.mdx
#	src/content/docs/fr/plugins/updater/self-hosted/auto-update.mdx
#	src/content/docs/fr/plugins/updater/self-hosted/encrypted-bundles.mdx
#	src/content/docs/fr/plugins/updater/self-hosted/getting-started.mdx
#	src/content/docs/fr/plugins/updater/self-hosted/handling-channels.mdx
#	src/content/docs/fr/plugins/updater/self-hosted/handling-stats.mdx
#	src/content/docs/fr/plugins/updater/self-hosted/handling-updates.mdx
#	src/content/docs/fr/plugins/updater/self-hosted/manual-update.mdx
#	src/content/docs/fr/plugins/updater/settings.mdx
#	src/content/docs/fr/plugins/uploader/getting-started.mdx
#	src/content/docs/fr/plugins/uploader/index.mdx
#	src/content/docs/fr/plugins/video-player/getting-started.mdx
#	src/content/docs/fr/plugins/video-player/index.mdx
#	src/content/docs/fr/plugins/volume-buttons/getting-started.mdx
#	src/content/docs/fr/plugins/volume-buttons/index.mdx
#	src/content/docs/fr/plugins/wechat/getting-started.mdx
#	src/content/docs/fr/plugins/wechat/index.mdx
#	src/content/docs/fr/plugins/wifi/getting-started.mdx
#	src/content/docs/fr/plugins/wifi/index.mdx
#	src/content/docs/fr/plugins/youtube-player/getting-started.mdx
#	src/content/docs/fr/plugins/youtube-player/index.mdx
#	src/content/docs/fr/plugins/zip/getting-started.mdx
#	src/content/docs/fr/plugins/zip/index.mdx
#	src/content/docs/fr/public-api/api-keys.mdx
#	src/content/docs/fr/public-api/app.mdx
#	src/content/docs/fr/public-api/bundles.mdx
#	src/content/docs/fr/public-api/channels.mdx
#	src/content/docs/fr/public-api/devices.mdx
#	src/content/docs/fr/public-api/index.mdx
#	src/content/docs/fr/public-api/members.mdx
#	src/content/docs/fr/public-api/organizations.mdx
#	src/content/docs/fr/public-api/statistics.mdx
#	src/content/docs/fr/upgrade/from-appflow-to-capgo.mdx
#	src/content/docs/fr/upgrade/from-capawesome-to-capgo.mdx
#	src/content/docs/fr/upgrade/from-v2-to-v3.md
#	src/content/docs/fr/upgrade/from-v3-to-v4.md
#	src/content/docs/fr/upgrade/from-v4-to-v5.md
#	src/content/docs/fr/upgrade/from-v5-to-v6.md
#	src/content/docs/fr/upgrade/from-v6-to-v7.md
#	src/content/docs/fr/upgrade/from-v7-to-v8.md
#	src/content/docs/fr/webapp/api-keys.mdx
#	src/content/docs/fr/webapp/bundles.mdx
#	src/content/docs/fr/webapp/channels.mdx
#	src/content/docs/fr/webapp/devices.mdx
#	src/content/docs/fr/webapp/index.mdx
#	src/content/docs/fr/webapp/logs.mdx
#	src/content/docs/fr/webapp/main-app-page.mdx
#	src/content/docs/fr/webapp/main-page.mdx
#	src/content/docs/fr/webapp/mfa.mdx
#	src/content/docs/fr/webapp/organization-security.mdx
#	src/content/docs/fr/webapp/organization-system.mdx
#	src/content/docs/fr/webapp/payment.mdx
#	src/content/docs/fr/webapp/settings.mdx
@sonarqubecloud
Copy link

Copy link
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: 18

Note

Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.

Caution

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

⚠️ Outside diff range comments (2)
src/content/docs/fr/live-updates/features.mdx (2)

299-299: ⚠️ Potential issue | 🟡 Minor

Typo: l.integritél'intégrité

The period is used instead of an apostrophe in "vérifier l.integrité".

✏️ Proposed fix
-### Signature du code
-Vérifiez l.integrité du bundle avec des signatures cryptographiques pour prévenir toute altération.
+### Signature du code
+Vérifiez l'intégrité du bundle avec des signatures cryptographiques pour prévenir toute altération.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/fr/live-updates/features.mdx` at line 299, Fix the typo in
the sentence containing "Vérifiez l.integrité du bundle avec des signatures
cryptographiques pour prévenir toute altération." by replacing the period with
an apostrophe so it reads "Vérifiez l'intégrité du bundle..." — update the
string in the same content block (the sentence starting with "Vérifiez
l.integrité") to use the correct character.

325-325: ⚠️ Potential issue | 🟡 Minor

Missing space before **Emplacement :**

Line 325 runs the sentence and the location marker together: ...l'organisation.**Emplacement :**. Add a line break or space.

✏️ Proposed fix
-Exiger que tous les bundles soient chiffrés au niveau de l'organisation.**Emplacement :** Web Dashboard → Organization → Security
+Exiger que tous les bundles soient chiffrés au niveau de l'organisation.
+
+**Emplacement :** Web Dashboard → Organization → Security
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/fr/live-updates/features.mdx` at line 325, The sentence and
the location marker are run together; update the document content where the
string "Exiger que tous les bundles soient chiffrés au niveau de
l'organisation.**Emplacement :** Web Dashboard → Organization → Security"
appears so there is a space or a line break before "**Emplacement :**" (e.g.,
"...l'organisation. **Emplacement :** ..." or place "**Emplacement :** Web
Dashboard..." on the next line) to separate the sentence from the location
marker.
♻️ Duplicate comments (3)
src/content/docs/fr/docs/live-updates/china-configuration.mdx (1)

198-198: The same broken links (Support@capgo.Application, discord.capgo.Application) appear again in the troubleshooting section. Apply the same fix as described above.

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

In `@src/content/docs/fr/docs/live-updates/china-configuration.mdx` at line 198,
Replace the broken links in the troubleshooting sentence by updating the visible
and target link texts: change "Support@capgo.Application" to the correct support
email (e.g., "Support@capgo.app") and change "https://discord.capgo.Application"
(and the visible "discord.capgo.Application") to the correct Discord invite URL
(e.g., "https://discord.capgo.app"); update the mailto: and href values
accordingly so both the display text and link targets match the corrected
domains.
src/content/docs/fr/docs/getting-help.mdx (1)

11-11: Same domain normalization issue as noted in FAQ.

Also applies to: 42-42

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

In `@src/content/docs/fr/docs/getting-help.mdx` at line 11, The markdown link uses
a mis-cased domain ("https://discord.capgo.Application") causing inconsistent
normalization; update the URL to the correctly cased canonical domain (e.g.,
replace "https://discord.capgo.Application" with
"https://discord.capgo.application" or the canonical domain used elsewhere) and
make the same change for the duplicate occurrence of that URL in the file so all
links match.
src/content/docs/fr/docs/live-updates/custom-storage.mdx (1)

300-302: Same internal-link slug issue as noted earlier.

The links under “Suivant Steps” use paths with spaces/accents (e.g., /docs/live-Mises à jour/...) and are likely to 404 unless matching slugs exist. Please normalize alongside the other FR doc links.

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

In `@src/content/docs/fr/docs/live-updates/custom-storage.mdx` around lines 300 -
302, The three internal links in the "Suivant Steps" list (link texts "Canaux",
"Mise à jour Behavior", "CI/CD Integration") use paths with spaces/accents and
will 404; update their hrefs to the normalized slugs used across the FR
docs—e.g. replace "/docs/live-Mises à jour/Canaux/" and "/docs/live-Mises à
jour/Mise à jour-behavior/" with the normalized live-updates slugs (e.g.
"/docs/live-updates/channels/" and "/docs/live-updates/update-behavior/") and
ensure "/docs/getting-started/cicd-integration/" uses the exact existing slug
for CI/CD integration so all three internal links match the canonical FR doc
slugs.
🟡 Minor comments (10)
src/content/docs/fr/docs/live-updates/encryption.mdx-323-323 (1)

323-323: ⚠️ Potential issue | 🟡 Minor

Mixed British/American spelling: "Organisation" vs "organization"

"SOC 2 (Service Organisation Control 2)" uses British spelling while the rest of the file uses American English ("organization"). The official name of SOC 2 uses "Organization".

✏️ Proposed fix
-- SOC 2 (Service Organisation Control 2)
+- SOC 2 (Service Organization Control 2)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/fr/docs/live-updates/encryption.mdx` at line 323, Replace
the British spelling in the SOC 2 label so it matches American English used
elsewhere: update the string "SOC 2 (Service Organisation Control 2)" to "SOC 2
(Service Organization Control 2)" in the document (search for the exact phrase
"SOC 2 (Service Organisation Control 2)").
src/content/docs/fr/docs/live-updates/rollbacks.mdx-74-74 (1)

74-74: ⚠️ Potential issue | 🟡 Minor

Journal in is not a valid phrase

"Journal in to the [Capgo Tableau de bord]" — "Journal" is not a verb in English. This appears to be a mistranslation. Should be "Log in to the [Capgo Dashboard]" (or the French equivalent "Connectez-vous au [Tableau de bord Capgo]" once the content is properly translated).

✏️ Proposed fix (English)
-1. Journal in to the [Capgo Tableau de bord](https://Application.capgo.io).
+1. Log in to the [Capgo Dashboard](https://app.capgo.io).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/fr/docs/live-updates/rollbacks.mdx` at line 74, The phrase
"Journal in to the [Capgo Tableau de bord]" is incorrect English; replace that
exact string with the correct English text "Log in to the [Capgo Dashboard]" (or
if the file is intended to be French, use "Connectez-vous au [Tableau de bord
Capgo]") by updating the content in
src/content/docs/fr/docs/live-updates/rollbacks.mdx where the text "Journal in
to the [Capgo Tableau de bord]" appears.
src/content/docs/fr/docs/live-updates/differentials.mdx-35-38 (1)

35-38: ⚠️ Potential issue | 🟡 Minor

Missing code example for enabling differential updates

The section heading "Enabling Differential Mises à jour" ends with the sentence "simply use the --partial flag when uploading a new version:" but is immediately followed by the next section header with no code block. The example command is absent.

✏️ Proposed addition
 To enable differential updates for your Capgo app, simply use the `--partial` flag when uploading a new version:

+```shell
+npx `@capgo/cli`@latest bundle upload --partial
+```
+
 ## Enforcing Differential Mises à jour
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/fr/docs/live-updates/differentials.mdx` around lines 35 -
38, Add the missing example command for the "Enabling Differential Mises à jour"
section by inserting a fenced code block showing how to upload a new version
with the --partial flag; specifically add a shell code block containing the
suggested command (e.g., npx `@capgo/cli`@latest bundle upload --partial)
immediately after the sentence that mentions `--partial` so the heading
"Enabling Differential Mises à jour" includes an executable example before the
next section "Enforcing Differential Mises à jour".
src/content/docs/fr/docs/live-updates/integrations/github-actions.mdx-62-85 (1)

62-85: ⚠️ Potential issue | 🟡 Minor

Fix YAML indentation in the "Deploy to Capgo" step.

The run and env fields under the "Deploy to Capgo" step are incorrectly indented. This is the only issue; the action versions actions/checkout@v6 and actions/setup-node@v6 are correct and represent the current major versions as of January 2026.

Indentation fix
      - name: Deploy to Capgo
-       run: |
-         npm install -g `@capgo/cli`
-         npx `@capgo/cli` bundle upload --channel production
-        env:
-          CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }}
-       # For encrypted uploads, add: --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}"
+       run: |
+         npm install -g `@capgo/cli`
+         npx `@capgo/cli` bundle upload --channel production
+       env:
+         CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }}
+       # For encrypted uploads, add: --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/fr/docs/live-updates/integrations/github-actions.mdx` around
lines 62 - 85, The "Deploy to Capgo" GitHub Actions step has incorrect YAML
indentation for the run and env keys in the step titled "Deploy to Capgo"; fix
it by aligning the run: and env: keys at the same indentation level as name: and
uses:, ensure the shell block under run has its commands indented one level
deeper, and place CAPGO_TOKEN under env as a mapping (CAPGO_TOKEN: ${{
secrets.CAPGO_TOKEN }}); verify there are no extra leading spaces before run and
that the comment about --key-data-v2 remains properly indented under env or the
run block as appropriate.
src/content/docs/fr/docs/live-updates/integrations/index.mdx-78-80 (1)

78-80: ⚠️ Potential issue | 🟡 Minor

Invalid URL paths in Related Documentation section.

Same broken live-Mises à jour pattern applies here:

Broken Correct
/docs/live-Mises à jour/Canaux/ /docs/live-updates/channels/
/docs/live-Mises à jour/Chiffrement/ /docs/live-updates/encryption/
/docs/live-Mises à jour/Mise à jour-behavior/ /docs/live-updates/update-behavior/
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/fr/docs/live-updates/integrations/index.mdx` around lines 78
- 80, The Related Documentation links use incorrect localized paths; update the
hrefs for the link texts [Canaux], [Chiffrement], and [Mise à jour Behavior] so
they point to the correct English-slugged routes: replace '/docs/live-Mises à
jour/Canaux/' with '/docs/live-updates/channels/', '/docs/live-Mises à
jour/Chiffrement/' with '/docs/live-updates/encryption/', and '/docs/live-Mises
à jour/Mise à jour-behavior/' with '/docs/live-updates/update-behavior/' in the
index.mdx content.
src/content/docs/fr/docs/live-updates/integrations/azure-devops.mdx-136-136 (1)

136-136: ⚠️ Potential issue | 🟡 Minor

Invalid URL paths — spaces in path segments will cause 404s.

The links below contain raw French text with spaces in the URL path (live-Mises à jour, Mise à jour-behavior). URL paths cannot contain unencoded spaces, and even if percent-encoded they won't match any actual route since the underlying pages live under live-updates/.

Affected lines and their corrected equivalents:

Broken Correct
/docs/live-Mises à jour/Chiffrement/ /docs/live-updates/encryption/
/docs/live-Mises à jour/Chiffrement/#setting-up-Chiffrement /docs/live-updates/encryption/#setting-up-encryption
/docs/live-Mises à jour/Canaux/ /docs/live-updates/channels/
/docs/live-Mises à jour/custom-storage/ /docs/live-updates/custom-storage/
/docs/live-Mises à jour/Mise à jour-behavior/ /docs/live-updates/update-behavior/

The same pattern appears in gitlab-ci.mdx, bitbucket-pipeline.mdx, and index.mdx — all affected files need the same fix.

Also applies to: 138-138, 166-166, 579-582

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

In `@src/content/docs/fr/docs/live-updates/integrations/azure-devops.mdx` at line
136, Replace the invalid French URL path segments that contain spaces with the
correct English route segments in this file (and similarly in gitlab-ci.mdx,
bitbucket-pipeline.mdx, and index.mdx): update occurrences of "/docs/live-Mises
à jour/Chiffrement/" -> "/docs/live-updates/encryption/", "/docs/live-Mises à
jour/Chiffrement/#setting-up-Chiffrement" ->
"/docs/live-updates/encryption/#setting-up-encryption", "/docs/live-Mises à
jour/Canaux/" -> "/docs/live-updates/channels/", "/docs/live-Mises à
jour/custom-storage/" -> "/docs/live-updates/custom-storage/", and
"/docs/live-Mises à jour/Mise à jour-behavior/" ->
"/docs/live-updates/update-behavior/"; search for the exact broken strings in
azure-devops.mdx (lines near the shown instances) and replace them so links
point to the existing /docs/live-updates/* routes.
src/content/docs/fr/docs/live-updates/integrations/bitbucket-pipeline.mdx-468-489 (1)

468-489: ⚠️ Potential issue | 🟡 Minor

Misleading "Pipeline Validation" section — options.docker and size are runner settings, not validation.

The options.docker: true / size: 2x block configures Docker layer caching and doubles compute resources; it has nothing to do with catching configuration errors. The script body (echo "Pipeline validation successful") doesn't validate anything. This section could mislead users into adding unnecessary resource scaling under the impression it enables validation.

Consider either removing this section or accurately describing it as "configuring pipeline resources."

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

In `@src/content/docs/fr/docs/live-updates/integrations/bitbucket-pipeline.mdx`
around lines 468 - 489, The "Pipeline Validation" section is misleading because
options.docker and size are runner/resource settings (options.docker, size: 2x)
and the example step named "Validate Pipeline" only echoes text (script: echo
"Pipeline validation successful") without performing any validation; either
remove this section or rename it to "Configuring pipeline resources" and update
the explanatory text to describe that options.docker and size control Docker
layer caching and runner resources, and if you want an actual validation example
replace the placeholder step (name: Validate Pipeline / script) with a real
validation command or reference to Bitbucket's pipeline linting/validation tool.
src/content/docs/fr/docs/live-updates/integrations/bitbucket-pipeline.mdx-102-102 (1)

102-102: ⚠️ Potential issue | 🟡 Minor

Invalid URL paths — same broken-link pattern as other integration files.

Apply the same corrections as azure-devops.mdx and gitlab-ci.mdx:

Broken Correct
/docs/live-Mises à jour/Chiffrement/ /docs/live-updates/encryption/
/docs/live-Mises à jour/Chiffrement/#setting-up-Chiffrement /docs/live-updates/encryption/#setting-up-encryption
/docs/live-Mises à jour/Canaux/ /docs/live-updates/channels/
/docs/live-Mises à jour/custom-storage/ /docs/live-updates/custom-storage/
/docs/live-Mises à jour/Mise à jour-behavior/ /docs/live-updates/update-behavior/

Also applies to: 104-104, 133-133, 493-496

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

In `@src/content/docs/fr/docs/live-updates/integrations/bitbucket-pipeline.mdx` at
line 102, Replace the broken French-to-English mixed URL paths in
src/content/docs/fr/docs/live-updates/integrations/bitbucket-pipeline.mdx by
updating all occurrences of the listed broken paths to the correct English paths
(replace "/docs/live-Mises à jour/Chiffrement/" →
"/docs/live-updates/encryption/", "/docs/live-Mises à
jour/Chiffrement/#setting-up-Chiffrement" →
"/docs/live-updates/encryption/#setting-up-encryption", "/docs/live-Mises à
jour/Canaux/" → "/docs/live-updates/channels/", "/docs/live-Mises à
jour/custom-storage/" → "/docs/live-updates/custom-storage/", and
"/docs/live-Mises à jour/Mise à jour-behavior/" →
"/docs/live-updates/update-behavior/"); apply these replacements at the
instances mentioned in the review (including the link on the line containing
"Capgo's Chiffrement Fonctionnalité" and the additional occurrences around the
review-specified locations) so all internal links in the file point to the
correct /docs/live-updates/* targets.
src/content/docs/fr/docs/live-updates/integrations/gitlab-ci.mdx-117-117 (1)

117-117: ⚠️ Potential issue | 🟡 Minor

Invalid URL paths — same broken-link pattern as azure-devops.mdx.

All live-Mises à jour path segments are invalid. Apply the same corrections:

Broken Correct
/docs/live-Mises à jour/Chiffrement/ /docs/live-updates/encryption/
/docs/live-Mises à jour/Chiffrement/#setting-up-Chiffrement /docs/live-updates/encryption/#setting-up-encryption
/docs/live-Mises à jour/Canaux/ /docs/live-updates/channels/
/docs/live-Mises à jour/custom-storage/ /docs/live-updates/custom-storage/
/docs/live-Mises à jour/Mise à jour-behavior/ /docs/live-updates/update-behavior/

Also applies to: 119-119, 147-147, 421-424

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

In `@src/content/docs/fr/docs/live-updates/integrations/gitlab-ci.mdx` at line
117, Replace all occurrences of the broken URL path segments that use
"live-Mises à jour" in
src/content/docs/fr/docs/live-updates/integrations/gitlab-ci.mdx with the
corrected English paths; specifically swap "/docs/live-Mises à
jour/Chiffrement/" -> "/docs/live-updates/encryption/", "/docs/live-Mises à
jour/Chiffrement/#setting-up-Chiffrement" ->
"/docs/live-updates/encryption/#setting-up-encryption", "/docs/live-Mises à
jour/Canaux/" -> "/docs/live-updates/channels/", "/docs/live-Mises à
jour/custom-storage/" -> "/docs/live-updates/custom-storage/", and
"/docs/live-Mises à jour/Mise à jour-behavior/" ->
"/docs/live-updates/update-behavior/"; update the occurrences noted at lines
around 117, 119, 147, and the block at 421-424 accordingly so all links in
gitlab-ci.mdx point to the corrected paths.
src/content/docs/fr/docs/live-updates/integrations/index.mdx-73-73 (1)

73-73: ⚠️ Potential issue | 🟡 Minor

Typo in API keys URL — console.capgo.Application should be console.capgo.app.

The URL on Line 73 uses console.capgo.Application/apikeys instead of console.capgo.app/apikeys (the correct domain used in all three sibling integration files). This link would be dead for users trying to retrieve their API token.

🐛 Proposed fix
-- A Capgo API token from [console.capgo.Application/apikeys](https://console.capgo.Application/apikeys)
+- A Capgo API token from [console.capgo.app/apikeys](https://console.capgo.app/apikeys)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/fr/docs/live-updates/integrations/index.mdx` at line 73,
Replace the incorrect domain in the Capgo API token link: find the string
"console.capgo.Application/apikeys" in the document (the Capgo API token bullet)
and change it to "console.capgo.app/apikeys" so the URL matches the other
integration files and points to the live site.
🧹 Nitpick comments (1)
src/content/docs/fr/docs/live-updates/integrations/azure-devops.mdx (1)

11-11: Content is mixed Franglais rather than French throughout.

Section headings and body text mix French nouns into English sentences — e.g., "Déployer Fonctionnalité branches to Test Canaux", "Terminé Configuration with multiple environments", "Suivant Steps", "Ajouter Microsoft Teams notifications". This pattern appears in all four new integration files.

This was likely produced by Cursor's partial translation. Depending on the project's documentation strategy, these pages should either be fully translated into French or use consistent English. The current mixed state harms readability for French-speaking users.

Also applies to: 87-89, 134-134, 164-168, 467-467, 577-577

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

In `@src/content/docs/fr/docs/live-updates/integrations/azure-devops.mdx` at line
11, The document mixes French and English (Franglais) across headings and body —
e.g., phrases like "Mises à jour en direct", "Déployer Fonctionnalité branches
to Test Canaux", "Terminé Configuration", and "Suivant Steps" — so pick a single
language for the file (either fully French or fully English) and make the
translation consistent throughout; update all headings and body text in
src/content/docs/fr/docs/live-updates/integrations/azure-devops.mdx (and the
other flagged locations: lines referenced 87-89, 134, 164-168, 467, 577) to use
the chosen language, replacing mixed terms (Déployer, Fonctionnalité, Pousser,
Test, Déploiement, Ajouter Microsoft Teams notifications, etc.) with proper
translated equivalents, and run a pass to ensure terminology and tone match the
rest of the French docs.
🤖 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/content/docs/fr/docs/faq.mdx`:
- Around line 9-67: Replace every occurrence of the incorrect domain literal
"capgo.Application" with the canonical "capgo.app" and normalize internal doc
paths to lowercase slugs (e.g., change "/docs/FAQ/" and any links like
"https://capgo.Application/docs/FAQ/#..." to use "/docs/faq/" and
"https://capgo.app/docs/faq/..."); sweep the file for other mixed-case slugs
(examples in this diff: links containing "/docs/FAQ/", "/pricing/", "/privacy",
blog and CI guide URLs) and update them to their lowercase equivalents while
preserving the rest of each URL.

In `@src/content/docs/fr/docs/index.mdx`:
- Around line 10-16: Replace the non-canonical/case-mismatched route slugs in
this file: find and replace "/docs/getting-started/Démarrage rapide/" with
"/docs/getting-started/quickstart/", replace "/docs/FAQ/" with "/docs/faq/", and
replace "/Entreprise/" with "/enterprise/" so links use the canonical,
lowercased route slugs (check occurrences referenced by the link strings in this
file).

In `@src/content/docs/fr/docs/live-updates/breaking-changes.md`:
- Around line 1-203: The document has English body text mixed with French terms
while frontmatter sets locale: fr and title: "Breaking Changes"; translate the
entire body into fluent French (including headings, explanatory paragraphs,
notes like :::Conseil / :::Remarque / :::Avertissement, and inline text in
examples) keeping CLI commands, code blocks, and frontmatter unchanged, and
ensure terminology is consistent (e.g., replace "Application", "Canal", "Mises à
jour" uniformly) so the page served under the French locale is fully French and
coherent.
- Around line 34-40: Replace the invalid Starlight callout blocks by converting
each localized label to the recognized types: change every occurrence of
":::Conseil" to ":::tip[Conseil]", every ":::Remarque" to ":::note[Remarque]"
and every ":::Avertissement" to ":::caution[Avertissement]" so Starlight's
remarkAsides will render styled callouts; search for the literal strings
":::Conseil", ":::Remarque", and ":::Avertissement" in the document and update
both the opening and closing callout markers accordingly.

In `@src/content/docs/fr/docs/live-updates/channels.mdx`:
- Line 11: The French docs contain broken internal links: replace the
absolute/invalid paths and anchors in
src/content/docs/fr/docs/live-updates/channels.mdx — specifically the link
targets "/docs/getting-started/Démarrage rapide/",
"/docs/getting-started/Déployer/", "/docs/CLI/Commandes/#Désactiver-Mises à
jour-strategy" and "/blog/how-to-segment-Utilisateurs-by-plan-and-Canaux/" —
with correct relative paths that exist in the French site tree and normalize
them by removing accents and spaces and using lowercase hyphenated anchors
(e.g., use ".../demarrage-rapide/" or a relative
"../getting-started/demarrage-rapide.mdx" equivalent, ".../deployer/" ->
"deployer", change anchor "#désactiver-mises-à-jour-strategy" to
"#desactiver-mises-a-jour-strategy" or "#desactiver-mises-a-jour-strategie"
depending on target slug, and "/blog/..." to
"/blog/how-to-segment-users-by-plan-and-channels/" or the correct French slug);
update each link reference in the file (search for the exact link strings) so
they point to existing French doc pages and use URL-safe, lowercase hyphenated
anchors.

In `@src/content/docs/fr/docs/live-updates/china-configuration.mdx`:
- Around line 1-208: The page "Using Capgo in China" mixes English and French;
update the document content to be fully French by translating all English
strings (headings, instructional steps, sentences, code comments, Asides and
Steps text) into French while keeping technical identifiers intact (e.g.,
CapacitorConfig, capacitor.config.ts, CapacitorUpdater, updateUrl, statsUrl,
channelUrl, Aside, Steps); ensure code blocks remain unchanged except for
comments and surrounding prose, and remove mixed-language tokens like "Using
Capgo in China", "My App", "Test Appareil", "Terminé Exemple", "Performance
Considerations" etc., replacing them with correct French equivalents so the
entire page under the /fr route is consistently French.
- Line 188: Replace the incorrect domain suffix ".Application" in the two links
so they resolve correctly: change the email string "Support@capgo.Application"
to "Support@capgo.app" and the Discord URL "https://discord.capgo.Application"
to "https://discord.capgo.app" (these appear in the sentence referring to
multi-region Déploiement strategies and the Discord Communauté); ensure the
markdown link targets use the corrected values and keep the visible French text
unchanged.
- Line 143: Update the broken internal link in the Markdown content: replace the
invalid URL "/docs/live-Mises à jour/Mise à jour-behavior/" with the correct
English path "/docs/live-updates/update-behavior/" in
src/content/docs/fr/docs/live-updates/china-configuration.mdx so the anchor
points to the existing "update-behavior" page; keep the visible link text the
same or translate as appropriate but ensure the href uses the ASCII English
path.
- Around line 206-208: The three Next Steps links contain French words in their
URL paths ("/docs/live-Mises à jour/Mise à jour-behavior/", "/docs/live-Mises à
jour/Canaux/", "/docs/live-Mises à jour/Chiffrement/") which will 404; update
those hrefs in src/content/docs/fr/docs/live-updates/china-configuration.mdx to
the correct English/normalized paths (e.g.
"/docs/live-updates/update-behavior/", "/docs/live-updates/channels/",
"/docs/live-updates/encryption/") so the links point to the existing pages and
not the localized, invalid path fragments.

In `@src/content/docs/fr/docs/live-updates/compliance.mdx`:
- Around line 88-98: The SOC 2 Certification bullet contains a broken link and
there's a typo in the AI-Powered Code Review bullet: replace the URL
"trust.capgo.Application" with "trust.capgo.app" in the "**SOC 2
Certification**" line so the trust portal opens correctly, and change "Tirer
request" to "Pull request" in the "**AI-Powered Code Review**" bullet to fix the
typo; verify both edits in the lines containing "**SOC 2 Certification**" and
"**AI-Powered Code Review**" to ensure the link and text are updated.

In `@src/content/docs/fr/docs/live-updates/differentials.mdx`:
- Around line 1-81: The page mixes English and French — translate all remaining
English content into natural French while keeping technical tokens and UI
artifacts intact: convert prose like "Capgo's Live Mise à jour system",
paragraphs under "How Differential Mises à jour Work", "Enabling/Enforcing
Differential Mises à jour", troubleshooting bullets, Step list items, image alt
text "Bundle type", and the final explanatory paragraphs into French; preserve
CLI flags and code blocks (`--partial`, `--partial-only`, `npx `@capgo/cli`@latest
bundle upload --partial-only`) and keep imported components (Aside, Steps) and
manifest/manifest-related terms consistent, then proofread for consistent
capitalization of terms like Appareil, Application, Télécharger, Vérifier,
Journaux so the document is fully French and coherent.

In `@src/content/docs/fr/docs/live-updates/encryption.mdx`:
- Around line 1-344: The page at encryption.mdx is written mostly in English
with scattered French words (e.g., "Chiffrement", "Appareil", "Développement"),
causing language mismatch for locale: fr; translate the entire document body
(headings, paragraphs, captions, step descriptions, warnings, code comments and
UI text inside <Aside> and <Steps> blocks) into fluent French so the content is
fully French, keep existing structure and component usage (Aside, Steps,
headings like "Aperçu", "Comment fonctionne le chiffrement", "Méthodes de
chiffrement", "Paramètres", "Dépannage"), and ensure any CLI examples, option
names and file names remain accurate and unchanged where they must be (e.g., npx
`@capgo/cli` commands, .capgo_key_v2 filenames) while converting surrounding
explanatory text to French.
- Around line 342-344: Update the two broken internal links in the "Next Steps"
list in src/content/docs/fr/docs/live-updates/encryption.mdx: replace the French
path segments "/docs/live-Mises à jour/custom-storage/" and "/docs/live-Mises à
jour/Canaux/" with the correct English URL paths
"/docs/live-updates/custom-storage/" and "/docs/live-updates/channels/"
respectively (preserve the visible link text "Custom Storage" and
"Canaux"/"Channels" as appropriate), and verify the third CI/CD link remains
unchanged.
- Line 96: The internal link in the French page uses a French slug "/docs/Mise à
niveau/Chiffrement-v1-to-v2/" which causes a 404; update the href to the English
slug for the upgrade docs (e.g. "/docs/upgrade/Chiffrement-v1-to-v2/" or the
exact English path your site uses) wherever the string appears in
src/content/docs/fr/docs/live-updates/encryption.mdx so the link resolves
correctly; ensure you replace only the path portion and keep surrounding
text/markdown intact.

In `@src/content/docs/fr/docs/live-updates/integrations/index.mdx`:
- Around line 17-38: The LinkCard components use hardcoded absolute hrefs (e.g.,
in the LinkCard entries for "Azure DevOps", "GitLab CI/CD", "GitHub Actions",
"Bitbucket Pipelines") which will always point to the default locale; update
those href props to be locale-aware by either prefixing each path with "/fr/"
for this French page (e.g., "/fr/docs/live-updates/integrations/azure-devops/")
or by generating the URL with the Astro/i18n helper (e.g., use
getRelativeLocaleUrl(...) when building the href passed into each LinkCard) so
links resolve to the correct locale at runtime.

In `@src/content/docs/fr/docs/live-updates/rollbacks.mdx`:
- Around line 1-162: The document has French frontmatter (locale: fr, title:
Restaurations) but the body is mostly English with scattered French tokens;
replace the entire article body with a proper French translation so the content
matches locale: fr, preserving technical identifiers and code samples (e.g.,
notifyAppReady(), CapacitorUpdater) unchanged; translate UI labels, Steps items,
Asides, image alt text (e.g., "Restauration UI interface", "Canal management
Options") and all prose into fluent French, remove AI-artifact mixed-language
phrases (e.g., "Retour", "Construction", "Appareils") by using correct French
equivalents consistently, and keep the structure and examples intact.

In `@src/content/docs/fr/docs/live-updates/update-behavior.mdx`:
- Around line 1-216: The page is marked locale: fr but the body is mostly
English; translate the entire document content into French, keeping the
frontmatter locale: fr and the existing headings (e.g., "Mise à jour Behavior",
"Default Mise à jour Flow") and components (<Steps>, <Aside>) intact; ensure all
UI terms and examples (like `setMultiDelay`, `directUpdate`, `autoSplashscreen`,
`keepUrlPathAfterReload`, code blocks, and links) are presented in French and
fix consistent terminology (use "Mise à jour"/"Mises à jour" uniformly), and
update any in-text links or captions (e.g., Delta Updates / differentials) to
their French equivalents so the /fr page is fully French.
- Line 112: The internal link in
src/content/docs/fr/docs/live-updates/update-behavior.mdx points to an invalid
path with French characters and spaces; update the href in the "Learn more in
the [Delta Mises à jour Documentation](...)" link to the correct canonical path
/fr/docs/live-updates/differentials/ (keep the visible link text as-is if
desired) so the link resolves to fr/docs/live-updates/differentials.mdx.

---

Outside diff comments:
In `@src/content/docs/fr/live-updates/features.mdx`:
- Line 299: Fix the typo in the sentence containing "Vérifiez l.integrité du
bundle avec des signatures cryptographiques pour prévenir toute altération." by
replacing the period with an apostrophe so it reads "Vérifiez l'intégrité du
bundle..." — update the string in the same content block (the sentence starting
with "Vérifiez l.integrité") to use the correct character.
- Line 325: The sentence and the location marker are run together; update the
document content where the string "Exiger que tous les bundles soient chiffrés
au niveau de l'organisation.**Emplacement :** Web Dashboard → Organization →
Security" appears so there is a space or a line break before "**Emplacement :**"
(e.g., "...l'organisation. **Emplacement :** ..." or place "**Emplacement :**
Web Dashboard..." on the next line) to separate the sentence from the location
marker.

---

Minor comments:
In `@src/content/docs/fr/docs/live-updates/differentials.mdx`:
- Around line 35-38: Add the missing example command for the "Enabling
Differential Mises à jour" section by inserting a fenced code block showing how
to upload a new version with the --partial flag; specifically add a shell code
block containing the suggested command (e.g., npx `@capgo/cli`@latest bundle
upload --partial) immediately after the sentence that mentions `--partial` so
the heading "Enabling Differential Mises à jour" includes an executable example
before the next section "Enforcing Differential Mises à jour".

In `@src/content/docs/fr/docs/live-updates/encryption.mdx`:
- Line 323: Replace the British spelling in the SOC 2 label so it matches
American English used elsewhere: update the string "SOC 2 (Service Organisation
Control 2)" to "SOC 2 (Service Organization Control 2)" in the document (search
for the exact phrase "SOC 2 (Service Organisation Control 2)").

In `@src/content/docs/fr/docs/live-updates/integrations/azure-devops.mdx`:
- Line 136: Replace the invalid French URL path segments that contain spaces
with the correct English route segments in this file (and similarly in
gitlab-ci.mdx, bitbucket-pipeline.mdx, and index.mdx): update occurrences of
"/docs/live-Mises à jour/Chiffrement/" -> "/docs/live-updates/encryption/",
"/docs/live-Mises à jour/Chiffrement/#setting-up-Chiffrement" ->
"/docs/live-updates/encryption/#setting-up-encryption", "/docs/live-Mises à
jour/Canaux/" -> "/docs/live-updates/channels/", "/docs/live-Mises à
jour/custom-storage/" -> "/docs/live-updates/custom-storage/", and
"/docs/live-Mises à jour/Mise à jour-behavior/" ->
"/docs/live-updates/update-behavior/"; search for the exact broken strings in
azure-devops.mdx (lines near the shown instances) and replace them so links
point to the existing /docs/live-updates/* routes.

In `@src/content/docs/fr/docs/live-updates/integrations/bitbucket-pipeline.mdx`:
- Around line 468-489: The "Pipeline Validation" section is misleading because
options.docker and size are runner/resource settings (options.docker, size: 2x)
and the example step named "Validate Pipeline" only echoes text (script: echo
"Pipeline validation successful") without performing any validation; either
remove this section or rename it to "Configuring pipeline resources" and update
the explanatory text to describe that options.docker and size control Docker
layer caching and runner resources, and if you want an actual validation example
replace the placeholder step (name: Validate Pipeline / script) with a real
validation command or reference to Bitbucket's pipeline linting/validation tool.
- Line 102: Replace the broken French-to-English mixed URL paths in
src/content/docs/fr/docs/live-updates/integrations/bitbucket-pipeline.mdx by
updating all occurrences of the listed broken paths to the correct English paths
(replace "/docs/live-Mises à jour/Chiffrement/" →
"/docs/live-updates/encryption/", "/docs/live-Mises à
jour/Chiffrement/#setting-up-Chiffrement" →
"/docs/live-updates/encryption/#setting-up-encryption", "/docs/live-Mises à
jour/Canaux/" → "/docs/live-updates/channels/", "/docs/live-Mises à
jour/custom-storage/" → "/docs/live-updates/custom-storage/", and
"/docs/live-Mises à jour/Mise à jour-behavior/" →
"/docs/live-updates/update-behavior/"); apply these replacements at the
instances mentioned in the review (including the link on the line containing
"Capgo's Chiffrement Fonctionnalité" and the additional occurrences around the
review-specified locations) so all internal links in the file point to the
correct /docs/live-updates/* targets.

In `@src/content/docs/fr/docs/live-updates/integrations/github-actions.mdx`:
- Around line 62-85: The "Deploy to Capgo" GitHub Actions step has incorrect
YAML indentation for the run and env keys in the step titled "Deploy to Capgo";
fix it by aligning the run: and env: keys at the same indentation level as name:
and uses:, ensure the shell block under run has its commands indented one level
deeper, and place CAPGO_TOKEN under env as a mapping (CAPGO_TOKEN: ${{
secrets.CAPGO_TOKEN }}); verify there are no extra leading spaces before run and
that the comment about --key-data-v2 remains properly indented under env or the
run block as appropriate.

In `@src/content/docs/fr/docs/live-updates/integrations/gitlab-ci.mdx`:
- Line 117: Replace all occurrences of the broken URL path segments that use
"live-Mises à jour" in
src/content/docs/fr/docs/live-updates/integrations/gitlab-ci.mdx with the
corrected English paths; specifically swap "/docs/live-Mises à
jour/Chiffrement/" -> "/docs/live-updates/encryption/", "/docs/live-Mises à
jour/Chiffrement/#setting-up-Chiffrement" ->
"/docs/live-updates/encryption/#setting-up-encryption", "/docs/live-Mises à
jour/Canaux/" -> "/docs/live-updates/channels/", "/docs/live-Mises à
jour/custom-storage/" -> "/docs/live-updates/custom-storage/", and
"/docs/live-Mises à jour/Mise à jour-behavior/" ->
"/docs/live-updates/update-behavior/"; update the occurrences noted at lines
around 117, 119, 147, and the block at 421-424 accordingly so all links in
gitlab-ci.mdx point to the corrected paths.

In `@src/content/docs/fr/docs/live-updates/integrations/index.mdx`:
- Around line 78-80: The Related Documentation links use incorrect localized
paths; update the hrefs for the link texts [Canaux], [Chiffrement], and [Mise à
jour Behavior] so they point to the correct English-slugged routes: replace
'/docs/live-Mises à jour/Canaux/' with '/docs/live-updates/channels/',
'/docs/live-Mises à jour/Chiffrement/' with '/docs/live-updates/encryption/',
and '/docs/live-Mises à jour/Mise à jour-behavior/' with
'/docs/live-updates/update-behavior/' in the index.mdx content.
- Line 73: Replace the incorrect domain in the Capgo API token link: find the
string "console.capgo.Application/apikeys" in the document (the Capgo API token
bullet) and change it to "console.capgo.app/apikeys" so the URL matches the
other integration files and points to the live site.

In `@src/content/docs/fr/docs/live-updates/rollbacks.mdx`:
- Line 74: The phrase "Journal in to the [Capgo Tableau de bord]" is incorrect
English; replace that exact string with the correct English text "Log in to the
[Capgo Dashboard]" (or if the file is intended to be French, use "Connectez-vous
au [Tableau de bord Capgo]") by updating the content in
src/content/docs/fr/docs/live-updates/rollbacks.mdx where the text "Journal in
to the [Capgo Tableau de bord]" appears.

---

Duplicate comments:
In `@src/content/docs/fr/docs/getting-help.mdx`:
- Line 11: The markdown link uses a mis-cased domain
("https://discord.capgo.Application") causing inconsistent normalization; update
the URL to the correctly cased canonical domain (e.g., replace
"https://discord.capgo.Application" with "https://discord.capgo.application" or
the canonical domain used elsewhere) and make the same change for the duplicate
occurrence of that URL in the file so all links match.

In `@src/content/docs/fr/docs/live-updates/china-configuration.mdx`:
- Line 198: Replace the broken links in the troubleshooting sentence by updating
the visible and target link texts: change "Support@capgo.Application" to the
correct support email (e.g., "Support@capgo.app") and change
"https://discord.capgo.Application" (and the visible
"discord.capgo.Application") to the correct Discord invite URL (e.g.,
"https://discord.capgo.app"); update the mailto: and href values accordingly so
both the display text and link targets match the corrected domains.

In `@src/content/docs/fr/docs/live-updates/custom-storage.mdx`:
- Around line 300-302: The three internal links in the "Suivant Steps" list
(link texts "Canaux", "Mise à jour Behavior", "CI/CD Integration") use paths
with spaces/accents and will 404; update their hrefs to the normalized slugs
used across the FR docs—e.g. replace "/docs/live-Mises à jour/Canaux/" and
"/docs/live-Mises à jour/Mise à jour-behavior/" with the normalized live-updates
slugs (e.g. "/docs/live-updates/channels/" and
"/docs/live-updates/update-behavior/") and ensure
"/docs/getting-started/cicd-integration/" uses the exact existing slug for CI/CD
integration so all three internal links match the canonical FR doc slugs.

---

Nitpick comments:
In `@src/content/docs/fr/docs/live-updates/integrations/azure-devops.mdx`:
- Line 11: The document mixes French and English (Franglais) across headings and
body — e.g., phrases like "Mises à jour en direct", "Déployer Fonctionnalité
branches to Test Canaux", "Terminé Configuration", and "Suivant Steps" — so pick
a single language for the file (either fully French or fully English) and make
the translation consistent throughout; update all headings and body text in
src/content/docs/fr/docs/live-updates/integrations/azure-devops.mdx (and the
other flagged locations: lines referenced 87-89, 134, 164-168, 467, 577) to use
the chosen language, replacing mixed terms (Déployer, Fonctionnalité, Pousser,
Test, Déploiement, Ajouter Microsoft Teams notifications, etc.) with proper
translated equivalents, and run a pass to ensure terminology and tone match the
rest of the French docs.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 971be10 and f313373.

📒 Files selected for processing (20)
  • src/content/docs/fr/docs/faq.mdx
  • src/content/docs/fr/docs/getting-help.mdx
  • src/content/docs/fr/docs/how-to.mdx
  • src/content/docs/fr/docs/index.mdx
  • src/content/docs/fr/docs/live-updates/breaking-changes.md
  • src/content/docs/fr/docs/live-updates/channels.mdx
  • src/content/docs/fr/docs/live-updates/china-configuration.mdx
  • src/content/docs/fr/docs/live-updates/compliance.mdx
  • src/content/docs/fr/docs/live-updates/custom-storage.mdx
  • src/content/docs/fr/docs/live-updates/differentials.mdx
  • src/content/docs/fr/docs/live-updates/encryption.mdx
  • src/content/docs/fr/docs/live-updates/integrations/azure-devops.mdx
  • src/content/docs/fr/docs/live-updates/integrations/bitbucket-pipeline.mdx
  • src/content/docs/fr/docs/live-updates/integrations/github-actions.mdx
  • src/content/docs/fr/docs/live-updates/integrations/gitlab-ci.mdx
  • src/content/docs/fr/docs/live-updates/integrations/index.mdx
  • src/content/docs/fr/docs/live-updates/rollbacks.mdx
  • src/content/docs/fr/docs/live-updates/update-behavior.mdx
  • src/content/docs/fr/live-updates/features.mdx
  • src/content/docs/fr/live-updates/update-types.mdx

Comment on lines +9 to +67
If you have questions not answered here, please ask! Both filing an Problème or asking on [Discord](https://discord.capgo.Application) work.

### What is "code Pousser"?[](https://capgo.Application/docs/#what-is-code-Pousser "Direct link to What is \"code Pousser\"?")

Code Pousser, also referred to as "over the air Mises à jour" (OTA) is a cloud service enabling Capacitor developers to Déployer Mises à jour to their apps in Production. Capgo currently works on Android and iOS and will eventually work everywhere Capacitor works.

"Code Pousser" is a Référence to the name of a Déployer Fonctionnalité used by the React Natif Communauté from [Microsoft](https://appcenter.ms/) and [Expo](https://expo.dev/), neither of which Support Capacitor.

### What is the difference between a Bundle and a Libération?[](https://capgo.Application/docs/FAQ/#what-is-the-difference-between-a-Bundle-and-a-Libération "Direct link to What is the difference between a Bundle and a Libération?")

We use the term "Libération" to mean preparing a binary for the Application stores. In order to later generate a Bundle Capgo needs to know the exact binary that was shipped to the Application stores.

We use the term "bundle" to mean a patch that can be applied to a release to update it to new code. The `npx @capgo/cli@latest bundle upload` command is used to generate a bundle from your new local code which is then shipped to your users.

### What is the roadmap?[](https://capgo.Application/docs/FAQ/#what-is-the-roadmap "Direct link to What is the roadmap?")

Our project boards are also public and found at: [https://github.com/orgs/Cap-go/projects](https://github.com/orgs/Cap-go/projects/)

Our team also operates in the public, so you can see what we're working on at any time. We're happy to answer any questions you have À propos our roadmap or priorities via Github issues or [Discord](https://discord.capgo.Application).

### Can I use Capgo with my team?[](https://capgo.Application/docs/FAQ/#can-i-use-capgo-with-my-team "Direct link to Can I use Capgo with my team?")

Yes! All plans Support unlimited developers. We only limit Application metrics (MAU, storage and bandwidth) to each Organisation.

See [Teams](https://capgo.Application/pricing/) for more Information.

### Does Capgo store my source code?[](https://capgo.Application/docs/FAQ/#does-capgo-store-my-source-code "Direct link to Does Capgo store my source code?")

No. Capgo servers never see your source code. When you run `npx @capgo/cli@latest bundle upload`, Capgo stores a zip file of the minified/compiled code - the same code that a browser would receive, not your source code.

For additional Sécurité, you have two Options:
- **End-to-End Chiffrement**: Encrypt your Bundle before uploading, making it impossible for Capgo to read or modify the contents
- **External URL Upload**: Store the bundle on your own server and only provide Capgo with the download link with the option `--external <url>`

Voir aussi our privacy policy: [https://capgo.Application/privacy](https://capgo.Application/privacy/)

### Can I use Capgo from my CI system?[](https://capgo.Application/docs/FAQ/#can-i-use-capgo-from-my-ci-system "Direct link to Can I use Capgo from my CI system?")

Yes. Capgo is intended to be used from CI systems. We've published a Guide for [Android and Github Actions](https://capgo.Application/blog/automatic-capacitor-Android-Construction-github-action/) and [iOS](https://capgo.Application/blog/automatic-capacitor-iOS-Construction-github-action/), and for [GitLab](https://capgo.Application/blog/Configuration-ci-and-cd-gitlab/). Other CI systems should be similar.

Please don't hesitate to reach out over GitHub issues or Discord if you encounter any issues.

### How does this relate to Firebase Remote Config or Launch Darkly?[](https://capgo.Application/docs/FAQ/#how-does-this-relate-to-firebase-remote-config-or-launch-darkly "Direct link to How does this relate to Firebase Remote Config or Launch Darkly?")

Code Pousser allows adding Nouveau code / replacing code on the Appareil. Firebase Remote Config and Launch Darkly are both Configuration systems. They allow you to change the Configuration of your Application without having to ship a Nouveau Version. They are not intended to replace code.

### How big of a dependency footprint does this Ajouter?[](https://capgo.Application/docs/FAQ/#how-big-of-a-dependency-footprint-does-this-Ajouter "Direct link to How big of a dependency footprint does this Ajouter?")

I haven't measured recently, but I expect the code Pousser library to Ajouter less than one megabyte to Capacitor apps. We know of ways we can make this smaller when that becomes a priority. If size is a blocker for you, please let us know!

### Does Capgo work on the iOS 18.4 Simulator?[](https://capgo.Application/docs/FAQ/#does-capgo-work-on-the-iOS-18-4-simulator "Direct link to Does Capgo work on the iOS 18.4 Simulator?")

No. Due to an upstream Problème affecting the iOS 18.4 Simulator, Capgo does not run reliably there. Please Test on a real Appareil or use a different iOS simulator Version.

See details in the React Natif Problème: [facebook/react-Natif#50510](https://github.com/facebook/react-Natif/issues/50510)

### Does code Pousser work with large applications?[](https://capgo.Application/docs/FAQ/#does-code-Pousser-work-with-large-applications "Direct link to Does code Pousser work with large applications?")

Yes. There is no limit on the size of the Application that can be updated with code Pousser. As noted [below](https://capgo.Application/docs/FAQ/#what-types-of-changes-does-capgo-code-Pousser-Support), Capgo can change any JS code in your Application regardless of size.
Copy link
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:

# Search for domain patterns across the entire codebase
rg "capgo\.(app|Application)" --no-heading -c | head -20

Repository: Cap-go/website

Length of output: 665


🏁 Script executed:

# Check what domains are used in the English docs for comparison
fd -e "mdx" -e "md" . src/content/docs/en | head -5 | xargs rg "capgo\.(app|Application)" -n | head -20

Repository: Cap-go/website

Length of output: 2479


🏁 Script executed:

# Look for the actual file to examine its links
cat -n src/content/docs/fr/docs/faq.mdx | head -70

Repository: Cap-go/website

Length of output: 6636


🏁 Script executed:

# Check if there are any configuration or constants that define the canonical domain
rg "capgo\.(app|Application)" -A2 -B2 src/ | head -40

Repository: Cap-go/website

Length of output: 2403


🏁 Script executed:

# Search for path patterns in French docs
rg "docs/[a-zA-Z]" src/content/docs/fr --no-heading | head -20

Repository: Cap-go/website

Length of output: 2921


Replace all instances of capgo.Application with capgo.app and normalize internal paths to lowercase.

This file contains broken domain references (capgo.Application instead of capgo.app) and inconsistent path casing (e.g., /docs/FAQ/ instead of /docs/faq/). The canonical domain across the codebase is capgo.app, and internal documentation paths consistently use lowercase slugs. Replace all occurrences in this file and sweep across the other affected line ranges (117-121, 161-170, 222-233, 317-333).

🧰 Tools
🪛 LanguageTool

[grammar] ~15-~15: Ensure spelling is correct
Context: ...e Capacitor works. "Code Pousser" is a Référence to the name of a Déployer Fonctionnalit...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~19-~19: Ensure spelling is correct
Context: ...le and a Libération?") We use the term "Libération" to mean preparing a binary for the Appl...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~19-~19: Consider a more concise word here.
Context: ...ng a binary for the Application stores. In order to later generate a Bundle Capgo needs to ...

(IN_ORDER_TO_PREMIUM)


[uncategorized] ~27-~27: The official name of this software platform is spelled with a capital “H”.
Context: ... À propos our roadmap or priorities via Github issues or [Discord](https://discord.cap...

(GITHUB)


[uncategorized] ~47-~47: The official name of this software platform is spelled with a capital “H”.
Context: ...e've published a Guide for [Android and Github Actions](https://capgo.Application/blog...

(GITHUB)


[grammar] ~61-~61: Ensure spelling is correct
Context: ....4 Simulator?") No. Due to an upstream Problème affecting the iOS 18.4 Simulator, Capgo...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

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

In `@src/content/docs/fr/docs/faq.mdx` around lines 9 - 67, Replace every
occurrence of the incorrect domain literal "capgo.Application" with the
canonical "capgo.app" and normalize internal doc paths to lowercase slugs (e.g.,
change "/docs/FAQ/" and any links like "https://capgo.Application/docs/FAQ/#..."
to use "/docs/faq/" and "https://capgo.app/docs/faq/..."); sweep the file for
other mixed-case slugs (examples in this diff: links containing "/docs/FAQ/",
"/pricing/", "/privacy", blog and CI guide URLs) and update them to their
lowercase equivalents while preserving the rest of each URL.

Comment on lines +10 to +16
- text: Commencer avec Capgo Cloud
link: /docs/getting-started/Démarrage rapide/
icon: right-arrow
variant: primary
- text: Browse All Plugins
link: /docs/plugins/
icon: puzzle
Copy link
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:

cat -n src/content/docs/fr/docs/index.mdx

Repository: Cap-go/website

Length of output: 3618


🏁 Script executed:

# Find documentation files related to quickstart, FAQ, Enterprise
fd -t f "quickstart|démarrage|faq|entreprise" --ignore-case src/content/docs/

Repository: Cap-go/website

Length of output: 875


🏁 Script executed:

# List the docs directory structure to understand the slug organization
find src/content/docs -type d -name "*getting-started*" -o -type d -name "*FAQ*" -o -type d -name "*Entreprise*" | head -20

Repository: Cap-go/website

Length of output: 418


🏁 Script executed:

# Search for enterprise/Entreprise files and paths
fd -t f "enterprise|entreprise" --ignore-case src/content/ | grep -E "\.(mdx|md|astro)$"

Repository: Cap-go/website

Length of output: 40


🏁 Script executed:

# Check if there's a dedicated enterprise page or if it's just a link
find src/content -type f -name "*enterprise*" -o -type f -name "*Entreprise*"

Repository: Cap-go/website

Length of output: 40


🏁 Script executed:

# Look at the actual route structure by examining Astro config or similar
find . -maxdepth 2 -name "astro.config*" -o -name "tsconfig*" | head -5

Repository: Cap-go/website

Length of output: 92


🏁 Script executed:

# Check Astro config for route structure
head -50 astro.config.mjs

Repository: Cap-go/website

Length of output: 2177


🏁 Script executed:

# Check if there are locale-specific route mappings or redirects
rg "Démarrage|démarrage|quickstart" src/content/docs/fr/docs/index.mdx -B 2 -A 2

Repository: Cap-go/website

Length of output: 1049


🏁 Script executed:

# Look for any config files that might define route mappings or i18n
find src -name "*.ts" -o -name "*.js" | xargs grep -l "Démarrage\|quickstart\|faq\|FAQ" | head -10

Repository: Cap-go/website

Length of output: 75


🏁 Script executed:

# Verify the exact slug/path structure for French docs
ls -la src/content/docs/fr/docs/getting-started/ 2>/dev/null || ls -la src/content/docs/fr/getting-started/

Repository: Cap-go/website

Length of output: 643


🏁 Script executed:

# Check if faq.mdx exists and what the actual route would be
ls -la src/content/docs/fr/docs/faq.mdx src/content/docs/fr/faq.mdx 2>/dev/null || echo "Checking alternate paths..."
rg "slug:|route:" src/content/docs/fr/docs/faq.mdx src/content/docs/fr/faq.mdx 2>/dev/null

Repository: Cap-go/website

Length of output: 218


🏁 Script executed:

# Search for any enterprise page or routing
rg "enterprise|Entreprise" src/content --type mdx --type ts --type js | head -20

Repository: Cap-go/website

Length of output: 85


🏁 Script executed:

# Check if there are any starlight route mappings or slug definitions
rg "slug:|id:|" src/content/docs/fr/getting-started/quickstart.mdx src/content/docs/fr/docs/faq.mdx src/content/docs/fr/faq.mdx | head -20

Repository: Cap-go/website

Length of output: 2020


🏁 Script executed:

# Check the starlight configuration for route settings
rg "sidebar|routes|locales" astro.config.mjs | head -20

Repository: Cap-go/website

Length of output: 307


🏁 Script executed:

# See if there's a /enterprise/ page anywhere
find src -type f \( -name "*.mdx" -o -name "*.astro" \) | xargs grep -l "/enterprise" | head -10

Repository: Cap-go/website

Length of output: 408


🏁 Script executed:

# Look at src/pages to understand the route structure
ls -la src/pages/ 2>/dev/null | head -20

Repository: Cap-go/website

Length of output: 1264


🏁 Script executed:

# Verify the actual routes by checking how Starlight handles slugs
head -20 src/content/docs/fr/getting-started/quickstart.mdx

Repository: Cap-go/website

Length of output: 583


🏁 Script executed:

# Check if there are any custom slug definitions in the faq files
head -20 src/content/docs/fr/faq.mdx

Repository: Cap-go/website

Length of output: 1460


🏁 Script executed:

# Verify the enterprise page route
head -20 src/pages/enterprise.astro

Repository: Cap-go/website

Length of output: 1045


Fix mixed slug formats: use /docs/getting-started/quickstart/, /docs/faq/, and /enterprise/.

The page uses non-canonical slugs for three key links. Lines 11, 35, and 66 reference /docs/getting-started/Démarrage rapide/ (French title instead of filename slug), line 68 uses /docs/FAQ/ (uppercase), and line 69 uses /Entreprise/ (capitalized French). These will 404 on case-sensitive servers. Use the actual route slugs: /docs/getting-started/quickstart/, /docs/faq/, and /enterprise/.

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

In `@src/content/docs/fr/docs/index.mdx` around lines 10 - 16, Replace the
non-canonical/case-mismatched route slugs in this file: find and replace
"/docs/getting-started/Démarrage rapide/" with
"/docs/getting-started/quickstart/", replace "/docs/FAQ/" with "/docs/faq/", and
replace "/Entreprise/" with "/enterprise/" so links use the canonical,
lowercased route slugs (check occurrences referenced by the link strings in this
file).

Comment on lines +1 to +203
---
locale: fr
title: "Breaking Changes"
description: "How to handle breaking changes with versioned Canaux"
sidebar:
order: 6
---

This Documentation explains how to handle breaking changes in your Application using versioned Canaux. This approach allows you to maintain different versions of your Application while ensuring Utilisateurs receive compatible Mises à jour.

## Exemple Scenario

Let's say you have:
- Application Version 1.2.3 (old Version) - uses Production Canal
- Application Version 2.0.0 (Nouveau Version with breaking changes) - uses v2 Canal
- Live Mise à jour 1.2.4 (compatible with 1.2.3)
- Live Mise à jour 2.0.1 (compatible with 2.0.0)

## Strategy: Always Use defaultChannel for Major Versions

**Recommended approach:** Set a `defaultChannel` for every major version. This ensures you can always push updates to specific user groups without relying on dynamic channel assignment.

```ts
// Version 1.x releases
defaultChannel: 'v1'

// Version 2.x releases
defaultChannel: 'v2'

// Version 3.x releases (future)
defaultChannel: 'v3'
```

:::Conseil
**Benefits of this approach:**
- **Always have control** over which Utilisateurs receive Mises à jour
- **No dynamic Canal switching** needed in your Application code
- **Clear separation** between different Application versions
- **Flexibility** to Pousser Mises à jour to any specific Version group
:::

## 1. Créer Canal for Nouveau Version

```bash
# Create channel for version 2.x
npx @capgo/cli channel create v2
```

## 2. Mise à jour Capacitor Config for Version 2.0.0

Mise à jour your Capacitor config before Construction Version 2.0.0 for the Application Store:

```ts
// capacitor.config.ts
import { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
appId: 'com.example.app',
appName: 'Example App',
plugins: {
CapacitorUpdater: {
// ... other options
defaultChannel: 'v2' // All 2.0.0 users will use v2 channel
}
}
};

export default config;
```

:::Remarque
**For version 1.x:** If you didn't set a `defaultChannel` initially, version 1.x users are on the `production` channel. For future major versions, always set a specific channel like `v3`, `v4`, etc.
:::

## 3. Manage Separate Code Branches

Créer separate git branches to maintain compatibility between Application versions:

```bash
# Create and maintain a branch for version 1.x updates
git checkout -b v1-maintenance
git push origin v1-maintenance

# Your main branch continues with version 2.x development
git checkout main
```

:::Avertissement
**Critical:** Never push JavaScript bundles to older apps that expect native code/APIs they don't have. Always build updates from the appropriate branch:
- **v1-maintenance branch**: For Mises à jour to 1.x apps (Production Canal)
- **main branch**: For Mises à jour to 2.x apps (v2 Canal)
:::

## 4. Télécharger Bundles to Respective Canaux

```bash
# For 1.x updates: Build from v1-maintenance branch
git checkout v1-maintenance
# Make your 1.x compatible changes here
npx @capgo/cli bundle upload --channel production

# For 2.x updates: Build from main branch
git checkout main
# Make your 2.x changes here
npx @capgo/cli bundle upload --channel v2
```

## 5. Activer Self-Assignment

```bash
# Allow apps to self-assign to v2 channel
npx @capgo/cli channel set v2 --self-assign
```

## 6. Déployer to Application Store

Construction and Déployer Version 2.0.0 to the Application Store. All Utilisateurs who Télécharger this Version (whether Nouveau Utilisateurs or existing Utilisateurs upgrading) will automatically use the v2 Canal because it's configured in the Application Bundle.

:::Remarque
**No code changes needed!** Since `defaultChannel: 'v2'` is bundled with the app store version, all users downloading version 2.0.0 will automatically use the correct channel.
:::

## Scaling to Future Versions

When you Libération Version 3.0.0 with more breaking changes:

```bash
# Create channel for version 3.x
npx @capgo/cli channel create v3
```

```ts
// capacitor.config.ts for version 3.0.0
const config: CapacitorConfig = {
// ...
plugins: {
CapacitorUpdater: {
defaultChannel: 'v3' // Version 3.x users
}
}
};
```

Now you can Pousser Mises à jour to any Version:
- `production` channel → Version 1.x users
- `v2` channel → Version 2.x users
- `v3` channel → Version 3.x users

## 7. Cleanup (After Migration)

Once all Utilisateurs have migrated to Version 2.x (count 3-4 months):

1. Remove `defaultChannel` from your Capacitor config
2. Supprimer the v2 Canal:

```bash
npx @capgo/cli channel delete v2
```

3. Supprimer the v1-maintenance branch:

```bash
git branch -d v1-maintenance
git push origin --delete v1-maintenance
```

:::Conseil
This approach ensures Utilisateurs only receive Mises à jour compatible with their Application Version
:::

:::Avertissement
Always Test Mises à jour thoroughly in each Canal before Déploiement
:::

:::Remarque
You can safely Supprimer the v2 Canal in Capgo even if some Utilisateurs still have the Canal override. They will automatically receive Mises à jour from the Production Canal instead.
:::

## Maintaining Version 1.x Mises à jour

To send Mises à jour compatible with Version 1.x:

1. Switch to the v1-maintenance branch:
```bash
git checkout v1-maintenance
```

2. Make your changes and commit:
```bash
# Make 1.x compatible changes
git add .
git commit -m "Fix for v1.x"
git push origin v1-maintenance
```

3. Construction and Télécharger to Production Canal:
```bash
npx @capgo/cli bundle upload --channel production
```

:::Conseil
Keep your v1-maintenance branch up to date with bug fixes that are compatible with Version 1.x, but never merge breaking changes from main
:::
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Content is not French — same English/French language mixing issue

Like the other new files in this PR, the body is English prose with French terms scattered throughout. The page is served to French users under /fr/docs/live-updates/breaking-changes/.

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

In `@src/content/docs/fr/docs/live-updates/breaking-changes.md` around lines 1 -
203, The document has English body text mixed with French terms while
frontmatter sets locale: fr and title: "Breaking Changes"; translate the entire
body into fluent French (including headings, explanatory paragraphs, notes like
:::Conseil / :::Remarque / :::Avertissement, and inline text in examples)
keeping CLI commands, code blocks, and frontmatter unchanged, and ensure
terminology is consistent (e.g., replace "Application", "Canal", "Mises à jour"
uniformly) so the page served under the French locale is fully French and
coherent.

Comment on lines +34 to +40
:::Conseil
**Benefits of this approach:**
- **Always have control** over which Utilisateurs receive Mises à jour
- **No dynamic Canal switching** needed in your Application code
- **Clear separation** between different Application versions
- **Flexibility** to Pousser Mises à jour to any specific Version group
:::
Copy link
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:

# Check if file exists and examine lines 34-40
if [ -f "src/content/docs/fr/docs/live-updates/breaking-changes.md" ]; then
  echo "=== File exists. Checking line count ==="
  wc -l src/content/docs/fr/docs/live-updates/breaking-changes.md
  echo ""
  echo "=== Lines 34-40 ==="
  sed -n '34,40p' src/content/docs/fr/docs/live-updates/breaking-changes.md
else
  echo "File not found"
fi

Repository: Cap-go/website

Length of output: 497


🏁 Script executed:

# Count all occurrences of each invalid callout type
echo "=== Counting callout blocks ==="
echo ":::Conseil blocks:"
rg ':::Conseil' src/content/docs/fr/docs/live-updates/breaking-changes.md | wc -l
echo ""
echo ":::Remarque blocks:"
rg ':::Remarque' src/content/docs/fr/docs/live-updates/breaking-changes.md | wc -l
echo ""
echo ":::Avertissement blocks:"
rg ':::Avertissement' src/content/docs/fr/docs/live-updates/breaking-changes.md | wc -l
echo ""
echo "=== Total invalid callout blocks ==="
rg ':::(Conseil|Remarque|Avertissement)' src/content/docs/fr/docs/live-updates/breaking-changes.md | wc -l

Repository: Cap-go/website

Length of output: 201


🏁 Script executed:

# List all callout blocks to see context
echo "=== All callout block instances ==="
rg -n ':::(Conseil|Remarque|Avertissement)' src/content/docs/fr/docs/live-updates/breaking-changes.md

Repository: Cap-go/website

Length of output: 225


🌐 Web query:

Starlight callout valid types remarkAsides note tip caution danger

💡 Result:

In Astro Starlight, the built-in callouts (a.k.a. asides/admonitions, implemented via the <Aside> component and the ::: Markdown syntax powered by Starlight’s aside support/“remark asides”) support these valid type values:

  • note
  • tip
  • caution
  • danger [1]

These are also the only allowed values for the <Aside type="..."> prop. [1]

Sources: [1]


Fix invalid Starlight callout syntax — eight callout blocks will not render with styling

Starlight's remarkAsides plugin only recognizes note, tip, caution, and danger as valid callout types. This file contains eight invalid callout blocks using :::Conseil, :::Remarque, and :::Avertissement (lines 34, 71, 88, 119, 167, 171, 175, 201), which will not render as styled callouts.

Use the correct syntax for French-titled callouts: :::tip[Conseil], :::note[Remarque], :::caution[Avertissement].

✏️ Proposed fix (all occurrences)
-:::Conseil
+:::tip[Conseil]
-:::Remarque
+:::note[Remarque]
-:::Avertissement
+:::caution[Avertissement]
📝 Committable suggestion

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

Suggested change
:::Conseil
**Benefits of this approach:**
- **Always have control** over which Utilisateurs receive Mises à jour
- **No dynamic Canal switching** needed in your Application code
- **Clear separation** between different Application versions
- **Flexibility** to Pousser Mises à jour to any specific Version group
:::
:::tip[Conseil]
**Benefits of this approach:**
- **Always have control** over which Utilisateurs receive Mises à jour
- **No dynamic Canal switching** needed in your Application code
- **Clear separation** between different Application versions
- **Flexibility** to Pousser Mises à jour to any specific Version group
:::
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/fr/docs/live-updates/breaking-changes.md` around lines 34 -
40, Replace the invalid Starlight callout blocks by converting each localized
label to the recognized types: change every occurrence of ":::Conseil" to
":::tip[Conseil]", every ":::Remarque" to ":::note[Remarque]" and every
":::Avertissement" to ":::caution[Avertissement]" so Starlight's remarkAsides
will render styled callouts; search for the literal strings ":::Conseil",
":::Remarque", and ":::Avertissement" in the document and update both the
opening and closing callout markers accordingly.


import { Aside, Steps } from '@astrojs/starlight/components';

A Live Mise à jour Canal points to a specific JS Bundle Construction of your Application that will be shared with any Appareils configured to listen to that Canal for Mises à jour. When you [Installer the Capgo Mises à jour en direct SDK](/docs/getting-started/Démarrage rapide/) in your Application, any Natif binary configured to that Canal will Vérifier for Disponible Mises à jour whenever the Application is launched. You can change the Construction a Canal points to at any time and can also roll Retour to Précédent builds if needed.
Copy link
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

# First, explore the French docs directory structure
echo "=== FR Docs Directory Structure ==="
fd -e md -e mdx . src/content/docs/fr/docs 2>/dev/null | head -30

echo -e "\n=== All links in channels.mdx ==="
# Extract all links from the file
cat src/content/docs/fr/docs/live-updates/channels.mdx 2>/dev/null | grep -oE '\[([^\]]+)\]\(([^)]+)\)' | head -20

echo -e "\n=== Specific link URLs in channels.mdx ==="
# More targeted extraction
rg -o '\[([^\]]+)\]\(([^)]+)\)' -r '$2' src/content/docs/fr/docs/live-updates/channels.mdx 2>/dev/null | sort -u

echo -e "\n=== Check for referenced documents ==="
# Check if the getting-started docs exist
ls -la src/content/docs/fr/docs/getting-started/ 2>/dev/null || echo "getting-started dir not found"
ls -la src/content/docs/fr/docs/CLI/ 2>/dev/null || echo "CLI dir not found"

Repository: Cap-go/website

Length of output: 1450


🏁 Script executed:

#!/bin/bash

# Get file structure to understand slugs better
echo "=== File structure with index files ==="
find src/content/docs/fr/docs -type f \( -name "*.md" -o -name "*.mdx" \) | sort

echo -e "\n=== Check for Démarrage rapide files ==="
find src/content/docs/fr/docs -type f -iname "*démarrage*" -o -iname "*demarrage*"

echo -e "\n=== Check canonical slugs by examining frontmatter ==="
# Check a few files to see how they define slugs
fd -e mdx . src/content/docs/fr/docs/getting-started 2>/dev/null | head -5 | xargs cat 2>/dev/null | head -50

Repository: Cap-go/website

Length of output: 1179


🏁 Script executed:

#!/bin/bash

echo "=== English docs structure (getting-started) ==="
ls -la src/content/docs/en/docs/getting-started/ 2>/dev/null || echo "Not found in en/docs"
find src/content/docs/en/docs/getting-started -type f 2>/dev/null | sort

echo -e "\n=== Check root docs structure ==="
ls -la src/content/docs/getting-started/ 2>/dev/null || echo "Not found at root"
find src/content/docs/getting-started -type f 2>/dev/null | sort

echo -e "\n=== Full content of channels.mdx to see all links ==="
cat src/content/docs/fr/docs/live-updates/channels.mdx

Repository: Cap-go/website

Length of output: 15211


Fix broken internal links—directories don't exist in French docs structure.

Several internal links reference non-existent paths with problematic characters:

  • /docs/getting-started/Démarrage rapide/ (line 11)
  • /docs/getting-started/Déployer/ (line 187-198)
  • /docs/CLI/Commandes/#Désactiver-Mises à jour-strategy (line 121-122)
  • /blog/how-to-segment-Utilisateurs-by-plan-and-Canaux/ (line 288)

The getting-started and CLI directories don't exist in the French docs structure. Additionally, links with spaces and accents will fail URL resolution. Replace with working relative links or correct paths, and normalize anchors (remove spaces, use lowercase with hyphens).

🧰 Tools
🪛 LanguageTool

[grammar] ~11-~11: Ensure spelling is correct
Context: ...rrage rapide/) in your Application, any Natif binary configured to that Canal will Vé...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~11-~11: Ensure spelling is correct
Context: ...at any time and can also roll Retour to Précédent builds if needed. ## How a Appareil pi...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

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

In `@src/content/docs/fr/docs/live-updates/channels.mdx` at line 11, The French
docs contain broken internal links: replace the absolute/invalid paths and
anchors in src/content/docs/fr/docs/live-updates/channels.mdx — specifically the
link targets "/docs/getting-started/Démarrage rapide/",
"/docs/getting-started/Déployer/", "/docs/CLI/Commandes/#Désactiver-Mises à
jour-strategy" and "/blog/how-to-segment-Utilisateurs-by-plan-and-Canaux/" —
with correct relative paths that exist in the French site tree and normalize
them by removing accents and spaces and using lowercase hyphenated anchors
(e.g., use ".../demarrage-rapide/" or a relative
"../getting-started/demarrage-rapide.mdx" equivalent, ".../deployer/" ->
"deployer", change anchor "#désactiver-mises-à-jour-strategy" to
"#desactiver-mises-a-jour-strategy" or "#desactiver-mises-a-jour-strategie"
depending on target slug, and "/blog/..." to
"/blog/how-to-segment-users-by-plan-and-channels/" or the correct French slug);
update each link reference in the file (search for the exact link strings) so
they point to existing French doc pages and use URL-safe, lowercase hyphenated
anchors.

Comment on lines +342 to +344
- Learn À propos [Custom Storage](/docs/live-Mises à jour/custom-storage/) to use Chiffrement with your own infrastructure
- Explore [Canaux](/docs/live-Mises à jour/Canaux/) to manage Chiffré Bundles across environments
- Set up [CI/CD Integration](/docs/getting-started/cicd-integration/) to automate Chiffré deployments
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Two broken internal links in "Suivant Steps" — French words in URL paths will 404

/docs/live-Mises à jour/custom-storage/ and /docs/live-Mises à jour/Canaux/ embed French words in the URL path and will 404.

✏️ Proposed fix
-- Learn À propos [Custom Storage](/docs/live-Mises à jour/custom-storage/) to use Chiffrement with your own infrastructure
-- Explore [Canaux](/docs/live-Mises à jour/Canaux/) to manage Chiffré Bundles across environments
+- Learn about [Custom Storage](/fr/docs/live-updates/custom-storage/) to use encryption with your own infrastructure
+- Explore [Channels](/fr/docs/live-updates/channels/) to manage encrypted bundles across environments
📝 Committable suggestion

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

Suggested change
- Learn À propos [Custom Storage](/docs/live-Mises à jour/custom-storage/) to use Chiffrement with your own infrastructure
- Explore [Canaux](/docs/live-Mises à jour/Canaux/) to manage Chiffré Bundles across environments
- Set up [CI/CD Integration](/docs/getting-started/cicd-integration/) to automate Chiffré deployments
- Learn about [Custom Storage](/fr/docs/live-updates/custom-storage/) to use encryption with your own infrastructure
- Explore [Channels](/fr/docs/live-updates/channels/) to manage encrypted bundles across environments
- Set up [CI/CD Integration](/docs/getting-started/cicd-integration/) to automate Chiffré deployments
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/fr/docs/live-updates/encryption.mdx` around lines 342 - 344,
Update the two broken internal links in the "Next Steps" list in
src/content/docs/fr/docs/live-updates/encryption.mdx: replace the French path
segments "/docs/live-Mises à jour/custom-storage/" and "/docs/live-Mises à
jour/Canaux/" with the correct English URL paths
"/docs/live-updates/custom-storage/" and "/docs/live-updates/channels/"
respectively (preserve the visible link text "Custom Storage" and
"Canaux"/"Channels" as appropriate), and verify the third CI/CD link remains
unchanged.

Comment on lines +17 to +38
<CardGrid>
<LinkCard
title="Azure DevOps"
description="Integrate with Azure DevOps Pipelines for automated builds, Test, and Déploiement workflows."
href="/docs/live-updates/integrations/azure-devops/"
/>
<LinkCard
title="GitLab CI/CD"
description="Set up GitLab CI/CD pipelines to automatically Déployer your Application Mises à jour with comprehensive environment management."
href="/docs/live-updates/integrations/gitlab-ci/"
/>
<LinkCard
title="GitHub Actions"
description="Use GitHub Actions for powerful automation with multi-Canal deployments and environment protection."
href="/docs/live-updates/integrations/github-actions/"
/>
<LinkCard
title="Bitbucket Pipelines"
description="Déployer with Bitbucket Pipelines using simple or advanced configurations for multiple environments."
href="/docs/live-updates/integrations/bitbucket-pipeline/"
/>
</CardGrid>
Copy link
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

🌐 Web query:

Astro Starlight absolute href links multilingual locale routing

💡 Result:

For Astro + Starlight multilingual sites, don’t hardcode href="/..." (it won’t automatically pick up the current locale, and Astro’s base also won’t “rewrite” your anchor hrefs for you). Instead, generate locale-aware URLs.

1) Use Astro’s i18n URL helpers (recommended)

Astro provides helpers that build the correct localized URL and take your routing settings into account (including base, trailingSlash, build.format, and site).[1]

---
import { getRelativeLocaleUrl, getAbsoluteLocaleUrl } from 'astro:i18n';

const locale = Astro.currentLocale ?? 'en';
---

<!-- Locale-aware internal link (relative path) -->
<a href={getRelativeLocaleUrl(locale, 'getting-started')}>Getting started</a>

<!-- Absolute URL (requires `site` in astro.config) -->
<a href={getAbsoluteLocaleUrl(locale, 'getting-started')}>Getting started</a>
  • getRelativeLocaleUrl(locale, path) → localized path (e.g. /zh-cn/about).[2]
  • getAbsoluteLocaleUrl(locale, path) → localized absolute URL when site is set; otherwise it falls back to a relative URL.[1]

2) In Starlight, use built-in route data when you just need “home for this locale”

Starlight exposes siteTitleHref, which already includes the current locale (e.g. /en/, /zh-cn/).[3]

3) About “absolute href links” + base

If your concern is deploy subpaths (Astro base), note that base does not automatically modify plain <a href="/"> in output (it’s a common gotcha).[4] Using the i18n helpers above is the most robust fix because they’re designed to generate correct URLs under your configured routing/base settings.[1]

Sources: Astro i18n API (astro:i18n).[1] Starlight i18n guide (uses Astro.currentLocale + getRelativeLocaleUrl).[2] Starlight route data (siteTitleHref).[3] Astro issue discussing base not rewriting anchor href.[4]


🏁 Script executed:

# First, let's check if LinkCard is a custom component and how it handles hrefs
find . -type f \( -name "*.astro" -o -name "*.tsx" -o -name "*.ts" -o -name "*.jsx" -o -name "*.js" \) | xargs grep -l "LinkCard" | head -20

Repository: Cap-go/website

Length of output: 40


🏁 Script executed:

# Check the Starlight/Astro configuration for locale settings
find . -type f \( -name "astro.config.*" -o -name "tsconfig.json" \) | head -10

Repository: Cap-go/website

Length of output: 92


🏁 Script executed:

# Look at other French docs pages to see how they handle internal links
find . -path "*/fr/docs/*" -name "*.mdx" -o -name "*.md" | head -10

Repository: Cap-go/website

Length of output: 392


🏁 Script executed:

# Search for LinkCard usage patterns in the codebase to understand how paths are handled
rg "LinkCard" -A 3 -B 1 --type astro --type typescript --type markdown | head -50

Repository: Cap-go/website

Length of output: 87


🏁 Script executed:

cat -n astro.config.mjs

Repository: Cap-go/website

Length of output: 50370


🏁 Script executed:

# Search for LinkCard component in all file types
rg "export.*LinkCard|const LinkCard|function LinkCard" -t ts -t tsx -t js -t jsx

Repository: Cap-go/website

Length of output: 85


🏁 Script executed:

# Look at one of the French docs pages to see actual link patterns
cat -n src/content/docs/fr/docs/live-updates/integrations/index.mdx | head -50

Repository: Cap-go/website

Length of output: 2479


🏁 Script executed:

# Search for how other French pages handle internal links
rg "href=" src/content/docs/fr/ -A 1 | head -30

Repository: Cap-go/website

Length of output: 2060


🏁 Script executed:

# Check if the target pages exist in French
find src/content/docs -path "*fr*" -name "azure-devops.mdx" -o -path "*fr*" -name "gitlab-ci.mdx" -o -path "*fr*" -name "github-actions.mdx"

Repository: Cap-go/website

Length of output: 448


🏁 Script executed:

# Look for any locale routing middleware or path handlers
rg "getRelativeLocaleUrl|getAbsoluteLocaleUrl|locale.*href|href.*locale" -t ts -t js -t astro --max-count 20

Repository: Cap-go/website

Length of output: 87


🏁 Script executed:

# Check locale service to understand how locales are configured
cat -n src/services/locale.ts 2>/dev/null || cat -n src/services/locale.js 2>/dev/null || find src -name "locale.*" -type f

Repository: Cap-go/website

Length of output: 668


🌐 Web query:

astro-i18n-aut automatic locale routing absolute paths how does it work

💡 Result:

astro-i18n-aut’s “automatic locale routing” works by generating additional localized versions of your existing src/pages/*.astro routes, without you manually duplicating files into src/pages/es/..., src/pages/fr/..., etc. Concretely, it duplicates your src/pages folder into temporary locale-specific folders and uses Astro’s injectRoute as a workaround to make Astro build the extra routes. It also uses middleware to handle things like redirecting the default-locale-prefixed URLs. [1], [2]

What routes get created

Given a page like src/pages/about.astro, it will render as: /about/, /es/about/, /fr/about/ etc. [1]

If redirectDefaultLocale is enabled, the library will redirect (example with default locale en): /en/about//about/. [1]

“Absolute paths” and localized URLs (what you need to do)

astro-i18n-aut does not rewrite your links. So if you hardcode an absolute internal link like:

<a href="/about/">About</a>

…then on /es/... that link still points to the default-locale page (/about/), not /es/about/.

To generate the correct locale-prefixed path, use the helpers the package provides:

  • getLocale(url) returns the current locale key (e.g. "/es/about""es", "/about""en"). [4]
  • getLocaleUrl(url, locale) rewrites a URL to the chosen locale (e.g. getLocaleUrl("/about","es")"/es/about"; getLocaleUrl("/es/about","en")"/about"). [3]

So, typical usage in a page:

import { getLocale, getLocaleUrl } from "astro-i18n-aut";

const locale = getLocale(Astro.url);
const aboutInFrench = getLocaleUrl(Astro.url, "fr");

If you meant “absolute URL” (with domain)

If you need a fully qualified absolute URL (e.g. https://example.com/fr/about), Astro’s built-in i18n helper getAbsoluteLocaleUrl() does that when site is set in astro.config. [5]

Sources: GitHub README (routing + redirects) [1], npm README (how it works internally) [2], type definitions for getLocaleUrl/getLocale behavior [3], [4], Astro i18n API for absolute URLs [5].


🏁 Script executed:

# Check if there are English versions of these integration pages
find src/content/docs -name "azure-devops.mdx" -o -name "gitlab-ci.mdx" -o -name "github-actions.mdx" -o -name "bitbucket-pipeline.mdx"

Repository: Cap-go/website

Length of output: 1727


🏁 Script executed:

# Look at the English version of the integrations index to see how it handles links
find src/content/docs/en -path "*live-updates/integrations*" -name "*.mdx" | head -5

Repository: Cap-go/website

Length of output: 1727


🌐 Web query:

Starlight multilingual content routing absolute href links locale-aware MDX

💡 Result:

1) Multilingual content routing in Starlight

Configure locales in astro.config.mjs and place per-locale docs under matching folders in src/content/docs/<locale>/... (or use a root locale to avoid a URL prefix for one language). Starlight will then generate locale-prefixed routes and handle fallback behavior. [1]

2) Making absolute/leading-slash links locale-aware (especially in MDX)

A hard-coded MD/MDX link like:

[About](/about)

will always point to /about (no locale prefix). To generate locale-aware URLs, build the URL at runtime using Astro’s i18n helpers (which respect your i18n routing settings), e.g. getRelativeLocaleUrl() for site-relative links, or getAbsoluteLocaleUrl() if site is configured. [1][2]

In Starlight MDX, do it via a small component:

---
// src/components/LocaleLink.astro
import { getRelativeLocaleUrl } from 'astro:i18n';

const { to, ...attrs } = Astro.props;
const locale = Astro.currentLocale ?? 'en';
---
<a href={getRelativeLocaleUrl(locale, to)} {...attrs}><slot /></a>

Then in MDX:

import LocaleLink from '../../components/LocaleLink.astro';

<LocaleLink to="about">About</LocaleLink>

If you truly need fully-qualified URLs (e.g. for OG tags/emails), swap in getAbsoluteLocaleUrl() (it returns absolute URLs when site is set; otherwise it falls back to relative). [2]

3) Navigation-generated links

If you use Starlight’s sidebar config with slug entries, Starlight will generate localized internal links appropriately (and can translate labels/titles per locale). [3]

Sources: Starlight i18n guide [1], Astro astro:i18n URL helpers reference [2], Starlight sidebar i18n behavior [3].


Update href values to be locale-aware or include the /fr/ prefix for French content.

The hardcoded absolute paths (e.g., /docs/live-updates/integrations/azure-devops/) will resolve to the default English versions regardless of the current page's locale. In a Starlight multilingual setup using astro-i18n-aut, neither the integration library nor the LinkCard component automatically prepend the locale to absolute links.

To fix: either prefix paths with /fr/ (e.g., /fr/docs/live-updates/integrations/azure-devops/), or use Astro's getRelativeLocaleUrl() helper to generate locale-aware URLs at runtime.

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

In `@src/content/docs/fr/docs/live-updates/integrations/index.mdx` around lines 17
- 38, The LinkCard components use hardcoded absolute hrefs (e.g., in the
LinkCard entries for "Azure DevOps", "GitLab CI/CD", "GitHub Actions",
"Bitbucket Pipelines") which will always point to the default locale; update
those href props to be locale-aware by either prefixing each path with "/fr/"
for this French page (e.g., "/fr/docs/live-updates/integrations/azure-devops/")
or by generating the URL with the Astro/i18n helper (e.g., use
getRelativeLocaleUrl(...) when building the href passed into each LinkCard) so
links resolve to the correct locale at runtime.

Comment on lines +1 to +162
---
locale: fr
title: Restaurations
description: "Learn how to manage Restaurations in Capgo, allowing you to revert to Précédent Application versions seamlessly when needed."
sidebar:
order: 5
---

import { Aside, Steps } from '@astrojs/starlight/components';

While Capgo's Mises à jour en direct allow you to quickly deliver improvements and fixes to your Utilisateurs, there may be situations where you need to roll Retour to a Précédent Version of your Application. Perhaps a Nouveau Mise à jour introduced an unexpected critical Problème, or maybe you want to revert a specific change while you work on a fix.

Capgo provides several ways to manage a Canal's builds and control the Version of your Application that Utilisateurs receive, including both manual Restauration Options and automatic safety mechanisms.

## Automatic Restauration Protection

Capgo includes a built-in safety mechanism to protect your users from broken updates. If a JavaScript error occurs before the `notifyAppReady()` method is called, the plugin will automatically roll back to the previous working version.

### How Automatic Restauration Works

When a new update is downloaded and applied, Capgo expects your app to call `notifyAppReady()` within a configurable timeframe to confirm that the update loaded successfully. This method signals that:

- The JavaScript Bundle loaded without critical errors
- Your Application's core functionality is working
- The Mise à jour is safe to keep

If `notifyAppReady()` is not called due to a JavaScript crash or critical error, Capgo will:

1. Detect that the Mise à jour Échoué to Initialiser properly
2. Automatically revert to the Précédent working Bundle
3. Mark the problematic Mise à jour as Échoué to prevent it from being applied again

<Aside type="tip">
Make sure to call `notifyAppReady()` in your app's initialization code after your core components have loaded successfully. This ensures the automatic rollback protection works as intended.
</Aside>

```javascript
import { CapacitorUpdater } from '@capgo/capacitor-updater'

// Call this after your app has successfully initialized
await CapacitorUpdater.notifyAppReady()
```

This automatic protection helps ensure that even if you accidentally Pousser a broken Mise à jour, your Utilisateurs won't be stuck with a non-functional Application.

### Configuring the Timeout

You can configure how long Capgo waits for `notifyAppReady()` to be called by setting the `appReadyTimeout` in your Capacitor configuration:

```json
{
"plugins": {
"CapacitorUpdater": {
"appReadyTimeout": 10000
}
}
}
```

The `appReadyTimeout` value is specified in milliseconds. The default timeout is typically 10 seconds, but you can adjust this based on your app's initialization requirements. If your app takes longer to load due to complex initialization processes, you may want to increase this value.

## Rolling Retour to a Précédent Bundle

Every time you Télécharger a Nouveau Construction and assign it to a Canal, Capgo keeps a history of those builds. If you need to revert a specific Mise à jour, you can select one of these Précédent builds to redeploy to the Canal.

![Restauration UI interface](/rollback_ui.webp)

The primary way to roll Retour is through the Restauration interface, which is located in the 4th tab (History) when viewing a Canal in the Capgo Tableau de bord. This tab provides a comprehensive view of all Disponible builds for the Canal, allowing you to easily select and revert to any Précédent Version.

To roll Retour using the History tab:

<Steps>

1. Journal in to the [Capgo Tableau de bord](https://Application.capgo.io).

2. Navigate to the "Canaux" section.

3. Click the name of the Canal you want to roll Retour.

4. Go to the 4th tab (History) in the Canal view.

5. Find the Construction you want to revert to in the Construction history.

6. Select that Construction to make it the Actif Construction for the Canal.

7. Confirm that you want to roll Retour to this Construction.

</Steps>

### Alternative Method: Using the Crown Icon

As a second way, you can also roll Retour directly from the first tab by clicking the crown icon Suivant to any Construction in the Canal's Construction history:

<Steps>

1. In the first tab of the Canal view, find the Construction you want to revert to.
2. Click the crown icon Suivant to that Construction to make it the Actif Construction for the Canal. ![Canal management Options](/select_bundle.webp)
3. Confirm that you want to roll Retour to this Construction.

</Steps>

<Aside type="note">
Rolling Retour to a Précédent Construction only affects the selected Canal. If you have multiple Canaux (e.g. Production, Staging, etc.), you'll need to repeat the Restauration process for each affected Canal.
</Aside>

After rolling Retour, Appareils configured to listen to the updated Canal will receive the Précédent Construction the Suivant time they Vérifier for an Mise à jour. The rolled-Retour Construction will be treated as a Nouveau Mise à jour, so the usual Mise à jour flow and conditions apply.

## Unlinking a Canal

If you want to temporarily halt Mises à jour on a Canal while you investigate an Problème, you can unlink the Canal from its current Construction.

To unlink a Canal:

<Steps>
1. Navigate to the Canal in the Capgo Tableau de bord.

2. Click the "Unlink" button Suivant to the current Construction.

3. Confirm that you want to unlink the Canal.

</Steps>

Once a Canal is unlinked, it will not distribute any Nouveau Mises à jour. Appareils configured to that Canal will stay on their current Construction until the Canal is linked to a Construction again.

This is useful if you've identified a problem with an Mise à jour but aren't yet sure which Construction you want to roll Retour to. Unlinking the Canal gives you time to investigate without pushing out further Mises à jour.

## Forcing the Built-In Bundle

In more severe situations, you may want to revert all Appareils on a Canal Retour to the web Construction that was originally packaged with your Application's Natif binary. This is known as the "built-in Bundle".

To force the built-in Bundle on a Canal:

<Steps>

1. Navigate to the Canal in the Capgo Tableau de bord.

2. Click the "Built-in Bundle" button.

3. Confirm that you want to force the built-in Bundle.

</Steps>

When you force the built-in Bundle, all Appareils configured to that Canal will revert Retour to the original packaged web Construction on their Suivant Mise à jour Vérifier. This happens regardless of what Construction they're currently on.

This is a more aggressive Restauration Option than reverting to a specific Précédent Construction, as it discards all Mises à jour en direct released since the Application was last published to the Application stores.

<Aside type="caution">
Be cautious when forcing the built-in Bundle, as it will affect all Appareils on the Canal. Make sure you've considered the impact and have a plan to move forward before taking this action.
</Aside>

## Monitoring and Responding to Issues

To catch issues quickly and minimize the impact of problematic Mises à jour, it's Important to have a plan for monitoring your releases and responding to problems.

Some strategies include:

- Monitoring crash reports and Utilisateur Retour immediately after releasing an Mise à jour
- Using phased rollouts or a staged Canal system to Test Mises à jour on a smaller group before wide Libération
- Having a clear decision process for when to roll Retour, unlink, or force the built-in Bundle, and who has the authority to do so
- Communicating to Utilisateurs À propos the Problème and the resolution, if appropriate

By combining careful monitoring with the ability to quickly manage problematic Mises à jour, you can deliver a continuously improving Application experience while minimizing disruptions for your Utilisateurs.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Content is not French — page is English with scattered French terms

This file is located under the French locale path (fr/docs/) and has locale: fr in its frontmatter, but the body is written in English with random French words embedded mid-sentence (e.g., "Utilisateurs", "Appareils", "Construction", "Retour", "Précédent"). French-speaking users navigating to /fr/docs/live-updates/rollbacks/ will see primarily English content, defeating the localization goal described in this PR.

This appears to be an AI-generated file where French terms were inserted into English prose rather than producing a proper translation.

🧰 Tools
🪛 LanguageTool

[grammar] ~15-~15: Ensure spelling is correct
Context: ...omatic safety mechanisms. ## Automatic Restauration Protection Capgo includes a built-in s...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~19-~19: Ensure spelling is correct
Context: ...ous working version. ### How Automatic Restauration Works When a new update is downloaded ...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~62-~62: Ensure spelling is correct
Context: ...ase this value. ## Rolling Retour to a Précédent Bundle Every time you Télécharger a No...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~82-~82: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...nal view. 5. Find the Construction you want to revert to in the Construction history. ...

(REP_WANT_TO_VB)


[style] ~86-~86: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...ion for the Canal. 7. Confirm that you want to roll Retour to this Construction. </St...

(REP_WANT_TO_VB)


[style] ~96-~96: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...e Canal view, find the Construction you want to revert to. 2. Click the crown icon Suiv...

(REP_WANT_TO_VB)


[style] ~98-~98: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...select_bundle.webp) 3. Confirm that you want to roll Retour to this Construction. </St...

(REP_WANT_TO_VB)


[grammar] ~129-~129: Ensure spelling is correct
Context: ...inally packaged with your Application's Natif binary. This is known as the "built-in ...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

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

In `@src/content/docs/fr/docs/live-updates/rollbacks.mdx` around lines 1 - 162,
The document has French frontmatter (locale: fr, title: Restaurations) but the
body is mostly English with scattered French tokens; replace the entire article
body with a proper French translation so the content matches locale: fr,
preserving technical identifiers and code samples (e.g., notifyAppReady(),
CapacitorUpdater) unchanged; translate UI labels, Steps items, Asides, image alt
text (e.g., "Restauration UI interface", "Canal management Options") and all
prose into fluent French, remove AI-artifact mixed-language phrases (e.g.,
"Retour", "Construction", "Appareils") by using correct French equivalents
consistently, and keep the structure and examples intact.

Comment on lines +1 to +216
---
locale: fr
title: Mise à jour Behavior
description: "Explore the comprehensive Mise à jour behavior of Capgo, designed to deliver seamless Mises à jour to your Application Utilisateurs without interrupting their experience."
sidebar:
order: 3
---

import { Aside, Steps } from '@astrojs/starlight/components';

When you Libération an Mise à jour to your Capgo Application, you probably want your Utilisateurs to receive that Mise à jour as soon as possible. But you also don't want to disrupt their experience by forcing them to wait for a Télécharger or Redémarrer the Application in the middle of a session.

Capgo's Mise à jour behavior is designed to strike a balance between delivering Mises à jour quickly and minimizing disruption to your Utilisateurs.

## Default Mise à jour Flow

By default, here's how Capgo handles Application Mises à jour:

<Steps>

1. On Application launch, the Capgo plugin checks to see if a Nouveau Mise à jour is Disponible.

2. If an Mise à jour is found, it's downloaded in the background while the Utilisateur continues using the current Version of the Application.

3. Once the Télécharger completes, Capgo waits for the Utilisateur to either background the Application or kill it entirely.

4. When the Utilisateur Suivant launches the Application, they'll be running the updated Version.

</Steps>

This flow ensures that Utilisateurs are always running the latest Version of your Application, without ever being interrupted by Mise à jour prompts or forced to wait for downloads.

<Aside type="tip">
Capgo also checks for Mises à jour when the Application resumes from the background, so Utilisateurs will receive Mises à jour even if they don't fully quit the Application.
</Aside>

## Why This Approach?

Applying Mises à jour on a background or kill event has a few key benefits for Utilisateur experience:

- Utilisateurs aren't interrupted by Mise à jour prompts or forced to wait for downloads in the middle of a session.

- Mises à jour are applied seamlessly in between sessions, so the experience of launching the Application is always fresh.

- You can deliver Mises à jour frequently without worrying À propos disrupting Actif Utilisateurs.

The main downside is that if a Utilisateur backgrounds and quickly resumes your Application, they may lose any unsaved state since the Mise à jour was applied in between those actions.

To mitigate this, we recommend:

- Saving state frequently and restoring it gracefully when the Application resumes.

- Avoiding very frequent Mises à jour that modify large parts of the Application state.

- Considering customizing the Mise à jour behavior for sensitive flows (see below).

## Customizing When Mises à jour Are Applied

In some cases, you may want more control over exactly when an Mise à jour is applied. For Exemple, you might want to ensure a Utilisateur completes an in-progress flow before updating, or coordinate an Application Mise à jour with a server-side change.

Capgo provides a `setDelay` function that lets you specify conditions that must be met before an update is installed:

```typescript
import { CapacitorUpdater } from '@capgo/capacitor-updater';

await CapacitorUpdater.setMultiDelay({
delayConditions: [
{
kind: 'date',
value: '2023-06-01T00:00:00.000Z',
},
{
kind: 'background',
value: '60000',
},
],
});
```

This Exemple would delay installing an Mise à jour until after June 1, 2023 AND the Application has been backgrounded for at least 60 seconds.

The Disponible delay conditions are:

- `date`: Wait until after a specific date/time to apply the update.
- `background`: Wait a minimum duration after the app is backgrounded to apply the update.
- `nativeVersion`: Wait for a native binary with a minimum version to be installed before applying the update.
- `kill`: Wait until the next app kill event to apply the update.

You can mix and match these conditions to precisely control when an Mise à jour is installed.

<Aside type="danger">
Note that the `kill` condition currently triggers the update after the first kill event, not the next background event like the other conditions. This inconsistency will be fixed in a future release.
</Aside>

## Applying Mises à jour Immediately

For critical updates or apps with very simple state, you may want to apply an update as soon as it's downloaded, without waiting for a background or kill event. Capgo supports this via the `directUpdate` configuration option.

<Aside type="tip" title="Recommended: Use Delta Updates with Direct Update">
When using `directUpdate`, we **strongly recommend** enabling [Delta Updates](/docs/live-updates/differentials/) to minimize download times and improve the user experience. Delta Updates only download changed files instead of the entire bundle, which is especially important when updates are applied immediately while users are actively using your app.

**Why this matters for Direct Updates:**
- **Faster Mises à jour**: Smaller downloads mean Mises à jour Terminé quickly, reducing the time Utilisateurs see loading screens
- **Better mobile experience**: Utilisateurs on cellular networks or slower connections won't face long wait times
- **Lower bandwidth Utilisation**: Only changed files are downloaded, saving data for both you and your Utilisateurs

To enable Delta Updates, simply use the `--partial` flag when uploading bundles:
```shell
npx @capgo/cli@latest bundle upload --partial
```

Learn more in the [Delta Mises à jour Documentation](/docs/live-Mises à jour/differentials/).
</Aside>

`directUpdate` is set in your `capacitor.config.ts` file, not in JavaScript code. It supports three values:

- `false` (default): Never do direct updates (use default behavior: download at start, set when backgrounded)
- `'atInstall'`: Direct update only when app is installed, updated from store, otherwise act as directUpdate = false
- `'onLaunch'`: Direct update only on app installed, updated from store or after app kill, otherwise act as directUpdate = false
- `'always'`: Direct update in all previous cases (app installed, updated from store, after app kill or app resume), never act as directUpdate = false
- `true` (deprecated): Same as `'always'` for backward compatibility

```typescript
import { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
autoUpdate: true,
directUpdate: 'always', // or 'atInstall' for updates only on app install/update
autoSplashscreen: true, // NEW: Automatically handle splashscreen
keepUrlPathAfterReload: true,
},
SplashScreen: {
launchAutoHide: false, // Still required when using directUpdate
},
},
};

export default config;
```

<Aside type="note">
**Important**: `directUpdate` only applies updates when the app actually checks for them. By default, this happens only at app startup or when resuming from background. Note that `periodCheckDelay` is not compatible with `directUpdate`.
</Aside>

With `directUpdate` enabled, Capgo will immediately apply an update as soon as the download completes during an update check, even if the user is actively using the app. Without periodic checking enabled, this means updates will only be applied when the app starts or resumes from background.

Note that because `directUpdate` is a native configuration, it requires some additional handling in your JavaScript code.

<Aside type="caution">
When using `directUpdate`, you must set `launchAutoHide: false` in the SplashScreen configuration (as shown above) to prevent the splash screen from hiding automatically. This ensures you have full control over when the splash screen is hidden after the update process completes.
</Aside>

## Automatic Splashscreen Handling

To make `directUpdate` easier to use, Capgo provides an `autoSplashscreen` option that automatically handles hiding the splashscreen for you (available since version 7.6.0):

```typescript
const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
autoUpdate: true,
directUpdate: 'always', // or 'atInstall'
autoSplashscreen: true, // Automatically hide splashscreen
keepUrlPathAfterReload: true,
},
SplashScreen: {
launchAutoHide: false,
},
},
};
```

When `autoSplashscreen` is enabled:
- The plugin automatically hides the splashscreen when an Mise à jour is applied
- The plugin automatically hides the splashscreen when no Mise à jour is needed
- You don't need to manually listen for `appReady` events or call `SplashScreen.hide()`

### Manual Splashscreen Handling

If you prefer manual control or need custom logic, you can disable `autoSplashscreen` and handle it yourself:

```js
import { CapacitorUpdater } from '@capgo/capacitor-updater';
import { SplashScreen } from '@capacitor/splash-screen';

CapacitorUpdater.addListener('appReady', () => {
// Hide splash screen
SplashScreen.hide();
});

CapacitorUpdater.notifyAppReady();
```

The `appReady` event fires once the app has finished initializing and applying any pending updates. This is the point at which it's safe to show your app's UI, as it ensures the user will see the latest version.

In addition to handling the `appReady` event, we recommend setting the `keepUrlPathAfterReload` configuration option to `true` when using `directUpdate`. This preserves the current URL path when the app is reloaded due to an update, helping maintain the user's location in the app and reducing disorientation.

If you don't handle the `appReady` event and set `keepUrlPathAfterReload` when using `directUpdate`, the user may briefly see a stale version of the app, be taken back to the initial route, or see a flicker as the update is applied.

Using `directUpdate` can be useful for delivering critical bug fixes or security patches, but it comes with some tradeoffs:

- The user may see a brief flicker or loading state as the update is applied if you don't properly handle the splashscreen (either with `autoSplashscreen` or manual `appReady` event handling).
- If the Mise à jour modifies the Application state or UI, the Utilisateur may see a disruptive change in the middle of a session.
- The user's location in the app may be lost if `keepUrlPathAfterReload` is not set, potentially disorienting them.
- You'll need to carefully handle saving and restoring state to ensure a smooth transition.

If you do enable `directUpdate`, we recommend:

- Using `autoSplashscreen: true` for the simplest setup, or manually handling the `appReady` event if you need custom logic.
- Setting `keepUrlPathAfterReload` to `true` to preserve the user's location in the app.
- Saving and restoring the Application state as needed to avoid losing Utilisateur progress.
- Thoroughly Test your Application's Mise à jour behavior to ensure there are no jarring transitions, lost state, or disorienting location changes.

In most cases, the default Mise à jour behavior provides the best balance of delivering Mises à jour quickly and minimizing disruption. But for apps with specific needs, Capgo provides the flexibility to customize when and how Mises à jour are applied.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Content is not French — same English/French language mixing issue

The body is predominantly English with French terms scattered throughout. French users at /fr/docs/live-updates/update-behavior/ will see an English-language page.

🧰 Tools
🪛 LanguageTool

[grammar] ~59-~59: Ensure spelling is correct
Context: ...tly when an Mise à jour is applied. For Exemple, you might want to ensure a Utilisateur...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~80-~80: Some style guides suggest that commas should set off the year in a month-day-year date.
Context: ...ling an Mise à jour until after June 1, 2023 AND the Application has been background...

(MISSING_COMMA_AFTER_YEAR)


[style] ~97-~97: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ...tely For critical updates or apps with very simple state, you may want to apply an update ...

(EN_WEAK_ADJECTIVE)


[style] ~102-~102: To elevate your writing, try using an alternative expression here.
Context: ...re actively using your app. Why this matters for Direct Updates: - **Faster Mises ...

(MATTERS_RELEVANT)

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

In `@src/content/docs/fr/docs/live-updates/update-behavior.mdx` around lines 1 -
216, The page is marked locale: fr but the body is mostly English; translate the
entire document content into French, keeping the frontmatter locale: fr and the
existing headings (e.g., "Mise à jour Behavior", "Default Mise à jour Flow") and
components (<Steps>, <Aside>) intact; ensure all UI terms and examples (like
`setMultiDelay`, `directUpdate`, `autoSplashscreen`, `keepUrlPathAfterReload`,
code blocks, and links) are presented in French and fix consistent terminology
(use "Mise à jour"/"Mises à jour" uniformly), and update any in-text links or
captions (e.g., Delta Updates / differentials) to their French equivalents so
the /fr page is fully French.

npx @capgo/cli@latest bundle upload --partial
```

Learn more in the [Delta Mises à jour Documentation](/docs/live-Mises à jour/differentials/).
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Broken internal link — French words in URL path will 404

The URL /docs/live-Mises à jour/differentials/ contains French words and spaces, making it an invalid URL path. The target file is at fr/docs/live-updates/differentials.mdx, so the URL should be /fr/docs/live-updates/differentials/.

✏️ Proposed fix
-Learn more in the [Delta Mises à jour Documentation](/docs/live-Mises à jour/differentials/).
+Learn more in the [Delta Updates Documentation](/fr/docs/live-updates/differentials/).
📝 Committable suggestion

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

Suggested change
Learn more in the [Delta Mises à jour Documentation](/docs/live-Mises à jour/differentials/).
Learn more in the [Delta Updates Documentation](/fr/docs/live-updates/differentials/).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/fr/docs/live-updates/update-behavior.mdx` at line 112, The
internal link in src/content/docs/fr/docs/live-updates/update-behavior.mdx
points to an invalid path with French characters and spaces; update the href in
the "Learn more in the [Delta Mises à jour Documentation](...)" link to the
correct canonical path /fr/docs/live-updates/differentials/ (keep the visible
link text as-is if desired) so the link resolves to
fr/docs/live-updates/differentials.mdx.

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.

2 participants