-
Notifications
You must be signed in to change notification settings - Fork 0
chore: sync plus with upstream main (upstream-preferred conflicts) #116
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: plus
Are you sure you want to change the base?
Changes from all commits
23ad7f8
b2d7719
76ff70e
b7e167b
de1e506
731a82e
bc74536
93c72de
e456de0
258867b
b4b297a
1d031a4
f1077ef
d4ad7ff
4c6c321
36b729d
41fd9de
28bb2c6
6048e90
7217b52
b789b68
6f2d328
1834b97
f368a1b
4c1c870
3fa04a3
984fa85
3ab4139
5e5bb3b
5ac4dd6
ba3ba9c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -3,25 +3,13 @@ | |
| All notable changes to this project will be documented in this file. | ||
| See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. | ||
|
|
||
| ## [8.5.1](https://github.com/Cap-go/capacitor-plus/compare/8.3.12...8.5.1) (2026-08-25) | ||
|
|
||
|
|
||
| ### Bug Fixes | ||
|
|
||
| * **ci:** fetch upstream objects so plus branch sync works ([#109](https://github.com/Cap-go/capacitor-plus/issues/109)) ([1fa7eee](https://github.com/Cap-go/capacitor-plus/commit/1fa7eeeff9494e9b32afb20a9850389b79d6bcec)) | ||
| * **ci:** resolve modify/delete conflicts in sync conflict PRs ([#110](https://github.com/Cap-go/capacitor-plus/issues/110)) ([5c29fb9](https://github.com/Cap-go/capacitor-plus/commit/5c29fb9af001b9aafdcde7b7054585e093f44431)) | ||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
| # [8.5.0](https://github.com/ionic-team/capacitor/compare/8.4.2...8.5.0) (2026-07-31) | ||
|
|
||
| ## Bug Fixes | ||
| ### Bug Fixes | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win Use level-two headings for release subsections. The release headings in all three changelog files are level one, so the subsection headings must use
🧰 Tools🪛 markdownlint-cli2 (0.23.2)[warning] 8-8: Heading levels should only increment by one level at a time (MD001, heading-increment) 📍 Affects 3 files
🤖 Prompt for AI AgentsSource: Linters/SAST tools There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. P3: Use Prompt for AI agents |
||
|
|
||
| - **cli:** support TypeScript 7 when loading capacitor.config.ts ([#8534](https://github.com/ionic-team/capacitor/issues/8534)) ([4c1c870](https://github.com/ionic-team/capacitor/commit/4c1c8709413b9c19b008c99122ca330cc3c90e6f)) | ||
|
|
||
| ## Features | ||
| ### Features | ||
|
|
||
| - **cli:** add migrator functionality for adopting UIScene ([#8544](https://github.com/ionic-team/capacitor/issues/8544)) ([984fa85](https://github.com/ionic-team/capacitor/commit/984fa85ba0adab0aacf895aed6323bf4b503dccb)) | ||
| - **ios:** UIScene Support ([#8536](https://github.com/ionic-team/capacitor/issues/8536)) ([3fa04a3](https://github.com/ionic-team/capacitor/commit/3fa04a357c92af34cd6fccb8124791963804a9dc)) | ||
|
|
@@ -41,14 +29,14 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline | |
|
|
||
| # [8.4.0](https://github.com/ionic-team/capacitor/compare/8.3.4...8.4.0) (2026-06-02) | ||
|
|
||
| ## Bug Fixes | ||
| ### Bug Fixes | ||
|
|
||
| - **android:** show only the requested system bar ([#8480](https://github.com/ionic-team/capacitor/issues/8480)) ([4c6c321](https://github.com/ionic-team/capacitor/commit/4c6c3219afb5223211e857457e46283c37eb9424)) | ||
| - **cli:** revert live reload config on failure ([#8485](https://github.com/ionic-team/capacitor/issues/8485)) ([1d031a4](https://github.com/ionic-team/capacitor/commit/1d031a4abec2c793079ba8897ad2e40c4cc6c7f9)) | ||
| - **SystemBars:** make `safe-area-inset-x` available on API <= 34 ([#8424](https://github.com/ionic-team/capacitor/issues/8424)) ([e456de0](https://github.com/ionic-team/capacitor/commit/e456de083e19644f484bec5a5359cb67960ac8bc)) | ||
| - **SystemBars:** respect `insetsHandling` disable ([#8481](https://github.com/ionic-team/capacitor/issues/8481)) ([d4ad7ff](https://github.com/ionic-team/capacitor/commit/d4ad7ffe39daf66e0cfc63af9028d5c05543bde7)) | ||
|
|
||
| ## Features | ||
| ### Features | ||
|
|
||
| - add method getDouble to plugin config ([#7638](https://github.com/ionic-team/capacitor/issues/7638)) ([93c72de](https://github.com/ionic-team/capacitor/commit/93c72de40a2ec4c78b33659250cb08340083088e)) | ||
| - **cli:** add experimental packageOptions ([#8471](https://github.com/ionic-team/capacitor/issues/8471)) ([258867b](https://github.com/ionic-team/capacitor/commit/258867b7bf37b1837b99b02ec9638e5a6df08d97)) | ||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -44,17 +44,17 @@ public class SystemBars extends Plugin { | |||||
| private static final int WEBVIEW_VERSION_WITH_SAFE_AREA_KEYBOARD_FIX = 144; | ||||||
|
|
||||||
| static final String viewportMetaJSFunction = """ | ||||||
| function capacitorSystemBarsCheckMetaViewport() { | ||||||
| const meta = document.querySelectorAll("meta[name=viewport]"); | ||||||
| if (meta.length == 0) { | ||||||
| return false; | ||||||
| } | ||||||
| // get the last found meta viewport tag | ||||||
| const metaContent = meta[meta.length - 1].content; | ||||||
| return metaContent.includes("viewport-fit=cover"); | ||||||
| function capacitorSystemBarsCheckMetaViewport() { | ||||||
| const meta = document.querySelectorAll("meta[name=viewport]"); | ||||||
| if (meta.length == 0) { | ||||||
| return false; | ||||||
| } | ||||||
| capacitorSystemBarsCheckMetaViewport(); | ||||||
| """; | ||||||
| // get the last found meta viewport tag | ||||||
| const metaContent = meta[meta.length - 1].content; | ||||||
| return metaContent.includes("viewport-fit=cover"); | ||||||
| } | ||||||
| capacitorSystemBarsCheckMetaViewport(); | ||||||
| """; | ||||||
|
|
||||||
| private String insetsHandling = INSETS_HANDLING_CSS; | ||||||
| private boolean hasViewportCover = false; | ||||||
|
|
@@ -272,7 +272,7 @@ private void initWindowInsetsListener() { | |||||
| // We need to correct for a possible shown IME | ||||||
| v.setPadding(0, 0, 0, keyboardVisible ? imeInsets.bottom : 0); | ||||||
|
|
||||||
| Insets safeAreaInsets = calcSafeAreaInsets(safeAreaSource); | ||||||
| Insets safeAreaInsets = calcSafeAreaInsets(insets); | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. P1: On API <30, AppCompat can consume the bottom inset before this listener receives Prompt for AI agents
Suggested change
|
||||||
| injectSafeAreaCSS(safeAreaInsets.top, safeAreaInsets.right, safeAreaInsets.bottom, safeAreaInsets.left); | ||||||
|
|
||||||
| return new WindowInsetsCompat.Builder(insets) | ||||||
|
|
@@ -297,7 +297,7 @@ private void initWindowInsetsListener() { | |||||
| .setInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.displayCutout(), Insets.of(0, 0, 0, 0)) | ||||||
| .build(); | ||||||
|
|
||||||
| Insets safeAreaInsets = calcSafeAreaInsets(safeAreaSource); | ||||||
| Insets safeAreaInsets = calcSafeAreaInsets(newInsets); | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. P1: When the WebView cannot use the passthrough path, Prompt for AI agents
Suggested change
|
||||||
| injectSafeAreaCSS(safeAreaInsets.top, safeAreaInsets.right, safeAreaInsets.bottom, safeAreaInsets.left); | ||||||
|
|
||||||
| return newInsets; | ||||||
|
|
@@ -364,7 +364,6 @@ private void setHidden(boolean hide, String bar) { | |||||
| if (hide) { | ||||||
| if (bar.isEmpty()) { | ||||||
| windowInsetsControllerCompat.hide(WindowInsetsCompat.Type.systemBars()); | ||||||
| navBarVisible = false; | ||||||
| } else if (bar.equals(BAR_STATUS_BAR)) { | ||||||
| windowInsetsControllerCompat.hide(WindowInsetsCompat.Type.statusBars()); | ||||||
| } else if (bar.equals(BAR_GESTURE_BAR)) { | ||||||
|
|
@@ -376,7 +375,6 @@ private void setHidden(boolean hide, String bar) { | |||||
|
|
||||||
| if (bar.isEmpty()) { | ||||||
| windowInsetsControllerCompat.show(WindowInsetsCompat.Type.systemBars()); | ||||||
| navBarVisible = true; | ||||||
| } else if (bar.equals(BAR_STATUS_BAR)) { | ||||||
| windowInsetsControllerCompat.show(WindowInsetsCompat.Type.statusBars()); | ||||||
| } else if (bar.equals(BAR_GESTURE_BAR)) { | ||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,7 +1,5 @@ | ||
| package com.getcapacitor.plugin; | ||
|
|
||
| import static org.junit.Assert.assertFalse; | ||
| import static org.junit.Assert.assertTrue; | ||
| import static org.mockito.Mockito.mock; | ||
| import static org.mockito.Mockito.mockStatic; | ||
| import static org.mockito.Mockito.never; | ||
|
|
@@ -15,7 +13,6 @@ | |
| import androidx.core.view.WindowInsetsCompat; | ||
| import androidx.core.view.WindowInsetsControllerCompat; | ||
| import com.getcapacitor.Bridge; | ||
| import java.lang.reflect.Field; | ||
| import java.lang.reflect.Method; | ||
| import org.junit.Test; | ||
| import org.mockito.MockedStatic; | ||
|
|
@@ -49,66 +46,8 @@ public void showWithNavigationBarShowsOnlyNavigationBars() throws Exception { | |
| verify(controller, never()).show(WindowInsetsCompat.Type.statusBars()); | ||
| } | ||
|
|
||
| @Test | ||
| public void hideWithEmptyBarHidesSystemBars() throws Exception { | ||
| WindowInsetsControllerCompat controller = invokeSetHidden(new SystemBars(), true, ""); | ||
|
|
||
| verify(controller).hide(WindowInsetsCompat.Type.systemBars()); | ||
| verify(controller, never()).hide(WindowInsetsCompat.Type.statusBars()); | ||
| verify(controller, never()).hide(WindowInsetsCompat.Type.navigationBars()); | ||
| } | ||
|
|
||
| @Test | ||
| public void hideWithStatusBarHidesOnlyStatusBars() throws Exception { | ||
| WindowInsetsControllerCompat controller = invokeSetHidden(new SystemBars(), true, "StatusBar"); | ||
|
|
||
| verify(controller).hide(WindowInsetsCompat.Type.statusBars()); | ||
| verify(controller, never()).hide(WindowInsetsCompat.Type.systemBars()); | ||
| verify(controller, never()).hide(WindowInsetsCompat.Type.navigationBars()); | ||
| } | ||
|
|
||
| @Test | ||
| public void togglingNavigationBarTracksNavBarVisible() throws Exception { | ||
| SystemBars plugin = new SystemBars(); | ||
|
|
||
| invokeSetHidden(plugin, true, "NavigationBar"); | ||
| assertFalse(navBarVisible(plugin)); | ||
|
|
||
| invokeSetHidden(plugin, false, "NavigationBar"); | ||
| assertTrue(navBarVisible(plugin)); | ||
| } | ||
|
|
||
| @Test | ||
| public void togglingAllBarsTracksNavBarVisible() throws Exception { | ||
| SystemBars plugin = new SystemBars(); | ||
|
|
||
| invokeSetHidden(plugin, true, ""); | ||
| assertFalse(navBarVisible(plugin)); | ||
|
|
||
| invokeSetHidden(plugin, false, ""); | ||
| assertTrue(navBarVisible(plugin)); | ||
| } | ||
|
|
||
| @Test | ||
| public void hidingOnlyStatusBarLeavesNavBarVisible() throws Exception { | ||
| SystemBars plugin = new SystemBars(); | ||
|
|
||
| invokeSetHidden(plugin, true, "StatusBar"); | ||
|
|
||
| assertTrue(navBarVisible(plugin)); | ||
| } | ||
|
|
||
| private boolean navBarVisible(SystemBars plugin) throws Exception { | ||
| Field field = SystemBars.class.getDeclaredField("navBarVisible"); | ||
| field.setAccessible(true); | ||
| return field.getBoolean(plugin); | ||
| } | ||
|
|
||
| private WindowInsetsControllerCompat invokeSetHidden(String bar) throws Exception { | ||
| return invokeSetHidden(new SystemBars(), false, bar); | ||
| } | ||
|
|
||
| private WindowInsetsControllerCompat invokeSetHidden(SystemBars plugin, boolean hide, String bar) throws Exception { | ||
| SystemBars plugin = new SystemBars(); | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. P2: This diff removes the tests that cover the Prompt for AI agents |
||
| Bridge bridge = mock(Bridge.class); | ||
| AppCompatActivity activity = mock(AppCompatActivity.class); | ||
| Window window = mock(Window.class); | ||
|
|
@@ -126,7 +65,7 @@ private WindowInsetsControllerCompat invokeSetHidden(SystemBars plugin, boolean | |
|
|
||
| Method setHidden = SystemBars.class.getDeclaredMethod("setHidden", boolean.class, String.class); | ||
| setHidden.setAccessible(true); | ||
| setHidden.invoke(plugin, hide, bar); | ||
| setHidden.invoke(plugin, false, bar); | ||
| } | ||
|
|
||
| return controller; | ||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -1,9 +1,9 @@ | ||||||
| { | ||||||
| "name": "@capacitor-plus/android", | ||||||
| "version": "8.5.1", | ||||||
| "description": "Capacitor+: Enhanced Capacitor with automated upstream sync - Cross-platform apps with JavaScript and the web", | ||||||
| "homepage": "https://capgo.app/docs/plugins/capacitor-plus/", | ||||||
| "author": "Capgo Team <support@capgo.app> (https://capgo.app)", | ||||||
| "name": "@capacitor/android", | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. P1: This upstream-preferred conflict resolution reverts the fork's plus-specific package scope, breaking its own release tooling. scripts/sync-peer-dependencies.mjs (run on every lerna Prompt for AI agents
Suggested change
|
||||||
| "version": "8.5.0", | ||||||
| "description": "Capacitor: Cross-platform apps with JavaScript and the web", | ||||||
| "homepage": "https://capacitorjs.com", | ||||||
| "author": "Ionic Team <hi@ionic.io> (https://ionic.io)", | ||||||
| "license": "MIT", | ||||||
| "repository": { | ||||||
| "type": "git", | ||||||
|
|
@@ -23,7 +23,6 @@ | |||||
| "verify": "./gradlew clean lint build test -b capacitor/build.gradle" | ||||||
| }, | ||||||
| "peerDependencies": { | ||||||
| "@capacitor-plus/core": "^8.5.0", | ||||||
| "@capacitor/core": "^8.5.0" | ||||||
| }, | ||||||
| "publishConfig": { | ||||||
|
|
||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P3: This sync drops the plus-only
8.5.1changelog section, which was the most recent plus release and documented the CI fixes that made these syncs work (#109, #110). The remaining plus-specific entries (8.3.12, 8.3.11) were kept, so 8.5.1 is now missing and the changelog top points at an older release. Confirm this loss is intended before merging this auto-generated conflict PR.Prompt for AI agents