merge release-8.8.7#31147
Merged
Merged
Conversation
v8.8.6
…sion (#31110) Issue number: N/A --------- ## What is the current behavior? When passing a Playwright flag with a space in its value (e.g. `--project='Mobile Safari'`), the shell strips the quotes before Node receives the argument. Since `docker.mjs` passed args to `execa` with `shell: true`, the unquoted space caused the argument to be split and Playwright never received the correct value. Additionally, arguments like `-e DISPLAY=${display}`, `-v ${displayVolume}`, and `--mount` were constructed as combined strings and passed through shell interpretation, meaning special characters in those values (e.g. spaces in an absolute path) could cause the command to fail unexpectedly. This caused CodeQL to trigger with security issues. ## What is the new behavior? Each Docker argument is now passed as a separate array element to `execa` without `shell: true`, so values are forwarded directly to Docker without shell re-interpretation. This preserves spaces within argument values (e.g. `--project='Mobile Safari'`) and prevents uncontrolled expansion of paths and environment variable values. The security issues stated by CodeQL has been addressed. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information Verify that the following command works: `npm run test.e2e.docker datetime/test/basic -- -g 'IO fallback' --project='Mobile Safari' --repeat-each=20`
…le (#31114) Issue number: N/A --------- <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type (bugfix, feature, etc). Submit multiple pull requests if needed. --> ## What is the current behavior? <!-- Please describe the current behavior that you are modifying. --> We've decided to use `internal` as the prefix for internal CSS variables and `ion` for public variables. We recently introduced a new internal variable for the safe area that doesn't have the correct prefix. ## What is the new behavior? <!-- Please describe the behavior or changes that are being added by this PR. --> - Updated `--ion-content-safe-area-padding-bottom` to `--internal-content-safe-area-padding-bottom` ## Does this introduce a breaking change? - [ ] Yes - [x] No <!-- If this introduces a breaking change: 1. Describe the impact and migration path for existing applications below. 2. Update the BREAKING.md file with the breaking change. 3. Add "BREAKING CHANGE: [...]" to the commit description when merging. See https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer for more information. --> ## Other information <!-- Any other information that is important to this PR such as screenshots of how the component looks before and after the change. --> N/A
) Issue number: resolves #30412 --------- ## What is the current behavior? When a user listener bound to `ion-input` or `ion-item` receives a tap that requires scroll assist to scroll the input into view, the click handler fires twice. Programmatic `setFocus()` and keyboard focus into an offscreen input also dispatch a phantom click event the developer didn't request. The cause is `scroll-assist.ts`: after `relocateInput` moves the native input, a RAF-scheduled `componentEl.click()` re-emits a click on the host. That recovery was added in #22845 (Feb 2021) to fix #21871, when scroll assist drove focus from its own touchstart/touchend listeners and `relocateInput` ran during the in-flight click event's lifecycle. ## What is the new behavior? <!-- Please describe the behavior or changes that are being added by this PR. --> The RAF recovery click is removed. #25848 (Sep 2022) restructured scroll assist to react to `focusin` rather than drive focus from touch events, so `relocateInput` now runs strictly after the click event has finished propagating. Combined with `ion-input`'s click capture handler and `ion-item`'s click-on-padding handler from #30373 (April 2025), the click is always dispatched on the component host before scroll assist runs. Re-firing it produced duplicate clicks for user interactions and phantom clicks for programmatic and keyboard focus. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information Regression coverage in `core/src/components/input/test/item/scroll-assist-double-click.e2e.ts` covers four cases on iOS Mobile Safari and Mobile Chrome: padding click, direct input click, programmatic `setFocus()`, and keyboard focus. The first two assert one click event; the last two assert zero. All four fail without this change and pass with it. Preview: - https://ionic-framework-git-fw-6540-ionic1.vercel.app/src/utils/input-shims/hacks/test?ionic:mode=ios
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@capacitor/core](https://capacitorjs.com) ([source](https://redirect.github.com/ionic-team/capacitor)) | [`8.3.1` → `8.3.2`](https://renovatebot.com/diffs/npm/@capacitor%2fcore/8.3.1/8.3.2) |  |  | --- ### Release Notes <details> <summary>ionic-team/capacitor (@​capacitor/core)</summary> ### [`v8.3.2`](https://redirect.github.com/ionic-team/capacitor/blob/HEAD/CHANGELOG.md#832-2026-05-07) [Compare Source](https://redirect.github.com/ionic-team/capacitor/compare/8.3.1...8.3.2) ##### Bug Fixes - **cli:** add cSettings support for compiler flags in generated Package.swift ([#​8448](https://redirect.github.com/ionic-team/capacitor/issues/8448)) ([0bd0676](https://redirect.github.com/ionic-team/capacitor/commit/0bd0676315c5fd77e50312dd7b5bf4990dcbd7d0)) - **cli:** add system framework and weak framework support in SPM Package.swift ([#​8447](https://redirect.github.com/ionic-team/capacitor/issues/8447)) ([3232f0f](https://redirect.github.com/ionic-team/capacitor/commit/3232f0fe1d9811b0b5c500e3dc05cb8a250177f8)) - **cli:** correct Capacitor plugin SPM compat check ([#​8440](https://redirect.github.com/ionic-team/capacitor/issues/8440)) ([e5ccc45](https://redirect.github.com/ionic-team/capacitor/commit/e5ccc451dda27d56bca824ed644bd20fe4d988cb)) - **cli:** generate binaryTarget entries for custom xcframeworks in Package.swift ([#​8445](https://redirect.github.com/ionic-team/capacitor/issues/8445)) ([1f7e33f](https://redirect.github.com/ionic-team/capacitor/commit/1f7e33fca43d183332ec19d22b0d75ef81d8cc6d)) - **cli:** generate resource entries in Package.swift ([#​8455](https://redirect.github.com/ionic-team/capacitor/issues/8455)) ([790bd27](https://redirect.github.com/ionic-team/capacitor/commit/790bd27123497111984227010c3162cec94a108e)) - **cli:** handle Cordova plugins without iOS source files ([#​8443](https://redirect.github.com/ionic-team/capacitor/issues/8443)) ([0da130e](https://redirect.github.com/ionic-team/capacitor/commit/0da130eb7a861bee4e2c35bc0aac53ba9c983fc3)) - **cli:** link plugin dependencies in Package.swift ([#​8457](https://redirect.github.com/ionic-team/capacitor/issues/8457)) ([b3c769e](https://redirect.github.com/ionic-team/capacitor/commit/b3c769e856c826b1174518877cf86ac7ce73bf09)) - **ios:** support Cordova plugins with Package.swift ([#​8438](https://redirect.github.com/ionic-team/capacitor/issues/8438)) ([139943b](https://redirect.github.com/ionic-team/capacitor/commit/139943b0c05fddb2d1ce2d6f468800fddf17b4cf)) - **SystemBars:** avoid extra view padding on API <= 34 ([#​8439](https://redirect.github.com/ionic-team/capacitor/issues/8439)) ([5b135a7](https://redirect.github.com/ionic-team/capacitor/commit/5b135a70217be560e7176c8d5b514cc92ed3e4e4)) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Issue number: internal --------- ## What is the current behavior? When an `ion-alert` has two buttons whose combined text is too long to fit on one row, flex-wrap pushes the second button onto a new row. The horizontal layout's right border (drawn between buttons via `alert.ios.scss`) stays on the first button, leaving a stray vertical separator at the wrap edge. The `alert-button-group-vertical` class only triggers on `buttons.length > 2`, so two-button alerts can't opt into the clean vertical layout even when they visually need it. ## What is the new behavior? The alert now watches its button group with a `ResizeObserver` and toggles `alert-button-group-vertical` whenever the buttons render at different `offsetTop` values, so wrapping two-button alerts get the same vertical treatment as three-or-more-button alerts. The wrap state resets when the `buttons` prop changes so a new button set is re-evaluated from scratch, and the observer is re-attached in `connectedCallback` so reconnected alerts keep working. The layout read is deferred via `raf` to avoid forcing synchronous layout and to sidestep `ResizeObserver` loop warnings. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information The right-border styling between buttons only exists in iOS mode, so the new e2e test is iOS only Preview: - iOS: https://ionic-framework-git-fw-7244-ionic1.vercel.app/src/components/alert/test/basic?ionic:mode=ios A lot of the updated screenshots are because of the new alert button. We should probably make note of these to go back and update the tests so they focus on the modal and don't include the background to prevent this sort of update spam in the future. --------- Co-authored-by: ionitron <hi@ionicframework.com> Co-authored-by: Maria Hutt <thetaPC@users.noreply.github.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@capacitor/core](https://capacitorjs.com) ([source](https://redirect.github.com/ionic-team/capacitor)) | [`8.3.2` → `8.3.3`](https://renovatebot.com/diffs/npm/@capacitor%2fcore/8.3.2/8.3.3) |  |  | --- ### Release Notes <details> <summary>ionic-team/capacitor (@​capacitor/core)</summary> ### [`v8.3.3`](https://redirect.github.com/ionic-team/capacitor/blob/HEAD/CHANGELOG.md#833-2026-05-08) [Compare Source](https://redirect.github.com/ionic-team/capacitor/compare/8.3.2...8.3.3) ##### Bug Fixes - **cli:** copy plugin files in CocoaPods projects ([#​8467](https://redirect.github.com/ionic-team/capacitor/issues/8467)) ([b2d7719](https://redirect.github.com/ionic-team/capacitor/commit/b2d771926a180e60deea31992d7d4abcd5ca3bc7)) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | Type | Update | |---|---|---|---|---|---| | [@axe-core/playwright](https://redirect.github.com/dequelabs/axe-core-npm) | [`^4.11.1` → `^4.11.3`](https://renovatebot.com/diffs/npm/@axe-core%2fplaywright/4.11.1/4.11.3) |  |  | devDependencies | patch | | [@playwright/test](https://playwright.dev) ([source](https://redirect.github.com/microsoft/playwright)) | [`^1.58.2` → `^1.59.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.58.2/1.59.1) |  |  | devDependencies | minor | | mcr.microsoft.com/playwright | `v1.58.2` → `v1.59.1` |  |  | final | minor | --- ### Release Notes <details> <summary>dequelabs/axe-core-npm (@​axe-core/playwright)</summary> ### [`v4.11.3`](https://redirect.github.com/dequelabs/axe-core-npm/compare/v4.11.2...25fbfd2a7b4d38fcdca487d393192e811592f1ec) [Compare Source](https://redirect.github.com/dequelabs/axe-core-npm/compare/v4.11.2...v4.11.3) ### [`v4.11.2`](https://redirect.github.com/dequelabs/axe-core-npm/releases/tag/v4.11.2): Release 4.11.2 [Compare Source](https://redirect.github.com/dequelabs/axe-core-npm/compare/v4.11.1...v4.11.2) ##### Bug Fixes - Update axe-core to v4.11.3 ([#​1306](https://redirect.github.com/dequelabs/axe-core-npm/issues/1306)) ([71c4179](https://redirect.github.com/dequelabs/axe-core-npm/commit/71c41796f4cdf2aebcb5e49d1bf6896f4ad72a2a)) - **wdio:** support v9 wdio switchFrame and switchWindow ([#​1302](https://redirect.github.com/dequelabs/axe-core-npm/issues/1302)) ([4689273](https://redirect.github.com/dequelabs/axe-core-npm/commit/4689273aead05133e161fe1d419a60224763ed7c)), closes [#​1164](https://redirect.github.com/dequelabs/axe-core-npm/issues/1164) </details> <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.59.1`](https://redirect.github.com/microsoft/playwright/compare/v1.59.0...d466ac5358cae058cdc75d2ae3ab3ad220042730) [Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.59.0...v1.59.1) ### [`v1.59.0`](https://redirect.github.com/microsoft/playwright/compare/v1.58.2...01b2b1533e0bfa1c582117e3ec109fcb57657747) [Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.58.2...v1.59.0) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: ionitron <hi@ionicframework.com> Co-authored-by: Maria Hutt <thetaPC@users.noreply.github.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@capacitor/core](https://capacitorjs.com) ([source](https://redirect.github.com/ionic-team/capacitor)) | [`8.3.3` → `8.3.4`](https://renovatebot.com/diffs/npm/@capacitor%2fcore/8.3.3/8.3.4) |  |  | --- ### Release Notes <details> <summary>ionic-team/capacitor (@​capacitor/core)</summary> ### [`v8.3.4`](https://redirect.github.com/ionic-team/capacitor/blob/HEAD/CHANGELOG.md#834-2026-05-12) [Compare Source](https://redirect.github.com/ionic-team/capacitor/compare/8.3.3...8.3.4) **Note:** Version bump only for package capacitor </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release 8.8.7