Skip to content

Commit 2ff6490

Browse files
committed
Merge branch 'main' into release/7.12.0
# Conflicts: # CHANGELOG.md
2 parents b15ad9f + 510b964 commit 2ff6490

14 files changed

Lines changed: 617 additions & 13 deletions

.github/workflows/changelog-preview.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ permissions:
1414

1515
jobs:
1616
changelog-preview:
17-
uses: getsentry/craft/.github/workflows/changelog-preview.yml@beea4aba589c66381258cbd131c5551ae8245b82 # V2
17+
uses: getsentry/craft/.github/workflows/changelog-preview.yml@63d1636bead951f6e034ed62c2a3610965fef010 # V2
1818
secrets: inherit

.github/workflows/codeql-analysis.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ jobs:
4444

4545
# Initializes the CodeQL tools for scanning.
4646
- name: Initialize CodeQL
47-
uses: github/codeql-action/init@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # pin@v4.32.0
47+
uses: github/codeql-action/init@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # pin@v4.32.2
4848
with:
4949
languages: ${{ matrix.language }}
5050
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -55,7 +55,7 @@ jobs:
5555
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
5656
# If this step fails, then you should remove it and run the build manually (see below)
5757
- name: Autobuild
58-
uses: github/codeql-action/autobuild@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # pin@v4.32.0
58+
uses: github/codeql-action/autobuild@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # pin@v4.32.2
5959

6060
# ℹ️ Command-line programs to run using the OS shell.
6161
# 📚 https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
@@ -66,4 +66,4 @@ jobs:
6666
# make bootstrap
6767
# make release
6868
- name: Perform CodeQL Analysis
69-
uses: github/codeql-action/analyze@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # pin@v4.32.0
69+
uses: github/codeql-action/analyze@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # pin@v4.32.2

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ jobs:
4343
cache-dependency-path: yarn.lock
4444

4545
- name: Prepare release
46-
uses: getsentry/craft@beea4aba589c66381258cbd131c5551ae8245b82 # v2
46+
uses: getsentry/craft@63d1636bead951f6e034ed62c2a3610965fef010 # v2
4747
env:
4848
GITHUB_TOKEN: ${{ steps.token.outputs.token }}
4949
with:

