zero-workspace 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/config/version-notes.yaml +248 -244
  2. package/package.json +1 -1
  3. package/web/dist/assets/{DocsView-Cxc0B63r.js → DocsView-CQswvKCH.js} +1 -1
  4. package/web/dist/assets/HomeView-BgyZ7_HN.js +9 -0
  5. package/web/dist/assets/{HomeView-ufUdnfHk.css → HomeView-BnbDIvSm.css} +1 -1
  6. package/web/dist/assets/{MarkdownContent-DXp6CtSP.js → MarkdownContent-CJ47tJKg.js} +4 -4
  7. package/web/dist/assets/{NotFoundView-zrc0lT9q.js → NotFoundView-CRYu5sE7.js} +1 -1
  8. package/web/dist/assets/{WorkspaceView-BckqgNcX.js → WorkspaceView-cT0Ha52p.js} +1 -1
  9. package/web/dist/assets/{WsConfirmDialog-gLEP7uBD.js → WsConfirmDialog-CSIOLUym.js} +1 -1
  10. package/web/dist/assets/{arc-DPkKTkUT.js → arc-BhdPZFok.js} +1 -1
  11. package/web/dist/assets/{architectureDiagram-VXUJARFQ-CEGpqUlZ.js → architectureDiagram-VXUJARFQ-qT7x6ZyJ.js} +1 -1
  12. package/web/dist/assets/{blockDiagram-VD42YOAC-Bv-mqdQH.js → blockDiagram-VD42YOAC-FntJPxlH.js} +1 -1
  13. package/web/dist/assets/{c4Diagram-YG6GDRKO-DRyPatZ_.js → c4Diagram-YG6GDRKO-DvcT8MyD.js} +1 -1
  14. package/web/dist/assets/channel-Co3du3F-.js +1 -0
  15. package/web/dist/assets/{chunk-4BX2VUAB-c7DivX0u.js → chunk-4BX2VUAB-fszQf7Eo.js} +1 -1
  16. package/web/dist/assets/{chunk-55IACEB6-CGKTaLlo.js → chunk-55IACEB6-Bp27oGW8.js} +1 -1
  17. package/web/dist/assets/{chunk-B4BG7PRW-Czhx5Q_P.js → chunk-B4BG7PRW-COhYiTSR.js} +1 -1
  18. package/web/dist/assets/{chunk-DI55MBZ5-CQVA7hcZ.js → chunk-DI55MBZ5-Bxw8nfiU.js} +1 -1
  19. package/web/dist/assets/{chunk-FMBD7UC4-hEiPmi7V.js → chunk-FMBD7UC4-DAibdxYL.js} +1 -1
  20. package/web/dist/assets/{chunk-QN33PNHL-rL6yYI-E.js → chunk-QN33PNHL-9tOT3KBp.js} +1 -1
  21. package/web/dist/assets/{chunk-QZHKN3VN-BRyHBBzq.js → chunk-QZHKN3VN-COgzRb-m.js} +1 -1
  22. package/web/dist/assets/{chunk-TZMSLE5B-D4PXmTz9.js → chunk-TZMSLE5B-LtOYxekI.js} +1 -1
  23. package/web/dist/assets/classDiagram-2ON5EDUG-BKdgYPyl.js +1 -0
  24. package/web/dist/assets/classDiagram-v2-WZHVMYZB-BKdgYPyl.js +1 -0
  25. package/web/dist/assets/{cose-bilkent-S5V4N54A-BAREnRga.js → cose-bilkent-S5V4N54A-WAwIvAk6.js} +1 -1
  26. package/web/dist/assets/{dagre-6UL2VRFP-DaYzb3MT.js → dagre-6UL2VRFP-D9BKfXHZ.js} +1 -1
  27. package/web/dist/assets/{diagram-PSM6KHXK-BFltDqvd.js → diagram-PSM6KHXK-B2nWnBPB.js} +1 -1
  28. package/web/dist/assets/{diagram-QEK2KX5R-CR4VU2La.js → diagram-QEK2KX5R-D8r_n0Uq.js} +1 -1
  29. package/web/dist/assets/{diagram-S2PKOQOG-0UfIeT-1.js → diagram-S2PKOQOG-DA1BoPoO.js} +1 -1
  30. package/web/dist/assets/{erDiagram-Q2GNP2WA-Bo17Xmng.js → erDiagram-Q2GNP2WA-CRgIOH2t.js} +1 -1
  31. package/web/dist/assets/{flowDiagram-NV44I4VS-CzqhQp8s.js → flowDiagram-NV44I4VS-kTfrwbY0.js} +1 -1
  32. package/web/dist/assets/{ganttDiagram-JELNMOA3-TXwXtUcq.js → ganttDiagram-JELNMOA3-E5jVX7wn.js} +1 -1
  33. package/web/dist/assets/{gitGraphDiagram-NY62KEGX-CoFQTy9O.js → gitGraphDiagram-NY62KEGX-DUlumhPv.js} +1 -1
  34. package/web/dist/assets/{graph-CIQcRIVd.js → graph-CMQa_SOD.js} +1 -1
  35. package/web/dist/assets/{index-Cd_J3fZn.js → index-BIrlitjL.js} +2 -2
  36. package/web/dist/assets/{infoDiagram-WHAUD3N6-Dq0xXfVu.js → infoDiagram-WHAUD3N6-B8H8Z83I.js} +1 -1
  37. package/web/dist/assets/{journeyDiagram-XKPGCS4Q-jIg5BOfC.js → journeyDiagram-XKPGCS4Q-CIgTTzYt.js} +1 -1
  38. package/web/dist/assets/{kanban-definition-3W4ZIXB7-D2giu6aZ.js → kanban-definition-3W4ZIXB7-la89kDpH.js} +1 -1
  39. package/web/dist/assets/{layout-Bm-XCM-8.js → layout-BJzmMPFp.js} +1 -1
  40. package/web/dist/assets/{linear-FbekP9OZ.js → linear-Doax3Tpd.js} +1 -1
  41. package/web/dist/assets/{min-BrRCpYmF.js → min-BmSRl5Ci.js} +1 -1
  42. package/web/dist/assets/{mindmap-definition-VGOIOE7T-o-4ubbY9.js → mindmap-definition-VGOIOE7T-Ciwq1Lex.js} +1 -1
  43. package/web/dist/assets/{pieDiagram-ADFJNKIX-C45wSpld.js → pieDiagram-ADFJNKIX-DH5jBhNk.js} +1 -1
  44. package/web/dist/assets/{quadrantDiagram-AYHSOK5B-tv-_fe-W.js → quadrantDiagram-AYHSOK5B-BtOtsGoi.js} +1 -1
  45. package/web/dist/assets/{reduce-CoLNNlNb.js → reduce-DEC47oEW.js} +1 -1
  46. package/web/dist/assets/{requirementDiagram-UZGBJVZJ-Dn6PDfkL.js → requirementDiagram-UZGBJVZJ-CtHndIik.js} +1 -1
  47. package/web/dist/assets/{sankeyDiagram-TZEHDZUN-CbXTZAsG.js → sankeyDiagram-TZEHDZUN-DLgILZkk.js} +1 -1
  48. package/web/dist/assets/{sequenceDiagram-WL72ISMW-B-o1CUJ5.js → sequenceDiagram-WL72ISMW-DDFwaXEl.js} +1 -1
  49. package/web/dist/assets/{stateDiagram-FKZM4ZOC-hzrupXQi.js → stateDiagram-FKZM4ZOC-COXv7Jt7.js} +1 -1
  50. package/web/dist/assets/stateDiagram-v2-4FDKWEC3-C5xOA2n-.js +1 -0
  51. package/web/dist/assets/{timeline-definition-IT6M3QCI-R5SP9GDo.js → timeline-definition-IT6M3QCI-LVP3dide.js} +1 -1
  52. package/web/dist/assets/{treemap-KMMF4GRG-Pg9KlUOt.js → treemap-KMMF4GRG-BX_PQBHz.js} +1 -1
  53. package/web/dist/assets/{xychartDiagram-PRI3JC2R-C3vbJhd1.js → xychartDiagram-PRI3JC2R-DeBzZb_r.js} +1 -1
  54. package/web/dist/index.html +1 -1
  55. package/web/dist/logo.svg +17 -0
  56. package/web/dist/assets/HomeView-C7df9thb.js +0 -9
  57. package/web/dist/assets/channel-B84mKLDZ.js +0 -1
  58. package/web/dist/assets/classDiagram-2ON5EDUG-CNn53ohi.js +0 -1
  59. package/web/dist/assets/classDiagram-v2-WZHVMYZB-CNn53ohi.js +0 -1
  60. package/web/dist/assets/stateDiagram-v2-4FDKWEC3-DN-c2M96.js +0 -1
