cc-viewer 1.5.21 → 1.5.23

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.
@@ -29,7 +29,7 @@ body{margin:0;background-color:#0d0d0d}*{scrollbar-width:thin;scrollbar-color:#3
29
29
  * The original design remains. The terminal itself
30
30
  * has been extended to include xterm CSI codes, among
31
31
  * other features.
32
- */.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}._terminalPanel_jipsg_1{height:100%;display:flex;flex-direction:column;background:#0a0a0a}._terminalContainer_jipsg_8{flex:1;overflow:hidden;padding:4px 8px;touch-action:none;overscroll-behavior:contain}._virtualKeybar_jipsg_16{display:flex;gap:6px;padding:8px 10px;background:#111;border-top:1px solid #222;overflow-x:auto;flex-shrink:0;-webkit-overflow-scrolling:touch}._virtualKey_jipsg_16{flex-shrink:0;padding:12px 20px;border:1px solid #333;border-radius:8px;background:#1a1a1a;color:#ccc;font-size:15px;font-family:Menlo,Monaco,monospace;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:pan-x;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}._virtualKeyPressed_jipsg_47{background:#333;border-color:#555;color:#fff}._fileExplorer_dbq1c_1{width:240px;flex-shrink:0;background:#111;border-right:1px solid #2a2a2a;display:flex;flex-direction:column;overflow:hidden;-webkit-user-select:none;user-select:none}._header_dbq1c_12{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #2a2a2a;flex-shrink:0}._headerTitle_dbq1c_21{font-size:11px;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.5px}._collapseBtn_dbq1c_29{width:20px;height:20px;border:none;background:none;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:0}._collapseBtn_dbq1c_29:hover{color:#ccc;background:#2a2a2a}._treeContainer_dbq1c_48{flex:1;overflow:auto;padding:4px 0}._treeItem_dbq1c_54{display:flex;align-items:center;height:26px;padding:0 8px;cursor:pointer;color:#ccc;font-size:13px;white-space:nowrap;transition:background .1s}._treeItem_dbq1c_54:hover,._treeItemSelected_dbq1c_70{background:#1a1a1a}._arrow_dbq1c_74{width:16px;flex-shrink:0;color:#666;display:flex;align-items:center;justify-content:center}._icon_dbq1c_83{width:16px;height:16px;flex-shrink:0;margin-right:6px;display:flex;align-items:center;justify-content:center}._fileName_dbq1c_93{overflow:hidden;text-overflow:ellipsis}._loading_dbq1c_98{color:#555;font-size:12px;padding:4px 8px}._error_dbq1c_104{color:#ff6b6b;font-size:12px;padding:4px 8px}._treeItemGitIgnored_dbq1c_110{opacity:.4}._fileContentView_ryksq_1{display:flex;flex-direction:column;height:100%;background:#0d0d0d}._editorBanner_ryksq_8{padding:6px 16px;background:#1a3a2a;color:#4ade80;font-size:12px;text-align:center;flex-shrink:0;border-bottom:1px solid #2a5a3a}._header_ryksq_18{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid #2a2a2a;background:#111;flex-shrink:0}._headerLeft_ryksq_28{display:flex;align-items:center;gap:8px;flex:1;min-width:0}._headerRight_ryksq_36{display:flex;align-items:center;gap:10px;flex-shrink:0}._backBtn_ryksq_43{width:28px;height:28px;border:none;background:none;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:6px;padding:0;flex-shrink:0;transition:background .15s,color .15s}._backBtn_ryksq_43:hover{color:#ccc;background:#1a1a1a}._filePath_ryksq_64{font-size:13px;color:#ccc;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._fileSize_ryksq_72{font-size:11px;color:#666;flex-shrink:0}._saveBtn_ryksq_78{display:flex;align-items:center;gap:5px;padding:4px 12px;border:1px solid #3a3a3a;background:#1a1a1a;color:#ccc;font-size:12px;border-radius:6px;cursor:pointer;transition:background .15s,color .15s,border-color .15s;white-space:nowrap}._saveBtn_ryksq_78:hover:not(:disabled){background:#2a2a2a;color:#fff;border-color:#4a4a4a}._saveBtn_ryksq_78:disabled{opacity:.4;cursor:not-allowed}._saveStatus_ryksq_104{font-size:11px;color:#888;white-space:nowrap}._saveStatusSaved_ryksq_110{color:#4caf50}._saveStatusFailed_ryksq_114{color:#ff6b6b}._contentContainer_ryksq_118{flex:1;overflow:hidden;background:#0d0d0d;display:flex;min-height:0;min-width:0}._editorWrapper_ryksq_127{flex:1;display:flex;min-height:0;min-width:0;overflow:hidden}._lineNumCol_ryksq_135{flex-shrink:0;width:56px;overflow:hidden;background:#0d0d0d;border-right:1px solid #2a2a2a;-webkit-user-select:none;user-select:none;padding-top:4px}._lineNumRow_ryksq_145{padding:0 16px;text-align:right;color:#555;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;font-size:13px;line-height:1.5;white-space:nowrap}._editorCol_ryksq_155{flex:1;min-width:0;min-height:0;display:flex}._editorCol_ryksq_155 .cm-theme{flex:1;display:flex;min-height:0;min-width:0}._editorCol_ryksq_155 .cm-editor{flex:1;min-width:0;min-height:0}._loading_ryksq_175{display:flex;align-items:center;justify-content:center;height:100%;width:100%;color:#666;font-size:14px}._error_ryksq_185{display:flex;align-items:center;justify-content:center;height:100%;width:100%;color:#ff6b6b;font-size:14px}._gitChanges_1in24_1{width:240px;flex-shrink:0;background:#111;border-right:1px solid #2a2a2a;display:flex;flex-direction:column;overflow:hidden;-webkit-user-select:none;user-select:none}._header_1in24_12{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #2a2a2a;flex-shrink:0}._headerTitle_1in24_21{font-size:11px;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.5px}._collapseBtn_1in24_29{width:20px;height:20px;border:none;background:none;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:0}._collapseBtn_1in24_29:hover{color:#ccc;background:#2a2a2a}._changesContainer_1in24_48{flex:1;overflow:auto;padding:4px 0}._changeItem_1in24_54{display:flex;align-items:center;height:26px;padding:0 8px;cursor:pointer;color:#ccc;font-size:13px;white-space:nowrap;transition:background .1s;gap:6px}._changeItem_1in24_54:hover,._changeItemSelected_1in24_71{background:#1a1a1a}._dirItem_1in24_75{display:flex;align-items:center;height:26px;padding:0 8px;color:#999;font-size:13px;white-space:nowrap;gap:6px}._dirArrow_1in24_86{width:16px;flex-shrink:0;color:#666;display:flex;align-items:center;justify-content:center}._dirName_1in24_95{overflow:hidden;text-overflow:ellipsis}._status_1in24_100{width:16px;flex-shrink:0;font-size:11px;font-weight:600;text-align:center;margin-left:auto}._icon_1in24_109{width:16px;height:16px;flex-shrink:0;display:flex;align-items:center;justify-content:center}._fileName_1in24_118{overflow:hidden;text-overflow:ellipsis;flex:1}._loading_1in24_124{color:#555;font-size:12px;padding:8px 12px}._error_1in24_130{color:#ff6b6b;font-size:12px;padding:8px 12px}._empty_1in24_136{color:#666;font-size:12px;padding:8px 12px;text-align:center}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
32
+ */.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}._terminalPanel_jipsg_1{height:100%;display:flex;flex-direction:column;background:#0a0a0a}._terminalContainer_jipsg_8{flex:1;overflow:hidden;padding:4px 8px;touch-action:none;overscroll-behavior:contain}._virtualKeybar_jipsg_16{display:flex;gap:6px;padding:8px 10px;background:#111;border-top:1px solid #222;overflow-x:auto;flex-shrink:0;-webkit-overflow-scrolling:touch}._virtualKey_jipsg_16{flex-shrink:0;padding:12px 20px;border:1px solid #333;border-radius:8px;background:#1a1a1a;color:#ccc;font-size:15px;font-family:Menlo,Monaco,monospace;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:pan-x;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}._virtualKeyPressed_jipsg_47{background:#333;border-color:#555;color:#fff}._fileExplorer_dbq1c_1{width:240px;flex-shrink:0;background:#111;border-right:1px solid #2a2a2a;display:flex;flex-direction:column;overflow:hidden;-webkit-user-select:none;user-select:none}._header_dbq1c_12{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #2a2a2a;flex-shrink:0}._headerTitle_dbq1c_21{font-size:11px;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.5px}._collapseBtn_dbq1c_29{width:20px;height:20px;border:none;background:none;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:0}._collapseBtn_dbq1c_29:hover{color:#ccc;background:#2a2a2a}._treeContainer_dbq1c_48{flex:1;overflow:auto;padding:4px 0}._treeItem_dbq1c_54{display:flex;align-items:center;height:26px;padding:0 8px;cursor:pointer;color:#ccc;font-size:13px;white-space:nowrap;transition:background .1s}._treeItem_dbq1c_54:hover,._treeItemSelected_dbq1c_70{background:#1a1a1a}._arrow_dbq1c_74{width:16px;flex-shrink:0;color:#666;display:flex;align-items:center;justify-content:center}._icon_dbq1c_83{width:16px;height:16px;flex-shrink:0;margin-right:6px;display:flex;align-items:center;justify-content:center}._fileName_dbq1c_93{overflow:hidden;text-overflow:ellipsis}._loading_dbq1c_98{color:#555;font-size:12px;padding:4px 8px}._error_dbq1c_104{color:#ff6b6b;font-size:12px;padding:4px 8px}._treeItemGitIgnored_dbq1c_110{opacity:.4}._fileContentView_1mwk0_1{display:flex;flex-direction:column;height:100%;background:#0d0d0d}._editorBanner_1mwk0_8{padding:6px 16px;background:#1a3a2a;color:#4ade80;font-size:12px;text-align:center;flex-shrink:0;border-bottom:1px solid #2a5a3a;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s}._editorBanner_1mwk0_8:hover{background:#245a3a}._header_1mwk0_25{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid #2a2a2a;background:#111;flex-shrink:0}._headerLeft_1mwk0_35{display:flex;align-items:center;gap:8px;flex:1;min-width:0}._headerRight_1mwk0_43{display:flex;align-items:center;gap:10px;flex-shrink:0}._backBtn_1mwk0_50{width:28px;height:28px;border:none;background:none;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:6px;padding:0;flex-shrink:0;transition:background .15s,color .15s}._backBtn_1mwk0_50:hover{color:#ccc;background:#1a1a1a}._filePath_1mwk0_71{font-size:13px;color:#ccc;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._fileSize_1mwk0_79{font-size:11px;color:#666;flex-shrink:0}._saveBtn_1mwk0_85{display:flex;align-items:center;gap:5px;padding:4px 12px;border:1px solid #3a3a3a;background:#1a1a1a;color:#ccc;font-size:12px;border-radius:6px;cursor:pointer;transition:background .15s,color .15s,border-color .15s;white-space:nowrap}._saveBtn_1mwk0_85:hover:not(:disabled){background:#2a2a2a;color:#fff;border-color:#4a4a4a}._saveBtn_1mwk0_85:disabled{opacity:.4;cursor:not-allowed}._saveStatus_1mwk0_111{font-size:11px;color:#888;white-space:nowrap}._saveStatusSaved_1mwk0_117{color:#4caf50}._saveStatusFailed_1mwk0_121{color:#ff6b6b}._contentContainer_1mwk0_125{flex:1;overflow:hidden;background:#0d0d0d;display:flex;min-height:0;min-width:0}._editorWrapper_1mwk0_134{flex:1;display:flex;min-height:0;min-width:0;overflow:hidden}._lineNumCol_1mwk0_142{flex-shrink:0;width:56px;overflow:hidden;background:#0d0d0d;border-right:1px solid #2a2a2a;-webkit-user-select:none;user-select:none;padding-top:4px}._lineNumRow_1mwk0_152{padding:0 16px;text-align:right;color:#555;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;font-size:13px;line-height:1.5;white-space:nowrap}._editorCol_1mwk0_162{flex:1;min-width:0;min-height:0;display:flex}._editorCol_1mwk0_162 .cm-theme{flex:1;display:flex;min-height:0;min-width:0}._editorCol_1mwk0_162 .cm-editor{flex:1;min-width:0;min-height:0}._loading_1mwk0_182{display:flex;align-items:center;justify-content:center;height:100%;width:100%;color:#666;font-size:14px}._error_1mwk0_192{display:flex;align-items:center;justify-content:center;height:100%;width:100%;color:#ff6b6b;font-size:14px}._gitChanges_1in24_1{width:240px;flex-shrink:0;background:#111;border-right:1px solid #2a2a2a;display:flex;flex-direction:column;overflow:hidden;-webkit-user-select:none;user-select:none}._header_1in24_12{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #2a2a2a;flex-shrink:0}._headerTitle_1in24_21{font-size:11px;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.5px}._collapseBtn_1in24_29{width:20px;height:20px;border:none;background:none;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:0}._collapseBtn_1in24_29:hover{color:#ccc;background:#2a2a2a}._changesContainer_1in24_48{flex:1;overflow:auto;padding:4px 0}._changeItem_1in24_54{display:flex;align-items:center;height:26px;padding:0 8px;cursor:pointer;color:#ccc;font-size:13px;white-space:nowrap;transition:background .1s;gap:6px}._changeItem_1in24_54:hover,._changeItemSelected_1in24_71{background:#1a1a1a}._dirItem_1in24_75{display:flex;align-items:center;height:26px;padding:0 8px;color:#999;font-size:13px;white-space:nowrap;gap:6px}._dirArrow_1in24_86{width:16px;flex-shrink:0;color:#666;display:flex;align-items:center;justify-content:center}._dirName_1in24_95{overflow:hidden;text-overflow:ellipsis}._status_1in24_100{width:16px;flex-shrink:0;font-size:11px;font-weight:600;text-align:center;margin-left:auto}._icon_1in24_109{width:16px;height:16px;flex-shrink:0;display:flex;align-items:center;justify-content:center}._fileName_1in24_118{overflow:hidden;text-overflow:ellipsis;flex:1}._loading_1in24_124{color:#555;font-size:12px;padding:8px 12px}._error_1in24_130{color:#ff6b6b;font-size:12px;padding:8px 12px}._empty_1in24_136{color:#666;font-size:12px;padding:8px 12px;text-align:center}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
33
33
  Theme: GitHub Dark
34
34
  Description: Dark theme as seen on github.com
35
35
  Author: github.com
@@ -38,4 +38,4 @@ body{margin:0;background-color:#0d0d0d}*{scrollbar-width:thin;scrollbar-color:#3
38
38
 
39
39
  Outdated base version: https://github.com/primer/github-syntax-dark
40
40
  Current colors taken from GitHub's CSS
41
- */.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}._fullFileDiffView_g75nb_1{width:100%;height:100%;display:flex;flex-direction:column;background:#0d0d0d;overflow:hidden}._diffSummary_g75nb_10{padding:8px 16px;background:#111;border-bottom:1px solid #2a2a2a;display:flex;gap:8px;align-items:center;flex-shrink:0}._addedBadge_g75nb_20{padding:2px 8px;background:#73c99126;border:1px solid rgba(115,201,145,.3);border-radius:4px;font-size:11px;font-weight:600;color:#73c991;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace}._deletedBadge_g75nb_31{padding:2px 8px;background:#f14c4c26;border:1px solid rgba(241,76,76,.3);border-radius:4px;font-size:11px;font-weight:600;color:#f14c4c;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace}._codeContainer_g75nb_42{flex:1;overflow:hidden;display:flex;min-height:0;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;font-size:13px;line-height:1.6}._lineNumberCol_g75nb_52{flex-shrink:0;overflow:hidden;background:#0d0d0d;border-right:1px solid #2a2a2a;-webkit-user-select:none;user-select:none}._lineNumRow_g75nb_60{display:flex;min-height:21px}._oldLineNum_g75nb_65,._newLineNum_g75nb_66{display:inline-block;width:40px;text-align:right;padding:0 6px;font-size:12px;box-sizing:border-box}._lineNumNormal_g75nb_75 ._oldLineNum_g75nb_65,._lineNumNormal_g75nb_75 ._newLineNum_g75nb_66{color:#555}._lineNumAdd_g75nb_80{border-right:3px solid #73c991}._lineNumAdd_g75nb_80 ._oldLineNum_g75nb_65{color:#555}._lineNumAdd_g75nb_80 ._newLineNum_g75nb_66{color:#73c991;font-weight:600}._lineNumDelete_g75nb_93{border-right:3px solid #f14c4c}._lineNumDelete_g75nb_93 ._oldLineNum_g75nb_65{color:#f14c4c;font-weight:600}._lineNumDelete_g75nb_93 ._newLineNum_g75nb_66{color:#555}._codeColWrap_g75nb_106{flex:1;position:relative;min-width:0;overflow:hidden}._codeCol_g75nb_106{width:100%;height:100%;overflow:auto;min-width:0}._codeInner_g75nb_120{width:fit-content;min-width:100%}._codeLine_g75nb_125{position:relative;min-height:21px;display:flex;transition:background .1s}._codeLine_g75nb_125:hover{background:#ffffff08}._linePrefix_g75nb_136{display:inline-block;width:16px;text-align:center;color:#888;flex-shrink:0;-webkit-user-select:none;user-select:none}._lineContent_g75nb_145{padding-right:16px;color:#ccc;white-space:pre}._lineNormal_g75nb_151{background:transparent}._lineAdd_g75nb_155{background:#73c9911a}._lineAdd_g75nb_155 ._linePrefix_g75nb_136{color:#73c991}._lineDelete_g75nb_163{background:#f14c4c1a}._lineDelete_g75nb_163 ._linePrefix_g75nb_136{color:#f14c4c}._lineDelete_g75nb_163 ._lineContent_g75nb_145{text-decoration:line-through;opacity:.8}._miniMap_1ho3j_1{position:absolute;top:0;right:0;width:10px;height:100%;cursor:pointer;z-index:10}._marker_1ho3j_11{position:absolute;left:0;width:100%;border-radius:1px;pointer-events:none}._gitDiffView_14i1p_1{flex:1;display:flex;flex-direction:column;background:#0d0d0d;overflow:hidden}._header_14i1p_9{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #2a2a2a;background:#111;flex-shrink:0}._headerLeft_14i1p_19{display:flex;align-items:center;gap:12px;flex:1;min-width:0}._backBtn_14i1p_27{width:28px;height:28px;border:none;background:none;color:#888;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:0;flex-shrink:0;transition:all .15s}._backBtn_14i1p_27:hover{color:#ccc;background:#2a2a2a}._filePath_14i1p_48{font-size:13px;color:#ccc;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._diffBadge_14i1p_57{padding:2px 8px;background:#2a2a2a;border:1px solid #444;border-radius:4px;font-size:10px;font-weight:600;color:#e2c08d;letter-spacing:.5px;flex-shrink:0}._contentContainer_14i1p_69{flex:1;overflow:auto;position:relative}._loading_14i1p_75{display:flex;align-items:center;justify-content:center;height:100%;color:#888;font-size:13px}._error_14i1p_84{display:flex;align-items:center;justify-content:center;height:100%;color:#ff6b6b;font-size:13px;padding:20px;text-align:center}._binaryNotice_14i1p_95{display:flex;align-items:center;justify-content:center;height:100%;color:#888;font-size:13px;font-style:italic;padding:20px;text-align:center}._largeFileWarning_14i1p_107{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:#e2c08d;font-size:13px;padding:20px;text-align:center;gap:8px}._fileSize_14i1p_120{color:#888;font-size:12px;margin:0}._centerEmpty_bkvre_1{display:flex;align-items:center;justify-content:center;height:100%}._container_bkvre_8{flex:1;overflow:auto;padding:16px 24px;display:flex;flex-direction:column;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}._sessionDividerText_bkvre_18{font-size:11px;color:#555}._lastResponseLabel_bkvre_23{font-size:11px}._splitContainer_bkvre_27{display:flex;flex-direction:row;height:100%;overflow:hidden}._chatSection_bkvre_34{display:flex;flex-direction:column;min-width:0;overflow:hidden}._vResizer_bkvre_41{width:5px;background:#1a1a1a;cursor:col-resize;flex-shrink:0;border-left:1px solid #2a2a2a;border-right:1px solid #2a2a2a;transition:background .15s}._vResizer_bkvre_41:hover{background:#2a2a2a}._snapLine_bkvre_55{position:absolute;top:0;bottom:0;width:2px;background:transparent;border-left:2px dashed rgba(255,255,255,.1);pointer-events:none;z-index:1000;transition:all .15s}._snapLineActive_bkvre_67{position:absolute;top:0;bottom:0;width:2px;background:transparent;border-left:2px dashed rgba(255,255,255,.5);pointer-events:none;z-index:1001}._snapLineLabel_bkvre_78{position:absolute;top:50%;left:8px;transform:translateY(-50%);background:#ffffffe6;color:#000;padding:4px 8px;border-radius:4px;font-size:11px;font-weight:600;white-space:nowrap;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;box-shadow:0 2px 8px #0000004d}._snapPreview_bkvre_94{position:absolute;top:0;bottom:0;background:#ffffff1a;pointer-events:none;z-index:999}._vResizer_bkvre_41:hover{background:#333}._chatInputBar_bkvre_107{display:flex;align-items:flex-end;gap:8px;padding:10px 16px;background:#111;border-top:1px solid #2a2a2a;flex-shrink:0}._chatInputWrapper_bkvre_117{flex:1;display:flex;flex-direction:column;background:#1a1a1a;border:1px solid #333;border-radius:12px;transition:border-color .2s;overflow:hidden}._chatInputWrapper_bkvre_117:focus-within{border-color:#555}._chatTextareaWrap_bkvre_132{position:relative;flex:1}._chatTextarea_bkvre_132{width:100%;min-height:22px;max-height:120px;padding:10px 14px;background:transparent;color:#e0e0e0;border:none;outline:none;resize:none;font-size:14px;line-height:1.5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}._chatTextarea_bkvre_132::placeholder{color:#555}._chatInputHint_bkvre_156{font-size:11px;color:#444;padding:0 14px 6px;-webkit-user-select:none;user-select:none}._chatSendBtn_bkvre_163{width:36px;height:36px;border-radius:10px;border:none;background:#4a9eff;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s,opacity .15s}._chatSendBtn_bkvre_163:hover{background:#3a8eef}._chatSendBtn_bkvre_163:disabled{opacity:.35;cursor:default}._chatSendBtn_bkvre_163 svg{width:18px;height:18px}._messageListWrap_bkvre_192{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}._stickyBottomBtn_bkvre_200{position:absolute;left:0;bottom:0;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 18px;height:60px;justify-content:center;border-radius:0;border:none;background:none;color:#999;font-size:12px;cursor:pointer;transition:color .15s;z-index:10;box-shadow:none}._stickyBottomBtn_bkvre_200 span{background:#00000080;padding:2px 10px;border-radius:10px}._stickyBottomBtn_bkvre_200:hover{color:#fff;background:none}@media(max-width:768px){._stickyBottomBtn_bkvre_200{gap:4px;padding:16px 18px;height:120px;font-size:24px}._stickyBottomBtn_bkvre_200 span{padding:4px 20px;border-radius:20px}._stickyBottomBtn_bkvre_200 svg{width:28px;height:28px}}._ptyPromptBubble_bkvre_250{margin:8px 0;padding:12px 16px;border-radius:12px;border:1px solid #3a3a3a;background:#161616;animation:_ptyPromptFadeIn_bkvre_1 .25s ease-out}._ptyPromptResolved_bkvre_259{opacity:.55}@keyframes _ptyPromptFadeIn_bkvre_1{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}._ptyPromptQuestion_bkvre_268{font-size:13px;color:#ccc;margin-bottom:10px;line-height:1.4}._ptyPromptOptions_bkvre_275{display:flex;flex-wrap:wrap;gap:8px}._ptyPromptOption_bkvre_275{padding:6px 14px;border-radius:18px;border:1px solid #3a3a3a;background:#1a1a1a;color:#bbb;font-size:12px;cursor:pointer;transition:background .15s,color .15s,border-color .15s;white-space:nowrap}._ptyPromptOption_bkvre_275:hover{background:#2a2a2a;color:#eee;border-color:#555}._ptyPromptOptionPrimary_bkvre_299{padding:6px 14px;border-radius:18px;border:1px solid #4a9eff;background:#4a9eff26;color:#4a9eff;font-size:12px;cursor:pointer;transition:background .15s,color .15s,border-color .15s;white-space:nowrap}._ptyPromptOptionPrimary_bkvre_299:hover{background:#4a9eff40;color:#6ab4ff;border-color:#6ab4ff}._ptyPromptOptionChosen_bkvre_317{padding:6px 14px;border-radius:18px;border:1px solid #4a9eff;background:#4a9eff33;color:#4a9eff;font-size:12px;cursor:default;white-space:nowrap}._ptyPromptOptionDimmed_bkvre_328{padding:6px 14px;border-radius:18px;border:1px solid #2a2a2a;background:transparent;color:#444;font-size:12px;cursor:default;white-space:nowrap}._ghostText_bkvre_339{position:absolute;top:0;left:0;right:0;padding:10px 14px;color:#444;font-size:14px;line-height:1.5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;pointer-events:none;white-space:pre-wrap;overflow:hidden;max-height:120px}._suggestionChip_bkvre_355{display:flex;align-items:center;gap:8px;padding:8px 14px;background:#1a1a1a;border-top:1px solid #2a2a2a;cursor:pointer;flex-shrink:0;transition:background .15s}._suggestionChip_bkvre_355:hover{background:#222}._suggestionChipText_bkvre_371{flex:1;color:#555;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._suggestionChipAction_bkvre_380{color:#4a9eff;font-size:14px;flex-shrink:0}._loadMoreWrap_bkvre_386{display:flex;justify-content:center;padding:12px 0 4px}._loadMoreBtn_bkvre_392{padding:6px 18px;border-radius:16px;border:1px solid #3a3a3a;background:#ffffff0f;color:#999;font-size:12px;cursor:pointer;transition:background .15s,color .15s}._loadMoreBtn_bkvre_392:hover{background:#ffffff1f;color:#ccc}._navSidebar_bkvre_408{width:40px;flex-shrink:0;background:#0d0d0d;border-right:1px solid #2a2a2a;display:flex;flex-direction:column;align-items:center;padding-top:8px;gap:4px}._navBtn_bkvre_420{width:32px;height:32px;border:none;background:none;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:6px;padding:0;transition:background .15s,color .15s}._navBtn_bkvre_420:hover{color:#ccc;background:#1a1a1a}._navBtnActive_bkvre_440{width:32px;height:32px;border:none;background:#4a9eff26;color:#4a9eff;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:6px;padding:0;transition:background .15s,color .15s}._navBtnActive_bkvre_440:hover{background:#4a9eff40;color:#6ab4ff}._resizer_yamj2_1{width:6px;cursor:col-resize;background:#1f1f1f;flex-shrink:0;transition:background .2s}._resizer_yamj2_1:hover{background:#3b82f6}._container_1um1r_1{display:flex;flex-direction:column;height:100%;background:#0a0a0a;overflow:hidden}._fileListSection_1um1r_10{height:300px;flex-shrink:0;display:flex;flex-direction:column;background:#111;border-bottom:1px solid #2a2a2a}._header_1um1r_19{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #2a2a2a;flex-shrink:0}._headerTitle_1um1r_28{font-size:11px;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.5px}._fileCount_1um1r_36{font-size:10px;color:#555;background:#1a1a1a;padding:1px 6px;border-radius:8px}._changesContainer_1um1r_44{flex:1;overflow:auto;padding:4px 0;-webkit-overflow-scrolling:touch}._changeItem_1um1r_51{display:flex;align-items:center;height:28px;padding:0 8px;cursor:pointer;color:#ccc;font-size:13px;white-space:nowrap;transition:background .1s;gap:6px}._changeItem_1um1r_51:hover{background:#1a1a1a}._changeItemActive_1um1r_68{background:#4a9eff1f;color:#fff}._changeItemActive_1um1r_68:hover{background:#4a9eff2e}._dirItem_1um1r_77{display:flex;align-items:center;height:26px;padding:0 8px;color:#999;font-size:13px;white-space:nowrap;gap:6px}._dirArrow_1um1r_88{width:16px;flex-shrink:0;color:#666;display:flex;align-items:center;justify-content:center}._dirName_1um1r_97{overflow:hidden;text-overflow:ellipsis}._status_1um1r_102{width:16px;flex-shrink:0;font-size:11px;font-weight:600;text-align:center;margin-left:auto}._icon_1um1r_111{width:16px;height:16px;flex-shrink:0;display:flex;align-items:center;justify-content:center}._fileName_1um1r_120{overflow:hidden;text-overflow:ellipsis;flex:1}._diffSection_1um1r_127{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}._diffHeader_1um1r_135{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #2a2a2a;background:#111;flex-shrink:0}._diffFilePath_1um1r_145{font-size:12px;color:#ccc;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}._diffBadge_1um1r_155{padding:2px 8px;background:#2a2a2a;border:1px solid #444;border-radius:4px;font-size:10px;font-weight:600;color:#e2c08d;letter-spacing:.5px;flex-shrink:0}._diffContent_1um1r_167{flex:1;overflow:auto;-webkit-overflow-scrolling:touch}._diffPlaceholder_1um1r_173{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:#333;font-size:13px}._statusText_1um1r_184{color:#555;font-size:12px;padding:16px 12px;text-align:center}._errorText_1um1r_191{color:#ff6b6b;font-size:12px;padding:16px 12px;text-align:center}._emptyText_1um1r_198{color:#666;font-size:12px;padding:16px 12px;text-align:center}._warningText_1um1r_205{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;color:#e2c08d;font-size:13px;text-align:center;gap:8px}._container_rkahp_1{display:flex;flex-direction:column;height:100%;background:#0a0a0a;overflow:hidden}._header_rkahp_9{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #2a2a2a;flex-shrink:0}._headerTitle_rkahp_18{font-size:13px;font-weight:600;color:#ccc}._closeBtn_rkahp_24{background:none;border:none;color:#888;cursor:pointer;padding:4px;display:flex;align-items:center}._closeBtn_rkahp_24:active{color:#fff}._content_rkahp_38{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:12px}._empty_rkahp_47{color:#999;font-size:13px;text-align:center;padding:40px 0}._fixedTable_rkahp_54{table-layout:fixed}._ellipsisCell_rkahp_58{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:0}._layout_v8lsg_1{height:100vh;overflow:hidden}._header_v8lsg_6{background:#111;border-bottom:1px solid #1f1f1f;padding:0 24px;height:60px;line-height:60px}._content_v8lsg_14{flex:1;overflow:hidden}._mainContainer_v8lsg_19{display:flex;height:100%}._leftPanel_v8lsg_24{flex-shrink:0;border-right:1px solid #1f1f1f;display:flex;flex-direction:column;background:#0a0a0a}._leftPanelHeader_v8lsg_32{padding:10px 16px;border-bottom:1px solid #1f1f1f;font-size:13px;color:#9ca3af;font-weight:500;display:flex;justify-content:space-between;align-items:center}._leftPanelCount_v8lsg_43{font-size:12px;color:#555;font-weight:400}._leftPanelBody_v8lsg_49{flex:1;overflow:hidden}._rightPanel_v8lsg_54{flex:1;overflow:hidden;background:#0d0d0d}._modalActions_v8lsg_60{margin-bottom:12px}._spinCenter_v8lsg_64{text-align:center;padding:40px}._emptyCenter_v8lsg_69{text-align:center;color:#999;padding:40px}._logCheckbox_v8lsg_75{margin-right:8px}._logListContainer_v8lsg_79{background:#0d0d0d;border-radius:8px;overflow:hidden}._logListItem_v8lsg_85{cursor:pointer;padding:8px 12px;border-bottom:1px solid #222}._logItemRow_v8lsg_91{display:flex;align-items:center;width:100%;justify-content:space-between;flex-wrap:nowrap;gap:12px}._logItemRow_v8lsg_91>span:first-child{display:flex;align-items:center;flex:1;min-width:0;overflow:hidden}._logFileName_v8lsg_108{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._logItemRow_v8lsg_91>span:last-child{display:flex;align-items:center;flex-shrink:0;gap:8px}._logFileIcon_v8lsg_121{margin-right:8px;color:#3b82f6;flex-shrink:0}._loadingOverlay_v8lsg_127{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:9999}._loadingText_v8lsg_140{color:#fff;font-size:16px;font-weight:700}._mobileLoadingOverlay_v8lsg_146{position:absolute;top:0;right:0;bottom:0;left:0;background:#000000d1;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:200;gap:16px}._mobileLoadingSpinner_v8lsg_158{width:36px;height:36px;border:3px solid rgba(255,255,255,.12);border-top-color:#4f8cff;border-radius:50%;animation:_mobileSpin_v8lsg_1 .8s linear infinite}@keyframes _mobileSpin_v8lsg_1{to{transform:rotate(360deg)}}._mobileLoadingLabel_v8lsg_171{color:#888;font-size:13px;font-variant-numeric:tabular-nums}._footer_v8lsg_177{height:18px;background:#000;display:flex;align-items:center;justify-content:flex-end;padding:0 12px;flex-shrink:0}._footerRight_v8lsg_187{display:flex;align-items:center;gap:6px;font-size:11px;color:#555}._footerText_v8lsg_195{color:#444;margin-right:2px}._footerLink_v8lsg_200{display:inline-flex;align-items:center;gap:3px;color:#555;text-decoration:none}._footerLink_v8lsg_200:hover{color:#888}._footerIcon_v8lsg_212{width:12px;height:12px}._footerDivider_v8lsg_217{color:#333}._footerText_v8lsg_195{color:#555}._guideContainer_v8lsg_225{display:flex;align-items:center;justify-content:center;height:100%;background:#0a0a0a}._guideContent_v8lsg_233{max-width:560px;padding:40px}._guideTitle_v8lsg_238{font-size:20px;font-weight:600;color:#e0e0e0;margin:0 0 28px}._guideStep_v8lsg_245{display:flex;gap:14px;margin-bottom:22px}._guideStepNum_v8lsg_251{flex-shrink:0;width:24px;height:24px;border-radius:50%;background:#1a1a2e;color:#7c8aff;font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:center;margin-top:1px}._guideStepBody_v8lsg_266{flex:1;min-width:0}._guideText_v8lsg_271{color:#aaa;font-size:14px;line-height:1.6;margin:0 0 8px}._guideCode_v8lsg_278{display:block;background:#141414;border:1px solid #252525;border-radius:6px;padding:10px 14px;color:#8b9cf7;font-size:13px;line-height:1.5;word-break:break-all;white-space:pre-wrap}._mobileChatOverlay_v8lsg_291{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(100%);transition:transform .3s ease;z-index:100;background:#0a0a0a;display:flex;flex-direction:column;overflow:hidden}._mobileChatOverlayVisible_v8lsg_303{transform:translate(0)}._mobileChatInner_v8lsg_307{flex:1;min-height:0;display:flex;flex-direction:column;zoom:.6}._mobileGitDiffOverlay_v8lsg_315{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);transition:transform .3s ease;z-index:100;background:#0a0a0a;display:flex;flex-direction:column;overflow:hidden}._mobileGitDiffOverlayVisible_v8lsg_327{transform:translate(0)}._mobileGitDiffInner_v8lsg_331{flex:1;min-height:0;display:flex;flex-direction:column;zoom:.6}._mobileMenuBtn_v8lsg_339{background:none;border:none;color:#aaa;padding:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:4px;flex-shrink:0}._mobileMenuBtn_v8lsg_339:active{background:#ffffff1a}._mobileMenuOverlay_v8lsg_356{position:fixed;top:0;right:0;bottom:0;left:0;z-index:999}._mobileMenuDropdown_v8lsg_362{position:absolute;top:100%;left:0;margin-top:4px;background:#1a1a1a;border:1px solid #333;border-radius:8px;box-shadow:0 4px 12px #00000080;min-width:160px;z-index:1000;overflow:hidden}._mobileMenuItem_v8lsg_376{display:flex;align-items:center;gap:8px;padding:12px 16px;color:#ddd;font-size:14px;cursor:pointer;border:none;background:none;width:100%;text-align:left}._mobileMenuItem_v8lsg_376:active{background:#ffffff1a}._mobileStatsOverlay_v8lsg_394{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);transition:transform .3s ease;z-index:100;background:#0a0a0a;display:flex;flex-direction:column;overflow:hidden}._mobileStatsOverlayVisible_v8lsg_406{transform:translate(0)}._mobileStatsInner_v8lsg_410{flex:1;min-height:0;display:flex;flex-direction:column}._mobileLogMgmtOverlay_v8lsg_417{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);transition:transform .3s ease;z-index:100;background:#0a0a0a;display:flex;flex-direction:column;overflow:hidden}._mobileLogMgmtOverlayVisible_v8lsg_429{transform:translate(0)}._mobileLogMgmtHeader_v8lsg_433{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid #222;flex-shrink:0}._mobileLogMgmtTitle_v8lsg_442{font-size:14px;font-weight:600;color:#e0e0e0}._mobileLogMgmtClose_v8lsg_448{background:none;border:none;color:#888;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center}._mobileLogMgmtClose_v8lsg_448:hover{color:#fff}._mobileLogMgmtActions_v8lsg_463{display:flex;gap:8px;padding:8px 12px;border-bottom:1px solid #222;flex-shrink:0}._mobileLogMgmtBody_v8lsg_471{flex:1;min-height:0;overflow:hidden;padding:0 10px}._mobileSettingsOverlay_v8lsg_478{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);transition:transform .3s ease;z-index:100;background:#0a0a0a;display:flex;flex-direction:column;overflow:hidden}._mobileSettingsOverlayVisible_v8lsg_490{transform:translate(0)}._mobilePromptOverlay_v8lsg_494{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);transition:transform .3s ease;z-index:100;background:#0a0a0a;display:flex;flex-direction:column;overflow:hidden}._mobilePromptOverlayVisible_v8lsg_506{transform:translate(0)}._mobilePromptBody_v8lsg_510{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}._mobilePromptList_v8lsg_518{flex:1;overflow-y:auto;padding:0 12px}._mobilePromptItem_v8lsg_524{padding:12px 0;border-bottom:1px solid #1a1a1a}._mobilePromptTimestamp_v8lsg_529{font-size:11px;color:#666;margin-bottom:8px;font-family:ui-monospace,monospace}._mobilePromptCard_v8lsg_536{margin:4px 0;background:#141414;border-radius:6px;border:1px solid #303030;padding:10px 14px}._mobilePromptPreText_v8lsg_544{white-space:pre-wrap;word-break:break-word;font-size:13px;line-height:1.6;color:#d9d9d9;margin:4px 0}
41
+ */.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}._fullFileDiffView_g75nb_1{width:100%;height:100%;display:flex;flex-direction:column;background:#0d0d0d;overflow:hidden}._diffSummary_g75nb_10{padding:8px 16px;background:#111;border-bottom:1px solid #2a2a2a;display:flex;gap:8px;align-items:center;flex-shrink:0}._addedBadge_g75nb_20{padding:2px 8px;background:#73c99126;border:1px solid rgba(115,201,145,.3);border-radius:4px;font-size:11px;font-weight:600;color:#73c991;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace}._deletedBadge_g75nb_31{padding:2px 8px;background:#f14c4c26;border:1px solid rgba(241,76,76,.3);border-radius:4px;font-size:11px;font-weight:600;color:#f14c4c;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace}._codeContainer_g75nb_42{flex:1;overflow:hidden;display:flex;min-height:0;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;font-size:13px;line-height:1.6}._lineNumberCol_g75nb_52{flex-shrink:0;overflow:hidden;background:#0d0d0d;border-right:1px solid #2a2a2a;-webkit-user-select:none;user-select:none}._lineNumRow_g75nb_60{display:flex;min-height:21px}._oldLineNum_g75nb_65,._newLineNum_g75nb_66{display:inline-block;width:40px;text-align:right;padding:0 6px;font-size:12px;box-sizing:border-box}._lineNumNormal_g75nb_75 ._oldLineNum_g75nb_65,._lineNumNormal_g75nb_75 ._newLineNum_g75nb_66{color:#555}._lineNumAdd_g75nb_80{border-right:3px solid #73c991}._lineNumAdd_g75nb_80 ._oldLineNum_g75nb_65{color:#555}._lineNumAdd_g75nb_80 ._newLineNum_g75nb_66{color:#73c991;font-weight:600}._lineNumDelete_g75nb_93{border-right:3px solid #f14c4c}._lineNumDelete_g75nb_93 ._oldLineNum_g75nb_65{color:#f14c4c;font-weight:600}._lineNumDelete_g75nb_93 ._newLineNum_g75nb_66{color:#555}._codeColWrap_g75nb_106{flex:1;position:relative;min-width:0;overflow:hidden}._codeCol_g75nb_106{width:100%;height:100%;overflow:auto;min-width:0}._codeInner_g75nb_120{width:fit-content;min-width:100%}._codeLine_g75nb_125{position:relative;min-height:21px;display:flex;transition:background .1s}._codeLine_g75nb_125:hover{background:#ffffff08}._linePrefix_g75nb_136{display:inline-block;width:16px;text-align:center;color:#888;flex-shrink:0;-webkit-user-select:none;user-select:none}._lineContent_g75nb_145{padding-right:16px;color:#ccc;white-space:pre}._lineNormal_g75nb_151{background:transparent}._lineAdd_g75nb_155{background:#73c9911a}._lineAdd_g75nb_155 ._linePrefix_g75nb_136{color:#73c991}._lineDelete_g75nb_163{background:#f14c4c1a}._lineDelete_g75nb_163 ._linePrefix_g75nb_136{color:#f14c4c}._lineDelete_g75nb_163 ._lineContent_g75nb_145{text-decoration:line-through;opacity:.8}._miniMap_1ho3j_1{position:absolute;top:0;right:0;width:10px;height:100%;cursor:pointer;z-index:10}._marker_1ho3j_11{position:absolute;left:0;width:100%;border-radius:1px;pointer-events:none}._gitDiffView_1jqjc_1{flex:1;display:flex;flex-direction:column;background:#0d0d0d;overflow:hidden}._header_1jqjc_9{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #2a2a2a;background:#111;flex-shrink:0}._headerLeft_1jqjc_19{display:flex;align-items:center;gap:12px;flex:1;min-width:0}._backBtn_1jqjc_27{width:28px;height:28px;border:none;background:none;color:#888;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:0;flex-shrink:0;transition:all .15s}._backBtn_1jqjc_27:hover{color:#ccc;background:#2a2a2a}._filePath_1jqjc_48{font-size:13px;color:#ccc;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;transition:color .15s}._filePath_1jqjc_48:hover{color:#79c0ff;text-decoration:underline}._diffBadge_1jqjc_64{padding:2px 8px;background:#2a2a2a;border:1px solid #444;border-radius:4px;font-size:10px;font-weight:600;color:#e2c08d;letter-spacing:.5px;flex-shrink:0}._contentContainer_1jqjc_76{flex:1;overflow:auto;position:relative}._loading_1jqjc_82{display:flex;align-items:center;justify-content:center;height:100%;color:#888;font-size:13px}._error_1jqjc_91{display:flex;align-items:center;justify-content:center;height:100%;color:#ff6b6b;font-size:13px;padding:20px;text-align:center}._binaryNotice_1jqjc_102{display:flex;align-items:center;justify-content:center;height:100%;color:#888;font-size:13px;font-style:italic;padding:20px;text-align:center}._largeFileWarning_1jqjc_114{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:#e2c08d;font-size:13px;padding:20px;text-align:center;gap:8px}._fileSize_1jqjc_127{color:#888;font-size:12px;margin:0}._centerEmpty_bkvre_1{display:flex;align-items:center;justify-content:center;height:100%}._container_bkvre_8{flex:1;overflow:auto;padding:16px 24px;display:flex;flex-direction:column;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}._sessionDividerText_bkvre_18{font-size:11px;color:#555}._lastResponseLabel_bkvre_23{font-size:11px}._splitContainer_bkvre_27{display:flex;flex-direction:row;height:100%;overflow:hidden}._chatSection_bkvre_34{display:flex;flex-direction:column;min-width:0;overflow:hidden}._vResizer_bkvre_41{width:5px;background:#1a1a1a;cursor:col-resize;flex-shrink:0;border-left:1px solid #2a2a2a;border-right:1px solid #2a2a2a;transition:background .15s}._vResizer_bkvre_41:hover{background:#2a2a2a}._snapLine_bkvre_55{position:absolute;top:0;bottom:0;width:2px;background:transparent;border-left:2px dashed rgba(255,255,255,.1);pointer-events:none;z-index:1000;transition:all .15s}._snapLineActive_bkvre_67{position:absolute;top:0;bottom:0;width:2px;background:transparent;border-left:2px dashed rgba(255,255,255,.5);pointer-events:none;z-index:1001}._snapLineLabel_bkvre_78{position:absolute;top:50%;left:8px;transform:translateY(-50%);background:#ffffffe6;color:#000;padding:4px 8px;border-radius:4px;font-size:11px;font-weight:600;white-space:nowrap;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;box-shadow:0 2px 8px #0000004d}._snapPreview_bkvre_94{position:absolute;top:0;bottom:0;background:#ffffff1a;pointer-events:none;z-index:999}._vResizer_bkvre_41:hover{background:#333}._chatInputBar_bkvre_107{display:flex;align-items:flex-end;gap:8px;padding:10px 16px;background:#111;border-top:1px solid #2a2a2a;flex-shrink:0}._chatInputWrapper_bkvre_117{flex:1;display:flex;flex-direction:column;background:#1a1a1a;border:1px solid #333;border-radius:12px;transition:border-color .2s;overflow:hidden}._chatInputWrapper_bkvre_117:focus-within{border-color:#555}._chatTextareaWrap_bkvre_132{position:relative;flex:1}._chatTextarea_bkvre_132{width:100%;min-height:22px;max-height:120px;padding:10px 14px;background:transparent;color:#e0e0e0;border:none;outline:none;resize:none;font-size:14px;line-height:1.5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}._chatTextarea_bkvre_132::placeholder{color:#555}._chatInputHint_bkvre_156{font-size:11px;color:#444;padding:0 14px 6px;-webkit-user-select:none;user-select:none}._chatSendBtn_bkvre_163{width:36px;height:36px;border-radius:10px;border:none;background:#4a9eff;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s,opacity .15s}._chatSendBtn_bkvre_163:hover{background:#3a8eef}._chatSendBtn_bkvre_163:disabled{opacity:.35;cursor:default}._chatSendBtn_bkvre_163 svg{width:18px;height:18px}._messageListWrap_bkvre_192{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}._stickyBottomBtn_bkvre_200{position:absolute;left:0;bottom:0;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 18px;height:60px;justify-content:center;border-radius:0;border:none;background:none;color:#999;font-size:12px;cursor:pointer;transition:color .15s;z-index:10;box-shadow:none}._stickyBottomBtn_bkvre_200 span{background:#00000080;padding:2px 10px;border-radius:10px}._stickyBottomBtn_bkvre_200:hover{color:#fff;background:none}@media(max-width:768px){._stickyBottomBtn_bkvre_200{gap:4px;padding:16px 18px;height:120px;font-size:24px}._stickyBottomBtn_bkvre_200 span{padding:4px 20px;border-radius:20px}._stickyBottomBtn_bkvre_200 svg{width:28px;height:28px}}._ptyPromptBubble_bkvre_250{margin:8px 0;padding:12px 16px;border-radius:12px;border:1px solid #3a3a3a;background:#161616;animation:_ptyPromptFadeIn_bkvre_1 .25s ease-out}._ptyPromptResolved_bkvre_259{opacity:.55}@keyframes _ptyPromptFadeIn_bkvre_1{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}._ptyPromptQuestion_bkvre_268{font-size:13px;color:#ccc;margin-bottom:10px;line-height:1.4}._ptyPromptOptions_bkvre_275{display:flex;flex-wrap:wrap;gap:8px}._ptyPromptOption_bkvre_275{padding:6px 14px;border-radius:18px;border:1px solid #3a3a3a;background:#1a1a1a;color:#bbb;font-size:12px;cursor:pointer;transition:background .15s,color .15s,border-color .15s;white-space:nowrap}._ptyPromptOption_bkvre_275:hover{background:#2a2a2a;color:#eee;border-color:#555}._ptyPromptOptionPrimary_bkvre_299{padding:6px 14px;border-radius:18px;border:1px solid #4a9eff;background:#4a9eff26;color:#4a9eff;font-size:12px;cursor:pointer;transition:background .15s,color .15s,border-color .15s;white-space:nowrap}._ptyPromptOptionPrimary_bkvre_299:hover{background:#4a9eff40;color:#6ab4ff;border-color:#6ab4ff}._ptyPromptOptionChosen_bkvre_317{padding:6px 14px;border-radius:18px;border:1px solid #4a9eff;background:#4a9eff33;color:#4a9eff;font-size:12px;cursor:default;white-space:nowrap}._ptyPromptOptionDimmed_bkvre_328{padding:6px 14px;border-radius:18px;border:1px solid #2a2a2a;background:transparent;color:#444;font-size:12px;cursor:default;white-space:nowrap}._ghostText_bkvre_339{position:absolute;top:0;left:0;right:0;padding:10px 14px;color:#444;font-size:14px;line-height:1.5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;pointer-events:none;white-space:pre-wrap;overflow:hidden;max-height:120px}._suggestionChip_bkvre_355{display:flex;align-items:center;gap:8px;padding:8px 14px;background:#1a1a1a;border-top:1px solid #2a2a2a;cursor:pointer;flex-shrink:0;transition:background .15s}._suggestionChip_bkvre_355:hover{background:#222}._suggestionChipText_bkvre_371{flex:1;color:#555;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._suggestionChipAction_bkvre_380{color:#4a9eff;font-size:14px;flex-shrink:0}._loadMoreWrap_bkvre_386{display:flex;justify-content:center;padding:12px 0 4px}._loadMoreBtn_bkvre_392{padding:6px 18px;border-radius:16px;border:1px solid #3a3a3a;background:#ffffff0f;color:#999;font-size:12px;cursor:pointer;transition:background .15s,color .15s}._loadMoreBtn_bkvre_392:hover{background:#ffffff1f;color:#ccc}._navSidebar_bkvre_408{width:40px;flex-shrink:0;background:#0d0d0d;border-right:1px solid #2a2a2a;display:flex;flex-direction:column;align-items:center;padding-top:8px;gap:4px}._navBtn_bkvre_420{width:32px;height:32px;border:none;background:none;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:6px;padding:0;transition:background .15s,color .15s}._navBtn_bkvre_420:hover{color:#ccc;background:#1a1a1a}._navBtnActive_bkvre_440{width:32px;height:32px;border:none;background:#4a9eff26;color:#4a9eff;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:6px;padding:0;transition:background .15s,color .15s}._navBtnActive_bkvre_440:hover{background:#4a9eff40;color:#6ab4ff}._resizer_yamj2_1{width:6px;cursor:col-resize;background:#1f1f1f;flex-shrink:0;transition:background .2s}._resizer_yamj2_1:hover{background:#3b82f6}._container_1um1r_1{display:flex;flex-direction:column;height:100%;background:#0a0a0a;overflow:hidden}._fileListSection_1um1r_10{height:300px;flex-shrink:0;display:flex;flex-direction:column;background:#111;border-bottom:1px solid #2a2a2a}._header_1um1r_19{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #2a2a2a;flex-shrink:0}._headerTitle_1um1r_28{font-size:11px;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.5px}._fileCount_1um1r_36{font-size:10px;color:#555;background:#1a1a1a;padding:1px 6px;border-radius:8px}._changesContainer_1um1r_44{flex:1;overflow:auto;padding:4px 0;-webkit-overflow-scrolling:touch}._changeItem_1um1r_51{display:flex;align-items:center;height:28px;padding:0 8px;cursor:pointer;color:#ccc;font-size:13px;white-space:nowrap;transition:background .1s;gap:6px}._changeItem_1um1r_51:hover{background:#1a1a1a}._changeItemActive_1um1r_68{background:#4a9eff1f;color:#fff}._changeItemActive_1um1r_68:hover{background:#4a9eff2e}._dirItem_1um1r_77{display:flex;align-items:center;height:26px;padding:0 8px;color:#999;font-size:13px;white-space:nowrap;gap:6px}._dirArrow_1um1r_88{width:16px;flex-shrink:0;color:#666;display:flex;align-items:center;justify-content:center}._dirName_1um1r_97{overflow:hidden;text-overflow:ellipsis}._status_1um1r_102{width:16px;flex-shrink:0;font-size:11px;font-weight:600;text-align:center;margin-left:auto}._icon_1um1r_111{width:16px;height:16px;flex-shrink:0;display:flex;align-items:center;justify-content:center}._fileName_1um1r_120{overflow:hidden;text-overflow:ellipsis;flex:1}._diffSection_1um1r_127{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}._diffHeader_1um1r_135{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #2a2a2a;background:#111;flex-shrink:0}._diffFilePath_1um1r_145{font-size:12px;color:#ccc;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}._diffBadge_1um1r_155{padding:2px 8px;background:#2a2a2a;border:1px solid #444;border-radius:4px;font-size:10px;font-weight:600;color:#e2c08d;letter-spacing:.5px;flex-shrink:0}._diffContent_1um1r_167{flex:1;overflow:auto;-webkit-overflow-scrolling:touch}._diffPlaceholder_1um1r_173{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:#333;font-size:13px}._statusText_1um1r_184{color:#555;font-size:12px;padding:16px 12px;text-align:center}._errorText_1um1r_191{color:#ff6b6b;font-size:12px;padding:16px 12px;text-align:center}._emptyText_1um1r_198{color:#666;font-size:12px;padding:16px 12px;text-align:center}._warningText_1um1r_205{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;color:#e2c08d;font-size:13px;text-align:center;gap:8px}._container_rkahp_1{display:flex;flex-direction:column;height:100%;background:#0a0a0a;overflow:hidden}._header_rkahp_9{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #2a2a2a;flex-shrink:0}._headerTitle_rkahp_18{font-size:13px;font-weight:600;color:#ccc}._closeBtn_rkahp_24{background:none;border:none;color:#888;cursor:pointer;padding:4px;display:flex;align-items:center}._closeBtn_rkahp_24:active{color:#fff}._content_rkahp_38{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:12px}._empty_rkahp_47{color:#999;font-size:13px;text-align:center;padding:40px 0}._fixedTable_rkahp_54{table-layout:fixed}._ellipsisCell_rkahp_58{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:0}._layout_v8lsg_1{height:100vh;overflow:hidden}._header_v8lsg_6{background:#111;border-bottom:1px solid #1f1f1f;padding:0 24px;height:60px;line-height:60px}._content_v8lsg_14{flex:1;overflow:hidden}._mainContainer_v8lsg_19{display:flex;height:100%}._leftPanel_v8lsg_24{flex-shrink:0;border-right:1px solid #1f1f1f;display:flex;flex-direction:column;background:#0a0a0a}._leftPanelHeader_v8lsg_32{padding:10px 16px;border-bottom:1px solid #1f1f1f;font-size:13px;color:#9ca3af;font-weight:500;display:flex;justify-content:space-between;align-items:center}._leftPanelCount_v8lsg_43{font-size:12px;color:#555;font-weight:400}._leftPanelBody_v8lsg_49{flex:1;overflow:hidden}._rightPanel_v8lsg_54{flex:1;overflow:hidden;background:#0d0d0d}._modalActions_v8lsg_60{margin-bottom:12px}._spinCenter_v8lsg_64{text-align:center;padding:40px}._emptyCenter_v8lsg_69{text-align:center;color:#999;padding:40px}._logCheckbox_v8lsg_75{margin-right:8px}._logListContainer_v8lsg_79{background:#0d0d0d;border-radius:8px;overflow:hidden}._logListItem_v8lsg_85{cursor:pointer;padding:8px 12px;border-bottom:1px solid #222}._logItemRow_v8lsg_91{display:flex;align-items:center;width:100%;justify-content:space-between;flex-wrap:nowrap;gap:12px}._logItemRow_v8lsg_91>span:first-child{display:flex;align-items:center;flex:1;min-width:0;overflow:hidden}._logFileName_v8lsg_108{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._logItemRow_v8lsg_91>span:last-child{display:flex;align-items:center;flex-shrink:0;gap:8px}._logFileIcon_v8lsg_121{margin-right:8px;color:#3b82f6;flex-shrink:0}._loadingOverlay_v8lsg_127{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:9999}._loadingText_v8lsg_140{color:#fff;font-size:16px;font-weight:700}._mobileLoadingOverlay_v8lsg_146{position:absolute;top:0;right:0;bottom:0;left:0;background:#000000d1;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:200;gap:16px}._mobileLoadingSpinner_v8lsg_158{width:36px;height:36px;border:3px solid rgba(255,255,255,.12);border-top-color:#4f8cff;border-radius:50%;animation:_mobileSpin_v8lsg_1 .8s linear infinite}@keyframes _mobileSpin_v8lsg_1{to{transform:rotate(360deg)}}._mobileLoadingLabel_v8lsg_171{color:#888;font-size:13px;font-variant-numeric:tabular-nums}._footer_v8lsg_177{height:18px;background:#000;display:flex;align-items:center;justify-content:flex-end;padding:0 12px;flex-shrink:0}._footerRight_v8lsg_187{display:flex;align-items:center;gap:6px;font-size:11px;color:#555}._footerText_v8lsg_195{color:#444;margin-right:2px}._footerLink_v8lsg_200{display:inline-flex;align-items:center;gap:3px;color:#555;text-decoration:none}._footerLink_v8lsg_200:hover{color:#888}._footerIcon_v8lsg_212{width:12px;height:12px}._footerDivider_v8lsg_217{color:#333}._footerText_v8lsg_195{color:#555}._guideContainer_v8lsg_225{display:flex;align-items:center;justify-content:center;height:100%;background:#0a0a0a}._guideContent_v8lsg_233{max-width:560px;padding:40px}._guideTitle_v8lsg_238{font-size:20px;font-weight:600;color:#e0e0e0;margin:0 0 28px}._guideStep_v8lsg_245{display:flex;gap:14px;margin-bottom:22px}._guideStepNum_v8lsg_251{flex-shrink:0;width:24px;height:24px;border-radius:50%;background:#1a1a2e;color:#7c8aff;font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:center;margin-top:1px}._guideStepBody_v8lsg_266{flex:1;min-width:0}._guideText_v8lsg_271{color:#aaa;font-size:14px;line-height:1.6;margin:0 0 8px}._guideCode_v8lsg_278{display:block;background:#141414;border:1px solid #252525;border-radius:6px;padding:10px 14px;color:#8b9cf7;font-size:13px;line-height:1.5;word-break:break-all;white-space:pre-wrap}._mobileChatOverlay_v8lsg_291{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(100%);transition:transform .3s ease;z-index:100;background:#0a0a0a;display:flex;flex-direction:column;overflow:hidden}._mobileChatOverlayVisible_v8lsg_303{transform:translate(0)}._mobileChatInner_v8lsg_307{flex:1;min-height:0;display:flex;flex-direction:column;zoom:.6}._mobileGitDiffOverlay_v8lsg_315{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);transition:transform .3s ease;z-index:100;background:#0a0a0a;display:flex;flex-direction:column;overflow:hidden}._mobileGitDiffOverlayVisible_v8lsg_327{transform:translate(0)}._mobileGitDiffInner_v8lsg_331{flex:1;min-height:0;display:flex;flex-direction:column;zoom:.6}._mobileMenuBtn_v8lsg_339{background:none;border:none;color:#aaa;padding:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:4px;flex-shrink:0}._mobileMenuBtn_v8lsg_339:active{background:#ffffff1a}._mobileMenuOverlay_v8lsg_356{position:fixed;top:0;right:0;bottom:0;left:0;z-index:999}._mobileMenuDropdown_v8lsg_362{position:absolute;top:100%;left:0;margin-top:4px;background:#1a1a1a;border:1px solid #333;border-radius:8px;box-shadow:0 4px 12px #00000080;min-width:160px;z-index:1000;overflow:hidden}._mobileMenuItem_v8lsg_376{display:flex;align-items:center;gap:8px;padding:12px 16px;color:#ddd;font-size:14px;cursor:pointer;border:none;background:none;width:100%;text-align:left}._mobileMenuItem_v8lsg_376:active{background:#ffffff1a}._mobileStatsOverlay_v8lsg_394{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);transition:transform .3s ease;z-index:100;background:#0a0a0a;display:flex;flex-direction:column;overflow:hidden}._mobileStatsOverlayVisible_v8lsg_406{transform:translate(0)}._mobileStatsInner_v8lsg_410{flex:1;min-height:0;display:flex;flex-direction:column}._mobileLogMgmtOverlay_v8lsg_417{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);transition:transform .3s ease;z-index:100;background:#0a0a0a;display:flex;flex-direction:column;overflow:hidden}._mobileLogMgmtOverlayVisible_v8lsg_429{transform:translate(0)}._mobileLogMgmtHeader_v8lsg_433{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid #222;flex-shrink:0}._mobileLogMgmtTitle_v8lsg_442{font-size:14px;font-weight:600;color:#e0e0e0}._mobileLogMgmtClose_v8lsg_448{background:none;border:none;color:#888;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center}._mobileLogMgmtClose_v8lsg_448:hover{color:#fff}._mobileLogMgmtActions_v8lsg_463{display:flex;gap:8px;padding:8px 12px;border-bottom:1px solid #222;flex-shrink:0}._mobileLogMgmtBody_v8lsg_471{flex:1;min-height:0;overflow:hidden;padding:0 10px}._mobileSettingsOverlay_v8lsg_478{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);transition:transform .3s ease;z-index:100;background:#0a0a0a;display:flex;flex-direction:column;overflow:hidden}._mobileSettingsOverlayVisible_v8lsg_490{transform:translate(0)}._mobilePromptOverlay_v8lsg_494{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);transition:transform .3s ease;z-index:100;background:#0a0a0a;display:flex;flex-direction:column;overflow:hidden}._mobilePromptOverlayVisible_v8lsg_506{transform:translate(0)}._mobilePromptBody_v8lsg_510{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}._mobilePromptList_v8lsg_518{flex:1;overflow-y:auto;padding:0 12px}._mobilePromptItem_v8lsg_524{padding:12px 0;border-bottom:1px solid #1a1a1a}._mobilePromptTimestamp_v8lsg_529{font-size:11px;color:#666;margin-bottom:8px;font-family:ui-monospace,monospace}._mobilePromptCard_v8lsg_536{margin:4px 0;background:#141414;border-radius:6px;border:1px solid #303030;padding:10px 14px}._mobilePromptPreText_v8lsg_544{white-space:pre-wrap;word-break:break-word;font-size:13px;line-height:1.6;color:#d9d9d9;margin:4px 0}
package/dist/index.html CHANGED
@@ -6,8 +6,8 @@
6
6
  <title>Claude Code Viewer</title>
7
7
  <link rel="icon" href="/favicon.ico?v=1">
8
8
  <link rel="shortcut icon" href="/favicon.ico?v=1">
9
- <script type="module" crossorigin src="/assets/index-CRbM_95R.js"></script>
10
- <link rel="stylesheet" crossorigin href="/assets/index-C9cmcYOr.css">
9
+ <script type="module" crossorigin src="/assets/index-Drg6iuc9.js"></script>
10
+ <link rel="stylesheet" crossorigin href="/assets/index-Dt59iD4-.css">
11
11
  </head>
12
12
  <body>
13
13
  <div id="root"></div>
package/findcc.js CHANGED
@@ -1,15 +1,30 @@
1
1
  import { resolve, join } from 'node:path';
2
2
  import { fileURLToPath } from 'node:url';
3
3
  import { existsSync, realpathSync } from 'node:fs';
4
- import { homedir } from 'node:os';
4
+ import { homedir, tmpdir } from 'node:os';
5
5
  import { execSync } from 'node:child_process';
6
+ import { threadId } from 'node:worker_threads';
6
7
 
7
8
  const __dirname = fileURLToPath(new URL('.', import.meta.url));
8
9
 
9
10
  // ============ 配置区(第三方适配只需修改此处)============
10
11
 
12
+ function resolveLogDir() {
13
+ const envDir = process.env.CCV_LOG_DIR;
14
+ if (typeof envDir === 'string' && envDir.trim()) {
15
+ const raw = envDir.trim();
16
+ // 允许通过 'tmp' 或 'temp' 关键字使用系统临时目录(常用于测试)
17
+ if (raw === 'tmp' || raw === 'temp') {
18
+ return join(tmpdir(), 'cc-viewer-test', `${process.pid}-${threadId}`);
19
+ }
20
+ const expanded = raw.startsWith('~/') ? join(homedir(), raw.slice(2)) : raw;
21
+ return resolve(expanded);
22
+ }
23
+ return join(homedir(), '.claude', 'cc-viewer');
24
+ }
25
+
11
26
  // 日志存储根目录(所有项目日志、偏好设置均存放于此)
12
- export const LOG_DIR = join(homedir(), '.claude', 'cc-viewer');
27
+ export const LOG_DIR = resolveLogDir();
13
28
 
14
29
  // npm 包名候选列表(按优先级排列)
15
30
  export const PACKAGES = ['@anthropic-ai/claude-code', '@ali/claude-code'];
@@ -88,7 +103,7 @@ export function resolveNpmClaudePath() {
88
103
  }
89
104
  }
90
105
  }
