Commit Graph

1647 Commits

Author SHA1 Message Date
肖应宇 b3fc806076 feat(skills): 更新图像/视频生成技能资源与脚本 2026-04-08 13:11:16 +08:00
肖应宇 7f6b410d20 feat(frontend): 将技能消息切换为 selectedSkills 载荷 2026-04-08 13:09:47 +08:00
肖应宇 3f43f8c0fc refactor(frontend): 将会话状态标识从 show_reuse_welcome 重命名为 is_chatting 2026-04-08 11:44:42 +08:00
肖应宇 16e45e47da fix: 调整artifact iframe img间隙 2026-04-08 10:44:08 +08:00
肖应宇 20164c27dc refactor(frontend): 将复用欢迎态路由参数统一为 show_reuse_welcome 2026-04-08 10:44:08 +08:00
肖应宇 239b337a66 fix: 修复开发模式的docker启动选项,修改的docker路由 2026-04-08 09:58:10 +08:00
肖应宇 bf8f36756b feat: 删除不需要的TodoList组件 2026-04-07 16:37:02 +08:00
肖应宇 eceeecf4b8 feat: 精简showWelcomeStyle和isNewThread断言。实现在/[thread_id]?xclaw_used=true时,显示欢迎页 2026-04-07 16:35:37 +08:00
肖应宇 73b4a6c713 fix: 收紧threadId的类型为string,删除无用isNewRoute变量,合并状态判断showInputBox至showWelcomeStyle 2026-04-07 16:08:42 +08:00
肖应宇 ec80730cd8 feat(03): align workspace visual layer with legacy baseline 2026-04-07 14:34:22 +08:00
肖应宇 00e0d6cd87 feat(05): harden e2e suite with explainable skip strategy 2026-04-07 14:34:09 +08:00
肖应宇 a69ecdbd9b feat(04): stabilize iframe messaging and markdown export flows 2026-04-07 14:34:01 +08:00
肖应宇 464034650c docs(milestone): archive v1.0 roadmap requirements and state 2026-04-07 14:32:25 +08:00
肖应宇 de97b869da docs(05): add context plan summary and UAT artifacts 2026-04-07 14:32:05 +08:00
肖应宇 ff5b2fdd8d docs(04): add context plan summary and UAT artifacts 2026-04-07 14:31:44 +08:00
肖应宇 96d088b62a docs(03): record gap-closure plan summary and updated UAT 2026-04-07 14:31:19 +08:00
肖应宇 de80ce649f docs(01): sync research notes and remove stale validation draft 2026-04-07 14:30:53 +08:00
肖应宇 60703f66db test(03): complete UAT - 1 passed, 3 issues 2026-04-07 13:48:12 +08:00
肖应宇 b5b35e4436 fix(frontend): align skills bootstrap contract to b412 content_ids shape 2026-04-07 13:35:46 +08:00
肖应宇 021f6e3b3c feat(frontend): align skills bootstrap flow to titan contract 2026-04-07 13:29:13 +08:00
肖应宇 c8536c7da3 docs(03): capture context plan and execution summary 2026-04-07 13:17:39 +08:00
肖应宇 7f73c3133d test(02): complete UAT - 4 passed, 0 issues 2026-04-07 13:05:39 +08:00
肖应宇 a1bcc1cf88 docs(01): finalize phase planning artifacts in zh-CN 2026-04-07 12:58:44 +08:00
肖应宇 7da5afba5f docs(02-01): complete phase execution metadata
- 新增 02-SUMMARY 并记录验证偏差

- 更新 ROADMAP 与 REQUIREMENTS 进度
2026-04-07 12:55:16 +08:00
肖应宇 0a58c62c79 test(02-01): 增加线程与 skills 合同回归测试
- 新增 node:test 覆盖线程路由与 bootstrap 合同归一

- 更新 e2e 路由辅助与用例,移除 isnew 依赖
2026-04-07 12:54:01 +08:00
肖应宇 5edd0cd9ab feat(02-01): 统一 skills bootstrap 合同到 content_ids
- 新增 content_id 到 content_ids 最小兼容归一层

- 调用侧统一发送 content_ids,移除双主合同路径
2026-04-07 12:53:54 +08:00
肖应宇 28ab2ac39f feat(02-01): 移除 isnew 路由逻辑并收敛线程单路径
- 新会话仅由 /workspace/chats/new 路由控制

- 删除 isnew 参数分支并同步 iframe 跳转逻辑
2026-04-07 12:53:49 +08:00
肖应宇 d238e40bcd docs(02): create phase plan
- 落实 D-01/D-02/D-03 的执行任务

- 绑定 MERGE-02, LOGIC-03, LOGIC-04 验证路径
2026-04-07 12:41:15 +08:00
肖应宇 58e3f11e82 docs(02): capture phase context 2026-04-07 12:38:48 +08:00
肖应宇 0a9e8d1633 docs(01-01): 完成 phase 01 执行与验证归档
- 新增 SUMMARY 与 VERIFICATION

- 更新 STATE 与 REQUIREMENTS 进度
2026-04-07 12:32:56 +08:00
肖应宇 44b6402324 docs(01-01): 建立 titan overlap 决策矩阵
- 输出 keep/replace/hybrid 决策表

- 绑定 L0/L1/L2 与 Phase 2/3 输入
2026-04-07 12:30:43 +08:00
肖应宇 282356e390 docs(01-01): 产出冲突清单与分级口径
- 新增 conflict-inventory.csv 机器可消费清单

- 新增 conflict-inventory.md 审计说明
2026-04-07 12:30:32 +08:00
肖应宇 a9e5b1119a docs(01-01): 固化 merge 与 titan 审计证据链
- 增加可复现 Git 命令链

