提交图

121 次代码提交

作者 SHA1 备注 提交日期
XuqmGroup
7589db7332 docs(rn-sdk): record published App4 integration baseline 2026-07-18 07:35:05 +08:00
XuqmGroup
04fc964a92 test(rn-update): run real Hermes compiler on Windows 2026-07-18 07:08:18 +08:00
XuqmGroup
aacfbf0edd refactor(rn-sdk): unify host runtime and webview contracts 2026-07-18 06:59:57 +08:00
XuqmGroup
144a3bcb2d feat(update): gate plugins on runtime baseline changes 2026-07-17 14:43:05 +08:00
XuqmGroup
6fcd50598a build: resolve Android plugins through Nexus first 2026-07-17 14:31:25 +08:00
XuqmGroup
4cfcbb3aa2 fix(test): normalize CLI paths on Windows 2026-07-17 14:18:46 +08:00
XuqmGroup
e06f3f9877 fix(test): support Windows Metro paths 2026-07-17 14:14:19 +08:00
XuqmGroup
e7b31d7fc6 feat(update): support safe plugin bundle reload 2026-07-17 14:12:02 +08:00
XuqmGroup
c8a6d88ab9 fix(ci): use fresh RN SDK worktree 2026-07-17 14:03:36 +08:00
XuqmGroup
530e4503c4 fix(ci): keep alpha calculation CPS serializable 2026-07-17 13:59:03 +08:00
XuqmGroup
fed3fd4fc4 fix(ci): make RN alpha publication deterministic 2026-07-17 13:57:02 +08:00
XuqmGroup
a902e30e0a feat: rebuild RN sdk runtime and plugin updates 2026-07-17 13:50:30 +08:00
XuqmGroup
ac7e941744 fix(metro): 取消 withBugCollect 自动链式,避免破坏 Metro 0.84 dev 打包
- common/metro: withXuqmConfig 不再自动链式 withBugCollect(保留 .xuqmconfig 单点同步)。
  customSerializer 方式的 sourcemap 上传在 Metro 0.84 下不可靠:覆盖默认 serializer 后
  无法经 package exports 取回默认序列化,dev 打包会报 "Cannot read properties of undefined (reading 'code')"。
- bugcollect/metro: 还原 customSerializer 回退实现;该插件仅建议显式包裹在已有 serializer 之上。
- sourcemap 上传后续改为 react-native bundle 后独立脚本上传。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-25 19:04:55 +08:00
XuqmGroup
d51d3c934d feat(common/metro): .xuqmconfig 单点放置——自动同步到原生 Android/iOS
宿主只需在 RN 侧放置一份 .xuqmconfig;构建/运行时 withXuqmConfig 自动比对并
复制到 android assets/config(供 XuqmMergedProvider 自动初始化)及 iOS 资源目录,
缺失或内容不一致才写入(幂等)。免去 RN/Android/iOS 三处分别放置。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-25 18:45:17 +08:00
XuqmGroup
4d5adf447a fix(bugcollect): HttpInterceptor 用 globalThis 替代 global,修复消费端 TS 找不到 global
BugCollect.startCapture 自动启用 HttpInterceptor 后,该文件进入消费端类型检查图;
部分 RN 工程 tsconfig 未提供 `global` 类型,改用 globalThis(可移植)。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-25 18:26:40 +08:00
XuqmGroup
4d2b834f96 feat(sdk): 下载相册/进度、XWebView内联config、上报限频采样、版本忽略、push桥接原生sdk-push
- xwebview: 下载支持公共Downloads/相册(CameraRoll懒加载)/JS进度/openFile;XWebViewView 新增内联 config prop(同屏多实例不污染全局)
- bugcollect: startCapture 自动启用 HttpInterceptor + 按指纹滑动窗口限频 + setSampleRate 采样(降低服务端存储压力)
- update: ignoreAppVersion/clearIgnoredAppVersion/getIgnoredAppVersion 客户端忽略版本(强制更新除外)
- common/metro: withXuqmConfig 自动链式 withBugCollect(Release 包 sourcemap 自动上传)
- push: 桥接完整原生 sdk-push(Android Kotlin + iOS Swift + JS 薄层),删除旧反射实现;单一 XuqmSDK.setUserInfo 驱动厂商检测/token/绑定

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-25 17:50:29 +08:00
XuqmGroup
1567c673ea feat(bugcollect): 集成符号化服务支持移动端堆栈解析
- 添加 symbolicator 服务配置到 docker-compose.yml
- 配置 bugcollect-service 连接 symbolicator URL
- 设置 symbolicator 端口映射和资源限制
- 添加源码映射文件挂载目录
- 为 RN/Android/iOS/Flutter 堆栈符号化提供支持

