Skip to content

Commit 2f961e8

Browse files
authored
Merge branch 'master' into da4/solid-primitive-is-skew
2 parents 61646b5 + 7f965b5 commit 2f961e8

164 files changed

Lines changed: 1000 additions & 191 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/agents/electron-version-bump.agent.md

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,9 @@ grep -r '"electron":' --include='package.json' -l .
115115

116116
Compare the results with the list above and include any additional files found.
117117

118-
### Step 3: Review and apply breaking changes
118+
### Step 3: Review breaking changes and get approval
119+
120+
**This step requires explicit invoker approval before proceeding to file modifications.**
119121

120122
Fetch the Electron breaking changes documentation. Use the raw URL to avoid GitHub rate limiting:
121123

@@ -144,10 +146,7 @@ grep -r "require(\"electron\")" --include='*.ts' --include='*.js' -l .
144146
For each breaking change listed in the Electron docs for the new major version:
145147

146148
1. **Identify** whether the breaking change affects any API used in this codebase.
147-
2. **If affected**, apply the necessary code fix:
148-
- Search the codebase for all usages of the affected API.
149-
- Update the code to use the new API or pattern as prescribed by the Electron breaking changes doc.
150-
- Ensure backward compatibility with the minimum supported Electron version (currently ^35.0.0) — use feature detection or version checks when the old API is removed and a polyfill is needed.
149+
2. **If affected**, describe the required code fix and which files need modification.
151150
3. **If not affected**, note it and move on.
152151

153152
**Common breaking change categories to watch for:**
@@ -159,6 +158,24 @@ For each breaking change listed in the Electron docs for the new major version:
159158
- New required permissions or security policy changes
160159
- Deprecated APIs that are now removed
161160

161+
#### Present findings and wait for approval
162+
163+
After completing the analysis, present a summary table to the invoker:
164+
165+
| Breaking change | Affected? | Proposed fix |
166+
| --- | --- | --- |
167+
| (change description) | Yes / No | (fix description or "N/A") |
168+
169+
**STOP here and wait for the invoker's explicit go-ahead before making any file changes.** If the invoker requests modifications to the proposed approach, incorporate their feedback before proceeding.
170+
171+
#### Apply breaking change fixes (after approval)
172+
173+
Once approved, for each affected breaking change:
174+
175+
- Search the codebase for all usages of the affected API.
176+
- Update the code to use the new API or pattern as prescribed by the Electron breaking changes doc.
177+
- Ensure backward compatibility with the minimum supported Electron version documented in docs/learning/SupportedPlatforms.md — use feature detection or version checks when the old API is removed and a polyfill is needed.
178+
162179
If a breaking change requires a non-trivial migration (e.g., architectural changes), document the issue in the report. If triggered from a GitHub issue, add a comment to the issue describing the blocker and wait for guidance. Otherwise, ask the invoker before proceeding with the fix.
163180

