Skip to content
Open
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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -381,3 +381,4 @@ webcodecli-workspaces
.omx/
.playwright-cli/
.workbuddy/
/.webcode/
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project>
<!-- See https://aka.ms/dotnet/msbuild/customize for more details on customizing your build -->
<PropertyGroup>
<Version>0.2.10</Version>
<Version>0.2.14</Version>
<NetVersion>10.0.1</NetVersion>
</PropertyGroup>
</Project>
28 changes: 21 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,23 @@
<a href="README.md">简体中文</a> | <a href="README_EN.md">English</a>
</p>

---

## Feishu Reply Documents

WebCode has removed reply TTS for Feishu responses.

Feishu reply delivery now works through cloud documents:

- Full reply documents keep the complete AI final reply content.
- Conclusion reply documents keep only the conclusion-focused final content.
- The generated cloud document link gives the chat a durable record of the AI reply.
- Users can listen to the AI reply result with Feishu document audio instead of WebCode-managed TTS playback.
- On mobile Feishu, open the document and use the `...` menu to start document audio.
- Referenced local Markdown files mentioned in a completed reply can also be imported as Feishu online documents in the same session document folder.
- When the same local Markdown file changes later, WebCode updates the existing Feishu online document in place so the shared document URL stays stable.
- Windows installer publishing reads the release version from `Directory.Build.props`; bump the patch version before publishing a new installer so the `vX.Y.Z` tag matches the current commit.

<p align="center">
<strong>把 AI CLI、Web 会话、移动端和飞书工作流接到同一个控制面板里</strong>
</p>
Expand Down Expand Up @@ -110,7 +127,7 @@ WebCode 是一个基于 `Blazor Server + .NET 10` 的 AI CLI 工作平台。它
- 支持图片、文件消息的“待提交附件”卡片流程,先暂存到工作区,再补充说明后提交给 CLI
- 支持文本框粘贴图片形成的富文本 `post` 消息,直接把内嵌图片和文字一并提交给 CLI
- 支持会话级 Provider 同步,确保飞书侧也遵循 `cc-switch` 当前激活状态
- 支持 Reply TTS 相关能力,用于把回复内容进一步转换为语音或语音服务调用链
- 支持飞书完整回复文档与结论回复文档能力,可在回复完成后自动生成云文档并回发链接
- 支持帮助卡片、快捷入口卡片、会话管理卡片等多种交互载体

适合的飞书使用场景包括:
Expand Down Expand Up @@ -187,7 +204,6 @@ WebCode 是一个基于 `Blazor Server + .NET 10` 的 AI CLI 工作平台。它
- 便携版 `WebCode-vX.Y.Z-win-x64-portable.zip`
- 校验文件 `SHA256SUMS.txt`
- Release 说明 `RELEASE_NOTES.md`
- 包含 Reply TTS 服务与运行所需资源的 `tts-bundle/`
- 发布包页面:`https://github.com/lusile2024/WebCode/releases`

## `cc-switch` 托管模型
Expand Down Expand Up @@ -368,11 +384,10 @@ dotnet run --project WebCodeCli
powershell -ExecutionPolicy Bypass -File .\tools\build-windows-installer.ps1
```

如果你要生成“包含 Reply TTS / Kokoro 能力”的本地 Windows 安装包,应该优先走这条脚本,而不是单独 `dotnet publish`。原因是安装包脚本除了发布主程序外,还会额外处理这些内容:
如果你要生成本地 Windows 安装包,应该优先走这条脚本,而不是单独 `dotnet publish`。原因是安装包脚本除了发布主程序外,还会额外处理这些内容:

- 调整发布目录里的 `appsettings.json`
- 拷贝 `tools/sherpa-kokoro-service`
- 组装 `tts-bundle`
- 调整发布输出目录结构
- 生成 Inno Setup 安装包与 portable zip

脚本会读取 [Directory.Build.props](./Directory.Build.props) 中的版本号,并在 `artifacts/windows-installer/vX.Y.Z/` 下生成:
Expand All @@ -382,15 +397,14 @@ powershell -ExecutionPolicy Bypass -File .\tools\build-windows-installer.ps1
- `installer/WebCode-Setup-vX.Y.Z-win-x64.exe`
- `SHA256SUMS.txt`
- `RELEASE_NOTES.md`
- `tts-bundle/`

在 Windows 机器上,如果默认输出目录存在旧文件锁定,或者 Inno Setup 遇到长路径问题,可以显式指定一个较短的输出目录,例如:

```powershell
powershell -ExecutionPolicy Bypass -File .\tools\build-windows-installer.ps1 -OutputRoot D:\wci
```

这种方式同样会生成完整的安装版、便携版和 TTS 资源目录,适合本地快速出包。
这种方式同样会生成完整的安装版、便携版以及校验与说明文件,适合本地快速出包。

构建机要求:

Expand Down
1 change: 0 additions & 1 deletion README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,6 @@ The repository already includes a Windows packaging script that builds:
- portable archive `WebCode-vX.Y.Z-win-x64-portable.zip`
- checksum file `SHA256SUMS.txt`
- release notes `RELEASE_NOTES.md`
- bundled Reply TTS runtime assets under `tts-bundle/`
- release package page: `https://github.com/lusile2024/WebCode/releases`

## `cc-switch` Managed Assistant Model
Expand Down
235 changes: 0 additions & 235 deletions WebCodeCli.Domain.Tests/AudioTranscodeServiceTests.cs

This file was deleted.

40 changes: 40 additions & 0 deletions WebCodeCli.Domain.Tests/CliExecutionRequestAdapterTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,46 @@ public void CodexAdapter_BuildArguments_RequestOverload_EncodesNativeImagesAndRe
Assert.Contains("Review the staged files.", arguments, StringComparison.Ordinal);
}

[Fact]
public void CodexAdapter_BuildArguments_WithNativeAttachmentAndDashPrefixedPrompt_PlacesAttachmentsBeforeArgumentTerminator()
{
var adapter = new CodexAdapter();
var tool = new CliToolConfig
{
Id = "codex",
Name = "Codex",
Command = "codex",
Enabled = true
};
var request = new CliExecutionRequest
{
SessionId = "session-123",
ToolId = "codex",
PromptText = "- Docs/superpowers/plans/test.md",
SessionContext = new CliSessionContext
{
SessionId = "session-123",
WorkingDirectory = Path.GetTempPath()
},
NativeAttachments =
[
new CliExecutionAttachment
{
DisplayName = "diagram.png",
Kind = MessageAttachmentKind.Image,
AbsolutePath = @"D:\attachments\diagram.png",
WorkspaceRelativePath = ".webcode/message-inputs/submission-1/diagram.png"
}
]
};

var arguments = adapter.BuildArguments(tool, request);

Assert.Equal(
"exec --skip-git-repo-check --dangerously-bypass-approvals-and-sandbox --json -i \"D:\\attachments\\diagram.png\" -- \"- Docs/superpowers/plans/test.md\"",
arguments);
}

[Fact]
public void ClaudeCodeAdapter_BuildArguments_RequestOverload_IncludesReferenceAttachmentPreamble()
{
Expand Down
Loading