Skip to content

Commit 630587a

Browse files
authored
Release 0.23.11 (#767)
## πŸš€ Release 0.23.11 This pull request merges the release branch back to the main branch after successful package publication. ### πŸ“‹ Release Information - **Version**: 0.23.11 - **Branch**: release/0.23.11 - **Published to**: [pub.dev](https://pub.dev/packages/webf) ### βœ… Automated Checks Completed - All platform bridges built successfully - Debug symbols collected and stored in Git LFS - Package published to pub.dev ### πŸ“ Merge Checklist - [ ] Review the changes in this release - [ ] Verify package is available on pub.dev - [ ] Confirm all CI checks pass --- *This PR was automatically created by the release workflow.*
2 parents 6d89142 + 30a9656 commit 630587a

File tree

13 files changed

+136
-55
lines changed

13 files changed

+136
-55
lines changed

β€Ž.github/workflows/release.ymlβ€Ž

Lines changed: 43 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -639,7 +639,7 @@ jobs:
639639
640640
prepare-and-publish:
641641
name: Prepare and Publish WebF Package
642-
runs-on: [self-hosted, macos]
642+
runs-on: ubuntu-latest
643643
# Wait for all bridge builds and debug symbol collection
644644
needs: [build-windows, build-linux, build-macos, build-ios, build-android, collect-debug-symbols]
645645

@@ -827,38 +827,41 @@ jobs:
827827
echo "⚠️ Android JNI libraries not found"
828828
fi
829829
830-
- name: Authenticate pub.dev for WebF
831-
run: |
832-
echo "πŸ” Setting up pub.dev authentication..."
833-
834-
# Add the pub.dev token for publishing
835-
echo '${{ secrets.PUB_DEV_TOKEN }}' | dart pub token add https://pub.dev
836-
837-
echo "βœ… pub.dev authentication configured"
838-
839-
- name: Publish to pub.dev
840-
run: |
841-
echo "πŸš€ Publishing WebF to pub.dev..."
842-
843-
cd webf
844-
845-
# Run Flutter pub get to ensure dependencies are resolved
846-
flutter pub get
847-
848-
# Publish to pub.dev (--force to skip confirmation)
849-
dart pub publish --force
850-
851-
# Get version for success message
852-
if [ -n "${{ inputs.version }}" ]; then
853-
VERSION="${{ inputs.version }}"
854-
elif [[ "${{ github.ref_name }}" == release/* ]]; then
855-
VERSION="${{ github.ref_name }}"
856-
VERSION="${VERSION#release/}"
857-
else
858-
VERSION="unknown"
859-
fi
860-
861-
echo "βœ… Successfully published WebF version $VERSION to pub.dev"
830+
- name: Publish webf to pub.dev
831+
uses: k-paxian/dart-package-publisher@master
832+
with:
833+
credentialJson: ${{ secrets.PUB_DEV_TOKEN }}
834+
flutter: true
835+
force: true
836+
skipTests: true
837+
relativePath: webf
838+
839+
- name: Publish webf_cupertino_ui to pub.dev
840+
uses: k-paxian/dart-package-publisher@master
841+
with:
842+
credentialJson: ${{ secrets.PUB_DEV_TOKEN }}
843+
flutter: true
844+
force: true
845+
skipTests: true
846+
relativePath: webf_cupertino_ui
847+
848+
- name: Publish webf_deeplink to pub.dev
849+
uses: k-paxian/dart-package-publisher@master
850+
with:
851+
credentialJson: ${{ secrets.PUB_DEV_TOKEN }}
852+
flutter: true
853+
force: true
854+
skipTests: true
855+
relativePath: webf_modules/deeplink
856+
857+
- name: Publish webf_share to pub.dev
858+
uses: k-paxian/dart-package-publisher@master
859+
with:
860+
credentialJson: ${{ secrets.PUB_DEV_TOKEN }}
861+
flutter: true
862+
force: true
863+
skipTests: true
864+
relativePath: webf_modules/share
862865

863866
- name: Summary
864867
run: |
@@ -871,13 +874,17 @@ jobs:
871874
else
872875
VERSION="unknown"
873876
fi
874-
875-
echo "πŸŽ‰ WebF package published successfully!"
877+
878+
echo "πŸŽ‰ WebF packages published successfully!"
876879
echo "πŸ“‹ Summary:"
877880
echo " - Version: $VERSION"
878881
echo " - Branch: ${{ github.ref_name }}"
879882
echo " - Commit: ${{ github.sha }}"
880-
echo " - Published to: pub.dev (https://pub.dev/packages/webf)"
883+
echo " - Published packages:"
884+
echo " β€’ webf (https://pub.dev/packages/webf)"
885+
echo " β€’ webf_cupertino_ui (https://pub.dev/packages/webf_cupertino_ui)"
886+
echo " β€’ webf_deeplink (https://pub.dev/packages/webf_deeplink)"
887+
echo " β€’ webf_share (https://pub.dev/packages/webf_share)"
881888
echo " - Debug symbols stored in Git LFS"
882889
883890
create-pr-to-main:
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:efe398c7ad8164c179936278ec8580fcfcce73a370f7854c8d887c882312f250
3+
size 58063699
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:10a0e31c172894858de47b7a06c393569676efc600ad72f394c56f7690f47edb
3+
size 79117042
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:2622271ad630b0162453c42bf131d2911f53f985937ebd4bd64c5038d9cd37f7
3+
size 15903003
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:1d837f2453e054b59fe43385f4af32e60c2d05b7d5089bbd0734a9662890f98f
3+
size 53678165
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:17d9db2162b642f61b3d59df481e66a47d22a0ae1360126cf4088d4b3f10dcf3
3+
size 17072208

β€Žscripts/copy_macos_dylibs.jsβ€Ž

Lines changed: 59 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,41 @@ const fs = require('fs');
1414
const path = require('path');
1515
const { execSync } = require('child_process');
1616

17+
function isMachOBinary(filePath) {
18+
try {
19+
const fd = fs.openSync(filePath, 'r');
20+
const buffer = Buffer.alloc(4);
21+
fs.readSync(fd, buffer, 0, 4, 0);
22+
fs.closeSync(fd);
23+
24+
// Mach-O & FAT (universal) magic numbers.
25+
const magics = new Set([
26+
buffer.toString('hex'),
27+
]);
28+
29+
// Mach-O 32-bit / 64-bit (big-endian and little-endian)
30+
if (magics.has('feedface') || magics.has('cefaedfe')) return true;
31+
if (magics.has('feedfacf') || magics.has('cffaedfe')) return true;
32+
33+
// FAT/universal (32-bit and 64-bit, big-endian and little-endian)
34+
if (magics.has('cafebabe') || magics.has('bebafeca')) return true;
35+
if (magics.has('cafebabf') || magics.has('bfbafeca')) return true;
36+
37+
return false;
38+
} catch (error) {
39+
return false;
40+
}
41+
}
42+
43+
function isFileCommandAvailable() {
44+
try {
45+
execSync('file --version', { stdio: 'ignore' });
46+
return true;
47+
} catch (error) {
48+
return false;
49+
}
50+
}
51+
1752
/**
1853
* Get current system architecture
1954
* @returns {string} 'arm64' or 'x86_64'
@@ -23,8 +58,10 @@ function getSystemArchitecture() {
2358
const arch = execSync('uname -m', { encoding: 'utf8' }).trim();
2459
return arch;
2560
} catch (error) {
26-
console.warn('⚠️ Could not determine system architecture, defaulting to arm64');
27-
return 'arm64';
61+
// Fallback for non-POSIX environments (or sandboxed shells).
62+
const arch = process.arch === 'arm64' ? 'arm64' : 'x86_64';
63+
console.warn(`⚠️ Could not determine system architecture via uname, defaulting to ${arch}`);
64+
return arch;
2865
}
2966
}
3067

@@ -34,6 +71,9 @@ function getSystemArchitecture() {
3471
* @returns {boolean} True if universal binary
3572
*/
3673
function isUniversalBinary(filePath) {
74+
if (!isFileCommandAvailable()) {
75+
return false;
76+
}
3777
try {
3878
const output = execSync(`file "${filePath}"`, { encoding: 'utf8' });
3979
return output.includes('universal binary') ||
@@ -92,6 +132,10 @@ function copyDylib(libName, bridgeBuildDir, targetDir) {
92132
if (isUniversalBinary(universalPath)) {
93133
console.log(` βœ… Confirmed as universal binary (arm64 + x86_64)`);
94134
}
135+
if (!isMachOBinary(universalPath)) {
136+
console.error(`❌ ${libName} does not appear to be a Mach-O binary: ${universalPath}`);
137+
return false;
138+
}
95139
return copyFile(universalPath, targetPath);
96140
}
97141

@@ -102,6 +146,10 @@ function copyDylib(libName, bridgeBuildDir, targetDir) {
102146
const archPath = systemArch === 'arm64' ? arm64Path : x86_64Path;
103147
if (fs.existsSync(archPath)) {
104148
console.log(` βœ… Found ${systemArch} binary for ${libName}`);
149+
if (!isMachOBinary(archPath)) {
150+
console.error(`❌ ${libName} does not appear to be a Mach-O binary: ${archPath}`);
151+
return false;
152+
}
105153
return copyFile(archPath, targetPath);
106154
}
107155

@@ -112,6 +160,10 @@ function copyDylib(libName, bridgeBuildDir, targetDir) {
112160
if (fs.existsSync(otherArchPath)) {
113161
console.warn(`⚠️ Only ${otherArch} binary found for ${libName} (current system: ${systemArch})`);
114162
console.warn(` This may cause compatibility issues!`);
163+
if (!isMachOBinary(otherArchPath)) {
164+
console.error(`❌ ${libName} does not appear to be a Mach-O binary: ${otherArchPath}`);
165+
return false;
166+
}
115167
return copyFile(otherArchPath, targetPath);
116168
}
117169

@@ -230,10 +282,11 @@ function copyMacOSDynamicLibraries(webfDir) {
230282

231283
// Main execution
232284
function main() {
233-
// Check if we're on macOS
285+
// This script only copies Mach-O artifacts, so it can run in Linux containers/CI as long as the
286+
// macOS build outputs are present (e.g., when the repo is mounted from a macOS host).
234287
if (process.platform !== 'darwin') {
235-
console.error('❌ This script can only run on macOS');
236-
process.exit(1);
288+
console.warn(`⚠️ Not running on macOS (platform: ${process.platform}). Continuing with copy only.`);
289+
console.warn(` Note: CocoaPods steps (pod install) must be run on macOS.`);
237290
}
238291

239292
// Parse command line arguments
@@ -263,4 +316,4 @@ if (require.main === module) {
263316
}
264317

265318
// Export for use as a module
266-
module.exports = { copyMacOSDynamicLibraries };
319+
module.exports = { copyMacOSDynamicLibraries };

β€Žwebf/CHANGELOG.mdβ€Ž

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,19 @@
1+
## 0.23.11
2+
3+
- Features
4+
- CSS Grid: enable grid layout by default and expand support for track sizing and placement, including
5+
`repeat()`/`minmax()`/`fit-content()`, named lines, template areas, and `grid`/`grid-template`/`place-*`
6+
shorthands.
7+
- DOM/Bridge: complete the `IntersectionObserver` API (including `IntersectionObserverEntry`) and add v2
8+
properties for richer visibility tracking.
9+
- Accessibility: improve semantics for overflow scrolling containers, add ListView a11y coverage, and support
10+
`menubar`/`menuitem` roles.
11+
- Fixed
12+
- Grid: fix auto-placement and sizing edge cases (reverse line ranges, `justify-content: space-*`, auto-fit
13+
track collapse, and placement alignment).
14+
- Platform/CI: fix iOS source builds and stabilize integration tests/snapshots.
15+
- Accessibility/DOM: improve focusability handling and skip non-semantic container tags during traversal.
16+
117
## 0.23.10
218

319
- Features

β€Žwebf/ios/webf.podspecβ€Ž

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ Pod::Spec.new do |s|
2929
'LLVM_LTO' => 'YES', # Enable Link Time Optimization for release builds
3030
'GCC_OPTIMIZATION_LEVEL' => 's', # Enable optimization for size
3131
'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) ' +
32-
'APP_REV=\\"61eb8c97d\\" ' +
33-
'APP_VERSION=\\"0.23.10\\" ' +
32+
'APP_REV=\\"6d8914236\\" ' +
33+
'APP_VERSION=\\"0.23.11\\" ' +
3434
'CONFIG_VERSION=\\"2025-04-26\\" ' +
3535
'WEBF_QUICK_JS_ENGINE=1 ' +
3636
'FLUTTER_BACKEND=1 ' +

β€Žwebf/pubspec.yamlβ€Ž

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
name: webf
22
description: W3C standards-compliant web rendering engine based on Flutter, allowing web applications to run natively on Flutter.
3-
version: 0.23.10
3+
version: 0.23.11
44
homepage: https://openwebf.com
55
license: GPL-3.0-only
6-
publish_to: none
76
environment:
87
sdk: ">=3.0.0 <4.0.0"
98
flutter: ">=3.29.0"

0 commit comments

Comments
Β (0)