feat(vscode): 多人协作二期:状态分层/写校验/签名/团队视图

- 本机状态(会话id/worktree/profile/prDiffFile)迁 workspaceState,
  共享 state JSON 只留团队字段;读侧本地记录叠加,旧数据兜底
- mergeStateJsonComment 写后读回校验,并发覆盖时在最新状态上重放一次
- webhook 支持 Gitea secret,校验 X-Gitea-Signature(HMAC-SHA256),
  不匹配 401;设置面板新增 Webhook Secret 字段
- 看板新增 我的/全部 范围切换(团队视图),按工作区持久化
This commit is contained in:
2026-08-19 00:32:06 +08:00
parent c370214d12
commit faf227412e
18 changed files with 665 additions and 202 deletions
+11 -2
View File
@@ -1,8 +1,9 @@
import type { PastedImage } from './components/NewIssueModal'
import type { Issue } from './types'
import { useEffect, useMemo, useRef, useState } from 'react'
import { BottomTabs } from './components/BottomTabs'
import { KanbanBoard } from './components/KanbanBoard'
import { LogModal } from './components/LogModal'
import type { PastedImage } from './components/NewIssueModal'
import { NewIssueModal } from './components/NewIssueModal'
import { PanelHeader } from './components/PanelHeader'
import { SettingsModal } from './components/SettingsModal'
@@ -11,7 +12,6 @@ import { useIssues } from './hooks/useIssues'
import { useManagedSessions } from './hooks/useManagedSessions'
import { useProfiles } from './hooks/useProfiles'
import { compareIssuesInColumn } from './lib/issueSort'
import type { Issue } from './types'
import { COLUMN_ORDER } from './types'
export function App() {
@@ -23,6 +23,8 @@ export function App() {
importYouTrack,
toasts,
profiles,
scope,
toggleScope,
setIssues,
refresh,
saveSettings,
@@ -283,6 +285,8 @@ export function App() {
<>
<PanelHeader
onRefresh={refresh}
scope={scope}
onToggleScope={toggleScope}
onEditAuth={requestEditAuth}
commitRunning={commitRunning}
hasChanges={hasChanges}
@@ -310,6 +314,8 @@ export function App() {
<>
<PanelHeader
onRefresh={refresh}
scope={scope}
onToggleScope={toggleScope}
onEditAuth={requestEditAuth}
commitRunning={commitRunning}
hasChanges={hasChanges}
@@ -391,6 +397,8 @@ export function App() {
<>
<PanelHeader
onRefresh={refresh}
scope={scope}
onToggleScope={toggleScope}
onEditAuth={requestEditAuth}
commitRunning={commitRunning}
hasChanges={hasChanges}
@@ -452,6 +460,7 @@ export function App() {
canCancel={settings?.canCancel}
initialTokenSaved={settings?.tokenSaved ?? false}
initialWebhookPort={settings?.webhookPort ?? 17421}
initialWebhookSecret={settings?.webhookSecret ?? ''}
initialBrainstormPrompt={settings?.brainstormPrompt ?? ''}
initialBrainstormContinuePrompt={settings?.brainstormContinuePrompt ?? ''}
initialImplementPlanPrompt={settings?.implementPlanPrompt ?? ''}