Conversation
📝 WalkthroughWalkthroughThe PR expands platform support across the project by adding Electron as a supported platform alongside iOS and Android. Changes include UI component updates to display Electron support and comprehensive documentation updates reflecting Electron compatibility across FAQs, live updates guides, plugin documentation, public API docs, and the homepage. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested labels
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f0f481bbec
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| | **`publicKey`** | `string` | Configure the public key for end to end live update encryption Version 2. Available on Android, iOS, and Electron. | `undefined` | 6.2.0 | | ||
| | **`version`** | `string` | Configure the current version of the app. This will be used for the first update request. If not set, the plugin will get the version from the native code. Available on Android, iOS, and Electron. | `undefined` | 4.17.48 | | ||
| | **`directUpdate`** | `boolean | 'always' | 'atInstall' | 'onLaunch'` | Configure when the plugin should direct install updates. Only for autoUpdate mode. Works well for apps less than 10MB and with uploads done using --delta flag. Zip or apps more than 10MB will be relatively slow for users to update. - false: 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 Activate this flag will automatically make the CLI upload delta in CICD envs and will ask for confirmation in local uploads. Available on Android, iOS, and Electron. | `false` | 5.1.0 | | ||
| | **`autoSplashscreen`** | `boolean` | Automatically handle splashscreen hiding when using directUpdate. When enabled, the plugin will automatically hide the splashscreen after updates are applied or when no update is needed. This removes the need to manually listen for appReady events and call SplashScreen.hide(). Only works when directUpdate is set to "atInstall", "always", "onLaunch", or true. Requires the @capacitor/splash-screen plugin to be installed and configured with launchAutoHide: false. Requires autoUpdate and directUpdate to be enabled. Available on Android, iOS, and Electron. | `false` | 7.6.0 | |
There was a problem hiding this comment.
Remove Electron support claim from splashscreen options
This table now says autoSplashscreen is available on Electron, but Electron updates are documented in this repo under the separate @capgo/electron-updater package, whose option list does not include splashscreen settings. Marking this as Electron-supported will cause desktop users to add unsupported config keys and expect splash behavior that never runs, leading to misconfigured update flows and hard-to-diagnose rollout issues.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Actionable comments posted: 5
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (4)
src/content/docs/docs/webapp/main-app-page.mdx (1)
85-91:⚠️ Potential issue | 🟡 Minor"both channels" is stale and Electron is missing from the device-update behavior list.
Two related issues introduced by the Electron addition:
Line 87 still says "Mark both channels as 'Default'" but the step above now creates three channels (
production-ios,production-android,production-electron). This will confuse readers.Lines 89–91 list only iOS and Android in the device-update behavior, omitting Electron despite having just added it as a third platform on lines 85–86.
✏️ Proposed fix
-3. Mark both channels as "Default" - Capgo allows this when channels target different platforms +3. Mark each channel as "Default" - Capgo allows this when channels target different platforms When a device requests an update: - iOS devices will receive updates from the iOS-enabled default channel - Android devices will receive updates from the Android-enabled default channel +- Electron devices will receive updates from the Electron-enabled default channel🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/docs/webapp/main-app-page.mdx` around lines 85 - 91, Update the wording that currently reads "Mark both channels as 'Default'" to reflect three channels (e.g., "Mark each channel as 'Default'") and add Electron to the device-update behavior list; specifically, adjust the steps that create channels `production-ios`, `production-android`, and `production-electron` and replace the stale "both channels" text with "each channel" (or "all channels") and append a third bullet so the behavior list reads: iOS devices → iOS-enabled default channel, Android devices → Android-enabled default channel, Electron devices → Electron-enabled default channel.src/content/docs/docs/public-api/channels.mdx (1)
122-138:⚠️ Potential issue | 🟡 MinorGET response type missing platform fields (
ios,android,electron).The
Channelresponse interface doesn't includeios,android, orelectronboolean fields, even though these are settable via the POST endpoint'sChannelSet. If the API actually returns these fields, the response type should be updated for accuracy. This appears to be a pre-existing gap, but since the PR is documenting Electron support, it's a good opportunity to make the response type complete.#!/bin/bash # Check if other API docs or channel-related files document the response shape more completely rg -n 'ios.*android.*electron|Channel.*interface' --type mdx --type md -g '!node_modules' || \ rg -n 'ios.*android.*electron|Channel.*interface' -g '*.mdx' -g '*.md' -g '!node_modules'🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/docs/public-api/channels.mdx` around lines 122 - 138, The Channel response interface is missing the boolean platform fields that the API can return; update the Channel interface to include ios, android, and electron boolean properties (matching the POST/ChannelSet shape) so responses are accurately typed—locate the Channel interface declaration and add ios: boolean; android: boolean; electron: boolean; ensuring naming matches existing fields (public, disableAutoUpdate, etc.).src/content/docs/docs/plugins/updater/settings.mdx (1)
345-360:⚠️ Potential issue | 🟠 MajorCorrect platform availability claims in
shakeMenuand other settings—they apply only to@capgo/capacitor-updater(iOS & Android), not Electron.The current documentation claims "Available on Android, iOS, and Electron" for settings like
shakeMenu(line 347), but@capgo/capacitor-updateris an iOS and Android native plugin only. Electron uses a separate@capgo/electron-updaterplugin with different implementations and settings. For example,shakeMenurelies on device accelerometer input and has no equivalent on desktop Electron—instead, Electron uses a keyboard shortcut (Ctrl+Shift+D/Cmd+Shift+D).Update the availability statements for platform-specific settings to accurately reflect that they apply to iOS and Android only, and add a note explaining that Electron uses a separate plugin.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/docs/plugins/updater/settings.mdx` around lines 345 - 360, Update the platform availability text for settings like shakeMenu to state they apply only to the mobile plugin `@capgo/capacitor-updater` (iOS & Android) rather than Electron; locate the section mentioning "Available on Android, iOS, and Electron" and change it to indicate iOS and Android only for the shakeMenu and other native settings (referencing the shakeMenu setting name), and add a short note that Electron uses the separate `@capgo/electron-updater` plugin with a different mechanism (e.g., keyboard shortcut Ctrl+Shift+D / Cmd+Shift+D) instead of shake gestures.src/content/docs/docs/plugins/updater/self-hosted/handling-channels.mdx (1)
272-277:⚠️ Potential issue | 🟡 MinorValidate and constrain
platformin the runtime handler.
setDeviceChannel()still acceptsplatform: string. At runtime, invalid values can slip through and still result in assignment. Tighten the type and add an explicit guard for unsupported values.🔒 Suggested hardening
async function setDeviceChannel( deviceId: string, appId: string, channel: string, - platform: string + platform: "ios" | "android" | "electron" ): Promise<ChannelResponse> { + if (!["ios", "android", "electron"].includes(platform)) { + return { + status: "error", + error: "invalid_platform" + } + }Also applies to: 310-315
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/docs/plugins/updater/self-hosted/handling-channels.mdx` around lines 272 - 277, setDeviceChannel currently accepts platform: string which allows invalid platforms at runtime; change the platform parameter type to a strict union of supported values (e.g., "ios" | "android" | "web" or your app's allowed platforms) and add an explicit guard at the start of setDeviceChannel that checks the platform against the allowed set and returns/throws a clear error (or ChannelResponse indicating unsupported platform) if it is invalid; apply the same tightening and guard to the other handler that mirrors this function (the block referenced around the second occurrence) so runtime callers cannot assign unsupported platforms.
🧹 Nitpick comments (2)
src/content/docs/docs/live-updates/features.mdx (1)
428-434: Nit: "NEW in 2025" may age quickly.Since it's now February 2026, the "NEW in 2025" label will increasingly feel outdated. Consider removing the year annotation or updating it to something like "Electron" without the qualifier, to avoid documentation staleness.
Suggested change
-- Electron (NEW in 2025) +- Electron🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/docs/live-updates/features.mdx` around lines 428 - 434, The "Electron (NEW in 2025)" label under the "### Multi-Platform Support" section is time-sensitive and should be updated to avoid aging; edit the "Multi-Platform Support" block and change the list item "Electron (NEW in 2025)" to a neutral label like "Electron" (or "Electron (supported)") so the docs remain evergreen — locate the heading "### Multi-Platform Support" and the bullet "- Electron (NEW in 2025)" and replace that text accordingly.src/content/docs/docs/plugins/updater/self-hosted/handling-channels.mdx (1)
414-425: Add an upgrade migration note for existing databases.The new
electroncolumn is documented inCREATE TABLE, but existing self-hosted deployments also need anALTER TABLEpath to adopt this safely.🗄️ Suggested migration snippet
CREATE TABLE channels ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL, app_id VARCHAR(255) NOT NULL, @@ ios BOOLEAN DEFAULT true, android BOOLEAN DEFAULT true, electron BOOLEAN DEFAULT true, @@ ); + +-- For existing deployments upgrading to Electron support: +ALTER TABLE channels + ADD COLUMN IF NOT EXISTS electron BOOLEAN DEFAULT true; + +UPDATE channels +SET electron = true +WHERE electron IS NULL;🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/docs/plugins/updater/self-hosted/handling-channels.mdx` around lines 414 - 425, Add a brief upgrade migration note explaining how existing self-hosted deployments should add the new electron column to the channels table; instruct maintainers to run an ALTER TABLE on channels to ADD COLUMN electron BOOLEAN with DEFAULT true (or NULL then backfill and set NOT NULL) as part of a transactional migration, include a short suggested SQL snippet and mention running the migration before updating instances so the documented CREATE TABLE and existing DBs stay in sync.
🤖 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/docs/faq.mdx`:
- Line 12: Update the user-facing copy to hyphenate compound modifiers: replace
the phrase "over the air updates" in the sentence containing 'Code push, also
referred to as "over the air updates" (OTA)' with "over-the-air updates", and
replace "production ready" wherever it appears (notably in the sentence
mentioning production at or near the content around line 297) with
"production-ready" to follow standard style and improve readability.
In `@src/content/docs/docs/getting-started/troubleshooting.mdx`:
- Line 80: Add a new "Electron Logs" subsection in the troubleshooting doc next
to the existing "Android Logs" and "iOS Logs" sections; mention where native
Electron logs appear (main-process console, renderer DevTools console, and
OS-level crash/console logs), include brief commands/locations to view them
(e.g., main process stdout/stderr, opening DevTools in renderer, and using
system crash log viewers), and recommend checking both main and renderer process
output when debugging updates so Electron users have parity with the Android/iOS
guidance.
In `@src/content/docs/docs/plugin/api.md`:
- Line 22: Update the documentation string for the resetWhenUpdate option to use
the hyphenated form "auto-update flow" instead of "auto update flow"; locate the
table row for the **`resetWhenUpdate`** property in
src/content/docs/docs/plugin/api.md and change the phrase within the description
text to "auto-update flow" to fix the grammar.
- Line 28: The table row for the plugin option directUpdate contains unescaped
pipe characters which break Markdown table cells; update the table entry for
directUpdate so all literal '|' characters inside the Type column and
description are either escaped (use \|) or replaced with HTML entity | or
enclosed in inline code spans to prevent Markdown from treating them as column
separators; ensure the Type cell value (currently `boolean | 'always' |
'atInstall' | 'onLaunch'`) and every occurrence of pipes in the description text
are sanitized while preserving the same wording and backticks around code
values.
In `@src/content/docs/docs/plugins/updater/api.md`:
- Line 20: The docs for the responseTimeout option are inconsistent: the field
is documented as "milliseconds" but the example default shows "20 // (20
second)"; update the API docs entry for responseTimeout to clearly state the
unit as milliseconds and correct the example default to a millisecond value for
20 seconds (e.g., 20000) and adjust the inline comment to match (e.g., 20000 //
(20 seconds)) so the responseTimeout example and description are consistent.
---
Outside diff comments:
In `@src/content/docs/docs/plugins/updater/self-hosted/handling-channels.mdx`:
- Around line 272-277: setDeviceChannel currently accepts platform: string which
allows invalid platforms at runtime; change the platform parameter type to a
strict union of supported values (e.g., "ios" | "android" | "web" or your app's
allowed platforms) and add an explicit guard at the start of setDeviceChannel
that checks the platform against the allowed set and returns/throws a clear
error (or ChannelResponse indicating unsupported platform) if it is invalid;
apply the same tightening and guard to the other handler that mirrors this
function (the block referenced around the second occurrence) so runtime callers
cannot assign unsupported platforms.
In `@src/content/docs/docs/plugins/updater/settings.mdx`:
- Around line 345-360: Update the platform availability text for settings like
shakeMenu to state they apply only to the mobile plugin `@capgo/capacitor-updater`
(iOS & Android) rather than Electron; locate the section mentioning "Available
on Android, iOS, and Electron" and change it to indicate iOS and Android only
for the shakeMenu and other native settings (referencing the shakeMenu setting
name), and add a short note that Electron uses the separate
`@capgo/electron-updater` plugin with a different mechanism (e.g., keyboard
shortcut Ctrl+Shift+D / Cmd+Shift+D) instead of shake gestures.
In `@src/content/docs/docs/public-api/channels.mdx`:
- Around line 122-138: The Channel response interface is missing the boolean
platform fields that the API can return; update the Channel interface to include
ios, android, and electron boolean properties (matching the POST/ChannelSet
shape) so responses are accurately typed—locate the Channel interface
declaration and add ios: boolean; android: boolean; electron: boolean; ensuring
naming matches existing fields (public, disableAutoUpdate, etc.).
In `@src/content/docs/docs/webapp/main-app-page.mdx`:
- Around line 85-91: Update the wording that currently reads "Mark both channels
as 'Default'" to reflect three channels (e.g., "Mark each channel as 'Default'")
and add Electron to the device-update behavior list; specifically, adjust the
steps that create channels `production-ios`, `production-android`, and
`production-electron` and replace the stale "both channels" text with "each
channel" (or "all channels") and append a third bullet so the behavior list
reads: iOS devices → iOS-enabled default channel, Android devices →
Android-enabled default channel, Electron devices → Electron-enabled default
channel.
---
Nitpick comments:
In `@src/content/docs/docs/live-updates/features.mdx`:
- Around line 428-434: The "Electron (NEW in 2025)" label under the "###
Multi-Platform Support" section is time-sensitive and should be updated to avoid
aging; edit the "Multi-Platform Support" block and change the list item
"Electron (NEW in 2025)" to a neutral label like "Electron" (or "Electron
(supported)") so the docs remain evergreen — locate the heading "###
Multi-Platform Support" and the bullet "- Electron (NEW in 2025)" and replace
that text accordingly.
In `@src/content/docs/docs/plugins/updater/self-hosted/handling-channels.mdx`:
- Around line 414-425: Add a brief upgrade migration note explaining how
existing self-hosted deployments should add the new electron column to the
channels table; instruct maintainers to run an ALTER TABLE on channels to ADD
COLUMN electron BOOLEAN with DEFAULT true (or NULL then backfill and set NOT
NULL) as part of a transactional migration, include a short suggested SQL
snippet and mention running the migration before updating instances so the
documented CREATE TABLE and existing DBs stay in sync.
ℹ️ Review info
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (22)
src/components/landing/AutomationFeatures.astrosrc/components/landing/MonitoringFeatures.astrosrc/content/docs/docs/faq.mdxsrc/content/docs/docs/getting-started/troubleshooting.mdxsrc/content/docs/docs/live-updates/channels.mdxsrc/content/docs/docs/live-updates/compliance.mdxsrc/content/docs/docs/live-updates/custom-storage.mdxsrc/content/docs/docs/live-updates/features.mdxsrc/content/docs/docs/live-updates/index.mdxsrc/content/docs/docs/plugin/api.mdsrc/content/docs/docs/plugins/updater/api.mdsrc/content/docs/docs/plugins/updater/index.mdxsrc/content/docs/docs/plugins/updater/local-dev/capacitor-updater.mdxsrc/content/docs/docs/plugins/updater/self-hosted/auto-update.mdxsrc/content/docs/docs/plugins/updater/self-hosted/handling-channels.mdxsrc/content/docs/docs/plugins/updater/self-hosted/handling-stats.mdxsrc/content/docs/docs/plugins/updater/settings.mdxsrc/content/docs/docs/public-api/channels.mdxsrc/content/docs/docs/public-api/devices.mdxsrc/content/docs/docs/webapp/channels.mdxsrc/content/docs/docs/webapp/main-app-page.mdxsrc/pages/index.astro
| ### What is "code push"?[](https://capgo.app/docs/#what-is-code-push "Direct link to What is \"code push\"?") | ||
|
|
||
| Code push, also referred to as "over the air updates" (OTA) is a cloud service enabling Capacitor developers to deploy updates to their apps in production. Capgo currently works on Android and iOS and will eventually work everywhere Capacitor works. | ||
| Code push, also referred to as "over the air updates" (OTA) is a cloud service enabling Capacitor developers to deploy updates to their apps in production. Capgo currently works on Android, iOS, and Electron. |
There was a problem hiding this comment.
Hyphenate compound modifiers in user-facing copy.
At Line 12, use “over-the-air updates”. At Line 297, use “production-ready” for standard style and readability.
✏️ Proposed wording fix
-Code push, also referred to as "over the air updates" (OTA) is a cloud service enabling Capacitor developers to deploy updates to their apps in production. Capgo currently works on Android, iOS, and Electron.
+Code push, also referred to as "over-the-air updates" (OTA) is a cloud service enabling Capacitor developers to deploy updates to their apps in production. Capgo currently works on Android, iOS, and Electron.
-Currently, Capgo supports Android, iOS, and Electron. All are production ready.
+Currently, Capgo supports Android, iOS, and Electron. All are production-ready.Also applies to: 297-297
🧰 Tools
🪛 LanguageTool
[grammar] ~12-~12: Use a hyphen to join words.
Context: ...") Code push, also referred to as "over the air updates" (OTA) is a cloud servic...
(QB_NEW_EN_HYPHEN)
[grammar] ~12-~12: Use a hyphen to join words.
Context: ...Code push, also referred to as "over the air updates" (OTA) is a cloud service en...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/docs/faq.mdx` at line 12, Update the user-facing copy to
hyphenate compound modifiers: replace the phrase "over the air updates" in the
sentence containing 'Code push, also referred to as "over the air updates"
(OTA)' with "over-the-air updates", and replace "production ready" wherever it
appears (notably in the sentence mentioning production at or near the content
around line 297) with "production-ready" to follow standard style and improve
readability.
| ### Debugging with Native Logs | ||
|
|
||
| In addition to the Capgo debug command, the native logs on Android and iOS can provide valuable troubleshooting information, especially for issues on the native side of the update process. | ||
| In addition to the Capgo debug command, the native logs on Android, iOS, and Electron can provide valuable troubleshooting information, especially for issues on the native side of the update process. |
There was a problem hiding this comment.
Missing Electron-specific logging section.
Line 80 now mentions Electron alongside Android and iOS, and there are dedicated subsections for "Android Logs" (line 82) and "iOS Logs" (line 106), but no corresponding "Electron Logs" section. Users on Electron won't know where to find native logs (e.g., Electron main-process console, DevTools, or OS-level logging). Consider adding a brief Electron Logs subsection for completeness.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/docs/getting-started/troubleshooting.mdx` at line 80, Add a
new "Electron Logs" subsection in the troubleshooting doc next to the existing
"Android Logs" and "iOS Logs" sections; mention where native Electron logs
appear (main-process console, renderer DevTools console, and OS-level
crash/console logs), include brief commands/locations to view them (e.g., main
process stdout/stderr, opening DevTools in renderer, and using system crash log
viewers), and recommend checking both main and renderer process output when
debugging updates so Electron users have parity with the Android/iOS guidance.
| | **`autoDeleteFailed`** | `boolean` | Configure whether the plugin should use automatically delete failed bundles. Available on Android, iOS, and Electron. | `true` | | | ||
| | **`autoDeletePrevious`** | `boolean` | Configure whether the plugin should use automatically delete previous bundles after a successful update. Available on Android, iOS, and Electron. | `true` | | | ||
| | **`autoUpdate`** | `boolean` | Configure whether the plugin should use Auto Update via an update server. Available on Android, iOS, and Electron. | `true` | | | ||
| | **`resetWhenUpdate`** | `boolean` | Automatically delete previous downloaded bundles when a newer native app bundle is installed to the device. Setting this to false can broke the auto update flow if the user download from the store a native app bundle that is older than the current downloaded bundle. Upload will be prevented by channel setting downgrade_under_native. Available on Android, iOS, and Electron. | `true` | | |
There was a problem hiding this comment.
Minor grammar nit: "auto update" should be hyphenated.
Per static analysis (LanguageTool), line 22 contains "auto update flow" which should be "auto-update flow". This is on a changed line.
✏️ Proposed fix
-Setting this to false can broke the auto update flow if the user download from the store...
+Setting this to false can broke the auto-update flow if the user download from the store...📝 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.
| | **`resetWhenUpdate`** | `boolean` | Automatically delete previous downloaded bundles when a newer native app bundle is installed to the device. Setting this to false can broke the auto update flow if the user download from the store a native app bundle that is older than the current downloaded bundle. Upload will be prevented by channel setting downgrade_under_native. Available on Android, iOS, and Electron. | `true` | | | |
| | **`resetWhenUpdate`** | `boolean` | Automatically delete previous downloaded bundles when a newer native app bundle is installed to the device. Setting this to false can broke the auto-update flow if the user download from the store a native app bundle that is older than the current downloaded bundle. Upload will be prevented by channel setting downgrade_under_native. Available on Android, iOS, and Electron. | `true` | | |
🧰 Tools
🪛 LanguageTool
[grammar] ~22-~22: Use a hyphen to join words.
Context: ...Setting this to false can broke the auto update flow if the user download from th...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/docs/plugin/api.md` at line 22, Update the documentation
string for the resetWhenUpdate option to use the hyphenated form "auto-update
flow" instead of "auto update flow"; locate the table row for the
**`resetWhenUpdate`** property in src/content/docs/docs/plugin/api.md and change
the phrase within the description text to "auto-update flow" to fix the grammar.
| | **`statsUrl`** | `string` | Configure the URL / endpoint to which update statistics are sent. Available on Android, iOS, and Electron. Set to "" to disable stats reporting. | `https://plugin.capgo.app/stats` | | | ||
| | **`publicKey`** | `string` | Configure the public key for end to end live update encryption Version 2. Available on Android, iOS, and Electron. | `undefined` | 6.2.0 | | ||
| | **`version`** | `string` | Configure the current version of the app. This will be used for the first update request. If not set, the plugin will get the version from the native code. Available on Android, iOS, and Electron. | `undefined` | 4.17.48 | | ||
| | **`directUpdate`** | `boolean | 'always' | 'atInstall' | 'onLaunch'` | Configure when the plugin should direct install updates. Only for autoUpdate mode. Works well for apps less than 10MB and with uploads done using --delta flag. Zip or apps more than 10MB will be relatively slow for users to update. - false: 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 Activate this flag will automatically make the CLI upload delta in CICD envs and will ask for confirmation in local uploads. Available on Android, iOS, and Electron. | `false` | 5.1.0 | |
There was a problem hiding this comment.
MD056: directUpdate row has unescaped | characters breaking the Markdown table.
The description for directUpdate contains literal pipe characters (e.g., boolean | 'always' | ...) inside a Markdown table cell. These are interpreted as additional column separators, causing the markdownlint MD056 violation and likely breaking table rendering.
Escape the pipes in the Type column and within the description text:
✏️ Proposed fix (excerpt)
-| **`directUpdate`** | `boolean | 'always' | 'atInstall' | 'onLaunch'` | Configure when ...
+| **`directUpdate`** | `boolean \| 'always' \| 'atInstall' \| 'onLaunch'` | Configure when ...📝 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.
| | **`directUpdate`** | `boolean | 'always' | 'atInstall' | 'onLaunch'` | Configure when the plugin should direct install updates. Only for autoUpdate mode. Works well for apps less than 10MB and with uploads done using --delta flag. Zip or apps more than 10MB will be relatively slow for users to update. - false: 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 Activate this flag will automatically make the CLI upload delta in CICD envs and will ask for confirmation in local uploads. Available on Android, iOS, and Electron. | `false` | 5.1.0 | | |
| | **`directUpdate`** | `boolean \| 'always' \| 'atInstall' \| 'onLaunch'` | Configure when the plugin should direct install updates. Only for autoUpdate mode. Works well for apps less than 10MB and with uploads done using --delta flag. Zip or apps more than 10MB will be relatively slow for users to update. - false: 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 Activate this flag will automatically make the CLI upload delta in CICD envs and will ask for confirmation in local uploads. Available on Android, iOS, and Electron. | `false` | 5.1.0 | |
🧰 Tools
🪛 markdownlint-cli2 (0.21.0)
[warning] 28-28: Table column count
Expected: 5; Actual: 8; Too many cells, extra data will be missing
(MD056, table-column-count)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/docs/plugin/api.md` at line 28, The table row for the plugin
option directUpdate contains unescaped pipe characters which break Markdown
table cells; update the table entry for directUpdate so all literal '|'
characters inside the Type column and description are either escaped (use \|) or
replaced with HTML entity | or enclosed in inline code spans to prevent
Markdown from treating them as column separators; ensure the Type cell value
(currently `boolean | 'always' | 'atInstall' | 'onLaunch'`) and every occurrence
of pipes in the description text are sanitized while preserving the same wording
and backticks around code values.
| | **`autoSplashscreen`** | <code>boolean</code> | Automatically handle splashscreen hiding when using directUpdate. When enabled, the plugin will automatically hide the splashscreen after updates are applied or when no update is needed. This removes the need to manually listen for appReady events and call SplashScreen.hide(). Only works when directUpdate is set to "atInstall", "always", or true. Requires the @capacitor/splash-screen plugin to be installed and configured with launchAutoHide: false. Requires autoUpdate and directUpdate to be enabled. Only available for Android and iOS. | <code>false</code> | 7.6.0 | | ||
| | **`periodCheckDelay`** | <code>number</code> | Configure the delay period for period update check. the unit is in seconds. Only available for Android and iOS. Cannot be less than 600 seconds (10 minutes). | <code>600 // (10 minutes)</code> | | | ||
| | **`appReadyTimeout`** | <code>number</code> | Configure the number of milliseconds the native plugin should wait before considering an update 'failed'. Available on Android, iOS, and Electron. | <code>10000 // (10 seconds)</code> | | | ||
| | **`responseTimeout`** | <code>number</code> | Configure the number of milliseconds the native plugin should wait before considering API timeout. Available on Android, iOS, and Electron. | <code>20 // (20 second)</code> | | |
There was a problem hiding this comment.
Clarify responseTimeout unit/default to avoid misconfiguration.
Line 20 says the value is in milliseconds, but the default shown is 20 // (20 second), which reads as 20ms. Please make the unit and default consistent (for example, 20000 for 20 seconds).
🛠️ Suggested correction
-| **`responseTimeout`** | <code>number</code> | Configure the number of milliseconds the native plugin should wait before considering API timeout. Available on Android, iOS, and Electron. | <code>20 // (20 second)</code> | |
+| **`responseTimeout`** | <code>number</code> | Configure the number of milliseconds the native plugin should wait before considering API timeout. Available on Android, iOS, and Electron. | <code>20000 // (20 seconds)</code> | |📝 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.
| | **`responseTimeout`** | <code>number</code> | Configure the number of milliseconds the native plugin should wait before considering API timeout. Available on Android, iOS, and Electron. | <code>20 // (20 second)</code> | | | |
| | **`responseTimeout`** | <code>number</code> | Configure the number of milliseconds the native plugin should wait before considering API timeout. Available on Android, iOS, and Electron. | <code>20000 // (20 seconds)</code> | | |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/docs/plugins/updater/api.md` at line 20, The docs for the
responseTimeout option are inconsistent: the field is documented as
"milliseconds" but the example default shows "20 // (20 second)"; update the API
docs entry for responseTimeout to clearly state the unit as milliseconds and
correct the example default to a millisecond value for 20 seconds (e.g., 20000)
and adjust the inline comment to match (e.g., 20000 // (20 seconds)) so the
responseTimeout example and description are consistent.
|
@copilot fix conflicts |
|
@copilot fix the conflict of your PR |



This PR updates Capgo documentation to consistently treat Electron as a first-class update platform alongside iOS and Android. It updates updater API tables, troubleshooting, and public API pages with Electron-aware platform language and channel examples. It also updates live update and webapp channel documentation to cover Electron toggle and default-channel behavior. The landing pages and plugin docs now link Electron-updater messaging more explicitly. These changes are limited to docs and marketing copy; no runtime behavior was modified.
Summary by CodeRabbit