diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4e993fd7..4b3ca82f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -46,6 +46,28 @@ jobs: path: lint-reports if-no-files-found: error + linux-desktop-api: + name: linux-desktop-api + runs-on: ubuntu-22.04 + timeout-minutes: 10 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install native WebKit headers + run: | + sudo apt-get update + sudo apt-get install -y g++ pkg-config libwebkit2gtk-4.1-dev + + - name: Compile native desktop API usage + shell: bash + run: | + g++ -std=c++17 -fsyntax-only \ + $(pkg-config --cflags webkit2gtk-4.1) \ + -Isrc/base -Isrc/domain -Isrc/adapters \ + -Isrc/engine -Isrc/host -Isrc/apps \ + src/apps/desktop/linux_desktop.cpp + macos-installer-tests: name: macos-installer-tests runs-on: macos-15 diff --git a/CMakeLists.txt b/CMakeLists.txt index fd998430..76db2d76 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ if(CMAKE_HOST_WIN32 AND DEFINED CMAKE_TOOLCHAIN_FILE AND CMAKE_TOOLCHAIN_FILE MA set(VCPKG_TARGET_TRIPLET "x64-windows-static" CACHE STRING "Vcpkg target triplet" FORCE) endif() -project(acecode VERSION 1.0.10 LANGUAGES C CXX) +project(acecode VERSION 1.0.11 LANGUAGES C CXX) include(${CMAKE_SOURCE_DIR}/cmake/acecode_source_guards.cmake) diff --git a/docs/releases/v1.0.10.md b/docs/releases/v1.0.10.md index 1f43f57e..c7938fdf 100644 --- a/docs/releases/v1.0.10.md +++ b/docs/releases/v1.0.10.md @@ -1,5 +1,7 @@ # ACECode v1.0.10 +此标签因 Linux 原生编译失败未完成发布;修复与完整更新说明见 [v1.0.11](v1.0.11.md)。 + - 新增语音识别输入,可选择麦克风、配置识别服务与快捷键,并在录音过程中暂停、取消或提交;修复麦克风右键菜单的事件处理。 - 改进归档会话浏览,超过 100 条时滚动分批显示,保留搜索、筛选、批量操作与撤销入口;优化会话切换、侧边栏刷新和窄窗口布局。 - 专家与子 agent 支持采样参数的保存、继承和单独覆盖;改进模型请求、提示缓存与图片上下文估算。 diff --git a/docs/releases/v1.0.11.md b/docs/releases/v1.0.11.md new file mode 100644 index 00000000..e1662084 --- /dev/null +++ b/docs/releases/v1.0.11.md @@ -0,0 +1,9 @@ +# ACECode v1.0.11 + +- 新增语音识别输入,可选择麦克风、配置识别服务与快捷键,并在录音过程中暂停、取消或提交;修复麦克风右键菜单及 Linux 原生权限接口兼容性。 +- 改进归档会话浏览,超过 100 条时滚动分批显示,保留搜索、筛选、批量操作与撤销入口;优化会话切换、侧边栏刷新和窄窗口布局。 +- 专家与子 agent 支持采样参数的保存、继承和单独覆盖;改进模型请求、提示缓存与图片上下文估算。 +- 优化桌面宠物的轮廓命中、缩放把手和贴边移动,Clippy、Rover 与鲸鱼娘切换时保留贴边状态。 +- 补齐 macOS 操控的键盘焦点指针反馈和点击视觉反馈,扩展独立悬浮窗验证;优化运行数据命名迁移及旧目录兼容。 + +升级后请完整重启 ACECode。默认专家管理 Skill 会在下次启动时按新 seed 版本同步,保留用户修改的内容。Agent Browser 集成于 Desktop,无需独立浏览器宿主或扩展。 diff --git a/openspec/changes/add-speech-recognition/design.md b/openspec/changes/add-speech-recognition/design.md index 9d024291..75b3b870 100644 --- a/openspec/changes/add-speech-recognition/design.md +++ b/openspec/changes/add-speech-recognition/design.md @@ -19,6 +19,8 @@ 6. 同时只允许一份客户端录音;后端限制并发转写避免堆积。取消接口以请求 ID 标识活动调用。外部识别服务是否真正中止推理由服务自己决定,ACECode 不接受已取消结果。 7. Mac Desktop 添加麦克风用途说明;检查各 Desktop WebView 权限入口,保持仅主页面用户触发采集。Windows 本地编译和浏览器验证作为当前可执行验收,不将其宣称为 Mac/Linux 真机通过。 +2026-10-19 Linux 编译补验:v1.0.10 打包暴露了 WebKitGTK 音视频权限函数名错误。按官方接口更正为 `webkit_user_media_permission_is_for_audio_device` 和 `webkit_user_media_permission_is_for_video_device`,并用独立 CI 直接编译 `linux_desktop.cpp`,在完整依赖构建前检查系统头文件兼容性。原有仅本地页面、仅音频的权限规则保持;此编译检查不证明真实录音或系统权限交互已通过。 + ## Risks / Trade-offs - 麦克风设备属于浏览器所在电脑,本地偏好与后端识别服务配置分离;使用共享连接无关的本机偏好 store。设备列表仅在显式右键菜单时请求,必要时申请麦克风权限以获取真实设备名称,临时授权流立即释放。 diff --git a/openspec/changes/add-speech-recognition/tasks.md b/openspec/changes/add-speech-recognition/tasks.md index 4ef0da81..edb65ab6 100644 --- a/openspec/changes/add-speech-recognition/tasks.md +++ b/openspec/changes/add-speech-recognition/tasks.md @@ -27,3 +27,9 @@ ## 7. 麦克风右键事件修正 - [x] 7.1 在浏览器回归中挂载生产用 DesktopContextMenu,复现右键麦克风误开“全选”;接入已有委托机制,使图标及按钮空白区均打开麦克风配置,保留编辑器通用菜单。 - [x] 7.2 验证菜单切换互斥、设备选择、快捷键和原有录音流程,运行 Web 测试/构建及 OpenSpec 严格校验,并记录实际验证范围。 + +## 8. Linux 原生编译修正 +- [x] 8.1 将音视频权限查询改为 WebKitGTK 实际导出的 `webkit_user_media_permission_is_for_audio_device` / `webkit_user_media_permission_is_for_video_device`,保留本地页面和仅音频的权限限制。 +- [x] 8.2 增加独立 Linux 原生 API 编译检查并取得 CI 通过结果;该检查使用系统 WebKitGTK 头文件编译生产代码,不代替真实麦克风交互验收。 + +验证:GitHub Actions run `39152273460` 的 `linux-desktop-api` job `117748175419` 已通过,实际编译生产 `linux_desktop.cpp` 与系统 WebKitGTK 4.1 头文件。静态检查及 Web 测试/构建亦通过;完整原生回归与发布包检查继续由后续 CI 执行。 diff --git a/src/apps/desktop/linux_desktop.cpp b/src/apps/desktop/linux_desktop.cpp index 5ae05dd0..77bc7e1b 100644 --- a/src/apps/desktop/linux_desktop.cpp +++ b/src/apps/desktop/linux_desktop.cpp @@ -20,8 +20,8 @@ void configure_linux_native_services(void* webview_widget) { const std::string url = uri ? uri : ""; const bool local = url.rfind("http://127.0.0.1:", 0) == 0 || url.rfind("http://localhost:", 0) == 0 || url.rfind("http://[::1]:", 0) == 0; - if (local && webkit_user_media_permission_request_is_for_audio_device(media) && - !webkit_user_media_permission_request_is_for_video_device(media)) { + if (local && webkit_user_media_permission_is_for_audio_device(media) && + !webkit_user_media_permission_is_for_video_device(media)) { webkit_permission_request_allow(request); } else { webkit_permission_request_deny(request); diff --git a/vcpkg.json b/vcpkg.json index d82fdde4..a8c2b7f9 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -1,6 +1,6 @@ { "name": "acecode", - "version-semver": "1.0.10", + "version-semver": "1.0.11", "dependencies": [ "cpr", {