Max
6e08349556
fix: ErrorOverlay 不可见 — Stack 在 Visibility(visible:false) 时坍缩为 0×0
...
当 _hasMainFrameError=true 时,Visibility(visible:false) 将 WebView
替换为 SizedBox.shrink()(0×0),这是 Stack 唯一的非 positioned 子组件。
Scaffold.body 提供松约束(0→max),导致 Stack 尺寸为 0×0,
Positioned.fill 的 ErrorOverlay 也变为 0×0,用户只能看到 Scaffold 的
深色背景而看不到错误页面的内容。
修复方式:用 SizedBox.expand() 包裹 Stack,强制紧约束使其始终填满屏幕。
附带变更:
- 添加 _debugLog() 封装(kDebugMode 保护)
- 在 7 个关键状态转换点添加调试日志
2026-03-24 15:54:38 +08:00
Max
318c829ced
refactor: simplify icon assets and improve keystore resolution
...
- Remove separate icon_foreground.png, reuse icon.png for adaptive icon foreground
- Enhance resolveKeystoreFile() with root-relative → module-relative fallback
- Update documentation to reflect icon consolidation
- Update test bootstrap IP to 192.168.2.57
2026-03-23 17:53:53 +08:00
TangJo
0a17e1c4f7
feat:1.generate_app 兼容windows;2.支持windows 打包apk。
2026-03-23 16:34:02 +08:00
Max
435d99772c
feat: 拆分启动与升级配置并补齐核心测试
2026-03-20 19:47:50 +08:00
Max
0d259334ee
feat: 重构启动配置与升级配置分离,修复 WebView 错误浮层竞态条件
...
- 将 ShellRemoteConfig 拆分为 ShellBootstrapConfig(启动配置)和 ShellUpgradeConfig(升级配置)
- ShellBootstrapConfig 支持 initialUrl 和 preferredOrientations
- ShellUpgradeService 改为独立获取升级配置,不再依赖启动配置
- ShellEnvironment 新增 bootstrapConfigAsset / bootstrapConfigUrl / upgradeConfigUrl / copyWith
- 修复 WebView 错误浮层被 onPageFinished 重置的竞态条件
- 修复 Offstage 导致 Stack 坍缩为零尺寸的白屏问题,改用 Visibility
- 增强 recovery.dart 对原始 net::ERR_* 字符串的友好翻译
- 重新生成 3 个品牌应用(aixue / test / yunxiao)的图标和启动页资源
- aixue 应用改用 bootstrapConfigAsset 加载本地启动配置
- 移除 launch.json 中已废弃的 quanxue 配置
2026-03-20 17:23:03 +08:00
Max
283c3ed601
test: 修复测试覆盖度 — 修复 LaunchOverlay 断言 + 扩展 Bridge 检测 + 补充 Phase 2 单测
...
Phase 3 测试覆盖修复:
- 修复 LaunchOverlay 测试:CircularProgressIndicator + appName 替代旧 UI
- Bridge 脚本检测从 8 → 12 个 Action
- test_hooks.dart: 新增 4 个 Phase 2 测试钩子
- 新增 10 个 Phase 2 单元测试:
· getDeviceInfo smoke test
· getNetworkStatus (WiFi/cellular/none) 3 个
· setStatusBar (light/dark+color/empty) 3 个
· showToast widget test + 空消息守卫
- 全部 84 条测试通过 ✅
2026-03-20 10:48:23 +08:00
Max
d4f7899351
feat(bridge): 新增 Phase 2 协议函数 — getDeviceInfo / getNetworkStatus / showToast / setStatusBar
...
- 新增 device_info_plus 和 connectivity_plus 依赖
- bridge_protocol.dart: AppShell API 从 8 个扩展到 12 个
- bridge_actions.dart: 实现 4 个 Dart 处理器 + 原生风格 Toast 动效组件
- shell_page.dart: 新增 4 个 action 分支
- test_bridge.html: 新增 4 个测试区块,Bridge 检测覆盖全部 12 个方法
2026-03-20 10:30:29 +08:00
Max
dad37faecb
feat(launch_overlay): 使用品牌 Logo 和 AppName 替换通用图标
...
- ShellEnvironment 新增 splashImage 字段支持品牌启动图标
- LaunchOverlay 使用 splash.png 替换 Icons.language_rounded
- 标题改为品牌名称(appName),移除副标题
- 加载指示器改为 CircularProgressIndicator 不定态转圈
- 使用 accentColor 主题色
- generate_app.dart 自动注册 assets/branding/ 并生成 splashImage 配置
- quanxue pubspec.yaml 注册 assets/branding/ 目录
2026-03-20 10:14:43 +08:00
Max
8ac3a222c1
feat: 则跟你讲唉设备状态
2026-03-20 09:58:52 +08:00
Max
fb84e6f4fe
feat: init 改为 测试web
2026-03-20 09:56:02 +08:00
Max
8db977c3d9
fix: 注入 Android 13 预测手势并在底层强制禁用 Impeller 引擎保障 WebView 渲染稳定
2026-03-20 04:43:14 +08:00
Max
77af598f3e
fix: 补充 web_shell_core 缺失的 Android 权限及清单属性
...
利用 Android Manifest Merger 的特性,将所有核心权限声明在 web_shell_core 的库清单中。
- 补齐了 INTERNET, CAMERA, STORAGE, BLUETOOTH 等全套权限,确保 H5 与 permission_handler 正常工作
- 添加了 Android 11+ 所需的 url_launcher queries 白名单
- 巧妙注入 android:usesCleartextTraffic="true",优雅解决了 HTTP 明文流量被拦截的问题
生成的品牌 App 现在可以零配置开箱即用
2026-03-20 04:38:37 +08:00
Max
7735894c5c
feat: 修复 generate_app.dart 品牌资源生成流程
...
- 重写 generate_app.dart:添加品牌名校验、--android-language java、
自动安装 flutter_launcher_icons/flutter_native_splash dev 依赖、
所有 Process.run 结果检查 exitCode
- 更新 quanxue.yaml:添加 branding 配置段
- 新增 flavors/quanxue/ 品牌资源目录(icon、foreground、splash)
- 重新生成 apps/quanxue(含品牌图标和启动页)
- 更新 README.md:品牌配置示例、资源规格说明、生成步骤
- 更新 web_shell_core/README.md:测试数量 54 → 67
2026-03-20 04:19:33 +08:00
Max
a3b970d2b8
test: 测试覆盖率 54→75 用例
...
新增 7 个测试组:
- ShellEnvironment 配置验证(字段/默认URL/https地址)
- Bridge JS 协议格式(版本号/通道守卫/8 Action/成功响应/失败响应)
- AndroidCompatibilityPlan describe 格式(fallback/现代设备/F136A/空字段)
- 相机边界场景(无 controller/不弹窗/返回 null)
- 多文件序列化(多 XFile/空列表/URI 转换)
- 看门狗常量验证(旧相机脚本/版本解析)
2026-03-19 20:05:43 +08:00
Max
115713d8f4
docs: 完善全部项目文档
...
- 重写根 README.md(项目结构 + 快速开始 + 品牌配置 + 调试说明 + 技术栈)
- 重写 web_shell_core/README.md(功能表 + 使用方式 + 代码结构 + 测试 + 原生层)
- 重写 apps/quanxue/README.md(品牌应用说明)
- 更新 packages/web_android_shell/README.md(迁移通知)
- 填充 web_shell_core/CHANGELOG.md(0.0.1 初始发布内容)
- 新增 doc/architecture.md(分层架构 + 启动流程 + Bridge 协议 + 兼容策略)
- 修正 pubspec.yaml 中的占位 description
2026-03-19 20:00:04 +08:00
Max
97be25b332
chore: 中文化日志注释 + 测试覆盖率 25→54 + iOS 清理 + 代码优化
...
- 全面中文化 debugPrint 日志(bridge_protocol, media_service, navigation_service, shell_page)
- Java 异常处理注释中文化(CoreShellActivity)
- 新增 29 个测试用例覆盖边界场景(URL/序列化/兼容性/错误映射/Accept类型/boolValue/MIME)
- 提取 _buildAndroidWidgetParams 方法,优化 summary getter 可读性
- 删除 iOS 相关文件(仅支持 Android 平板)
- 测试中使用 cascade notation 改进风格
2026-03-19 19:54:29 +08:00
Max
bae37a4bb5
Refactor: split core_app.dart (2100 lines) into 15 modular files across 5 directories
2026-03-19 17:24:57 +08:00
Max
a4a714f037
Refactor: migrate to Monorepo N-brand architecture with automated scaffolding
2026-03-19 16:58:03 +08:00