Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
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)

Expand Down Expand Up @@ -105,7 +105,7 @@
set(ACECODE_WEB_DIST "${CMAKE_SOURCE_DIR}/web/dist")
set(ACECODE_WEB_EMBED_DIR "${ACECODE_WEB_DIST}")
if(NOT EXISTS "${ACECODE_WEB_DIST}")
message(WARNING

Check warning on line 108 in CMakeLists.txt

View workflow job for this annotation

GitHub Actions / unit-tests (linux-x64)

[acecode] web/dist/ not found — embedding a minimal fallback page. Run
"[acecode] web/dist/ not found — embedding a minimal fallback page. "
"Run `pnpm install && pnpm build` inside web/ before re-configuring for the full UI.")
set(ACECODE_WEB_EMBED_DIR "${CMAKE_BINARY_DIR}/generated/web-dist-fallback")
Expand Down
2 changes: 2 additions & 0 deletions docs/releases/v1.0.10.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# ACECode v1.0.10

此标签因 Linux 原生编译失败未完成发布;修复与完整更新说明见 [v1.0.11](v1.0.11.md)。

- 新增语音识别输入,可选择麦克风、配置识别服务与快捷键,并在录音过程中暂停、取消或提交;修复麦克风右键菜单的事件处理。
- 改进归档会话浏览,超过 100 条时滚动分批显示,保留搜索、筛选、批量操作与撤销入口;优化会话切换、侧边栏刷新和窄窗口布局。
- 专家与子 agent 支持采样参数的保存、继承和单独覆盖;改进模型请求、提示缓存与图片上下文估算。
Expand Down
9 changes: 9 additions & 0 deletions docs/releases/v1.0.11.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# ACECode v1.0.11

- 新增语音识别输入,可选择麦克风、配置识别服务与快捷键,并在录音过程中暂停、取消或提交;修复麦克风右键菜单及 Linux 原生权限接口兼容性。
- 改进归档会话浏览,超过 100 条时滚动分批显示,保留搜索、筛选、批量操作与撤销入口;优化会话切换、侧边栏刷新和窄窗口布局。
- 专家与子 agent 支持采样参数的保存、继承和单独覆盖;改进模型请求、提示缓存与图片上下文估算。
- 优化桌面宠物的轮廓命中、缩放把手和贴边移动,Clippy、Rover 与鲸鱼娘切换时保留贴边状态。
- 补齐 macOS 操控的键盘焦点指针反馈和点击视觉反馈,扩展独立悬浮窗验证;优化运行数据命名迁移及旧目录兼容。

升级后请完整重启 ACECode。默认专家管理 Skill 会在下次启动时按新 seed 版本同步,保留用户修改的内容。Agent Browser 集成于 Desktop,无需独立浏览器宿主或扩展。
2 changes: 2 additions & 0 deletions openspec/changes/add-speech-recognition/design.md
Original file line number Diff line number Diff line change
Expand Up @@ -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。设备列表仅在显式右键菜单时请求,必要时申请麦克风权限以获取真实设备名称,临时授权流立即释放。
Expand Down
6 changes: 6 additions & 0 deletions openspec/changes/add-speech-recognition/tasks.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 执行。
4 changes: 2 additions & 2 deletions src/apps/desktop/linux_desktop.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion vcpkg.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "acecode",
"version-semver": "1.0.10",
"version-semver": "1.0.11",
"dependencies": [
"cpr",
{
Expand Down
Loading