- 记录 merge 与 Titan overlap 证据摘要
2026-04-07 12:30:24 +08:00
肖应宇 31bb8db442 docs(01): research phase domain 2026-04-07 12:05:50 +08:00
肖应宇 67e7304748 docs: initialize project planning artifacts 2026-04-07 11:54:45 +08:00
肖应宇 156d80fa4f docs(codebase): generate codebase map 2026-04-07 11:37:10 +08:00
Titan b6189a9d1c feat(logging): enhance logging configuration to support environment variable override for log level 2026-04-07 10:04:17 +08:00
Titan db0ea1ab18 feat(chats): implement dynamic styling based on xclaw_used parameter 2026-04-05 23:39:44 +08:00
Titan 45b95c4538 feat(skills): support batch skill bootstrap via content_ids; clear parent dir once before per-skill write 2026-04-05 18:37:55 +08:00
Titan 2b0581db71 fix: centralize UUID generation and validate query thread_id for skillBootstrap; ensure single execution and correct thread dir 2026-04-05 18:37:55 +08:00
Titan e517ee7938 feat(skills): include uploads directory in skill scanning 2026-04-05 18:20:03 +08:00
Titan 867bb6de46 feat(skills): add remote YAML bootstrap and materialization APIs 2026-04-05 18:16:05 +08:00
Chris Z 1ed736dbea fix(channels): normalize slack allowed user ids (#1802)
* fix(channels): normalize slack allowed user ids

* style(channels): apply backend formatter

---------

Co-authored-by: haimingZZ <15558128926@qq.com>
Co-authored-by: suyua9 <1521777066@qq.com>
2026-04-05 18:04:21 +08:00
0d05c55565 fix: avoid command palette hydration mismatch on macOS (#1563)
# Conflicts:
#	frontend/src/components/workspace/command-palette.tsx

Co-authored-by: luoxiao6645 <luoxiao6645@gmail.com>
Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
2026-04-05 16:35:33 +08:00
thefoolgy d157f9568a fix(memory): case-insensitive fact deduplication and positive reinforcement detection (#1804)
* fix(memory): case-insensitive fact deduplication and positive reinforcement detection

Two fixes to the memory system:

1. _fact_content_key() now lowercases content before comparison, preventing
   semantically duplicate facts like "User prefers Python" and "user prefers
   python" from being stored separately.

2. Adds detect_reinforcement() to MemoryMiddleware (closes #1719), mirroring
   detect_correction(). When users signal approval ("yes exactly", "perfect",
   "完全正确", etc.), the memory updater now receives reinforcement_detected=True
   and injects a hint prompting the LLM to record confirmed preferences and
   behaviors with high confidence.

   Changes across the full signal path:
   - memory_middleware.py: _REINFORCEMENT_PATTERNS + detect_reinforcement()
   - queue.py: reinforcement_detected field in ConversationContext and add()
   - updater.py: reinforcement_detected param in update_memory() and
     update_memory_from_conversation(); builds reinforcement_hint alongside
     the existing correction_hint

Tests: 11 new tests covering deduplication, hint injection, and signal
detection (Chinese + English patterns, window boundary, conflict with correction).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(memory): address Copilot review comments on reinforcement detection

- Tighten _REINFORCEMENT_PATTERNS: remove 很好, require punctuation/end-of-string boundaries on remaining patterns, split this-is-good into stricter variants
- Suppress reinforcement_detected when correction_detected is true to avoid mixed-signal noise
- Use casefold() instead of lower() for Unicode-aware fact deduplication
- Add missing test coverage for reinforcement_detected OR merge and forwarding in queue

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 16:23:00 +08:00
Evan Wu b36d57d356 fix: preserve virtual path separator style (#1828)
* fix: preserve virtual path separator style

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-05 15:52:22 +08:00
Markus Corazzione 836893fb0a chroe(config):Increase subagent max-turn limits (#1852) 2026-04-05 15:41:00 +08:00
Echo-Nie 4142663252 docs: fix some broken links (#1864)
* Rename BACKEND_TODO.md to TODO.md in documentation

* Update MCP Setup Guide link in CONTRIBUTING.md

* Update reference to config.yaml path in documentation

* Fix config file path in TITLE_GENERATION_IMPLEMENTATION.md

Updated the path to the example config file in the documentation.
2026-04-05 15:35:42 +08:00
yangzheli e1ebb9d434 fix(docker): use multi-stage build to remove build-essential from runtime image (#1846)
* fix(docker): use multi-stage build to remove build-essential from runtime image

The build-essential toolchain (~200 MB) was only needed for compiling
native Python extensions during `uv sync` but remained in the final
image, increasing size and attack surface. Split the Dockerfile into
a builder stage (with build-essential) and a clean runtime stage that
copies only the compiled artifacts, Node.js, Docker CLI, and uv.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(docker): add dev stage and pin docker:cli per review feedback

Address Copilot review comments:
- Add a `dev` build stage (FROM builder) that retains build-essential
  so startup-time `uv sync` in dev containers can compile from source
- Update docker-compose-dev.yaml to use `target: dev` for gateway and
  langgraph services
- Keep the clean runtime stage (no build-essential) as the default
  final stage for production builds

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 15:30:34 +08:00
SHIYAO ZHANG b9e6286f95 fix(sandbox): guard against None runtime.context in sandbox tool helpers (#1853)
sandbox_from_runtime() and ensure_sandbox_initialized() write
sandbox_id into runtime.context after acquiring a sandbox. When
lazy_init=True and no context is supplied to the graph run,
runtime.context is None (the LangGraph default), causing a TypeError
on the assignment.

Add `if runtime.context is not None` guards at all three write sites.
Reads already had equivalent guards (e.g. `runtime.context.get(...) if
runtime.context else None`); this brings writes into line.
2026-04-05 10:58:38 +08:00