164181
### Step 3.5: Update `@itwin/electron-authorization` if needed
@@ -290,10 +307,13 @@ gh pr create \
290307
--head electron-<NEW_MAJOR> \
291308
--title "Add support for Electron <NEW_MAJOR>" \
292309
--body "$(cat <<'EOF'
293-
Adds support for Electron <NEW_MAJOR>.
294-
295310
### Breaking changes review
296-
<Include the breaking changes assessment here — list each change with "affected" / "not affected" status>
311+
312+
<Include the breaking changes assessment table from Step 3 here>
313+
314+
### Notes
315+
316+
<Include any relevant notes, e.g. unmet peer dependencies>
297317
298318
See [Electron <NEW_MAJOR> release blog](https://www.electronjs.org/blog/electron-<NEW_MAJOR>-0) for details.
299319
EOF

common/api/core-backend.api.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -694,7 +694,7 @@ export class BriefcaseManager {
694694
// @internal (undocumented)
695695
static getChangedElementsPathName(iModelId: GuidString): LocalFileName;
696696
// @internal
697-
static getChangedInstancesDataForTxn(db: BriefcaseDb, txnId: string): AsyncGenerator<ChangeInstance>;
697+
static getChangedInstancesDataForTxn(db: BriefcaseDb, txnId: string): AsyncGenerator<InstancePatch>;
698698
// @internal (undocumented)
699699
static getChangeSetsPath(iModelId: GuidString): LocalDirName;
700700
static getFileName(briefcase: BriefcaseProps): LocalFileName;
@@ -4589,6 +4589,9 @@ export class IModelNative {
45894589
static get platform(): typeof IModelJsNative;
45904590
}
45914591

4592+
// @internal (undocumented)
4593+
export const _implicitTxn: unique symbol;
4594+
45924595
// @beta
45934596
export type ImplicitWriteEnforcement = "allow" | "log" | "throw";
45944597

@@ -4679,6 +4682,12 @@ export interface InstanceChange {
46794682
summaryId: Id64String;
46804683
}
46814684

4685+
// @internal
4686+
export interface InstancePatch extends Omit<ChangeInstance, "$meta"> {
4687+
// (undocumented)
4688+
$meta: Pick<ChangeMeta, "op" | "stage" | "isIndirectChange">;
4689+
}
4690+
46824691
// @beta
46834692
export interface IntegrityCheckOptions {
46844693
quickCheck?: boolean;

common/api/summary/core-backend.exports.csv

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,7 @@ public;class;IModelJsFs
367367
public;class;IModelJsFsStats
368368
public;interface;IModelNameArg
369369
internal;class;IModelNative
370+
internal;const;_implicitTxn
370371
beta;type;ImplicitWriteEnforcement
371372
public;class;InformationContentElement
372373
preview;class;InformationContentElement
@@ -386,6 +387,7 @@ internal;function;initializeTracing
386387
beta;interface;InlineGeometryPartsResult
387388
public;interface;InsertElementOptions
388389
beta;interface;InstanceChange
390+
internal;interface;InstancePatch
389391
beta;interface;IntegrityCheckOptions
390392
public;class;IpcHandler
391393
public;class;IpcHost
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"changes": [
3+
{
4+
"packageName": "@itwin/certa",
5+
"comment": "Add support for Electron 42",
6+
"type": "none"
7+
}
8+
],
9+
"packageName": "@itwin/certa"
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"changes": [
3+
{
4+
"packageName": "@itwin/core-backend",
5+
"comment": "",
6+
"type": "none"
7+
}
8+
],
9+
"packageName": "@itwin/core-backend"
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"changes": [
3+
{
4+
"packageName": "@itwin/core-backend",
5+
"comment": "",
6+
"type": "none"
7+
}
8+
],
9+
"packageName": "@itwin/core-backend"
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"changes": [
3+
{
4+
"packageName": "@itwin/core-backend",
5+
"comment": "Added batching while writing instance patches to the file during semantic rebase. Also reduced the $meta field in instance patches to include only the necessary properties and skip unnecessary ones.",
6+
"type": "none"
7+
}
8+
],
9+
"packageName": "@itwin/core-backend"
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"changes": [
3+
{
4+
"packageName": "@itwin/core-electron",
5+
"comment": "Add support for Electron 42",
6+
"type": "none"
7+
}
8+
],
9+
"packageName": "@itwin/core-electron"
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"changes": [
3+
{
4+
"packageName": "@itwin/linear-referencing-backend",
5+
"comment": "",
6+
"type": "none"
7+
}
8+
],
9+
"packageName": "@itwin/linear-referencing-backend"
10+
}

common/config/azure-pipelines/templates/integration-test-steps.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,23 @@ steps:
3434
node ./common/scripts/install-run-rush webpack:test -v
3535
displayName: "Rush build"
3636
37+
# Electron 42+ no longer downloads the binary during npm install (postinstall removed).
38+
# Ensure the binary is present before configuring the AppArmor profile.
39+
- script: |
40+
ELECTRON_DIR=$(find $PWD/common/temp/node_modules/.pnpm -path "*/electron@*/node_modules/electron" -type d 2>/dev/null | head -n 1)
41+
if [ ! -d "$ELECTRON_DIR" ]; then
42+
echo "##vso[task.logissue type=warning]Unable to find Electron package directory"
43+
elif [ -f "$ELECTRON_DIR/dist/electron" ]; then
44+
echo "Electron binary already present"
45+
elif [ -f "$ELECTRON_DIR/install.js" ]; then
46+
echo "Downloading Electron binary..."
47+
node "$ELECTRON_DIR/install.js"
48+
else
49+
echo "##vso[task.logissue type=warning]Unable to find Electron install script at $ELECTRON_DIR/install.js"
50+
fi
51+
displayName: "Ensure Electron binary is downloaded"
52+
condition: and(succeededOrFailed(), eq(variables['Agent.OS'], 'Linux'))
53+
3754
# Starting Ubuntu 24.04, unprivileged user namespaces are restricted by default via AppArmor.
3855
# Electron's sandbox requires user namespaces, so we create an AppArmor profile that grants the 'userns' permission to the Electron binary.
3956
# See: https://discourse.ubuntu.com/t/ubuntu-24-04-lts-noble-numbat-release-notes/39890#p-99950-unprivileged-user-namespace-restrictions-15

0 commit comments

Comments
 (0)