docs(xwebview): 更新已知问题文档

- 记录 RN 0.85 Bridgeless 模式下 react-native-blob-util 崩溃问题
- 说明 react-native-blob-util 在 JSI/TurboModule 下初始化失败原因
- 提供宿主 app 使用 XWebViewContent 替代方案
- 添加待修复方案说明
2026-06-22 17:43:00 +08:00
XuqmGroup
988582e9df fix(common): useRequest.fetchAsync 不再重复包装响应拦截器已处理的 RequestError
响应拦截器(如 useApi.ts 中的错误转换)产生的 RequestError 会被
fetchAsync 的 catch 块再次包装为 RequestError('网络请求失败', 'OtherError'),
导致原始的服务器错误消息(如"系统异常")丢失。

现在当 catch 块收到的错误已经是 RequestError 时,直接透传而不重新包装,
保留拦截器中已经提取好的错误消息。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-21 15:35:49 +08:00
XuqmGroup
51e016e185 fix(xwebview): 将 react-native-blob-util 改为懒加载以兼容 RN 0.85 Bridgeless 模式
静态 import 会在模块评估时触发 fs.js:14 调用 ReactNativeBlobUtil.getConstants(),
在 Bridgeless 模式下 TurboModule 未注册时返回 null 导致崩溃。
改为在函数体内 require() 延迟至实际下载时才初始化。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-21 09:23:17 +08:00
XuqmGroup
ff8f34e5a4 fix(common): 修复 useRequest data 字段类型推断 2026-06-20 18:36:09 +08:00
XuqmGroup
1143224194 fix(common): 对齐 @szyx-mobile useRequest 行为并修复 POST body 丢失
- 修复 useRequest POST/PUT/UPLOAD/POSTFORM 请求忽略 fetchAsync data 的问题
- RequestOptions 增加 tag/log 字段,与旧项目兼容
- 导出 ValidationError,供宿主二次封装使用 instanceof 判断
- usePageApi 支持 list 与 records 两种分页字段
- 升级 devDependencies 版本(axios 1.18.0、zod 3.25.76 等)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-20 18:26:45 +08:00
XuqmGroup
1f72b415dc feat: RN Metro 插件实现 Sourcemap 自动上传
- 读取 xuqm.config.js 或环境变量获取 API URL
- Release 构建时自动上传 .map 文件
- 支持自定义 sourcemap 路径
- 异步上传不阻塞构建

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-19 02:58:27 +08:00
XuqmGroup
6a43e5e560 fix: rn-bugcollect package.json 包含 metro 目录
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-19 02:28:25 +08:00
XuqmGroup
0cf264cdf6 feat(core): 添加请求签名功能并扩展更新接口
- 在 SDKConfig 中新增 signingKey 配置项
- 在 ConfigFile 中添加 signingKey 序列化支持
- 实现 API 客户端请求签名拦截器,支持 HMAC-SHA256 签名
- 在 XuqmSDK 中管理 signingKey 的存储和读取
- 扩展 UpdateApi 接口增加 currentVersionName 参数
- 在 UpdateSDK 中集成设备信息和版本号上报功能
- 为 RN SDK 添加签名密钥管理和 HTTP 请求签名注入
- 实现跨平台的 HMAC-SHA256 签名算法支持
2026-06-19 01:27:56 +08:00
XuqmGroup
71eeada147 docs: 配置文件规范更新为 .xuqmconfig 格式(Android/iOS 对齐表)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-18 15:40:19 +08:00
XuqmGroup
a9f320db63 docs: 更新 README + 配置文件规范 + 架构总览(BugCollect/withXuqmConfig)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-18 15:34:48 +08:00
XuqmGroup
4f5739da1f feat(common): Metro 插件自动发现 .xuqmconfig 配置文件
新增 withXuqmConfig(metroConfig) Metro 插件:
- 扫描 src/assets/config/ 下的 *.xuqmconfig 文件
- 通过 resolveRequest 拦截 @xuqm/autoinit-config 模块
- 宿主只需放入下载的 .xuqmconfig 文件,无需重命名

