Skip to content

fix(app): #479 projectless URL 打开项目线程整页 Not found——路由层按线程真项目规范化为项目形 - #16

Closed
Samuka007 wants to merge 1 commit into
lane/486-bug-glm-5-3-flash-composer-glm-5-3from
lane/479-bug-projectless-url-not-found-476-a
Closed

Samuka007 wants to merge 1 commit into
lane/486-bug-glm-5-3-flash-composer-glm-5-3from
lane/479-bug-projectless-url-not-found-476-a

Conversation

@Samuka007

Copy link
Copy Markdown
Owner

症状(cap 仓 get-bb#479 实测复现)

项目所属线程用 projectless 形 URL /threads/:tid 打开 → 整页 "Not found"(实测 thr_e4xhmu7ywb,属 proj_43zec4qsv9;侧栏链接恒为项目形)。get-bb#476 走查首判即被此伪影污染。

根因

useRouteState 把 /threads/:tid 映射为 proj_personal,而 ThreadDetailView 的 thread.projectId !== projectId 守卫(apps/app/src/views/thread-detail/ThreadDetailView.tsx:2420)对真项目线程必然不匹配 → 裸 "Not found"。上游 get-bb/bb 同码未修。

修复(裁决:重定向,非 404 文案)

SplitWorkspaceRoute 路由层规范化:projectless 形 URL + 线程缓存行真项目 ≠ personal → <Navigate replace> 至 /projects/:pid/threads/:tid,保留 ?message= / #event- 深链。

  • 缓存行只读(enabled:false),页面自身 bootstrap 负责取数 → 零额外 GET;缓存写入即触发本观察者重渲染,redirect 先于任何 "Not found" 帧。
  • personal 线程保持 projectless 形、项目形 URL 不转 → 无环。
  • 路由层覆盖单页/分屏/紧凑全部渲染面。

理由:线程真实存在、规范 URL 可导出,裸 "Not found" 是伪影;get-bb#479 验收两选项择「重定向到项目形」(可覆盖)。

测试

  • 新增 SplitWorkspaceRoute.projectless-thread.test.tsx 4 例:标准项目线程重定向(保 query/hash)、行晚到后重定向、personal 线程保持、项目形 URL 不动。
  • 既有 SplitWorkspaceRoute.test.tsx 补 QueryClientProvider(组件新增 react-query 读取)。

本地:@bb/app 全量 352 文件 / 2791 例绿;typecheck / lint(0 error)/ vite build 绿。

AGENT GENERATED: by zhipu-coding-plan/glm-5.3:max

…为项目形

项目所属线程经 /threads/:tid(projectless 形)打开时 useRouteState 把 route
projectId 映射为 proj_personal,而 ThreadDetailView 以 `thread.projectId !==
projectId` 守卫(views/thread-detail/ThreadDetailView.tsx:2420)渲染整页
"Not found"——线程真实存在,裸 404 是伪影(cap 仓 get-bb#476 走查伪影源;上游 bb 同码未修)。

SplitWorkspaceRoute 在路由层规范化:projectless 形 URL + 线程缓存行真项目非
personal → <Navigate replace> 至 /projects/:pid/threads/:tid,保留
?message=/#event- 深链;缓存行只读(enabled:false),页面自身 bootstrap 负责
取数,零额外 GET;personal 线程与项目形 URL 不动(防环)。

测试:SplitWorkspaceRoute.projectless-thread.test.tsx 4 例(标准项目线程重定向
保 query/hash、行晚到后重定向、personal 线程保持、项目形 URL 不转);既有
SplitWorkspaceRoute.test.tsx 补 QueryClientProvider。@bb/app 全量 352 文件 /
2791 例绿,typecheck / lint / vite build 绿。
Samuka007 added a commit to Samuka007/cloudflare-agent-project that referenced this pull request Oct 7, 2026
…路由层规范化为项目形 (#492)

bb PR Samuka007/bb#16(bb fork 的 Actions 从未触发——runs=0,历史 lane PR
同样零 checks;证据=本地 @bb/app 全量 352 文件/2791 例绿 + 本仓 CI 的 SPA
stage 构建)。

根因=bb ThreadDetailView 的 `thread.projectId !== projectId` 裸 "Not found"
(apps/app/src/views/thread-detail/ThreadDetailView.tsx:2420):/threads/:tid
的 route projectId=proj_personal 与线程真项目不符即整页 Not found(#476 伪影源)。
修复=SplitWorkspaceRoute 路由层读线程缓存行(enabled:false,零额外 GET),
projectless 形 URL + 真项目非 personal → <Navigate replace> 至
/projects/:pid/threads/:tid(保 ?message=/#event- 深链);personal 线程与
项目形 URL 不转(防环)。裁决:重定向(非 404 文案)——线程真实存在、规范
URL 可导出,"Not found" 是伪影。
@Samuka007

Copy link
Copy Markdown
Owner Author

consumed by parent pin 5ce4beb(cloudflare-agent-project PR get-bb#492 已并;fork Actions 无 CI,门=本地 2793 全绿+父仓 verify)

@Samuka007 Samuka007 closed this Oct 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant