WeiCHEN and Cursor
636eb0ccf1
fix(web): align workbench user ids with auth seed
...
Unify MOCK_USERS with backend auth (admin id=1), merge session identity on login, and migrate demo seeds/tests to id 2/3/4 for 张工/李/王.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:22 +00:00
WeiCHEN and Cursor
a8c8cba447
fix(web): keep draft when send preflight fails
...
Return accepted/error from handleSendMessage, clear InputArea only on success, and surface thinking/streaming feedback.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:22 +00:00
WeiCHEN and Cursor
f9c4f9b01b
fix(web): add secure-context-safe clientTurnId helper
...
Provide RFC 4122 v4 fallback via getRandomValues for LAN HTTP pages where randomUUID is unavailable.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:22 +00:00
WeiCHEN
eea28f0be4
feat(task): inject uploaded documents into task materials and enable LAN host access
...
- backend: add Materials field to TaskRunRequestDTO and forward to ExecuteTask
- backend: add TestTaskStream_MaterialsInjection test case in taskstream_test.go
- web: serialize materials in buildTaskRequest and add unit test
- web: improve isSameMessage identity comparison in messageIdentity.ts
- web: configure host: '0.0.0.0' in vite.config.ts for LAN collaboration access
2026-09-13 02:50:22 +00:00
WeiCHEN and Cursor
cc2aa33b10
docs(test): chat turn idempotency automated test report
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:22 +00:00
WeiCHEN and Cursor
7ab5041c59
refactor(web): stop persisting full message list to localStorage
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:22 +00:00
WeiCHEN and Cursor
d17fae0a5d
feat(web): isolate stream runtime by session and turn
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:22 +00:00
WeiCHEN and Cursor
f5ead1dcd5
feat(web): send stable client_turn_id and resume turns after disconnect
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:22 +00:00
WeiCHEN and Cursor
a1cb4aade0
feat(api): gate chat stream on chat_turns with session serial execution
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:22 +00:00
WeiCHEN and Cursor
c887bc0480
feat(db): add chat_turns idempotency table
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:21 +00:00
WeiCHEN and Cursor
62ab734021
fix(web): guard chat window fetch races on session switch
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:21 +00:00
WeiCHEN and Cursor
7c830146f5
test(web): cover real temp vs server message identity
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:21 +00:00
WeiCHEN and Cursor
e1a9b302ba
fix(web): merge live and history by serverId and clientTurnId
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:21 +00:00
WeiCHEN and Cursor
c4ef72506f
feat(api): return user_message_id in SSE turn_ack and done
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:21 +00:00
WeiCHEN and Cursor
9f7500bb72
fix(web): disable chat stream auto-retry without idempotency
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:21 +00:00
WeiCHEN and Cursor
b69cb617a0
docs(spec): chat turn idempotency and session isolation
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:21 +00:00
weichen
eb350d4367
merge: feature/web-chat-ux — SSE chat longtask history workflow and seed data
2026-09-13 02:50:21 +00:00
WeiCHEN and Cursor
93ae180159
chore(db): add ten-project chat seed migration and generator script
...
Provide SQL migration and Python helper to import review demo sessions
and seed messages from tenProjectsSeed.json into Postgres.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:21 +00:00
WeiCHEN and Cursor
cda534a75d
feat(web): improve chat attachments, unread marks, and session UX
...
Support richer attachment payloads in input area, local read-id cache for
unread badges, and expand private-shared and chronology test coverage.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:21 +00:00
WeiCHEN and Cursor
6f4e8c0933
feat(web): align project templates with official reference skeletons
...
Replace ad-hoc markdown stubs with reference-system template baselines,
free-text device type input, and add template quality regression tests.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:21 +00:00
WeiCHEN and Cursor
a9fe69ac16
fix(workflow): reconcile version conflicts in review mode and UI retry
...
Auto-adopt current workflow selection version in review/demo backend
paths, and retry frontend workflow switch after refreshing project version.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:21 +00:00
WeiCHEN and Cursor
0d395f2bf2
fix(ctxmgr): normalize dismissed_unread_ids for Postgres array insert
...
Ensure nil dismissed ID slices serialize as empty bigint arrays and
preallocate compressDismissed output to avoid NULL write failures.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:21 +00:00
WeiCHEN
222b0c2dd6
feat(doc-preview): 上传文档多格式在线预览 + IndexedDB 持久化恢复
...
## 新增功能
- 支持用户上传的 Word(.docx)、PDF、Excel(.xlsx/.csv)、PPT(.pptx)、
图像(png/jpg/svg/webp等)、纯文本/代码文件的在线高保真预览
- 预览与受控工作流文档严格隔离:上传文档走 FilePreviewPanel,
工作流/对话入库文档继续走 BlockRenderer,互不干扰
## 核心 Bug 修复
- 修复页面刷新后上传文件无法预览/下载的根本问题
- 根因:File 对象无法 JSON 序列化,刷新后内存引用丢失
- 方案:新增 fileStore.ts,使用 IndexedDB 持久化文件二进制内容
- App 启动时自动 restoreFileRawToDeliverables() 从 IndexedDB 恢复 fileRaw
- 上传时 saveFile() 同步写入 IndexedDB(fire-and-forget)
## 下载按钮修复
- 优先从内存 File 对象动态创建 blob URL,避免依赖已 revoke 的旧 URL
- 文件内容不可用时按钮禁用并显示 tooltip 说明
## 存储层改进
- saveDeliverables() 序列化前剔除 fileRaw(不可持久化)和 blob: URL
避免 localStorage 保存损坏的空对象
## 新增文件
- web/src/data/fileStore.ts — IndexedDB 封装(saveFile/getFile/restore)
- web/src/components/doc/preview/FilePreviewPanel.tsx — 预览面板主组件
- web/src/components/doc/preview/renderers/DocxViewer.tsx — Word 预览
- web/src/components/doc/preview/renderers/PdfViewer.tsx — PDF 预览
- web/src/components/doc/preview/renderers/ExcelViewer.tsx — Excel 预览
- web/src/components/doc/preview/renderers/PptViewer.tsx — PPT 预览
- web/src/components/doc/preview/renderers/ImageViewer.tsx — 图像预览
- web/src/components/doc/preview/renderers/TextViewer.tsx — 文本预览
- web/src/tests/file-preview.test.ts — 预览功能单元测试
2026-09-13 02:50:21 +00:00
WeiCHEN and Cursor
24478ec383
feat(intent): Phase 5 V2 shadow gray flags and IntentPlan execution
...
Add env-based feature flags (intent_v2_shadow/decision, multi_intent,
workflow_intents), V1/V2 shadow diff reporting, expectation_plus_new plan
building, ranked-frame L2 conflict gate, and coordinator sequential query
plan execution with confirm-step deferral.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:21 +00:00
WeiCHEN and Cursor
9cb129d3e8
feat(intent): Phase 4 run control, subtypes, and limited IntentPlan
...
Add RUN_STATUS_QUERY/RUN_RESUME/RUN_RESTART with matcher and coordinator
handlers; write QUERY_PROGRESS/SUPPLEMENT_INFO subtypes to V2 frame; support
safe query+query multi-intent plans via IntentPlan dual-write.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:21 +00:00
WeiCHEN and Cursor
dda6a06e4a
feat(intent): Phase 3 workflow/help intents and coordinator handlers
...
Add SWITCH/TRIGGER/QUERY workflow, doc status, help and unsupported intents
with ActionSpec registry entries, NL matchers, L2 handlers with creator-only
switch gate, router routes, and capability-aware AvailableActions.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:21 +00:00
WeiCHEN and Cursor
3db56b4166
feat(intent): add V2 frame, ActionSpec registry, and legacy dual-write
...
Introduce IntentFrameV2 with goal/object/relation/evidence, register all 21
legacy intents in ActionSpec registry, and dual-write intent_frame_v2 alongside
TopIntent without changing Router/Coordinator routing.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:21 +00:00
WeiCHEN and Cursor
868238137c
fix(intent): Phase 0+1 P0 safety gates for recognition and coordination
...
Add golden-v1 hard-negative suite, shadow observability fields, query/command
negation gates for high-risk writes, AllowAffirmative enforcement, candidate
conflict clarification, and coordinator clarify-before-ambiguous ordering.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:21 +00:00
WeiCHEN
60d4df4319
fix(chat): resolve intent recognition, workflow auth, and message ordering
2026-09-13 02:50:21 +00:00
WeiCHEN
917740f26d
feat(project): implement modal-based project creation, creator-led member assignment, and exited-member read-only retention
2026-09-13 02:50:21 +00:00
WeiCHEN
eda2a2b32b
refactor(dialogue): implement task dispatch notifications and consecutive assistant messages with confirmation cards
2026-09-13 02:50:21 +00:00
WeiCHEN
0df8b065c2
refactor(dialogue): naturalize multi-role conversations, close chat sessions with assistant response, and set URS to project shared
2026-09-13 02:50:21 +00:00
WeiCHEN
76e538a47f
fix(doc): resolve URS viewing and private-to-shared workflow in document pane for 10 review projects
2026-09-13 02:50:21 +00:00
WeiCHEN
f48181ee0c
feat(chat): add URS requirement document upload dialogues with attachments and phase events for all 10 projects
2026-09-13 02:50:21 +00:00
WeiCHEN
27fe03a3e3
feat(chat): mount interactive review, approval, and verification confirmation cards in multi-role dialogues
2026-09-13 02:50:21 +00:00
WeiCHEN
2e3e43be8f
fix(frontend): align MockDocumentMeta markdown property and guard nullish input in markdownToBlockAST
2026-09-13 02:50:21 +00:00
WeiCHEN
a8f74244f5
feat(review): seed 10 real medical device projects with dual workflows, multi-role dialogues and fix account-switch chat isolation
2026-09-13 02:50:21 +00:00
WeiCHEN
42e3ece2c6
fix(workflow): fix 405/404/403 errors on workflow switcher by updating CORS, 5201 demo permissions and server restart
2026-09-13 02:50:21 +00:00
WeiCHEN
408bef6b8a
chore(release): Phase 7 全链路验收报告、测试修复与发布基线归档
2026-09-13 02:50:21 +00:00
WeiCHEN
716aa6f49a
feat(workflow): Phase 6 前端项目多工作流切换器、前置依赖横幅与文档血缘失效提醒
2026-09-13 02:50:21 +00:00
WeiCHEN
abeab90388
feat(workflow): Phase 5 智能测试经理工作流、前置强依赖校验与文档血缘级联失效
2026-09-13 02:50:21 +00:00
WeiCHEN
f994c45d67
feat(workflow): Phase 4 智能产品经理工作流、系统需求规格书与质量门禁
2026-09-13 02:50:21 +00:00
WeiCHEN
c0d6ef7d80
feat(workflow): Phase 3 Coordinator 上下文、动作路由与工作流运行 API 集成
2026-09-13 02:50:21 +00:00
WeiCHEN
f87a6ee28d
feat(workflow): Phase 1 & 2 数据库迁移、项目创建人权威化与多工作流控制面
2026-09-13 02:50:21 +00:00
WeiCHEN
adfb45946f
docs(workflow): Phase 0 基线确认、架构决策记录(ADR)与契约冻结
2026-09-13 02:50:21 +00:00
WeiCHEN
1fc7d0d01f
feat(export): 实现单次智能体回复导出、私密文档保存与隐私防泄露全套闭环 (Phase 0 - Phase 2)
...
- Phase 0: 实现服务端回复导出策略矩阵引擎 (replyexport.EvaluatePolicy)、数据库迁移 (2026-09-11-message-export-policy.sql)、SSE done 事件挂载与能力探测 API
- Phase 1: 构建前端 ReplyDocumentIR 语法树解析与渲染管道,支持 Markdown / DOCX 文件下载及带格式富文本剪贴板复制
- Phase 2: 实现私密自由文档 (freeform_documents) 领域服务、PostgreSQL 乐观锁版本管理、ACL 隐私隔离、一键共享与右侧栏编辑联动
- 专项修复:
1. 修复后台 API 路由注册并加入双向拉取同步,确保私密保存实时进入我的私密列表
2. 实现轻量回复专属 DOCX 生成与静默下载逻辑 (downloadDocxReply)
3. 将 LaTeX 公式转为标准 MathML 矢量标记,支持粘贴到 Microsoft Word / WPS 自动识别为原生公式
2026-09-13 02:50:21 +00:00
weichen
eedf2d17e0
merge: feature/rbac-auth — dynamic RBAC and auth settings
2026-09-13 02:50:20 +00:00
WeiCHEN
3885ef5da2
test(chat): add session turn_intent metadata assertion and chip category navigation tests
2026-09-13 02:50:20 +00:00
weichen
ade4723a3a
merge: feature/web-features — intent funnel export and templates
2026-09-13 02:50:20 +00:00
WeiCHEN and Cursor
aef1d79060
docs(test): archive auth and dual settings test report
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:20 +00:00