From aacf46d5bf2b7aada62a87b48534d704246ff257 Mon Sep 17 00:00:00 2001 From: Simon Jackson Date: Thu, 12 Mar 2026 10:00:47 +0000 Subject: [PATCH 01/60] feat(android-foreground-service): add notificationTapped listener for notification tap events Replace the deep link URL approach with a notificationTapped event listener that fires when the foreground service notification is tapped. This follows the same broadcast receiver pattern as the existing buttonClicked listener. Co-Authored-By: Claude Opus 4.6 --- .../add-notification-tapped-listener.md | 5 +++ packages/android-foreground-service/README.md | 36 +++++++++++++++++++ .../AndroidForegroundService.java | 17 +++++---- .../ForegroundServicePlugin.java | 19 ++++++++++ .../NotificationTapBroadcastReceiver.java | 26 ++++++++++++++ .../src/definitions.ts | 30 ++++++++++++++++ 6 files changed, 124 insertions(+), 9 deletions(-) create mode 100644 .changeset/add-notification-tapped-listener.md create mode 100644 packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/NotificationTapBroadcastReceiver.java diff --git a/.changeset/add-notification-tapped-listener.md b/.changeset/add-notification-tapped-listener.md new file mode 100644 index 000000000..81851659e --- /dev/null +++ b/.changeset/add-notification-tapped-listener.md @@ -0,0 +1,5 @@ +--- +"@capawesome-team/capacitor-android-foreground-service": minor +--- + +Add `notificationTapped` event listener that fires when the foreground service notification is tapped diff --git a/packages/android-foreground-service/README.md b/packages/android-foreground-service/README.md index c8d4f42ee..c95d965fd 100644 --- a/packages/android-foreground-service/README.md +++ b/packages/android-foreground-service/README.md @@ -40,6 +40,7 @@ You also need to add the following receiver and service **inside** the `applicat ```xml + ``` @@ -128,6 +129,7 @@ const deleteNotificationChannel = async () => { * [`createNotificationChannel(...)`](#createnotificationchannel) * [`deleteNotificationChannel(...)`](#deletenotificationchannel) * [`addListener('buttonClicked', ...)`](#addlistenerbuttonclicked-) +* [`addListener('notificationTapped', ...)`](#addlistenernotificationtapped-) * [`removeAllListeners()`](#removealllisteners) * [Interfaces](#interfaces) * [Type Aliases](#type-aliases) @@ -344,6 +346,28 @@ Only available on iOS. -------------------- +### addListener('notificationTapped', ...) + +```typescript +addListener(eventName: 'notificationTapped', listenerFunc: NotificationTappedEventListener) => Promise +``` + +Called when the foreground service notification is tapped. + +Only available on Android. + +| Param | Type | +| ------------------ | --------------------------------------------------------------------------------------------- | +| **`eventName`** | 'notificationTapped' | +| **`listenerFunc`** | NotificationTappedEventListener | + +**Returns:** Promise<PluginListenerHandle> + +**Since:** 8.1.0 + +-------------------- + + ### removeAllListeners() ```typescript @@ -427,6 +451,13 @@ Remove all listeners for this plugin. | **`buttonId`** | number | The button identifier. | 0.2.0 | +#### NotificationTappedEvent + +| Prop | Type | Description | Since | +| -------------------- | ------------------- | ---------------------------- | ----- | +| **`notificationId`** | number | The notification identifier. | 8.1.0 | + + ### Type Aliases @@ -445,6 +476,11 @@ Remove all listeners for this plugin. (event: ButtonClickedEvent): void +#### NotificationTappedEventListener + +(event: NotificationTappedEvent): void + + ### Enums diff --git a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/AndroidForegroundService.java b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/AndroidForegroundService.java index 36d0de562..3e82a738e 100644 --- a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/AndroidForegroundService.java +++ b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/AndroidForegroundService.java @@ -77,15 +77,14 @@ public int onStartCommand(Intent intent, int flags, int startId) { } private PendingIntent buildContentIntent(int id) { - String packageName = getApplicationContext().getPackageName(); - Intent intent = getApplicationContext().getPackageManager().getLaunchIntentForPackage(packageName); - int pendingIntentFlags; - if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - pendingIntentFlags = PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_MUTABLE; - } else { - pendingIntentFlags = PendingIntent.FLAG_CANCEL_CURRENT; - } - return PendingIntent.getActivity(getApplicationContext(), id, intent, pendingIntentFlags); + Intent intent = new Intent(this, NotificationTapBroadcastReceiver.class); + intent.putExtra("notificationId", id); + return PendingIntent.getBroadcast( + this, + id, + intent, + PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_CANCEL_CURRENT + ); } private Notification.Action[] convertBundlesToNotificationActions(Bundle[] bundles) { diff --git a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java index 24cb513a8..23bdcad41 100644 --- a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java +++ b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java @@ -34,6 +34,7 @@ public class ForegroundServicePlugin extends Plugin { public static final String TAG = "ForegroundService"; public static final String BUTTON_CLICKED_EVENT = "buttonClicked"; + public static final String NOTIFICATION_TAPPED_EVENT = "notificationTapped"; public static Bridge staticBridge = null; private static final String MOVE_TO_FOREGROUND_CALLBACK_NAME = "moveToForegroundResult"; @@ -230,6 +231,18 @@ public void deleteNotificationChannel(PluginCall call) { } } + public static void onNotificationTapped(int notificationId) { + try { + ForegroundServicePlugin plugin = ForegroundServicePlugin.getForegroundServicePluginInstance(); + if (plugin == null) { + return; + } + plugin.handleNotificationTapped(notificationId); + } catch (Exception exception) { + Logger.error(ForegroundServicePlugin.TAG, exception.getMessage(), exception); + } + } + public static void onButtonClicked(int buttonId) { try { ForegroundServicePlugin plugin = ForegroundServicePlugin.getForegroundServicePluginInstance(); @@ -263,6 +276,12 @@ private void permissionsCallback(PluginCall call) { this.checkPermissions(call); } + private void handleNotificationTapped(int notificationId) { + JSObject result = new JSObject(); + result.put("notificationId", notificationId); + notifyListeners(NOTIFICATION_TAPPED_EVENT, result, true); + } + private void handleButtonClicked(int buttonId) { JSObject result = new JSObject(); result.put("buttonId", buttonId); diff --git a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/NotificationTapBroadcastReceiver.java b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/NotificationTapBroadcastReceiver.java new file mode 100644 index 000000000..7b72e9013 --- /dev/null +++ b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/NotificationTapBroadcastReceiver.java @@ -0,0 +1,26 @@ +package io.capawesome.capacitorjs.plugins.foregroundservice; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import com.getcapacitor.Logger; + +public class NotificationTapBroadcastReceiver extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + try { + int notificationId = intent.getIntExtra("notificationId", -1); + + Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()); + if (launchIntent != null) { + launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); + context.startActivity(launchIntent); + } + + ForegroundServicePlugin.onNotificationTapped(notificationId); + } catch (Exception exception) { + Logger.error(ForegroundServicePlugin.TAG, exception.getMessage(), exception); + } + } +} diff --git a/packages/android-foreground-service/src/definitions.ts b/packages/android-foreground-service/src/definitions.ts index 415fb542f..fac73de4b 100644 --- a/packages/android-foreground-service/src/definitions.ts +++ b/packages/android-foreground-service/src/definitions.ts @@ -109,6 +109,17 @@ export interface ForegroundServicePlugin { eventName: 'buttonClicked', listenerFunc: ButtonClickedEventListener, ): Promise; + /** + * Called when the foreground service notification is tapped. + * + * Only available on Android. + * + * @since 8.1.0 + */ + addListener( + eventName: 'notificationTapped', + listenerFunc: NotificationTappedEventListener, + ): Promise; /** * Remove all listeners for this plugin. * @@ -226,6 +237,25 @@ export interface ManageOverlayPermissionResult { */ export type ButtonClickedEventListener = (event: ButtonClickedEvent) => void; +/** + * @since 8.1.0 + */ +export type NotificationTappedEventListener = ( + event: NotificationTappedEvent, +) => void; + +/** + * @since 8.1.0 + */ +export interface NotificationTappedEvent { + /** + * The notification identifier. + * + * @since 8.1.0 + */ + notificationId: number; +} + /** * @since 0.2.0 */ From ae9058f4ec6fcf4831c906c49a7186337f95002d Mon Sep 17 00:00:00 2001 From: Simon Jackson Date: Thu, 12 Mar 2026 16:31:48 +0000 Subject: [PATCH 02/60] Deliver notification tap via intent extras instead of static method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pass the notification ID through the launch intent so the current plugin instance handles it — in load() for activity recreation and handleOnNewIntent() when the activity is alive. This mirrors the reliable delivery mechanism that deep links use and avoids events being lost on a stale plugin instance. Co-Authored-By: Claude Opus 4.6 --- .../ForegroundServicePlugin.java | 17 +++++++++++++++++ .../NotificationTapBroadcastReceiver.java | 3 +-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java index 23bdcad41..fc5f60df2 100644 --- a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java +++ b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java @@ -35,6 +35,7 @@ public class ForegroundServicePlugin extends Plugin { public static final String TAG = "ForegroundService"; public static final String BUTTON_CLICKED_EVENT = "buttonClicked"; public static final String NOTIFICATION_TAPPED_EVENT = "notificationTapped"; + public static final String NOTIFICATION_TAP_EXTRA = "foregroundServiceNotificationId"; public static Bridge staticBridge = null; private static final String MOVE_TO_FOREGROUND_CALLBACK_NAME = "moveToForegroundResult"; @@ -48,11 +49,27 @@ public void load() { try { staticBridge = this.bridge; implementation = new ForegroundService(this); + handleNotificationTapIntent(getActivity().getIntent()); } catch (Exception exception) { Logger.error(ForegroundServicePlugin.TAG, exception.getMessage(), exception); } } + @Override + protected void handleOnNewIntent(Intent intent) { + super.handleOnNewIntent(intent); + handleNotificationTapIntent(intent); + } + + private void handleNotificationTapIntent(Intent intent) { + if (intent == null || !intent.hasExtra(NOTIFICATION_TAP_EXTRA)) { + return; + } + int notificationId = intent.getIntExtra(NOTIFICATION_TAP_EXTRA, -1); + intent.removeExtra(NOTIFICATION_TAP_EXTRA); + handleNotificationTapped(notificationId); + } + @PluginMethod public void moveToForeground(PluginCall call) { try { diff --git a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/NotificationTapBroadcastReceiver.java b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/NotificationTapBroadcastReceiver.java index 7b72e9013..5fad3ab71 100644 --- a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/NotificationTapBroadcastReceiver.java +++ b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/NotificationTapBroadcastReceiver.java @@ -15,10 +15,9 @@ public void onReceive(Context context, Intent intent) { Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()); if (launchIntent != null) { launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); + launchIntent.putExtra(ForegroundServicePlugin.NOTIFICATION_TAP_EXTRA, notificationId); context.startActivity(launchIntent); } - - ForegroundServicePlugin.onNotificationTapped(notificationId); } catch (Exception exception) { Logger.error(ForegroundServicePlugin.TAG, exception.getMessage(), exception); } From 503e9050296bc2d9e7ce58d6ba53776e5d8d1730 Mon Sep 17 00:00:00 2001 From: Simon Jackson Date: Thu, 12 Mar 2026 17:02:44 +0000 Subject: [PATCH 03/60] Remove unused onNotificationTapped static method This method was superseded by the intent-based delivery in ae9058f. Keeping it around would invite use of the broken static-instance path. Co-Authored-By: Claude Opus 4.6 --- .../foregroundservice/ForegroundServicePlugin.java | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java index fc5f60df2..319e7850e 100644 --- a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java +++ b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java @@ -248,18 +248,6 @@ public void deleteNotificationChannel(PluginCall call) { } } - public static void onNotificationTapped(int notificationId) { - try { - ForegroundServicePlugin plugin = ForegroundServicePlugin.getForegroundServicePluginInstance(); - if (plugin == null) { - return; - } - plugin.handleNotificationTapped(notificationId); - } catch (Exception exception) { - Logger.error(ForegroundServicePlugin.TAG, exception.getMessage(), exception); - } - } - public static void onButtonClicked(int buttonId) { try { ForegroundServicePlugin plugin = ForegroundServicePlugin.getForegroundServicePluginInstance(); From 6b42f22fa60709503d5f301fa11386cb83b8086a Mon Sep 17 00:00:00 2001 From: Simon Jackson Date: Thu, 12 Mar 2026 17:04:25 +0000 Subject: [PATCH 04/60] Add comment explaining intent-based notification tap delivery --- .../plugins/foregroundservice/ForegroundServicePlugin.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java index 319e7850e..d237377fe 100644 --- a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java +++ b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java @@ -61,6 +61,10 @@ protected void handleOnNewIntent(Intent intent) { handleNotificationTapIntent(intent); } + // Notification taps are delivered via an intent extra rather than a static method call so that + // the tap is always handled by the current plugin instance. A static bridge reference can go + // stale when the activity is recreated (e.g. after a configuration change or process death), + // which would silently drop the event. private void handleNotificationTapIntent(Intent intent) { if (intent == null || !intent.hasExtra(NOTIFICATION_TAP_EXTRA)) { return; From f832fe3106a3a03809c35320631ac79a0b13a0b8 Mon Sep 17 00:00:00 2001 From: Simon Jackson Date: Thu, 12 Mar 2026 21:39:34 +0000 Subject: [PATCH 05/60] refactor(android-foreground-service): use direct activity PendingIntent instead of broadcast receiver Replace the notification trampoline pattern (broadcast receiver launching an activity) with a direct PendingIntent.getActivity, which is required on Android 12+. The notification tap extra is now passed directly on the launch intent and handled by the plugin via load() and handleOnNewIntent(). Co-Authored-By: Claude Opus 4.6 --- packages/android-foreground-service/README.md | 1 - .../AndroidForegroundService.java | 21 ++++++++++------ .../NotificationTapBroadcastReceiver.java | 25 ------------------- 3 files changed, 13 insertions(+), 34 deletions(-) delete mode 100644 packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/NotificationTapBroadcastReceiver.java diff --git a/packages/android-foreground-service/README.md b/packages/android-foreground-service/README.md index c95d965fd..b4cf7efd8 100644 --- a/packages/android-foreground-service/README.md +++ b/packages/android-foreground-service/README.md @@ -40,7 +40,6 @@ You also need to add the following receiver and service **inside** the `applicat ```xml - ``` diff --git a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/AndroidForegroundService.java b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/AndroidForegroundService.java index 3e82a738e..3df5ad507 100644 --- a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/AndroidForegroundService.java +++ b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/AndroidForegroundService.java @@ -77,14 +77,19 @@ public int onStartCommand(Intent intent, int flags, int startId) { } private PendingIntent buildContentIntent(int id) { - Intent intent = new Intent(this, NotificationTapBroadcastReceiver.class); - intent.putExtra("notificationId", id); - return PendingIntent.getBroadcast( - this, - id, - intent, - PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_CANCEL_CURRENT - ); + Intent launchIntent = getPackageManager().getLaunchIntentForPackage(getPackageName()); + if (launchIntent == null) { + return null; + } + launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); + launchIntent.putExtra(ForegroundServicePlugin.NOTIFICATION_TAP_EXTRA, id); + int pendingIntentFlags; + if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + pendingIntentFlags = PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE; + } else { + pendingIntentFlags = PendingIntent.FLAG_UPDATE_CURRENT; + } + return PendingIntent.getActivity(getApplicationContext(), id, launchIntent, pendingIntentFlags); } private Notification.Action[] convertBundlesToNotificationActions(Bundle[] bundles) { diff --git a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/NotificationTapBroadcastReceiver.java b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/NotificationTapBroadcastReceiver.java deleted file mode 100644 index 5fad3ab71..000000000 --- a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/NotificationTapBroadcastReceiver.java +++ /dev/null @@ -1,25 +0,0 @@ -package io.capawesome.capacitorjs.plugins.foregroundservice; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import com.getcapacitor.Logger; - -public class NotificationTapBroadcastReceiver extends BroadcastReceiver { - - @Override - public void onReceive(Context context, Intent intent) { - try { - int notificationId = intent.getIntExtra("notificationId", -1); - - Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()); - if (launchIntent != null) { - launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); - launchIntent.putExtra(ForegroundServicePlugin.NOTIFICATION_TAP_EXTRA, notificationId); - context.startActivity(launchIntent); - } - } catch (Exception exception) { - Logger.error(ForegroundServicePlugin.TAG, exception.getMessage(), exception); - } - } -} From 578fce907bc01da7bb8e17b7e9aa69c84bcd04f4 Mon Sep 17 00:00:00 2001 From: Lucas Date: Fri, 13 Mar 2026 10:25:06 +0100 Subject: [PATCH 06/60] feat(posthog): support reverse proxy host config (#797) * feat(posthog): support reverse proxy host config Add apiHost and uiHost configuration for managed reverse proxy setups on web while keeping host as a deprecated alias so existing configs continue to work. Update Android and iOS config handling to use apiHost consistently, warn when uiHost is ignored or host is deprecated, and refresh the README plus changeset. * fix(posthog): remove native uiHost warnings Document uiHost as a web-only option and stop logging warnings from the native plugin layers when it is provided. This keeps the reverse proxy configuration intact while aligning the implementation and generated README with the reviewed API contract. * docs(posthog): move reverse proxy note to advanced section Move the reverse proxy guidance out of the generated config block into a dedicated Advanced section with a single Reverse Proxy subsection above the changelog. * Update .changeset/green-mails-arrive.md Co-authored-by: Robin Genz --------- Co-authored-by: Robin Genz --- .changeset/green-mails-arrive.md | 5 ++ packages/posthog/README.md | 30 +++++++--- .../capacitorjs/plugins/posthog/Posthog.kt | 10 ++-- .../plugins/posthog/PosthogConfig.java | 10 ++-- .../plugins/posthog/PosthogPlugin.java | 22 +++++-- .../posthog/classes/options/SetupOptions.java | 10 ++-- .../Plugin/Classes/Options/SetupOptions.swift | 10 ++-- packages/posthog/ios/Plugin/Posthog.swift | 17 ++---- .../posthog/ios/Plugin/PosthogConfig.swift | 2 +- .../posthog/ios/Plugin/PosthogPlugin.swift | 24 ++++++-- packages/posthog/src/definitions.ts | 60 ++++++++++++++++--- packages/posthog/src/web.ts | 25 +++++++- 12 files changed, 166 insertions(+), 59 deletions(-) create mode 100644 .changeset/green-mails-arrive.md diff --git a/.changeset/green-mails-arrive.md b/.changeset/green-mails-arrive.md new file mode 100644 index 000000000..7115cbeb4 --- /dev/null +++ b/.changeset/green-mails-arrive.md @@ -0,0 +1,5 @@ +--- +"@capawesome/capacitor-posthog": minor +--- + +feat: add `apiHost` and `uiHost` configuration options diff --git a/packages/posthog/README.md b/packages/posthog/README.md index 1b7a511d9..b4416d167 100644 --- a/packages/posthog/README.md +++ b/packages/posthog/README.md @@ -38,12 +38,14 @@ This can be useful if you encounter dependency conflicts with other plugins in y -| Prop | Type | Description | Default | Since | -| ------------------------- | --------------------------------------------------------------------- | -------------------------------------------------- | --------------------------------------- | ----- | -| **`apiKey`** | string | The API key of your PostHog project. | | 7.1.0 | -| **`host`** | string | The host of your PostHog instance. | 'https://us.i.posthog.com' | 7.1.0 | -| **`enableSessionReplay`** | boolean | Whether to enable session recording automatically. | false | 7.3.0 | -| **`sessionReplayConfig`** | SessionReplayOptions | Session recording configuration options. | | 7.3.0 | +| Prop | Type | Description | Default | Since | +| ------------------------- | --------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | --------------------------------------- | ----- | +| **`apiKey`** | string | The API key of your PostHog project. | | 7.1.0 | +| **`apiHost`** | string | The API host of your PostHog instance or reverse proxy. | 'https://us.i.posthog.com' | 8.3.0 | +| **`host`** | string | The API host of your PostHog instance. Deprecated alias for `apiHost`. | 'https://us.i.posthog.com' | 7.1.0 | +| **`uiHost`** | string | The PostHog UI host used when `apiHost` points to a reverse proxy. Only available on Web. | | 8.3.0 | +| **`enableSessionReplay`** | boolean | Whether to enable session recording automatically. | false | 7.3.0 | +| **`sessionReplayConfig`** | SessionReplayOptions | Session recording configuration options. | | 7.3.0 | ### Examples @@ -54,7 +56,9 @@ In `capacitor.config.json`: "plugins": { "Posthog": { "apiKey": 'phc_g8wMenebiIQ1pYd5v9Vy7oakn6MczVKIsNG5ZHCspdy', + "apiHost": 'https://eu.i.posthog.com', "host": 'https://eu.i.posthog.com', + "uiHost": 'https://eu.posthog.com', "enableSessionReplay": undefined, "sessionReplayConfig": undefined } @@ -73,7 +77,9 @@ const config: CapacitorConfig = { plugins: { Posthog: { apiKey: 'phc_g8wMenebiIQ1pYd5v9Vy7oakn6MczVKIsNG5ZHCspdy', + apiHost: 'https://eu.i.posthog.com', host: 'https://eu.i.posthog.com', + uiHost: 'https://eu.posthog.com', enableSessionReplay: undefined, sessionReplayConfig: undefined, }, @@ -155,7 +161,7 @@ const screen = async () => { const setup = async () => { await Posthog.setup({ apiKey: 'YOUR_API_KEY', - host: 'https://eu.i.posthog.com', + apiHost: 'https://eu.i.posthog.com', }); }; @@ -635,9 +641,11 @@ Remove a super property. | Prop | Type | Description | Default | Since | | ------------------------- | --------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | ----- | | **`apiKey`** | string | The API key of your PostHog project. | | 6.0.0 | +| **`apiHost`** | string | The API host of your PostHog instance or reverse proxy. If both `apiHost` and `host` are provided, `apiHost` takes precedence. | 'https://us.i.posthog.com' | 8.3.0 | +| **`host`** | string | The API host of your PostHog instance. Deprecated alias for `apiHost`. | 'https://us.i.posthog.com' | 6.0.0 | +| **`uiHost`** | string | The PostHog UI host used when `apiHost` points to a reverse proxy. Only available on Web. | | 8.3.0 | | **`cookielessMode`** | 'always' \| 'on_reject' | Cookieless tracking mode. - `'always'`: Always use cookieless tracking with server-side anonymous hash. - `'on_reject'`: Normal tracking until `optOut()` is called, then switches to cookieless. Only available on Web. Requires cookieless mode to be enabled in PostHog project settings. | | 8.1.0 | | **`enableSessionReplay`** | boolean | Whether to enable session recording automatically. | false | 7.3.0 | -| **`host`** | string | The host of your PostHog instance. | 'https://us.i.posthog.com' | 6.0.0 | | **`optOut`** | boolean | Whether to opt out of capturing by default. User must call `optIn()` to enable capturing. | false | 8.1.0 | | **`sessionReplayConfig`** | SessionReplayOptions | Session replay configuration options. | | 7.3.0 | @@ -677,6 +685,12 @@ Construct a type with a set of properties K of type T +## Advanced + +### Reverse Proxy + +For PostHog managed reverse proxy, set `apiHost` to your proxy URL and `uiHost` to your PostHog app host (`https://us.posthog.com` or `https://eu.posthog.com`). `host` remains supported as a deprecated alias for `apiHost`. `uiHost` is only available on Web. + ## Changelog See [CHANGELOG.md](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/posthog/CHANGELOG.md). diff --git a/packages/posthog/android/src/main/java/io/capawesome/capacitorjs/plugins/posthog/Posthog.kt b/packages/posthog/android/src/main/java/io/capawesome/capacitorjs/plugins/posthog/Posthog.kt index d9c437ee8..abc4bd298 100644 --- a/packages/posthog/android/src/main/java/io/capawesome/capacitorjs/plugins/posthog/Posthog.kt +++ b/packages/posthog/android/src/main/java/io/capawesome/capacitorjs/plugins/posthog/Posthog.kt @@ -26,7 +26,7 @@ class Posthog(private val config: PosthogConfig, private val plugin: PosthogPlug init { val apiKey = config.getApiKey() if (apiKey != null) { - setup(apiKey, config.getHost(), config.getEnableSessionReplay(), false, config.getSessionReplayConfig()) + setup(apiKey, config.getApiHost(), config.getEnableSessionReplay(), false, config.getSessionReplayConfig()) } } @@ -123,12 +123,12 @@ class Posthog(private val config: PosthogConfig, private val plugin: PosthogPlug fun setup(options: SetupOptions) { val apiKey = options.apiKey - val host = options.host + val apiHost = options.apiHost val enableSessionReplay = options.enableSessionReplay val optOut = options.optOut val sessionReplayConfig = options.sessionReplayConfig - setup(apiKey, host, enableSessionReplay, optOut, sessionReplayConfig) + setup(apiKey, apiHost, enableSessionReplay, optOut, sessionReplayConfig) } fun unregister(options: UnregisterOptions) { @@ -137,10 +137,10 @@ class Posthog(private val config: PosthogConfig, private val plugin: PosthogPlug com.posthog.PostHog.unregister(key = key) } - private fun setup(apiKey: String, host: String, enableSessionReplay: Boolean = false, optOut: Boolean = false, sessionReplayConfig: SessionReplayOptions? = null) { + private fun setup(apiKey: String, apiHost: String, enableSessionReplay: Boolean = false, optOut: Boolean = false, sessionReplayConfig: SessionReplayOptions? = null) { val posthogConfig = PostHogAndroidConfig( apiKey = apiKey, - host = host + host = apiHost ) posthogConfig.captureScreenViews = false posthogConfig.optOut = optOut diff --git a/packages/posthog/android/src/main/java/io/capawesome/capacitorjs/plugins/posthog/PosthogConfig.java b/packages/posthog/android/src/main/java/io/capawesome/capacitorjs/plugins/posthog/PosthogConfig.java index 1e9349093..62bfc9d6e 100644 --- a/packages/posthog/android/src/main/java/io/capawesome/capacitorjs/plugins/posthog/PosthogConfig.java +++ b/packages/posthog/android/src/main/java/io/capawesome/capacitorjs/plugins/posthog/PosthogConfig.java @@ -8,7 +8,7 @@ public class PosthogConfig { @Nullable private String apiKey = null; - private String host = "https://us.i.posthog.com"; + private String apiHost = "https://us.i.posthog.com"; private boolean enableSessionReplay = false; @@ -20,8 +20,8 @@ public String getApiKey() { return apiKey; } - public String getHost() { - return host; + public String getApiHost() { + return apiHost; } public boolean getEnableSessionReplay() { @@ -37,8 +37,8 @@ public void setApiKey(@Nullable String apiKey) { this.apiKey = apiKey; } - public void setHost(String host) { - this.host = host; + public void setApiHost(String apiHost) { + this.apiHost = apiHost; } public void setEnableSessionReplay(boolean enableSessionReplay) { diff --git a/packages/posthog/android/src/main/java/io/capawesome/capacitorjs/plugins/posthog/PosthogPlugin.java b/packages/posthog/android/src/main/java/io/capawesome/capacitorjs/plugins/posthog/PosthogPlugin.java index caef0d913..53080e6b9 100644 --- a/packages/posthog/android/src/main/java/io/capawesome/capacitorjs/plugins/posthog/PosthogPlugin.java +++ b/packages/posthog/android/src/main/java/io/capawesome/capacitorjs/plugins/posthog/PosthogPlugin.java @@ -283,11 +283,11 @@ public void setup(PluginCall call) { call.reject(ERROR_API_KEY_MISSING); return; } - String host = call.getString("host", "https://us.i.posthog.com"); + String apiHost = getApiHost(call.getString("apiHost"), call.getString("host")); Boolean enableSessionReplay = call.getBoolean("enableSessionReplay", false); Boolean optOut = call.getBoolean("optOut", false); - SetupOptions options = new SetupOptions(apiKey, host); + SetupOptions options = new SetupOptions(apiKey, apiHost); options.setEnableSessionReplay(enableSessionReplay != null ? enableSessionReplay : false); options.setOptOut(optOut != null ? optOut : false); @@ -334,14 +334,28 @@ private PosthogConfig getPosthogConfig() { String apiKey = getConfig().getString("apiKey", config.getApiKey()); config.setApiKey(apiKey); - String host = getConfig().getString("host", config.getHost()); - config.setHost(host); + String apiHost = getApiHost(getConfig().getString("apiHost"), getConfig().getString("host")); + config.setApiHost(apiHost); boolean enableSessionReplay = getConfig().getBoolean("enableSessionReplay", config.getEnableSessionReplay()); config.setEnableSessionReplay(enableSessionReplay); return config; } + private String getApiHost(@Nullable String apiHost, @Nullable String host) { + if (apiHost != null) { + if (host != null && !host.equals(apiHost)) { + Logger.warn(TAG, "Both apiHost and host are set. Using apiHost."); + } + return apiHost; + } + if (host != null) { + Logger.warn(TAG, "host is deprecated. Use apiHost instead."); + return host; + } + return "https://us.i.posthog.com"; + } + private void resolveCall(@NonNull PluginCall call, @Nullable JSObject result) { if (result == null) { call.resolve(); diff --git a/packages/posthog/android/src/main/java/io/capawesome/capacitorjs/plugins/posthog/classes/options/SetupOptions.java b/packages/posthog/android/src/main/java/io/capawesome/capacitorjs/plugins/posthog/classes/options/SetupOptions.java index 1849d6524..ea3e1bf84 100644 --- a/packages/posthog/android/src/main/java/io/capawesome/capacitorjs/plugins/posthog/classes/options/SetupOptions.java +++ b/packages/posthog/android/src/main/java/io/capawesome/capacitorjs/plugins/posthog/classes/options/SetupOptions.java @@ -9,7 +9,7 @@ public class SetupOptions { private String apiKey; @NonNull - private String host; + private String apiHost; @Nullable private Boolean enableSessionReplay; @@ -20,9 +20,9 @@ public class SetupOptions { @Nullable private SessionReplayOptions sessionReplayConfig; - public SetupOptions(@NonNull String apiKey, @NonNull String host) { + public SetupOptions(@NonNull String apiKey, @NonNull String apiHost) { this.apiKey = apiKey; - this.host = host; + this.apiHost = apiHost; } @NonNull @@ -31,8 +31,8 @@ public String getApiKey() { } @NonNull - public String getHost() { - return host; + public String getApiHost() { + return apiHost; } public boolean getEnableSessionReplay() { diff --git a/packages/posthog/ios/Plugin/Classes/Options/SetupOptions.swift b/packages/posthog/ios/Plugin/Classes/Options/SetupOptions.swift index 033abb83b..92e5020cb 100644 --- a/packages/posthog/ios/Plugin/Classes/Options/SetupOptions.swift +++ b/packages/posthog/ios/Plugin/Classes/Options/SetupOptions.swift @@ -2,14 +2,14 @@ import Foundation @objc public class SetupOptions: NSObject { private var apiKey: String - private var host: String + private var apiHost: String private var enableSessionReplay: Bool private var optOut: Bool private var sessionReplayConfig: SessionReplayOptions? - init(apiKey: String, host: String, enableSessionReplay: Bool, optOut: Bool, sessionReplayConfig: [String: Any]?) { + init(apiKey: String, apiHost: String, enableSessionReplay: Bool, optOut: Bool, sessionReplayConfig: [String: Any]?) { self.apiKey = apiKey - self.host = host + self.apiHost = apiHost self.enableSessionReplay = enableSessionReplay self.optOut = optOut @@ -29,8 +29,8 @@ import Foundation return apiKey } - func getHost() -> String { - return host + func getApiHost() -> String { + return apiHost } func getEnableSessionReplay() -> Bool { diff --git a/packages/posthog/ios/Plugin/Posthog.swift b/packages/posthog/ios/Plugin/Posthog.swift index 3edc240e8..f4488117c 100644 --- a/packages/posthog/ios/Plugin/Posthog.swift +++ b/packages/posthog/ios/Plugin/Posthog.swift @@ -2,15 +2,10 @@ import Foundation import PostHog @objc public class Posthog: NSObject { - private let config: PosthogConfig - private let plugin: PosthogPlugin - - init(config: PosthogConfig, plugin: PosthogPlugin) { - self.config = config - self.plugin = plugin + init(config: PosthogConfig) { super.init() if let apiKey = config.apiKey { - self.setup(apiKey: apiKey, host: config.host, enableSessionReplay: config.enableSessionReplay, sessionReplayConfig: config.sessionReplayConfig) + self.setup(apiKey: apiKey, apiHost: config.apiHost, enableSessionReplay: config.enableSessionReplay, sessionReplayConfig: config.sessionReplayConfig) // Start session recording if configured if config.enableSessionReplay { @@ -115,12 +110,12 @@ import PostHog @objc public func setup(_ options: SetupOptions) { let apiKey = options.getApiKey() - let host = options.getHost() + let apiHost = options.getApiHost() let enableSessionReplay = options.getEnableSessionReplay() let optOut = options.getOptOut() let sessionReplayConfig = options.getSessionReplayConfig() - setup(apiKey: apiKey, host: host, enableSessionReplay: enableSessionReplay, optOut: optOut, sessionReplayConfig: sessionReplayConfig) + setup(apiKey: apiKey, apiHost: apiHost, enableSessionReplay: enableSessionReplay, optOut: optOut, sessionReplayConfig: sessionReplayConfig) } @objc public func startSessionRecording() { @@ -131,8 +126,8 @@ import PostHog PostHogSDK.shared.stopSessionRecording() } - private func setup(apiKey: String, host: String, enableSessionReplay: Bool = false, optOut: Bool = false, sessionReplayConfig: SessionReplayOptions? = nil) { - let config = PostHogConfig(apiKey: apiKey, host: host) + private func setup(apiKey: String, apiHost: String, enableSessionReplay: Bool = false, optOut: Bool = false, sessionReplayConfig: SessionReplayOptions? = nil) { + let config = PostHogConfig(apiKey: apiKey, host: apiHost) config.captureScreenViews = false config.optOut = optOut config.sessionReplay = enableSessionReplay diff --git a/packages/posthog/ios/Plugin/PosthogConfig.swift b/packages/posthog/ios/Plugin/PosthogConfig.swift index eebb5f248..7db83385d 100644 --- a/packages/posthog/ios/Plugin/PosthogConfig.swift +++ b/packages/posthog/ios/Plugin/PosthogConfig.swift @@ -2,7 +2,7 @@ import Foundation public struct PosthogConfig { var apiKey: String? - var host = "https://us.i.posthog.com" + var apiHost = "https://us.i.posthog.com" var enableSessionReplay = false var sessionReplayConfig: SessionReplayOptions? } diff --git a/packages/posthog/ios/Plugin/PosthogPlugin.swift b/packages/posthog/ios/Plugin/PosthogPlugin.swift index 410548bed..b1b9cdc3b 100644 --- a/packages/posthog/ios/Plugin/PosthogPlugin.swift +++ b/packages/posthog/ios/Plugin/PosthogPlugin.swift @@ -37,7 +37,7 @@ public class PosthogPlugin: CAPPlugin, CAPBridgedPlugin { private var implementation: Posthog? override public func load() { - self.implementation = Posthog(config: posthogConfig(), plugin: self) + self.implementation = Posthog(config: posthogConfig()) } @objc func alias(_ call: CAPPluginCall) { @@ -202,12 +202,12 @@ public class PosthogPlugin: CAPPlugin, CAPBridgedPlugin { call.reject(CustomError.apiKeyMissing.localizedDescription) return } - let host = call.getString("host", "https://us.i.posthog.com") + let apiHost = getApiHost(apiHost: call.getString("apiHost"), host: call.getString("host")) let enableSessionReplay = call.getBool("enableSessionReplay", false) let optOut = call.getBool("optOut", false) let sessionReplayConfig = call.getObject("sessionReplayConfig") - let options = SetupOptions(apiKey: apiKey, host: host, enableSessionReplay: enableSessionReplay, optOut: optOut, sessionReplayConfig: sessionReplayConfig) + let options = SetupOptions(apiKey: apiKey, apiHost: apiHost, enableSessionReplay: enableSessionReplay, optOut: optOut, sessionReplayConfig: sessionReplayConfig) implementation?.setup(options) call.resolve() @@ -239,7 +239,7 @@ public class PosthogPlugin: CAPPlugin, CAPBridgedPlugin { var config = PosthogConfig() config.apiKey = getConfig().getString("apiKey", config.apiKey) - config.host = getConfig().getString("host") ?? config.host + config.apiHost = getApiHost(apiHost: getConfig().getString("apiHost"), host: getConfig().getString("host"), defaultValue: config.apiHost) config.enableSessionReplay = getConfig().getBoolean("enableSessionReplay", config.enableSessionReplay) if let sessionReplayConfigDict = getConfig().getObject("sessionReplayConfig") as? [String: Any] { @@ -256,6 +256,22 @@ public class PosthogPlugin: CAPPlugin, CAPBridgedPlugin { return config } + private func getApiHost(apiHost: String?, host: String?, defaultValue: String = "https://us.i.posthog.com") -> String { + if let apiHost { + if let host, host != apiHost { + CAPLog.print("[", PosthogPlugin.tag, "] Both apiHost and host are set. Using apiHost.") + } + return apiHost + } + + if let host { + CAPLog.print("[", PosthogPlugin.tag, "] host is deprecated. Use apiHost instead.") + return host + } + + return defaultValue + } + private func rejectCall(_ call: CAPPluginCall, _ error: Error) { CAPLog.print("[", PosthogPlugin.tag, "] ", error) call.reject(error.localizedDescription) diff --git a/packages/posthog/src/definitions.ts b/packages/posthog/src/definitions.ts index 29f8808b5..ce4673c04 100644 --- a/packages/posthog/src/definitions.ts +++ b/packages/posthog/src/definitions.ts @@ -11,13 +11,33 @@ declare module '@capacitor/cli' { */ apiKey?: string; /** - * The host of your PostHog instance. + * The API host of your PostHog instance or reverse proxy. + * + * @since 8.3.0 + * @default 'https://us.i.posthog.com' + * @example 'https://eu.i.posthog.com' + */ + apiHost?: string; + /** + * The API host of your PostHog instance. + * + * Deprecated alias for `apiHost`. * * @since 7.1.0 * @default 'https://us.i.posthog.com' * @example 'https://eu.i.posthog.com' + * @deprecated Use `apiHost` instead. */ host?: string; + /** + * The PostHog UI host used when `apiHost` points to a reverse proxy. + * + * Only available on Web. + * + * @since 8.3.0 + * @example 'https://eu.posthog.com' + */ + uiHost?: string; /** * Whether to enable session recording automatically. * @@ -385,6 +405,36 @@ export interface SetupOptions { * @example 'phc_g8wMenebiIQ1pYd5v9Vy7oakn6MczVKIsNG5ZHCspdy' */ apiKey: string; + /** + * The API host of your PostHog instance or reverse proxy. + * + * If both `apiHost` and `host` are provided, `apiHost` takes precedence. + * + * @since 8.3.0 + * @default 'https://us.i.posthog.com' + * @example 'https://eu.i.posthog.com' + */ + apiHost?: string; + /** + * The API host of your PostHog instance. + * + * Deprecated alias for `apiHost`. + * + * @since 6.0.0 + * @default 'https://us.i.posthog.com' + * @example 'https://eu.i.posthog.com' + * @deprecated Use `apiHost` instead. + */ + host?: string; + /** + * The PostHog UI host used when `apiHost` points to a reverse proxy. + * + * Only available on Web. + * + * @since 8.3.0 + * @example 'https://eu.posthog.com' + */ + uiHost?: string; /** * Cookieless tracking mode. * @@ -404,14 +454,6 @@ export interface SetupOptions { * @default false */ enableSessionReplay?: boolean; - /** - * The host of your PostHog instance. - * - * @since 6.0.0 - * @default 'https://us.i.posthog.com' - * @example 'https://eu.i.posthog.com' - */ - host?: string; /** * Whether to opt out of capturing by default. * diff --git a/packages/posthog/src/web.ts b/packages/posthog/src/web.ts index 33f724f5d..7e14d8dde 100644 --- a/packages/posthog/src/web.ts +++ b/packages/posthog/src/web.ts @@ -94,17 +94,22 @@ export class PosthogWeb extends WebPlugin implements PosthogPlugin { } async screen(_options: ScreenOptions): Promise { + void _options; this.throwUnimplementedError(); } async setup(options: SetupOptions): Promise { - const host = options.host || 'https://us.i.posthog.com'; + const apiHost = this.getApiHost(options.apiHost, options.host); const config: Partial & { cookieless_mode?: 'always' | 'on_reject'; } = { - api_host: host, + api_host: apiHost, }; + if (options.uiHost) { + config.ui_host = options.uiHost; + } + if (options.optOut) { config.opt_out_capturing_by_default = true; } @@ -144,4 +149,20 @@ export class PosthogWeb extends WebPlugin implements PosthogPlugin { private throwUnimplementedError(): never { throw this.unimplemented('Not implemented on web.'); } + + private getApiHost(apiHost?: string, host?: string): string { + if (apiHost) { + if (host && host !== apiHost) { + console.warn('[Posthog] Both apiHost and host are set. Using apiHost.'); + } + return apiHost; + } + + if (host) { + console.warn('[Posthog] host is deprecated. Use apiHost instead.'); + return host; + } + + return 'https://us.i.posthog.com'; + } } From be3b49ee7128267a0b3cc28ba845f5ccf40281ea Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 13 Mar 2026 10:37:31 +0100 Subject: [PATCH 07/60] chore(release): publish (#798) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/green-mails-arrive.md | 5 ----- packages/posthog/CHANGELOG.md | 6 ++++++ packages/posthog/package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/green-mails-arrive.md diff --git a/.changeset/green-mails-arrive.md b/.changeset/green-mails-arrive.md deleted file mode 100644 index 7115cbeb4..000000000 --- a/.changeset/green-mails-arrive.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@capawesome/capacitor-posthog": minor ---- - -feat: add `apiHost` and `uiHost` configuration options diff --git a/packages/posthog/CHANGELOG.md b/packages/posthog/CHANGELOG.md index 12bfda802..6830873d3 100644 --- a/packages/posthog/CHANGELOG.md +++ b/packages/posthog/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 8.3.0 + +### Minor Changes + +- [`578fce907bc01da7bb8e17b7e9aa69c84bcd04f4`](https://github.com/capawesome-team/capacitor-plugins/commit/578fce907bc01da7bb8e17b7e9aa69c84bcd04f4) ([#797](https://github.com/capawesome-team/capacitor-plugins/pull/797)): feat: add `apiHost` and `uiHost` configuration options + ## 8.2.1 ### Patch Changes diff --git a/packages/posthog/package.json b/packages/posthog/package.json index d7d72ecae..3eea4aeb1 100644 --- a/packages/posthog/package.json +++ b/packages/posthog/package.json @@ -1,6 +1,6 @@ { "name": "@capawesome/capacitor-posthog", - "version": "8.2.1", + "version": "8.3.0", "description": "Unofficial Capacitor plugin for PostHog SDK.", "main": "dist/plugin.cjs.js", "module": "dist/esm/index.js", From c7696ffe38058eb9dcd5881d11b91d64ac80173e Mon Sep 17 00:00:00 2001 From: Robin Genz Date: Sat, 14 Mar 2026 17:29:03 +0100 Subject: [PATCH 08/60] docs: update documentation of various packages --- packages/libsql/README.md | 4 +-- packages/live-update/README.md | 14 +++++++-- packages/live-update/src/definitions.ts | 2 ++ packages/posthog/README.md | 41 ++++++++++--------------- 4 files changed, 32 insertions(+), 29 deletions(-) diff --git a/packages/libsql/README.md b/packages/libsql/README.md index 9cfaf4d3e..3705e6972 100644 --- a/packages/libsql/README.md +++ b/packages/libsql/README.md @@ -191,7 +191,7 @@ execute(options: ExecuteOptions) => Promise Execute a single SQL statement on the specified database connection. -This method can be used to execute any SQL statement, including +This method can be used to execute any SQL statement, including `INSERT`, `UPDATE`, `DELETE`, and `CREATE TABLE`. | Param | Type | @@ -230,7 +230,7 @@ query(options: QueryOptions) => Promise Query the database and return the result set. -This method can be used to execute `SELECT` statements +This method can be used to execute `SELECT` statements and retrieve the result set. | Param | Type | diff --git a/packages/live-update/README.md b/packages/live-update/README.md index 93a0da41b..b0e096bf4 100644 --- a/packages/live-update/README.md +++ b/packages/live-update/README.md @@ -995,7 +995,7 @@ Remove all listeners for this plugin. | Prop | Type | Description | Since | | ---------------------- | --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- | | **`artifactType`** | 'manifest' \| 'zip' | The artifact type of the bundle. | 6.7.0 | -| **`bundleId`** | string \| null | The unique identifier of the latest bundle. If `null`, no bundle is available. | 6.6.0 | +| **`bundleId`** | string \| null | The unique identifier of the latest bundle. On Capawesome Cloud, this is the ID of the app build artifact. If `null`, no bundle is available. | 6.6.0 | | **`checksum`** | string | The checksum of the latest bundle if the bundle is self-hosted. If the bundle is hosted on Capawesome Cloud, the checksum will be returned as response header when downloading the bundle. | 7.1.0 | | **`customProperties`** | { [key: string]: string; } | Custom properties that are associated with the latest bundle. | 7.0.0 | | **`downloadUrl`** | string | The URL of the latest bundle to download. Pass this URL to the `downloadBundle(...)` method to download the bundle. | 6.7.0 | @@ -1228,6 +1228,13 @@ For this reason, you must be careful to [restrict live updates to compatible nat ## FAQ +### What is a bundle? + +A bundle is a set of web assets (HTML, CSS, JavaScript, etc.) that make up your app's user interface. +The plugin manages two types of bundles: the **built-in bundle** that ships with the native app binary, and **live update bundles** that are downloaded at runtime to update the app without a native release. +Each live update bundle has a unique **bundle ID** returned by the [`fetchLatestBundle(...)`](#fetchlatestbundle) method. +On Capawesome Cloud, the bundle ID corresponds to the ID of the app build artifact. + ### How do I set a channel? There are four ways to set a channel, listed from lowest to highest priority: @@ -1237,8 +1244,9 @@ There are four ways to set a channel, listed from lowest to highest priority: 3. **[`setChannel(...)`](#setchannel)**: Set the channel at runtime. The value is persisted across app restarts. 4. **[`sync(...)`](#sync)**: Pass a `channel` option to override the channel for a single sync call. This does **not** persist the channel. -Each method overrides the ones above it. -You can check the currently resolved channel by calling [`getChannel()`](#getchannel). +Each method overrides the ones above it. You can check the currently resolved channel by calling [`getChannel()`](#getchannel). + +Additionally, Capawesome Cloud supports [forced channel assignments](https://capawesome.io/blog/capawesome-cloud-forced-channel-assignments/) which allow you to override the channel for a specific device without any app code changes. Please note that forced channel assignments have a higher priority than all of the above methods and should be used with caution. ### Why can't I see my changes during development? diff --git a/packages/live-update/src/definitions.ts b/packages/live-update/src/definitions.ts index 34346e627..f5ea6eed3 100644 --- a/packages/live-update/src/definitions.ts +++ b/packages/live-update/src/definitions.ts @@ -577,6 +577,8 @@ export interface FetchLatestBundleResult { artifactType?: 'manifest' | 'zip'; /** * The unique identifier of the latest bundle. + * + * On Capawesome Cloud, this is the ID of the app build artifact. * * If `null`, no bundle is available. * diff --git a/packages/posthog/README.md b/packages/posthog/README.md index b4416d167..e908bedb0 100644 --- a/packages/posthog/README.md +++ b/packages/posthog/README.md @@ -541,10 +541,10 @@ Remove a super property. #### CaptureOptions -| Prop | Type | Description | Since | -| ---------------- | ------------------------------------------------------------ | -------------------------------------- | ----- | -| **`event`** | string | The name of the event to capture. | 6.0.0 | -| **`properties`** | Record<string, any> | The properties to send with the event. | 6.0.0 | +| Prop | Type | Description | Since | +| ---------------- | -------------------------------------- | -------------------------------------- | ----- | +| **`event`** | string | The name of the event to capture. | 6.0.0 | +| **`properties`** | Record<string, any> | The properties to send with the event. | 6.0.0 | #### GetDistinctIdResult @@ -584,19 +584,19 @@ Remove a super property. #### GroupOptions -| Prop | Type | Description | Since | -| --------------------- | ------------------------------------------------------------ | -------------------------------------------- | ----- | -| **`type`** | string | The group type. | 6.0.0 | -| **`key`** | string | The group key. | 6.0.0 | -| **`groupProperties`** | Record<string, any> | The properties to send with the group event. | 6.0.0 | +| Prop | Type | Description | Since | +| --------------------- | -------------------------------------- | -------------------------------------------- | ----- | +| **`type`** | string | The group type. | 6.0.0 | +| **`key`** | string | The group key. | 6.0.0 | +| **`groupProperties`** | Record<string, any> | The properties to send with the group event. | 6.0.0 | #### IdentifyOptions -| Prop | Type | Description | Since | -| -------------------- | ------------------------------------------------------------ | ----------------------------- | ----- | -| **`distinctId`** | string | The distinct ID of the user. | 6.0.0 | -| **`userProperties`** | Record<string, any> | The person properties to set. | 6.0.0 | +| Prop | Type | Description | Since | +| -------------------- | -------------------------------------- | ----------------------------- | ----- | +| **`distinctId`** | string | The distinct ID of the user. | 6.0.0 | +| **`userProperties`** | Record<string, any> | The person properties to set. | 6.0.0 | #### IsFeatureEnabledResult @@ -630,10 +630,10 @@ Remove a super property. #### ScreenOptions -| Prop | Type | Description | Since | -| ----------------- | ------------------------------------------------------------ | --------------------------------------------- | ----- | -| **`screenTitle`** | string | The name of the screen. | 6.0.0 | -| **`properties`** | Record<string, any> | The properties to send with the screen event. | 6.0.0 | +| Prop | Type | Description | Since | +| ----------------- | -------------------------------------- | --------------------------------------------- | ----- | +| **`screenTitle`** | string | The name of the screen. | 6.0.0 | +| **`properties`** | Record<string, any> | The properties to send with the screen event. | 6.0.0 | #### SetupOptions @@ -672,13 +672,6 @@ Remove a super property. ### Type Aliases -#### Record - -Construct a type with a set of properties K of type T - -{ [P in K]: T; } - - #### JsonType string | number | boolean | null | { [key: string]: JsonType; } | JsonType[] From a6143436d79c6c83df961f88e238f1b4f0716ce1 Mon Sep 17 00:00:00 2001 From: Robin Genz Date: Sat, 14 Mar 2026 17:44:55 +0100 Subject: [PATCH 09/60] style: format --- packages/live-update/src/definitions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/live-update/src/definitions.ts b/packages/live-update/src/definitions.ts index f5ea6eed3..c5606c0aa 100644 --- a/packages/live-update/src/definitions.ts +++ b/packages/live-update/src/definitions.ts @@ -577,7 +577,7 @@ export interface FetchLatestBundleResult { artifactType?: 'manifest' | 'zip'; /** * The unique identifier of the latest bundle. - * + * * On Capawesome Cloud, this is the ID of the app build artifact. * * If `null`, no bundle is available. From 8284fc5007f61aacfbded59f26785d14302f6fc4 Mon Sep 17 00:00:00 2001 From: Robin Genz Date: Mon, 16 Mar 2026 08:37:45 +0100 Subject: [PATCH 10/60] docs(live-update): update `Maintenance` section --- packages/live-update/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/live-update/README.md b/packages/live-update/README.md index b0e096bf4..6b9fd26ae 100644 --- a/packages/live-update/README.md +++ b/packages/live-update/README.md @@ -37,7 +37,7 @@ Missing a feature? Just [open an issue](https://github.com/capawesome-team/capac | -------------- | ----------------- | -------------- | | 8.x.x | >=8.x.x | Active support | | 7.x.x | 7.x.x | Maintenance | -| 6.x.x | 6.x.x | Deprecated | +| 6.x.x | 6.x.x | Maintenance | | 5.x.x | 5.x.x | Deprecated | ## Guides From bb837940544c41afdb9f585f22dccbb2d2be26e4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:49:20 +0000 Subject: [PATCH 11/60] docs(accelerometer): update `README.md` --- packages/accelerometer/README.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/accelerometer/README.md b/packages/accelerometer/README.md index 33b14d77b..f731d344e 100644 --- a/packages/accelerometer/README.md +++ b/packages/accelerometer/README.md @@ -32,7 +32,7 @@ Missing a feature? Just [open an issue](https://github.com/capawesome-team/capac ## Installation -This plugin is only available to [Capawesome Insiders](https://capawesome.io/sponsors/insiders/). +This plugin is only available to [Capawesome Insiders](https://capawesome.io/insiders/). First, make sure you have the Capawesome npm registry set up. You can do this by running the following commands: @@ -41,11 +41,22 @@ npm config set @capawesome-team:registry https://npm.registry.capawesome.io npm config set //npm.registry.capawesome.io/:_authToken ``` -**Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/sponsors/insiders/). +**Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-accelerometer` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-accelerometer npx cap sync ``` From 1e21df42a537e56ebc0a395437601ee5ac544da9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:49:31 +0000 Subject: [PATCH 12/60] docs(audio-player): update `README.md` --- packages/audio-player/README.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/audio-player/README.md b/packages/audio-player/README.md index 6cdc6537a..b4f2fe9af 100644 --- a/packages/audio-player/README.md +++ b/packages/audio-player/README.md @@ -37,7 +37,7 @@ Missing a feature? Just [open an issue](https://github.com/capawesome-team/capac ## Installation -This plugin is only available to [Capawesome Insiders](https://capawesome.io/sponsors/insiders/). +This plugin is only available to [Capawesome Insiders](https://capawesome.io/insiders/). First, make sure you have the Capawesome npm registry set up. You can do this by running the following commands: @@ -46,11 +46,22 @@ npm config set @capawesome-team:registry https://npm.registry.capawesome.io npm config set //npm.registry.capawesome.io/:_authToken ``` -**Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/sponsors/insiders/). +**Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-audio-player` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-audio-player npx cap sync ``` From f03665145fa525bf90742715b0448187ea76cc3b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:49:43 +0000 Subject: [PATCH 13/60] docs(audio-recorder): update `README.md` --- packages/audio-recorder/README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/audio-recorder/README.md b/packages/audio-recorder/README.md index e4f35136e..79ca698d6 100644 --- a/packages/audio-recorder/README.md +++ b/packages/audio-recorder/README.md @@ -51,9 +51,20 @@ npm config set //npm.registry.capawesome.io/:_authToken **Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-audio-recorder` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-audio-recorder npx cap sync ``` From 15ec9c8dc1250fa915e7aef9243b78171ef34a1b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:49:56 +0000 Subject: [PATCH 14/60] docs(barometer): update `README.md` --- packages/barometer/README.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/barometer/README.md b/packages/barometer/README.md index f1b123bda..573b6d8c9 100644 --- a/packages/barometer/README.md +++ b/packages/barometer/README.md @@ -40,7 +40,7 @@ Missing a feature? Just [open an issue](https://github.com/capawesome-team/capac ## Installation -This plugin is only available to [Capawesome Insiders](https://capawesome.io/sponsors/insiders/). +This plugin is only available to [Capawesome Insiders](https://capawesome.io/insiders/). First, make sure you have the Capawesome npm registry set up. You can do this by running the following commands: @@ -49,11 +49,22 @@ npm config set @capawesome-team:registry https://npm.registry.capawesome.io npm config set //npm.registry.capawesome.io/:_authToken ``` -**Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/sponsors/insiders/). +**Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-barometer` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-barometer npx cap sync ``` From f1746438d78e5ec3d7fb081cbfa4c252d95c1a3b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:50:08 +0000 Subject: [PATCH 15/60] docs(biometrics): update `README.md` --- packages/biometrics/README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/biometrics/README.md b/packages/biometrics/README.md index 200a9810f..764307998 100644 --- a/packages/biometrics/README.md +++ b/packages/biometrics/README.md @@ -54,9 +54,20 @@ npm config set //npm.registry.capawesome.io/:_authToken **Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-biometrics` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-biometrics npx cap sync ``` From 5dfd6eaf8f15801d5999c9278d6184794e521000 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:50:20 +0000 Subject: [PATCH 16/60] docs(bluetooth-low-energy): update `README.md` --- packages/bluetooth-low-energy/README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/bluetooth-low-energy/README.md b/packages/bluetooth-low-energy/README.md index a6c197d33..46ef7f6fa 100644 --- a/packages/bluetooth-low-energy/README.md +++ b/packages/bluetooth-low-energy/README.md @@ -69,9 +69,20 @@ npm config set //npm.registry.capawesome.io/:_authToken **Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-bluetooth-low-energy` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-bluetooth-low-energy npx cap sync ``` From 3391dc14cb545e1dd2c549616632bc35df21ef75 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:50:35 +0000 Subject: [PATCH 17/60] docs(contacts): update `README.md` --- packages/contacts/README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/contacts/README.md b/packages/contacts/README.md index e3578831d..e63e61663 100644 --- a/packages/contacts/README.md +++ b/packages/contacts/README.md @@ -55,9 +55,20 @@ npm config set //npm.registry.capawesome.io/:_authToken **Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-contacts` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-contacts npx cap sync ``` From 6e4ae7dcbb345445a589e69b2c09b578c067c693 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:50:47 +0000 Subject: [PATCH 18/60] docs(file-compressor): update `README.md` --- packages/file-compressor/README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/file-compressor/README.md b/packages/file-compressor/README.md index dbefb17ce..cee6eff1c 100644 --- a/packages/file-compressor/README.md +++ b/packages/file-compressor/README.md @@ -55,9 +55,20 @@ npm config set //npm.registry.capawesome.io/:_authToken **Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-file-compressor` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-file-compressor npx cap sync ``` From b24639cde489fd7599e56aa62a267f57fcd14193 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:51:00 +0000 Subject: [PATCH 19/60] docs(geocoder): update `README.md` --- packages/geocoder/README.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/geocoder/README.md b/packages/geocoder/README.md index f91b855a1..68ac06f0d 100644 --- a/packages/geocoder/README.md +++ b/packages/geocoder/README.md @@ -41,7 +41,7 @@ Missing a feature? Just [open an issue](https://github.com/capawesome-team/capac ## Installation -This plugin is only available to [Capawesome Insiders](https://capawesome.io/sponsors/insiders/). +This plugin is only available to [Capawesome Insiders](https://capawesome.io/insiders/). First, make sure you have the Capawesome npm registry set up. You can do this by running the following commands: @@ -50,11 +50,22 @@ npm config set @capawesome-team:registry https://npm.registry.capawesome.io npm config set //npm.registry.capawesome.io/:_authToken ``` -**Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/sponsors/insiders/). +**Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-geocoder` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-geocoder universal-geocoder npx cap sync ``` From cbc1272311c8c887fd6890841b76e75385422dc7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:51:13 +0000 Subject: [PATCH 20/60] docs(media-session): update `README.md` --- packages/media-session/README.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/media-session/README.md b/packages/media-session/README.md index 822f0ba7e..df5367e53 100644 --- a/packages/media-session/README.md +++ b/packages/media-session/README.md @@ -42,7 +42,7 @@ Missing a feature? Just [open an issue](https://github.com/capawesome-team/capac ## Installation -This plugin is only available to [Capawesome Insiders](https://capawesome.io/sponsors/insiders/). +This plugin is only available to [Capawesome Insiders](https://capawesome.io/insiders/). First, make sure you have the Capawesome npm registry set up. You can do this by running the following commands: @@ -51,11 +51,22 @@ npm config set @capawesome-team:registry https://npm.registry.capawesome.io npm config set //npm.registry.capawesome.io/:_authToken ``` -**Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/sponsors/insiders/). +**Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-media-session` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-media-session npx cap sync ``` From 1384b78d46947718380e7bb120ad6c182bf02e40 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:51:25 +0000 Subject: [PATCH 21/60] docs(nfc): update `README.md` --- packages/nfc/README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/nfc/README.md b/packages/nfc/README.md index f2100e0ff..050690089 100644 --- a/packages/nfc/README.md +++ b/packages/nfc/README.md @@ -60,9 +60,20 @@ npm config set //npm.registry.capawesome.io/:_authToken **Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-nfc` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-nfc npx cap sync ``` From 61eae6343800e2d1513c97fc4126e39404969ad0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:51:41 +0000 Subject: [PATCH 22/60] docs(oauth): update `README.md` --- packages/oauth/README.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/oauth/README.md b/packages/oauth/README.md index b83425907..faeb1bbff 100644 --- a/packages/oauth/README.md +++ b/packages/oauth/README.md @@ -50,7 +50,7 @@ Missing a feature? Just [open an issue](https://github.com/capawesome-team/capac ## Installation -This plugin is only available to [Capawesome Insiders](https://capawesome.io/sponsors/insiders/). +This plugin is only available to [Capawesome Insiders](https://capawesome.io/insiders/). First, make sure you have the Capawesome npm registry set up. You can do this by running the following commands: @@ -59,11 +59,22 @@ npm config set @capawesome-team:registry https://npm.registry.capawesome.io npm config set //npm.registry.capawesome.io/:_authToken ``` -**Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/sponsors/insiders/). +**Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-oauth` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-oauth npx cap sync ``` From d33bc8569be72d5e7152d4a64685afd58467a44a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:51:53 +0000 Subject: [PATCH 23/60] docs(pedometer): update `README.md` --- packages/pedometer/README.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/pedometer/README.md b/packages/pedometer/README.md index 7a5ec275c..59ae38ac6 100644 --- a/packages/pedometer/README.md +++ b/packages/pedometer/README.md @@ -33,7 +33,7 @@ Missing a feature? Just [open an issue](https://github.com/capawesome-team/capac ## Installation -This plugin is only available to [Capawesome Insiders](https://capawesome.io/sponsors/insiders/). +This plugin is only available to [Capawesome Insiders](https://capawesome.io/insiders/). First, make sure you have the Capawesome npm registry set up. You can do this by running the following commands: @@ -42,11 +42,22 @@ npm config set @capawesome-team:registry https://npm.registry.capawesome.io npm config set //npm.registry.capawesome.io/:_authToken ``` -**Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/sponsors/insiders/). +**Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-pedometer` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-pedometer npx cap sync ``` From 8ad4efdc5b09ba4e66c4097c4e0954dd60101caf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:52:07 +0000 Subject: [PATCH 24/60] docs(printer): update `README.md` --- packages/printer/README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/printer/README.md b/packages/printer/README.md index 6a15d6dea..b716e6e22 100644 --- a/packages/printer/README.md +++ b/packages/printer/README.md @@ -59,9 +59,20 @@ npm config set //npm.registry.capawesome.io/:_authToken **Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-printer` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-printer npx cap sync ``` From 1ed40011dc158a611b717f2faa3f3a09abec18e3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:52:19 +0000 Subject: [PATCH 25/60] docs(purchases): update `README.md` --- packages/purchases/README.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/purchases/README.md b/packages/purchases/README.md index 461ea1441..0414b5e5a 100644 --- a/packages/purchases/README.md +++ b/packages/purchases/README.md @@ -35,7 +35,7 @@ Missing a feature? Just [open an issue](https://github.com/capawesome-team/capac ## Installation -This plugin is only available to [Capawesome Insiders](https://capawesome.io/sponsors/insiders/). +This plugin is only available to [Capawesome Insiders](https://capawesome.io/insiders/). First, make sure you have the Capawesome npm registry set up. You can do this by running the following commands: @@ -44,11 +44,22 @@ npm config set @capawesome-team:registry https://npm.registry.capawesome.io npm config set //npm.registry.capawesome.io/:_authToken ``` -**Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/sponsors/insiders/). +**Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-purchases` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-purchases npx cap sync ``` From daf2bfbd32a4213f03f5753d8e37e255e426ab49 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:52:31 +0000 Subject: [PATCH 26/60] docs(secure-preferences): update `README.md` --- packages/secure-preferences/README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/secure-preferences/README.md b/packages/secure-preferences/README.md index 52e0072a0..a99f8fa25 100644 --- a/packages/secure-preferences/README.md +++ b/packages/secure-preferences/README.md @@ -49,9 +49,20 @@ npm config set //npm.registry.capawesome.io/:_authToken **Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-secure-preferences` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-secure-preferences npx cap sync ``` From 545eec07eff36b9517bac4ccf557909b5307229b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:52:43 +0000 Subject: [PATCH 27/60] docs(share-target): update `README.md` --- packages/share-target/README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/share-target/README.md b/packages/share-target/README.md index eb848b2c1..f7a26ad98 100644 --- a/packages/share-target/README.md +++ b/packages/share-target/README.md @@ -51,9 +51,20 @@ npm config set //npm.registry.capawesome.io/:_authToken **Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-share-target` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-share-target npx cap sync ``` From 96e679d401d3b017aed4b53136b9454b3f4bb769 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:52:54 +0000 Subject: [PATCH 28/60] docs(speech-recognition): update `README.md` --- packages/speech-recognition/README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/speech-recognition/README.md b/packages/speech-recognition/README.md index 7d0c5421b..70fd9135d 100644 --- a/packages/speech-recognition/README.md +++ b/packages/speech-recognition/README.md @@ -53,9 +53,20 @@ npm config set //npm.registry.capawesome.io/:_authToken **Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-speech-recognition` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-speech-recognition npx cap sync ``` From b8da680f2ae57de8403ec6142c89641c36c044e2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:53:07 +0000 Subject: [PATCH 29/60] docs(speech-synthesis): update `README.md` --- packages/speech-synthesis/README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/speech-synthesis/README.md b/packages/speech-synthesis/README.md index f568a7182..abf0176f9 100644 --- a/packages/speech-synthesis/README.md +++ b/packages/speech-synthesis/README.md @@ -50,9 +50,20 @@ npm config set //npm.registry.capawesome.io/:_authToken **Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-speech-synthesis` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-speech-synthesis npx cap sync ``` From 3b150afb61b314f03c2eac8d49e1ccbd06406c91 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:53:19 +0000 Subject: [PATCH 30/60] docs(sqlite): update `README.md` --- packages/sqlite/README.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/sqlite/README.md b/packages/sqlite/README.md index bd88caaa8..03f4bad20 100644 --- a/packages/sqlite/README.md +++ b/packages/sqlite/README.md @@ -57,7 +57,7 @@ Missing a feature? Just [open an issue](https://github.com/capawesome-team/capac ## Installation -This plugin is only available to [Capawesome Insiders](https://capawesome.io/sponsors/insiders/). +This plugin is only available to [Capawesome Insiders](https://capawesome.io/insiders/). First, make sure you have the Capawesome npm registry set up. You can do this by running the following commands: @@ -66,11 +66,22 @@ npm config set @capawesome-team:registry https://npm.registry.capawesome.io npm config set //npm.registry.capawesome.io/:_authToken ``` -**Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/sponsors/insiders/). +**Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-sqlite` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-sqlite @sqlite.org/sqlite-wasm npx cap sync ``` From 4ee3cbee6f51815cd7977f217e9727cbf44d3e5a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:53:31 +0000 Subject: [PATCH 31/60] docs(wifi): update `README.md` --- packages/wifi/README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/wifi/README.md b/packages/wifi/README.md index fa16b5de3..3783aca1c 100644 --- a/packages/wifi/README.md +++ b/packages/wifi/README.md @@ -48,9 +48,20 @@ npm config set //npm.registry.capawesome.io/:_authToken **Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-wifi` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-wifi npx cap sync ``` From 1c44fe90d951503bfeb45cf200d3024d22abc42b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:53:42 +0000 Subject: [PATCH 32/60] docs(zip): update `README.md` --- packages/zip/README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/zip/README.md b/packages/zip/README.md index 7762d9753..bd2277fc4 100644 --- a/packages/zip/README.md +++ b/packages/zip/README.md @@ -48,9 +48,20 @@ npm config set //npm.registry.capawesome.io/:_authToken **Attention**: Replace `` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/). -Next, install the package: +Next, you can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: +```bash +npx skills add capawesome-team/skills ``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-zip` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome-team/capacitor-zip npx cap sync ``` From 6f7419ead1f8c830aa4d618e4ab99dbbb57e0c17 Mon Sep 17 00:00:00 2001 From: Robin Genz Date: Mon, 16 Mar 2026 18:49:43 +0100 Subject: [PATCH 33/60] docs: update installation instructions to include AI-Assisted Setup --- packages/age-signals/README.md | 13 +++++++++++++ packages/android-battery-optimization/README.md | 13 +++++++++++++ packages/android-dark-mode-support/README.md | 13 +++++++++++++ packages/android-edge-to-edge-support/README.md | 13 +++++++++++++ packages/android-foreground-service/README.md | 13 +++++++++++++ packages/app-review/README.md | 13 +++++++++++++ packages/app-shortcuts/README.md | 13 +++++++++++++ packages/app-update/README.md | 13 +++++++++++++ packages/apple-sign-in/README.md | 13 +++++++++++++ packages/asset-manager/README.md | 13 +++++++++++++ packages/background-task/README.md | 13 +++++++++++++ packages/badge/README.md | 13 +++++++++++++ packages/cloudinary/README.md | 13 +++++++++++++ packages/datetime-picker/README.md | 13 +++++++++++++ packages/file-opener/README.md | 13 +++++++++++++ packages/file-picker/README.md | 13 +++++++++++++ packages/google-sign-in/README.md | 17 +++++++++++++++-- packages/libsql/README.md | 13 +++++++++++++ packages/live-update/README.md | 13 +++++++++++++ packages/managed-configurations/README.md | 13 +++++++++++++ packages/photo-editor/README.md | 13 +++++++++++++ packages/posthog/README.md | 13 +++++++++++++ packages/realtimekit/README.md | 13 +++++++++++++ packages/screen-orientation/README.md | 13 +++++++++++++ packages/screenshot/README.md | 13 ++++++++++++- packages/square-mobile-payments/README.md | 13 +++++++++++++ packages/superwall/README.md | 13 +++++++++++++ packages/torch/README.md | 13 +++++++++++++ 28 files changed, 365 insertions(+), 3 deletions(-) diff --git a/packages/age-signals/README.md b/packages/age-signals/README.md index a35eb0ace..e7dbcb2cc 100644 --- a/packages/age-signals/README.md +++ b/packages/age-signals/README.md @@ -31,6 +31,19 @@ Missing a feature? Just [open an issue](https://github.com/capawesome-team/capac ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-age-signals` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-age-signals npx cap sync diff --git a/packages/android-battery-optimization/README.md b/packages/android-battery-optimization/README.md index fe4ba804a..a03f1215c 100644 --- a/packages/android-battery-optimization/README.md +++ b/packages/android-battery-optimization/README.md @@ -16,6 +16,19 @@ Capacitor plugin for Android to manage battery optimization settings, request ex ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-android-battery-optimization` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome-team/capacitor-android-battery-optimization npx cap sync diff --git a/packages/android-dark-mode-support/README.md b/packages/android-dark-mode-support/README.md index ffb9d6008..0520e26ad 100644 --- a/packages/android-dark-mode-support/README.md +++ b/packages/android-dark-mode-support/README.md @@ -16,6 +16,19 @@ Capacitor plugin for seamless Android dark mode support. Enhance user experience ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-android-dark-mode-support` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-android-dark-mode-support npx cap sync diff --git a/packages/android-edge-to-edge-support/README.md b/packages/android-edge-to-edge-support/README.md index d98672794..ff4a868b6 100644 --- a/packages/android-edge-to-edge-support/README.md +++ b/packages/android-edge-to-edge-support/README.md @@ -23,6 +23,19 @@ Capacitor plugin to support [edge-to-edge](https://developer.android.com/develop ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-android-edge-to-edge-support` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-android-edge-to-edge-support npx cap sync diff --git a/packages/android-foreground-service/README.md b/packages/android-foreground-service/README.md index c8d4f42ee..012b04264 100644 --- a/packages/android-foreground-service/README.md +++ b/packages/android-foreground-service/README.md @@ -16,6 +16,19 @@ Capacitor plugin to run a foreground service on Android. ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-android-foreground-service` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome-team/capacitor-android-foreground-service npx cap sync diff --git a/packages/app-review/README.md b/packages/app-review/README.md index 1991cb288..6603e1f95 100644 --- a/packages/app-review/README.md +++ b/packages/app-review/README.md @@ -16,6 +16,19 @@ Capacitor plugin that allows users to submit app store reviews and ratings. ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-app-review` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-app-review npx cap sync diff --git a/packages/app-shortcuts/README.md b/packages/app-shortcuts/README.md index e94dee1d0..d8fa49739 100644 --- a/packages/app-shortcuts/README.md +++ b/packages/app-shortcuts/README.md @@ -16,6 +16,19 @@ Capacitor plugin to manage app shortcuts and quick actions. ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-app-shortcuts` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands: + ```bash npm install @capawesome/capacitor-app-shortcuts npx cap sync diff --git a/packages/app-update/README.md b/packages/app-update/README.md index 128891199..727fe2496 100644 --- a/packages/app-update/README.md +++ b/packages/app-update/README.md @@ -41,6 +41,19 @@ Stay up to date with the latest news and updates about the Capawesome, Capacitor ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-app-update` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-app-update npx cap sync diff --git a/packages/apple-sign-in/README.md b/packages/apple-sign-in/README.md index d905b7241..791fd27d3 100644 --- a/packages/apple-sign-in/README.md +++ b/packages/apple-sign-in/README.md @@ -36,6 +36,19 @@ Missing a feature? Just [open an issue](https://github.com/capawesome-team/capac ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-apple-sign-in` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-apple-sign-in npx cap sync diff --git a/packages/asset-manager/README.md b/packages/asset-manager/README.md index 77058cc4f..cc5b63257 100644 --- a/packages/asset-manager/README.md +++ b/packages/asset-manager/README.md @@ -35,6 +35,19 @@ Stay up to date with the latest news and updates about the Capawesome, Capacitor ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-asset-manager` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands: + ```bash npm install @capawesome/capacitor-asset-manager npx cap sync diff --git a/packages/background-task/README.md b/packages/background-task/README.md index 19cad3d9f..d5f19ac15 100644 --- a/packages/background-task/README.md +++ b/packages/background-task/README.md @@ -19,6 +19,19 @@ Capacitor plugin for running background tasks. ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-background-task` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands: + ```bash npm install @capawesome/capacitor-background-task npx cap sync diff --git a/packages/badge/README.md b/packages/badge/README.md index f470258f0..2ef9e66fb 100644 --- a/packages/badge/README.md +++ b/packages/badge/README.md @@ -37,6 +37,19 @@ Stay up to date with the latest news and updates about the Capawesome, Capacitor ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-badge` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-badge npx cap sync diff --git a/packages/cloudinary/README.md b/packages/cloudinary/README.md index c9642adcf..7019fc3f3 100644 --- a/packages/cloudinary/README.md +++ b/packages/cloudinary/README.md @@ -28,6 +28,19 @@ Capacitor Cloudinary allows you to use the native Cloudinary SDKs to upload file ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-cloudinary` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-cloudinary npx cap sync diff --git a/packages/datetime-picker/README.md b/packages/datetime-picker/README.md index 7e4475d49..fe4707d4d 100644 --- a/packages/datetime-picker/README.md +++ b/packages/datetime-picker/README.md @@ -39,6 +39,19 @@ Stay up to date with the latest news and updates about the Capawesome, Capacitor ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-datetime-picker` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands: + ```bash npm install @capawesome-team/capacitor-datetime-picker npx cap sync diff --git a/packages/file-opener/README.md b/packages/file-opener/README.md index 3c463611c..8c6ff191d 100644 --- a/packages/file-opener/README.md +++ b/packages/file-opener/README.md @@ -37,6 +37,19 @@ Stay up to date with the latest news and updates about the Capawesome, Capacitor ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-file-opener` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome-team/capacitor-file-opener npx cap sync diff --git a/packages/file-picker/README.md b/packages/file-picker/README.md index 1ac3f1a48..57937a4ac 100644 --- a/packages/file-picker/README.md +++ b/packages/file-picker/README.md @@ -38,6 +38,19 @@ Stay up to date with the latest news and updates about the Capawesome, Capacitor ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-file-picker` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-file-picker npx cap sync diff --git a/packages/google-sign-in/README.md b/packages/google-sign-in/README.md index 42526074c..fbc319228 100644 --- a/packages/google-sign-in/README.md +++ b/packages/google-sign-in/README.md @@ -35,9 +35,22 @@ Missing a feature? Just [open an issue](https://github.com/capawesome-team/capac - [How to Sign In with Google using Capacitor](https://capawesome.io/blog/how-to-sign-in-with-google-using-capacitor/) -## Installation +## Installation -```bash +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-google-sign-in` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + +```bash npm install @capawesome/capacitor-google-sign-in npx cap sync ``` diff --git a/packages/libsql/README.md b/packages/libsql/README.md index 3705e6972..8aa423bc3 100644 --- a/packages/libsql/README.md +++ b/packages/libsql/README.md @@ -17,6 +17,19 @@ Capacitor plugin for [libSQL](https://docs.turso.tech/libsql) databases.[^1] ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-libsql` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-libsql npx cap sync diff --git a/packages/live-update/README.md b/packages/live-update/README.md index 6b9fd26ae..8ada7cf07 100644 --- a/packages/live-update/README.md +++ b/packages/live-update/README.md @@ -48,6 +48,19 @@ Missing a feature? Just [open an issue](https://github.com/capawesome-team/capac ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-live-update` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-live-update npx cap sync diff --git a/packages/managed-configurations/README.md b/packages/managed-configurations/README.md index 0b28e31b7..36c9eebfc 100644 --- a/packages/managed-configurations/README.md +++ b/packages/managed-configurations/README.md @@ -19,6 +19,19 @@ Capacitor plugin to access managed configuration settings. ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-managed-configurations` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-managed-configurations npx cap sync diff --git a/packages/photo-editor/README.md b/packages/photo-editor/README.md index b0d5177a0..f2be07069 100644 --- a/packages/photo-editor/README.md +++ b/packages/photo-editor/README.md @@ -19,6 +19,19 @@ Capacitor plugin that allows the user to edit a photo. ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-photo-editor` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-photo-editor npx cap sync diff --git a/packages/posthog/README.md b/packages/posthog/README.md index e908bedb0..384c8861b 100644 --- a/packages/posthog/README.md +++ b/packages/posthog/README.md @@ -17,6 +17,19 @@ Unofficial Capacitor plugin for [PostHog](https://posthog.com/).[^1] ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-posthog` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-posthog posthog-js npx cap sync diff --git a/packages/realtimekit/README.md b/packages/realtimekit/README.md index 3c2080fdf..8c8e79daa 100644 --- a/packages/realtimekit/README.md +++ b/packages/realtimekit/README.md @@ -11,6 +11,19 @@ Unofficial Capacitor plugin for using the [RealtimeKit SDK](https://docs.realtim ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-realtimekit` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-realtimekit npx cap sync diff --git a/packages/screen-orientation/README.md b/packages/screen-orientation/README.md index 66a136069..24f77b14a 100644 --- a/packages/screen-orientation/README.md +++ b/packages/screen-orientation/README.md @@ -39,6 +39,19 @@ Stay up to date with the latest news and updates about the Capawesome, Capacitor ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-screen-orientation` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-screen-orientation npx cap sync diff --git a/packages/screenshot/README.md b/packages/screenshot/README.md index c6d91dd6f..492d5e78b 100644 --- a/packages/screenshot/README.md +++ b/packages/screenshot/README.md @@ -32,7 +32,18 @@ Stay up to date with the latest news and updates about the Capawesome, Capacitor ## Installation -Install the plugin: +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-screenshot` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands: ```bash npm install @capawesome/capacitor-screenshot diff --git a/packages/square-mobile-payments/README.md b/packages/square-mobile-payments/README.md index 422009e64..d08c6f329 100644 --- a/packages/square-mobile-payments/README.md +++ b/packages/square-mobile-payments/README.md @@ -33,6 +33,19 @@ Missing a feature? Just [open an issue](https://github.com/capawesome-team/capac ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-square-mobile-payments` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-square-mobile-payments npx cap sync diff --git a/packages/superwall/README.md b/packages/superwall/README.md index 04b88a2da..10636d5df 100644 --- a/packages/superwall/README.md +++ b/packages/superwall/README.md @@ -32,6 +32,19 @@ Missing a feature? Just [open an issue](https://github.com/capawesome-team/capac ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-superwall` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-superwall npx cap sync diff --git a/packages/torch/README.md b/packages/torch/README.md index 430f98290..c625e3f8e 100644 --- a/packages/torch/README.md +++ b/packages/torch/README.md @@ -32,6 +32,19 @@ Stay up to date with the latest news and updates about the Capawesome, Capacitor ## Installation +You can use our **AI-Assisted Setup** to install the plugin. +Add the Capawesome Skills to your AI tool using the following command: + +```bash +npx skills add capawesome-team/skills +``` + +Then use the following prompt: + +> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-torch` plugin in my project. + +If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: + ```bash npm install @capawesome/capacitor-torch npx cap sync From 43124f9f17bb333e4d58277dd7f97a0668367bda Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:38:35 +0000 Subject: [PATCH 34/60] docs(accelerometer): update `README.md` --- packages/accelerometer/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/accelerometer/README.md b/packages/accelerometer/README.md index f731d344e..ca673f2d6 100644 --- a/packages/accelerometer/README.md +++ b/packages/accelerometer/README.md @@ -23,6 +23,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -52,7 +56,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-accelerometer` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-accelerometer` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From 0ca50d67e65d994d4d549d5fa00100c2c9018e89 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:38:48 +0000 Subject: [PATCH 35/60] docs(audio-player): update `README.md` --- packages/audio-player/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/audio-player/README.md b/packages/audio-player/README.md index b4f2fe9af..5352ffc81 100644 --- a/packages/audio-player/README.md +++ b/packages/audio-player/README.md @@ -28,6 +28,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -57,7 +61,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-audio-player` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-audio-player` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From e4a9ebff26a2cb89c1abf93b6e202d86ec3d030b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:39:01 +0000 Subject: [PATCH 36/60] docs(audio-recorder): update `README.md` --- packages/audio-recorder/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/audio-recorder/README.md b/packages/audio-recorder/README.md index 79ca698d6..9de318185 100644 --- a/packages/audio-recorder/README.md +++ b/packages/audio-recorder/README.md @@ -26,6 +26,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -60,7 +64,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-audio-recorder` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-audio-recorder` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From 80d872f988b3f97592ace994d6ab3dc4a007d956 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:39:15 +0000 Subject: [PATCH 37/60] docs(barometer): update `README.md` --- packages/barometer/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/barometer/README.md b/packages/barometer/README.md index 573b6d8c9..b0413281d 100644 --- a/packages/barometer/README.md +++ b/packages/barometer/README.md @@ -26,6 +26,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -60,7 +64,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-barometer` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-barometer` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From acdf765fb4da013abc40fc262cf38cb201781a50 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:39:28 +0000 Subject: [PATCH 38/60] docs(biometrics): update `README.md` --- packages/biometrics/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/biometrics/README.md b/packages/biometrics/README.md index 764307998..e3efd0461 100644 --- a/packages/biometrics/README.md +++ b/packages/biometrics/README.md @@ -25,6 +25,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -63,7 +67,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-biometrics` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-biometrics` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From 7cb48215c698c1f3ab2f0cc4b4be4b5d767dd15a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:39:41 +0000 Subject: [PATCH 39/60] docs(bluetooth-low-energy): update `README.md` --- packages/bluetooth-low-energy/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/bluetooth-low-energy/README.md b/packages/bluetooth-low-energy/README.md index 46ef7f6fa..6f69236b5 100644 --- a/packages/bluetooth-low-energy/README.md +++ b/packages/bluetooth-low-energy/README.md @@ -35,6 +35,10 @@ Missing a feature? Just [open an issue](https://github.com/capawesome-team/capac -- [PadelBand](https://padel-band.com) Development Team +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -78,7 +82,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-bluetooth-low-energy` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-bluetooth-low-energy` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From 28cf2e4f572f0d6f65112e9797548a816293807a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:39:58 +0000 Subject: [PATCH 40/60] docs(contacts): update `README.md` --- packages/contacts/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/contacts/README.md b/packages/contacts/README.md index e63e61663..6b533e92b 100644 --- a/packages/contacts/README.md +++ b/packages/contacts/README.md @@ -29,6 +29,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -64,7 +68,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-contacts` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-contacts` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From f1df100ad5387beca4a4cad9d8a4c69e6644f9a1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:40:11 +0000 Subject: [PATCH 41/60] docs(file-compressor): update `README.md` --- packages/file-compressor/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/file-compressor/README.md b/packages/file-compressor/README.md index cee6eff1c..aa8a6571e 100644 --- a/packages/file-compressor/README.md +++ b/packages/file-compressor/README.md @@ -22,6 +22,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -64,7 +68,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-file-compressor` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-file-compressor` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From 9acab699b4a59c7772af1cdd5e611530272b487f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:40:24 +0000 Subject: [PATCH 42/60] docs(geocoder): update `README.md` --- packages/geocoder/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/geocoder/README.md b/packages/geocoder/README.md index 68ac06f0d..c10bed4c8 100644 --- a/packages/geocoder/README.md +++ b/packages/geocoder/README.md @@ -26,6 +26,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -61,7 +65,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-geocoder` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-geocoder` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From 5a80d40e11ba6e1ecbccb18d4e4099473e6c9f09 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:40:37 +0000 Subject: [PATCH 43/60] docs(media-session): update `README.md` --- packages/media-session/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/media-session/README.md b/packages/media-session/README.md index df5367e53..65e4d0769 100644 --- a/packages/media-session/README.md +++ b/packages/media-session/README.md @@ -27,6 +27,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -62,7 +66,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-media-session` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-media-session` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From 4b4a8bf7ebc1ca2010111e73039e38d8389d96d9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:40:50 +0000 Subject: [PATCH 44/60] docs(nfc): update `README.md` --- packages/nfc/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/nfc/README.md b/packages/nfc/README.md index 050690089..4b3de8288 100644 --- a/packages/nfc/README.md +++ b/packages/nfc/README.md @@ -26,6 +26,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -69,7 +73,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-nfc` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-nfc` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From 7cdcec44fb89392f02f2add32187f49c8e346f71 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:41:07 +0000 Subject: [PATCH 45/60] docs(oauth): update `README.md` --- packages/oauth/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/oauth/README.md b/packages/oauth/README.md index faeb1bbff..195e46ddd 100644 --- a/packages/oauth/README.md +++ b/packages/oauth/README.md @@ -27,6 +27,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -70,7 +74,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-oauth` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-oauth` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From 2fb2d6a495b3f23b0fe8d675caee9b7b46b38e4a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:41:21 +0000 Subject: [PATCH 46/60] docs(pedometer): update `README.md` --- packages/pedometer/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/pedometer/README.md b/packages/pedometer/README.md index 59ae38ac6..6e72a5c96 100644 --- a/packages/pedometer/README.md +++ b/packages/pedometer/README.md @@ -24,6 +24,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -53,7 +57,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-pedometer` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-pedometer` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From 6be6c79c92100a39a7e585148884dee1775c9eed Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:41:34 +0000 Subject: [PATCH 47/60] docs(printer): update `README.md` --- packages/printer/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/printer/README.md b/packages/printer/README.md index b716e6e22..85758b35e 100644 --- a/packages/printer/README.md +++ b/packages/printer/README.md @@ -26,6 +26,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -68,7 +72,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-printer` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-printer` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From 8e1e2ece58147fce73b851dab674905e6f0f2d69 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:41:47 +0000 Subject: [PATCH 48/60] docs(purchases): update `README.md` --- packages/purchases/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/purchases/README.md b/packages/purchases/README.md index 0414b5e5a..8a4454dae 100644 --- a/packages/purchases/README.md +++ b/packages/purchases/README.md @@ -23,6 +23,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll add it for you! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -55,7 +59,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-purchases` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-purchases` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From d29d7c20d3258e94057ce8a63a0e6360991e9d72 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:42:01 +0000 Subject: [PATCH 49/60] docs(secure-preferences): update `README.md` --- packages/secure-preferences/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/secure-preferences/README.md b/packages/secure-preferences/README.md index a99f8fa25..5bc9c265f 100644 --- a/packages/secure-preferences/README.md +++ b/packages/secure-preferences/README.md @@ -23,6 +23,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -58,7 +62,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-secure-preferences` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-secure-preferences` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From 9b8dd802853f584ef42c6efc7b75f5d1ebc42e4a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:42:15 +0000 Subject: [PATCH 50/60] docs(share-target): update `README.md` --- packages/share-target/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/share-target/README.md b/packages/share-target/README.md index f7a26ad98..2afc79cc1 100644 --- a/packages/share-target/README.md +++ b/packages/share-target/README.md @@ -23,6 +23,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -60,7 +64,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-share-target` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-share-target` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From ede492cca6cffaf0e84e48b7386bcd937c9599d9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:42:28 +0000 Subject: [PATCH 51/60] docs(speech-recognition): update `README.md` --- packages/speech-recognition/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/speech-recognition/README.md b/packages/speech-recognition/README.md index 70fd9135d..c3c2eac66 100644 --- a/packages/speech-recognition/README.md +++ b/packages/speech-recognition/README.md @@ -28,6 +28,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -62,7 +66,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-speech-recognition` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-speech-recognition` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From e722d99ae5e2bf54da12377d5f2a5d385e5a6e57 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:42:42 +0000 Subject: [PATCH 52/60] docs(speech-synthesis): update `README.md` --- packages/speech-synthesis/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/speech-synthesis/README.md b/packages/speech-synthesis/README.md index abf0176f9..28408bd82 100644 --- a/packages/speech-synthesis/README.md +++ b/packages/speech-synthesis/README.md @@ -29,6 +29,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -59,7 +63,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-speech-synthesis` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-speech-synthesis` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From a018edf4ca5191329eac2c3fba1f3721934bd6ed Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:42:56 +0000 Subject: [PATCH 53/60] docs(sqlite): update `README.md` --- packages/sqlite/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/sqlite/README.md b/packages/sqlite/README.md index 03f4bad20..37ab3e7bf 100644 --- a/packages/sqlite/README.md +++ b/packages/sqlite/README.md @@ -36,6 +36,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll add it for you! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -77,7 +81,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-sqlite` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-sqlite` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From 798d81a13890a80eac87ced5ccf8f98c433de8ea Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:43:09 +0000 Subject: [PATCH 54/60] docs(wifi): update `README.md` --- packages/wifi/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/wifi/README.md b/packages/wifi/README.md index 3783aca1c..323032355 100644 --- a/packages/wifi/README.md +++ b/packages/wifi/README.md @@ -22,6 +22,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -57,7 +61,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-wifi` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-wifi` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From 58d5d6efc8eeda5136cc117e27c65ae180c8b778 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:43:22 +0000 Subject: [PATCH 55/60] docs(zip): update `README.md` --- packages/zip/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/zip/README.md b/packages/zip/README.md index bd2277fc4..6097a1d2a 100644 --- a/packages/zip/README.md +++ b/packages/zip/README.md @@ -23,6 +23,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll add it for you! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | @@ -57,7 +61,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-zip` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-zip` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From 672c89e8d08773839a079812cb9a27045ff54409 Mon Sep 17 00:00:00 2001 From: Robin Genz Date: Mon, 16 Mar 2026 19:49:58 +0100 Subject: [PATCH 56/60] docs: add newsletter subscription information to multiple README files --- packages/age-signals/README.md | 4 ++++ packages/android-battery-optimization/README.md | 4 ++++ packages/android-dark-mode-support/README.md | 4 ++++ packages/android-edge-to-edge-support/README.md | 4 ++++ packages/android-foreground-service/README.md | 4 ++++ packages/app-review/README.md | 4 ++++ packages/app-shortcuts/README.md | 4 ++++ packages/apple-sign-in/README.md | 4 ++++ packages/background-task/README.md | 4 ++++ packages/cloudinary/README.md | 4 ++++ packages/google-sign-in/README.md | 4 ++++ packages/libsql/README.md | 4 ++++ packages/live-update/README.md | 4 ++++ packages/managed-configurations/README.md | 4 ++++ packages/photo-editor/README.md | 4 ++++ packages/posthog/README.md | 4 ++++ packages/realtimekit/README.md | 4 ++++ packages/square-mobile-payments/README.md | 4 ++++ packages/superwall/README.md | 4 ++++ 19 files changed, 76 insertions(+) diff --git a/packages/age-signals/README.md b/packages/age-signals/README.md index e7dbcb2cc..3dbba624c 100644 --- a/packages/age-signals/README.md +++ b/packages/age-signals/README.md @@ -22,6 +22,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | diff --git a/packages/android-battery-optimization/README.md b/packages/android-battery-optimization/README.md index a03f1215c..812b6efe2 100644 --- a/packages/android-battery-optimization/README.md +++ b/packages/android-battery-optimization/README.md @@ -8,6 +8,10 @@ Capacitor plugin for Android to manage battery optimization settings, request ex +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | diff --git a/packages/android-dark-mode-support/README.md b/packages/android-dark-mode-support/README.md index 0520e26ad..e694e1d98 100644 --- a/packages/android-dark-mode-support/README.md +++ b/packages/android-dark-mode-support/README.md @@ -8,6 +8,10 @@ Capacitor plugin for seamless Android dark mode support. Enhance user experience +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | diff --git a/packages/android-edge-to-edge-support/README.md b/packages/android-edge-to-edge-support/README.md index ff4a868b6..db3d0795a 100644 --- a/packages/android-edge-to-edge-support/README.md +++ b/packages/android-edge-to-edge-support/README.md @@ -14,6 +14,10 @@ Capacitor plugin to support [edge-to-edge](https://developer.android.com/develop **Attention:** Despite its name, this plugin doesn't enable edge-to-edge mode by default. Instead, it preserves the traditional app behavior by applying proper insets to the webview, preventing Android's edge-to-edge changes from affecting apps that haven't been designed to support it. +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | diff --git a/packages/android-foreground-service/README.md b/packages/android-foreground-service/README.md index 012b04264..12b38a1cf 100644 --- a/packages/android-foreground-service/README.md +++ b/packages/android-foreground-service/README.md @@ -8,6 +8,10 @@ Capacitor plugin to run a foreground service on Android. +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | diff --git a/packages/app-review/README.md b/packages/app-review/README.md index 6603e1f95..1cf57a897 100644 --- a/packages/app-review/README.md +++ b/packages/app-review/README.md @@ -8,6 +8,10 @@ Capacitor plugin that allows users to submit app store reviews and ratings. +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | diff --git a/packages/app-shortcuts/README.md b/packages/app-shortcuts/README.md index d8fa49739..f35caed18 100644 --- a/packages/app-shortcuts/README.md +++ b/packages/app-shortcuts/README.md @@ -8,6 +8,10 @@ Capacitor plugin to manage app shortcuts and quick actions. +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | diff --git a/packages/apple-sign-in/README.md b/packages/apple-sign-in/README.md index 791fd27d3..f2c78cce5 100644 --- a/packages/apple-sign-in/README.md +++ b/packages/apple-sign-in/README.md @@ -24,6 +24,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | diff --git a/packages/background-task/README.md b/packages/background-task/README.md index d5f19ac15..a45a532ea 100644 --- a/packages/background-task/README.md +++ b/packages/background-task/README.md @@ -8,6 +8,10 @@ Capacitor plugin for running background tasks. +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | diff --git a/packages/cloudinary/README.md b/packages/cloudinary/README.md index 7019fc3f3..a44624960 100644 --- a/packages/cloudinary/README.md +++ b/packages/cloudinary/README.md @@ -17,6 +17,10 @@ Capacitor Cloudinary allows you to use the native Cloudinary SDKs to upload file - ❌ No more out-of-memory issues - 📁 Works with the [Capacitor Filesystem](https://capacitorjs.com/docs/apis/filesystem) and [Capacitor File Picker](https://github.com/capawesome-team/capacitor-file-picker) +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | diff --git a/packages/google-sign-in/README.md b/packages/google-sign-in/README.md index fbc319228..c3756f97f 100644 --- a/packages/google-sign-in/README.md +++ b/packages/google-sign-in/README.md @@ -25,6 +25,10 @@ We are proud to offer a comprehensive Capacitor plugin for Google Sign-In. Here Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | diff --git a/packages/libsql/README.md b/packages/libsql/README.md index 8aa423bc3..c4ab42ffb 100644 --- a/packages/libsql/README.md +++ b/packages/libsql/README.md @@ -8,6 +8,10 @@ Capacitor plugin for [libSQL](https://docs.turso.tech/libsql) databases.[^1] +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | diff --git a/packages/live-update/README.md b/packages/live-update/README.md index 8ada7cf07..b5d9f5b47 100644 --- a/packages/live-update/README.md +++ b/packages/live-update/README.md @@ -31,6 +31,10 @@ We are proud to offer one of the most complete and feature-rich Capacitor plugin Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | diff --git a/packages/managed-configurations/README.md b/packages/managed-configurations/README.md index 36c9eebfc..cd7fca826 100644 --- a/packages/managed-configurations/README.md +++ b/packages/managed-configurations/README.md @@ -8,6 +8,10 @@ Capacitor plugin to access managed configuration settings. +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | diff --git a/packages/photo-editor/README.md b/packages/photo-editor/README.md index f2be07069..b9ee0b67c 100644 --- a/packages/photo-editor/README.md +++ b/packages/photo-editor/README.md @@ -8,6 +8,10 @@ Capacitor plugin that allows the user to edit a photo. +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | diff --git a/packages/posthog/README.md b/packages/posthog/README.md index 384c8861b..9346b0e6c 100644 --- a/packages/posthog/README.md +++ b/packages/posthog/README.md @@ -8,6 +8,10 @@ Unofficial Capacitor plugin for [PostHog](https://posthog.com/).[^1] +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | diff --git a/packages/realtimekit/README.md b/packages/realtimekit/README.md index 8c8e79daa..2dbcb155e 100644 --- a/packages/realtimekit/README.md +++ b/packages/realtimekit/README.md @@ -2,6 +2,10 @@ Unofficial Capacitor plugin for using the [RealtimeKit SDK](https://docs.realtime.cloudflare.com/).[^1] +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | diff --git a/packages/square-mobile-payments/README.md b/packages/square-mobile-payments/README.md index d08c6f329..c2cf9b6b6 100644 --- a/packages/square-mobile-payments/README.md +++ b/packages/square-mobile-payments/README.md @@ -25,6 +25,10 @@ This plugin provides a comprehensive integration with Square's Mobile Payments S Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | diff --git a/packages/superwall/README.md b/packages/superwall/README.md index 10636d5df..65da6ad10 100644 --- a/packages/superwall/README.md +++ b/packages/superwall/README.md @@ -24,6 +24,10 @@ We are proud to offer a comprehensive Capacitor plugin for Superwall SDK integra Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look! +## Newsletter + +Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/). + ## Compatibility | Plugin Version | Capacitor Version | Status | From 8e7e11aa9899a23123fb19010322fa744c09e395 Mon Sep 17 00:00:00 2001 From: Robin Genz Date: Mon, 16 Mar 2026 19:51:05 +0100 Subject: [PATCH 57/60] docs: update installation instructions in multiple README files --- packages/age-signals/README.md | 4 +- .../android-battery-optimization/README.md | 4 +- packages/android-dark-mode-support/README.md | 4 +- .../android-edge-to-edge-support/README.md | 4 +- packages/android-foreground-service/README.md | 60 ++++++++++++++----- packages/app-review/README.md | 4 +- packages/app-shortcuts/README.md | 4 +- packages/app-update/README.md | 4 +- packages/apple-sign-in/README.md | 4 +- packages/asset-manager/README.md | 4 +- packages/background-task/README.md | 4 +- packages/badge/README.md | 4 +- packages/cloudinary/README.md | 4 +- packages/datetime-picker/README.md | 4 +- packages/file-opener/README.md | 4 +- packages/file-picker/README.md | 4 +- packages/google-sign-in/README.md | 4 +- packages/libsql/README.md | 4 +- packages/live-update/README.md | 4 +- packages/managed-configurations/README.md | 4 +- packages/photo-editor/README.md | 4 +- packages/posthog/README.md | 4 +- packages/realtimekit/README.md | 4 +- packages/screen-orientation/README.md | 4 +- packages/screenshot/README.md | 4 +- packages/square-mobile-payments/README.md | 4 +- packages/superwall/README.md | 4 +- packages/torch/README.md | 4 +- 28 files changed, 125 insertions(+), 43 deletions(-) diff --git a/packages/age-signals/README.md b/packages/age-signals/README.md index 3dbba624c..e3c7ebaaa 100644 --- a/packages/age-signals/README.md +++ b/packages/age-signals/README.md @@ -44,7 +44,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-age-signals` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-age-signals` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/android-battery-optimization/README.md b/packages/android-battery-optimization/README.md index 812b6efe2..64e7e8604 100644 --- a/packages/android-battery-optimization/README.md +++ b/packages/android-battery-optimization/README.md @@ -29,7 +29,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-android-battery-optimization` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-android-battery-optimization` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/android-dark-mode-support/README.md b/packages/android-dark-mode-support/README.md index e694e1d98..8a242e1b8 100644 --- a/packages/android-dark-mode-support/README.md +++ b/packages/android-dark-mode-support/README.md @@ -29,7 +29,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-android-dark-mode-support` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-android-dark-mode-support` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/android-edge-to-edge-support/README.md b/packages/android-edge-to-edge-support/README.md index db3d0795a..3dfeb5495 100644 --- a/packages/android-edge-to-edge-support/README.md +++ b/packages/android-edge-to-edge-support/README.md @@ -36,7 +36,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-android-edge-to-edge-support` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-android-edge-to-edge-support` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/android-foreground-service/README.md b/packages/android-foreground-service/README.md index 12b38a1cf..d925490eb 100644 --- a/packages/android-foreground-service/README.md +++ b/packages/android-foreground-service/README.md @@ -29,7 +29,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-android-foreground-service` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-android-foreground-service` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: @@ -134,21 +136,47 @@ const deleteNotificationChannel = async () => { -* [`moveToForeground()`](#movetoforeground) -* [`startForegroundService(...)`](#startforegroundservice) -* [`updateForegroundService(...)`](#updateforegroundservice) -* [`stopForegroundService()`](#stopforegroundservice) -* [`checkPermissions()`](#checkpermissions) -* [`requestPermissions()`](#requestpermissions) -* [`checkManageOverlayPermission()`](#checkmanageoverlaypermission) -* [`requestManageOverlayPermission()`](#requestmanageoverlaypermission) -* [`createNotificationChannel(...)`](#createnotificationchannel) -* [`deleteNotificationChannel(...)`](#deletenotificationchannel) -* [`addListener('buttonClicked', ...)`](#addlistenerbuttonclicked-) -* [`removeAllListeners()`](#removealllisteners) -* [Interfaces](#interfaces) -* [Type Aliases](#type-aliases) -* [Enums](#enums) +- [@capawesome-team/capacitor-android-foreground-service](#capawesome-teamcapacitor-android-foreground-service) + - [Newsletter](#newsletter) + - [Compatibility](#compatibility) + - [Installation](#installation) + - [Android](#android) + - [Configuration](#configuration) + - [Demo](#demo) + - [Usage](#usage) + - [API](#api) + - [moveToForeground()](#movetoforeground) + - [startForegroundService(...)](#startforegroundservice) + - [updateForegroundService(...)](#updateforegroundservice) + - [stopForegroundService()](#stopforegroundservice) + - [checkPermissions()](#checkpermissions) + - [requestPermissions()](#requestpermissions) + - [checkManageOverlayPermission()](#checkmanageoverlaypermission) + - [requestManageOverlayPermission()](#requestmanageoverlaypermission) + - [createNotificationChannel(...)](#createnotificationchannel) + - [deleteNotificationChannel(...)](#deletenotificationchannel) + - [addListener('buttonClicked', ...)](#addlistenerbuttonclicked-) + - [removeAllListeners()](#removealllisteners) + - [Interfaces](#interfaces) + - [StartForegroundServiceOptions](#startforegroundserviceoptions) + - [NotificationButton](#notificationbutton) + - [PermissionStatus](#permissionstatus) + - [ManageOverlayPermissionResult](#manageoverlaypermissionresult) + - [CreateNotificationChannelOptions](#createnotificationchanneloptions) + - [DeleteNotificationChannelOptions](#deletenotificationchanneloptions) + - [PluginListenerHandle](#pluginlistenerhandle) + - [ButtonClickedEvent](#buttonclickedevent) + - [Type Aliases](#type-aliases) + - [UpdateForegroundServiceOptions](#updateforegroundserviceoptions) + - [PermissionState](#permissionstate) + - [ButtonClickedEventListener](#buttonclickedeventlistener) + - [Enums](#enums) + - [ServiceType](#servicetype) + - [Importance](#importance) + - [FAQ](#faq) + - [Why can the user dismiss the notification?](#why-can-the-user-dismiss-the-notification) + - [Changelog](#changelog) + - [License](#license) diff --git a/packages/app-review/README.md b/packages/app-review/README.md index 1cf57a897..5cf5d3f52 100644 --- a/packages/app-review/README.md +++ b/packages/app-review/README.md @@ -29,7 +29,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-app-review` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-app-review` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/app-shortcuts/README.md b/packages/app-shortcuts/README.md index f35caed18..7e00cf950 100644 --- a/packages/app-shortcuts/README.md +++ b/packages/app-shortcuts/README.md @@ -29,7 +29,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-app-shortcuts` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-app-shortcuts` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands: diff --git a/packages/app-update/README.md b/packages/app-update/README.md index 727fe2496..7f7ab6b36 100644 --- a/packages/app-update/README.md +++ b/packages/app-update/README.md @@ -50,7 +50,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-app-update` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-app-update` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/apple-sign-in/README.md b/packages/apple-sign-in/README.md index f2c78cce5..63d171977 100644 --- a/packages/apple-sign-in/README.md +++ b/packages/apple-sign-in/README.md @@ -49,7 +49,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-apple-sign-in` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-apple-sign-in` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/asset-manager/README.md b/packages/asset-manager/README.md index cc5b63257..399785217 100644 --- a/packages/asset-manager/README.md +++ b/packages/asset-manager/README.md @@ -44,7 +44,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-asset-manager` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-asset-manager` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands: diff --git a/packages/background-task/README.md b/packages/background-task/README.md index a45a532ea..167548f0f 100644 --- a/packages/background-task/README.md +++ b/packages/background-task/README.md @@ -32,7 +32,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-background-task` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-background-task` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands: diff --git a/packages/badge/README.md b/packages/badge/README.md index 2ef9e66fb..471315830 100644 --- a/packages/badge/README.md +++ b/packages/badge/README.md @@ -46,7 +46,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-badge` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-badge` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/cloudinary/README.md b/packages/cloudinary/README.md index a44624960..1f699dcea 100644 --- a/packages/cloudinary/README.md +++ b/packages/cloudinary/README.md @@ -41,7 +41,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-cloudinary` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-cloudinary` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/datetime-picker/README.md b/packages/datetime-picker/README.md index fe4707d4d..5fb645dcb 100644 --- a/packages/datetime-picker/README.md +++ b/packages/datetime-picker/README.md @@ -48,7 +48,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-datetime-picker` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-datetime-picker` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands: diff --git a/packages/file-opener/README.md b/packages/file-opener/README.md index 8c6ff191d..873ac076d 100644 --- a/packages/file-opener/README.md +++ b/packages/file-opener/README.md @@ -46,7 +46,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-file-opener` plugin in my project. +``` +Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-file-opener` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/file-picker/README.md b/packages/file-picker/README.md index 57937a4ac..ab698533e 100644 --- a/packages/file-picker/README.md +++ b/packages/file-picker/README.md @@ -47,7 +47,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-file-picker` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-file-picker` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/google-sign-in/README.md b/packages/google-sign-in/README.md index c3756f97f..16c5639c1 100644 --- a/packages/google-sign-in/README.md +++ b/packages/google-sign-in/README.md @@ -50,7 +50,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-google-sign-in` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-google-sign-in` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/libsql/README.md b/packages/libsql/README.md index c4ab42ffb..64e241ca1 100644 --- a/packages/libsql/README.md +++ b/packages/libsql/README.md @@ -30,7 +30,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-libsql` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-libsql` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/live-update/README.md b/packages/live-update/README.md index b5d9f5b47..e1032d3f6 100644 --- a/packages/live-update/README.md +++ b/packages/live-update/README.md @@ -61,7 +61,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-live-update` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-live-update` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/managed-configurations/README.md b/packages/managed-configurations/README.md index cd7fca826..cdfbeaff0 100644 --- a/packages/managed-configurations/README.md +++ b/packages/managed-configurations/README.md @@ -32,7 +32,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-managed-configurations` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-managed-configurations` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/photo-editor/README.md b/packages/photo-editor/README.md index b9ee0b67c..1358337b6 100644 --- a/packages/photo-editor/README.md +++ b/packages/photo-editor/README.md @@ -32,7 +32,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-photo-editor` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-photo-editor` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/posthog/README.md b/packages/posthog/README.md index 9346b0e6c..8392b6f44 100644 --- a/packages/posthog/README.md +++ b/packages/posthog/README.md @@ -30,7 +30,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-posthog` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-posthog` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/realtimekit/README.md b/packages/realtimekit/README.md index 2dbcb155e..fd58e9c70 100644 --- a/packages/realtimekit/README.md +++ b/packages/realtimekit/README.md @@ -24,7 +24,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-realtimekit` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-realtimekit` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/screen-orientation/README.md b/packages/screen-orientation/README.md index 24f77b14a..02bb5537b 100644 --- a/packages/screen-orientation/README.md +++ b/packages/screen-orientation/README.md @@ -48,7 +48,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-screen-orientation` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-screen-orientation` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/screenshot/README.md b/packages/screenshot/README.md index 492d5e78b..b9781e2d6 100644 --- a/packages/screenshot/README.md +++ b/packages/screenshot/README.md @@ -41,7 +41,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-screenshot` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-screenshot` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands: diff --git a/packages/square-mobile-payments/README.md b/packages/square-mobile-payments/README.md index c2cf9b6b6..d594bc34a 100644 --- a/packages/square-mobile-payments/README.md +++ b/packages/square-mobile-payments/README.md @@ -46,7 +46,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-square-mobile-payments` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-square-mobile-payments` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/superwall/README.md b/packages/superwall/README.md index 65da6ad10..78bd9f72d 100644 --- a/packages/superwall/README.md +++ b/packages/superwall/README.md @@ -45,7 +45,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-superwall` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-superwall` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: diff --git a/packages/torch/README.md b/packages/torch/README.md index c625e3f8e..63cfc0f7a 100644 --- a/packages/torch/README.md +++ b/packages/torch/README.md @@ -41,7 +41,9 @@ npx skills add capawesome-team/skills Then use the following prompt: -> Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-torch` plugin in my project. +``` + Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-torch` plugin in my project. +``` If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below: From 1eb26234b133b751b48af8d4b44631e56d1170de Mon Sep 17 00:00:00 2001 From: Simon Jackson Date: Tue, 17 Mar 2026 08:53:25 +0000 Subject: [PATCH 58/60] Update .changeset/add-notification-tapped-listener.md Co-authored-by: Robin Genz --- .changeset/add-notification-tapped-listener.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/add-notification-tapped-listener.md b/.changeset/add-notification-tapped-listener.md index 81851659e..6a337a4cd 100644 --- a/.changeset/add-notification-tapped-listener.md +++ b/.changeset/add-notification-tapped-listener.md @@ -2,4 +2,4 @@ "@capawesome-team/capacitor-android-foreground-service": minor --- -Add `notificationTapped` event listener that fires when the foreground service notification is tapped +feat(android): add `notificationTapped` event listener From 729969d727ae73e38b713c65db2ef4ca299eb5d9 Mon Sep 17 00:00:00 2001 From: Simon Jackson Date: Tue, 17 Mar 2026 09:59:40 +0000 Subject: [PATCH 59/60] fix(android-foreground-service): use FLAG_IMMUTABLE, namespace extra key, guard invalid IDs - Switch PendingIntent from FLAG_MUTABLE to FLAG_IMMUTABLE since extras are set at creation time and don't need external modification - Namespace the intent extra key to reduce spoofing surface - Guard against invalid notification IDs (< 0) before emitting event Co-Authored-By: Claude Opus 4.6 --- .../foregroundservice/AndroidForegroundService.java | 13 ++++++------- .../foregroundservice/ForegroundServicePlugin.java | 5 ++++- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/AndroidForegroundService.java b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/AndroidForegroundService.java index 3df5ad507..c38ab6c16 100644 --- a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/AndroidForegroundService.java +++ b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/AndroidForegroundService.java @@ -83,13 +83,12 @@ private PendingIntent buildContentIntent(int id) { } launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); launchIntent.putExtra(ForegroundServicePlugin.NOTIFICATION_TAP_EXTRA, id); - int pendingIntentFlags; - if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - pendingIntentFlags = PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE; - } else { - pendingIntentFlags = PendingIntent.FLAG_UPDATE_CURRENT; - } - return PendingIntent.getActivity(getApplicationContext(), id, launchIntent, pendingIntentFlags); + return PendingIntent.getActivity( + getApplicationContext(), + id, + launchIntent, + PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE + ); } private Notification.Action[] convertBundlesToNotificationActions(Bundle[] bundles) { diff --git a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java index d237377fe..aa2c75f32 100644 --- a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java +++ b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/ForegroundServicePlugin.java @@ -35,7 +35,7 @@ public class ForegroundServicePlugin extends Plugin { public static final String TAG = "ForegroundService"; public static final String BUTTON_CLICKED_EVENT = "buttonClicked"; public static final String NOTIFICATION_TAPPED_EVENT = "notificationTapped"; - public static final String NOTIFICATION_TAP_EXTRA = "foregroundServiceNotificationId"; + public static final String NOTIFICATION_TAP_EXTRA = "io.capawesome.capacitorjs.plugins.foregroundservice.NOTIFICATION_TAP_ID"; public static Bridge staticBridge = null; private static final String MOVE_TO_FOREGROUND_CALLBACK_NAME = "moveToForegroundResult"; @@ -71,6 +71,9 @@ private void handleNotificationTapIntent(Intent intent) { } int notificationId = intent.getIntExtra(NOTIFICATION_TAP_EXTRA, -1); intent.removeExtra(NOTIFICATION_TAP_EXTRA); + if (notificationId < 0) { + return; + } handleNotificationTapped(notificationId); } From 2d69cf3abfe7edb58cba86839987ee3b1d6595b7 Mon Sep 17 00:00:00 2001 From: Simon Jackson Date: Tue, 17 Mar 2026 14:58:54 +0000 Subject: [PATCH 60/60] revert(android-foreground-service): restore FLAG_MUTABLE to avoid breaking change Co-Authored-By: Claude Opus 4.6 --- .../foregroundservice/AndroidForegroundService.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/AndroidForegroundService.java b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/AndroidForegroundService.java index c38ab6c16..3df5ad507 100644 --- a/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/AndroidForegroundService.java +++ b/packages/android-foreground-service/android/src/main/java/io/capawesome/capacitorjs/plugins/foregroundservice/AndroidForegroundService.java @@ -83,12 +83,13 @@ private PendingIntent buildContentIntent(int id) { } launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); launchIntent.putExtra(ForegroundServicePlugin.NOTIFICATION_TAP_EXTRA, id); - return PendingIntent.getActivity( - getApplicationContext(), - id, - launchIntent, - PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE - ); + int pendingIntentFlags; + if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + pendingIntentFlags = PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE; + } else { + pendingIntentFlags = PendingIntent.FLAG_UPDATE_CURRENT; + } + return PendingIntent.getActivity(getApplicationContext(), id, launchIntent, pendingIntentFlags); } private Notification.Action[] convertBundlesToNotificationActions(Bundle[] bundles) {