diff --git a/README.md b/README.md index b7bd1e5..ae0c78c 100644 --- a/README.md +++ b/README.md @@ -90,12 +90,14 @@ Android APK: - 已生成 Android debug APK:`android/app/build/outputs/apk/debug/app-debug.apk` - 已生成 Android signed release APK:`android/app/build/outputs/apk/release/app-release.apk` - `npm run apk:release` 还会额外产出带版本号的文件:`android/app/build/outputs/apk/release/boss-android-v{versionName}-release.apk` -- 当前最新 release 构建版本:`2.3.0`(`versionCode=11`) +- 当前最新 release 构建版本:`2.4.0`(`versionCode=12`) - 当前 APK 已切到原生 Android 客户端:`MainActivity + BossApiClient + 原生 XML 布局` - 当前原生活动页已经覆盖:会话首页、项目详情、项目目标、版本记录、会话信息、群资料、发起群聊、消息转发、线程详情、设备详情、添加设备、账号与安全、设置、AI 账号、技能、运维中心、关于 - 当前原生一级体验已回退到微信式交互:`会话 / 设备 / 我的` 固定底部 tab,会话首页是简单聊天列表,`主 Agent / 审计对话` 以普通置顶会话样式排在最前;项目详情页是聊天优先,只保留 `项目目标 / 版本记录` 两个轻入口 - 当前聊天列表已切到“线程 = 会话窗口”的结构:主标题显示线程名,副标题显示所属文件夹名,右下角显示后台活跃数量动态图标;同一文件夹下多个线程会显示成多个独立聊天窗口 - 当前会话信息页已经支持按微信最新逻辑改线程名;群聊会作为独立新会话创建,默认自动命名,创建后可在群资料页改名 +- 当前消息转发已经切到微信式链路:长按消息可直接 `转发 / 多选 / 复制 / 删除`,多选后底部只保留 `转发`,统一进入原生会话选择页 +- 当前单条消息转发会在目标会话里显示为普通转发消息;多条消息会合并成一张“聊天记录”卡片,不再走旧的备注转发页 - 当前 `设备` 和 `我的` 根页已收口为简单列表;`运维与修复 / AI 账号 / 技能` 保留在一级 `我的`,`审计对话` 作为置顶会话保留在会话首页 - 原生客户端当前直接调用 `https://boss.hyzq.net` 的 Boss API,不再打开 WebView - `2.0.1` 已修复华为真机上因 `Theme.SplashScreen` 与 `AppCompatActivity` 不兼容导致的启动闪退 @@ -104,6 +106,7 @@ Android APK: - `2.2.0` 已把原生 UI 从控制台风格回退到微信式简单列表和聊天优先视图,并复核了设备页 / 我的页 / 深层高级入口 - `2.2.1` 已继续补齐原生交互细节:聊天页发送后会先出现本地“发送中”气泡,关于页会展示 OTA 下载进度 / 重试 / 安装授权提示,根 tab 会记住用户上次停留位置并改成“再按一次返回进入后台” - `2.3.0` 已把会话模型切到“线程 = 聊天窗口”,补上文件夹名副信息、后台活跃数量动态图标、微信式会话信息页、线程改名、独立群聊创建、群资料页,以及 `主 Agent / 审计对话` 普通置顶会话化 +- `2.4.0` 已把消息转发切到微信式原生链路:聊天页支持长按消息操作、多选合并转发、统一目标会话选择页;单条消息转发显示为普通转发消息,多条消息转发显示为“聊天记录”卡片 ## 本地启动 diff --git a/android/app/build.gradle b/android/app/build.gradle index d533f52..95e56a4 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -36,8 +36,8 @@ android { applicationId "com.hyzq.boss" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 11 - versionName "2.3.0" + versionCode 12 + versionName "2.4.0" buildConfigField "String", "BOSS_API_BASE_URL", "\"https://boss.hyzq.net\"" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/docs/architecture/ai_handoff_index_cn.md b/docs/architecture/ai_handoff_index_cn.md index 11d3c73..01928e3 100644 --- a/docs/architecture/ai_handoff_index_cn.md +++ b/docs/architecture/ai_handoff_index_cn.md @@ -50,6 +50,7 @@ - `android/app/src/main/java/com/hyzq/boss/ConversationInfoActivity.java`:原生微信式会话信息页,支持线程改名和发起群聊 - `android/app/src/main/java/com/hyzq/boss/GroupInfoActivity.java`:原生群资料页,支持群名修改与成员查看 - `android/app/src/main/java/com/hyzq/boss/GroupCreateActivity.java`:原生独立群聊创建页 +- `android/app/src/main/java/com/hyzq/boss/ForwardTargetActivity.java`:原生微信式会话选择页,承接单条转发与多选合并转发 - `android/app/src/main/java/com/hyzq/boss/DeviceDetailActivity.java`:原生设备详情与技能入口 - `android/app/src/main/java/com/hyzq/boss/AiAccountsActivity.java`:原生 AI 账号管理页 - `android/app/src/main/java/com/hyzq/boss/OpsCenterActivity.java`:原生运维 / 审计中心 @@ -116,6 +117,7 @@ - 项目聊天页当前已经改成聊天优先,只保留 `项目目标 / 版本记录` 两个轻入口;线程预算、handoff、运维与转发能力仍保留数据和深层活动页,但不再出现在主聊天面 - 线程改名当前遵循微信最新逻辑:从聊天页右上角进入会话信息页,再进行改名 - 当前已支持从单线程会话发起独立群聊:原会话保留,新群聊自动命名并可在群资料页改名 +- 当前已支持微信式消息转发:长按消息可直接 `转发 / 多选 / 复制 / 删除`,单条消息转发显示为普通转发消息,多条消息转发显示为聊天记录卡片 - 主 Agent 项目页会实时吸收 APP 端日志,用于边对话边指导 APK / Web 优化 - 移动端 UI 已去掉假的状态栏与桌面预览壳;底部一级导航固定在视口底部,返回逻辑不会再把 APP 根页直接弹回桌面 - `项目目标` 支持用户编辑、主 Agent 复核、完成项自动划线 @@ -137,7 +139,7 @@ - 邮件:`Postfix + Dovecot` - Android:`AppCompatActivity + 原生 XML 布局 + HttpURLConnection` - 原生登录恢复:`SharedPreferences + restore token` -- 当前最新原生 APK:`2.3.0`(`versionCode=11`) +- 当前最新原生 APK:`2.4.0`(`versionCode=12`) 当前不要误判成已经用了: diff --git a/docs/architecture/api_and_service_inventory_cn.md b/docs/architecture/api_and_service_inventory_cn.md index aedbfd7..b75ab42 100644 --- a/docs/architecture/api_and_service_inventory_cn.md +++ b/docs/architecture/api_and_service_inventory_cn.md @@ -47,7 +47,10 @@ - 右上角会进入微信式 `会话信息 / 群资料` - 单线程会话支持按微信最新逻辑改线程名 - 当前已经支持从单线程会话发起独立群聊,群聊创建后作为新会话保留,原会话不升级 - - `消息转发 / 线程详情 / 运维调试` 仍保留对应原生活动页,但已退出主聊天面 + - 当前已经支持微信式消息转发:长按消息可直接 `转发 / 多选 / 复制 / 删除` + - 当前多选模式会切换成微信式 `取消 + 已选数量 + 底部转发` 状态 + - 当前统一使用 `ForwardTargetActivity` 选择目标会话,替换旧的备注转发主链 + - `线程详情 / 运维调试` 仍保留对应原生活动页,但已退出主聊天面 - 当前已补上本地发送中气泡、发送按钮状态控制,以及“只有接近底部才自动滚到底”的消息流行为 - 当前根页导航: - `MainActivity` 会记住最近一次停留的 `会话 / 设备 / 我的` tab @@ -374,8 +377,17 @@ - 用途:把消息转发到另一个项目 - 输入: + - `mode`: `single | bundle` - `targetProjectId` - - `note` + - `sourceMessageId`:当 `mode=single` + - `sourceMessageIds`:当 `mode=bundle`,且至少 2 条 +- 当前行为: + - `single` 会生成 `kind=forward_single` 的普通转发消息,并保留 `forwardSource` + - `bundle` 会生成 `kind=forward_bundle` 的聊天记录卡片,并保留来源会话、消息数量、时间范围和摘要列表 + - 当前一次只允许选择一个目标会话 + - 当前会过滤源会话本身,避免把消息转发回当前会话 + - 当前目标既可以是单线程会话,也可以是群聊、`主 Agent` 或 `审计对话` + - 非开发任务下如命中线程沟通限制,接口会预留 `approvalRequired / approvalReason` 返回 #### `POST /api/v1/projects/[projectId]/goals` diff --git a/docs/architecture/current_runtime_and_deploy_status_cn.md b/docs/architecture/current_runtime_and_deploy_status_cn.md index 80ea836..02bf483 100644 --- a/docs/architecture/current_runtime_and_deploy_status_cn.md +++ b/docs/architecture/current_runtime_and_deploy_status_cn.md @@ -92,6 +92,9 @@ cd /Users/kris/code/boss - 原生 Android 当前也和这套产品方向对齐:`会话 / 设备 / 我的` 为固定底部 tab,一级面维持微信式简单列表和聊天优先;`主 Agent / 审计对话` 以普通置顶会话样式固定在会话首页顶部 - 会话列表当前已切到“线程 = 聊天窗口”:主标题显示线程名,第二行显示所属文件夹名,第三行显示最后一条消息预览,右下角显示后台活跃数量动态图标;同一文件夹下多个线程会渲染成多个独立聊天窗口 - 项目详情页右上角当前会进入微信式会话信息页:单线程会话支持改名和发起群聊,群聊会进入群资料页并支持改群名 +- 项目详情页当前已补齐微信式消息转发:长按消息会弹出 `转发 / 多选 / 复制 / 删除 / 取消`;单条消息直接进入统一会话选择页,多选消息会进入合并转发链路 +- 原生转发目标页当前统一由 `ForwardTargetActivity` 承接;一次只允许选择一个目标会话,目标可为单线程会话、群聊、`主 Agent` 或 `审计对话` +- 当前单条消息转发会在目标会话中显示为普通转发消息,并保留 `forwardSource`;多条消息会落成 `forward_bundle` 聊天记录卡片,并保留来源会话、时间范围和摘要条目 - 会话页、设备页、技能页和项目详情页当前都通过 `/api/v1/events` 的 SSE 自动刷新 - 我的页当前保留 `账号与安全 / 设置 / 运维与修复 / AI 账号 / 技能 / 关于` 六个一级入口;`AI 账号` 支持查看 `主 GPT / 备用 GPT / API 容灾`,并明确主链路优先走已经在绑定电脑上登录 `ChatGPT Plus / Codex` 的 `Master Codex Node` - 主 Agent 当前真实对话链路已验证通过:`Boss Web -> /api/v1/projects/master-agent/messages -> master-agent task queue -> local-agent -> codex exec -> /complete -> 项目消息账本` @@ -111,7 +114,7 @@ cd /Users/kris/code/boss - 当前已生成 Android debug APK:`android/app/build/outputs/apk/debug/app-debug.apk` - 当前已生成 Android signed release APK:`android/app/build/outputs/apk/release/app-release.apk` - 当前 release 构建还会额外生成带版本号的 APK:`android/app/build/outputs/apk/release/boss-android-v{versionName}-release.apk` -- 当前最新 release 构建版本:`2.3.0`(`versionCode=11`) +- 当前最新 release 构建版本:`2.4.0`(`versionCode=12`) - 当前 release keystore 位于本机 `android/keystores/boss-release.keystore`,签名参数位于 `android/signing/release-signing.properties` - `2.0.1` 已在本机连接的华为真机上复核通过,修复了 `Theme.SplashScreen` 导致的 `AppCompatActivity` 启动闪退 - `2.1.0` 已把 Web 一级页和主要二级页全部补成原生活动页:`MainActivity / ProjectDetailActivity / ProjectGoalsActivity / ProjectVersionsActivity / ProjectForwardActivity / ThreadDetailActivity / DeviceDetailActivity / DeviceEnrollmentActivity / SkillInventoryActivity / SecurityActivity / SettingsActivity / AiAccountsActivity / OpsCenterActivity / AboutActivity` @@ -120,6 +123,7 @@ cd /Users/kris/code/boss - `2.2.0` 已把原生 UI 回退到微信式交互:会话首页改为简单聊天列表,项目详情页改为聊天优先,只保留 `项目目标 / 版本记录` 两个轻入口,设备页和我的页根面改为简单列表 - `2.2.1` 已继续补齐原生交互细节:聊天页会即时显示本地“发送中”气泡,并且只在用户接近底部或本次发送主动触发时自动滚到底;关于页会显示 OTA 下载进度 / 重试 / 安装授权提示,离开后再回来仍会恢复本地下载状态;根 tab 会记住最近一次用户停留页,并把一级页返回逻辑收成“先回会话 tab,再按一次返回进入后台” - `2.3.0` 已把原生会话模型切到“线程 = 聊天窗口”:补上文件夹名副信息、后台活跃数量动态图标、微信式会话信息页、线程改名、独立群聊创建、群资料页,以及 `主 Agent / 审计对话` 普通置顶会话化 +- `2.4.0` 已把原生消息转发切到微信式链路:单条消息支持长按直接转发,多选消息支持合并转发成聊天记录卡片,统一使用原生会话选择页替换旧的备注转发页 ## 2. 服务器状态 diff --git a/public/downloads/boss-android-latest-aab.json b/public/downloads/boss-android-latest-aab.json index fc32a5c..3144704 100644 --- a/public/downloads/boss-android-latest-aab.json +++ b/public/downloads/boss-android-latest-aab.json @@ -1,11 +1,11 @@ { "artifactType": "aab", - "fileName": "boss-android-v2.3.0-release.aab", - "urlPath": "/downloads/boss-android-v2.3.0-release.aab", - "sizeBytes": 2885958, - "updatedAt": "2026-03-27T21:18:55Z", - "sha256": "3888548f27fa6880201ebe9ffc4efedc5e35012d78c65175f2c43316503cc9bc", - "versionName": "2.3.0", - "versionCode": 11, + "fileName": "boss-android-v2.4.0-release.aab", + "urlPath": "/downloads/boss-android-v2.4.0-release.aab", + "sizeBytes": 2894817, + "updatedAt": "2026-03-28T00:59:18Z", + "sha256": "beaca830a470bb5af180cb75dff60fc9e2039f10214480ae0cd7503bd793af22", + "versionName": "2.4.0", + "versionCode": 12, "buildFlavor": "release" } diff --git a/public/downloads/boss-android-latest.aab b/public/downloads/boss-android-latest.aab index 0c38e1e..7efbf84 100644 Binary files a/public/downloads/boss-android-latest.aab and b/public/downloads/boss-android-latest.aab differ diff --git a/public/downloads/boss-android-latest.apk b/public/downloads/boss-android-latest.apk index d84551b..cc9802e 100644 Binary files a/public/downloads/boss-android-latest.apk and b/public/downloads/boss-android-latest.apk differ diff --git a/public/downloads/boss-android-latest.json b/public/downloads/boss-android-latest.json index 12b883d..d08462b 100644 --- a/public/downloads/boss-android-latest.json +++ b/public/downloads/boss-android-latest.json @@ -1,10 +1,10 @@ { - "fileName": "boss-android-v2.3.0-release.apk", + "fileName": "boss-android-v2.4.0-release.apk", "urlPath": "/api/v1/user/ota/package", - "sizeBytes": 3063299, - "updatedAt": "2026-03-27T21:18:45Z", - "sha256": "c0f23f3834c874c793a043b52392136cbb568528e1c57dc56358696ed7095e35", - "versionName": "2.3.0", - "versionCode": 11, + "sizeBytes": 3071649, + "updatedAt": "2026-03-28T00:59:14Z", + "sha256": "34831f13e8458fe668f7358c6a0d37d39430d3b8002a6c998b445b40f99e3672", + "versionName": "2.4.0", + "versionCode": 12, "buildFlavor": "release" } diff --git a/public/downloads/boss-android-v2.4.0-release.aab b/public/downloads/boss-android-v2.4.0-release.aab new file mode 100644 index 0000000..7efbf84 Binary files /dev/null and b/public/downloads/boss-android-v2.4.0-release.aab differ diff --git a/public/downloads/boss-android-v2.4.0-release.apk b/public/downloads/boss-android-v2.4.0-release.apk new file mode 100644 index 0000000..cc9802e Binary files /dev/null and b/public/downloads/boss-android-v2.4.0-release.apk differ