XuqmGroup
2c8814c5e6
debug(ci): add debug logging for version bump, use if/else instead of switch
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 02:01:26 +08:00
XuqmGroup
883a623505
fix(ci): explicit ASCII encoding for version read, git checkout main
...
- Force ASCII output encoding in PowerShell to avoid hidden chars
- Add git checkout main before commit to avoid detached HEAD
- Simplify version reading command
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 02:01:14 +08:00
XuqmGroup
24b7abb361
fix(ci): use Groovy readProperties for version, add git pull before push
...
- Replace PowerShell-based version reading with Groovy's readProperties
and readFile/writeFile to avoid encoding issues causing "1.0.3→1.0.3"
- Add git pull --rebase before push to handle non-fast-forward rejections
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 01:57:14 +08:00
XuqmGroup
c60bc15a93
fix(ci): fix version bump and git push
...
- Strip \r\n from PowerShell output to fix version parsing
(was causing "1.0.3 → 1.0.3" instead of "1.0.3 → 1.0.4")
- Remove gitlab-credentials dependency, use git remote URL
which already has the access token embedded
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 01:54:28 +08:00
XuqmGroup
cff30338b2
chore: sync PUBLISH_VERSION to 1.0.3 (matches Nexus)
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 01:51:41 +08:00
XuqmGroup
086900cd26
fix(ci): commit version bump back to git after publish
...
The Jenkinsfile bumped PUBLISH_VERSION during the run but never
committed the change, causing every run to start from the same
base version. Now commits gradle.properties back to main after
successful Nexus publish.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 01:51:00 +08:00
XuqmGroup
4fcaba3338
ci: remove unit tests, simplify publish stages
...
Remove RUN_TESTS parameter and Unit Tests stage.
Publish SPM and CocoaPods are now the only publish paths.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 01:42:32 +08:00
XuqmGroup
c103178d77
fix(ci): 模块复选框默认不勾选,需手动选择
2026-05-23 01:36:40 +08:00
XuqmGroup
0dd1cb297c
refactor(ci): 移除自定义版本号功能,仅保留自动升级
2026-05-23 01:34:53 +08:00
XuqmGroup
2247c1146e
fix(ci): 修复凭据ID、Windows兼容性和post块上下文
2026-05-23 01:30:53 +08:00
XuqmGroup
141f5e3e30
feat(ci): 模块选择改为复选框,每个模块独立勾选
2026-05-23 01:28:41 +08:00
XuqmGroup
0bce3d4b0b
fix(ci): 修复 choice 参数语法,使用 choices 数组
2026-05-23 01:25:10 +08:00
XuqmGroup
998e5384ff
chore(ci): 更新 Jenkins 配置以支持多模块版本管理
...
- 为 Android、Flutter、iOS 和 RN SDK 的 Jenkinsfile 添加模块化版本控制
- 引入版本升级策略选择(major/minor/patch)和自定义版本号功能
- 实现多模块独立版本管理和选择性构建发布
- 更新 iOS SDK Package.swift 以支持独立模块化库
- 修改 iOS SDK podspec 文件以适应新的标签命名约定
- 优化 Jenkins 构建流程以支持按需选择特定模块进行构建和发布
- 修复 iOS 测试中的可选类型转换问题以提高代码健壮性
2026-05-23 01:20:57 +08:00
XuqmGroup
eb27e8f112
feat(sdk-license): client-side package name validation
...
Package name matching is now done entirely in the SDK before any network call:
- License file flow (tryAutoInitialize): compare licenseFile.packageName with
context.packageName; refuse initialization if mismatch
- appKey-only flow (checkLicense): fetch GET /api/license/app-info and compare
configured package names locally before register/verify
- LicenseConfig: add fromLicenseFile flag to distinguish the two flows
- LicenseModels: add AppInfoResponse with matchesPackageName helper
- LicenseApiService: add getAppInfo() endpoint
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 00:30:00 +08:00
XuqmGroup
63da94c670
sdk: auto-init from license file, cross-module init waiting
...
- XuqmSDK: autoInitialize() validates license package name; afterInit() callback
- LicenseSDK: await XuqmSDK init via reflection with timeout before operations
- UpdateSDK: await XuqmSDK init before checkAppUpdate
- LicenseFileReader: return Triple(appKey, serverUrl, packageName)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 17:56:42 +08:00
XuqmGroup
7b18d279bf
build: 各 SDK 模块独立版本,publish.gradle 改用 project.version
...
每个模块通过 SDK_<NAME>_VERSION 属性指定自己的版本,
未设置时回退到全局 PUBLISH_VERSION,保持向后兼容。
发布单个模块示例:
./gradlew :sdk-license:publish -PSDK_LICENSE_VERSION=1.0.3 -PPUBLISH_VERSION=1.0.2
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 16:48:10 +08:00
XuqmGroup
9fd358deef
fix(sdk-license): HTTP 错误不回退缓存,防止已吊销设备认证通过
...
verify 返回 false 后 SDK 会尝试 register,服务端对已吊销设备返回 403。
原 catch 块将 HttpException 与网络错误同等处理,导致 cachedStatus=="ok"
时依然返回 Success。修复:HttpException(4xx/5xx)直接写入 DENIED,
只有真正的网络错误(IOException/超时)才允许离线缓存回退。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 16:41:47 +08:00
XuqmGroup
63797ea1cb
feat(sdk-license): LicenseInitializerProvider 自动完成全量 SDK 初始化
...
ContentProvider 在 Application.onCreate() 之前运行,读取
assets/xuqm/license.xuqm 后直接调用 XuqmSDK.initialize()。
app 端只需放入 license 文件,无需任何初始化代码。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 15:31:52 +08:00
XuqmGroup
84eeecb4cc
feat(sdk): 新增 autoInitialize(),放入 license 文件即可完成全量 SDK 初始化
...
- LicenseFile 新增 serverUrl 字段(私有化部署时由后端写入)
- LicenseSDK 新增 readLicenseFileData() 供 sdk-core 反射调用
- XuqmSDK.autoInitialize(context) 从 assets/xuqm/license.xuqm 读取
appKey 和 serverUrl,一行完成公/私有化 SDK 初始化
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 15:25:22 +08:00
XuqmGroup
02407dfe16
chore: bump PUBLISH_VERSION to 1.0.1
...
Start new versioning scheme at 1.0.1 for all SDK modules.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 12:55:05 +08:00
XuqmGroup
d7fe714e69
feat(sdk-core): XuqmSDK.initialize() 新增 serverUrl 参数支持私有化部署
...
传入 serverUrl 后 SDK 自动完成:
- 配置所有服务端点(controlBaseUrl/fileBaseUrl/imApiBaseUrl/imWsUrl/pushBaseUrl/updateBaseUrl)
- 通过反射调用 LicenseSDK.initialize() 注入私有化 appKey 和 baseUrl
- wss/ws scheme 自动根据 https/http 推导
App 侧只需:
XuqmSDK.initialize(context, appKey, serverUrl = "https://your-server.com ", logLevel = WARN)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 12:45:15 +08:00
XuqmGroup
5481ffa57a
docs(deploy): 移除 Jenkins 配置和 Android Demo 计划文档
...
- 删除 jenkins-setup.md 完整的 Jenkins 服务配置指南
- 更新 README.md 部署文档标题为公有化部署文档
- 添加私有化部署说明章节和相关设计文档链接
- 从 REST API 设计文档中移除 demo-service 相关描述
- 更新推送架构图中业务服务端描述为客户端服务器
- 删除 android-demo-plan.md Android Demo 开发计划文档
- 删除 multi-platform-im-roadmap.md 多平台 IM 路线图文档
- 删除 java-im-server-sdk-plan.md Java IM 服务端 SDK 计划文档
2026-05-18 17:57:04 +08:00
XuqmGroup
dc0cd7b2b1
feat(webview): 添加外部链接处理功能
...
- 引入 Context 和 Intent 导入以支持外部链接打开
- 添加 Locale 导入用于 URL 方案小写转换
- 实现 shouldLoadInWebView 函数检查 URL 方案是否允许在 WebView 中加载
- 实现 openExternalScheme 函数用于启动外部应用处理非 HTTP 链接
- 在 shouldOverrideUrlLoading 中集成新的 URL 处理逻辑
- 添加对 http、https、about、data、blob、javascript 方案的支持判断
2026-05-18 13:55:02 +08:00
XuqmGroup
aa20a790a1
一大波改动
2026-05-16 12:48:17 +08:00
XuqmGroup
e81bf89697
Use appKey in license SDK requests
2026-05-15 21:42:27 +08:00
XuqmGroup
2577d6e3e2
Add license check user info
2026-05-15 21:29:58 +08:00
XuqmGroup
8cf7ebb317
Use auth domain for license SDK
2026-05-15 21:09:32 +08:00
XuqmGroup
cbc8ed56cd
Add Android license SDK
2026-05-15 21:00:24 +08:00
XuqmGroup
0fdfc048e7
refactor(webview): 重构WebView组件实现
...
- 将rememberSaveable导入路径修正到saveable包下
- 移除未使用的Log导入并添加ViewGroup导入
- 添加FrameLayout用于WebView容器包装
- 使用FrameLayout作为WebView的父容器以改善布局控制
- 更新AndroidView的factory和update回调中的WebView引用方式
- 通过容器视图统一管理WebView生命周期和布局参数
- 更新发布版本号从0.4.9到0.4.10
2026-05-11 18:58:51 +08:00
XuqmGroup
9e9b41fedb
feat(webview): 添加独立的WebView活动支持
...
- 引入XWebViewActivity以提供完整的WebView界面
- 在AndroidManifest.xml中注册新的WebView活动
- 更新桥接功能以支持上下文启动活动
- 将内部函数和类可见性调整为internal以便组件间访问
- 增加发布版本号从0.4.3到0.4.9
2026-05-11 18:12:59 +08:00
XuqmGroup
4fe7678e07
docs(android-sdk): 添加 Android SDK 完整文档与模块配置
...
- 新增 Android SDK 主文档,包含模块结构、集成方式、快速开始指南
- 添加 sdk-core、sdk-im、sdk-push、sdk-update、sdk-webview 各模块详细说明
- 配置各模块的 build.gradle.kts 文件,设置依赖和发布选项
- 更新 gradle.properties 版本配置和编译参数
- 重构 XWebViewView 组件,增加相机权限、文件选择、下载拦截功能
- 添加 XWebViewTypes.kt 定义配置类和控制器接口
- 集成 Flutter WebView 桥接代码,实现跨平台功能对齐
2026-05-11 15:21:54 +08:00
Jenkins CI
3937c29552
ci(jenkins): adapt Jenkinsfile for Windows Jenkins node
2026-05-08 18:47:02 +08:00
XuqmGroup
499f557bf7
feat(im): 添加平台事件通知功能支持应用审核状态实时更新
...
- 新增 ImPlatformEventController 提供令牌获取接口
- 新增 InternalImPlatformEventController 处理内部通知请求
- 实现 ImPlatformEventService 核心服务逻辑包括令牌签发和消息推送
- 添加 StoreReviewImNotifier 在更新服务中触发审核状态变更通知
- 在前端平台中集成实时审核状态更新功能
- 配置各项目环境版本管理文件 (.java-version, .nvmrc)
- 更新 Docker 忽略文件和 Maven 配置以优化构建流程
2026-05-08 18:32:46 +08:00
XuqmGroup
94cc3bd097
docs(deploy): 添加部署文档和安全设计规范
...
- 新增 XuqmGroup 部署文档,包含部署方案、架构建议和部署步骤
- 添加安全设计规范,涵盖密码安全、AppSecret验证和服务端API认证
- 补充平台REST API规范,定义Server-to-Server调用接口和错误码
- 创建Java IM服务端SDK计划文档,规划Maven包发布和接口实现
2026-05-08 18:31:59 +08:00
XuqmGroup
e0594d9b8f
feat(update): 添加应用更新检查功能支持用户ID参数
...
- 在UpdateApi接口中新增可选的userId查询参数
- 新增UpdateSDK对象用于统一管理应用更新逻辑
- 实现应用版本检查、下载安装和APK文件处理功能
- 添加下载URL规范化处理逻辑
- 在Flutter SDK中新增update模块实现跨平台更新功能
- 在iOS SDK中新增UpdateSDK类提供应用更新检查接口
- 支持Android和iOS平台的应用商店跳转功能
- 添加React Native SDK的更新检查和插件注册功能
- 实现RN Bundle的检查、下载和缓存机制
2026-05-08 12:00:32 +08:00
XuqmGroup
3b84d8e4f1
fix: respect status bar in xwebview screen
2026-05-08 10:38:58 +08:00
XuqmGroup
43a11b1f7d
fix: repair im api query annotations
2026-05-08 09:55:11 +08:00
XuqmGroup
79ca308446
feat: add independent common http client
2026-05-08 09:27:38 +08:00
XuqmGroup
74d9566554
chore: sync local changes
2026-05-07 19:39:38 +08:00
XuqmGroup
84221ff6b2
feat(push): 添加推送SDK和消息服务实现
...
- 实现了 Android 推送 SDK,支持华为、小米、Oppo、Vivo、荣耀、FCM 等厂商推送
- 添加了推送配置管理和设备注册功能
- 实现了推送令牌管理和用户绑定功能
- 添加了消息发送、撤回、编辑等核心消息服务功能
- 实现了单聊和群聊消息历史记录管理
- 添加了消息读取回执和群组消息状态同步
- 实现了消息过滤、黑名单和权限控制
- 添加了离线消息推送和消息预览功能
- 实现了消息 Webhook 回调机制
2026-05-05 22:16:11 +08:00
XuqmGroup
9114672518
feat(push): 添加推送服务功能支持
...
- 实现了 ConversationViewModel 来管理对话列表的刷新和状态
- 集成了 FCM 推送服务支持并实现了自动令牌获取机制
- 构建了完整的 PushSDK 推送系统,支持华为、小米、OPPO、VIVO、荣耀等厂商推送
- 添加了推送配置管理和设备注册/注销功能
- 实现了跨平台推送令牌管理和服务绑定逻辑
- 扩展了服务器端功能服务管理器以支持推送服务激活请求流程
2026-05-05 22:02:46 +08:00
XuqmGroup
e87b1b0af2
refactor(push): 重构小米推送集成实现
...
- 移除轮询注册ID的逻辑,改用系统回调机制获取推送令牌
- 将广播接收器替换为小米官方PushMessageReceiver实现
- 添加完整的推送消息处理方法(注册结果、透传消息、通知点击等)
- 删除硬编码的应用ID和密钥配置
- 移除过时的小米推送相关类引用和方法调用
- 更新应用配置以匹配生产环境参数
2026-05-05 21:40:50 +08:00
XuqmGroup
ea693d5c66
feat(push): 添加多厂商推送集成支持
...
- 实现了华为 HMS 推送服务集成
- 实现了小米推送服务集成
- 实现了 OPPO 推送服务集成
- 实现了 vivo 推送服务集成
- 实现了荣耀推送服务集成
- 实现了 FCM 推送服务集成
- 添加了统一的厂商推送接口和检测机制
- 添加了推送配置 API 和存储管理
- 添加了推送令牌管理和设备注册功能
- 添加了模拟器环境的推送测试用例
2026-05-05 17:54:59 +08:00
XuqmGroup
19e7b27d6e
docs(test): 更新测试报告和文档
...
- 更新发布版本从 0.1.0-SNAPSHOT 到 0.4.0
- 更新 README.md 中的依赖版本引用
- 完善 TEST_REPORT.md 包括最新测试结果和新增测试用例
- 添加详细的 TEST_PLAN.md 文档
- 更新 sample-app 的测试配置和依赖
- 为各个 SDK 模块添加 ProGuard 规则文件
- 修复 ApiClient 中的 Gson 类型适配器问题
- 改进测试架构,解决会话删除和跨设备测试问题
2026-05-05 16:06:32 +08:00
XuqmGroup
66f2f8a47b
feat(login): 添加调试模式下的测试登录功能
...
- 在登录界面添加了测试用户登录按钮
- 仅在DEBUG模式下显示测试登录选项
- 集成测试用户1和测试用户2的快速登录功能
- 移动IM SDK中的事件监听器定义位置以优化代码结构
2026-05-03 22:28:34 +08:00
XuqmGroup
d0b263411d
feat(im): 添加即时消息SDK核心功能实现
...
- 实现了聊天消息发送功能,支持文本、图片、视频、音频、文件等多种消息类型
- 集成了文件上传下载功能,支持多媒体文件的传输和管理
- 添加了群组管理功能,包括创建群组、成员管理、权限控制等操作
- 实现了好友系统,支持好友添加、删除、分组等功能
- 集成了黑名单管理,提供用户屏蔽和解除屏蔽功能
- 添加了会话管理功能,支持对话列表、未读消息统计等
- 实现了历史消息查询和搜索功能
- 添加了实时连接状态管理和自动重连机制
2026-05-03 00:11:06 +08:00
XuqmGroup
d9c9e4f858
feat(android-sdk): 添加完整的IM客户端SDK实现
...
- 实现了Android SDK的完整IM功能接口,包括消息、群组、好友、会话等核心功能
- 添加了消息收发、历史记录、撤回编辑等完整的消息操作能力
- 实现了群组管理功能,包括创建、成员管理、权限设置等操作
- 添加了好友关系链管理,支持添加、删除、分组等操作
- 实现了会话管理功能,包括置顶、免打扰、已读状态等
- 添加了黑名单、资料管理、搜索等辅助功能
- 补齐了批量操作接口,提升客户端操作效率
- 实现了WebSocket连接管理和事件监听机制
- 添加了离线消息同步和状态管理功能
2026-05-02 22:57:55 +08:00
XuqmGroup
cfd0382ba2
docs(project): 更新需求与开发进度对比报告并完善Android SDK接口定义
...
- 添加了完整的XuqmGroup平台需求与开发进度对比报告
- 实现了Android SDK的ImApi接口定义,涵盖群组、好友、黑名单等完整功能
- 定义了IM消息、会话、群组、用户资料等核心数据模型
- 实现了Android SDK的ImSDK核心功能类,包括连接管理和消息处理
2026-05-02 12:30:31 +08:00
XuqmGroup
20fc57ac97
docs: 添加 SDK API 重设计、安全设计规范和测试进度跟踪文档
...
- 新增 SDK API 重设计规范文档,统一各端 SDK 初始化、登录、消息接口
- 新增安全设计规范文档,涵盖密码安全、AppSecret 验证、令牌存储等安全要点
- 新增 Bug 跟踪记录文档,记录已修复问题和开放问题
- 新增测试进度跟踪文档,记录各模块测试覆盖情况和验证结果
2026-05-02 11:45:43 +08:00
XuqmGroup
72a03a65d6
docs(deploy): 添加部署文档并更新SDK API设计规范
...
- 新增完整的XuqmGroup部署文档,包含服务器配置、Docker Compose部署策略
- 更新SDK API重设计规范至V2.0,统一各端SDK初始化和登录接口
- 添加安全设计规范文档,涵盖密码安全、AppSecret验证等内容
- 新增离线推送架构设计文档,定义厂商推送集成方案
- 重构SDK登录流程,统一使用userId + userSig鉴权模式
- 移除dbName等外部配置参数,实现零感知平台地址配置
- 完善部署架构图和配置示例文件
2026-05-02 11:29:49 +08:00