91
- } catch {}
106
+ } catch { }
92
107
  }
93
108
  } catch {
94
109
  // ignore
@@ -120,7 +135,7 @@ export function resolveNativePath() {
120
135
  try {
121
136
  const real = realpathSync(result);
122
137
  if (real.includes('node_modules')) continue;
123
- } catch {}
138
+ } catch { }
124
139
  return result;
125
140
  }
126
141
  } catch {
package/interceptor.js CHANGED
@@ -6,11 +6,12 @@ const _ccvSkipArgs = ['--version', '-v', '--v', '--help', '-h', 'doctor', 'insta
6
6
  const _ccvSkip = _ccvSkipArgs.includes(process.argv[2]);
7
7
 
8
8
  import './proxy-env.js';
9
- import { appendFileSync, mkdirSync, readdirSync, readFileSync, writeFileSync, statSync, renameSync, unlinkSync, existsSync } from 'node:fs';
9
+ import { appendFileSync, mkdirSync, readFileSync, statSync, renameSync, unlinkSync, existsSync } from 'node:fs';
10
10
  import { homedir } from 'node:os';
11
11
  import { fileURLToPath } from 'node:url';
12
12
  import { dirname, join, basename } from 'node:path';
13
13
  import { LOG_DIR } from './findcc.js';
14
+ import { assembleStreamMessage, cleanupTempFiles, findRecentLog, isAnthropicApiPath, isMainAgentRequest, migrateConversationContext } from './lib/interceptor-core.js';
14
15
 
15
16
 
16
17
  const __filename = fileURLToPath(import.meta.url);
@@ -42,43 +43,6 @@ function generateNewLogFilePath() {
42
43
  return { filePath: join(dir, `${projectName}_${ts}.jsonl`), dir, projectName };
43
44
  }
44
45
 
45
- // 查找同项目最近的日志文件
46
- function findRecentLog(dir, projectName) {
47
- try {
48
- const files = readdirSync(dir)
49
- .filter(f => f.startsWith(projectName + '_') && f.endsWith('.jsonl'))
50
- .sort()
51
- .reverse();
52
- if (files.length === 0) return null;
53
- return join(dir, files[0]);
54
- } catch { }
55
- return null;
56
- }
57
-
58
- // 清理残留的临时文件(rename 为正式文件名,保留数据)
59
- function cleanupTempFiles(dir, projectName) {
60
- try {
61
- const tempFiles = readdirSync(dir)
62
- .filter(f => f.startsWith(projectName + '_') && f.endsWith('_temp.jsonl'));
63
- for (const f of tempFiles) {
64
- try {
65
- const tempPath = join(dir, f);
66
- const newPath = tempPath.replace('_temp.jsonl', '.jsonl');
67
- if (existsSync(newPath)) {
68
- // 正式文件已存在,追加临时文件内容后删除
69
- const tempContent = readFileSync(tempPath, 'utf-8');
70
- if (tempContent.trim()) {
71
- appendFileSync(newPath, tempContent);
72
- }
73
- unlinkSync(tempPath);
74
- } else {
75
- renameSync(tempPath, newPath);
76
- }
77
- } catch { }
78
- }
79
- } catch { }
80
- }
81
-
82
46
  // Resume 状态(供 server.js 使用)
83
47
  let _resumeState = null;
84
48
  let _resolveChoice = null;
@@ -209,125 +173,6 @@ export function resetWorkspace() {
209
173
 
210
174
  const MAX_LOG_SIZE = 150 * 1024 * 1024; // 150MB
211
175
 
212
- const SUBAGENT_SYSTEM_RE = /command execution specialist|file search specialist|planning specialist|general-purpose agent/i;
213
-
214
- /**
215
- * 提取请求体中的 system prompt 文本
216
- */
217
- function getSystemText(body) {
218
- const system = body?.system;
219
- if (typeof system === 'string') return system;
220
- if (Array.isArray(system)) {
221
- return system.map(s => (s && s.text) || '').join('');
222
- }
223
- return '';
224
- }
225
-
226
- /**
227
- * 判断请求是否为 MainAgent(拦截器侧标记用)
228
- * 与 contentFilter.js 保持一致的检测逻辑
229
- */
230
- function isMainAgentRequest(body) {
231
- if (!body?.system || !Array.isArray(body?.tools)) return false;
232
-
233
- const sysText = getSystemText(body);
234
-
235
- // 必须包含 MainAgent 身份标识
236
- if (!sysText.includes('You are Claude Code')) return false;
237
-
238
- // 排除 SubAgent
239
- if (SUBAGENT_SYSTEM_RE.test(sysText)) return false;
240
-
241
- // 新架构检测(v2.1.69+):延迟工具加载机制
242
- const isSystemArray = Array.isArray(body.system);
243
- const hasToolSearch = body.tools.some(t => t.name === 'ToolSearch');
244
-
245
- if (isSystemArray && hasToolSearch) {
246
- // 检查第一条消息是否包含 <available-deferred-tools>
247
- const messages = body.messages || [];
248
- const firstMsgContent = messages.length > 0 ?
249
- (typeof messages[0].content === 'string' ? messages[0].content :
250
- Array.isArray(messages[0].content) ? messages[0].content.map(c => c.text || '').join('') : '') : '';
251
- if (firstMsgContent.includes('<available-deferred-tools>')) {
252
- return true;
253
- }
254
- }
255
-
256
- // 旧架构检测:工具数量 > 10 且包含核心工具
257
- if (body.tools.length > 10) {
258
- const hasEdit = body.tools.some(t => t.name === 'Edit');
259
- const hasBash = body.tools.some(t => t.name === 'Bash');
260
- const hasTaskOrAgent = body.tools.some(t => t.name === 'Task' || t.name === 'Agent');
261
- if (hasEdit && hasBash && hasTaskOrAgent) {
262
- return true;
263
- }
264
- }
265
-
266
- return false;
267
- }
268
-
269
- function isPreflightEntry(entry) {
270
- if (entry.mainAgent || entry.isHeartbeat || entry.isCountTokens) return false;
271
- const body = entry.body || {};
272
- if (Array.isArray(body.tools) && body.tools.length > 0) return false;
273
- const msgs = body.messages || [];
274
- if (msgs.length !== 1 || msgs[0].role !== 'user') return false;
275
- const sysText = typeof body.system === 'string' ? body.system :
276
- Array.isArray(body.system) ? body.system.map(s => s?.text || '').join('') : '';
277
- return sysText.includes('Claude Code');
278
- }
279
-
280
- function migrateConversationContext(oldFile, newFile) {
281
- try {
282
- const content = readFileSync(oldFile, 'utf-8');
283
- if (!content.trim()) return;
284
-
285
- const parts = content.split('\n---\n').filter(p => p.trim());
286
- if (parts.length === 0) return;
287
-
288
- // 从后向前扫描,找到最近一条 messages.length === 1 的 mainAgent 条目
289
- let originIndex = -1;
290
- for (let i = parts.length - 1; i >= 0; i--) {
291
- if (!parts[i].includes('"mainAgent": true')) continue;
292
- try {
293
- const entry = JSON.parse(parts[i]);
294
- if (entry.mainAgent) {
295
- const msgs = entry.body?.messages;
296
- if (Array.isArray(msgs) && msgs.length === 1) {
297
- originIndex = i;
298
- break;
299
- }
300
- }
301
- } catch { }
302
- }
303
-
304
- if (originIndex < 0) return; // 找不到起点,不迁移
305
-
306
- // 检查前一条是否为 Preflight
307
- let migrationStart = originIndex;
308
- if (originIndex > 0) {
309
- try {
310
- const prev = JSON.parse(parts[originIndex - 1]);
311
- if (isPreflightEntry(prev)) {
312
- migrationStart = originIndex - 1;
313
- }
314
- } catch { }
315
- }
316
-
317
- // 迁移条目写入新文件
318
- const migratedParts = parts.slice(migrationStart);
319
- writeFileSync(newFile, migratedParts.join('\n---\n') + '\n---\n');
320
-
321
- // 旧文件只保留迁移前的条目
322
- const remainingParts = parts.slice(0, migrationStart);
323
- if (remainingParts.length > 0) {
324
- writeFileSync(oldFile, remainingParts.join('\n---\n') + '\n---\n');
325
- } else {
326
- writeFileSync(oldFile, '');
327
- }
328
- } catch { }
329
- }
330
-
331
176
  function checkAndRotateLogFile() {
332
177
  try {
333
178
  if (!existsSync(LOG_FILE)) return;
@@ -353,106 +198,6 @@ function getBaseUrlHost() {
353
198
  }
354
199
  const CUSTOM_API_HOST = getBaseUrlHost();
355
200
 
356
- // 通过请求路径识别 Anthropic API 端点(兼容 CCR 等代理场景)
357
- function isAnthropicApiPath(urlStr) {
358
- try {
359
- const pathname = new URL(urlStr).pathname;
360
- return /^\/v1\/messages(\/count_tokens|\/batches(\/.*)?)?$/.test(pathname)
361
- || /^\/api\/eval\/sdk-/.test(pathname);
362
- } catch {
363
- return /\/v1\/messages/.test(urlStr);
364
- }
365
- }
366
-
367
- // 组装流式消息为完整的 message 对象
368
- function assembleStreamMessage(events) {
369
- let message = null;
370
- const contentBlocks = [];
371
- let currentBlockIndex = -1;
372
-
373
- for (const event of events) {
374
- if (typeof event !== 'object' || !event.type) continue;
375
-
376
- switch (event.type) {
377
- case 'message_start':
378
- // 初始化消息对象
379
- message = { ...event.message };
380
- message.content = [];
381
- break;
382
-
383
- case 'content_block_start':
384
- // 开始新的内容块
385
- currentBlockIndex = event.index;
386
- contentBlocks[currentBlockIndex] = { ...event.content_block };
387
- if (contentBlocks[currentBlockIndex].type === 'text') {
388
- contentBlocks[currentBlockIndex].text = '';
389
- } else if (contentBlocks[currentBlockIndex].type === 'thinking') {
390
- contentBlocks[currentBlockIndex].thinking = '';
391
- }
392
- break;
393
-
394
- case 'content_block_delta':
395
- // 累积内容块的增量数据
396
- if (event.index >= 0 && contentBlocks[event.index] && event.delta) {
397
- if (event.delta.type === 'text_delta' && event.delta.text) {
398
- contentBlocks[event.index].text += event.delta.text;
399
- } else if (event.delta.type === 'input_json_delta' && event.delta.partial_json) {
400
- if (typeof contentBlocks[event.index]._inputJson !== 'string') {
401
- contentBlocks[event.index]._inputJson = '';
402
- }
403
- contentBlocks[event.index]._inputJson += event.delta.partial_json;
404
- } else if (event.delta.type === 'thinking_delta' && event.delta.thinking) {
405
- contentBlocks[event.index].thinking += event.delta.thinking;
406
- } else if (event.delta.type === 'signature_delta' && event.delta.signature) {
407
- contentBlocks[event.index].signature = event.delta.signature;
408
- }
409
- }
410
- break;
411
-
412
- case 'content_block_stop':
413
- // 内容块结束
414
- if (event.index >= 0 && contentBlocks[event.index]) {
415
- // 如果是 tool_use 且有累积的 input JSON,尝试解析
416
- if (contentBlocks[event.index].type === 'tool_use' && typeof contentBlocks[event.index]._inputJson === 'string') {
417
- try {
418
- contentBlocks[event.index].input = JSON.parse(contentBlocks[event.index]._inputJson);
419
- } catch {
420
- contentBlocks[event.index].input = contentBlocks[event.index]._inputJson;
421
- }
422
- delete contentBlocks[event.index]._inputJson;
423
- }
424
- }
425
- break;
426
-
427
- case 'message_delta':
428
- // 更新消息的增量数据(如 stop_reason, usage)
429
- if (message && event.delta) {
430
- if (event.delta.stop_reason) {
431
- message.stop_reason = event.delta.stop_reason;
432
- }
433
- if (event.delta.stop_sequence !== undefined) {
434
- message.stop_sequence = event.delta.stop_sequence;
435
- }
436
- }
437
- if (message && event.usage) {
438
- message.usage = { ...message.usage, ...event.usage };
439
- }
440
- break;
441
-
442
- case 'message_stop':
443
- // 消息结束
444
- break;
445
- }
446
- }
447
-
448
- // 将内容块添加到消息中
449
- if (message) {
450
- message.content = contentBlocks.filter(block => block !== undefined);
451
- }
452
-
453
- return message;
454
- }
455
-
456
201
  // 保存 viewer 模块引用
457
202
  let viewerModule = null;
458
203