对齐 Android SDK 的 ConfigFileReader 逻辑。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-18 15:01:39 +08:00
XuqmGroup
c7f1f7cb72 fix(ci): echo 中文改为 bat+chcp65001 修复 Jenkins 控制台乱码
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-18 12:25:06 +08:00
XuqmGroup
d6c42ecf56 fix(bugcollect-rn): 修复 BugCollect-API-v1-Review RN SDK 问题
- types.ts: 新增 BreadcrumbItem 类型;DeviceInfo 补全 brand/sdkVersion/screen/locale/timezone/isEmulator;UserInfo 补全 username/email;IssueEvent 新增 breadcrumbs 字段
- BugCollect.ts: 新增 addBreadcrumb API;新增 captureFatal API;_getPlatform() 支持 harmonyos;_getDeviceInfo() 采集完整设备信息;版本号改为常量;sessionId 加长
- LogQueue.ts: 按 level 分级持久化——fatal/error 写 AsyncStorage(进程崩溃后仍可重传),其余仅内存;重试时只重新入队 fatal/error 事件

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 09:26:26 +08:00
XuqmGroup
76099d897e feat(bugcollect): 更新 API 端点并改进数据结构
- 将 Android SDK 的 mapping 上传端点从 /log/v1/sourcemaps/upload 更改为 /bugcollect/v1/sourcemaps/upload
- 将 RN SDK 的 API 端点从 /log/v1/ 统一更改为 /bugcollect/v1/
- 在 LogQueue.ts 的请求体中添加 sentAt 时间戳和 SDK 信息
- 重构 BugCollect.ts 中的事件结构,将 appVersion 重命名为 release,添加 environment 和 sdk 字段
- 将 JS 错误上报的类型从 js_error 改为 issue,并调整错误级别分类
- 为 warn 和 info 方法添加完整的 issue 事件结构
- 在 types.ts 中添加新的数据类型定义,包括 Level、Platform、SdkInfo、ExceptionInfo 等
- 为 IssueEvent 添加详细的异常信息结构,包括类型、值和堆栈跟踪
- 添加完整的错误收集 API v1 规范审阅报告文档
- 在数据库迁移脚本中为日志表添加新字段,包括级别、环境、设备信息、SDK 信息等
2026-06-17 18:02:10 +08:00
XuqmGroup
639e9bcc26 ci: Jenkinsfile rn-log → rn-bugcollect(MOD_LOG → MOD_BUGCOLLECT)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-16 18:55:15 +08:00
XuqmGroup
57579d2871 refactor: @xuqm/rn-log → @xuqm/rn-bugcollect
- packages/log → packages/bugcollect
- XLog → BugCollect
- logApiUrl/logEnabled → bugCollectApiUrl/bugCollectEnabled
- withXuqmLog → withBugCollect
- typecheck 通过

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-16 17:39:18 +08:00
XuqmGroup
a53438a3f0 docs: rn-log → rn-bugcollect 重命名
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-16 17:18:35 +08:00
XuqmGroup
dc96fa8422 chore: 更新 yarn.lock(添加 @react-native-clipboard/clipboard + react-native-safe-area-context devDeps) 2026-06-16 14:58:24 +08:00
XuqmGroup
b6581adc51 fix: 代码质量清理 — XWebView Pressable/Clipboard、configCrypto 消除 any、UpdateSDK AsyncStorage 优化
- XWebViewView/XWebViewScreen: TouchableOpacity → Pressable
- XWebViewView/XWebViewScreen: Clipboard 改用 @react-native-clipboard/clipboard
- configCrypto.ts: 6 处 any 替换为 SubtleCryptoLike 接口
- UpdateSDK: CachedRnBundle 移除 source 字段,AsyncStorage 仅存版本元数据
- xwebview 添加 @react-native-clipboard/clipboard peerDependency
2026-06-16 14:48:47 +08:00
XuqmGroup
611f2ba95d fix: 功能缺陷修复 — ImSDK login await WebSocket、fetchHistory 支持 GROUP、License 改用 apiRequest、LogQueue 重试上限 2026-06-16 13:49:30 +08:00
XuqmGroup
a0c54ae191 fix(update): 移除不存在的 NativeApkInstall 引用 + 下载 bundle 后校验 MD5 2026-06-16 13:37:45 +08:00
XuqmGroup
2a40d6200b fix: @xuqm/rn-common 从 dependencies 移到 peerDependencies,避免宿主项目嵌套安装旧版 2026-06-16 13:27:23 +08:00
XuqmGroup
8f0a940830 feat: xwebview handleDownloadRequest + README 更新
- 新增 handleDownloadRequest() 统一下载处理函数
- 导出 download 相关工具函数
- 更新 rn-update 和 rn-xwebview README

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-16 13:25:46 +08:00
XuqmGroup
0431b3d694 fix: 所有包添加 files=[src],排除 tsconfig.json 等开发文件不发布到 npm 2026-06-16 13:22:54 +08:00
XuqmGroup
f727478e53 fix(jenkins): SNAPSHOT 模式自动递增 alpha 版本号(查询 registry 最新 alpha 后 +1) 2026-06-16 13:18:43 +08:00
XuqmGroup
e5130c4627 chore: 版本号恢复为 base(Jenkins 发版时自动处理 SNAPSHOT/Release 后缀) 2026-06-16 13:14:46 +08:00
XuqmGroup
4e80b0bf4e fix: rn-log ErrorCapture 类型修复 + 依赖版本对齐
- ErrorCapture.ts: global → globalThis,移除 declare global 冲突
- index.ts: 移除不存在的 UpdateDownloadProgress 导出
- 各 package.json 版本号对齐

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-16 13:10:16 +08:00
XuqmGroup
b2058840bc feat(rn-log): 添加 metro plugin 存根 — withXuqmLog
打 Release 包时自动包裹 Metro config,后续补全 SourceMap 上传逻辑。
2026-06-16 12:20:04 +08:00
XuqmGroup
4c3019edab docs: 添加 CLAUDE.md + 各 package README + 架构总览 + 模块待开发说明
Agent 8 文档生成:
- CLAUDE.md 项目上下文
- 各 package README (common/update/push/im/xwebview/license/log)
- docs/架构总览.md
- docs/模块待开发说明.md
2026-06-16 12:14:52 +08:00
XuqmGroup
16750b0421 feat: rn-update 进度回调 + rn-xwebview JSBridge + rn-log v0.1.0 新建
Agent 3 — rn-update:
- downloadPlugin/downloadApk 新增 onProgress 进度回调
- checkAppUpdate/checkPluginUpdate 版本缓存(30分钟 TTL)
- 新增 UpdateDownloadProgress 类型导出

