Repository navigation
Releases: nzlov/anycode
Release list
v0.4.2
v0.4.2
中文
本版本为 Side 临时提问增加持久化记录与卡片关闭清理,支持重新打开后回看提问和输出;同时新增本地隧道模式,并支持已有隧道在本地转发与 Cloudflare 临时域名之间切换。
Side 提问记录与生命周期
- 保存 Side 的初始提问、后续追问、输出事件、运行状态和错误信息,重新打开 Side 面板或刷新页面后可恢复查看。
- 关闭 Side 面板或断开事件订阅不再停止运行中的提问;重新打开时恢复历史输出,并继续订阅运行中的 Side。
- 事件先保存再推送,历史回放与实时输出按事件 ID 去重,减少重连时的重复展示。
- 服务重启后,将此前仍在运行的 Side 标记为中断并保留已保存的记录,避免一直显示为运行中。
- 单独关闭 Side 时停止对应运行并删除记录;关闭卡片时先停止其 Side,再清理相关记录和事件,历史清理也会删除关联数据。
- 校验追问所属卡片,阻止对仍在运行的 Side 重复发起追问,以及在正在关闭或已关闭的卡片上发起 Side。
- 新增持久化恢复、订阅断开与回放、追问、重启中断及卡片关闭清理的回归测试。
本地隧道与模式切换
- 隧道管理支持选择本地模式或 CF 模式,并持久保存新建隧道的默认模式;默认仍为 CF,修改设置仅影响后续新建的隧道。
- 本地模式通过 AnyCode 地址下的
/tunnel/隧道ID/转发测试程序,无需创建 Cloudflare 临时域名;CF 模式继续使用 Cloudflare 临时域名。 - 已有运行中隧道可单独切换模式,并保留隧道身份。新通道建立成功后替换旧通道并断开原连接;失败时保留原通道。
- 概览页始终提供隧道管理入口,即使没有运行中的隧道也可设置默认模式;列表展示当前模式,概览页在模式切换后更新对应隧道信息。
- 本地转发保留隧道鉴权,移除发往测试程序的 AnyCode 访问凭据,并调整站内重定向和应用 Cookie 路径以适配预览前缀。
- PWA 导航回退排除
/tunnel/路径,避免本地预览被 AnyCode 页面接管。 - 更新
tunnel_create工具说明与 README,并新增本地转发鉴权、关闭、模式切换失败保留原通道及切换期间关闭的回归测试。
使用说明
- 本地模式转发时会移除
/tunnel/隧道ID/前缀;测试程序的资源和 WebSocket 地址需要支持该前缀。 - 本地预览与 AnyCode 同源,仅用于可信的测试程序。
- Side 记录随卡片保留,关闭卡片后清理;服务重启会保留已保存记录,但不会自动恢复被中断的 Side 运行。
English
This release adds persistent records and card-close cleanup for Side questions, allowing prompts and output to be viewed again after reopening. It also introduces local tunnels and lets existing tunnels switch between local forwarding and Cloudflare temporary URLs.
Side history and lifecycle
- Persist initial prompts, follow-up questions, output events, run status, and errors, restoring them when the Side panel is reopened or the page is refreshed.
- Keep Side questions running when the panel closes or event subscriptions disconnect. Reopening restores saved output and resubscribes to active runs.
- Save events before publishing them and deduplicate historical and live output by event ID to reduce duplicate rendering after reconnection.
- Mark previously running Sides as interrupted after a server restart while retaining saved records, instead of leaving them indefinitely marked as running.
- Closing an individual Side stops its run and deletes its records. Closing a card stops its Sides before removing their records and events; history cleanup also removes related data.
- Validate card ownership for follow-ups, reject follow-ups to an already running Side, and prevent Side questions on closing or closed cards.
- Add regression coverage for persistence and restoration, subscription disconnects and replay, follow-ups, restart interruption, and card-close cleanup.
Local tunnels and mode switching
- Choose local or CF mode in tunnel management and persist the default for new tunnels. CF remains the default, and changes apply only to subsequently created tunnels.
- Forward local previews through
/tunnel/<tunnel-id>/under the AnyCode URL without creating a Cloudflare temporary hostname. CF mode continues to use Cloudflare temporary URLs. - Switch individual running tunnels between modes while preserving tunnel identity. Replace the old channel and disconnect its connections only after the new channel starts successfully; retain the original channel if switching fails.
- Always show tunnel management on the overview page, allowing the default mode to be configured even when no tunnels are running. Display each tunnel's mode and refresh its overview entry after a mode change.
- Retain tunnel authentication for local forwarding, strip AnyCode access credentials before forwarding requests, and adapt same-site redirects and application cookie paths to the preview prefix.
- Exclude
/tunnel/routes from PWA navigation fallback so local previews are not replaced by the AnyCode page. - Update the
tunnel_createtool description and README, with regression coverage for authenticated local forwarding, closing, preserving the original channel on switch failure, and closing during a switch.
Usage notes
- Local forwarding strips the
/tunnel/<tunnel-id>/prefix before sending requests upstream. The test application's asset and WebSocket URLs must support this prefix. - Local previews share AnyCode's origin and are intended only for trusted test applications.
- Side records remain with their card and are removed when the card closes. Server restarts retain saved records but do not automatically resume interrupted Side runs.
Complete commit list / 完整提交列表
-
91f16f2— Persist Side prompts, follow-ups, output, and run status; restore history and clean up Side runs and records when cards close.持久化 Side 提问、追问、输出与运行状态,支持历史恢复,并在关闭卡片时停止运行、清理记录。
-
5697d99— Add local tunnel forwarding, persistent default-mode selection, and switching between local and Cloudflare modes for existing tunnels.新增本地隧道转发、持久化默认模式设置,以及已有隧道在本地与 Cloudflare 模式之间切换。
v0.4.1
v0.4.1
中文
本版本修复历史会话中的图片恢复,并为 Diff、临时文件列表和事件资源预览增加按需加载,改善文件较多时的打开速度、资源占用和错误反馈。
历史图片恢复
- 恢复 Codex 历史记录中助手消息和工具输出所包含的图片,不再因历史事件净化而丢失预览。
- 将历史记录中的内联图片与当前卡片已归档的临时文件按内容匹配,并通过受控预览地址重新展示。
- 支持恢复 Base64 和 Data URL 图片;无效、过大、未归档或非图片内容会安全忽略。
- 保留自定义工具历史输出的原始内容,使其中的图片可以被正确识别和恢复。
Diff 与临时文件按需加载
- Diff 文件列表和临时文件列表改为每页 50 项,并在滚动时继续加载,减少大型卡片的初始请求与渲染开销。
- 后端查询新增
offset和limit,单次请求最多返回 100 项。 - Diff 界面会区分“已加载”和“共计”的文件数量,并在继续加载时保持折叠状态和渐进式 Diff 获取。
- 临时文件筛选、排序和刷新后会从第一页重新加载,同时保持内嵌预览选择一致。
事件资源精确预览
- 会话文件可按文件 ID 精确查询,Diff 文件可按路径精确查询,避免为了打开单个资源而读取完整列表。
- 历史消息中的文件链接和批注原文件会优先解析临时文件、工作区文件和 Diff,并按实际资源类型打开预览。
- 文件预览对话框会立即显示加载状态,并在失败时就地展示错误信息。
- 兼容工作树绝对路径,将其转换为仓库相对路径后匹配 Diff 文件。
English
This release restores images in session history and adds on-demand loading for Diff files, artifact lists, and event-resource previews, improving startup time, resource usage, and error feedback for sessions with many files.
Historical image restoration
- Restore images from assistant messages and tool outputs in Codex history instead of losing them during transcript sanitization.
- Match inline historical images to artifacts archived by the current card and display them again through controlled preview URLs.
- Support Base64 and data URL images while safely ignoring invalid, oversized, unarchived, or non-image content.
- Preserve original custom-tool history output so embedded images can be identified and restored correctly.
On-demand Diff and artifact loading
- Load Diff files and artifacts in pages of 50, fetching additional items while scrolling to reduce initial request and rendering costs for large sessions.
- Add backend
offsetandlimitparameters, capped at 100 items per request. - Distinguish loaded and total file counts in the Diff view while preserving collapse state and progressive Diff loading across pages.
- Restart artifact pagination after filtering, sorting, or refreshing while keeping inline preview selection consistent.
Targeted event-resource previews
- Query session files by file ID and Diff files by path, avoiding full-list reads when opening a single resource.
- Resolve file links and annotation sources from artifacts, workspace files, and Diffs, then open the appropriate preview.
- Open the resource dialog immediately with an in-place loading state and error feedback.
- Normalize absolute worktree paths to repository-relative paths before matching Diff files.
Complete commit list / 完整提交列表
-
90dacab— Restore archived images in session history and lazily load Diff and artifact lists.恢复会话历史中的归档图片,并按需分页加载 Diff 与临时文件列表。
v0.4.0
v0.4.0
中文
本版本新增 MCP 服务分层配置与动态工具调用,完善会话 Markdown 和 Mermaid 图表展示,优化文件预览加载,并修复卡片重连后的内容刷新问题。
MCP 服务配置与调用
- 支持全局、项目、卡片三级配置与开关控制,项目可覆盖同名全局服务,卡片可独立启用或停用服务。
- 支持本地 stdio 和 Streamable HTTP 连接,提供连接检测、环境变量及 HTTP 请求头配置。
- 通过
mcp_discover和mcp_call动态发现与调用工具,无需修改 Codex 配置文件。 - 支持分页工具发现,以及文本、图片、音频和结构化调用结果。
- 每次发现与调用读取当前配置,停用服务后拒绝后续调用,已开始的调用继续执行。
- 连接按卡片与服务隔离,配置变化时重建,闲置连接自动回收;查询时隐藏凭据,编辑时可保留已有值。
会话 Markdown 与图表
- 新增代码语法高亮,补齐任务列表复选框、有序列表起始编号及表格对齐。
- 优化表格、表头和引用块样式。
- 支持 Mermaid 图表渲染,适配明暗主题,并支持滚动与键盘聚焦。
- 流式输出期间等待内容稳定后渲染图表;语法不完整或渲染失败时保留源码。
- 保留内容净化与图表隔离,避免图表样式和链接影响会话界面。
文件预览
- 附件、临时文件、工作区文件和 Diff 媒体通过鉴权地址直接加载,减少完整文件预先转为 Blob 带来的等待与内存开销。
- 图片、PDF、音视频和模型预览使用直接地址,音视频优先加载元数据。
- 文本预览支持流式展示,超过 1 MiB 时提示下载查看。
- 补齐工作区文件及 Diff 媒体预览凭据接口,保留资源绑定、禁止缓存和地址校验。
卡片重连刷新
- 卡片重连时同步刷新 Diff 和临时文件面板,修复断线期间发生变更后仍显示旧内容的问题。
English
This release adds layered MCP configuration and dynamic tool invocation, improves session Markdown and Mermaid diagrams, optimizes file preview loading, and fixes stale content after card reconnection.
MCP service configuration and invocation
- Support global, project, and card-level configuration and switches. Projects can override global services by name, while cards can independently enable or disable services.
- Support local stdio and Streamable HTTP connections, with connection checks, environment variables, and HTTP headers.
- Discover and invoke tools dynamically through
mcp_discoverandmcp_call, without modifying Codex configuration files. - Support paginated tool discovery and text, image, audio, and structured results.
- Read current configuration for each discovery and invocation. Disabled services reject subsequent calls while existing calls continue.
- Isolate connections by card and service, reconnect after configuration changes, and reclaim idle connections. Mask credentials in queries while allowing stored values to be retained during editing.
Session Markdown and diagrams
- Add syntax highlighting and preserve task-list checkboxes, ordered-list starting numbers, and table alignment.
- Improve table, header, and blockquote styling.
- Render Mermaid diagrams with light and dark theme support, scrolling, and keyboard focus.
- Wait briefly for streaming content to settle before rendering diagrams. Preserve source when syntax is incomplete or rendering fails.
- Retain content sanitization and diagram isolation to prevent diagram styles and links from affecting the session interface.
File previews
- Load attachment, artifact, workspace-file, and Diff media previews directly through authenticated URLs, reducing delays and memory overhead from buffering entire files as Blobs.
- Use direct URLs for images, PDFs, audio, video, and model previews, loading audio and video metadata first.
- Display text previews progressively through streaming, and prompt users to download files exceeding 1 MiB.
- Add preview-token endpoints for workspace files and Diff media, retaining resource binding, no-cache policies, and URL validation.
Card reconnection refresh
- Refresh Diff and artifact panels when cards reconnect, fixing stale content after changes occur during a disconnection.
Complete commit list / 完整提交列表
-
fe49ce9— Refresh Diff and artifact panels when cards reconnect.修复卡片重连后变更和临时文件面板未刷新的问题。
-
436ac6c— Load file previews directly through authenticated URLs and stream text previews.通过鉴权地址直接加载文件预览,并以流式方式展示文本。
-
411b72d— Extend session Markdown with syntax highlighting, task lists, and Mermaid diagrams.补齐会话 Markdown 渲染,支持代码高亮、任务列表和 Mermaid 图表。
-
fe0c924— Add layered MCP configuration and dynamic tool discovery and invocation for cards.新增 MCP 分层配置,以及卡片动态工具发现与调用。
v0.3.3
v0.3.3
中文
本版本修复新建卡片页面的透明背景与布局问题,让表单和提示词输入区域铺满可用空间;同时修复普通目录项目关闭卡片失败的问题。
新建卡片页面
- 新建卡片页面使用统一的主题背景色,修复透明背景导致的显示问题。
- 页面、表单与提示词输入区域采用可伸展布局,充分利用工具栏下方的可用空间。
- 调整提示词区域的边框与圆角,使输入区域与完整页面布局衔接一致。
- 更新移动端布局契约测试,覆盖页面背景样式约束。
普通目录项目关闭
- 修复关闭普通目录(非 Git)项目卡片时错误执行 Git 变更检查、导致关闭失败的问题。
- 根据卡片的基础分支信息判断是否需要检查 Git 工作树,使普通目录项目卡片正常关闭,并保留原有的清理状态。
- Git 项目继续执行未提交变更检查与关闭确认;检查失败时保留卡片的打开状态并返回错误。
- 新增回归测试,覆盖普通目录项目正常关闭和 Git 项目检查失败时的保护行为。
English
This release fixes transparent backgrounds and layout issues on the new-card page, allowing the form and prompt input to fill the available space. It also fixes failures when closing cards in ordinary directory projects.
New-card page
- Apply the shared theme background to the new-card page, fixing display issues caused by a transparent background.
- Use flexible layouts for the page, form, and prompt input to fill the available space below the toolbar.
- Adjust the prompt area's borders and corner radius to fit the full-page layout.
- Update mobile layout contract tests to cover page background styling.
Closing ordinary directory projects
- Fix card-closing failures caused by incorrectly running Git change inspection for ordinary directory (non-Git) projects.
- Use the card's base-branch information to determine whether Git worktree inspection applies, allowing ordinary directory cards to close while preserving their existing cleanup status.
- Retain uncommitted-change inspection and close confirmation for Git projects. If inspection fails, keep the card open and return the error.
- Add regression coverage for successful non-Git card closing and protection when Git inspection fails.
Complete commit list / 完整提交列表
-
eba737c— Fix the new-card page's transparent background and expand the form and prompt input to fill the available page space.修复新建卡片页面的透明背景,并让表单和提示词输入区域铺满页面可用空间。
-
67b3925— Fix closing cards in ordinary directory projects by applying Git change inspection only to Git-backed sessions, with regression coverage.仅对 Git 会话执行 Git 变更检查,修复普通目录项目关闭卡片失败的问题,并补充回归测试。
v0.3.2
v0.3.2
中文
本版本为 Side 临时提问新增模型配置和附件支持,改进事件自动滚动、文件下载及移动端图片预览,并在关闭含未提交修改的卡片工作树前增加确认。同时调整素材处理指引,允许将用户已授权的正式素材纳入项目。
Side 临时提问与执行
- 新建 Side 和继续追问均支持选择模型、思考强度和快速模式,初始配置沿用来源卡片,并可独立调整。
- 支持上传图片和其他文件,也可以仅提交附件;请求失败时保留草稿与附件,便于重试。
- 每个 Side 独立保留追问草稿和配置,切换 Side 时不会清空输入。
- 附件临时文件在 Side 多轮追问期间保持可用,在停止、关闭 Side、离开页面或运行时退出时清理。
- 校验临时会话归属及可用状态,阻止跨卡片续跑、继续已关闭的 Side,以及同一 Side 同时执行多个回合。
- 每轮执行显式传递模型和快速模式对应的服务等级,使新建与后续回合正确应用所选配置。
- Side 继续以只读权限运行,不修改来源卡片的运行配置。
事件浏览与输入体验
- Side 与卡片详情复用事件自动滚动逻辑:位于底部时跟随新事件,向上浏览历史时保留当前位置。
- 打开 Side 对话框或切换 Side 时滚动至最新事件。
- 为 Side 输入区域增加高度约束和内部滚动,改善长提示词及配置控件的布局。
文件下载与媒体预览
- 为问题附件和会话产物事件的完整预览补齐下载按钮,批注工具栏内也可直接下载。
- 文件下载改由浏览器原生下载流程处理,无需先将整个文件读取为前端 Blob;统一覆盖附件、临时文件及工作区文件下载。
- 通过鉴权接口获取短期下载凭据,凭据绑定具体资源及查询参数,并对携带凭据的响应设置禁止缓存和禁止发送来源信息的策略。
- 修复图片首次打开时的尺寸与布局问题,使图片及视频适应实际预览容器。
- 修复移动端及独立预览页的高度、滚动和内容溢出问题;缩略图和悬浮预览关闭批注控件。
- 修正图片平移边界,避免缩放和拖动手势拦截批注工具栏操作。
卡片关闭与工作树保护
- 手动关闭卡片前检查工作树是否包含未提交变更,包括已暂存、未暂存及未跟踪文件。
- 存在变更时提示关闭会清理工作树并丢弃修改,用户确认后才继续;取消时保留卡片及工作树。
- 首页、聊天卡片详情和终端卡片统一使用关闭确认流程;工作树干净、已清理或不存在时无需额外确认。
- 检查工作树失败时返回错误并阻止关闭,避免跳过检查直接清理。
- GraphQL
CloseSessionInput新增可选字段confirmWorktreeClose;需要确认时返回worktree_close_confirmation_required,客户端应在用户确认后携带该字段重试。
正式项目素材
- 明确区分预览、下载和过程验证使用的临时文件与需要纳入项目的正式素材。
- 临时文件继续保存到
ANYCODE_ARTIFACT_DIR;在用户请求或授权范围内,正式素材可按项目目录约定复制、移动或生成到工作树,已有授权无需重复确认。
English
This release adds model configuration and attachments to ephemeral Side questions, improves event auto-scrolling, file downloads, and mobile image previews, and asks for confirmation before closing card worktrees with uncommitted changes. It also updates asset-handling guidance to allow authorized production assets to be included in projects.
Side questions and execution
- Support model, reasoning-effort, and fast-mode selection for both new Side questions and follow-ups. Initial settings inherit from the source card and can be adjusted independently.
- Accept images and other file attachments, including attachment-only messages. Preserve drafts and attachments when requests fail so they can be retried.
- Keep follow-up drafts and settings separately for each Side without clearing input when switching between them.
- Keep temporary attachments available across Side turns, and clean them up when the Side is stopped or closed, the page is left, or the runtime exits.
- Validate temporary-thread ownership and availability, preventing cross-card continuation, continuation of closed Sides, and concurrent turns within the same Side.
- Explicitly pass the selected model and fast-mode service tier on each turn so configuration applies to both initial and subsequent turns.
- Continue running Side with read-only permissions without changing the source card's execution settings.
Event browsing and input
- Share event auto-scrolling behavior between Side and card details: follow new events while at the bottom and preserve the scroll position while browsing earlier content.
- Scroll to the latest event when opening the Side dialog or switching Sides.
- Constrain Side input height and enable internal scrolling to improve layouts with long prompts and configuration controls.
File downloads and media previews
- Add download buttons to full previews for question attachments and session artifact events, including previews with annotation toolbars.
- Use native browser downloads without first loading the entire file into a frontend Blob, consistently covering attachments, artifacts, and workspace files.
- Obtain short-lived download credentials through authenticated endpoints. Bind credentials to the specific resource and query parameters, and disable caching and referrer transmission for credential-bearing responses.
- Fix initial image sizing and layout so images and videos fit their actual preview containers.
- Fix height, scrolling, and overflow issues on mobile and standalone preview pages. Disable annotation controls in thumbnails and hover previews.
- Correct image panning bounds and prevent zoom and drag gestures from intercepting annotation-toolbar interactions.
Card closing and worktree protection
- Check for uncommitted worktree changes before manually closing a card, including staged, unstaged, and untracked files.
- When changes exist, explain that closing will clean up the worktree and discard those changes, and proceed only after confirmation. Canceling preserves the card and worktree.
- Apply the same confirmation flow to the overview, chat-card details, and terminal cards. Clean, already-cleaned, or missing worktrees require no additional confirmation.
- Return an error and block closing if worktree inspection fails, preventing cleanup from bypassing the check.
- Add the optional
confirmWorktreeClosefield to GraphQLCloseSessionInput. Returnworktree_close_confirmation_requiredwhen confirmation is needed; clients should retry with this field after user confirmation.
Production assets
- Distinguish temporary files used for previews, downloads, and intermediate verification from production assets that belong in the project.
- Continue storing temporary files in
ANYCODE_ARTIFACT_DIR. Within the user's request or authorization, production assets may be copied, moved, or generated into the worktree following project asset-directory conventions, without requesting the same authorization again.
Complete commit list / 完整提交列表
-
6522fc6— Add missing preview download buttons and use native browser downloads with scoped, short-lived credentials.补齐预览下载按钮,并通过绑定资源的短期凭据使用浏览器原生下载。
-
8b11e03— Fix initial image layout, mobile preview sizing, panning bounds, and toolbar gesture handling.修复图片初始布局、移动端预览尺寸、平移边界及工具栏手势处理。
-
2b7ef95— Add Side model configuration and attachments, preserve attachment lifetime across turns, and share event auto-scrolling.为 Side 增加模型配置和附件支持,维护跨回合附件生命周期,并复用事件自动滚动。
-
3bc9f77— Allow authorized production assets to be included in project worktrees while keeping temporary outputs in the artifact directory.允许将已授权的正式素材纳入项目工作树,临时输出继续保存在产物目录。
-
ad5595d— Require confirmation before manually closing cards with uncommitted worktree changes.手动关闭含未提交工作树变更的卡片前请求确认。
v0.3.1
v0.3.1
中文
本版本新增 Codex 自动压缩阈值配置,统一 Codex 并发设置,并优化思维图的 Agent 检索与更新流程。同时改进移动端新建卡片和列表浏览体验,修复历史清理、Codex 限流后重新执行及会话用量记录展示问题。
Codex 配置
- 全局设置的 Codex 页新增自动压缩阈值,可按 Token 数配置上下文自动压缩的触发时机。
- 阈值留空时跟随 Codex 默认值;自定义值必须为正整数,配置会持久化并在服务启动时恢复。
- 自动压缩阈值变更沿用上下文长度配置的恢复机制:重启共享 Codex App Server,并将活动卡片转入恢复队列,使用新配置继续执行。
- 将 Agent 并发数量从通用设置移至 Codex 设置,与上下文长度和自动压缩阈值集中管理;单独修改并发数量会触发队列调度,无需重启 Codex App Server。
- GraphQL 设置接口同步调整:
agentMaxConcurrent从GeneralSettings/UpdateGeneralSettingsInput移至CodexSettings/UpdateCodexSettingsInput;更新 Codex 设置时须提交该字段,并可通过autoCompactTokenLimit设置自动压缩阈值。
思维图检索与更新
- Agent 的
mind_map_search支持AND、OR和括号组合查询,AND优先于OR,例如workflow AND (runner OR retry);相邻查询词必须显式使用操作符连接。 - 将节点 Tag 纳入检索和匹配字段,并作为命中节点的元数据返回,减少独立 Tag 节点和 Tag 关系对结果的干扰。
- Agent 搜索默认返回数量由 20 降至 5;优先返回命中节点详情与代码位置,关联节点仅返回 ID 和标题摘要。
- 为搜索输出增加大小预算,超出预算时省略详情或后续条目,并通过返回数量和截断标记说明结果是否完整。
- 搜索结果直接返回可用于
mind_map_update的tagRevision;mind_map_tags精简为标签名称列表和版本号,减少重复获取标签的开销。 - 调整异步整理指令,引导 Agent 围绕当前会话进行必要的窄范围检索、复用已有节点并集中更新;没有稳定的图变化时跳过更新,失效内容清理也限定在当前会话涉及的节点及关系内。
卡片创建与列表浏览
- 移动端新建卡片改用完整页面布局,移除页面内重复的对话框标题和容器样式,并使用统一页面工具栏。
- 新建卡片页面由页面本身负责滚动,移除移动端提示词输入框的额外高度限制,改善长内容输入和滚动体验。
- 卡片列表默认每页显示 20 条,并同步调整共享分页默认值及列表分页选项,减少翻页操作。
历史记录与工作树清理
- 清理已关闭卡片的历史记录前,主动完成待执行或已到重试时间的工作树清理,避免仅因清理仍处于待处理状态而拒绝历史清理。
- 在卡片锁内重新确认关闭状态和清理结果,确认工作树清理完成后再继续删除会话文件及历史数据。
- 工作树清理失败或暂不满足重试条件时,保留历史记录并返回清理状态及可用的错误代码,便于定位问题。
Codex 限流恢复
- 将 Codex 返回的 HTTP 429 明确识别为限流失败,并保留对应错误信息。
- 限流失败后清除不可继续使用的 Codex 会话关联;再次执行卡片时创建新的 Codex 会话,避免继续恢复原会话。
- 工作流节点重试同样使用新会话;限流退出时跳过基于原会话的问题回答续跑路径,避免重新进入失效会话。
会话用量记录
- 解析 Codex 会话日志时过滤
token_usage_record,避免该类底层用量记录进入会话时间线。 - 继续以
token_count读取用量信息,保留累计 Token、本次用量和上下文长度等统计数据。
English
This release adds configurable Codex auto-compaction thresholds, brings concurrency controls into Codex settings, and improves Agent search and update workflows for mind maps. It also improves mobile card creation and list browsing, and fixes history cleanup, restarting after Codex rate limits, and usage-record handling in session transcripts.
Codex configuration
- Add an auto-compaction threshold to the Codex section of global settings, allowing the context-compaction trigger to be configured by token count.
- Leaving the threshold empty follows the Codex default; custom values must be positive integers. Persist the setting and restore it when the service starts.
- Apply threshold changes through the existing context-window recovery mechanism: restart the shared Codex App Server and queue active cards to continue with the new configuration.
- Move Agent concurrency from general settings to Codex settings alongside the context window and auto-compaction threshold. Changing concurrency alone triggers queue scheduling without restarting the Codex App Server.
- Update the GraphQL settings API accordingly: move
agentMaxConcurrentfromGeneralSettings/UpdateGeneralSettingsInputtoCodexSettings/UpdateCodexSettingsInput. Codex settings updates now require this field and acceptautoCompactTokenLimitfor the compaction threshold.
Mind map search and updates
- Support
AND,OR, and parentheses in Agentmind_map_searchqueries, withANDtaking precedence overOR, for exampleworkflow AND (runner OR retry). Adjacent search terms must be joined by an explicit operator. - Include node tags in search matching and matched-field reporting, and return them as metadata on matching nodes, reducing noise from standalone Tag nodes and Tag relationships.
- Reduce the default Agent search limit from 20 to 5. Prioritize matching-node details and code locations, while returning related nodes as ID-and-title summaries.
- Add an output-size budget for search results. Omit details or later entries when the budget is exceeded, and report result counts and truncation status.
- Return
tagRevisiondirectly from search for use withmind_map_update. Simplifymind_map_tagsto tag names and the revision, reducing redundant tag lookups. - Refine asynchronous maintenance instructions to guide the Agent toward focused searches for the current session, reuse of existing nodes, and consolidated updates. Skip updates when there are no stable graph changes, and limit obsolete-content cleanup to nodes and relationships involved in the current session.
Card creation and list browsing
- Use a full-page layout for mobile card creation, remove duplicate dialog headings and container styling, and adopt the shared page toolbar.
- Let the page own scrolling and remove the additional mobile prompt-input height restriction, improving long-prompt editing and scrolling.
- Show 20 cards per page by default and align shared pagination defaults and list page-size options, reducing pagination.
History and worktree cleanup
- Before purging closed-card history, finish pending worktree cleanup or retries that are due, instead of rejecting history cleanup solely because worktree cleanup is still pending.
- Recheck the card's closed state and cleanup outcome under the card lock, and confirm worktree cleanup has completed before deleting session files and history.
- Preserve history when worktree cleanup fails or is not yet eligible for retry, and return the cleanup status and available error code to help diagnose the issue.
Recovery after Codex rate limits
- Classify HTTP 429 responses from Codex as rate-limit failures and preserve the corresponding error information.
- Clear the unusable Codex session association after a rate-limit failure. Executing the card again creates a new Codex session instead of resuming the previous one.
- Use a fresh session for workflow-node retries as well. On rate-limited exits, skip the question-answer continuation path tied to the previous session to avoid re-entering it.
Session usage records
- Filter
token_usage_recordentries when parsing Codex session logs so these low-level usage records do not appear in the session timeline. - Continue reading usage from
token_count, preserving cumulative tokens, current usage, and context-window statistics.
Complete commit list / 完整提交列表
-
66e9a05— Use a full-page layout and page-owned scrolling for mobile card creation.移动端新建卡片使用完整页面布局和页面滚动,统一工具栏并修正输入区域样式。
-
578fef0— Add persistent Codex auto-compaction settings and move Agent concurrency controls into Codex settings, with corresponding GraphQL API changes.新增持久化 Codex 自动压缩阈值配置,将 Agent 并发控制移入 Codex 设置,并同步调整 GraphQL 接口。
-
934aeb2— Add Boolean Agent mind map queries, tag-aware matching, budgeted results, and focused search/update guidance.优化 Agent 思维图检索,支持布尔查询、Tag 匹配、输出预算及更聚焦的检索更新流程。
-
e99c630— Finish eligible worktree cleanup before purging closed-card history, and set default card-list pagination to 20 items.清理已关闭卡片历史前先完成符合条件的工作树清理,并将卡片列表默认分页调整为每页 20 条。
-
9bc8bc5— Classify Codex HTTP 429 failures and start fresh Codex sessions on subsequent card executions or workflow retries.识别 Codex HTTP 429 限流失败,并在后续卡片执行或工作流重试时使用新的 Codex 会话。
-
d0d89f5— Filter token usage records from transcripts while preserving token-count statistics.过滤会话日志中的底层用量记录,同时保留基于
token_count的用量统计。
v0.3.0
v0.3.0
中文
本版本新增运行中卡片的工作区快照分叉、Side 临时只读提问和 Codex 上下文长度配置,同时改进问题事件回放、媒体预览、会话加载与非 Git 项目的使用体验,并确保推理强度和卡片分支上下文正确传递给 Codex。
运行中卡片分叉
- 运行中的聊天卡片现在可以直接分叉。
- 新卡片会复制分叉时的已修改、已删除和未跟踪工作区文件,保留尚未提交的工作成果。
- 同步复制来源卡片的临时文件,并正确更新新卡片的文件数量。
- 工作区和临时文件采用独立快照,分叉后两张卡片可以继续分别修改。
- 增加仓库归属、文件复制、符号链接、取消操作及初始化失败处理的测试覆盖。
Side 临时提问
- 在卡片追加提示词区域新增 Side 入口,可基于当前 Codex 上下文发起临时问题。
- Side 以只读权限运行,不修改工作区,也不保存为 AnyCode 卡片或时间线记录。
- 支持同时保留多个 Side、实时查看执行事件、继续追问以及停止或关闭单个 Side。
- Side 历史仅保留在当前页面内,离开页面后自动停止仍在运行的 Side。
- Side 输入框复用统一提示词编辑体验,但不提供附件和运行参数配置。
- 修复 Side 对话框、事件列表和输入框在桌面端及移动端的尺寸、滚动和溢出问题。
Codex 配置与执行
- 全局设置新增 Codex 配置页,可显式设置上下文长度。
- 上下文长度留空时继续使用模型默认值;自定义值必须为正整数。
- 修改配置时会安全结束共享 Codex App Server,将活动卡片转入恢复队列并使用新配置继续执行;终端卡片不受影响。
- 修复普通 Codex 回合未应用所选推理强度的问题。
- Codex 开发者指令现在会包含卡片的基础分支和当前工作树分支,减少分支判断错误。
问题事件与会话浏览
questions工具事件现在会读取已持久化的问题请求,并以只读回答表单展示,不再显示原始 JSON 输入和输出。- 支持还原已选选项、自定义答案和未回答状态。
- 扩展后的问题事件继续支持关联文件预览。
- 单次会话事件加载数量由 50 提升至 200,减少长会话中的分页操作。
文件与媒体预览
- 图片和视频会根据实际预览容器调整尺寸,避免超出对话框或页面边界。
- 桌面端和移动端的完整预览均支持缩放和平移。
- 桌面端支持滚轮缩放和鼠标拖动,触屏设备支持双指缩放及拖动。
- 增加指针捕获并禁用浏览器原生媒体拖拽,避免缩放过程中手势丢失。
- 问题附件、会话事件、临时文件面板和独立预览页统一启用完整媒体交互。
非 Git 项目体验
- 会话接口现在明确返回项目是否启用 Git。
- 非 Git 项目不再显示无意义的分支名称、文件变更数量、Diff 按钮和变更页签。
- 首页、卡片列表、详情页、审批界面和分叉提示均已适配非 Git 项目。
- 当列表中没有 Git 项目时,自动隐藏分支和 Diff 列。
English
This release adds workspace-snapshot forks for running cards, ephemeral read-only Side questions, and configurable Codex context windows. It also improves question-event replay, media previews, session loading, and non-Git project behavior, while ensuring reasoning effort and card branch context are correctly passed to Codex.
Running card forks
- Running chat cards can now be forked directly.
- New cards copy modified, deleted, and untracked workspace files at fork time, preserving uncommitted work.
- Session artifacts are copied into the new card and its artifact count is updated.
- Workspaces and artifacts are captured as independent snapshots so both cards can continue changing separately.
- Add coverage for repository ownership, file copying, symbolic links, cancellation, and initialization failures.
Ephemeral Side questions
- Add a Side entry beside the append-prompt actions for asking temporary questions using the current Codex context.
- Side runs use read-only permissions and are not persisted as AnyCode cards or timeline records.
- Support multiple concurrent Side threads, live execution events, follow-up questions, and individual stop or close actions.
- Side history remains in current-page memory only, with active runs stopped when the page is left.
- Reuse the standard prompt-composer experience without attachments or runtime configuration.
- Fix Side dialog, event-list, and composer sizing, scrolling, and overflow on desktop and mobile.
Codex configuration and execution
- Add a Codex section to global settings with an explicit context-window option.
- Leaving the value empty follows the model default; custom values must be positive integers.
- Saving a new value safely restarts the shared Codex App Server and queues active cards for recovery with the new configuration, without affecting terminal cards.
- Fix regular Codex turns not applying the selected reasoning effort.
- Include the card’s base branch and current worktree branch in Codex developer instructions to reduce branch-context mistakes.
Question events and session browsing
- Render
questionstool events from their persisted question requests as read-only answered forms instead of raw JSON input and output. - Restore selected options, custom answers, and unanswered states.
- Keep related file previews available inside expanded question events.
- Increase session-event page size from 50 to 200, reducing pagination in long conversations.
File and media previews
- Fit images and videos to their actual preview containers so they no longer overflow dialogs or pages.
- Enable zooming and panning in full-size previews on both desktop and mobile.
- Add mouse-wheel zoom and mouse dragging on desktop, together with pinch zoom and touch dragging.
- Capture pointers and disable native browser media dragging to prevent gestures from being interrupted.
- Apply the complete media interaction consistently to question attachments, session events, artifact panels, and standalone preview pages.
Non-Git project experience
- Expose the project’s authoritative Git capability through session APIs.
- Hide meaningless branch names, change counts, Diff actions, and change tabs for non-Git projects.
- Apply the behavior across the overview, session list, detail page, approval interface, and fork guidance.
- Automatically hide branch and Diff columns when a session list contains no Git projects.
Complete commit list / 完整提交列表
-
11407c4— Increase the session-event page size from 50 to 200.
将会话事件单页加载数量由 50 提升至 200。 -
9d9000d— Support running-card forks with workspace and artifact snapshots.
支持运行中卡片分叉,并快照复制工作区变更和临时文件。 -
26b3960— Add ephemeral read-only Side questions with live events and follow-ups.
新增支持实时事件和继续追问的只读临时 Side 提问。 -
2884ccf— Constrain Side dialogs and composers across desktop and mobile layouts.
修复 Side 对话框和输入框在桌面端及移动端的尺寸与溢出问题。 -
3dd7690— Fit media previews and add mouse, wheel, touch, and drag interactions.
优化媒体预览尺寸,并增加鼠标、滚轮、触屏和拖动交互。 -
ea77c13— Add persistent Codex context-window settings and safe runtime recovery.
新增持久化 Codex 上下文长度配置及安全运行时恢复。 -
9e5d521— Render question tool events as persisted read-only answer forms.
将问题工具事件渲染为基于持久化数据的只读回答表单。 -
41250c2— Apply the configured reasoning effort to regular Codex turns.
将配置的推理强度正确应用到普通 Codex 回合。 -
4fcea60— Include card base and worktree branches in developer instructions.
在开发者指令中加入卡片基础分支和工作树分支。 -
25ad2bd— Hide Git-only information and actions for non-Git projects.
为非 Git 项目隐藏仅适用于 Git 的信息和操作。
v0.2.7
v0.2.7
中文
本版本增强了提示词批注的持久化与回放能力,并修复统计图表、会话事件、文件预览和终端的多项界面问题。
提示词批注
- 将图片框选、文本选区、批注内容及原文件引用作为结构化数据持久化。
- 支持从追加提示历史和编辑页面重新打开原文件,并以编号标记回放批注位置。
- 批注内容可在 Codex 输入中正确恢复,排队或会话重建后不会丢失。
- 新批注不再生成和上传 Markdown 附件;旧版 Markdown 批注继续以只读方式兼容。
- 增加批注数据校验及应用层、存储层和前端测试覆盖。
会话事件
- 展开命令、工具调用、思考过程、状态、文件变更及其他事件后,标题会吸附在事件列表顶部,方便长内容浏览和折叠。
- 文件变更事件支持两级吸附标题,并对过长路径进行单行省略,避免标题相互遮挡。
统计图表
- 增加完整绘图区指针命中层,修复桌面端鼠标无法稳定检查数据点的问题。
- 根据可视容器宽度动态调整 SVG 图表宽度。
- 使用
ResizeObserver同步布局变化,使指针位置、绘图区和首尾数据点保持准确对齐。
文件预览与终端
- 文本文件预览改为顶部对齐,确保长文件可以从首行开始完整浏览。
- 将终端间距移动到 xterm 根元素,使 FitAddon 正确计算可用尺寸,避免底行或右侧内容被裁切。
English
This release improves prompt annotation persistence and replay, together with several usability fixes for statistics charts, session events, file previews, and terminals.
Prompt annotations
- Persist image selections, text ranges, annotation content, and source-file references as structured data.
- Allow annotations to reopen their original session file or diff and replay numbered markers at their saved positions.
- Restore annotation content correctly in Codex input after queuing or session reconstruction.
- Stop generating Markdown attachments for new annotations while retaining read-only compatibility with legacy Markdown annotations.
- Add validation and test coverage across the application, storage, and frontend layers.
Session events
- Keep expanded command, tool, reasoning, status, file-change, and other event headers visible while scrolling through long event content.
- Add coordinated two-level sticky headers for file-change events and truncate long paths to prevent overlapping headers.
Statistics charts
- Add a full plot-area hit target for reliable desktop pointer inspection.
- Dynamically size SVG charts to the visible viewport.
- Track layout changes with
ResizeObserver, keeping pointer coordinates, plot bounds, and edge data points correctly aligned.
File previews and terminals
- Keep text previews aligned to the top so long files remain accessible from the first line.
- Move terminal padding to the xterm root element so FitAddon calculates the available dimensions correctly and terminal content is no longer clipped.
Complete commit list / 完整提交列表
-
2ea592d— Fix desktop pointer tracking across the statistics chart plot area.
修复统计图表桌面端绘图区的鼠标指针追踪。 -
052c6d6— Keep expanded session event headers visible while scrolling.
展开会话事件后保持标题吸附可见。 -
e147629— Persist structured prompt annotations and replay them on their original files or diffs.
结构化持久化提示词批注,并在原文件或 Diff 中回放批注位置。 -
6749014— Align chart pointer hit areas with responsive viewport dimensions.
根据响应式可视区域修正图表指针命中范围。 -
2407ea2— Keep text file previews top-aligned.
保持文本文件预览顶部对齐。 -
d00fe3f— Keep terminal content fully visible by correcting FitAddon padding calculations.
修正 FitAddon 间距计算,避免终端内容被裁切。