@@ -0,0 +1,9 @@
1
+ import{d as _e,r as i,e as n,o as l,v as E,f as e,w as c,J as Ye,_ as De,K as Ee,L as Fe,s as k,T as qe,M as $,N as Qe,I as b,F as z,q as re,$ as be,a0 as xe,O as x,P as je,a1 as Ve,j as ye,a2 as $e,a3 as Xe,a4 as et,a5 as Pe,t as Ce,l as Le,g as Re,a6 as tt,h as st}from"./index-BIrlitjL.js";import{W as F,a as ie,b as Se,w as Ie,u as at,g as lt}from"./WsConfirmDialog-CSIOLUym.js";import{aC as nt}from"./MarkdownContent-CJ47tJKg.js";const ot="/logo.svg",it={class:"collapse-title"},rt={class:"collapse-content-wrapper"},dt={class:"collapse-content"},ut=_e({__name:"WsCollapse",props:{title:{},defaultOpen:{type:Boolean,default:!1}},setup(Q,{expose:de}){const h=i(Q.defaultOpen);function f(){h.value=!h.value}return de({toggle:f,isOpen:h}),(B,T)=>(l(),n("div",{class:E(["ws-collapse",{"is-open":h.value}])},[e("div",{class:"collapse-header",onClick:f},[T[0]||(T[0]=e("span",{class:"collapse-arrow"},[e("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[e("path",{d:"M4.5 2.5L8 6L4.5 9.5",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})])],-1)),e("span",it,c(Q.title),1)]),e("div",rt,[e("div",dt,[Ye(B.$slots,"default",{},void 0,!0)])])],2))}}),Ue=De(ut,[["__scopeId","data-v-28a9ec4c"]]),ct={class:"dialog-body"},vt={class:"workspace-preview"},pt={class:"workspace-list"},ft={class:"workspace-name"},mt={key:0,class:"workspace-existing"},gt={class:"target-dir-section"},yt={class:"target-input-row"},kt={class:"dialog-footer"},ht=_e({__name:"ImportConfirmModal",props:{modelValue:{type:Boolean},workspaces:{},defaultTargetDir:{default:""}},emits:["update:modelValue","confirm","cancel"],setup(Q,{emit:de}){const C=Q,h=de,f=i(C.modelValue),B=i(C.defaultTargetDir);Ee(()=>C.modelValue,R=>{f.value=R,R&&(B.value=C.defaultTargetDir)});function T(){h("update:modelValue",!1),h("confirm",B.value)}function A(){h("update:modelValue",!1),h("cancel")}function _(){A()}async function P(){try{const R=await ie.pickDirectory();R.path&&(B.value=R.path)}catch(R){console.error("无法打开目录选择器:",R)}}return(R,y)=>(l(),Fe(Qe,{to:"body"},[k(qe,{name:"modal-fade"},{default:$(()=>[f.value?(l(),n("div",{key:0,class:"dialog-overlay",onClick:_},[e("div",{class:"dialog",onClick:y[1]||(y[1]=je(()=>{},["stop"]))},[e("div",{class:"dialog-header"},[y[3]||(y[3]=e("span",{class:"dialog-title"},"确认导入",-1)),e("button",{class:"dialog-close",onClick:A},[...y[2]||(y[2]=[e("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none"},[e("path",{d:"M12 4L4 12M4 4L12 12",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"})],-1)])])]),e("div",ct,[e("div",vt,[y[4]||(y[4]=e("div",{class:"preview-label"},"将导入以下工作区:",-1)),e("div",pt,[(l(!0),n(z,null,re(Q.workspaces,O=>(l(),n("div",{key:O.id,class:"workspace-item"},[e("span",ft,c(O.name),1),O.isNew?b("",!0):(l(),n("span",mt,"(已存在)"))]))),128))])]),e("div",gt,[y[6]||(y[6]=e("div",{class:"target-label"},"目标目录:",-1)),e("div",yt,[be(e("input",{type:"text",class:"target-input","onUpdate:modelValue":y[0]||(y[0]=O=>B.value=O),placeholder:"选择目标目录..."},null,512),[[xe,B.value]]),k(F,{size:"sm",variant:"secondary",onClick:P},{default:$(()=>[...y[5]||(y[5]=[x("浏览",-1)])]),_:1})]),y[7]||(y[7]=e("div",{class:"target-hint"},"工作区将被复制到此目录的 .zero-workspace 子目录下",-1))])]),e("div",kt,[k(F,{variant:"secondary",size:"sm",onClick:A},{default:$(()=>[...y[8]||(y[8]=[x(" 取消 ",-1)])]),_:1}),k(F,{variant:"primary",size:"sm",onClick:T},{default:$(()=>[...y[9]||(y[9]=[x(" 确认导入 ",-1)])]),_:1})])])])):b("",!0)]),_:1})]))}}),wt=De(ht,[["__scopeId","data-v-ea968292"]]),bt={class:"index-management"},Ct={class:"stats-bar"},$t={class:"stats-item"},xt={class:"stats-number"},_t={class:"stats-item"},Dt={class:"stats-number success"},Tt={class:"stats-item"},It={class:"function-block"},St={key:1,class:"selected-item"},Et={class:"selected-info"},Mt={class:"selected-name"},Vt={class:"selected-meta"},Bt={key:2,class:"selected-item"},At={class:"selected-info"},Rt={class:"selected-name"},Pt={class:"selected-meta"},Nt={key:3,class:"import-action-bar"},zt={class:"target-dir-group"},Lt={key:4,class:"action-row"},Ut={key:6,class:"manual-input-area"},Ot={class:"drop-zone-text"},Wt={class:"alt-input-row"},Ft={key:0,class:"warning-list"},jt={class:"function-block"},Gt={class:"function-header"},Ht={key:0,class:"result-area"},Kt={key:0,class:"change-section"},Zt={class:"change-header add"},Jt={class:"ws-list"},Yt={class:"ws-name"},qt={key:0,class:"ws-more"},Qt={key:1,class:"change-section"},Xt={class:"change-header remove"},es={class:"ws-list"},ts={class:"ws-name"},ss={class:"ws-reason"},as={key:0,class:"ws-more"},ls={class:"action-row"},ns={key:1,class:"no-changes"},os={key:1,class:"result-area done"},is={class:"result-header"},rs={class:"result-stats"},ds={key:0,class:"stat"},us={class:"stat-num success"},cs={key:1,class:"stat"},vs={class:"stat-num danger"},ps={key:0,class:"ws-list"},fs={class:"ws-name"},ms={class:"ws-name"},gs={key:2,class:"result-area error"},ys={class:"error-content"},ks={class:"error-message"},hs=_e({__name:"IndexManagementModalNew",props:{visible:{type:Boolean}},emits:["update:visible","workspaceImported"],setup(Q,{emit:de}){const C=Ve(),h=Q,f=de,B=i(!1),T=i(null),A=i(!1),_=i(),P=i("none"),R=i(null),y=i(""),O=i(""),H=i(""),W=i("~/.zero-workspace/import/"),D=i(!1),K=i(""),I=i(!1),Y=i(!1),te=i(null),se=i(""),w=i("none"),M=i(""),ue=i([]),N=i("idle"),S=i(null),L=i(null),j=i(null),oe=ye(()=>S.value?S.value.hasChanges:!1),U=ye(()=>P.value!=="none");async function X(){try{T.value=await ie.getIndexStats()}catch(o){console.error("加载索引统计失败:",o)}}Ee(()=>h.visible,async o=>{o&&(B.value=!0,ee(),await X(),B.value=!1)});function ee(){P.value="none",R.value=null,y.value="",O.value="",H.value="",w.value="none",M.value="",ue.value=[],D.value=!1,K.value="",N.value="idle",S.value=null,L.value=null,j.value=null}function ae(){f("update:visible",!1)}function q(){P.value="none",R.value=null,y.value="",O.value="",H.value="",w.value="none",M.value="",ue.value=[]}function ce(o){o.preventDefault(),o.stopPropagation(),A.value=!0}function r(o){o.preventDefault(),o.stopPropagation()}function u(o){o.preventDefault(),o.stopPropagation();const a=_.value;if(a){const g=o.relatedTarget;(!g||!a.contains(g))&&(A.value=!1)}}function p(o){o.preventDefault(),o.stopPropagation(),A.value=!1;const a=o.dataTransfer?.files;if(!a||a.length===0)return;const g=a.item(0);g&&ve(g)}function Z(){const o=document.createElement("input");o.type="file",o.accept=".twsp",o.onchange=a=>{const ge=a.target.files?.[0];ge&&ve(ge)},o.click()}function ve(o){q(),o.name.endsWith(".twsp")?(P.value="file",R.value=o,O.value=o.name,H.value=ke(o.size)):C.warning("拖拽仅支持 .twsp 文件,目录请点击「选择目录」按钮")}function ke(o){return o<1024?`${o} B`:o<1024*1024?`${(o/1024).toFixed(1)} KB`:`${(o/(1024*1024)).toFixed(1)} MB`}function Te(){D.value=!D.value}async function V(){try{const o=await ie.pickDirectory();o.path&&(W.value=o.path)}catch{C.error("无法打开目录选择器")}}async function t(){try{const o=await ie.pickDirectory();o.path&&await m(o.path)}catch{C.error("无法打开目录选择器")}}async function m(o){I.value=!0,w.value="none";try{const a=await ie.importPreview(o);if(!a.success){w.value="error",M.value=a.error||"无法识别的工作区",I.value=!1;return}a.needsTargetDir?(te.value=a,se.value=o,Y.value=!0,I.value=!1):await le(o)}catch(a){w.value="error",M.value=a instanceof Error?a.message:"预检查失败",I.value=!1}}async function pe(o){Y.value=!1,I.value=!0;try{await le(se.value,o)}catch(a){w.value="error",M.value=a instanceof Error?a.message:"导入失败"}finally{I.value=!1,te.value=null,se.value=""}}function he(){Y.value=!1,te.value=null,se.value=""}async function le(o,a){try{const g=await ie.import(o,a);g.success?(g.added>0?(w.value="success",M.value=`成功导入 ${g.added} 个工作区`,g.existing>0&&(M.value+=`,${g.existing} 个已存在`),f("workspaceImported")):g.existing>0?(w.value="warning",M.value=`${g.existing} 个工作区已存在于索引中`):(w.value="warning",M.value="未找到可导入的工作区"),q(),D.value=!1,K.value="",await X()):(w.value="error",M.value=g.error||"导入失败")}catch(g){w.value="error",M.value=g instanceof Error?g.message:"导入失败"}finally{I.value=!1}}async function fe(){P.value==="file"&&R.value?await G():(P.value==="directory"||K.value.trim())&&await we()}async function G(){if(R.value){I.value=!0,w.value="none";try{const o=new FormData;o.append("file",R.value),o.append("targetDir",W.value);const a=await ie.importTwsp(o);a.success?(a.warnings&&a.warnings.length>0?(w.value="warning",M.value=`工作区「${a.name||"未知"}」导入成功(有警告)`,ue.value=a.warnings):(w.value="success",M.value=`工作区「${a.name||"未知"}」导入成功`),P.value="none",R.value=null,O.value="",H.value="",await X(),f("workspaceImported")):(w.value="error",M.value=a.error||"导入失败")}catch(o){w.value="error",M.value=o instanceof Error?o.message:"导入失败"}finally{I.value=!1}}}async function we(){const o=y.value||K.value.trim();if(!o){C.warning("请输入目录路径");return}I.value=!0,w.value="none";try{const a=await ie.import(o);a.success?a.added>0?(w.value="success",M.value=`发现并导入了 ${a.added} 个工作区`,P.value="none",y.value="",O.value="",H.value="",D.value=!1,K.value="",await X(),f("workspaceImported")):a.existing>0?(w.value="warning",M.value=`发现 ${a.existing} 个工作区已存在`):(w.value="warning",M.value="未找到有效的工作区"):(w.value="error",M.value=a.error||"导入失败")}catch(a){w.value="error",M.value=a instanceof Error?a.message:"导入失败"}finally{I.value=!1}}async function me(){if(!K.value.trim()){C.warning("请输入路径");return}if(K.value.endsWith(".twsp")){C.warning(".twsp 文件请使用拖拽或点击选择");return}await m(K.value.trim())}async function Me(){N.value="previewing",S.value=null,L.value=null,j.value=null;try{const o=await ie.syncCleanPreview();S.value=o,N.value="previewed",o.hasChanges||C.info("索引已是最新状态")}catch(o){console.error("同步清理预览失败:",o);const a=o instanceof Error?o.message:"预览失败";j.value=a,N.value="error",C.error(a)}}async function Be(){N.value="executing",j.value=null;try{const o=await ie.syncCleanExecute();L.value=o,N.value="done",await X(),(o.added>0||o.removed>0)&&(C.success(`同步完成:新增 ${o.added} 个,清理 ${o.removed} 个`),o.added>0&&f("workspaceImported"))}catch(o){console.error("同步清理执行失败:",o);const a=o instanceof Error?o.message:"执行失败";j.value=a,N.value="error",C.error(a)}}function Ae(){N.value="idle",S.value=null,L.value=null,j.value=null}return(o,a)=>(l(),n(z,null,[k($e,{"model-value":Q.visible,title:"索引管理",width:"500px","onUpdate:modelValue":a[2]||(a[2]=g=>!g&&ae()),onClose:ae},{default:$(()=>[e("div",bt,[e("div",Ct,[e("div",$t,[e("span",xt,c(T.value?.total??"-"),1),a[4]||(a[4]=e("span",{class:"stats-label"},"已索引",-1))]),e("div",_t,[e("span",Dt,c(T.value?.valid??"-"),1),a[5]||(a[5]=e("span",{class:"stats-label"},"有效",-1))]),e("div",Tt,[e("span",{class:E(["stats-number",{danger:(T.value?.invalid??0)>0}])},c(T.value?.invalid??"-"),3),a[6]||(a[6]=e("span",{class:"stats-label"},"无效",-1))])]),e("div",It,[a[17]||(a[17]=e("div",{class:"function-header"},[e("div",{class:"function-title"},"导入工作区")],-1)),!U.value&&!D.value?(l(),n("div",{key:0,ref_key:"dropZoneRef",ref:_,class:E(["drop-zone",{dragging:A.value}]),onDragenter:ce,onDragover:r,onDragleave:u,onDrop:p,onClick:t},[a[7]||(a[7]=e("div",{class:"drop-zone-icon"},[e("svg",{width:"32",height:"32",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[e("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),e("polyline",{points:"17 8 12 3 7 8"}),e("line",{x1:"12",y1:"3",x2:"12",y2:"15"})])],-1)),e("div",{class:E(["drop-zone-text",{highlight:A.value}])},c(A.value?"释放以导入":"拖入 .twsp 或点击选择目录"),3),a[8]||(a[8]=e("div",{class:"drop-zone-hint"},"支持工作区目录、项目目录、.twsp 文件",-1))],34)):b("",!0),P.value==="file"?(l(),n("div",St,[a[9]||(a[9]=e("div",{class:"selected-icon file"},[e("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[e("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),e("polyline",{points:"14 2 14 8 20 8"})])],-1)),e("div",Et,[e("div",Mt,c(O.value),1),e("div",Vt,c(H.value),1)]),e("div",{class:"selected-clear",onClick:q},"×")])):b("",!0),P.value==="directory"?(l(),n("div",Bt,[a[10]||(a[10]=e("div",{class:"selected-icon directory"},[e("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[e("path",{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"})])],-1)),e("div",At,[e("div",Rt,c(O.value),1),e("div",Pt,c(y.value),1)]),e("div",{class:"selected-clear",onClick:q},"×")])):b("",!0),P.value==="file"?(l(),n("div",Nt,[e("div",zt,[a[12]||(a[12]=e("span",{class:"target-dir-label"},"导入到",-1)),be(e("input",{type:"text",class:"target-dir-input","onUpdate:modelValue":a[0]||(a[0]=g=>W.value=g),readonly:""},null,512),[[xe,W.value]]),k(F,{size:"sm",variant:"ghost",onClick:V},{default:$(()=>[...a[11]||(a[11]=[x("修改",-1)])]),_:1})]),k(F,{variant:"primary",loading:I.value,onClick:fe},{default:$(()=>[...a[13]||(a[13]=[x("确认导入",-1)])]),_:1},8,["loading"])])):b("",!0),P.value==="directory"?(l(),n("div",Lt,[k(F,{variant:"primary",loading:I.value,onClick:fe},{default:$(()=>[...a[14]||(a[14]=[x("导入",-1)])]),_:1},8,["loading"])])):b("",!0),!U.value&&!D.value?(l(),n("div",{key:5,class:"alt-input-toggle",onClick:Te}," 或手动输入路径 ")):b("",!0),D.value&&!U.value?(l(),n("div",Ut,[e("div",{ref_key:"dropZoneRef",ref:_,class:E(["drop-zone mini",{dragging:A.value}]),onDragenter:ce,onDragover:r,onDragleave:u,onDrop:p,onClick:Z},[a[15]||(a[15]=e("div",{class:"drop-zone-icon mini"},[e("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[e("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),e("polyline",{points:"17 8 12 3 7 8"}),e("line",{x1:"12",y1:"3",x2:"12",y2:"15"})])],-1)),e("div",Ot,c(A.value?"释放以导入":"拖入 .twsp 文件"),1)],34),e("div",Wt,[be(e("input",{type:"text",class:"path-input",placeholder:"输入目录路径...","onUpdate:modelValue":a[1]||(a[1]=g=>K.value=g),onKeyup:Xe(me,["enter"])},null,544),[[xe,K.value]]),k(F,{size:"sm",variant:"primary",loading:I.value,onClick:me},{default:$(()=>[...a[16]||(a[16]=[x("导入",-1)])]),_:1},8,["loading"])])])):b("",!0),w.value!=="none"?(l(),n("div",{key:7,class:E(["result-box",w.value])},[w.value==="success"?(l(),n(z,{key:0},[x(c(M.value),1)],64)):w.value==="warning"?(l(),n(z,{key:1},[e("div",null,c(M.value),1),ue.value.length>0?(l(),n("div",Ft,[(l(!0),n(z,null,re(ue.value,(g,ge)=>(l(),n("div",{key:ge,class:"warning-item"}," • "+c(g),1))),128))])):b("",!0)],64)):w.value==="error"?(l(),n(z,{key:2},[x(c(M.value),1)],64)):b("",!0)],2)):b("",!0),a[18]||(a[18]=e("div",{class:"function-desc"},"支持:.twsp 导出文件、项目目录、工作区目录",-1))]),e("div",jt,[e("div",Gt,[a[19]||(a[19]=e("div",{class:"function-title"},"同步清理",-1)),N.value==="idle"||N.value==="done"||N.value==="previewing"||N.value==="error"?(l(),Fe(F,{key:0,variant:"secondary",size:"sm",loading:N.value==="previewing",disabled:N.value==="previewing",onClick:Me},{default:$(()=>[x(c(N.value==="error"?"重试":"扫描并预览"),1)]),_:1},8,["loading","disabled"])):b("",!0)]),a[32]||(a[32]=e("div",{class:"function-desc"},"扫描已索引路径发现新工作区,清理无效条目",-1)),(N.value==="previewed"||N.value==="executing")&&S.value?(l(),n("div",Ht,[oe.value?(l(),n(z,{key:0},[a[24]||(a[24]=e("div",{class:"result-header"},[e("span",{class:"result-title"},"发现以下变更")],-1)),S.value.toAdd.length>0?(l(),n("div",Kt,[e("div",Zt,[a[20]||(a[20]=e("span",{class:"change-icon"},"+",-1)),e("span",null,c(S.value.toAdd.length)+" 个新工作区",1)]),e("div",Jt,[(l(!0),n(z,null,re(S.value.toAdd.slice(0,3),g=>(l(),n("div",{key:g.id,class:"ws-item"},[e("span",Yt,c(g.name),1)]))),128)),S.value.toAdd.length>3?(l(),n("div",qt," 还有 "+c(S.value.toAdd.length-3)+" 个... ",1)):b("",!0)])])):b("",!0),S.value.toRemove.length>0?(l(),n("div",Qt,[e("div",Xt,[a[21]||(a[21]=e("span",{class:"change-icon"},"-",-1)),e("span",null,c(S.value.toRemove.length)+" 个无效条目",1)]),e("div",es,[(l(!0),n(z,null,re(S.value.toRemove.slice(0,3),g=>(l(),n("div",{key:g.id,class:"ws-item invalid"},[e("span",ts,c(g.name),1),e("span",ss,c(g.reason),1)]))),128)),S.value.toRemove.length>3?(l(),n("div",as," 还有 "+c(S.value.toRemove.length-3)+" 个... ",1)):b("",!0)])])):b("",!0),e("div",ls,[k(F,{variant:"secondary",size:"sm",onClick:Ae},{default:$(()=>[...a[22]||(a[22]=[x("取消",-1)])]),_:1}),k(F,{variant:"primary",size:"sm",loading:N.value==="executing",onClick:Be},{default:$(()=>[...a[23]||(a[23]=[x(" 确认执行 ",-1)])]),_:1},8,["loading"])])],64)):(l(),n("div",ns,[...a[25]||(a[25]=[e("span",{class:"no-changes-icon"},"✓",-1),e("span",null,"索引已是最新状态,无需更新",-1)])]))])):b("",!0),N.value==="done"&&L.value?(l(),n("div",os,[e("div",is,[a[28]||(a[28]=e("span",{class:"result-title"},"同步完成",-1)),e("div",rs,[L.value.added>0?(l(),n("span",ds,[e("span",us,c(L.value.added),1),a[26]||(a[26]=x(" 新增",-1))])):b("",!0),L.value.removed>0?(l(),n("span",cs,[e("span",vs,c(L.value.removed),1),a[27]||(a[27]=x(" 清理",-1))])):b("",!0)])]),L.value.addedList.length>0||L.value.removedList.length>0?(l(),n("div",ps,[(l(!0),n(z,null,re(L.value.addedList.slice(0,3),g=>(l(),n("div",{key:g.id,class:"ws-item"},[a[29]||(a[29]=e("span",{class:"ws-badge is-new"},"新增",-1)),e("span",fs,c(g.name),1)]))),128)),(l(!0),n(z,null,re(L.value.removedList.slice(0,3),g=>(l(),n("div",{key:g.id,class:"ws-item invalid"},[a[30]||(a[30]=e("span",{class:"ws-badge is-removed"},"清理",-1)),e("span",ms,c(g.name),1)]))),128))])):b("",!0)])):b("",!0),N.value==="error"&&j.value?(l(),n("div",gs,[e("div",ys,[a[31]||(a[31]=e("span",{class:"error-icon"},"✕",-1)),e("span",ks,c(j.value),1)])])):b("",!0)])])]),_:1},8,["model-value"]),k(wt,{modelValue:Y.value,"onUpdate:modelValue":a[3]||(a[3]=g=>Y.value=g),workspaces:te.value?.workspaces??[],"default-target-dir":te.value?.suggestedTargetDir??"",onConfirm:pe,onCancel:he},null,8,["modelValue","workspaces","default-target-dir"])],64))}}),ws=De(hs,[["__scopeId","data-v-90a2f9d8"]]),bs={class:"backup-manager"},Cs={class:"action-bar"},$s={key:0,class:"loading-state"},xs={key:1,class:"backup-list"},_s={class:"backup-info"},Ds={class:"backup-name"},Ts={class:"backup-meta"},Is={class:"meta-item"},Ss={class:"meta-item"},Es={class:"meta-item"},Ms={class:"backup-actions"},Vs={key:2,class:"empty-state"},Bs=_e({__name:"BackupManager",props:{visible:{type:Boolean}},emits:["update:visible","change"],setup(Q,{emit:de}){const C=Ve(),h=Q,f=de,B=i(!1),T=i([]),A=i(!1),_=i(!1),P=i(!1),R=i(!1),y=i(!1),O=i(),H=i(!1),W=i(!1),D=i(null),K=ye(()=>T.value.length>0),I=ye(()=>A.value||_.value||P.value||R.value);async function Y(){B.value=!0;try{const r=await fetch("/api/backup/global");if(!r.ok)throw new Error("加载备份列表失败");const u=await r.json();T.value=u.backups||[]}catch(r){console.error("[BackupManager] loadBackups failed:",r),C.error("加载备份列表失败")}finally{B.value=!1}}Ee(()=>h.visible,async r=>{r&&await Y()});function te(){f("update:visible",!1)}async function se(){A.value=!0;try{const r=await fetch("/api/backup/global",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({trigger:"manual"})});if(!r.ok){const u=await r.json();throw new Error(u.error||"创建备份失败")}C.success("备份创建成功"),await Y(),f("change")}catch(r){console.error("[BackupManager] create failed:",r),C.error(r instanceof Error?r.message:"创建备份失败")}finally{A.value=!1}}function w(r){D.value=r,H.value=!0}async function M(){if(D.value){_.value=!0;try{const r=await fetch(`/api/backup/global/${encodeURIComponent(D.value.name)}/restore`,{method:"POST"});if(!r.ok){const u=await r.json();throw new Error(u.error||"恢复失败")}C.success("备份恢复成功"),await Y()}catch(r){console.error("[BackupManager] restore failed:",r),C.error(r instanceof Error?r.message:"恢复失败")}finally{_.value=!1,D.value=null}}}function ue(r){window.open(`/api/backup/global/${encodeURIComponent(r.name)}/download`,"_blank")}function N(r){D.value=r,W.value=!0}async function S(){if(D.value){P.value=!0;try{const r=await fetch(`/api/backup/global/${encodeURIComponent(D.value.name)}`,{method:"DELETE"});if(!r.ok){const u=await r.json();throw new Error(u.error||"删除失败")}C.success("备份已删除"),await Y(),f("change")}catch(r){console.error("[BackupManager] delete failed:",r),C.error(r instanceof Error?r.message:"删除失败")}finally{P.value=!1,D.value=null}}}function L(){const r=document.createElement("input");r.type="file",r.accept=".twbak",r.onchange=async u=>{const p=u.target.files?.[0];p&&await j(p)},r.click()}async function j(r){if(!r.name.endsWith(".twbak")){C.warning("仅支持 .twbak 格式的备份文件");return}R.value=!0;try{const u=new FormData;u.append("file",r);const p=await fetch("/api/backup/global/import",{method:"POST",body:u});if(!p.ok){const Z=await p.json();throw new Error(Z.error||"导入失败")}C.success("备份导入成功"),await Y(),f("change")}catch(u){console.error("[BackupManager] import failed:",u),C.error(u instanceof Error?u.message:"导入失败")}finally{R.value=!1}}function oe(r){r.preventDefault(),r.stopPropagation(),y.value=!0}function U(r){r.preventDefault(),r.stopPropagation()}function X(r){r.preventDefault(),r.stopPropagation();const u=O.value;if(u){const p=r.relatedTarget;(!p||!u.contains(p))&&(y.value=!1)}}async function ee(r){r.preventDefault(),r.stopPropagation(),y.value=!1;const u=r.dataTransfer?.files;if(!u||u.length===0)return;const p=u.item(0);p&&await j(p)}function ae(r){return new Date(r).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function q(r){return r<1024?`${r} B`:r<1024*1024?`${(r/1024).toFixed(1)} KB`:`${(r/(1024*1024)).toFixed(1)} MB`}function ce(r){return{manual:"手动",beta_update:"Beta更新前",pre_restore:"恢复前"}[r]||r}return(r,u)=>(l(),n(z,null,[k($e,{"model-value":Q.visible,title:"BACKUP MANAGER",width:"560px","onUpdate:modelValue":u[5]||(u[5]=p=>!p&&te()),onClose:te},{default:$(()=>[e("div",bs,[e("div",Cs,[k(F,{variant:"primary",loading:A.value,disabled:I.value&&!A.value,onClick:se},{default:$(()=>[...u[8]||(u[8]=[x(" + 创建备份 ",-1)])]),_:1},8,["loading","disabled"]),u[9]||(u[9]=e("span",{class:"action-hint"},"工作台备份仅包含全局索引配置,不包含具体工作区内容",-1))]),B.value?(l(),n("div",$s," 加载中... ")):K.value?(l(),n("div",xs,[(l(!0),n(z,null,re(T.value,p=>(l(),n("div",{key:p.name,class:"backup-item"},[u[16]||(u[16]=e("div",{class:"backup-icon"},[e("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[e("path",{d:"M21 8v13H3V8"}),e("path",{d:"M1 3h22v5H1z"}),e("path",{d:"M10 12h4"})])],-1)),e("div",_s,[e("div",Ds,c(p.name),1),e("div",Ts,[e("span",Is,c(ae(p.createdAt)),1),u[10]||(u[10]=e("span",{class:"meta-sep"},"|",-1)),e("span",Ss,"v"+c(p.codeVersion),1),u[11]||(u[11]=e("span",{class:"meta-sep"},"|",-1)),e("span",Es,c(q(p.size)),1),u[12]||(u[12]=e("span",{class:"meta-sep"},"|",-1)),e("span",{class:E(["meta-item trigger-tag",p.trigger])},c(ce(p.trigger)),3)])]),e("div",Ms,[k(F,{variant:"ghost",size:"sm",disabled:I.value,onClick:Z=>w(p)},{default:$(()=>[...u[13]||(u[13]=[x("恢复",-1)])]),_:1},8,["disabled","onClick"]),k(F,{variant:"ghost",size:"sm",disabled:I.value,onClick:Z=>ue(p)},{default:$(()=>[...u[14]||(u[14]=[x("下载",-1)])]),_:1},8,["disabled","onClick"]),k(F,{variant:"danger",size:"sm",disabled:I.value,onClick:Z=>N(p)},{default:$(()=>[...u[15]||(u[15]=[x("删除",-1)])]),_:1},8,["disabled","onClick"])])]))),128))])):(l(),n("div",Vs,[...u[17]||(u[17]=[e("div",{class:"empty-icon"},[e("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1"},[e("path",{d:"M21 8v13H3V8"}),e("path",{d:"M1 3h22v5H1z"}),e("path",{d:"M10 12h4"})])],-1),e("div",{class:"empty-text"},"暂无备份",-1),e("div",{class:"empty-hint"},"点击「创建备份」开始保护您的数据",-1)])])),e("div",{ref_key:"dropZoneRef",ref:O,class:E(["drop-zone",{dragging:y.value,disabled:I.value}]),onDragenter:u[0]||(u[0]=p=>!I.value&&oe(p)),onDragover:u[1]||(u[1]=p=>!I.value&&U(p)),onDragleave:u[2]||(u[2]=p=>!I.value&&X(p)),onDrop:u[3]||(u[3]=p=>!I.value&&ee(p)),onClick:u[4]||(u[4]=p=>!I.value&&L())},[u[18]||(u[18]=e("div",{class:"drop-zone-icon"},[e("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[e("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),e("polyline",{points:"17 8 12 3 7 8"}),e("line",{x1:"12",y1:"3",x2:"12",y2:"15"})])],-1)),e("div",{class:E(["drop-zone-text",{highlight:y.value}])},c(I.value?"操作进行中...":y.value?"释放以导入":"拖拽 .twbak 文件到此处,或点击选择"),3)],34)])]),_:1},8,["model-value"]),k(Se,{modelValue:H.value,"onUpdate:modelValue":u[6]||(u[6]=p=>H.value=p),title:"确认恢复",message:"恢复将覆盖当前配置,系统会先自动备份当前状态。确定继续?",type:"warning","confirm-text":"确认恢复","cancel-text":"取消",onConfirm:M},null,8,["modelValue"]),k(Se,{modelValue:W.value,"onUpdate:modelValue":u[7]||(u[7]=p=>W.value=p),title:"确认删除",message:"删除后将无法恢复此备份。确定继续?",type:"danger","confirm-text":"确认删除","cancel-text":"取消",onConfirm:S},null,8,["modelValue"])],64))}}),Ge=De(Bs,[["__scopeId","data-v-1e59df37"]]),As=`在对话中提及「**工作区**」或「**工作台**」即可触发。
2
+
3
+ **示例**:
4
+ - 「用工作台帮我实现 xxx」
5
+ - 「创建一个工作区,帮我做 xxx」
6
+
7
+ 创建后会显示 WebUI 地址,可在浏览器中查看任务进度。`,Rs=[{intent:"创建工作区",phrases:["用工作台帮我...","创建一个工作区"]},{intent:"恢复任务",phrases:["看看工作区状态"]},{intent:"查看进度",phrases:["进度","做到哪了"]},{intent:"确认计划",phrases:["好","可以","继续"]},{intent:"调整计划",phrases:["不对","调整一下","先不做"]},{intent:"重新执行",phrases:["重新做","再试一次"]},{intent:"放弃任务",phrases:["先不做了","取消"]}],Ps={class:"settings-content"},Ns={class:"setting-section"},zs={class:"tech-spec"},Ls={class:"spec-item"},Us={class:"spec-value-row"},Os={class:"spec-value-text"},Ws={class:"spec-item"},Fs={class:"spec-value"},js={class:"spec-item"},Gs={class:"spec-value"},Hs={class:"spec-item"},Ks={class:"spec-value"},Zs={class:"spec-item"},Js={class:"spec-value"},Ys={key:0,class:"spec-warning"},qs={class:"setting-section dispatch-section"},Qs={class:"config-entry"},Xs={class:"config-entry-value"},ea={class:"setting-section plugin-section"},ta={key:0,class:"platform-grid"},sa={class:"platform-card"},aa={class:"platform-label"},la={class:"component-box"},na={class:"platform-card"},oa={class:"platform-label"},ia={class:"component-box"},ra={key:1,class:"plugin-loading"},da={class:"setting-section index-section"},ua={class:"index-entry"},ca={class:"index-entry-stats"},va={class:"stat-box"},pa={class:"stat-number"},fa={class:"index-entry"},ma={class:"index-entry-stats"},ga={class:"stat-box"},ya={class:"stat-number"},ka={class:"setting-section help-section"},ha={class:"help-collapse-group"},wa={class:"trigger-table-wrapper"},ba={class:"trigger-table"},Ca={class:"doc-links"},$a={class:"version-modal-content"},xa={class:"version-change"},_a={class:"version-number current"},Da={class:"version-number new"},Ta={key:0,class:"latest-info"},Ia={class:"latest-text"},Sa={class:"dispatch-config-content"},Ea={class:"radio-group"},Ma=["checked"],Va=["checked"],Ba=["checked"],Aa={key:0,class:"warning-block"},Ra={key:1,class:"info-block"},Pa=_e({__name:"SettingsModal",props:{visible:{type:Boolean}},emits:["update:visible","tutorialCreated","workspaceImported"],setup(Q,{emit:de}){const C=et(),h=Ve(),f=i(null),B="2026-04-03T03:36:17.050Z",T=i(null),A=i(!1),_=i(null),P=i(null),R=i(!1),y=i(!1),O=i(null);async function H(){try{const V=await fetch("/api/backup/global");if(V.ok){const t=await V.json();O.value=t.backups?.length??0}}catch{}}const W=i(!1),D=i("none"),K=ye(()=>{switch(se.value){case"none":return"每次询问";case"git":return"Git 模式";case"no-git":return"无 Git 模式";default:return"-"}}),I=ye(()=>{if(!f.value?.codeBuildTime||!B)return!1;const V=new Date(f.value.codeBuildTime).getTime(),t=new Date(B).getTime();return Math.abs(V-t)/1e3>100}),Y=Q,te=de,se=i("none"),w=i(!1);Ee(()=>Y.visible,async V=>{if(V){await C.loadSettings(),se.value=C.settings.defaultDispatchMode;const[t,m,pe]=await Promise.allSettled([Ie.getDevInfo(),Pe.getInstallationStatus(),fetch("/api/version").then(he=>he.ok?he.json():null)]);t.status==="fulfilled"&&(f.value=t.value),m.status==="fulfilled"&&(_.value=m.value),pe.status==="fulfilled"&&pe.value&&(T.value=pe.value);try{P.value=await ie.getIndexStats()}catch{}H()}});async function M(){try{P.value=await ie.getIndexStats()}catch{}}function ue(){R.value=!0}function N(){M(),te("workspaceImported")}function S(V){return V?new Date(V).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):"-"}function L(V){const t=V.components;return t.mcp.outdated||t.hooks.outdated||t.agents.outdated||t.skills.outdated}function j(V){return V.supported?V.installed?V.outdated?"outdated":"installed":"not-installed":"unsupported"}function oe(){te("update:visible",!1)}function U(V){D.value=V}function X(){D.value=se.value,W.value=!0}function ee(){W.value=!1}async function ae(){if(C.settings.defaultDispatchMode!=="git"&&D.value==="git"){w.value=!0;return}await q()}async function q(){try{await C.updateSettings({defaultDispatchMode:D.value}),se.value=D.value,h.success("配置已保存"),W.value=!1}catch{h.error("保存失败")}}function ce(){window.open("/docs","_blank")}function r(){A.value=!0}async function u(){const V="zero-workspace update";try{await navigator.clipboard.writeText(V),h.success("已复制到剪贴板")}catch{h.error("复制失败")}}function p(){window.open("https://www.npmjs.com/package/zero-workspace","_blank")}const Z=i(!1),ve=i(!1);function ke(){ve.value=!0}async function Te(){if(!Z.value){Z.value=!0;try{const V=await Pe.triggerTutorial();h.success(V.message||"已生成功能介绍与版本更新记录"),te("tutorialCreated")}catch(V){console.error("[Tutorial] generate failed:",V),h.error("生成失败")}finally{Z.value=!1}}}return(V,t)=>(l(),n(z,null,[k($e,{"model-value":Q.visible,title:"SETTINGS",width:"600px","onUpdate:modelValue":t[1]||(t[1]=m=>!m&&oe()),onClose:oe},{footer:$(()=>[k(F,{variant:"primary",onClick:oe},{default:$(()=>[...t[41]||(t[41]=[x("关闭",-1)])]),_:1})]),default:$(()=>[e("div",Ps,[e("div",Ns,[t[18]||(t[18]=e("div",{class:"setting-section-title"},"版本信息",-1)),e("div",zs,[e("div",Ls,[t[12]||(t[12]=e("label",null,"BACKEND VERSION",-1)),e("div",Us,[e("span",Os,"v"+c(f.value?.packageVersion||"-"),1),T.value?(l(),n("span",{key:0,class:E(["version-status-tag",{update:T.value.updateAvailable,latest:!T.value.updateAvailable}]),onClick:r},c(T.value.updateAvailable?"UPDATE":"LATEST"),3)):b("",!0)])]),e("div",Ws,[t[13]||(t[13]=e("label",null,"NODE VERSION",-1)),e("div",Fs,c(f.value?.nodeVersion||"-"),1)]),f.value?.isDev?(l(),n(z,{key:0},[e("div",js,[t[14]||(t[14]=e("label",null,"后端编译",-1)),e("div",Gs,c(S(f.value?.codeBuildTime)),1)]),e("div",Hs,[t[15]||(t[15]=e("label",null,"前端编译",-1)),e("div",Ks,c(S(Ce(B))),1)]),e("div",Zs,[t[16]||(t[16]=e("label",null,"服务启动",-1)),e("div",Js,c(S(f.value?.serverStartTime)),1)])],64)):b("",!0)]),I.value&&f.value?.isDev?(l(),n("div",Ys," [WARN] 前后端编译时间不一致,若为版本更新后需要指示 AI 重新编译前后端 ")):b("",!0),e("div",{class:"version-links"},[e("a",{class:"version-link",href:"javascript:void(0)",onClick:r},[...t[17]||(t[17]=[x(" 检查版本更新 ",-1),e("span",{class:"version-link-arrow"},"→",-1)])])])]),e("div",qs,[t[21]||(t[21]=e("div",{class:"setting-section-title"},"派发行为配置",-1)),t[22]||(t[22]=e("div",{class:"setting-section-desc"}," 设置在工作区启用派发时的默认行为 ",-1)),e("div",Qs,[t[20]||(t[20]=e("div",{class:"config-entry-info"},[e("div",{class:"config-entry-title"},"默认派发模式"),e("div",{class:"config-entry-desc"},"已启用派发的工作区不受影响")],-1)),e("div",Xs,c(K.value),1),k(F,{variant:"primary",onClick:X},{default:$(()=>[...t[19]||(t[19]=[x("配置",-1)])]),_:1})])]),e("div",ea,[t[25]||(t[25]=e("div",{class:"setting-section-title"},"插件详情",-1)),t[26]||(t[26]=e("div",{class:"setting-section-desc"}," 各平台的组件安装状态 ",-1)),_.value?(l(),n("div",ta,[e("div",sa,[e("div",aa,[t[23]||(t[23]=e("span",{class:"platform-name"},"CLAUDE CODE",-1)),e("span",{class:E(["platform-status",{installed:_.value.platforms.claudeCode.enabled&&!L(_.value.platforms.claudeCode),outdated:_.value.platforms.claudeCode.enabled&&L(_.value.platforms.claudeCode),disabled:!_.value.platforms.claudeCode.enabled}])},c(_.value.platforms.claudeCode.enabled?L(_.value.platforms.claudeCode)?"UPDATE":"INSTALLED":"NOT INSTALLED"),3)]),e("div",la,[(l(),n(z,null,re(["mcp","hooks","agents","skills"],m=>e("div",{key:m,class:"component-cell"},[e("span",{class:E(["status-block",j(_.value.platforms.claudeCode.components[m])])},null,2),e("span",{class:E(["component-name",j(_.value.platforms.claudeCode.components[m])])},c(m.charAt(0).toUpperCase()+m.slice(1)),3)])),64))])]),e("div",na,[e("div",oa,[t[24]||(t[24]=e("span",{class:"platform-name"},"CURSOR",-1)),e("span",{class:E(["platform-status",{installed:_.value.platforms.cursor.enabled&&!L(_.value.platforms.cursor),outdated:_.value.platforms.cursor.enabled&&L(_.value.platforms.cursor),disabled:!_.value.platforms.cursor.enabled}])},c(_.value.platforms.cursor.enabled?L(_.value.platforms.cursor)?"UPDATE":"INSTALLED":"NOT INSTALLED"),3)]),e("div",ia,[(l(),n(z,null,re(["mcp","hooks","agents","skills"],m=>e("div",{key:m,class:"component-cell"},[e("span",{class:E(["status-block",j(_.value.platforms.cursor.components[m])])},null,2),e("span",{class:E(["component-name",j(_.value.platforms.cursor.components[m])])},c(m.charAt(0).toUpperCase()+m.slice(1)),3)])),64))])])])):(l(),n("div",ra," 加载中... ")),t[27]||(t[27]=e("div",{class:"command-bar"},[e("span",{class:"command-label"},"插件安装方式"),e("span",{class:"command-text"},"zero-workspace setup")],-1))]),e("div",da,[t[34]||(t[34]=e("div",{class:"setting-section-title"},"数据管理",-1)),t[35]||(t[35]=e("div",{class:"setting-section-desc"}," 管理工作区索引和全局备份 ",-1)),e("div",ua,[t[30]||(t[30]=e("div",{class:"index-entry-info"},[e("div",{class:"index-entry-title"},"工作区索引"),e("div",{class:"index-entry-desc"},"导入外部工作区或管理本地索引")],-1)),e("div",ca,[e("div",va,[e("div",pa,c(P.value?.total??"-"),1),t[28]||(t[28]=e("div",{class:"stat-label"},"已索引",-1))])]),k(F,{variant:"primary",onClick:ue},{default:$(()=>[...t[29]||(t[29]=[x("管理",-1)])]),_:1})]),e("div",fa,[t[33]||(t[33]=e("div",{class:"index-entry-info"},[e("div",{class:"index-entry-title"},"全局备份"),e("div",{class:"index-entry-desc"},"创建、恢复或导入工作台备份文件")],-1)),e("div",ma,[e("div",ga,[e("div",ya,c(O.value??"-"),1),t[31]||(t[31]=e("div",{class:"stat-label"},"备份",-1))])]),k(F,{variant:"primary",onClick:t[0]||(t[0]=m=>y.value=!0)},{default:$(()=>[...t[32]||(t[32]=[x("管理",-1)])]),_:1})])]),e("div",ka,[t[39]||(t[39]=e("div",{class:"setting-section-title"},"用户帮助",-1)),t[40]||(t[40]=e("div",{class:"setting-section-desc"}," 在对话中使用 ZeroWorkspace 的指南 ",-1)),e("div",ha,[k(Ue,{title:"快速入门"},{default:$(()=>[k(nt,{content:Ce(As)},null,8,["content"])]),_:1}),k(Ue,{title:"触发词速查"},{default:$(()=>[e("div",wa,[e("table",ba,[t[36]||(t[36]=e("thead",null,[e("tr",null,[e("th",null,"意图"),e("th",null,"说法")])],-1)),e("tbody",null,[(l(!0),n(z,null,re(Ce(Rs),m=>(l(),n("tr",{key:m.intent},[e("td",null,c(m.intent),1),e("td",null,c(m.phrases.join(" / ")),1)]))),128))])])])]),_:1})]),e("div",Ca,[e("a",{class:"doc-link",href:"javascript:void(0)",onClick:ce},[...t[37]||(t[37]=[x(" 查看完整手册 ",-1),e("span",{class:"doc-link-arrow"},"→",-1)])]),e("a",{class:E(["doc-link",{disabled:Z.value}]),href:"javascript:void(0)",onClick:ke},[x(c(Z.value?"生成中...":"生成功能介绍与版本更新记录")+" ",1),t[38]||(t[38]=e("span",{class:"doc-link-arrow"},"→",-1))],2)])])])]),_:1},8,["model-value"]),k(Se,{modelValue:w.value,"onUpdate:modelValue":t[2]||(t[2]=m=>w.value=m),title:"Git 模式警告",message:"选择此选项后,启用派发时将自动使用 Git 模式(自动创建分支、提交、回滚)。此功能为实验性功能,可能会影响 Git 历史。确定要设置吗?",type:"warning","confirm-text":"确定设置","cancel-text":"取消",onConfirm:q},null,8,["modelValue"]),k(ws,{visible:R.value,"onUpdate:visible":t[3]||(t[3]=m=>R.value=m),onWorkspaceImported:N},null,8,["visible"]),k(Ge,{visible:y.value,"onUpdate:visible":t[4]||(t[4]=m=>y.value=m),onChange:H},null,8,["visible"]),k(Se,{modelValue:ve.value,"onUpdate:modelValue":t[5]||(t[5]=m=>ve.value=m),title:"生成功能介绍",message:"将重新生成「功能简介」和「版本更新」工作区。如果已存在,将被覆盖。确定继续吗?",type:"info","confirm-text":"确定生成","cancel-text":"取消",onConfirm:Te},null,8,["modelValue"]),k($e,{modelValue:A.value,"onUpdate:modelValue":t[7]||(t[7]=m=>A.value=m),title:"VERSION INFO",width:"480px"},{footer:$(()=>[e("button",{class:"btn-secondary",onClick:p},"查看 NPM"),e("button",{class:"btn-primary",onClick:t[6]||(t[6]=m=>A.value=!1)},"关闭")]),default:$(()=>[e("div",$a,[e("div",xa,[e("span",_a,c(T.value?.currentVersion),1),T.value?.updateAvailable?(l(),n(z,{key:0},[t[42]||(t[42]=e("span",{class:"version-arrow"},"→",-1)),e("span",Da,c(T.value?.latestVersion),1)],64)):b("",!0)]),T.value?.updateAvailable?(l(),n(z,{key:1},[e("div",{class:"update-section"},[t[46]||(t[46]=e("h3",{class:"section-title"},"更新方式",-1)),t[47]||(t[47]=e("p",{class:"section-desc"},"在终端中运行以下命令:",-1)),e("div",{class:"command-box-clickable",onClick:u,title:"点击复制"},[...t[45]||(t[45]=[e("code",{class:"command-code"},"zero-workspace update",-1),e("span",{class:"copy-hint"},"COPY",-1)])])]),t[48]||(t[48]=e("div",{class:"tip-box"},[e("span",{class:"tip-label"},"TIP"),e("span",{class:"tip-text"},"更新后需重启 AI 工具使新版本生效")],-1))],64)):(l(),n("div",Ta,[t[43]||(t[43]=e("div",{class:"latest-graphic"},[e("div",{class:"sync-block-back"}),e("div",{class:"sync-block-front"}),e("div",{class:"sync-dot"})],-1)),t[44]||(t[44]=e("div",{class:"latest-title"},"已是最新版本",-1)),e("div",Ia,"v"+c(T.value?.currentVersion),1)]))])]),_:1},8,["modelValue"]),k($e,{modelValue:W.value,"onUpdate:modelValue":t[11]||(t[11]=m=>W.value=m),title:"DISPATCH CONFIG",width:"520px"},{footer:$(()=>[k(F,{variant:"cancel",onClick:ee},{default:$(()=>[...t[54]||(t[54]=[x("取消",-1)])]),_:1}),k(F,{variant:"primary",onClick:ae,loading:Ce(C).loading},{default:$(()=>[...t[55]||(t[55]=[x(" 保存 ",-1)])]),_:1},8,["loading"])]),default:$(()=>[e("div",Sa,[e("div",Ea,[e("label",{class:E(["radio-card",{selected:D.value==="none"}]),onClick:t[8]||(t[8]=m=>U("none"))},[e("input",{type:"radio",name:"dispatch-mode",checked:D.value==="none"},null,8,Ma),t[49]||(t[49]=e("div",null,[e("span",{class:"radio-card-title"},"每次询问 (Recommended)"),e("span",{class:"radio-card-desc"},"启用派发时弹窗让用户选择模式。")],-1))],2),e("label",{class:E(["radio-card",{selected:D.value==="no-git"}]),onClick:t[9]||(t[9]=m=>U("no-git"))},[e("input",{type:"radio",name:"dispatch-mode",checked:D.value==="no-git"},null,8,Va),t[50]||(t[50]=e("div",null,[e("span",{class:"radio-card-title"},"自动使用无 Git 模式"),e("span",{class:"radio-card-desc"},"直接启用派发,仅更新元数据,不影响代码仓库。")],-1))],2),e("label",{class:E(["radio-card",{selected:D.value==="git"}]),onClick:t[10]||(t[10]=m=>U("git"))},[e("input",{type:"radio",name:"dispatch-mode",checked:D.value==="git"},null,8,Ba),t[51]||(t[51]=e("div",null,[e("span",{class:"radio-card-title"},"自动使用 Git 模式 (Experimental)"),e("span",{class:"radio-card-desc"},"直接启用派发,自动创建分支、提交、回滚。")],-1))],2)]),D.value==="git"?(l(),n("div",Aa,[...t[52]||(t[52]=[e("div",{class:"warning-title"},"GIT MODE RISKS",-1),e("ul",{class:"warning-list"},[e("li",null,[x("自动创建 "),e("span",{class:"code-tag"},"zero_workspace/process/*"),x(" 分支")]),e("li",null,"任务完成时自动提交代码"),e("li",null,[x("测试失败时执行 "),e("span",{class:"code-tag"},"git reset --hard"),x("(可能丢失未提交代码)")]),e("li",null,"合并时可能产生冲突")],-1)])])):b("",!0),D.value==="no-git"?(l(),n("div",Ra,[...t[53]||(t[53]=[e("div",{class:"info-title"},"NO-GIT MODE LIMITS",-1),e("ul",{class:"info-list"},[e("li",null,"测试失败时无法自动回滚"),e("li",null,"建议在执行前手动备份重要文件")],-1)])])):b("",!0)])]),_:1},8,["modelValue"])],64))}}),Na=De(Pa,[["__scopeId","data-v-799a9b16"]]),za={class:"home-view"},La={class:"header"},Ua={class:"header-actions"},Oa=["title"],Wa={key:0,class:"icon-sun",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},Fa={key:1,class:"icon-moon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},ja=["disabled"],Ga={key:0,class:"plugin-update-banner"},Ha={class:"filter-bar"},Ka={class:"filter-left"},Za={class:"tabs"},Ja={class:"filter-right"},Ya={class:"custom-select-dropdown"},qa={class:"main-content"},Qa={key:0,class:"empty-state"},Xa={class:"empty-state-title"},el={key:1,class:"card-grid"},tl={class:"card-header"},sl=["onClick"],al=["onClick"],ll=["onClick"],nl={class:"card-body"},ol=["title"],il={class:"meta-info"},rl={class:"card-footer"},dl=["onClick"],ul=["onClick"],cl=["onClick"],vl=["onClick"],pl=["onClick"],fl=["onClick"],ml={class:"form-group"},gl={class:"form-group"},yl=["disabled"],kl={key:1,class:"dev-badge",title:"开发模式 - 点击设置查看详细版本信息"},hl={class:"error-message-box"},wl={key:0,class:"diagnose-result"},bl={class:"diagnose-header"},Cl={class:"diagnose-summary"},$l={class:"issue-list"},xl={class:"issue-icon"},_l={class:"issue-message"},Dl={key:0,class:"issue-tag tag-auto"},Tl={key:1,class:"issue-tag tag-cli"},Il={key:2,class:"issue-tag tag-manual"},Sl={key:0,class:"no-issues"},El={key:1,class:"cli-hint-box"},Ml={class:"cli-hint-command"},Vl={class:"cli-command"},Bl=["disabled"],Al=["disabled"],Rl=["disabled"],Oe="zero-plugin-banner-dismissed-date",We="zero-workspace-home-preferences",Pl=_e({__name:"HomeView",setup(Q,{expose:de}){const C=st(),h=at(),f=Ve(),B=i("light"),T=i(!1),A=i(!1),_=i(!1),P=i(!1),R=i(""),y=i(""),O=i("info"),H=i(null),W=i(!1),D=i(""),K=i(""),I=i(null);function Y(){return new Date().toISOString().split("T")[0]??""}function te(){return localStorage.getItem(Oe)===Y()}const se=i(te());function w(d){const s=d.components;return s.mcp.outdated||s.hooks.outdated||s.agents.outdated||s.skills.outdated}const M=ye(()=>{if(se.value||!I.value)return!1;const{claudeCode:d,cursor:s}=I.value.platforms;return d.enabled&&w(d)||s.enabled&&w(s)});function ue(){se.value=!0,localStorage.setItem(Oe,Y())}function N(){A.value=!0}const S=i({name:"",goal:"",rules:[],docs:[]});function L(){try{const d=localStorage.getItem(We);if(d)return JSON.parse(d)}catch{}return{statusFilter:"all",sortBy:"updatedAt",sortOrder:"desc",theme:"light"}}function j(){const d={statusFilter:U.value,sortBy:ee.value,sortOrder:ae.value,theme:B.value};localStorage.setItem(We,JSON.stringify(d))}const oe=L(),U=i(oe.statusFilter),X=i(""),ee=i(oe.sortBy),ae=i(oe.sortOrder),q=i(!1);B.value=oe.theme;function ce(){q.value=!1}Le(()=>{document.addEventListener("click",ce)});const r=i(null);function u(){B.value=B.value==="light"?"dark":"light",document.documentElement.setAttribute("data-theme",B.value),j()}const p=i(!1);async function Z(){if(!p.value){p.value=!0;try{await h.fetchWorkspaces("all"),f.success("刷新成功")}catch{f.error("刷新失败")}finally{p.value=!1}}}de({handleRefresh:Z}),Le(async()=>{document.documentElement.setAttribute("data-theme",B.value);try{await h.fetchWorkspaces("all")}catch{f.error("加载失败","无法加载工作区列表")}try{r.value=await Ie.getDevInfo()}catch{}try{I.value=await Pe.getInstallationStatus()}catch{}const d=lt();d.connect(),d.on("workspace_updated",()=>{console.log("[SSE] 收到工作区更新,刷新列表"),h.fetchWorkspaces("all")})}),Ee([U,ee,ae,B],()=>{j()});async function ve(){if(!S.value.name||!S.value.goal){f.warning("请填写名称和目标");return}try{await h.createWorkspace(S.value),f.success("创建成功"),T.value=!1,S.value={name:"",goal:"",rules:[],docs:[]}}catch{f.error("创建失败")}}function ke(d,s,J,v){R.value=d,y.value=s,O.value=J,H.value=v,P.value=!0}async function Te(){H.value&&(await H.value(),H.value=null)}function V(d,s){ke("删除确认",`确定要删除工作区「${s}」吗?此操作不可撤销。`,"danger",async()=>{await h.deleteWorkspace(d,!0),f.success("删除成功")})}function t(d,s){ke("归档确认",`确定要归档工作区「${s}」吗?`,"info",async()=>{await h.archiveWorkspace(d),f.success("归档成功")})}function m(d,s){ke("恢复确认",`确定要恢复工作区「${s}」吗?`,"info",async()=>{await h.restoreWorkspace(d),f.success("恢复成功")})}function pe(d){if(d.status==="error"){he(d);return}C.push(`/workspace/${d.id}`)}function he(d){const s=d.errorInfo,J=s?`错误类型:${s.type||"未知"}
8
+ 错误信息:${s.message}
9
+ 检测时间:${ge(s.detectedAt)}`:"未知错误";D.value=`工作区「${d.name}」出错`,K.value=J,le.value=d,W.value=!0}const le=i(null),fe=i(!1),G=i(null),we=i(!1),me=i(!1);async function Me(){if(!(!le.value||we.value)){we.value=!0,G.value=null;try{G.value=await Ie.diagnose(le.value.id)}catch(d){const s=d instanceof Error?d.message:"诊断失败";f.error("诊断失败",s)}finally{we.value=!1}}}async function Be(){if(!le.value||me.value||!G.value)return;const d=G.value.issues.filter(s=>s.fixType==="auto").map(s=>s.id);if(d.length===0){f.warning("没有可自动修复的问题");return}me.value=!0;try{const s=await Ie.repair(le.value.id,d);s.fixed>0&&(f.success("修复完成",`成功修复 ${s.fixed} 个问题`),await Me(),await h.fetchWorkspaces("all")),s.failed>0&&f.warning("部分修复失败",`${s.failed} 个问题修复失败`)}catch(s){const J=s instanceof Error?s.message:"修复失败";f.error("修复失败",J)}finally{me.value=!1}}function Ae(){if(!le.value)return;const d=`tw repair ${le.value.id}`;navigator.clipboard.writeText(d).then(()=>{f.success("已复制",d)}).catch(()=>{f.error("复制失败","请手动复制命令")})}async function o(){if(!(!le.value||fe.value)){fe.value=!0;try{const d=await Ie.reload(le.value.id);d.success?(f.success("重新加载成功",d.message),W.value=!1,G.value=null,await h.fetchWorkspaces("all")):f.error("重新加载失败",d.message)}catch(d){const s=d instanceof Error?d.message:"重新加载失败";f.error("重新加载失败",s)}finally{fe.value=!1}}}function a(d){return d.fixType==="auto"?"✓":d.fixType==="interactive"?"⚠":"✗"}function g(d){return d.fixType==="auto"?"issue-auto":d.fixType==="interactive"?"issue-interactive":"issue-manual"}function ge(d){return new Date(d).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}const Ne=ye(()=>{let d=[];if(U.value==="active"?d=[...h.activeWorkspaces]:U.value==="archived"?d=[...h.archivedWorkspaces]:U.value==="error"?d=h.workspaces.filter(s=>s.status==="error"):d=[...h.workspaces],X.value.trim()){const s=X.value.toLowerCase().trim();d=d.filter(J=>J.name.toLowerCase().includes(s)||J.projectRoot.toLowerCase().includes(s))}return d.sort((s,J)=>{if(s.pinned&&!J.pinned)return-1;if(!s.pinned&&J.pinned)return 1;const v=new Date(s[ee.value]).getTime(),ne=new Date(J[ee.value]).getTime();return ae.value==="desc"?ne-v:v-ne}),d});function He(d){if(!d)return"";const s=d.split("/");return s.length<=2?d:".../"+s.slice(-2).join("/")}function Ke(){ae.value=ae.value==="desc"?"asc":"desc"}function Ze(d){return d==="active"?"badge-active":d==="error"?"badge-error":"badge-archived"}function Je(d){return d==="active"?"Active":d==="error"?"Error":"Archived"}async function ze(d,s){s.stopPropagation();try{await h.togglePin(d)}catch(J){f.error(J instanceof Error?J.message:"置顶操作失败")}}return(d,s)=>{const J=tt("loading");return l(),n("div",za,[e("header",La,[s[26]||(s[26]=e("div",{class:"logo"},[e("img",{src:ot,alt:"ZeroWorkspace",class:"logo-img"})],-1)),e("div",Ua,[e("button",{class:"theme-toggle",onClick:u,title:B.value==="light"?"切换到深色模式":"切换到浅色模式"},[B.value==="light"?(l(),n("svg",Wa,[...s[21]||(s[21]=[Re('<circle cx="12" cy="12" r="5" data-v-1e83d67d></circle><line x1="12" y1="1" x2="12" y2="3" data-v-1e83d67d></line><line x1="12" y1="21" x2="12" y2="23" data-v-1e83d67d></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64" data-v-1e83d67d></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78" data-v-1e83d67d></line><line x1="1" y1="12" x2="3" y2="12" data-v-1e83d67d></line><line x1="21" y1="12" x2="23" y2="12" data-v-1e83d67d></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36" data-v-1e83d67d></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22" data-v-1e83d67d></line>',9)])])):(l(),n("svg",Fa,[...s[22]||(s[22]=[e("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"},null,-1)])]))],8,Oa),e("button",{class:"btn btn-secondary",onClick:Z,disabled:p.value,title:"刷新数据"},[e("span",{class:E({spin:p.value})},"⇄",2),s[23]||(s[23]=x(" SYNC ",-1))],8,ja),e("button",{class:"btn btn-secondary",onClick:s[0]||(s[0]=v=>_.value=!0),title:"备份管理"},[...s[24]||(s[24]=[e("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),e("polyline",{points:"9 13 12 16 15 13"}),e("line",{x1:"12",y1:"16",x2:"12",y2:"8"})],-1),x(" BACKUP ",-1)])]),e("button",{class:"btn btn-secondary",onClick:s[1]||(s[1]=v=>A.value=!0),title:"设置"},[...s[25]||(s[25]=[Re('<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" data-v-1e83d67d><line x1="1" y1="3" x2="15" y2="3" data-v-1e83d67d></line><rect x="10" y="1" width="3" height="4" fill="currentColor" stroke="none" data-v-1e83d67d></rect><line x1="1" y1="8" x2="15" y2="8" data-v-1e83d67d></line><rect x="4" y="6" width="3" height="4" fill="currentColor" stroke="none" data-v-1e83d67d></rect><line x1="1" y1="13" x2="15" y2="13" data-v-1e83d67d></line><rect x="8" y="11" width="3" height="4" fill="currentColor" stroke="none" data-v-1e83d67d></rect></svg> SETTINGS ',2)])]),e("button",{class:"btn btn-primary",onClick:s[2]||(s[2]=v=>T.value=!0)},"+ NEW")])]),M.value?(l(),n("div",Ga,[e("div",{class:"banner-content"},[s[27]||(s[27]=e("span",{class:"banner-tag"},"UPDATE",-1)),s[28]||(s[28]=e("span",{class:"banner-text"},"部分插件需要更新以获取最新功能",-1)),e("button",{class:"banner-action",onClick:N},"查看")]),e("button",{class:"banner-close",onClick:ue,title:"关闭提示"},"✕")])):b("",!0),e("div",Ha,[e("div",Ka,[e("div",Za,[e("div",{class:E(["tab",{active:U.value==="all"}]),onClick:s[3]||(s[3]=v=>U.value="all")},"全部",2),e("div",{class:E(["tab",{active:U.value==="active"}]),onClick:s[4]||(s[4]=v=>U.value="active")},"活跃",2),e("div",{class:E(["tab",{active:U.value==="archived"}]),onClick:s[5]||(s[5]=v=>U.value="archived")},"已归档",2),e("div",{class:E(["tab",{active:U.value==="error"}]),onClick:s[6]||(s[6]=v=>U.value="error")},"错误",2)]),be(e("input",{type:"text",class:"search-input","onUpdate:modelValue":s[7]||(s[7]=v=>X.value=v),placeholder:"搜索名称或路径..."},null,512),[[xe,X.value]])]),e("div",Ja,[e("div",{class:E(["custom-select",{open:q.value}])},[e("div",{class:"custom-select-trigger",onClick:s[8]||(s[8]=je(v=>q.value=!q.value,["stop"]))},c(ee.value==="updatedAt"?"更新时间":"创建时间"),1),e("div",Ya,[e("div",{class:E(["custom-select-option",{selected:ee.value==="createdAt"}]),onClick:s[9]||(s[9]=v=>{ee.value="createdAt",q.value=!1})},"创建时间",2),e("div",{class:E(["custom-select-option",{selected:ee.value==="updatedAt"}]),onClick:s[10]||(s[10]=v=>{ee.value="updatedAt",q.value=!1})},"更新时间",2)])],2),e("button",{class:E(["btn btn-icon",{desc:ae.value==="desc"}]),onClick:Ke,title:"切换排序方向"},[...s[29]||(s[29]=[e("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M7 10l5 5 5-5"})],-1)])],2)])]),e("main",qa,[Ne.value.length===0&&!Ce(h).loading?(l(),n("div",Qa,[s[30]||(s[30]=Re('<div class="empty-state-icon" data-v-1e83d67d><svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" data-v-1e83d67d><rect x="3" y="3" width="18" height="18" rx="2" data-v-1e83d67d></rect><line x1="12" y1="8" x2="12" y2="16" data-v-1e83d67d></line><line x1="8" y1="12" x2="16" y2="12" data-v-1e83d67d></line></svg></div>',1)),e("div",Xa,c(X.value?"没有匹配的工作区":"暂无工作区"),1),s[31]||(s[31]=e("div",{class:"empty-state-desc"},"创建一个新的工作区来开始管理你的任务",-1)),e("button",{class:"btn btn-primary",onClick:s[11]||(s[11]=v=>T.value=!0)},"+ 新建工作区")])):be((l(),n("div",el,[(l(!0),n(z,null,re(Ne.value,v=>(l(),n("div",{key:v.id,class:E(["card",{archived:v.status==="archived",pinned:v.pinned}])},[e("div",tl,[e("h3",{class:"card-title",onClick:ne=>v.status!=="error"&&pe(v)},c(v.name),9,sl),v.pinned?(l(),n("span",{key:0,class:"pin-badge pin-badge-active",onClick:ne=>ze(v.id,ne)},"PIN",8,al)):(l(),n("span",{key:1,class:"pin-badge pin-badge-hint",onClick:ne=>ze(v.id,ne)},"PIN",8,ll)),e("span",{class:E(["badge",Ze(v.status)])},c(Je(v.status)),3)]),e("div",nl,[e("div",{class:"path-box",title:v.projectRoot},c(He(v.projectRoot)),9,ol),e("div",il,[e("span",null,"Created: "+c(ge(v.createdAt)),1),e("span",null,"Updated: "+c(ge(v.updatedAt)),1)])]),e("div",rl,[v.status==="error"?(l(),n(z,{key:0},[e("button",{class:"btn btn-accent",onClick:ne=>he(v)},"查看错误",8,dl),e("button",{class:"btn btn-danger",onClick:ne=>V(v.id,v.name)},"删除",8,ul)],64)):(l(),n(z,{key:1},[e("button",{class:"btn btn-accent",onClick:ne=>pe(v)},"进入 >",8,cl),v.status==="active"?(l(),n("button",{key:0,class:"btn btn-ghost",onClick:ne=>t(v.id,v.name)},"归档",8,vl)):(l(),n("button",{key:1,class:"btn btn-ghost",onClick:ne=>m(v.id,v.name)},"恢复",8,pl)),e("button",{class:"btn btn-danger",onClick:ne=>V(v.id,v.name)},"删除",8,fl)],64))])],2))),128))])),[[J,Ce(h).loading]])]),k($e,{modelValue:T.value,"onUpdate:modelValue":s[15]||(s[15]=v=>T.value=v),title:"NEW WORKSPACE"},{footer:$(()=>[e("button",{class:"btn btn-cancel",onClick:s[14]||(s[14]=v=>T.value=!1)},"取消"),e("button",{class:"btn btn-primary",onClick:ve,disabled:Ce(h).loading},"创建",8,yl)]),default:$(()=>[e("div",ml,[s[32]||(s[32]=e("label",{class:"form-label"},"工作区名称",-1)),be(e("input",{type:"text",class:"form-input","onUpdate:modelValue":s[12]||(s[12]=v=>S.value.name=v),placeholder:"输入工作区名称..."},null,512),[[xe,S.value.name]])]),e("div",gl,[s[33]||(s[33]=e("label",{class:"form-label"},"目标描述",-1)),be(e("textarea",{class:"form-input form-textarea","onUpdate:modelValue":s[13]||(s[13]=v=>S.value.goal=v),placeholder:"描述工作区的目标...",rows:"3"},null,512),[[xe,S.value.goal]])])]),_:1},8,["modelValue"]),k(Na,{visible:A.value,"onUpdate:visible":s[16]||(s[16]=v=>A.value=v),onTutorialCreated:Z,onWorkspaceImported:Z},null,8,["visible"]),k(Ge,{visible:_.value,"onUpdate:visible":s[17]||(s[17]=v=>_.value=v)},null,8,["visible"]),r.value?.isDev?(l(),n("div",kl," DEV ")):b("",!0),k(Se,{modelValue:P.value,"onUpdate:modelValue":s[18]||(s[18]=v=>P.value=v),title:R.value,message:y.value,type:O.value,onConfirm:Te},null,8,["modelValue","title","message","type"]),k($e,{modelValue:W.value,"onUpdate:modelValue":s[20]||(s[20]=v=>W.value=v),title:D.value,width:"520px"},{footer:$(()=>[e("button",{class:"btn btn-secondary",onClick:Me,disabled:we.value},c(we.value?"诊断中...":"诊断"),9,Bl),G.value&&G.value.summary.autoFixable>0?(l(),n("button",{key:0,class:"btn btn-accent",onClick:Be,disabled:me.value},c(me.value?"修复中...":`自动修复 (${G.value.summary.autoFixable})`),9,Al)):b("",!0),e("button",{class:"btn btn-secondary",onClick:o,disabled:fe.value},c(fe.value?"加载中...":"重新加载"),9,Rl),e("button",{class:"btn btn-primary",onClick:s[19]||(s[19]=v=>{W.value=!1,G.value=null})},"关闭")]),default:$(()=>[e("div",hl,c(K.value),1),G.value?(l(),n("div",wl,[e("div",bl,[s[34]||(s[34]=e("span",{class:"diagnose-title"},"诊断结果",-1)),e("span",Cl,[x(c(G.value.summary.total)+" 个问题 ",1),G.value.summary.autoFixable>0?(l(),n(z,{key:0},[x(" ("+c(G.value.summary.autoFixable)+" 个可自动修复) ",1)],64)):b("",!0)])]),e("div",$l,[(l(!0),n(z,null,re(G.value.issues,v=>(l(),n("div",{key:v.id,class:E(["issue-item",g(v)])},[e("span",xl,c(a(v)),1),e("span",_l,c(v.message),1),v.fixType==="auto"?(l(),n("span",Dl,"可自动修复")):v.fixType==="interactive"?(l(),n("span",Tl,"需 CLI 修复")):(l(),n("span",Il,"需手动修复"))],2))),128))]),G.value.issues.length===0?(l(),n("div",Sl," 未发现问题,可尝试重新加载 ")):b("",!0),G.value.summary.interactiveFixable>0||G.value.summary.manualFixable>0?(l(),n("div",El,[s[36]||(s[36]=e("div",{class:"cli-hint-header"},[e("span",{class:"cli-hint-tag"},"CLI"),e("span",{class:"cli-hint-text"},"部分问题需要在命令行修复")],-1)),e("div",Ml,[e("code",Vl,"tw repair "+c(le.value?.id),1),e("button",{class:"cli-copy-btn",onClick:Ae,title:"复制命令"},[...s[35]||(s[35]=[e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),e("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})],-1)])])])])):b("",!0)])):b("",!0)]),_:1},8,["modelValue","title"])])}}}),Ul=De(Pl,[["__scopeId","data-v-1e83d67d"]]);export{Ul as default};
@@ -1 +1 @@
1
- .ws-collapse[data-v-28a9ec4c]{border:1px solid var(--border-color);background:var(--card-bg)}.collapse-header[data-v-28a9ec4c]{display:flex;align-items:center;gap:8px;padding:12px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s ease}.collapse-header[data-v-28a9ec4c]:hover{background:var(--path-bg)}.collapse-arrow[data-v-28a9ec4c]{display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:transform .25s ease}.is-open .collapse-arrow[data-v-28a9ec4c]{transform:rotate(90deg)}.collapse-title[data-v-28a9ec4c]{font-size:14px;font-weight:600;color:var(--text-main);display:flex;align-items:center;gap:8px}.collapse-title[data-v-28a9ec4c]:before{content:"";display:block;width:4px;height:14px;background:var(--accent-red)}.collapse-content-wrapper[data-v-28a9ec4c]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .25s ease}.is-open .collapse-content-wrapper[data-v-28a9ec4c]{grid-template-rows:1fr}.collapse-content[data-v-28a9ec4c]{overflow:hidden}.is-open .collapse-content[data-v-28a9ec4c]{border-top:1px solid var(--border-color)}.collapse-content[data-v-28a9ec4c]>*{padding:16px}.collapse-content[data-v-28a9ec4c]:empty:before{content:"";display:block;padding:16px}.dialog-overlay[data-v-ea968292]{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000;padding:20px}.dialog[data-v-ea968292]{background:var(--card-bg);border:2px solid var(--border-heavy);box-shadow:8px 8px #00000026;width:450px;max-width:90vw}.dialog-header[data-v-ea968292]{padding:16px 20px;border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between}.dialog-title[data-v-ea968292]{font-size:16px;font-weight:700;color:var(--text-main)}.dialog-close[data-v-ea968292]{background:transparent;border:none;cursor:pointer;padding:4px;color:var(--text-muted);display:flex;align-items:center;justify-content:center}.dialog-close[data-v-ea968292]:hover{color:var(--accent-red)}.dialog-body[data-v-ea968292]{padding:20px}.workspace-preview[data-v-ea968292]{margin-bottom:16px}.preview-label[data-v-ea968292]{font-size:13px;color:var(--text-secondary);margin-bottom:8px}.workspace-list[data-v-ea968292]{background:var(--bg-secondary);border:1px solid var(--border-color);padding:8px 12px;max-height:120px;overflow-y:auto}.workspace-item[data-v-ea968292]{padding:4px 0;display:flex;align-items:center;gap:8px}.workspace-name[data-v-ea968292]{font-size:14px;font-weight:500;color:var(--text-main)}.workspace-existing[data-v-ea968292]{font-size:12px;color:var(--text-muted)}.target-dir-section[data-v-ea968292]{margin-top:16px}.target-label[data-v-ea968292]{font-size:13px;color:var(--text-secondary);margin-bottom:8px}.target-input-row[data-v-ea968292]{display:flex;gap:8px}.target-input[data-v-ea968292]{flex:1;padding:8px 12px;border:1px solid var(--border-color);background:var(--input-bg);color:var(--text-main);font-size:13px;font-family:inherit}.target-input[data-v-ea968292]:focus{outline:none;border-color:var(--accent-primary)}.target-hint[data-v-ea968292]{font-size:11px;color:var(--text-muted);margin-top:4px}.dialog-footer[data-v-ea968292]{padding:16px 20px;border-top:1px solid var(--border-color);display:flex;justify-content:flex-end;gap:8px;background:var(--card-footer)}.modal-fade-enter-active[data-v-ea968292],.modal-fade-leave-active[data-v-ea968292]{transition:opacity .2s ease}.modal-fade-enter-active .dialog[data-v-ea968292],.modal-fade-leave-active .dialog[data-v-ea968292]{transition:transform .2s ease}.modal-fade-enter-from[data-v-ea968292],.modal-fade-leave-to[data-v-ea968292]{opacity:0}.modal-fade-enter-from .dialog[data-v-ea968292],.modal-fade-leave-to .dialog[data-v-ea968292]{transform:scale(.95)}.index-management[data-v-90a2f9d8]{display:flex;flex-direction:column;gap:16px}.stats-bar[data-v-90a2f9d8]{display:flex;gap:20px;padding:12px 16px;background:var(--path-bg);border:1px solid var(--border-color)}.stats-item[data-v-90a2f9d8]{display:flex;align-items:baseline;gap:6px}.stats-number[data-v-90a2f9d8]{font-family:var(--mono-font);font-size:24px;font-weight:700;color:var(--text-main)}.stats-number.success[data-v-90a2f9d8]{color:#2e7d32}[data-theme=dark] .stats-number.success[data-v-90a2f9d8]{color:#66bb6a}.stats-number.danger[data-v-90a2f9d8]{color:var(--accent-red)}.stats-label[data-v-90a2f9d8]{font-size:11px;color:var(--text-muted)}.function-block[data-v-90a2f9d8]{border:1px solid var(--border-color);padding:16px}.function-header[data-v-90a2f9d8]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.function-title[data-v-90a2f9d8]{font-size:13px;font-weight:600;color:var(--text-main);display:flex;align-items:center;gap:8px}.function-title[data-v-90a2f9d8]:before{content:"";width:3px;height:12px;background:var(--accent-red)}.function-desc[data-v-90a2f9d8]{font-size:12px;color:var(--text-muted);margin-top:10px}.drop-zone[data-v-90a2f9d8]{border:2px dashed var(--border-color);padding:24px;text-align:center;cursor:pointer;transition:all .2s;background:var(--path-bg)}.drop-zone[data-v-90a2f9d8]:hover{border-color:var(--border-heavy);background:var(--card-bg)}.drop-zone.dragging[data-v-90a2f9d8]{border-color:var(--accent-red);background:#fff5f5}[data-theme=dark] .drop-zone.dragging[data-v-90a2f9d8]{background:#2d1b1b}.drop-zone.mini[data-v-90a2f9d8]{padding:12px;display:flex;align-items:center;justify-content:center}.drop-zone-icon[data-v-90a2f9d8]{color:var(--text-secondary);margin-bottom:8px}.drop-zone-icon.mini[data-v-90a2f9d8]{margin-bottom:0;margin-right:8px}.drop-zone-text[data-v-90a2f9d8]{font-size:13px;color:var(--text-secondary);margin-bottom:4px}.drop-zone-text.highlight[data-v-90a2f9d8]{color:var(--accent-red);font-weight:600}.drop-zone-hint[data-v-90a2f9d8]{font-size:11px;color:var(--text-muted)}.drop-zone-actions[data-v-90a2f9d8]{margin-top:8px}.selected-item[data-v-90a2f9d8]{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--path-bg);border:1px solid var(--border-color)}.selected-icon[data-v-90a2f9d8]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.selected-icon.file[data-v-90a2f9d8]{background:#e3f2fd;color:#1565c0}[data-theme=dark] .selected-icon.file[data-v-90a2f9d8]{background:#1a3a5c;color:#64b5f6}.selected-icon.folder[data-v-90a2f9d8]{background:#fff8e1}[data-theme=dark] .selected-icon.folder[data-v-90a2f9d8]{background:#3a3010}.selected-info[data-v-90a2f9d8]{flex:1;min-width:0}.selected-name[data-v-90a2f9d8]{font-size:13px;font-weight:600;color:var(--text-main);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selected-meta[data-v-90a2f9d8]{font-size:11px;color:var(--text-muted);font-family:var(--mono-font)}.selected-clear[data-v-90a2f9d8]{width:24px;height:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-muted);font-size:16px;font-weight:300}.selected-clear[data-v-90a2f9d8]:hover{color:var(--accent-red)}.import-action-bar[data-v-90a2f9d8]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding:12px;background:var(--path-bg);border:1px solid var(--border-color)}.target-dir-group[data-v-90a2f9d8]{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.target-dir-label[data-v-90a2f9d8]{font-size:12px;color:var(--text-muted);white-space:nowrap}.target-dir-input[data-v-90a2f9d8]{flex:1;min-width:0;height:28px;padding:0 8px;border:none;border-bottom:1px solid var(--border-color);font-family:var(--mono-font);font-size:11px;background:transparent;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis}.target-dir-input[data-v-90a2f9d8]:focus{outline:none;border-bottom-color:var(--accent-primary)}.alt-input-toggle[data-v-90a2f9d8]{font-size:11px;color:var(--text-muted);cursor:pointer;text-decoration:underline;margin-top:10px;display:inline-block}.alt-input-toggle[data-v-90a2f9d8]:hover{color:var(--text-secondary)}.manual-input-area[data-v-90a2f9d8]{display:flex;flex-direction:column;gap:8px}.alt-input-row[data-v-90a2f9d8]{display:flex;gap:8px}.path-input[data-v-90a2f9d8]{flex:1;height:34px;padding:0 10px;border:1px solid var(--border-color);font-family:var(--mono-font);font-size:12px;background:var(--card-bg);color:var(--text-main)}.path-input[data-v-90a2f9d8]:focus{outline:none;border-color:var(--border-heavy)}.path-input[data-v-90a2f9d8]::placeholder{color:var(--text-muted)}.action-row[data-v-90a2f9d8]{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.result-box[data-v-90a2f9d8]{margin-top:12px;padding:10px 12px;font-size:12px;border-left:3px solid}.result-box.success[data-v-90a2f9d8]{background:#e8f5e9;border-color:#4caf50;color:#2e7d32}[data-theme=dark] .result-box.success[data-v-90a2f9d8]{background:#1b3320;color:#a5d6a7}.result-box.warning[data-v-90a2f9d8]{background:#fff8e1;border-color:#ffc107;color:#856404}[data-theme=dark] .result-box.warning[data-v-90a2f9d8]{background:#2a2010;color:#ffd54f}.result-box.error[data-v-90a2f9d8]{background:#ffebee;border-color:var(--accent-red);color:var(--accent-red)}[data-theme=dark] .result-box.error[data-v-90a2f9d8]{background:#2d1b1b}.warning-list[data-v-90a2f9d8]{margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.1)}[data-theme=dark] .warning-list[data-v-90a2f9d8]{border-top-color:#ffffff1a}.warning-item[data-v-90a2f9d8]{font-size:11px;opacity:.9;padding:2px 0}.result-area[data-v-90a2f9d8]{margin-top:12px;padding:12px;background:var(--path-bg);border:1px solid var(--border-color)}.result-area.done[data-v-90a2f9d8]{background:#e8f5e9;border-color:#4caf50}[data-theme=dark] .result-area.done[data-v-90a2f9d8]{background:#1b3320;border-color:#2e7d32}.result-header[data-v-90a2f9d8]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.result-title[data-v-90a2f9d8]{font-size:11px;font-weight:600;text-transform:uppercase;color:var(--text-muted);letter-spacing:.3px}.result-stats[data-v-90a2f9d8]{display:flex;gap:12px}.stat[data-v-90a2f9d8]{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--text-secondary)}.stat-num[data-v-90a2f9d8]{font-family:var(--mono-font);font-weight:700;color:var(--text-main)}.stat-num.success[data-v-90a2f9d8]{color:#2e7d32}[data-theme=dark] .stat-num.success[data-v-90a2f9d8]{color:#66bb6a}.stat-num.danger[data-v-90a2f9d8]{color:var(--accent-red)}.change-section[data-v-90a2f9d8]{margin-bottom:12px}.change-header[data-v-90a2f9d8]{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;margin-bottom:6px}.change-header.add[data-v-90a2f9d8]{color:#2e7d32}[data-theme=dark] .change-header.add[data-v-90a2f9d8]{color:#66bb6a}.change-header.remove[data-v-90a2f9d8]{color:var(--accent-red)}.change-icon[data-v-90a2f9d8]{width:16px;height:16px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}.ws-list[data-v-90a2f9d8]{max-height:100px;overflow-y:auto}.ws-item[data-v-90a2f9d8]{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--border-color);font-size:12px}.ws-item[data-v-90a2f9d8]:last-child{border-bottom:none}.ws-item.invalid[data-v-90a2f9d8]{color:var(--accent-red)}.ws-name[data-v-90a2f9d8]{color:var(--text-main);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ws-badge[data-v-90a2f9d8]{font-size:10px;padding:2px 6px;border-radius:2px;background:var(--border-color);color:var(--text-muted)}.ws-badge.is-new[data-v-90a2f9d8]{background:#e8f5e9;color:#2e7d32}[data-theme=dark] .ws-badge.is-new[data-v-90a2f9d8]{background:#1b3320;color:#66bb6a}.ws-badge.is-removed[data-v-90a2f9d8]{background:#ffebee;color:var(--accent-red)}[data-theme=dark] .ws-badge.is-removed[data-v-90a2f9d8]{background:#2d1b1b}.ws-reason[data-v-90a2f9d8]{margin-left:auto;font-size:10px;color:var(--accent-red);flex-shrink:0}.ws-more[data-v-90a2f9d8]{padding:6px 0;font-size:11px;color:var(--text-muted);font-style:italic}.no-changes[data-v-90a2f9d8]{display:flex;align-items:center;gap:8px;color:#2e7d32;font-size:12px}[data-theme=dark] .no-changes[data-v-90a2f9d8]{color:#66bb6a}.no-changes-icon[data-v-90a2f9d8]{font-size:14px}.result-area.error[data-v-90a2f9d8]{background:#ffebee;border-color:var(--accent-red)}[data-theme=dark] .result-area.error[data-v-90a2f9d8]{background:#2d1b1b}.error-content[data-v-90a2f9d8]{display:flex;align-items:center;gap:8px;color:var(--accent-red);font-size:12px}.error-icon[data-v-90a2f9d8]{font-size:14px;font-weight:700}.error-message[data-v-90a2f9d8]{flex:1}.backup-manager[data-v-1e59df37]{display:flex;flex-direction:column;gap:16px}.action-bar[data-v-1e59df37]{display:flex;align-items:center;gap:12px}.action-hint[data-v-1e59df37]{font-size:11px;color:var(--text-muted);flex:1}.loading-state[data-v-1e59df37]{text-align:center;color:var(--text-muted);padding:40px 0;font-size:13px}.backup-list[data-v-1e59df37]{display:flex;flex-direction:column;gap:8px;max-height:300px;overflow-y:auto}.backup-item[data-v-1e59df37]{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--path-bg);border:1px solid var(--border-color);transition:border-color .2s}.backup-item[data-v-1e59df37]:hover{border-color:var(--border-heavy)}.backup-icon[data-v-1e59df37]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#e3f2fd;color:#1565c0;flex-shrink:0}[data-theme=dark] .backup-icon[data-v-1e59df37]{background:#1a3a5c;color:#64b5f6}.backup-info[data-v-1e59df37]{flex:1;min-width:0}.backup-name[data-v-1e59df37]{font-size:13px;font-weight:600;color:var(--text-main);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px}.backup-meta[data-v-1e59df37]{display:flex;align-items:center;flex-wrap:wrap;gap:4px;font-size:11px;color:var(--text-muted)}.meta-item[data-v-1e59df37]{font-family:var(--mono-font)}.meta-sep[data-v-1e59df37]{color:var(--border-color)}.trigger-tag[data-v-1e59df37]{padding:1px 6px;background:var(--border-color);font-size:10px}.trigger-tag.manual[data-v-1e59df37]{background:#e3f2fd;color:#1565c0}[data-theme=dark] .trigger-tag.manual[data-v-1e59df37]{background:#1a3a5c;color:#64b5f6}.trigger-tag.beta_update[data-v-1e59df37]{background:#fff8e1;color:#f57c00}[data-theme=dark] .trigger-tag.beta_update[data-v-1e59df37]{background:#2a2010;color:#ffb74d}.trigger-tag.pre_restore[data-v-1e59df37]{background:#e8f5e9;color:#2e7d32}[data-theme=dark] .trigger-tag.pre_restore[data-v-1e59df37]{background:#1b3320;color:#66bb6a}.backup-actions[data-v-1e59df37]{display:flex;gap:4px;flex-shrink:0}.empty-state[data-v-1e59df37]{text-align:center;padding:40px 20px;color:var(--text-muted)}.empty-icon[data-v-1e59df37]{margin-bottom:12px;opacity:.5}.empty-text[data-v-1e59df37]{font-size:14px;font-weight:600;margin-bottom:4px;color:var(--text-secondary)}.empty-hint[data-v-1e59df37]{font-size:12px}.drop-zone[data-v-1e59df37]{border:2px dashed var(--border-color);padding:16px;text-align:center;cursor:pointer;transition:all .2s;background:var(--path-bg);display:flex;align-items:center;justify-content:center;gap:8px}.drop-zone[data-v-1e59df37]:hover{border-color:var(--border-heavy);background:var(--card-bg)}.drop-zone.dragging[data-v-1e59df37]{border-color:var(--accent-red);background:#fff5f5}[data-theme=dark] .drop-zone.dragging[data-v-1e59df37]{background:#2d1b1b}.drop-zone.disabled[data-v-1e59df37]{opacity:.5;cursor:not-allowed}.drop-zone.disabled[data-v-1e59df37]:hover{border-color:var(--border-color);background:var(--path-bg)}.drop-zone-icon[data-v-1e59df37]{color:var(--text-secondary)}.drop-zone-text[data-v-1e59df37]{font-size:12px;color:var(--text-secondary)}.drop-zone-text.highlight[data-v-1e59df37]{color:var(--accent-red);font-weight:600}.settings-content[data-v-799a9b16]{padding:0}.setting-section[data-v-799a9b16]{margin-bottom:24px}.setting-section[data-v-799a9b16]:last-child{margin-bottom:0}.setting-section-title[data-v-799a9b16]{font-size:14px;font-weight:600;margin-bottom:8px;display:flex;align-items:center;gap:8px;color:var(--text-main)}.setting-section-title[data-v-799a9b16]:before{content:"";display:block;width:4px;height:14px;background:var(--accent-red)}.setting-section-desc[data-v-799a9b16]{font-size:13px;color:var(--text-secondary);margin-bottom:16px;line-height:1.5}.config-entry[data-v-799a9b16]{display:flex;align-items:center;gap:16px;padding:16px;background:var(--path-bg);border:1px solid var(--border-color)}.config-entry-info[data-v-799a9b16]{flex:1}.config-entry-title[data-v-799a9b16]{font-size:13px;font-weight:600;color:var(--text-main);margin-bottom:4px}.config-entry-desc[data-v-799a9b16]{font-size:12px;color:var(--text-muted)}.config-entry-value[data-v-799a9b16]{font-family:var(--mono-font);font-size:13px;font-weight:600;color:var(--text-main);padding:4px 10px;background:var(--card-bg);border:1px solid var(--border-color)}.dispatch-config-content[data-v-799a9b16]{display:flex;flex-direction:column;gap:16px}.radio-group[data-v-799a9b16]{display:flex;flex-direction:column;gap:12px}.radio-card[data-v-799a9b16]{border:1px solid var(--border-color);padding:16px;cursor:pointer;transition:all .2s ease;position:relative;display:flex;gap:12px;align-items:flex-start;background:var(--card-bg)}.radio-card[data-v-799a9b16]:hover{border-color:var(--text-secondary)}.radio-card input[type=radio][data-v-799a9b16]{margin-top:4px;accent-color:var(--border-heavy)}.radio-card.selected[data-v-799a9b16]{border-color:var(--border-heavy);background:#fffcfc}[data-theme=dark] .radio-card.selected[data-v-799a9b16]{background:#1f1f1f}.radio-card.selected[data-v-799a9b16]:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--accent-red)}.radio-card-title[data-v-799a9b16]{font-weight:600;font-size:14px;margin-bottom:4px;display:block;color:var(--text-main)}.radio-card-desc[data-v-799a9b16]{font-size:12px;color:var(--text-secondary);line-height:1.5}.warning-block[data-v-799a9b16]{background:#fff8f0;border:1px solid #e6a23c;border-left-width:4px;padding:16px;margin-top:12px}[data-theme=dark] .warning-block[data-v-799a9b16]{background:#2a2010;border-color:#b8860b}.warning-title[data-v-799a9b16]{color:#d35400;font-weight:700;font-size:12px;margin-bottom:8px;text-transform:uppercase;font-family:var(--mono-font);letter-spacing:.5px}[data-theme=dark] .warning-title[data-v-799a9b16]{color:#f5a623}.warning-list[data-v-799a9b16]{margin:0;padding-left:20px;font-size:12px;color:#885a0c;line-height:1.8}[data-theme=dark] .warning-list[data-v-799a9b16]{color:#d4a537}.info-block[data-v-799a9b16]{background:#f0f9ff;border:1px solid var(--accent-blue);border-left-width:4px;padding:16px;margin-top:12px}[data-theme=dark] .info-block[data-v-799a9b16]{background:#0a1929;border-color:#1e88e5}.info-title[data-v-799a9b16]{color:#1565c0;font-weight:700;font-size:12px;margin-bottom:8px;text-transform:uppercase;font-family:var(--mono-font);letter-spacing:.5px}[data-theme=dark] .info-title[data-v-799a9b16]{color:#64b5f6}.info-list[data-v-799a9b16]{margin:0;padding-left:20px;font-size:12px;color:#1565c0;line-height:1.8}[data-theme=dark] .info-list[data-v-799a9b16]{color:#64b5f6}.code-tag[data-v-799a9b16]{font-family:var(--mono-font);background:#fff9;padding:1px 5px;border:1px solid rgba(0,0,0,.1);font-size:11px}[data-theme=dark] .code-tag[data-v-799a9b16]{background:#0000004d;border-color:#ffffff1a}.dispatch-section[data-v-799a9b16]{border-top:1px solid var(--border-color);padding-top:20px}.tech-spec[data-v-799a9b16]{background:var(--path-bg);border:1px solid var(--border-color);padding:16px;display:grid;grid-template-columns:1fr 1fr;gap:16px}.spec-item label[data-v-799a9b16]{display:block;font-size:11px;color:var(--text-muted);text-transform:uppercase;margin-bottom:4px;font-family:var(--mono-font);letter-spacing:.5px}.spec-item .spec-value[data-v-799a9b16]{font-size:14px;font-family:var(--mono-font);color:var(--text-main);font-weight:600}.spec-warning[data-v-799a9b16]{font-size:12px;color:#d97706;margin-top:12px;font-family:var(--mono-font)}[data-theme=dark] .spec-warning[data-v-799a9b16]{color:#fbbf24}.plugin-section[data-v-799a9b16]{border-top:1px solid var(--border-color);padding-top:20px}.plugin-loading[data-v-799a9b16]{text-align:center;color:var(--text-muted);padding:20px;font-size:13px}.platform-grid[data-v-799a9b16]{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.platform-card[data-v-799a9b16]{display:flex;flex-direction:column;gap:6px}.platform-label[data-v-799a9b16]{display:flex;align-items:center;justify-content:space-between;padding:0 12px}.platform-name[data-v-799a9b16]{font-weight:600;font-size:11px;letter-spacing:.5px;color:var(--text-secondary)}.platform-status[data-v-799a9b16]{font-family:var(--mono-font);font-size:9px;font-weight:600;padding:2px 6px;letter-spacing:.3px}.platform-status.installed[data-v-799a9b16]{background:#000;color:#fff}[data-theme=dark] .platform-status.installed[data-v-799a9b16]{background:#fff;color:#000}.platform-status.outdated[data-v-799a9b16]{background:#d92424;color:#fff}.platform-status.disabled[data-v-799a9b16]{background:transparent;color:#999;border:1px solid #ccc}[data-theme=dark] .platform-status.disabled[data-v-799a9b16]{color:#666;border-color:#444}.component-box[data-v-799a9b16]{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 16px;padding:10px 12px;border:1px solid #ddd}[data-theme=dark] .component-box[data-v-799a9b16]{border-color:#444}.component-cell[data-v-799a9b16]{display:flex;align-items:center;gap:6px}.status-block[data-v-799a9b16]{width:8px;height:8px;flex-shrink:0}.status-block.installed[data-v-799a9b16]{background:#000}[data-theme=dark] .status-block.installed[data-v-799a9b16]{background:#fff}.status-block.outdated[data-v-799a9b16]{background:#d92424}.status-block.not-installed[data-v-799a9b16]{background:transparent;border:1px solid #000}[data-theme=dark] .status-block.not-installed[data-v-799a9b16]{border-color:#fff}.status-block.unsupported[data-v-799a9b16]{background:transparent;border:1px solid #bbb}[data-theme=dark] .status-block.unsupported[data-v-799a9b16]{border-color:#555}.component-name[data-v-799a9b16]{font-family:var(--mono-font);font-size:11px;color:#000}[data-theme=dark] .component-name[data-v-799a9b16]{color:#fff}.component-name.outdated[data-v-799a9b16]{color:#d92424}.component-name.not-installed[data-v-799a9b16]{color:#000}[data-theme=dark] .component-name.not-installed[data-v-799a9b16]{color:#fff}.component-name.unsupported[data-v-799a9b16]{color:#999}[data-theme=dark] .component-name.unsupported[data-v-799a9b16]{color:#666}.command-bar[data-v-799a9b16]{margin-top:12px;padding-left:12px;border-left:2px solid #ddd;display:flex;flex-direction:column;gap:2px}[data-theme=dark] .command-bar[data-v-799a9b16]{border-left-color:#444}.command-label[data-v-799a9b16]{font-size:10px;color:var(--text-muted)}.command-text[data-v-799a9b16]{font-family:var(--mono-font);font-size:11px;color:var(--text-secondary)}.help-section[data-v-799a9b16]{border-top:1px solid var(--border-color);padding-top:20px}.help-collapse-group[data-v-799a9b16]{display:flex;flex-direction:column;gap:8px}.trigger-table-wrapper[data-v-799a9b16]{padding:0!important}.trigger-table[data-v-799a9b16]{width:100%;border-collapse:collapse;font-size:13px}.trigger-table th[data-v-799a9b16],.trigger-table td[data-v-799a9b16]{padding:10px 16px;text-align:left;border-bottom:1px solid var(--border-color)}.trigger-table th[data-v-799a9b16]{background:var(--path-bg);font-weight:600;font-size:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.3px}.trigger-table th[data-v-799a9b16]:first-child{border-right:1px solid var(--border-color)}.trigger-table td[data-v-799a9b16]:first-child{font-weight:600;color:var(--text-main);border-right:1px solid var(--border-color);width:100px}.trigger-table td[data-v-799a9b16]:last-child{color:var(--text-secondary);font-family:var(--mono-font);font-size:12px}.trigger-table tr:last-child td[data-v-799a9b16]{border-bottom:none}.doc-links[data-v-799a9b16]{display:flex;flex-direction:column;gap:8px;margin-top:16px}.doc-link[data-v-799a9b16]{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--accent-red);text-decoration:none;cursor:pointer;transition:opacity .2s ease}.doc-link[data-v-799a9b16]:hover{opacity:.8}.doc-link.disabled[data-v-799a9b16]{color:var(--text-muted);cursor:not-allowed;pointer-events:none}.doc-link-arrow[data-v-799a9b16]{font-size:14px;transition:transform .2s ease}.doc-link:hover .doc-link-arrow[data-v-799a9b16]{transform:translate(3px)}.index-section[data-v-799a9b16]{border-top:1px solid var(--border-color);padding-top:20px}.index-entry[data-v-799a9b16]{display:flex;align-items:center;gap:16px;padding:16px;background:var(--path-bg);border:1px solid var(--border-color)}.index-entry-info[data-v-799a9b16]{flex:1}.index-entry-title[data-v-799a9b16]{font-size:13px;font-weight:600;color:var(--text-main);margin-bottom:4px}.index-entry-desc[data-v-799a9b16]{font-size:12px;color:var(--text-muted)}.index-entry-stats[data-v-799a9b16]{display:flex;gap:12px}.stat-box[data-v-799a9b16]{text-align:center;min-width:50px}.stat-number[data-v-799a9b16]{font-family:var(--mono-font);font-size:24px;font-weight:700;color:var(--text-main);line-height:1}.stat-label[data-v-799a9b16]{font-size:10px;color:var(--text-muted);margin-top:4px}.index-entry-icon[data-v-799a9b16]{width:50px;display:flex;align-items:center;justify-content:center;color:var(--text-secondary)}.index-entry+.index-entry[data-v-799a9b16]{margin-top:12px}.spec-value-row[data-v-799a9b16]{display:flex;align-items:center;justify-content:space-between}.spec-value-text[data-v-799a9b16]{font-size:14px;font-family:var(--mono-font);color:var(--text-main);font-weight:600}.version-status-tag[data-v-799a9b16]{font-family:var(--mono-font);font-size:9px;font-weight:600;padding:2px 6px;letter-spacing:.3px;cursor:pointer;transition:opacity .2s ease}.version-status-tag[data-v-799a9b16]:hover{opacity:.8}.version-status-tag.update[data-v-799a9b16]{background:#d92424;color:#fff}.version-status-tag.latest[data-v-799a9b16]{background:#000;color:#fff}[data-theme=dark] .version-status-tag.latest[data-v-799a9b16]{background:#fff;color:#000}.version-modal-content[data-v-799a9b16]{display:flex;flex-direction:column;gap:24px}.version-change[data-v-799a9b16]{display:flex;align-items:center;justify-content:center;gap:12px;padding:16px 0}.version-number[data-v-799a9b16]{font-family:var(--mono-font);font-size:28px;font-weight:700;color:var(--text-main)}.version-number.new[data-v-799a9b16]{color:var(--accent-red)}.version-arrow[data-v-799a9b16]{font-size:20px;color:var(--text-muted)}.latest-info[data-v-799a9b16]{display:flex;flex-direction:column;align-items:center;gap:16px;padding:20px 0}.latest-graphic[data-v-799a9b16]{position:relative;width:72px;height:72px}.sync-block-back[data-v-799a9b16]{position:absolute;top:0;left:0;width:56px;height:56px;border:3px solid var(--border-heavy)}[data-theme=dark] .sync-block-back[data-v-799a9b16]{border-color:#fff}.sync-block-front[data-v-799a9b16]{position:absolute;top:16px;left:16px;width:56px;height:56px;background:var(--border-heavy)}[data-theme=dark] .sync-block-front[data-v-799a9b16]{background:#fff}.sync-dot[data-v-799a9b16]{position:absolute;top:4px;right:4px;width:12px;height:12px;background:var(--accent-red)}.latest-title[data-v-799a9b16]{font-size:16px;font-weight:700;color:var(--text-main)}.latest-text[data-v-799a9b16]{font-family:var(--mono-font);font-size:13px;color:var(--text-secondary)}.update-section[data-v-799a9b16]{display:flex;flex-direction:column;gap:12px}.update-section .section-title[data-v-799a9b16]{font-size:14px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;margin:0;color:var(--text-main)}.update-section .section-desc[data-v-799a9b16]{font-size:13px;color:var(--text-secondary);margin:0}.command-box-clickable[data-v-799a9b16]{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--bg-color);border:1px solid var(--border-color);cursor:pointer;transition:all .15s ease}.command-box-clickable[data-v-799a9b16]:hover{border-color:var(--accent-red)}.command-box-clickable:hover .command-code[data-v-799a9b16],.command-box-clickable:hover .copy-hint[data-v-799a9b16]{color:var(--accent-red)}.command-code[data-v-799a9b16]{font-family:var(--mono-font);font-size:14px;color:var(--text-main);transition:color .15s ease}.copy-hint[data-v-799a9b16]{font-family:var(--mono-font);font-size:10px;font-weight:700;color:var(--text-muted);transition:color .15s ease}.tip-box[data-v-799a9b16]{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--bg-color);border-left:4px solid var(--accent-red)}.tip-label[data-v-799a9b16]{font-family:var(--mono-font);font-size:10px;font-weight:700;padding:2px 6px;background:var(--accent-red);color:#fff;text-transform:uppercase}.tip-text[data-v-799a9b16]{font-size:13px;color:var(--text-secondary)}.btn-primary[data-v-799a9b16],.btn-secondary[data-v-799a9b16]{padding:10px 20px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s ease}.btn-primary[data-v-799a9b16]{background:var(--border-heavy);border:2px solid var(--border-heavy);color:#fff}.btn-primary[data-v-799a9b16]:hover{background:#000;border-color:#000}.btn-secondary[data-v-799a9b16]{background:transparent;border:2px solid var(--border-heavy);color:var(--text-main)}.btn-secondary[data-v-799a9b16]:hover{background:var(--border-color)}[data-theme=dark] .btn-primary[data-v-799a9b16]{color:#111}[data-theme=dark] .btn-primary[data-v-799a9b16]:hover{background:#fff;border-color:#fff;color:#111}.version-links[data-v-799a9b16]{margin-top:16px}.version-link[data-v-799a9b16]{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--accent-red);text-decoration:none;cursor:pointer;transition:opacity .2s ease}.version-link[data-v-799a9b16]:hover{opacity:.8}.version-link-arrow[data-v-799a9b16]{font-size:14px;transition:transform .2s ease}.version-link:hover .version-link-arrow[data-v-799a9b16]{transform:translate(3px)}.home-view[data-v-9b5d3670]{min-height:100vh;background-color:var(--bg-color);background-image:radial-gradient(var(--bg-dot) 1px,transparent 1px);background-size:20px 20px}.header[data-v-9b5d3670]{background:var(--card-bg);border-bottom:1px solid var(--border-color);padding:0 32px;height:64px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100}.plugin-update-banner[data-v-9b5d3670]{position:relative;background:var(--border-heavy);color:#fff;height:44px;padding:0 32px;display:flex;align-items:center;justify-content:center}.banner-content[data-v-9b5d3670]{display:flex;align-items:center;justify-content:center;gap:12px;font-size:14px}.banner-tag[data-v-9b5d3670]{font-family:var(--mono-font);font-size:11px;font-weight:700;padding:3px 8px;background:var(--accent-orange);color:#000;text-transform:uppercase}.banner-text[data-v-9b5d3670]{flex:0 1 auto}.banner-action[data-v-9b5d3670]{background:transparent;border:1px solid rgba(255,255,255,.5);color:#fff;padding:4px 12px;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s ease}.banner-action[data-v-9b5d3670]:hover{background:#fff;color:var(--border-heavy);border-color:#fff}.banner-close[data-v-9b5d3670]{position:absolute;right:32px;background:transparent;border:none;color:#fff;cursor:pointer;padding:4px 8px;font-size:14px;opacity:.8;transition:opacity .2s}.banner-close[data-v-9b5d3670]:hover{opacity:1}[data-theme=dark] .plugin-update-banner[data-v-9b5d3670]{color:#111}[data-theme=dark] .banner-action[data-v-9b5d3670]{border-color:#0000004d;color:#111}[data-theme=dark] .banner-action[data-v-9b5d3670]:hover{background:#111;color:var(--border-heavy);border-color:#111}[data-theme=dark] .banner-close[data-v-9b5d3670]{color:#111}.logo[data-v-9b5d3670]{display:flex;align-items:center}.logo-icon[data-v-9b5d3670]{width:24px;height:24px;position:relative}.logo-icon[data-v-9b5d3670]:before{content:"";position:absolute;top:0;left:0;width:18px;height:18px;background-color:var(--logo-block)}.logo-icon[data-v-9b5d3670]:after{content:"";position:absolute;bottom:2px;right:2px;width:10px;height:10px;background-color:var(--accent-red);box-shadow:0 0 0 2px var(--logo-outline)}.logo-text[data-v-9b5d3670]{font-size:20px;line-height:1;color:var(--text-main);margin-left:12px}.logo-text .bold[data-v-9b5d3670]{font-weight:800;letter-spacing:-.5px}.logo-text .light[data-v-9b5d3670]{font-weight:300;opacity:.7}.logo-text .red-dot[data-v-9b5d3670]{position:relative;font-style:normal}.logo-text .red-dot[data-v-9b5d3670]:after{content:"";position:absolute;top:.18em;left:.06em;width:.17em;height:.17em;background-color:var(--accent-red);border-radius:50%}.header-actions[data-v-9b5d3670]{display:flex;gap:12px;align-items:center}.theme-toggle[data-v-9b5d3670]{width:36px;height:36px;padding:0;background:var(--card-bg);border:1px solid var(--border-heavy);color:var(--text-main);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease}.theme-toggle[data-v-9b5d3670]:hover{border-color:var(--border-heavy);color:var(--accent-red);background:var(--path-bg);transform:translateY(-1px);box-shadow:2px 2px 0 var(--border-heavy)}.theme-toggle .icon-sun[data-v-9b5d3670],.theme-toggle .icon-moon[data-v-9b5d3670]{width:18px;height:18px}.filter-bar[data-v-9b5d3670]{background:var(--card-bg);border-bottom:1px solid var(--border-color);padding:0 32px;display:flex;align-items:center;justify-content:space-between}.filter-left[data-v-9b5d3670]{display:flex;align-items:center;gap:24px}.filter-right[data-v-9b5d3670]{display:flex;align-items:center;gap:12px}.tabs[data-v-9b5d3670]{display:flex;gap:0}.tab[data-v-9b5d3670]{padding:16px 20px;font-size:14px;font-weight:600;color:var(--text-secondary);cursor:pointer;border-bottom:3px solid transparent;transition:all .15s ease;-webkit-user-select:none;user-select:none}.tab[data-v-9b5d3670]:hover{color:var(--text-main)}.tab.active[data-v-9b5d3670]{color:var(--text-main);border-bottom-color:var(--border-heavy)}.search-input[data-v-9b5d3670]{font-size:14px;padding:10px 0;border:none;border-bottom:2px solid var(--border-color);background:transparent;width:240px;outline:none;transition:border-color .15s ease;color:var(--text-main)}.search-input[data-v-9b5d3670]:focus{border-bottom-color:var(--border-heavy)}.search-input[data-v-9b5d3670]::placeholder{color:var(--text-muted)}.custom-select[data-v-9b5d3670]{position:relative;width:160px}.custom-select-trigger[data-v-9b5d3670]{height:36px;padding:0 32px 0 12px;border:1px solid var(--border-color);background:var(--card-bg);color:var(--text-main);font-size:14px;cursor:pointer;display:flex;align-items:center;transition:all .15s ease;position:relative}.custom-select-trigger[data-v-9b5d3670]:after{content:"";position:absolute;right:12px;top:50%;transform:translateY(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid var(--text-main);transition:transform .15s ease}.custom-select.open .custom-select-trigger[data-v-9b5d3670]:after{transform:translateY(-50%) rotate(180deg)}.custom-select-trigger[data-v-9b5d3670]:hover,.custom-select.open .custom-select-trigger[data-v-9b5d3670]{border-color:var(--border-heavy)}.custom-select-dropdown[data-v-9b5d3670]{position:absolute;top:100%;left:0;right:0;background:var(--card-bg);border:1px solid var(--border-heavy);border-top:none;display:none;z-index:100;box-shadow:4px 4px #0003}.custom-select.open .custom-select-dropdown[data-v-9b5d3670]{display:block}.custom-select-option[data-v-9b5d3670]{padding:10px 12px;font-size:14px;cursor:pointer;transition:all .1s ease;border-left:3px solid transparent}.custom-select-option[data-v-9b5d3670]:hover{background:var(--path-bg);border-left-color:var(--accent-red)}.custom-select-option.selected[data-v-9b5d3670]{background:var(--card-footer);font-weight:600;border-left-color:var(--border-heavy)}.main-content[data-v-9b5d3670]{padding:32px;max-width:1400px;margin:0 auto}.card-grid[data-v-9b5d3670]{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:20px}.card[data-v-9b5d3670]{background:var(--card-bg);border:1px solid var(--border-color);border-left:4px solid var(--border-heavy);transition:all .2s cubic-bezier(.25,.46,.45,.94);position:relative;display:flex;flex-direction:column}.card[data-v-9b5d3670]:hover{transform:translate(-4px,-4px);box-shadow:4px 4px 0 var(--border-heavy);border-color:var(--border-heavy);border-left-color:var(--accent-red)}.card.archived[data-v-9b5d3670]{border-left-color:var(--path-border)}.card.archived .card-title[data-v-9b5d3670]{color:var(--text-muted)}.card.archived[data-v-9b5d3670]:hover{border-left-color:var(--text-muted)}.card-header[data-v-9b5d3670]{padding:20px 20px 12px;display:flex;align-items:flex-start;gap:8px}.card-title[data-v-9b5d3670]{font-size:16px;font-weight:700;color:var(--text-main);line-height:1.3;margin:-8px;padding:8px;cursor:pointer;transition:color .2s;flex:1;min-width:0}.card-title[data-v-9b5d3670]:hover{color:var(--accent-red)}.card-body[data-v-9b5d3670]{padding:0 20px 16px;flex:1}.path-box[data-v-9b5d3670]{background:var(--path-bg);padding:10px 12px;font-family:var(--mono-font);font-size:12px;color:var(--text-secondary);border-left:2px solid var(--path-border);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:12px}.card.archived .path-box[data-v-9b5d3670]{color:var(--text-muted);border-left-color:var(--border-color)}.meta-info[data-v-9b5d3670]{font-size:12px;color:var(--text-muted);font-family:var(--mono-font);display:flex;flex-direction:column;gap:4px}.card-footer[data-v-9b5d3670]{border-top:1px solid var(--border-color);padding:12px 20px;display:flex;justify-content:space-evenly;gap:16px;background:var(--card-footer)}.btn[data-v-9b5d3670]{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:14px;font-weight:600;border:none;cursor:pointer;transition:all .15s ease;text-decoration:none;height:36px;padding:0 16px}.btn-primary[data-v-9b5d3670]{background:var(--accent-red);color:#fff;border:1px solid var(--accent-red)}.btn-primary[data-v-9b5d3670]:hover{background:#b82424;border-color:#b82424;transform:translateY(-1px);box-shadow:2px 2px #0000004d}.btn-secondary[data-v-9b5d3670]{background:var(--card-bg);color:var(--text-main);border:1px solid var(--border-heavy)}.btn-secondary[data-v-9b5d3670]:hover{background:var(--path-bg);transform:translateY(-1px);box-shadow:2px 2px 0 var(--border-heavy)}.btn-ghost[data-v-9b5d3670]{background:transparent;color:var(--text-secondary);border:1px solid transparent}.btn-ghost[data-v-9b5d3670]:hover{color:var(--text-main);background:var(--path-bg)}.btn-danger[data-v-9b5d3670]{background:transparent;color:var(--text-secondary);border:1px solid transparent}.btn-danger[data-v-9b5d3670]:hover{color:var(--accent-red);background:#fff5f5}.btn-accent[data-v-9b5d3670]{background:transparent;color:var(--accent-red);border:1px solid transparent}.btn-accent[data-v-9b5d3670]:hover{background:#fff5f5}.btn-cancel[data-v-9b5d3670]{background:var(--card-bg);color:var(--text-secondary);border:1px solid var(--border-color)}.btn-cancel[data-v-9b5d3670]:hover{border-color:var(--text-secondary);color:var(--text-main)}.btn-icon[data-v-9b5d3670]{width:36px;padding:0;background:var(--card-bg);border:1px solid var(--border-color);color:var(--text-main)}.btn-icon[data-v-9b5d3670]:hover{border-color:var(--border-heavy);color:var(--accent-red)}.btn-icon.desc svg[data-v-9b5d3670]{transform:rotate(180deg)}.spin[data-v-9b5d3670]{display:inline-block;animation:spin-9b5d3670 1s linear infinite}@keyframes spin-9b5d3670{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.badge[data-v-9b5d3670]{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;padding:3px 8px;letter-spacing:.5px}.badge-active[data-v-9b5d3670]{background:var(--border-heavy);color:#fff}.badge-archived[data-v-9b5d3670]{background:var(--path-bg);color:var(--text-muted)}.badge-error[data-v-9b5d3670]{background:var(--accent-red);color:#fff}.empty-state[data-v-9b5d3670]{text-align:center;padding:80px 40px;color:var(--text-muted)}.empty-state-icon[data-v-9b5d3670]{width:64px;height:64px;margin:0 auto 24px;background:var(--path-bg);border:2px dashed var(--border-color);display:flex;align-items:center;justify-content:center;color:var(--text-muted)}.empty-state-title[data-v-9b5d3670]{font-size:18px;font-weight:700;color:var(--text-main);margin-bottom:8px}.empty-state-desc[data-v-9b5d3670]{font-size:14px;margin-bottom:24px}.form-group[data-v-9b5d3670]{margin-bottom:20px}.form-label[data-v-9b5d3670]{display:block;font-size:14px;font-weight:600;margin-bottom:8px}.form-input[data-v-9b5d3670]{width:100%;height:40px;padding:0 12px;font-size:14px;border:1px solid var(--border-color);background:var(--card-bg);color:var(--text-main);outline:none;transition:border-color .15s ease}.form-input[data-v-9b5d3670]::placeholder{color:var(--text-muted)}.form-input[data-v-9b5d3670]:focus{border-color:var(--border-heavy)}.form-textarea[data-v-9b5d3670]{height:auto;padding:12px;resize:vertical}[data-theme=dark] .btn-primary[data-v-9b5d3670]{background:var(--accent-red);border-color:var(--accent-red);color:#fff}[data-theme=dark] .btn-primary[data-v-9b5d3670]:hover{background:#b82424;border-color:#b82424;box-shadow:2px 2px #fff3}[data-theme=dark] .badge-active[data-v-9b5d3670]{background:#fff;color:#111}[data-theme=dark] .btn-danger[data-v-9b5d3670]:hover,[data-theme=dark] .btn-accent[data-v-9b5d3670]:hover{background:#d92b2b33}.dev-badge[data-v-9b5d3670]{position:fixed;bottom:12px;right:12px;background:#f59e0b;color:#fff;padding:4px 10px;border-radius:4px;font-size:10px;font-weight:700;font-family:var(--mono-font);letter-spacing:1px;z-index:9999;cursor:default}.error-message-box[data-v-9b5d3670]{font-family:var(--mono-font);font-size:13px;line-height:1.8;color:var(--text-secondary);white-space:pre-wrap;background:var(--path-bg);padding:16px;border-left:4px solid var(--accent-red)}.diagnose-result[data-v-9b5d3670]{margin-top:16px;border:1px solid var(--border-color);background:var(--card-bg)}.diagnose-header[data-v-9b5d3670]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border-color);background:var(--card-footer)}.diagnose-title[data-v-9b5d3670]{font-weight:600;font-size:14px}.diagnose-summary[data-v-9b5d3670]{font-size:12px;color:var(--text-muted);font-family:var(--mono-font)}.issue-list[data-v-9b5d3670]{max-height:200px;overflow-y:auto}.issue-item[data-v-9b5d3670]{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--border-color);font-size:13px}.issue-item[data-v-9b5d3670]:last-child{border-bottom:none}.issue-icon[data-v-9b5d3670]{width:16px;text-align:center;font-weight:700}.issue-auto .issue-icon[data-v-9b5d3670]{color:var(--accent-green, #22c55e)}.issue-interactive .issue-icon[data-v-9b5d3670]{color:var(--accent-orange, #f59e0b)}.issue-manual .issue-icon[data-v-9b5d3670]{color:var(--accent-red)}.issue-message[data-v-9b5d3670]{flex:1;color:var(--text-main)}.issue-tag[data-v-9b5d3670]{font-size:10px;font-weight:600;padding:2px 6px;text-transform:uppercase}.tag-auto[data-v-9b5d3670]{background:#22c55e26;color:var(--accent-green, #22c55e)}.tag-cli[data-v-9b5d3670]{background:#f59e0b26;color:var(--accent-orange, #f59e0b)}.tag-manual[data-v-9b5d3670]{background:#d92b2b26;color:var(--accent-red)}.no-issues[data-v-9b5d3670]{padding:24px 16px;text-align:center;color:var(--text-muted);font-size:13px}.cli-hint-box[data-v-9b5d3670]{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-top:1px solid var(--border-color);background:var(--card-footer)}.cli-hint-header[data-v-9b5d3670]{display:flex;align-items:center;gap:8px}.cli-hint-tag[data-v-9b5d3670]{font-family:var(--mono-font);font-size:10px;font-weight:600;padding:2px 6px;background:#f59e0b26;color:var(--accent-orange, #f59e0b);text-transform:uppercase}.cli-hint-text[data-v-9b5d3670]{font-size:12px;color:var(--text-muted)}.cli-hint-command[data-v-9b5d3670]{display:flex;align-items:center;gap:8px}.cli-command[data-v-9b5d3670]{font-family:var(--mono-font);font-size:12px;color:var(--text-main);-webkit-user-select:all;user-select:all}.cli-copy-btn[data-v-9b5d3670]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:transparent;border:1px solid var(--border-color);color:var(--text-muted);cursor:pointer;transition:all .15s ease}.cli-copy-btn[data-v-9b5d3670]:hover{border-color:var(--accent-color);color:var(--accent-color)}.card.pinned[data-v-9b5d3670]{border-left-color:var(--accent-red);border-top:3px solid var(--accent-red)}.card.pinned[data-v-9b5d3670]:hover{border-left-color:var(--accent-red)}.pin-badge[data-v-9b5d3670]{font-size:11px;font-weight:700;text-transform:uppercase;padding:3px 8px;letter-spacing:.5px;cursor:pointer;transition:all .15s ease}.pin-badge-hint[data-v-9b5d3670]{background:var(--border-heavy);color:#fff;display:none;position:relative}.pin-badge-hint[data-v-9b5d3670]:before{content:">";margin-right:2px;animation:pin-blink-9b5d3670 .8s ease-in-out infinite}@keyframes pin-blink-9b5d3670{0%,50%{opacity:1}51%,to{opacity:0}}.card:hover .pin-badge-hint[data-v-9b5d3670]{display:inline-block}.pin-badge-active[data-v-9b5d3670]{background:var(--accent-red);color:#fff}.pin-badge-active[data-v-9b5d3670]:hover{background:#b82424}.card.pinned .pin-badge-hint[data-v-9b5d3670]{display:none!important}[data-theme=dark] .pin-badge-hint[data-v-9b5d3670]{background:#fff;color:#111}[data-theme=dark] .pin-badge-active[data-v-9b5d3670]{background:var(--accent-red);color:#fff}
1
+ .ws-collapse[data-v-28a9ec4c]{border:1px solid var(--border-color);background:var(--card-bg)}.collapse-header[data-v-28a9ec4c]{display:flex;align-items:center;gap:8px;padding:12px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s ease}.collapse-header[data-v-28a9ec4c]:hover{background:var(--path-bg)}.collapse-arrow[data-v-28a9ec4c]{display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:transform .25s ease}.is-open .collapse-arrow[data-v-28a9ec4c]{transform:rotate(90deg)}.collapse-title[data-v-28a9ec4c]{font-size:14px;font-weight:600;color:var(--text-main);display:flex;align-items:center;gap:8px}.collapse-title[data-v-28a9ec4c]:before{content:"";display:block;width:4px;height:14px;background:var(--accent-red)}.collapse-content-wrapper[data-v-28a9ec4c]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .25s ease}.is-open .collapse-content-wrapper[data-v-28a9ec4c]{grid-template-rows:1fr}.collapse-content[data-v-28a9ec4c]{overflow:hidden}.is-open .collapse-content[data-v-28a9ec4c]{border-top:1px solid var(--border-color)}.collapse-content[data-v-28a9ec4c]>*{padding:16px}.collapse-content[data-v-28a9ec4c]:empty:before{content:"";display:block;padding:16px}.dialog-overlay[data-v-ea968292]{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000;padding:20px}.dialog[data-v-ea968292]{background:var(--card-bg);border:2px solid var(--border-heavy);box-shadow:8px 8px #00000026;width:450px;max-width:90vw}.dialog-header[data-v-ea968292]{padding:16px 20px;border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between}.dialog-title[data-v-ea968292]{font-size:16px;font-weight:700;color:var(--text-main)}.dialog-close[data-v-ea968292]{background:transparent;border:none;cursor:pointer;padding:4px;color:var(--text-muted);display:flex;align-items:center;justify-content:center}.dialog-close[data-v-ea968292]:hover{color:var(--accent-red)}.dialog-body[data-v-ea968292]{padding:20px}.workspace-preview[data-v-ea968292]{margin-bottom:16px}.preview-label[data-v-ea968292]{font-size:13px;color:var(--text-secondary);margin-bottom:8px}.workspace-list[data-v-ea968292]{background:var(--bg-secondary);border:1px solid var(--border-color);padding:8px 12px;max-height:120px;overflow-y:auto}.workspace-item[data-v-ea968292]{padding:4px 0;display:flex;align-items:center;gap:8px}.workspace-name[data-v-ea968292]{font-size:14px;font-weight:500;color:var(--text-main)}.workspace-existing[data-v-ea968292]{font-size:12px;color:var(--text-muted)}.target-dir-section[data-v-ea968292]{margin-top:16px}.target-label[data-v-ea968292]{font-size:13px;color:var(--text-secondary);margin-bottom:8px}.target-input-row[data-v-ea968292]{display:flex;gap:8px}.target-input[data-v-ea968292]{flex:1;padding:8px 12px;border:1px solid var(--border-color);background:var(--input-bg);color:var(--text-main);font-size:13px;font-family:inherit}.target-input[data-v-ea968292]:focus{outline:none;border-color:var(--accent-primary)}.target-hint[data-v-ea968292]{font-size:11px;color:var(--text-muted);margin-top:4px}.dialog-footer[data-v-ea968292]{padding:16px 20px;border-top:1px solid var(--border-color);display:flex;justify-content:flex-end;gap:8px;background:var(--card-footer)}.modal-fade-enter-active[data-v-ea968292],.modal-fade-leave-active[data-v-ea968292]{transition:opacity .2s ease}.modal-fade-enter-active .dialog[data-v-ea968292],.modal-fade-leave-active .dialog[data-v-ea968292]{transition:transform .2s ease}.modal-fade-enter-from[data-v-ea968292],.modal-fade-leave-to[data-v-ea968292]{opacity:0}.modal-fade-enter-from .dialog[data-v-ea968292],.modal-fade-leave-to .dialog[data-v-ea968292]{transform:scale(.95)}.index-management[data-v-90a2f9d8]{display:flex;flex-direction:column;gap:16px}.stats-bar[data-v-90a2f9d8]{display:flex;gap:20px;padding:12px 16px;background:var(--path-bg);border:1px solid var(--border-color)}.stats-item[data-v-90a2f9d8]{display:flex;align-items:baseline;gap:6px}.stats-number[data-v-90a2f9d8]{font-family:var(--mono-font);font-size:24px;font-weight:700;color:var(--text-main)}.stats-number.success[data-v-90a2f9d8]{color:#2e7d32}[data-theme=dark] .stats-number.success[data-v-90a2f9d8]{color:#66bb6a}.stats-number.danger[data-v-90a2f9d8]{color:var(--accent-red)}.stats-label[data-v-90a2f9d8]{font-size:11px;color:var(--text-muted)}.function-block[data-v-90a2f9d8]{border:1px solid var(--border-color);padding:16px}.function-header[data-v-90a2f9d8]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.function-title[data-v-90a2f9d8]{font-size:13px;font-weight:600;color:var(--text-main);display:flex;align-items:center;gap:8px}.function-title[data-v-90a2f9d8]:before{content:"";width:3px;height:12px;background:var(--accent-red)}.function-desc[data-v-90a2f9d8]{font-size:12px;color:var(--text-muted);margin-top:10px}.drop-zone[data-v-90a2f9d8]{border:2px dashed var(--border-color);padding:24px;text-align:center;cursor:pointer;transition:all .2s;background:var(--path-bg)}.drop-zone[data-v-90a2f9d8]:hover{border-color:var(--border-heavy);background:var(--card-bg)}.drop-zone.dragging[data-v-90a2f9d8]{border-color:var(--accent-red);background:#fff5f5}[data-theme=dark] .drop-zone.dragging[data-v-90a2f9d8]{background:#2d1b1b}.drop-zone.mini[data-v-90a2f9d8]{padding:12px;display:flex;align-items:center;justify-content:center}.drop-zone-icon[data-v-90a2f9d8]{color:var(--text-secondary);margin-bottom:8px}.drop-zone-icon.mini[data-v-90a2f9d8]{margin-bottom:0;margin-right:8px}.drop-zone-text[data-v-90a2f9d8]{font-size:13px;color:var(--text-secondary);margin-bottom:4px}.drop-zone-text.highlight[data-v-90a2f9d8]{color:var(--accent-red);font-weight:600}.drop-zone-hint[data-v-90a2f9d8]{font-size:11px;color:var(--text-muted)}.drop-zone-actions[data-v-90a2f9d8]{margin-top:8px}.selected-item[data-v-90a2f9d8]{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--path-bg);border:1px solid var(--border-color)}.selected-icon[data-v-90a2f9d8]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.selected-icon.file[data-v-90a2f9d8]{background:#e3f2fd;color:#1565c0}[data-theme=dark] .selected-icon.file[data-v-90a2f9d8]{background:#1a3a5c;color:#64b5f6}.selected-icon.folder[data-v-90a2f9d8]{background:#fff8e1}[data-theme=dark] .selected-icon.folder[data-v-90a2f9d8]{background:#3a3010}.selected-info[data-v-90a2f9d8]{flex:1;min-width:0}.selected-name[data-v-90a2f9d8]{font-size:13px;font-weight:600;color:var(--text-main);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selected-meta[data-v-90a2f9d8]{font-size:11px;color:var(--text-muted);font-family:var(--mono-font)}.selected-clear[data-v-90a2f9d8]{width:24px;height:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-muted);font-size:16px;font-weight:300}.selected-clear[data-v-90a2f9d8]:hover{color:var(--accent-red)}.import-action-bar[data-v-90a2f9d8]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding:12px;background:var(--path-bg);border:1px solid var(--border-color)}.target-dir-group[data-v-90a2f9d8]{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.target-dir-label[data-v-90a2f9d8]{font-size:12px;color:var(--text-muted);white-space:nowrap}.target-dir-input[data-v-90a2f9d8]{flex:1;min-width:0;height:28px;padding:0 8px;border:none;border-bottom:1px solid var(--border-color);font-family:var(--mono-font);font-size:11px;background:transparent;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis}.target-dir-input[data-v-90a2f9d8]:focus{outline:none;border-bottom-color:var(--accent-primary)}.alt-input-toggle[data-v-90a2f9d8]{font-size:11px;color:var(--text-muted);cursor:pointer;text-decoration:underline;margin-top:10px;display:inline-block}.alt-input-toggle[data-v-90a2f9d8]:hover{color:var(--text-secondary)}.manual-input-area[data-v-90a2f9d8]{display:flex;flex-direction:column;gap:8px}.alt-input-row[data-v-90a2f9d8]{display:flex;gap:8px}.path-input[data-v-90a2f9d8]{flex:1;height:34px;padding:0 10px;border:1px solid var(--border-color);font-family:var(--mono-font);font-size:12px;background:var(--card-bg);color:var(--text-main)}.path-input[data-v-90a2f9d8]:focus{outline:none;border-color:var(--border-heavy)}.path-input[data-v-90a2f9d8]::placeholder{color:var(--text-muted)}.action-row[data-v-90a2f9d8]{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.result-box[data-v-90a2f9d8]{margin-top:12px;padding:10px 12px;font-size:12px;border-left:3px solid}.result-box.success[data-v-90a2f9d8]{background:#e8f5e9;border-color:#4caf50;color:#2e7d32}[data-theme=dark] .result-box.success[data-v-90a2f9d8]{background:#1b3320;color:#a5d6a7}.result-box.warning[data-v-90a2f9d8]{background:#fff8e1;border-color:#ffc107;color:#856404}[data-theme=dark] .result-box.warning[data-v-90a2f9d8]{background:#2a2010;color:#ffd54f}.result-box.error[data-v-90a2f9d8]{background:#ffebee;border-color:var(--accent-red);color:var(--accent-red)}[data-theme=dark] .result-box.error[data-v-90a2f9d8]{background:#2d1b1b}.warning-list[data-v-90a2f9d8]{margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.1)}[data-theme=dark] .warning-list[data-v-90a2f9d8]{border-top-color:#ffffff1a}.warning-item[data-v-90a2f9d8]{font-size:11px;opacity:.9;padding:2px 0}.result-area[data-v-90a2f9d8]{margin-top:12px;padding:12px;background:var(--path-bg);border:1px solid var(--border-color)}.result-area.done[data-v-90a2f9d8]{background:#e8f5e9;border-color:#4caf50}[data-theme=dark] .result-area.done[data-v-90a2f9d8]{background:#1b3320;border-color:#2e7d32}.result-header[data-v-90a2f9d8]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.result-title[data-v-90a2f9d8]{font-size:11px;font-weight:600;text-transform:uppercase;color:var(--text-muted);letter-spacing:.3px}.result-stats[data-v-90a2f9d8]{display:flex;gap:12px}.stat[data-v-90a2f9d8]{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--text-secondary)}.stat-num[data-v-90a2f9d8]{font-family:var(--mono-font);font-weight:700;color:var(--text-main)}.stat-num.success[data-v-90a2f9d8]{color:#2e7d32}[data-theme=dark] .stat-num.success[data-v-90a2f9d8]{color:#66bb6a}.stat-num.danger[data-v-90a2f9d8]{color:var(--accent-red)}.change-section[data-v-90a2f9d8]{margin-bottom:12px}.change-header[data-v-90a2f9d8]{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;margin-bottom:6px}.change-header.add[data-v-90a2f9d8]{color:#2e7d32}[data-theme=dark] .change-header.add[data-v-90a2f9d8]{color:#66bb6a}.change-header.remove[data-v-90a2f9d8]{color:var(--accent-red)}.change-icon[data-v-90a2f9d8]{width:16px;height:16px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}.ws-list[data-v-90a2f9d8]{max-height:100px;overflow-y:auto}.ws-item[data-v-90a2f9d8]{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--border-color);font-size:12px}.ws-item[data-v-90a2f9d8]:last-child{border-bottom:none}.ws-item.invalid[data-v-90a2f9d8]{color:var(--accent-red)}.ws-name[data-v-90a2f9d8]{color:var(--text-main);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ws-badge[data-v-90a2f9d8]{font-size:10px;padding:2px 6px;border-radius:2px;background:var(--border-color);color:var(--text-muted)}.ws-badge.is-new[data-v-90a2f9d8]{background:#e8f5e9;color:#2e7d32}[data-theme=dark] .ws-badge.is-new[data-v-90a2f9d8]{background:#1b3320;color:#66bb6a}.ws-badge.is-removed[data-v-90a2f9d8]{background:#ffebee;color:var(--accent-red)}[data-theme=dark] .ws-badge.is-removed[data-v-90a2f9d8]{background:#2d1b1b}.ws-reason[data-v-90a2f9d8]{margin-left:auto;font-size:10px;color:var(--accent-red);flex-shrink:0}.ws-more[data-v-90a2f9d8]{padding:6px 0;font-size:11px;color:var(--text-muted);font-style:italic}.no-changes[data-v-90a2f9d8]{display:flex;align-items:center;gap:8px;color:#2e7d32;font-size:12px}[data-theme=dark] .no-changes[data-v-90a2f9d8]{color:#66bb6a}.no-changes-icon[data-v-90a2f9d8]{font-size:14px}.result-area.error[data-v-90a2f9d8]{background:#ffebee;border-color:var(--accent-red)}[data-theme=dark] .result-area.error[data-v-90a2f9d8]{background:#2d1b1b}.error-content[data-v-90a2f9d8]{display:flex;align-items:center;gap:8px;color:var(--accent-red);font-size:12px}.error-icon[data-v-90a2f9d8]{font-size:14px;font-weight:700}.error-message[data-v-90a2f9d8]{flex:1}.backup-manager[data-v-1e59df37]{display:flex;flex-direction:column;gap:16px}.action-bar[data-v-1e59df37]{display:flex;align-items:center;gap:12px}.action-hint[data-v-1e59df37]{font-size:11px;color:var(--text-muted);flex:1}.loading-state[data-v-1e59df37]{text-align:center;color:var(--text-muted);padding:40px 0;font-size:13px}.backup-list[data-v-1e59df37]{display:flex;flex-direction:column;gap:8px;max-height:300px;overflow-y:auto}.backup-item[data-v-1e59df37]{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--path-bg);border:1px solid var(--border-color);transition:border-color .2s}.backup-item[data-v-1e59df37]:hover{border-color:var(--border-heavy)}.backup-icon[data-v-1e59df37]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#e3f2fd;color:#1565c0;flex-shrink:0}[data-theme=dark] .backup-icon[data-v-1e59df37]{background:#1a3a5c;color:#64b5f6}.backup-info[data-v-1e59df37]{flex:1;min-width:0}.backup-name[data-v-1e59df37]{font-size:13px;font-weight:600;color:var(--text-main);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px}.backup-meta[data-v-1e59df37]{display:flex;align-items:center;flex-wrap:wrap;gap:4px;font-size:11px;color:var(--text-muted)}.meta-item[data-v-1e59df37]{font-family:var(--mono-font)}.meta-sep[data-v-1e59df37]{color:var(--border-color)}.trigger-tag[data-v-1e59df37]{padding:1px 6px;background:var(--border-color);font-size:10px}.trigger-tag.manual[data-v-1e59df37]{background:#e3f2fd;color:#1565c0}[data-theme=dark] .trigger-tag.manual[data-v-1e59df37]{background:#1a3a5c;color:#64b5f6}.trigger-tag.beta_update[data-v-1e59df37]{background:#fff8e1;color:#f57c00}[data-theme=dark] .trigger-tag.beta_update[data-v-1e59df37]{background:#2a2010;color:#ffb74d}.trigger-tag.pre_restore[data-v-1e59df37]{background:#e8f5e9;color:#2e7d32}[data-theme=dark] .trigger-tag.pre_restore[data-v-1e59df37]{background:#1b3320;color:#66bb6a}.backup-actions[data-v-1e59df37]{display:flex;gap:4px;flex-shrink:0}.empty-state[data-v-1e59df37]{text-align:center;padding:40px 20px;color:var(--text-muted)}.empty-icon[data-v-1e59df37]{margin-bottom:12px;opacity:.5}.empty-text[data-v-1e59df37]{font-size:14px;font-weight:600;margin-bottom:4px;color:var(--text-secondary)}.empty-hint[data-v-1e59df37]{font-size:12px}.drop-zone[data-v-1e59df37]{border:2px dashed var(--border-color);padding:16px;text-align:center;cursor:pointer;transition:all .2s;background:var(--path-bg);display:flex;align-items:center;justify-content:center;gap:8px}.drop-zone[data-v-1e59df37]:hover{border-color:var(--border-heavy);background:var(--card-bg)}.drop-zone.dragging[data-v-1e59df37]{border-color:var(--accent-red);background:#fff5f5}[data-theme=dark] .drop-zone.dragging[data-v-1e59df37]{background:#2d1b1b}.drop-zone.disabled[data-v-1e59df37]{opacity:.5;cursor:not-allowed}.drop-zone.disabled[data-v-1e59df37]:hover{border-color:var(--border-color);background:var(--path-bg)}.drop-zone-icon[data-v-1e59df37]{color:var(--text-secondary)}.drop-zone-text[data-v-1e59df37]{font-size:12px;color:var(--text-secondary)}.drop-zone-text.highlight[data-v-1e59df37]{color:var(--accent-red);font-weight:600}.settings-content[data-v-799a9b16]{padding:0}.setting-section[data-v-799a9b16]{margin-bottom:24px}.setting-section[data-v-799a9b16]:last-child{margin-bottom:0}.setting-section-title[data-v-799a9b16]{font-size:14px;font-weight:600;margin-bottom:8px;display:flex;align-items:center;gap:8px;color:var(--text-main)}.setting-section-title[data-v-799a9b16]:before{content:"";display:block;width:4px;height:14px;background:var(--accent-red)}.setting-section-desc[data-v-799a9b16]{font-size:13px;color:var(--text-secondary);margin-bottom:16px;line-height:1.5}.config-entry[data-v-799a9b16]{display:flex;align-items:center;gap:16px;padding:16px;background:var(--path-bg);border:1px solid var(--border-color)}.config-entry-info[data-v-799a9b16]{flex:1}.config-entry-title[data-v-799a9b16]{font-size:13px;font-weight:600;color:var(--text-main);margin-bottom:4px}.config-entry-desc[data-v-799a9b16]{font-size:12px;color:var(--text-muted)}.config-entry-value[data-v-799a9b16]{font-family:var(--mono-font);font-size:13px;font-weight:600;color:var(--text-main);padding:4px 10px;background:var(--card-bg);border:1px solid var(--border-color)}.dispatch-config-content[data-v-799a9b16]{display:flex;flex-direction:column;gap:16px}.radio-group[data-v-799a9b16]{display:flex;flex-direction:column;gap:12px}.radio-card[data-v-799a9b16]{border:1px solid var(--border-color);padding:16px;cursor:pointer;transition:all .2s ease;position:relative;display:flex;gap:12px;align-items:flex-start;background:var(--card-bg)}.radio-card[data-v-799a9b16]:hover{border-color:var(--text-secondary)}.radio-card input[type=radio][data-v-799a9b16]{margin-top:4px;accent-color:var(--border-heavy)}.radio-card.selected[data-v-799a9b16]{border-color:var(--border-heavy);background:#fffcfc}[data-theme=dark] .radio-card.selected[data-v-799a9b16]{background:#1f1f1f}.radio-card.selected[data-v-799a9b16]:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--accent-red)}.radio-card-title[data-v-799a9b16]{font-weight:600;font-size:14px;margin-bottom:4px;display:block;color:var(--text-main)}.radio-card-desc[data-v-799a9b16]{font-size:12px;color:var(--text-secondary);line-height:1.5}.warning-block[data-v-799a9b16]{background:#fff8f0;border:1px solid #e6a23c;border-left-width:4px;padding:16px;margin-top:12px}[data-theme=dark] .warning-block[data-v-799a9b16]{background:#2a2010;border-color:#b8860b}.warning-title[data-v-799a9b16]{color:#d35400;font-weight:700;font-size:12px;margin-bottom:8px;text-transform:uppercase;font-family:var(--mono-font);letter-spacing:.5px}[data-theme=dark] .warning-title[data-v-799a9b16]{color:#f5a623}.warning-list[data-v-799a9b16]{margin:0;padding-left:20px;font-size:12px;color:#885a0c;line-height:1.8}[data-theme=dark] .warning-list[data-v-799a9b16]{color:#d4a537}.info-block[data-v-799a9b16]{background:#f0f9ff;border:1px solid var(--accent-blue);border-left-width:4px;padding:16px;margin-top:12px}[data-theme=dark] .info-block[data-v-799a9b16]{background:#0a1929;border-color:#1e88e5}.info-title[data-v-799a9b16]{color:#1565c0;font-weight:700;font-size:12px;margin-bottom:8px;text-transform:uppercase;font-family:var(--mono-font);letter-spacing:.5px}[data-theme=dark] .info-title[data-v-799a9b16]{color:#64b5f6}.info-list[data-v-799a9b16]{margin:0;padding-left:20px;font-size:12px;color:#1565c0;line-height:1.8}[data-theme=dark] .info-list[data-v-799a9b16]{color:#64b5f6}.code-tag[data-v-799a9b16]{font-family:var(--mono-font);background:#fff9;padding:1px 5px;border:1px solid rgba(0,0,0,.1);font-size:11px}[data-theme=dark] .code-tag[data-v-799a9b16]{background:#0000004d;border-color:#ffffff1a}.dispatch-section[data-v-799a9b16]{border-top:1px solid var(--border-color);padding-top:20px}.tech-spec[data-v-799a9b16]{background:var(--path-bg);border:1px solid var(--border-color);padding:16px;display:grid;grid-template-columns:1fr 1fr;gap:16px}.spec-item label[data-v-799a9b16]{display:block;font-size:11px;color:var(--text-muted);text-transform:uppercase;margin-bottom:4px;font-family:var(--mono-font);letter-spacing:.5px}.spec-item .spec-value[data-v-799a9b16]{font-size:14px;font-family:var(--mono-font);color:var(--text-main);font-weight:600}.spec-warning[data-v-799a9b16]{font-size:12px;color:#d97706;margin-top:12px;font-family:var(--mono-font)}[data-theme=dark] .spec-warning[data-v-799a9b16]{color:#fbbf24}.plugin-section[data-v-799a9b16]{border-top:1px solid var(--border-color);padding-top:20px}.plugin-loading[data-v-799a9b16]{text-align:center;color:var(--text-muted);padding:20px;font-size:13px}.platform-grid[data-v-799a9b16]{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.platform-card[data-v-799a9b16]{display:flex;flex-direction:column;gap:6px}.platform-label[data-v-799a9b16]{display:flex;align-items:center;justify-content:space-between;padding:0 12px}.platform-name[data-v-799a9b16]{font-weight:600;font-size:11px;letter-spacing:.5px;color:var(--text-secondary)}.platform-status[data-v-799a9b16]{font-family:var(--mono-font);font-size:9px;font-weight:600;padding:2px 6px;letter-spacing:.3px}.platform-status.installed[data-v-799a9b16]{background:#000;color:#fff}[data-theme=dark] .platform-status.installed[data-v-799a9b16]{background:#fff;color:#000}.platform-status.outdated[data-v-799a9b16]{background:#d92424;color:#fff}.platform-status.disabled[data-v-799a9b16]{background:transparent;color:#999;border:1px solid #ccc}[data-theme=dark] .platform-status.disabled[data-v-799a9b16]{color:#666;border-color:#444}.component-box[data-v-799a9b16]{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 16px;padding:10px 12px;border:1px solid #ddd}[data-theme=dark] .component-box[data-v-799a9b16]{border-color:#444}.component-cell[data-v-799a9b16]{display:flex;align-items:center;gap:6px}.status-block[data-v-799a9b16]{width:8px;height:8px;flex-shrink:0}.status-block.installed[data-v-799a9b16]{background:#000}[data-theme=dark] .status-block.installed[data-v-799a9b16]{background:#fff}.status-block.outdated[data-v-799a9b16]{background:#d92424}.status-block.not-installed[data-v-799a9b16]{background:transparent;border:1px solid #000}[data-theme=dark] .status-block.not-installed[data-v-799a9b16]{border-color:#fff}.status-block.unsupported[data-v-799a9b16]{background:transparent;border:1px solid #bbb}[data-theme=dark] .status-block.unsupported[data-v-799a9b16]{border-color:#555}.component-name[data-v-799a9b16]{font-family:var(--mono-font);font-size:11px;color:#000}[data-theme=dark] .component-name[data-v-799a9b16]{color:#fff}.component-name.outdated[data-v-799a9b16]{color:#d92424}.component-name.not-installed[data-v-799a9b16]{color:#000}[data-theme=dark] .component-name.not-installed[data-v-799a9b16]{color:#fff}.component-name.unsupported[data-v-799a9b16]{color:#999}[data-theme=dark] .component-name.unsupported[data-v-799a9b16]{color:#666}.command-bar[data-v-799a9b16]{margin-top:12px;padding-left:12px;border-left:2px solid #ddd;display:flex;flex-direction:column;gap:2px}[data-theme=dark] .command-bar[data-v-799a9b16]{border-left-color:#444}.command-label[data-v-799a9b16]{font-size:10px;color:var(--text-muted)}.command-text[data-v-799a9b16]{font-family:var(--mono-font);font-size:11px;color:var(--text-secondary)}.help-section[data-v-799a9b16]{border-top:1px solid var(--border-color);padding-top:20px}.help-collapse-group[data-v-799a9b16]{display:flex;flex-direction:column;gap:8px}.trigger-table-wrapper[data-v-799a9b16]{padding:0!important}.trigger-table[data-v-799a9b16]{width:100%;border-collapse:collapse;font-size:13px}.trigger-table th[data-v-799a9b16],.trigger-table td[data-v-799a9b16]{padding:10px 16px;text-align:left;border-bottom:1px solid var(--border-color)}.trigger-table th[data-v-799a9b16]{background:var(--path-bg);font-weight:600;font-size:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.3px}.trigger-table th[data-v-799a9b16]:first-child{border-right:1px solid var(--border-color)}.trigger-table td[data-v-799a9b16]:first-child{font-weight:600;color:var(--text-main);border-right:1px solid var(--border-color);width:100px}.trigger-table td[data-v-799a9b16]:last-child{color:var(--text-secondary);font-family:var(--mono-font);font-size:12px}.trigger-table tr:last-child td[data-v-799a9b16]{border-bottom:none}.doc-links[data-v-799a9b16]{display:flex;flex-direction:column;gap:8px;margin-top:16px}.doc-link[data-v-799a9b16]{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--accent-red);text-decoration:none;cursor:pointer;transition:opacity .2s ease}.doc-link[data-v-799a9b16]:hover{opacity:.8}.doc-link.disabled[data-v-799a9b16]{color:var(--text-muted);cursor:not-allowed;pointer-events:none}.doc-link-arrow[data-v-799a9b16]{font-size:14px;transition:transform .2s ease}.doc-link:hover .doc-link-arrow[data-v-799a9b16]{transform:translate(3px)}.index-section[data-v-799a9b16]{border-top:1px solid var(--border-color);padding-top:20px}.index-entry[data-v-799a9b16]{display:flex;align-items:center;gap:16px;padding:16px;background:var(--path-bg);border:1px solid var(--border-color)}.index-entry-info[data-v-799a9b16]{flex:1}.index-entry-title[data-v-799a9b16]{font-size:13px;font-weight:600;color:var(--text-main);margin-bottom:4px}.index-entry-desc[data-v-799a9b16]{font-size:12px;color:var(--text-muted)}.index-entry-stats[data-v-799a9b16]{display:flex;gap:12px}.stat-box[data-v-799a9b16]{text-align:center;min-width:50px}.stat-number[data-v-799a9b16]{font-family:var(--mono-font);font-size:24px;font-weight:700;color:var(--text-main);line-height:1}.stat-label[data-v-799a9b16]{font-size:10px;color:var(--text-muted);margin-top:4px}.index-entry-icon[data-v-799a9b16]{width:50px;display:flex;align-items:center;justify-content:center;color:var(--text-secondary)}.index-entry+.index-entry[data-v-799a9b16]{margin-top:12px}.spec-value-row[data-v-799a9b16]{display:flex;align-items:center;justify-content:space-between}.spec-value-text[data-v-799a9b16]{font-size:14px;font-family:var(--mono-font);color:var(--text-main);font-weight:600}.version-status-tag[data-v-799a9b16]{font-family:var(--mono-font);font-size:9px;font-weight:600;padding:2px 6px;letter-spacing:.3px;cursor:pointer;transition:opacity .2s ease}.version-status-tag[data-v-799a9b16]:hover{opacity:.8}.version-status-tag.update[data-v-799a9b16]{background:#d92424;color:#fff}.version-status-tag.latest[data-v-799a9b16]{background:#000;color:#fff}[data-theme=dark] .version-status-tag.latest[data-v-799a9b16]{background:#fff;color:#000}.version-modal-content[data-v-799a9b16]{display:flex;flex-direction:column;gap:24px}.version-change[data-v-799a9b16]{display:flex;align-items:center;justify-content:center;gap:12px;padding:16px 0}.version-number[data-v-799a9b16]{font-family:var(--mono-font);font-size:28px;font-weight:700;color:var(--text-main)}.version-number.new[data-v-799a9b16]{color:var(--accent-red)}.version-arrow[data-v-799a9b16]{font-size:20px;color:var(--text-muted)}.latest-info[data-v-799a9b16]{display:flex;flex-direction:column;align-items:center;gap:16px;padding:20px 0}.latest-graphic[data-v-799a9b16]{position:relative;width:72px;height:72px}.sync-block-back[data-v-799a9b16]{position:absolute;top:0;left:0;width:56px;height:56px;border:3px solid var(--border-heavy)}[data-theme=dark] .sync-block-back[data-v-799a9b16]{border-color:#fff}.sync-block-front[data-v-799a9b16]{position:absolute;top:16px;left:16px;width:56px;height:56px;background:var(--border-heavy)}[data-theme=dark] .sync-block-front[data-v-799a9b16]{background:#fff}.sync-dot[data-v-799a9b16]{position:absolute;top:4px;right:4px;width:12px;height:12px;background:var(--accent-red)}.latest-title[data-v-799a9b16]{font-size:16px;font-weight:700;color:var(--text-main)}.latest-text[data-v-799a9b16]{font-family:var(--mono-font);font-size:13px;color:var(--text-secondary)}.update-section[data-v-799a9b16]{display:flex;flex-direction:column;gap:12px}.update-section .section-title[data-v-799a9b16]{font-size:14px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;margin:0;color:var(--text-main)}.update-section .section-desc[data-v-799a9b16]{font-size:13px;color:var(--text-secondary);margin:0}.command-box-clickable[data-v-799a9b16]{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--bg-color);border:1px solid var(--border-color);cursor:pointer;transition:all .15s ease}.command-box-clickable[data-v-799a9b16]:hover{border-color:var(--accent-red)}.command-box-clickable:hover .command-code[data-v-799a9b16],.command-box-clickable:hover .copy-hint[data-v-799a9b16]{color:var(--accent-red)}.command-code[data-v-799a9b16]{font-family:var(--mono-font);font-size:14px;color:var(--text-main);transition:color .15s ease}.copy-hint[data-v-799a9b16]{font-family:var(--mono-font);font-size:10px;font-weight:700;color:var(--text-muted);transition:color .15s ease}.tip-box[data-v-799a9b16]{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--bg-color);border-left:4px solid var(--accent-red)}.tip-label[data-v-799a9b16]{font-family:var(--mono-font);font-size:10px;font-weight:700;padding:2px 6px;background:var(--accent-red);color:#fff;text-transform:uppercase}.tip-text[data-v-799a9b16]{font-size:13px;color:var(--text-secondary)}.btn-primary[data-v-799a9b16],.btn-secondary[data-v-799a9b16]{padding:10px 20px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s ease}.btn-primary[data-v-799a9b16]{background:var(--border-heavy);border:2px solid var(--border-heavy);color:#fff}.btn-primary[data-v-799a9b16]:hover{background:#000;border-color:#000}.btn-secondary[data-v-799a9b16]{background:transparent;border:2px solid var(--border-heavy);color:var(--text-main)}.btn-secondary[data-v-799a9b16]:hover{background:var(--border-color)}[data-theme=dark] .btn-primary[data-v-799a9b16]{color:#111}[data-theme=dark] .btn-primary[data-v-799a9b16]:hover{background:#fff;border-color:#fff;color:#111}.version-links[data-v-799a9b16]{margin-top:16px}.version-link[data-v-799a9b16]{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--accent-red);text-decoration:none;cursor:pointer;transition:opacity .2s ease}.version-link[data-v-799a9b16]:hover{opacity:.8}.version-link-arrow[data-v-799a9b16]{font-size:14px;transition:transform .2s ease}.version-link:hover .version-link-arrow[data-v-799a9b16]{transform:translate(3px)}.home-view[data-v-1e83d67d]{min-height:100vh;background-color:var(--bg-color);background-image:radial-gradient(var(--bg-dot) 1px,transparent 1px);background-size:20px 20px}.header[data-v-1e83d67d]{background:var(--card-bg);border-bottom:1px solid var(--border-color);padding:0 32px;height:64px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100}.plugin-update-banner[data-v-1e83d67d]{position:relative;background:var(--border-heavy);color:#fff;height:44px;padding:0 32px;display:flex;align-items:center;justify-content:center}.banner-content[data-v-1e83d67d]{display:flex;align-items:center;justify-content:center;gap:12px;font-size:14px}.banner-tag[data-v-1e83d67d]{font-family:var(--mono-font);font-size:11px;font-weight:700;padding:3px 8px;background:var(--accent-orange);color:#000;text-transform:uppercase}.banner-text[data-v-1e83d67d]{flex:0 1 auto}.banner-action[data-v-1e83d67d]{background:transparent;border:1px solid rgba(255,255,255,.5);color:#fff;padding:4px 12px;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s ease}.banner-action[data-v-1e83d67d]:hover{background:#fff;color:var(--border-heavy);border-color:#fff}.banner-close[data-v-1e83d67d]{position:absolute;right:32px;background:transparent;border:none;color:#fff;cursor:pointer;padding:4px 8px;font-size:14px;opacity:.8;transition:opacity .2s}.banner-close[data-v-1e83d67d]:hover{opacity:1}[data-theme=dark] .plugin-update-banner[data-v-1e83d67d]{color:#111}[data-theme=dark] .banner-action[data-v-1e83d67d]{border-color:#0000004d;color:#111}[data-theme=dark] .banner-action[data-v-1e83d67d]:hover{background:#111;color:var(--border-heavy);border-color:#111}[data-theme=dark] .banner-close[data-v-1e83d67d]{color:#111}.logo[data-v-1e83d67d]{display:flex;align-items:center}.logo-icon[data-v-1e83d67d]{width:24px;height:24px;position:relative}.logo-icon[data-v-1e83d67d]:before{content:"";position:absolute;top:0;left:0;width:18px;height:18px;background-color:var(--logo-block)}.logo-icon[data-v-1e83d67d]:after{content:"";position:absolute;bottom:2px;right:2px;width:10px;height:10px;background-color:var(--accent-red);box-shadow:0 0 0 2px var(--logo-outline)}.logo-text[data-v-1e83d67d]{font-size:20px;line-height:1;color:var(--text-main);margin-left:12px}.logo-text .bold[data-v-1e83d67d]{font-weight:800;letter-spacing:-.5px}.logo-text .light[data-v-1e83d67d]{font-weight:300;opacity:.7}.logo-text .red-dot[data-v-1e83d67d]{position:relative;font-style:normal}.logo-text .red-dot[data-v-1e83d67d]:after{content:"";position:absolute;top:.18em;left:.06em;width:.17em;height:.17em;background-color:var(--accent-red);border-radius:50%}.header-actions[data-v-1e83d67d]{display:flex;gap:12px;align-items:center}.theme-toggle[data-v-1e83d67d]{width:36px;height:36px;padding:0;background:var(--card-bg);border:1px solid var(--border-heavy);color:var(--text-main);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease}.theme-toggle[data-v-1e83d67d]:hover{border-color:var(--border-heavy);color:var(--accent-red);background:var(--path-bg);transform:translateY(-1px);box-shadow:2px 2px 0 var(--border-heavy)}.theme-toggle .icon-sun[data-v-1e83d67d],.theme-toggle .icon-moon[data-v-1e83d67d]{width:18px;height:18px}.filter-bar[data-v-1e83d67d]{background:var(--card-bg);border-bottom:1px solid var(--border-color);padding:0 32px;display:flex;align-items:center;justify-content:space-between}.filter-left[data-v-1e83d67d]{display:flex;align-items:center;gap:24px}.filter-right[data-v-1e83d67d]{display:flex;align-items:center;gap:12px}.tabs[data-v-1e83d67d]{display:flex;gap:0}.tab[data-v-1e83d67d]{padding:16px 20px;font-size:14px;font-weight:600;color:var(--text-secondary);cursor:pointer;border-bottom:3px solid transparent;transition:all .15s ease;-webkit-user-select:none;user-select:none}.tab[data-v-1e83d67d]:hover{color:var(--text-main)}.tab.active[data-v-1e83d67d]{color:var(--text-main);border-bottom-color:var(--border-heavy)}.search-input[data-v-1e83d67d]{font-size:14px;padding:10px 0;border:none;border-bottom:2px solid var(--border-color);background:transparent;width:240px;outline:none;transition:border-color .15s ease;color:var(--text-main)}.search-input[data-v-1e83d67d]:focus{border-bottom-color:var(--border-heavy)}.search-input[data-v-1e83d67d]::placeholder{color:var(--text-muted)}.custom-select[data-v-1e83d67d]{position:relative;width:160px}.custom-select-trigger[data-v-1e83d67d]{height:36px;padding:0 32px 0 12px;border:1px solid var(--border-color);background:var(--card-bg);color:var(--text-main);font-size:14px;cursor:pointer;display:flex;align-items:center;transition:all .15s ease;position:relative}.custom-select-trigger[data-v-1e83d67d]:after{content:"";position:absolute;right:12px;top:50%;transform:translateY(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid var(--text-main);transition:transform .15s ease}.custom-select.open .custom-select-trigger[data-v-1e83d67d]:after{transform:translateY(-50%) rotate(180deg)}.custom-select-trigger[data-v-1e83d67d]:hover,.custom-select.open .custom-select-trigger[data-v-1e83d67d]{border-color:var(--border-heavy)}.custom-select-dropdown[data-v-1e83d67d]{position:absolute;top:100%;left:0;right:0;background:var(--card-bg);border:1px solid var(--border-heavy);border-top:none;display:none;z-index:100;box-shadow:4px 4px #0003}.custom-select.open .custom-select-dropdown[data-v-1e83d67d]{display:block}.custom-select-option[data-v-1e83d67d]{padding:10px 12px;font-size:14px;cursor:pointer;transition:all .1s ease;border-left:3px solid transparent}.custom-select-option[data-v-1e83d67d]:hover{background:var(--path-bg);border-left-color:var(--accent-red)}.custom-select-option.selected[data-v-1e83d67d]{background:var(--card-footer);font-weight:600;border-left-color:var(--border-heavy)}.main-content[data-v-1e83d67d]{padding:32px;max-width:1400px;margin:0 auto}.card-grid[data-v-1e83d67d]{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:20px}.card[data-v-1e83d67d]{background:var(--card-bg);border:1px solid var(--border-color);border-left:4px solid var(--border-heavy);transition:all .2s cubic-bezier(.25,.46,.45,.94);position:relative;display:flex;flex-direction:column}.card[data-v-1e83d67d]:hover{transform:translate(-4px,-4px);box-shadow:4px 4px 0 var(--border-heavy);border-color:var(--border-heavy);border-left-color:var(--accent-red)}.card.archived[data-v-1e83d67d]{border-left-color:var(--path-border)}.card.archived .card-title[data-v-1e83d67d]{color:var(--text-muted)}.card.archived[data-v-1e83d67d]:hover{border-left-color:var(--text-muted)}.card-header[data-v-1e83d67d]{padding:20px 20px 12px;display:flex;align-items:flex-start;gap:8px}.card-title[data-v-1e83d67d]{font-size:16px;font-weight:700;color:var(--text-main);line-height:1.3;margin:-8px;padding:8px;cursor:pointer;transition:color .2s;flex:1;min-width:0}.card-title[data-v-1e83d67d]:hover{color:var(--accent-red)}.card-body[data-v-1e83d67d]{padding:0 20px 16px;flex:1}.path-box[data-v-1e83d67d]{background:var(--path-bg);padding:10px 12px;font-family:var(--mono-font);font-size:12px;color:var(--text-secondary);border-left:2px solid var(--path-border);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:12px}.card.archived .path-box[data-v-1e83d67d]{color:var(--text-muted);border-left-color:var(--border-color)}.meta-info[data-v-1e83d67d]{font-size:12px;color:var(--text-muted);font-family:var(--mono-font);display:flex;flex-direction:column;gap:4px}.card-footer[data-v-1e83d67d]{border-top:1px solid var(--border-color);padding:12px 20px;display:flex;justify-content:space-evenly;gap:16px;background:var(--card-footer)}.btn[data-v-1e83d67d]{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:14px;font-weight:600;border:none;cursor:pointer;transition:all .15s ease;text-decoration:none;height:36px;padding:0 16px}.btn-primary[data-v-1e83d67d]{background:var(--accent-red);color:#fff;border:1px solid var(--accent-red)}.btn-primary[data-v-1e83d67d]:hover{background:#b82424;border-color:#b82424;transform:translateY(-1px);box-shadow:2px 2px #0000004d}.btn-secondary[data-v-1e83d67d]{background:var(--card-bg);color:var(--text-main);border:1px solid var(--border-heavy)}.btn-secondary[data-v-1e83d67d]:hover{background:var(--path-bg);transform:translateY(-1px);box-shadow:2px 2px 0 var(--border-heavy)}.btn-ghost[data-v-1e83d67d]{background:transparent;color:var(--text-secondary);border:1px solid transparent}.btn-ghost[data-v-1e83d67d]:hover{color:var(--text-main);background:var(--path-bg)}.btn-danger[data-v-1e83d67d]{background:transparent;color:var(--text-secondary);border:1px solid transparent}.btn-danger[data-v-1e83d67d]:hover{color:var(--accent-red);background:#fff5f5}.btn-accent[data-v-1e83d67d]{background:transparent;color:var(--accent-red);border:1px solid transparent}.btn-accent[data-v-1e83d67d]:hover{background:#fff5f5}.btn-cancel[data-v-1e83d67d]{background:var(--card-bg);color:var(--text-secondary);border:1px solid var(--border-color)}.btn-cancel[data-v-1e83d67d]:hover{border-color:var(--text-secondary);color:var(--text-main)}.btn-icon[data-v-1e83d67d]{width:36px;padding:0;background:var(--card-bg);border:1px solid var(--border-color);color:var(--text-main)}.btn-icon[data-v-1e83d67d]:hover{border-color:var(--border-heavy);color:var(--accent-red)}.btn-icon.desc svg[data-v-1e83d67d]{transform:rotate(180deg)}.spin[data-v-1e83d67d]{display:inline-block;animation:spin-1e83d67d 1s linear infinite}@keyframes spin-1e83d67d{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.badge[data-v-1e83d67d]{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;padding:3px 8px;letter-spacing:.5px}.badge-active[data-v-1e83d67d]{background:var(--border-heavy);color:#fff}.badge-archived[data-v-1e83d67d]{background:var(--path-bg);color:var(--text-muted)}.badge-error[data-v-1e83d67d]{background:var(--accent-red);color:#fff}.empty-state[data-v-1e83d67d]{text-align:center;padding:80px 40px;color:var(--text-muted)}.empty-state-icon[data-v-1e83d67d]{width:64px;height:64px;margin:0 auto 24px;background:var(--path-bg);border:2px dashed var(--border-color);display:flex;align-items:center;justify-content:center;color:var(--text-muted)}.empty-state-title[data-v-1e83d67d]{font-size:18px;font-weight:700;color:var(--text-main);margin-bottom:8px}.empty-state-desc[data-v-1e83d67d]{font-size:14px;margin-bottom:24px}.form-group[data-v-1e83d67d]{margin-bottom:20px}.form-label[data-v-1e83d67d]{display:block;font-size:14px;font-weight:600;margin-bottom:8px}.form-input[data-v-1e83d67d]{width:100%;height:40px;padding:0 12px;font-size:14px;border:1px solid var(--border-color);background:var(--card-bg);color:var(--text-main);outline:none;transition:border-color .15s ease}.form-input[data-v-1e83d67d]::placeholder{color:var(--text-muted)}.form-input[data-v-1e83d67d]:focus{border-color:var(--border-heavy)}.form-textarea[data-v-1e83d67d]{height:auto;padding:12px;resize:vertical}[data-theme=dark] .btn-primary[data-v-1e83d67d]{background:var(--accent-red);border-color:var(--accent-red);color:#fff}[data-theme=dark] .btn-primary[data-v-1e83d67d]:hover{background:#b82424;border-color:#b82424;box-shadow:2px 2px #fff3}[data-theme=dark] .badge-active[data-v-1e83d67d]{background:#fff;color:#111}[data-theme=dark] .btn-danger[data-v-1e83d67d]:hover,[data-theme=dark] .btn-accent[data-v-1e83d67d]:hover{background:#d92b2b33}.dev-badge[data-v-1e83d67d]{position:fixed;bottom:12px;right:12px;background:#f59e0b;color:#fff;padding:4px 10px;border-radius:4px;font-size:10px;font-weight:700;font-family:var(--mono-font);letter-spacing:1px;z-index:9999;cursor:default}.error-message-box[data-v-1e83d67d]{font-family:var(--mono-font);font-size:13px;line-height:1.8;color:var(--text-secondary);white-space:pre-wrap;background:var(--path-bg);padding:16px;border-left:4px solid var(--accent-red)}.diagnose-result[data-v-1e83d67d]{margin-top:16px;border:1px solid var(--border-color);background:var(--card-bg)}.diagnose-header[data-v-1e83d67d]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border-color);background:var(--card-footer)}.diagnose-title[data-v-1e83d67d]{font-weight:600;font-size:14px}.diagnose-summary[data-v-1e83d67d]{font-size:12px;color:var(--text-muted);font-family:var(--mono-font)}.issue-list[data-v-1e83d67d]{max-height:200px;overflow-y:auto}.issue-item[data-v-1e83d67d]{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--border-color);font-size:13px}.issue-item[data-v-1e83d67d]:last-child{border-bottom:none}.issue-icon[data-v-1e83d67d]{width:16px;text-align:center;font-weight:700}.issue-auto .issue-icon[data-v-1e83d67d]{color:var(--accent-green, #22c55e)}.issue-interactive .issue-icon[data-v-1e83d67d]{color:var(--accent-orange, #f59e0b)}.issue-manual .issue-icon[data-v-1e83d67d]{color:var(--accent-red)}.issue-message[data-v-1e83d67d]{flex:1;color:var(--text-main)}.issue-tag[data-v-1e83d67d]{font-size:10px;font-weight:600;padding:2px 6px;text-transform:uppercase}.tag-auto[data-v-1e83d67d]{background:#22c55e26;color:var(--accent-green, #22c55e)}.tag-cli[data-v-1e83d67d]{background:#f59e0b26;color:var(--accent-orange, #f59e0b)}.tag-manual[data-v-1e83d67d]{background:#d92b2b26;color:var(--accent-red)}.no-issues[data-v-1e83d67d]{padding:24px 16px;text-align:center;color:var(--text-muted);font-size:13px}.cli-hint-box[data-v-1e83d67d]{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-top:1px solid var(--border-color);background:var(--card-footer)}.cli-hint-header[data-v-1e83d67d]{display:flex;align-items:center;gap:8px}.cli-hint-tag[data-v-1e83d67d]{font-family:var(--mono-font);font-size:10px;font-weight:600;padding:2px 6px;background:#f59e0b26;color:var(--accent-orange, #f59e0b);text-transform:uppercase}.cli-hint-text[data-v-1e83d67d]{font-size:12px;color:var(--text-muted)}.cli-hint-command[data-v-1e83d67d]{display:flex;align-items:center;gap:8px}.cli-command[data-v-1e83d67d]{font-family:var(--mono-font);font-size:12px;color:var(--text-main);-webkit-user-select:all;user-select:all}.cli-copy-btn[data-v-1e83d67d]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:transparent;border:1px solid var(--border-color);color:var(--text-muted);cursor:pointer;transition:all .15s ease}.cli-copy-btn[data-v-1e83d67d]:hover{border-color:var(--accent-color);color:var(--accent-color)}.card.pinned[data-v-1e83d67d]{border-left-color:var(--accent-red);border-top:3px solid var(--accent-red)}.card.pinned[data-v-1e83d67d]:hover{border-left-color:var(--accent-red)}.pin-badge[data-v-1e83d67d]{font-size:11px;font-weight:700;text-transform:uppercase;padding:3px 8px;letter-spacing:.5px;cursor:pointer;transition:all .15s ease}.pin-badge-hint[data-v-1e83d67d]{background:var(--border-heavy);color:#fff;display:none;position:relative}.pin-badge-hint[data-v-1e83d67d]:before{content:">";margin-right:2px;animation:pin-blink-1e83d67d .8s ease-in-out infinite}@keyframes pin-blink-1e83d67d{0%,50%{opacity:1}51%,to{opacity:0}}.card:hover .pin-badge-hint[data-v-1e83d67d]{display:inline-block}.pin-badge-active[data-v-1e83d67d]{background:var(--accent-red);color:#fff}.pin-badge-active[data-v-1e83d67d]:hover{background:#b82424}.card.pinned .pin-badge-hint[data-v-1e83d67d]{display:none!important}[data-theme=dark] .pin-badge-hint[data-v-1e83d67d]{background:#fff;color:#111}[data-theme=dark] .pin-badge-active[data-v-1e83d67d]{background:var(--accent-red);color:#fff}