Agent 3 — rn-xwebview:
- XWebViewBridge 补全标准 JSBridge handler
- getDeviceInfo/getToken/getUserInfo/openNativePage/closeWebView/showToast

Agent 4 — rn-log v0.1.0:
- XLog 主入口:event/captureError/warn/info/startCapture
- LogQueue:AsyncStorage 本地队列 + 批量上报
- ErrorCapture:JS global error + unhandledRejection
- FunnelTracker:漏斗分析
- fingerprint:SHA-256 指纹去重
- HttpInterceptor:rn-common HTTP 错误自动上报
- NativeLogReporter:TurboModule spec
2026-06-16 12:10:28 +08:00
XuqmGroup
97d4d9498a feat(rn-common): v0.4.0 — api/ui 子模块 + config 扩展 + autoInit 修复
- 新增 api/ 子模块:useRequest、useApi、usePageApi(替换 @szyx-mobile)
- 新增 ui/ 子模块:showToast、showAlert、showConfirm、configureToast
- 新增 globalErrorHandler:setGlobalApiErrorHandler
- config.ts 新增 logApiUrl、logEnabled 字段
- device.ts 新增 manufacturer、vendorVersion 可选字段
- autoInit.ts 修复静默降级,__DEV__ 模式下 re-throw
- index.ts 补全 api/ui 导出
- package.json 版本升至 0.4.0,新增 axios/react/zod 依赖
2026-06-16 12:01:44 +08:00
XuqmGroup
9870a0a368 ci: 修复 Jenkinsfile — Type Check 和 Publish 阶段补充 log 包路径
SNAPSHOT 和正式发布时 MOD_LOG 勾选后 packages/log 不会被跳过

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-16 11:27:31 +08:00
XuqmGroup
10454b4152 ci: Jenkinsfile支持SNAPSHOT/alpha发布模式 + 新增rn-log模块支持
- 新增SNAPSHOT参数:勾选=发布alpha tag(不commit版本);不勾选=正式Release
- 模块列表新增MOD_LOG(@xuqm/rn-log)
- packages/log目录不存在时跳过typecheck和publish(Agent 4新建后自动生效)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-16 11:13:27 +08:00
XuqmGroup
1057d785e1 docs: 添加CLAUDE.md项目上下文
涵盖:包结构、核心API、技术约束、代码冻结模块说明、任务文档索引

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-16 11:05:53 +08:00