mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-09-07 13:01:11 +03:00
* feat(web): zero-readback WebCodecs video path Decoded VideoFrames from js/src/webcodecs.js are handed to Flutter via window.onVideoFrame and imported GPU-side with createImageFromTextureSource; any failure unregisters the hook so the JS side falls back to RGBA readback. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(web): load bundled terminal font when Google CDNs are unreachable In air-gapped deployments GoogleFonts.robotoMono() cannot download the terminal font; when index.html signals offline mode, load the copy bundled with the web app under the family name google_fonts registers. Part of the fix for rustdesk/rustdesk-server-pro#996. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * ci: bump windows arm64 to Flutter 3.44.8, add web build patch script apply_flutter_3.44_web_patches.sh prepares a 3.44.x web build on top of the shared source patches: qr_code_scanner's web impl needs dart:ui_web for the removed platformViewRegistry, and flutter/web/fonts is refreshed to the font paths the 3.44 engine requests. The disabled build-rustdesk-web job runs it automatically once FLUTTER_VERSION moves to 3.44.x, and version-guarded 'Patch flutter' steps no longer fail when the guard does not match. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(web): prevent stale WebCodecs frames across sessions Signed-off-by: fufesou <linlong1266@gmail.com> * fix(web): harden WebCodecs reconnect and Flutter 3.44 patches Signed-off-by: fufesou <linlong1266@gmail.com> * fix(ci): harden Flutter 3.44 patch input validation Validate required files before checking patch state, parameterize the theme-range validator, and prevent missing inputs from satisfying NO_MATCHES checks. Signed-off-by: fufesou <linlong1266@gmail.com> * Remove unused code Signed-off-by: fufesou <linlong1266@gmail.com> * fix(web): retry font loading and dispose stale decoded images Signed-off-by: fufesou <linlong1266@gmail.com> * remove unused code Signed-off-by: fufesou <linlong1266@gmail.com> * fix(web): Bad state: RenderBox was not laid out Signed-off-by: fufesou <linlong1266@gmail.com> --------- Signed-off-by: fufesou <linlong1266@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: fufesou <linlong1266@gmail.com>
52 lines
2.3 KiB
Bash
Executable File
52 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Prepares a web build on Flutter 3.44.x. Companion to
|
|
# apply_flutter_3.44_source_patches.sh (which it runs first): the web target
|
|
# additionally needs qr_code_scanner's web implementation patched for the
|
|
# dart:ui platformViewRegistry removal, and flutter/web/fonts refreshed with
|
|
# the font paths the 3.44 engine requests for offline/air-gapped support
|
|
# (rustdesk-server-pro#996; see flutter/web/fonts/sync_fonts.py).
|
|
#
|
|
# Run from the repository root with Flutter 3.44.x on PATH, then build:
|
|
# bash .github/patches/apply_flutter_3.44_web_patches.sh
|
|
# (cd flutter && flutter build web --release) # or ./web/js/flutter_build.py
|
|
#
|
|
# Idempotent. To undo the source changes locally:
|
|
# git checkout -- flutter/lib/common.dart flutter/pubspec.yaml flutter/pubspec.lock
|
|
set -euo pipefail
|
|
|
|
flutter --version | grep -q "Flutter 3\.44\." || {
|
|
echo "Flutter 3.44.x must be on PATH; found:" >&2
|
|
flutter --version | grep "^Flutter" >&2 || true
|
|
exit 1
|
|
}
|
|
|
|
# Shared 3.44 source/pubspec patches own their complete-state validation.
|
|
bash .github/patches/apply_flutter_3.44_source_patches.sh
|
|
|
|
# Populate the pub cache with the 3.44 dependency resolution.
|
|
(cd flutter && flutter pub get)
|
|
|
|
# qr_code_scanner 1.0.1 (unmaintained) reads platformViewRegistry from
|
|
# dart:ui, which Flutter 3.44 removed; point it at dart:ui_web instead. The
|
|
# patched file also compiles on Flutter 3.24 (dart:ui_web exists there), so
|
|
# mutating the shared pub cache is safe for other local builds.
|
|
QR_WEB="${PUB_CACHE:-$HOME/.pub-cache}/hosted/pub.dev/qr_code_scanner-1.0.1/lib/src/web/flutter_qr_web.dart"
|
|
if ! grep -qF "dart:ui_web" "$QR_WEB"; then
|
|
sed -i.bak "s|import 'dart:ui' as ui;|import 'dart:ui' as ui; import 'dart:ui_web' as ui_web;|" "$QR_WEB"
|
|
rm -f "$QR_WEB.bak"
|
|
fi
|
|
if grep -qF "ui.platformViewRegistry" "$QR_WEB"; then
|
|
sed -i.bak "s|ui\.platformViewRegistry|ui_web.platformViewRegistry|g" "$QR_WEB"
|
|
rm -f "$QR_WEB.bak"
|
|
fi
|
|
|
|
# Mirror the fonts this engine version requests into flutter/web/fonts.
|
|
python3 flutter/web/fonts/sync_fonts.py
|
|
|
|
# Fail loudly if any expected state is missing:
|
|
grep -qF "import 'dart:ui' as ui; import 'dart:ui_web' as ui_web;" "$QR_WEB"
|
|
grep -qF "ui_web.platformViewRegistry" "$QR_WEB"
|
|
grep -qF 'google_fonts: ^8.1.0' flutter/pubspec.yaml
|
|
|
|
echo "Flutter 3.44 web patches applied."
|