CHANGELOG.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,27 @@
66
> make sure you follow our [migration guide](https://docs.sentry.io/platforms/react-native/migration/) first.
77
<!-- prettier-ignore-end -->
88
9+
## Unreleased
10+
11+
### Features
12+
13+
- Add `autoCorrect` and `spellCheck` config options to `FeedbackWidget` ([#5627](https://github.com/getsentry/sentry-react-native/pull/5627))
14+
- Add `autoCapitalize="none"` to `FeedbackWidget` email input ([#5627](https://github.com/getsentry/sentry-react-native/pull/5627))
15+
16+
### Fixes
17+
18+
- Deep merge custom `styles` with defaults in `FeedbackWidget` instead of replacing them ([#5625](https://github.com/getsentry/sentry-react-native/pull/5625))
19+
- Note that partial style overrides now preserve default properties like padding and borders
20+
21+
### Dependencies
22+
23+
- Bump Android SDK from v8.31.0 to v8.32.0 ([#5633](https://github.com/getsentry/sentry-react-native/pull/5633))
24+
- [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#8320)
25+
- [diff](https://github.com/getsentry/sentry-java/compare/8.31.0...8.32.0)
26+
- Bump Android SDK Stubs from v8.31.0 to v8.32.0 ([#5634](https://github.com/getsentry/sentry-react-native/pull/5634))
27+
- [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#8320)
28+
- [diff](https://github.com/getsentry/sentry-java/compare/8.31.0...8.32.0)
29+
930
## 7.12.1
1031

1132
### Fixes
@@ -14,6 +35,10 @@
1435

1536
## 7.12.0
1637

38+
> [!WARNING]
39+
> This release contains an issue that can cause iOS builds to fail with circular dependency errors.
40+
> See issue [#5641](https://github.com/getsentry/sentry-react-native/issues/5641) for more details.
41+
1742
### Features
1843

1944
- Extends the experimental support of UI profiling to iOS ([#5611](https://github.com/getsentry/sentry-react-native/pull/5611))

packages/core/android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,5 +55,5 @@ android {
5555
dependencies {
5656
compileOnly files('libs/replay-stubs.jar')
5757
implementation 'com.facebook.react:react-native:+'
58-
api 'io.sentry:sentry-android:8.31.0'
58+
api 'io.sentry:sentry-android:8.32.0'
5959
}
0 Bytes
Binary file not shown.

packages/core/android/replay-stubs/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@ tasks.named('jar', Jar) {
1818
}
1919

2020
dependencies {
21-
compileOnly 'io.sentry:sentry:8.31.0'
21+
compileOnly 'io.sentry:sentry:8.32.0'
2222
}

packages/core/scripts/expo-upload-sourcemaps.js

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/usr/bin/env node
2-
const { execSync } = require('child_process');
2+
const { spawnSync } = require('child_process');
33
const fs = require('fs');
44
const path = require('path');
55
const process = require('process');
@@ -16,8 +16,11 @@ function getEnvVar(varname) {
1616

1717
function getSentryPluginPropertiesFromExpoConfig() {
1818
try {
19-
const stdOutBuffer = execSync('npx expo config --json');
20-
const config = JSON.parse(stdOutBuffer.toString());
19+
const result = spawnSync('npx', ['expo', 'config', '--json'], { encoding: 'utf8' });
20+
if (result.error || result.status !== 0) {
21+
throw result.error || new Error(`expo config exited with status ${result.status}`);
22+
}
23+
const config = JSON.parse(result.stdout);
2124
const plugins = config.plugins;
2225
if (!plugins) {
2326
return null;
@@ -217,8 +220,15 @@ for (const [assetGroupName, assets] of Object.entries(groupedAssets)) {
217220
}
218221

219222
const isHermes = assets.find(asset => asset.endsWith('.hbc'));
220-
const windowsCallback = process.platform === 'win32' ? 'node ' : '';
221-
execSync(`${windowsCallback}${sentryCliBin} sourcemaps upload ${isHermes ? '--debug-id-reference' : ''} ${assets.join(' ')}`, {
223+
224+
// Build arguments array for spawnSync (no shell interpretation needed)
225+
const args = ['sourcemaps', 'upload'];
226+
if (isHermes) {
227+
args.push('--debug-id-reference');
228+
}
229+
args.push(...assets);
230+
231+
const result = spawnSync(sentryCliBin, args, {
222232
env: {
223233
...process.env,
224234
[SENTRY_PROJECT]: sentryProject,
@@ -227,6 +237,15 @@ for (const [assetGroupName, assets] of Object.entries(groupedAssets)) {
227237
},
228238
stdio: 'inherit',
229239
});
240+
241+
if (result.error) {
242+
console.error('Failed to upload sourcemaps:', result.error);
243+
process.exit(1);
244+
}
245+
if (result.status !== 0) {
246+
console.error(`sentry-cli exited with status ${result.status}`);
247+
process.exit(result.status);
248+
}
230249
numAssetsUploaded++;
231250
}
232251

packages/core/src/js/feedback/FeedbackWidget.tsx

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,17 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
260260
const config: FeedbackGeneralConfiguration = this.props;
261261
const imagePickerConfiguration: ImagePickerConfiguration = this.props;
262262
const text: FeedbackTextConfiguration = this.props;
263-
const styles: FeedbackWidgetStyles = { ...defaultStyles(theme), ...this.props.styles };
263+
const _defaultStyles = defaultStyles(theme);
264+
const _propStyles = this.props.styles || {};
265+
const autoCorrect = config.autoCorrect !== false;
266+
const spellCheck = config.spellCheck !== false;
267+
const styles = (Object.keys(_defaultStyles) as Array<keyof FeedbackWidgetStyles>).reduce<FeedbackWidgetStyles>(
268+
(merged, key) => {
269+
(merged as Record<string, unknown>)[key] = { ...(_defaultStyles[key] as object), ...(_propStyles[key] as object) };
270+
return merged;
271+
},
272+
{},
273+
);
264274
const onCancel = (): void => {
265275
if (onFormClose) {
266276
onFormClose();
@@ -310,6 +320,8 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
310320
placeholder={text.namePlaceholder}
311321
value={name}
312322
onChangeText={value => this.setState({ name: value })}
323+
autoCorrect={false}
324+
spellCheck={false}
313325
/>
314326
</>
315327
)}
@@ -325,6 +337,9 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
325337
testID="sentry-feedback-email-input"
326338
placeholder={text.emailPlaceholder}
327339
keyboardType={'email-address' as KeyboardTypeOptions}
340+
autoCapitalize="none"
341+
autoCorrect={false}
342+
spellCheck={false}
328343
value={email}
329344
onChangeText={value => this.setState({ email: value })}
330345
/>
@@ -342,6 +357,8 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
342357
value={description}
343358
onChangeText={value => this.setState({ description: value })}
344359
multiline
360+
autoCorrect={autoCorrect}
361+
spellCheck={spellCheck}
345362
/>
346363
{(config.enableScreenshot || imagePickerConfiguration.imagePicker || this._hasScreenshot()) && (
347364
<View style={styles.screenshotContainer}>

packages/core/src/js/feedback/FeedbackWidget.types.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,20 @@ export interface FeedbackGeneralConfiguration {
6060
*/
6161
enableTakeScreenshot?: boolean;
6262

63+
/**
64+
* Enable auto-correct for text inputs.
65+
*
66+
* @default true
67+
*/
68+
autoCorrect?: boolean;
69+
70+
/**
71+
* Enable spell check for text inputs.
72+
*
73+
* @default true
74+
*/
75+
spellCheck?: boolean;
76+
6377
/**
6478
* Fill in email/name input fields with Sentry user context if it exists.
6579
* The value of the email/name keys represent the properties of your user context.

0 commit comments

Comments
 (0)