zen-gitsync 2.3.1 → 2.3.2
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.
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@charset "UTF-8";[data-v-1640713a]:root{--color-primary: #409eff;--color-primary-light: #5a67d8;--color-primary-dark: #337ecc;--color-primary-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);--color-primary-gradient-hover: linear-gradient(135deg, #5a67d8 0%, #6b46c1 100%);--color-success: #67c23a;--color-success-light: #10b981;--color-warning: #e6a23c;--color-warning-light: #f59e0b;--color-danger: #f56c6c;--color-danger-light: #ef4444;--color-danger-dark: #dc2626;--color-info: #909399;--color-info-light: #8b5cf6;--color-white: #ffffff;--color-black: #000000;--color-gray-50: #f9fafb;--color-gray-100: #f3f4f6;--color-gray-200: #e5e7eb;--color-gray-300: #d1d5db;--color-gray-400: #9ca3af;--color-gray-500: #6b7280;--color-gray-600: #4b5563;--color-gray-700: #374151;--color-gray-800: #1f2937;--color-gray-900: #111827;--git-status-added: #10b981;--git-status-modified: #f59e0b;--git-status-deleted: #ef4444;--git-status-untracked: #8b5cf6;--git-status-locked: #dc2626;--git-diff-header-bg: #f1f8ff;--git-diff-header-color: #0366d6;--git-diff-header-border: #c8e1ff;--git-diff-added-bg: #e6ffed;--git-diff-added-color: #22863a;--git-diff-added-border: #22863a;--git-diff-removed-bg: #ffeef0;--git-diff-removed-color: #cb2431;--git-diff-removed-border: #cb2431;--git-diff-hunk-bg: #f1f8ff;--git-diff-hunk-color: #6f42c1;--git-diff-context-color: #24292f;--git-diff-context-bg: #ffffff;--btn-primary-bg: var(--color-primary);--btn-primary-hover-bg: var(--color-primary-light);--btn-primary-active-bg: var(--color-primary-dark);--btn-primary-color: var(--color-white);--btn-success-bg: var(--color-success);--btn-success-hover-bg: #85ce61;--btn-success-active-bg: #5daf34;--btn-success-color: var(--color-white);--btn-warning-bg: var(--color-warning);--btn-warning-hover-bg: #ebb563;--btn-warning-active-bg: #cf9236;--btn-warning-color: var(--color-white);--btn-danger-bg: var(--color-danger);--btn-danger-hover-bg: #f78989;--btn-danger-active-bg: #dd6161;--btn-danger-color: var(--color-white);--btn-info-bg: var(--color-info);--btn-info-hover-bg: #a6a9ad;--btn-info-active-bg: #82848a;--btn-info-color: var(--color-white);--btn-text-color: var(--color-primary);--btn-text-hover-color: var(--color-primary-light);--btn-text-active-color: var(--color-primary-dark);--bg-page: #f5f5f5;--bg-page-dark: #2d2d2d;--bg-container: var(--color-white);--bg-container-hover: #f8fafc;--bg-container-dark: #24292e;--bg-overlay: rgba(40, 44, 52, .7);--bg-overlay-light: rgba(0, 0, 0, .2);--bg-code: #f6f8fa;--bg-code-dark: #2d2d2d;--bg-code-line: #fafbfc;--border-color: rgba(0, 0, 0, .06);--border-color-light: rgba(0, 0, 0, .03);--border-color-medium: #e1e4e8;--border-color-dark: rgba(255, 255, 255, .15);--border-hover: rgba(102, 126, 234, .15);--border-focus: var(--color-primary);--border-active: var(--color-primary-dark);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .04);--shadow-base: 0 1px 4px rgba(0, 0, 0, .04);--shadow-md: 0 2px 8px rgba(0, 0, 0, .08);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .08);--shadow-xl: 0 8px 24px rgba(0, 0, 0, .12);--shadow-hover: 0 4px 12px rgba(0, 0, 0, .08);--shadow-active: 0 2px 6px rgba(0, 0, 0, .12);--shadow-focus: 0 0 0 2px rgba(64, 158, 255, .2);--shadow-dark: 0 2px 10px rgba(0, 0, 0, .2);--shadow-dark-lg: 0 4px 16px rgba(0, 0, 0, .3);--text-primary: #1f2937;--text-primary-dark: #f8f8f2;--text-secondary: #606266;--text-secondary-dark: #e0e0e0;--text-tertiary: #9ca3af;--text-tertiary-dark: rgba(255, 255, 255, .6);--text-placeholder: #c0c4cc;--text-placeholder-dark: rgba(255, 255, 255, .4);--text-link: var(--color-primary);--text-link-hover: var(--color-primary-light);--text-link-active: var(--color-primary-dark);--text-success: var(--color-success);--text-warning: var(--color-warning);--text-danger: var(--color-danger);--text-info: var(--color-info);--radius-xs: 2px;--radius-sm: 3px;--radius-base: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-full: 50%;--spacing-xs: 2px;--spacing-sm: 4px;--spacing-base: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 20px;--spacing-2xl: 24px;--spacing-3xl: 32px;--font-size-xs: 10px;--font-size-sm: 12px;--font-size-base: 13px;--font-size-md: 14px;--font-size-lg: 16px;--font-size-xl: 18px;--font-size-2xl: 20px;--font-size-3xl: 24px;--line-height-tight: 1.2;--line-height-normal: 1.4;--line-height-relaxed: 1.6;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--transition-fast: .1s;--transition-base: .2s;--transition-slow: .3s;--ease-in: ease-in;--ease-out: ease-out;--ease-in-out: ease-in-out;--ease-custom: cubic-bezier(.4, 0, .2, 1);--transition-all: all var(--transition-base) var(--ease-custom);--transition-color: color var(--transition-base) var(--ease-custom);--transition-bg: background-color var(--transition-base) var(--ease-custom);--transition-border: border-color var(--transition-base) var(--ease-custom);--transition-shadow: box-shadow var(--transition-base) var(--ease-custom);--transition-transform: transform var(--transition-base) var(--ease-custom);--z-dropdown: 1000;--z-sticky: 1020;--z-fixed: 1030;--z-modal-backdrop: 1040;--z-modal: 1050;--z-popover: 1060;--z-tooltip: 1070;--z-toast: 1080;--scrollbar-track: transparent;--scrollbar-thumb: rgba(144, 147, 153, .3);--scrollbar-thumb-hover: rgba(144, 147, 153, .5);--scrollbar-width: 6px;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Monaco, Inconsolata, "Roboto Mono", "Droid Sans Mono", Consolas, "Courier New", monospace}[data-theme=dark][data-v-1640713a]{--bg-page: var(--bg-page-dark);--bg-container: var(--bg-container-dark);--text-primary: var(--text-primary-dark);--text-secondary: var(--text-secondary-dark);--text-tertiary: var(--text-tertiary-dark);--text-placeholder: var(--text-placeholder-dark);--border-color: var(--border-color-dark);--border-color-light: rgba(255, 255, 255, .08);--border-color-medium: rgba(255, 255, 255, .12);--shadow-base: var(--shadow-dark);--shadow-lg: var(--shadow-dark-lg);--git-diff-context-bg: #24292e;--git-diff-context-color: #f8f8f2}.bg-gradient-primary[data-v-1640713a]{background:var(--color-primary-gradient)}.bg-gradient-primary-hover[data-v-1640713a]{background:var(--color-primary-gradient-hover)}.text-git-added[data-v-1640713a]{color:var(--git-status-added)}.text-git-modified[data-v-1640713a]{color:var(--git-status-modified)}.text-git-deleted[data-v-1640713a]{color:var(--git-status-deleted)}.text-git-untracked[data-v-1640713a]{color:var(--git-status-untracked)}.text-git-locked[data-v-1640713a]{color:var(--git-status-locked)}.bg-git-added[data-v-1640713a]{background-color:var(--git-status-added)}.bg-git-modified[data-v-1640713a]{background-color:var(--git-status-modified)}.bg-git-deleted[data-v-1640713a]{background-color:var(--git-status-deleted)}.bg-git-untracked[data-v-1640713a]{background-color:var(--git-status-untracked)}.bg-git-locked[data-v-1640713a]{background-color:var(--git-status-locked)}.shadow-sm[data-v-1640713a]{box-shadow:var(--shadow-sm)}.shadow-base[data-v-1640713a]{box-shadow:var(--shadow-base)}.shadow-md[data-v-1640713a]{box-shadow:var(--shadow-md)}.shadow-lg[data-v-1640713a]{box-shadow:var(--shadow-lg)}.shadow-xl[data-v-1640713a]{box-shadow:var(--shadow-xl)}.transition-all[data-v-1640713a]{transition:var(--transition-all)}.transition-color[data-v-1640713a]{transition:var(--transition-color)}.transition-bg[data-v-1640713a]{transition:var(--transition-bg)}.transition-border[data-v-1640713a]{transition:var(--transition-border)}.transition-shadow[data-v-1640713a]{transition:var(--transition-shadow)}.transition-transform[data-v-1640713a]{transition:var(--transition-transform)}.file-diff-viewer[data-v-1640713a]{display:flex;border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;background-color:var(--bg-container);height:100%;flex:1;min-height:0;box-shadow:var(--shadow-base);transition:var(--transition-all)}.files-panel[data-v-1640713a]{width:300px;min-width:250px;background:#fafbfc;border-right:1px solid var(--border-color);display:flex;flex-direction:column;box-shadow:inset -1px 0 0 var(--border-color-light)}.diff-panel[data-v-1640713a]{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--bg-container)}.diff-panel.full-width[data-v-1640713a]{width:100%}.panel-header[data-v-1640713a]{padding:var(--spacing-md) var(--spacing-lg);background:#fff;color:#303133;border-bottom:1px solid #e4e7ed;display:flex;justify-content:space-between;align-items:center;box-shadow:0 1px 3px #0000000d}.panel-header h4[data-v-1640713a]{margin:0;font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:#303133}.header-right[data-v-1640713a]{display:flex;align-items:center;gap:var(--spacing-sm)}.action-buttons[data-v-1640713a]{display:flex;align-items:center;gap:var(--spacing-xs)}.open-file-btn[data-v-1640713a]{border-radius:var(--radius-sm);font-size:var(--font-size-xs);padding:var(--spacing-xs) var(--spacing-sm);transition:all .3s ease}.open-file-btn[data-v-1640713a]:hover{transform:translateY(-1px);box-shadow:0 2px 8px #409eff4d}.vscode-btn[data-v-1640713a]{border-radius:var(--radius-sm);font-size:var(--font-size-xs);padding:var(--spacing-xs) var(--spacing-sm);transition:all .3s ease;display:flex;align-items:center;gap:4px}.vscode-btn[data-v-1640713a]:hover{transform:translateY(-1px);box-shadow:0 2px 8px #67c23a4d}.vscode-icon[data-v-1640713a]{width:16px;height:16px;object-fit:contain}.file-count[data-v-1640713a]{font-size:var(--font-size-xs);color:#606266;font-weight:var(--font-weight-medium);background:#f5f7fa;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-full);border:1px solid #e4e7ed}.selected-file[data-v-1640713a]{font-size:var(--font-size-xs);color:#606266;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#f0f2f5;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);border:1px solid #d9d9d9}.files-list[data-v-1640713a]{flex:1;min-height:0;overflow:hidden;background:#fff}.file-item[data-v-1640713a]{display:flex;align-items:center;padding:var(--spacing-base) var(--spacing-lg);cursor:pointer;transition:var(--transition-all);border-bottom:1px solid rgba(255,255,255,.1);position:relative;background:transparent}.file-item[data-v-1640713a]:before{content:"";position:absolute;left:0;top:0;width:3px;height:100%;background:transparent;transition:var(--transition-all)}.file-item[data-v-1640713a]:hover{background:#f5f7fa;transform:translate(2px)}.file-item[data-v-1640713a]:hover:before{background:#409eff}.file-item.active[data-v-1640713a]{background:#e6f7ff;color:#1890ff;border-left:3px solid #1890ff}.file-item.active[data-v-1640713a]:before{background:#1890ff;width:4px}.file-item.active .file-icon[data-v-1640713a]{color:#1890ff}.file-item.file-type-added[data-v-1640713a]:before{background:var(--git-status-added)}.file-item.file-type-added[data-v-1640713a]:not(.active):hover{background:linear-gradient(90deg,#10b9811a,#fffc)}.file-item.file-type-added[data-v-1640713a]:not(.active):hover:before{background:var(--git-status-added);width:4px}.file-item.file-type-modified[data-v-1640713a]:before{background:var(--git-status-modified)}.file-item.file-type-modified[data-v-1640713a]:not(.active):hover{background:linear-gradient(90deg,#f59e0b1a,#fffc)}.file-item.file-type-modified[data-v-1640713a]:not(.active):hover:before{background:var(--git-status-modified);width:4px}.file-item.file-type-deleted[data-v-1640713a]:before{background:var(--git-status-deleted)}.file-item.file-type-deleted[data-v-1640713a]:not(.active):hover{background:linear-gradient(90deg,#ef44441a,#fffc)}.file-item.file-type-deleted[data-v-1640713a]:not(.active):hover:before{background:var(--git-status-deleted);width:4px}.file-item.file-type-untracked[data-v-1640713a]:before{background:var(--git-status-untracked)}.file-item.file-type-untracked[data-v-1640713a]:not(.active):hover{background:linear-gradient(90deg,#8b5cf61a,#fffc)}.file-item.file-type-untracked[data-v-1640713a]:not(.active):hover:before{background:var(--git-status-untracked);width:4px}.file-icon[data-v-1640713a]{margin-right:var(--spacing-base);color:var(--text-secondary);font-size:var(--font-size-lg);flex-shrink:0;transition:var(--transition-color)}.file-name[data-v-1640713a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-primary);transition:var(--transition-color)}.active .file-name[data-v-1640713a]{color:#1890ff;font-weight:var(--font-weight-semibold)}.diff-content[data-v-1640713a]{flex:1;padding:var(--spacing-lg);overflow:auto;background:var(--bg-container);min-height:0}.diff-content .diff-text[data-v-1640713a]{font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:var(--line-height-normal);white-space:pre-wrap;word-break:break-all;height:100%;padding:var(--spacing-md);background:var(--bg-code);border-radius:var(--radius-base);border:1px solid var(--border-color-light)}[data-v-1640713a] .el-scrollbar__view{height:100%}[data-v-1640713a] .el-scrollbar__bar .el-scrollbar__thumb{background-color:var(--scrollbar-thumb)}[data-v-1640713a] .el-scrollbar__bar .el-scrollbar__thumb:hover{background-color:var(--scrollbar-thumb-hover)}.diff-text[data-v-1640713a]{border-radius:var(--radius-base);background:var(--bg-code);border:1px solid var(--border-color-light)}.file-diff-dialog.common-dialog--flex .el-dialog__body,.stash-detail-dialog.common-dialog--flex .el-dialog__body,.commit-detail-dialog.common-dialog--flex .el-dialog__body{height:calc(100vh - 200px)!important;padding:12px!important;display:flex!important;flex-direction:column!important;overflow:hidden!important}[data-v-c1505473] .common-dialog--flex .el-dialog{display:flex;flex-direction:column;height:var(--dialog-height, auto)!important;max-height:90vh}[data-v-c1505473] .common-dialog--flex .el-dialog__body{display:flex;flex-direction:column;flex:1;padding:16px;box-sizing:border-box;overflow:hidden;min-height:0}[data-v-c1505473] .common-dialog--full-height .el-dialog{display:flex;flex-direction:column;height:var(--dialog-height, auto)}[data-v-c1505473] .common-dialog--full-height .el-dialog__body{display:flex;flex-direction:column;flex:1;overflow:hidden;padding:12px;box-sizing:border-box;min-height:0}[data-v-c1505473] .commit-detail-dialog.common-dialog--flex .el-dialog__body,[data-v-c1505473] .file-diff-dialog.common-dialog--flex .el-dialog__body,[data-v-c1505473] .stash-detail-dialog.common-dialog--flex .el-dialog__body{height:calc(100vh - 200px)!important;padding:12px!important;display:flex!important;flex-direction:column!important;overflow:hidden!important}.common-dialog__footer[data-v-c1505473]{display:flex;gap:12px;justify-content:flex-end}.common-dialog__footer .el-button[data-v-c1505473]{min-width:80px}.file-group[data-v-19d1466f]{margin-bottom:var(--spacing-md);border-radius:var(--radius-md);overflow:hidden;background:var(--bg-container);box-shadow:var(--shadow-base);border:1px solid var(--border-color);transition:var(--transition-all)}.file-group[data-v-19d1466f]:hover{box-shadow:var(--shadow-hover)}.file-group-header[data-v-19d1466f]{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);background:#f8f9fa;cursor:pointer;font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);color:#303133;transition:var(--transition-all);position:relative;border-bottom:1px solid #e4e7ed}.file-group-header[data-v-19d1466f]:hover{background:#f0f2f5}.collapse-icon[data-v-19d1466f]{transition:var(--transition-transform);font-size:var(--font-size-sm);color:#606266}.collapse-icon.collapsed[data-v-19d1466f]{transform:rotate(-90deg)}.file-list[data-v-19d1466f]{display:flex;flex-direction:column;padding:var(--spacing-sm);gap:1px}.file-item[data-v-19d1466f]{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-sm) var(--spacing-base);background:var(--bg-container);border-radius:var(--radius-base);cursor:pointer;transition:var(--transition-bg),var(--transition-shadow);border:1px solid var(--border-color-light);height:28px;box-sizing:border-box;position:relative}.file-item[data-v-19d1466f]:before{content:"";position:absolute;left:0;top:0;width:3px;height:100%;background:transparent;transition:var(--transition-all);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.file-item[data-v-19d1466f]:hover{background:var(--bg-container-hover);border-color:var(--border-hover)}.file-item[data-v-19d1466f]:hover:before{background:#409eff}.file-info[data-v-19d1466f]{display:flex;align-items:center;gap:var(--spacing-md);flex:1;min-width:0}.file-status-indicator[data-v-19d1466f]{width:6px;height:6px;border-radius:var(--radius-full);flex-shrink:0;transition:var(--transition-all)}.file-status-indicator.added[data-v-19d1466f]{background:var(--git-status-added)}.file-status-indicator.modified[data-v-19d1466f]{background:var(--git-status-modified)}.file-status-indicator.deleted[data-v-19d1466f]{background:var(--git-status-deleted)}.file-status-indicator.untracked[data-v-19d1466f]{background:var(--git-status-untracked)}.file-status-indicator.locked[data-v-19d1466f]{border:2px solid var(--git-status-locked);background:#fef2f2;animation:pulse-19d1466f 2s infinite}@keyframes pulse-19d1466f{0%,to{box-shadow:0 0 #dc262666}50%{box-shadow:0 0 0 2px #dc262600}}.file-name-section[data-v-19d1466f]{min-width:0;flex:0 1 auto}.file-name[data-v-19d1466f]{font-weight:var(--font-weight-medium);color:var(--text-primary);font-size:var(--font-size-sm);line-height:var(--line-height-tight);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:var(--spacing-sm);transition:var(--transition-color)}.file-item:hover .file-name[data-v-19d1466f]{color:var(--text-link)}.file-name.locked-file-name[data-v-19d1466f]{color:var(--git-status-locked);font-weight:var(--font-weight-semibold)}.lock-indicator[data-v-19d1466f]{font-size:var(--font-size-xs);color:var(--git-status-locked)}.file-path-section[data-v-19d1466f]{flex:1;min-width:0;margin-left:var(--spacing-md)}.file-directory[data-v-19d1466f]{font-size:var(--font-size-xs);color:var(--text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;font-weight:var(--font-weight-normal);background:var(--color-gray-100);padding:1px var(--spacing-sm);border-radius:var(--radius-sm);transition:var(--transition-all)}.file-item:hover .file-directory[data-v-19d1466f]{background:#e0e7ff;color:#6366f1}.file-actions[data-v-19d1466f]{display:none;align-items:center;gap:var(--spacing-xs);flex-shrink:0;padding:1px;border-radius:var(--radius-base);background:#ffffffe6;box-shadow:var(--shadow-sm);border:1px solid var(--border-color-light)}.file-item:hover .file-actions[data-v-19d1466f]{display:flex;animation:slideIn-19d1466f var(--transition-base) ease-out}@keyframes slideIn-19d1466f{0%{opacity:0;transform:translate(var(--spacing-base))}to{opacity:1;transform:translate(0)}}.file-action-btn[data-v-19d1466f]{min-width:auto!important;width:20px!important;height:20px!important;padding:0!important;display:flex;align-items:center;justify-content:center;transition:var(--transition-all);border-radius:var(--radius-sm)}.file-action-btn[data-v-19d1466f]:hover{transform:scale(1.05);box-shadow:var(--shadow-sm)}.file-action-btn[data-v-19d1466f]:active{transform:scale(1);transition:var(--transition-fast)}.card[data-v-3573605e]{background-color:#fff;border-radius:12px;box-shadow:0 2px 12px #0000000a;border:1px solid rgba(0,0,0,.03);height:100%;width:100%;display:flex;flex-direction:column;overflow:hidden;transition:all .3s ease;position:relative}.status-header[data-v-3573605e]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #f0f0f0}.status-header h2[data-v-3573605e]{margin:0;font-size:16px;font-weight:500;color:#303133}.header-actions[data-v-3573605e]{display:flex;align-items:center;gap:8px}.card-content[data-v-3573605e]{padding:8px;overflow-y:auto;overflow-x:hidden;flex:1;display:flex;flex-direction:column}.status-box[data-v-3573605e]{white-space:pre-wrap;font-family:monospace;background-color:#f8f9fa;padding:16px;border-radius:8px;margin-bottom:20px;max-height:200px;overflow-y:auto;overflow-x:hidden;border:1px solid #f0f0f0;font-size:14px;line-height:1.5;width:100%;box-sizing:border-box}.file-list-container[data-v-3573605e]{overflow-y:auto;flex:1;width:100%;box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgba(144,147,153,.3) transparent}.file-list-container[data-v-3573605e]::-webkit-scrollbar{width:6px;height:6px}.file-list-container[data-v-3573605e]::-webkit-scrollbar-thumb{background-color:#9093994d;border-radius:4px}.file-list-container[data-v-3573605e]::-webkit-scrollbar-thumb:hover{background-color:#90939980}.file-list-container[data-v-3573605e]::-webkit-scrollbar-track{background-color:transparent}.empty-status[data-v-3573605e]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center;background-color:#f9f9f9;border-radius:8px;flex-grow:1}.empty-icon[data-v-3573605e]{width:64px;height:64px;display:flex;align-items:center;justify-content:center;background-color:#f0f2f5;border-radius:50%;margin-bottom:16px;font-size:28px;color:#909399;animation:pulse-3573605e 2s infinite ease-in-out}@keyframes pulse-3573605e{0%{transform:scale(1);opacity:.7}50%{transform:scale(1.05);opacity:1}to{transform:scale(1);opacity:.7}}.empty-text[data-v-3573605e]{font-size:18px;font-weight:500;color:#606266;margin-bottom:8px}.empty-subtext[data-v-3573605e]{font-size:14px;color:#909399;margin-bottom:20px}.status-box-wrap[data-v-3573605e]{height:100%;display:flex;flex-direction:column;gap:16px}.branch-status-info[data-v-3573605e]{margin-bottom:0;background-color:#fff;border-radius:8px;overflow:hidden;border:1px solid #e4e7ed;transition:all .3s ease}.branch-status-info[data-v-3573605e]:hover{box-shadow:0 2px 8px #0000000d}.branch-sync-status[data-v-3573605e]{display:flex;align-items:center;padding:12px 16px;margin-bottom:0;background-color:#f8f9fa}.sync-status-content[data-v-3573605e]{display:flex;align-items:center;flex-wrap:wrap;gap:10px;width:100%}.status-badges[data-v-3573605e]{display:flex;flex-direction:column;gap:8px;width:100%}.status-badge[data-v-3573605e]{display:flex;align-items:center;width:100%;border-radius:4px;padding:8px 12px;transition:all .3s ease}.status-badge.el-tag--warning[data-v-3573605e]{background-color:#fff7e6;border-color:#ffd591;color:#d46b08}.status-badge.el-tag--info[data-v-3573605e]{background-color:#e6f7ff;border-color:#91d5ff;color:#1890ff}.status-badge[data-v-3573605e]:hover{transform:translateY(-2px);box-shadow:0 2px 8px #0000000d}.badge-content[data-v-3573605e]{display:flex;align-items:center;gap:8px;font-size:13px}.diff-dialog[data-v-3573605e]{height:calc(100vh - 150px)}.use-flex-body .el-dialog__body[data-v-3573605e]{display:flex;flex-direction:column;height:100%;padding:12px}.auto-update-switch[data-v-3573605e] .el-switch__core{transition:all .3s ease-in-out;box-shadow:0 2px 5px #0000001a}.auto-update-switch[data-v-3573605e] .el-switch__core:hover{box-shadow:0 2px 8px #0003}.auto-update-switch.is-checked[data-v-3573605e] .el-switch__core{box-shadow:0 2px 5px #67c23a4d}.auto-update-switch.is-checked[data-v-3573605e] .el-switch__core:hover{box-shadow:0 2px 8px #67c23a80}.el-button[data-v-3573605e]{transition:all .3s ease}.el-button[data-v-3573605e]:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 2px 8px #0000001a}.card-content[data-v-3573605e] .el-loading-mask{background-color:#fffc;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:10}.card-content[data-v-3573605e] .el-loading-spinner{transform:scale(1.2)}.card-content[data-v-3573605e] .el-loading-text{font-size:16px;color:#409eff;font-weight:700;margin-top:10px}.empty-locked-files[data-v-3573605e]{text-align:center;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:40px 20px;color:#666}.empty-locked-files .empty-icon[data-v-3573605e]{font-size:48px;color:#d9d9d9;margin-bottom:16px}.empty-locked-files p[data-v-3573605e]{margin:8px 0}.empty-tip[data-v-3573605e]{font-size:12px;color:#999}.locked-files-list[data-v-3573605e]{max-height:400px;overflow-y:auto}.locked-files-header[data-v-3573605e]{display:flex;align-items:center;gap:8px;padding:12px 16px;background-color:#fff7e6;border:1px solid #ffd591;border-radius:6px;margin-bottom:16px;color:#d46b08;font-weight:500}.locked-files-header .info-icon[data-v-3573605e]{color:#d46b08;cursor:help}.lock-feature-description[data-v-3573605e]{background-color:#f6f8fa;border:1px solid #e1e4e8;border-radius:8px;padding:16px;margin-bottom:16px}.description-header[data-v-3573605e]{display:flex;align-items:center;gap:8px;margin-bottom:12px}.description-icon[data-v-3573605e]{color:#1890ff;font-size:16px}.description-title[data-v-3573605e]{font-weight:600;color:#262626;font-size:14px}.description-content[data-v-3573605e]{font-size:13px;line-height:1.6;color:#595959}.description-content p[data-v-3573605e]{margin:8px 0}.description-content ul[data-v-3573605e]{margin:4px 0 12px;padding-left:20px}.description-content li[data-v-3573605e]{margin:4px 0}.locked-file-items[data-v-3573605e]{display:flex;flex-direction:column;gap:8px}.locked-file-item[data-v-3573605e]{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background-color:#fffbf0;border:1px solid #ffd591;border-radius:6px;transition:all .2s ease}.locked-file-item[data-v-3573605e]:hover{background-color:#fff7e6;border-color:#ffa940}.global-loading-overlay[data-v-12e53b20]{position:fixed;top:0;left:0;right:0;bottom:0;background:transparent;display:flex;align-items:center;justify-content:center;z-index:9999}.loading-container[data-v-12e53b20]{display:flex;flex-direction:column;align-items:center;gap:20px;padding:40px;border-radius:20px;background:linear-gradient(135deg,#409effe6,#67c23ae6);-webkit-backdrop-filter:blur(25px);backdrop-filter:blur(25px);box-shadow:0 8px 32px #0000004d;height:200px}.loading-spinner[data-v-12e53b20]{position:relative;width:120px;height:120px}.spinner-ring[data-v-12e53b20]{position:absolute;top:0;left:0;width:100%;height:100%;border:4px solid transparent;border-radius:50%}.spinner-ring[data-v-12e53b20]:nth-child(1){border-top:4px solid rgba(255,255,255,.9);animation:spin-12e53b20 2s linear infinite}.spinner-ring[data-v-12e53b20]:nth-child(2){border-right:4px solid rgba(255,255,255,.6);animation:spin-12e53b20 3s linear infinite reverse;width:90%;height:90%;top:5%;left:5%}.spinner-ring[data-v-12e53b20]:nth-child(3){border-bottom:4px solid rgba(255,255,255,.3);animation:spin-12e53b20 4s linear infinite;width:80%;height:80%;top:10%;left:10%}.loading-text[data-v-12e53b20]{color:#fff;font-size:18px;font-weight:600;text-shadow:0 2px 8px rgba(0,0,0,.3);letter-spacing:1px;text-align:center;animation:pulse-text-12e53b20 2s ease-in-out infinite}.loading-progress[data-v-12e53b20]{width:200px;height:4px;background:#fff3;border-radius:2px;overflow:hidden}.progress-bar[data-v-12e53b20]{height:100%;background:linear-gradient(90deg,#fff,#fffc);border-radius:2px;transition:width .3s ease;box-shadow:0 0 10px #ffffff80}@keyframes spin-12e53b20{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse-text-12e53b20{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}.loading-fade-enter-active[data-v-12e53b20],.loading-fade-leave-active[data-v-12e53b20]{transition:all .3s ease}.loading-fade-enter-from[data-v-12e53b20],.loading-fade-leave-to[data-v-12e53b20]{opacity:0}.loading-fade-enter-to[data-v-12e53b20],.loading-fade-leave-from[data-v-12e53b20]{opacity:1}.loading-fade-enter-active .loading-container[data-v-12e53b20],.loading-fade-leave-active .loading-container[data-v-12e53b20]{transition:all .3s ease}.loading-fade-enter-from .loading-container[data-v-12e53b20],.loading-fade-leave-to .loading-container[data-v-12e53b20]{opacity:0;transform:scale(.8);-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px)}.loading-fade-enter-to .loading-container[data-v-12e53b20],.loading-fade-leave-from .loading-container[data-v-12e53b20]{opacity:1;transform:scale(1);-webkit-backdrop-filter:blur(25px);backdrop-filter:blur(25px)}.success-overlay[data-v-c64a7b5e]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:9999}.success-container[data-v-c64a7b5e]{background:#fff;border-radius:16px;padding:40px;display:flex;flex-direction:column;align-items:center;gap:20px;box-shadow:0 20px 40px #0003;max-width:400px;text-align:center}.success-icon[data-v-c64a7b5e]{width:80px;height:80px}.success-svg[data-v-c64a7b5e]{width:100%;height:100%}.success-circle[data-v-c64a7b5e]{stroke:#67c23a;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:166;stroke-dashoffset:166;fill:none;animation:success-circle-animation-c64a7b5e .6s cubic-bezier(.65,0,.45,1) forwards}.success-check[data-v-c64a7b5e]{stroke:#67c23a;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:48;stroke-dashoffset:48;animation:success-check-animation-c64a7b5e .3s cubic-bezier(.65,0,.45,1) .8s forwards}.success-text[data-v-c64a7b5e]{font-size:24px;font-weight:700;color:#303133;margin:0}.success-description[data-v-c64a7b5e]{font-size:16px;color:#606266;margin:0;line-height:1.5}@keyframes success-circle-animation-c64a7b5e{to{stroke-dashoffset:0}}@keyframes success-check-animation-c64a7b5e{to{stroke-dashoffset:0}}.success-fade-enter-active[data-v-c64a7b5e],.success-fade-leave-active[data-v-c64a7b5e]{transition:all .3s ease}.success-fade-enter-from[data-v-c64a7b5e],.success-fade-leave-to[data-v-c64a7b5e]{opacity:0;-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px)}.success-fade-enter-to[data-v-c64a7b5e],.success-fade-leave-from[data-v-c64a7b5e]{opacity:1;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.success-fade-enter-active .success-container[data-v-c64a7b5e],.success-fade-leave-active .success-container[data-v-c64a7b5e]{transition:all .3s ease}.success-fade-enter-from .success-container[data-v-c64a7b5e],.success-fade-leave-to .success-container[data-v-c64a7b5e]{opacity:0;transform:scale(.8) translateY(20px)}.success-fade-enter-to .success-container[data-v-c64a7b5e],.success-fade-leave-from .success-container[data-v-c64a7b5e]{opacity:1;transform:scale(1) translateY(0)}.template-container[data-v-7943f6e9]{display:flex;flex-direction:column;gap:20px;height:100%}.template-form[data-v-7943f6e9]{display:flex;flex-direction:column;gap:12px}.template-input[data-v-7943f6e9]{font-size:14px}.template-form-buttons[data-v-7943f6e9]{display:flex;gap:8px;justify-content:flex-start}.template-list[data-v-7943f6e9]{flex:1;overflow:hidden;display:flex;flex-direction:column}.template-list h3[data-v-7943f6e9]{margin:0 0 16px;font-size:16px;font-weight:600;color:#303133}.template-item[data-v-7943f6e9]{margin-bottom:12px;border-radius:6px;transition:all .3s ease}.template-item[data-v-7943f6e9]:hover{box-shadow:0 4px 12px #00000026}.template-content[data-v-7943f6e9]{flex:1;font-size:14px;color:#606266;word-break:break-all;margin-right:12px}.template-actions[data-v-7943f6e9]{display:flex;gap:6px;align-items:center;flex-shrink:0}.message-template-container[data-v-7943f6e9]{flex-direction:column}.templates-container[data-v-7943f6e9]{display:flex;gap:20px;flex:1;overflow:hidden}.message-templates-list[data-v-7943f6e9]{flex:1;display:flex;flex-direction:column;overflow:hidden}.templates-scroll-area[data-v-7943f6e9]{flex:1;overflow-y:auto;padding-right:8px}.current-default-message[data-v-7943f6e9]{flex:1;display:flex;flex-direction:column;gap:16px}.current-default-message h3[data-v-7943f6e9]{margin:0;font-size:16px;font-weight:600;color:#303133}.default-message-card[data-v-7943f6e9]{border-radius:6px}.default-message-content[data-v-7943f6e9]{font-size:14px;color:#606266;word-break:break-all}.message-help-text[data-v-7943f6e9]{background-color:#f8f9fa;padding:16px;border-radius:6px;border-left:4px solid #409eff}.message-help-text h4[data-v-7943f6e9]{margin:0 0 8px;font-size:14px;color:#303133}.message-help-text p[data-v-7943f6e9]{margin:0 0 8px;font-size:13px;color:#606266;line-height:1.5}.message-help-text p[data-v-7943f6e9]:last-child{margin-bottom:0}.templates-scroll-area[data-v-7943f6e9]::-webkit-scrollbar{width:6px}.templates-scroll-area[data-v-7943f6e9]::-webkit-scrollbar-thumb{background-color:#c0c4cc;border-radius:3px}.templates-scroll-area[data-v-7943f6e9]::-webkit-scrollbar-track{background-color:#f5f7fa}.git-command-preview .preview-container[data-v-3c53a3e7]{display:flex;align-items:center;gap:12px;background-color:#f5f7fa;border:1px solid #e4e7ed;border-radius:6px;padding:12px 16px;transition:all .2s ease}.git-command-preview .preview-container[data-v-3c53a3e7]:hover{border-color:#c0c4cc;box-shadow:0 2px 8px #0000000f}.git-command-preview .preview-container .preview-title[data-v-3c53a3e7]{font-size:14px;color:#606266;font-weight:500;white-space:nowrap;flex-shrink:0;min-width:fit-content}.git-command-preview .preview-container .preview-content[data-v-3c53a3e7]{flex:1;background-color:#1a1a1a;color:#fff;border:1px solid #3c4043;border-radius:4px;padding:8px 12px;margin:0;font-family:Courier New,Monaco,Menlo,monospace;font-size:13px;font-weight:500;line-height:1.4;overflow-x:auto;white-space:nowrap;text-shadow:0 0 1px rgba(255,255,255,.3)}.git-command-preview .preview-container .preview-content.code-command[data-v-3c53a3e7]{background-color:#1a1a1a;color:#fff;border-color:#3c4043;font-weight:500;text-shadow:0 0 1px rgba(255,255,255,.3)}.git-command-preview .preview-container .copy-command-btn[data-v-3c53a3e7]{padding:6px 12px;min-height:32px;flex-shrink:0;border-radius:4px}.git-command-preview .preview-container .copy-command-btn .el-icon[data-v-3c53a3e7]{font-size:14px}.git-command-preview .preview-container .copy-command-btn[data-v-3c53a3e7]:hover{transform:translateY(-1px);box-shadow:0 4px 8px #409eff4d}.one-push-button[data-v-58e155b2]{height:100%}.one-push-button.form[data-v-58e155b2]{width:100%}.one-push-button.drawer[data-v-58e155b2]{width:auto;height:32px}.one-push-button .one-push-content[data-v-58e155b2]{display:flex;align-items:center}.one-push-button .one-push-content .one-push-text[data-v-58e155b2]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-left:10px}.one-push-button .one-push-content .one-push-text .one-push-desc[data-v-58e155b2]{font-size:12px;padding-top:4px}.stage-button.from-drawer[data-v-67a3259e]{padding:6px 12px;font-size:12px;height:32px}.stage-button.from-status[data-v-67a3259e]{padding:8px 14px;font-size:13px;height:36px}.stage-button.from-form[data-v-67a3259e]{padding:10px 16px;font-size:14px;height:40px}.commit-button.from-drawer[data-v-5a88b7bc]{padding:6px 12px;font-size:12px;height:32px}.commit-button.from-status[data-v-5a88b7bc]{padding:8px 14px;font-size:13px;height:36px}.commit-button.from-form[data-v-5a88b7bc]{padding:10px 16px;font-size:14px;height:40px}.push-button.from-drawer[data-v-3c2392d6]{padding:6px 12px;font-size:12px;height:32px}.push-button.from-status[data-v-3c2392d6]{padding:8px 14px;font-size:13px;height:36px}.push-button.from-form[data-v-3c2392d6]{padding:10px 16px;font-size:14px;height:40px}.form-bottom-actions[data-v-6cf9ea2c]{padding:16px;background:linear-gradient(135deg,#f8fafc,#e2e8f0);border-radius:12px;border:1px solid #e2e8f0;transition:all .3s ease;box-shadow:0 2px 8px #0000000d}.form-bottom-actions[data-v-6cf9ea2c]:hover{transform:translateY(-1px);box-shadow:0 4px 16px #0000001a}.actions-flex-container[data-v-6cf9ea2c]{display:flex;gap:16px;align-items:center;justify-content:space-between}.button-grid[data-v-6cf9ea2c]{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;align-items:stretch}.right-actions[data-v-6cf9ea2c]{min-width:160px;display:flex;align-items:stretch}@keyframes snakeBorder-621b662f{0%,to{border-top:2px solid #409EFF;border-right:2px solid transparent;border-bottom:2px solid transparent;border-left:2px solid transparent}25%{border-top:2px solid #409EFF;border-right:2px solid #67C23A;border-bottom:2px solid transparent;border-left:2px solid transparent}50%{border-top:2px solid transparent;border-right:2px solid #67C23A;border-bottom:2px solid #409EFF;border-left:2px solid transparent}75%{border-top:2px solid transparent;border-right:2px solid transparent;border-bottom:2px solid #409EFF;border-left:2px solid #67C23A}}@keyframes glowPulse-621b662f{0%,to{box-shadow:0 0 8px #409eff66}50%{box-shadow:0 0 12px #67c23a80}}.card[data-v-621b662f]{background-color:#fff;border-radius:8px;box-shadow:0 2px 10px #00000008;border:1px solid rgba(0,0,0,.03);height:100%;width:100%;display:flex;flex-direction:column;overflow:hidden;position:relative}.card-header h2[data-v-621b662f]{margin:0;font-size:16px;font-weight:500;color:#303133}.header-actions[data-v-621b662f]{display:flex;align-items:center;gap:8px}.card-content[data-v-621b662f]{padding:8px;overflow-y:auto;flex:1}.actions-section h3[data-v-621b662f]{margin-top:0;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid #dcdfe6;font-size:16px;color:#303133;font-weight:500}.operations-wrapper[data-v-621b662f]{display:flex;gap:10px}.action-groups[data-v-621b662f]{display:flex;flex-direction:column;gap:12px}.action-group[data-v-621b662f]{background-color:#f9f9f9;border-radius:6px;padding:12px 14px;box-shadow:0 2px 8px #00000014;transition:all .3s ease;flex:1}.action-group[data-v-621b662f]:hover{box-shadow:0 4px 12px #0000001f}.group-title[data-v-621b662f]{font-size:13px;font-weight:700;margin-bottom:8px;color:#606266;text-align:left;display:block;position:relative;padding-left:6px;border-bottom:1px solid rgba(0,0,0,.06);padding-bottom:6px}.group-buttons[data-v-621b662f]{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px;padding:0}.action-button[data-v-621b662f]{font-size:14px;font-weight:500}.action-button[data-v-621b662f]:hover{transform:translateY(-1px);box-shadow:0 2px 5px #00000026}.action-button[data-v-621b662f]:active{transform:translateY(0)}.stash-content[data-v-621b662f]{display:flex;flex-direction:column;height:100%;gap:12px}.stash-info-row[data-v-621b662f]{display:flex;align-items:center;gap:24px;padding:12px 16px;background-color:#f8f9fa;border-radius:6px;border:1px solid #e9ecef;flex-shrink:0}.stash-id[data-v-621b662f],.stash-description[data-v-621b662f]{display:flex;align-items:center;gap:8px}.info-label[data-v-621b662f]{font-size:13px;font-weight:500;color:#606266;white-space:nowrap}.stash-id-value[data-v-621b662f]{font-family:ui-monospace,SFMono-Regular,SF Mono,Monaco,Inconsolata,Roboto Mono,Droid Sans Mono,Consolas,Courier New,monospace;font-size:12px;background-color:#e9ecef;color:#495057;padding:2px 6px;border-radius:3px;border:1px solid #dee2e6}.stash-description[data-v-621b662f]{flex:1}.stash-description-value[data-v-621b662f]{font-size:14px;color:#303133;font-weight:400;word-break:break-all}.stash-main-content[data-v-621b662f]{flex:1;min-height:0;display:flex;flex-direction:column}.command-text[data-v-621b662f],.command-text-long[data-v-621b662f]{display:none}.standard-commit-form[data-v-621b662f]{display:flex;flex-direction:column;gap:8px;margin-bottom:15px}.standard-commit-header[data-v-621b662f]{display:flex;flex-direction:column;gap:4px;width:100%}.type-scope-container[data-v-621b662f]{display:flex;gap:10px;width:100%}.type-select[data-v-621b662f]{width:35%}.scope-wrapper[data-v-621b662f]{display:flex;align-items:center;gap:5px;width:65%}.commit-form[data-v-621b662f]{display:flex;flex-direction:column;gap:8px}.description-container[data-v-621b662f]{display:flex;align-items:center;gap:5px;width:100%;background:linear-gradient(135deg,#f8faff,#eef4ff);border-radius:12px;margin:8px 0;box-shadow:0 2px 8px #409eff1a;transition:all .3s ease}.description-container[data-v-621b662f]:hover{box-shadow:0 4px 16px #409eff33}[data-v-621b662f] .description-input{flex-grow:1}[data-v-621b662f] .description-input .el-input__wrapper{border-radius:8px;background:#fff;border:2px solid #409eff;box-shadow:0 2px 4px #409eff1a;transition:all .3s ease}[data-v-621b662f] .description-input .el-input__wrapper:hover{border-color:#66b1ff;box-shadow:0 4px 8px #409eff33}[data-v-621b662f] .description-input .el-input__wrapper.is-focus{border-color:#409eff;box-shadow:0 0 0 4px #409eff33}[data-v-621b662f] .description-input .el-input__inner{font-size:15px;font-weight:500;color:#303133}[data-v-621b662f] .description-input .el-input__inner::placeholder{color:#a8abb2;font-weight:400}[data-v-621b662f] .type-select .el-select__wrapper{border-radius:8px;background:#fff;border:2px solid #f56c6c;box-shadow:0 2px 4px #f56c6c1a;transition:all .3s ease;height:40px}[data-v-621b662f] .type-select .el-select__wrapper:hover{border-color:#f78989;box-shadow:0 4px 8px #f56c6c33}[data-v-621b662f] .type-select .el-select__wrapper.is-focus{border-color:#f56c6c;box-shadow:0 0 0 4px #f56c6c33}[data-v-621b662f] .type-select .el-select__inner{font-size:14px;font-weight:500;color:#303133}[data-v-621b662f] .type-select .el-select__inner::placeholder{color:#a8abb2;font-weight:400}[data-v-621b662f] .scope-input{flex-grow:1}[data-v-621b662f] .scope-input .el-input__wrapper{border-radius:8px;background:#fff;border:2px solid #67c23a;box-shadow:0 2px 4px #67c23a1a;transition:all .3s ease;height:40px}[data-v-621b662f] .scope-input .el-input__wrapper:hover{border-color:#85ce61;box-shadow:0 4px 8px #67c23a33}[data-v-621b662f] .scope-input .el-input__wrapper.is-focus{border-color:#67c23a;box-shadow:0 0 0 4px #67c23a33}[data-v-621b662f] .scope-input .el-input__inner{font-size:14px;font-weight:500}[data-v-621b662f] .scope-input .el-input__inner::placeholder{color:#a8abb2;font-weight:400}[data-v-621b662f] .commit-message-input{background:linear-gradient(135deg,#fff8f0,#fff2e6);border-radius:12px;margin:8px 0;box-shadow:0 2px 8px #e6a23c1a;transition:all .3s ease}[data-v-621b662f] .commit-message-input .el-textarea__inner{border-radius:8px;background:#fff;border:2px solid #e6a23c;box-shadow:0 2px 4px #e6a23c1a;font-size:15px;font-weight:500;transition:all .3s ease}[data-v-621b662f] .commit-message-input .el-textarea__inner:hover{border-color:#ebb563;box-shadow:0 4px 8px #e6a23c33}[data-v-621b662f] .commit-message-input .el-textarea__inner:focus{border-color:#e6a23c;box-shadow:0 0 0 4px #e6a23c33;outline:none}[data-v-621b662f] .commit-message-input .el-textarea__inner::placeholder{color:#a8abb2;font-weight:400}[data-v-621b662f] .commit-message-input:hover{border-color:#e6a23c;box-shadow:0 4px 16px #e6a23c33}.settings-button[data-v-621b662f]{flex-shrink:0}.template-container[data-v-621b662f]{display:flex;flex-direction:column;height:calc(85vh - 100px);overflow-y:auto;padding:5px}.template-form[data-v-621b662f]{margin-bottom:20px;background-color:#f8f9fa;padding:15px;border-radius:6px;border:1px solid #ebeef5}.template-form-buttons[data-v-621b662f]{display:flex;gap:10px;margin-top:12px;justify-content:flex-end}.template-input[data-v-621b662f]{flex-grow:1}.template-list[data-v-621b662f]{overflow-y:auto;height:100%}.template-list h3[data-v-621b662f]{margin-top:0;margin-bottom:15px;font-size:16px;font-weight:500;color:#303133;padding-bottom:8px;border-bottom:1px solid #ebeef5}.template-item[data-v-621b662f]{margin-bottom:10px;transition:all .2s ease;border:1px solid #ebeef5}.template-item[data-v-621b662f]:hover{background-color:#f5f7fa;transform:translateY(-2px);box-shadow:0 2px 12px #0000001a}.template-content[data-v-621b662f]{flex-grow:1;margin-right:10px;word-break:break-all;padding:5px 0;color:#303133;font-weight:500}.template-actions[data-v-621b662f]{display:flex;gap:8px;justify-content:flex-end;min-width:180px;flex-shrink:0}.commit-options[data-v-621b662f]{display:flex;flex-direction:row;gap:8px;margin-bottom:12px}.option-card[data-v-621b662f]{background:linear-gradient(135deg,#fff,#f8f9fa);border:1px solid #e9ecef;border-radius:8px;padding:8px 10px;transition:all .3s ease;box-shadow:0 1px 3px #0000000d;flex:1;min-width:0}.option-card[data-v-621b662f]:hover{border-color:#409eff;box-shadow:0 2px 8px #409eff1a;transform:translateY(-1px)}.option-header[data-v-621b662f]{display:flex;flex-direction:row;align-items:center;gap:8px;text-align:left}.option-icon[data-v-621b662f]{width:20px;height:20px;border-radius:4px;display:flex;align-items:center;justify-content:center;background:#409eff;color:#fff;font-size:10px;flex-shrink:0}.option-icon.warning[data-v-621b662f]{background:#f56c6c}.option-icon.success[data-v-621b662f]{background:#67c23a}.option-info[data-v-621b662f]{flex:1;min-width:0}.option-title[data-v-621b662f]{margin:0;font-size:12px;font-weight:600;color:#303133;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.option-desc[data-v-621b662f]{margin:0;font-size:10px;color:#909399;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.option-switch[data-v-621b662f]{flex-shrink:0}.option-switch[data-v-621b662f] .el-switch__label{font-size:12px;font-weight:500}.option-switch[data-v-621b662f] .el-switch__label.is-active{color:#409eff}.top-actions-container[data-v-621b662f]{margin-bottom:16px}.top-actions-container[data-v-621b662f] .form-bottom-actions{background:#fff;border:1px solid #e4e7ed;box-shadow:0 1px 3px #0000000d;margin-bottom:0}.top-actions-container[data-v-621b662f] .form-bottom-actions:hover{transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.top-actions-container[data-v-621b662f] .actions-flex-container{gap:20px}.top-actions-container[data-v-621b662f] .button-grid{gap:16px}.top-actions-container[data-v-621b662f] .el-button{border-radius:8px;font-weight:500;transition:all .3s ease}.top-actions-container[data-v-621b662f] .el-button:hover{transform:translateY(-1px);box-shadow:0 4px 8px #00000026}.top-actions-container[data-v-621b662f] .el-button--primary{background:#409eff;border:none;color:#fff}.top-actions-container[data-v-621b662f] .el-button--success{background:#67c23a;border:none;color:#fff}.top-actions-container[data-v-621b662f] .el-button--warning{background:#e6a23c;border:none;color:#fff}.top-actions-container[data-v-621b662f] .el-button:disabled{opacity:.4!important;background-color:#f5f7fa!important;border-color:#e4e7ed!important;color:#c0c4cc!important}.top-actions-container[data-v-621b662f] .el-button--primary:disabled{background-color:#a0cfff!important;border-color:#a0cfff!important;color:#fff!important;opacity:.5!important}.top-actions-container[data-v-621b662f] .el-button--success:disabled{background-color:#b3e19d!important;border-color:#b3e19d!important;color:#fff!important;opacity:.5!important}.top-actions-container[data-v-621b662f] .el-button--warning:disabled{background-color:#f3d19e!important;border-color:#f3d19e!important;color:#fff!important;opacity:.5!important}.top-actions-container[data-v-621b662f] .el-button--info{background:#909399;border:none;color:#fff}@media (max-width: 768px){.commit-options[data-v-621b662f]{flex-direction:column;gap:6px}.option-card[data-v-621b662f]{padding:8px}.option-header[data-v-621b662f]{flex-direction:row;gap:8px;text-align:left}.option-icon[data-v-621b662f]{width:20px;height:20px;font-size:10px}.option-title[data-v-621b662f]{font-size:11px}.option-desc[data-v-621b662f]{font-size:9px;-webkit-line-clamp:1;line-clamp:1}.top-actions-container[data-v-621b662f] .actions-flex-container{flex-direction:column;gap:12px}.top-actions-container[data-v-621b662f] .button-grid{grid-template-columns:1fr;gap:8px}}.code-command[data-v-621b662f]{background-color:#2d2d2d;color:#f8f8f2;font-family:Courier New,Courier,monospace;padding:10px;border-radius:4px;overflow-x:auto;white-space:pre;font-size:14px}.layout-container[data-v-621b662f]{flex-direction:row}.commit-section[data-v-621b662f]{flex:3}.actions-section[data-v-621b662f]{width:320px}.operations-wrapper[data-v-621b662f]{flex-direction:column}.git-config-warning[data-v-621b662f]{width:100%}.config-command[data-v-621b662f]{background-color:#2d2d2d;color:#f8f8f2;font-family:Courier New,Courier,monospace;padding:10px;border-radius:4px;margin-top:10px;white-space:pre}@keyframes pushing-pulse-621b662f{0%{box-shadow:0 0 #67c23a66}70%{box-shadow:0 0 0 15px #67c23a00}to{box-shadow:0 0 #67c23a00}}@keyframes pushing-border-621b662f{0%{border-color:#67c23a}50%{border-color:#85ce61}to{border-color:#67c23a}}.card.is-pushing[data-v-621b662f]{animation:pushing-border-621b662f 1.5s infinite ease-in-out;box-shadow:0 4px 12px #0000001a;transition:all .3s ease}@keyframes one-click-push-glow-621b662f{0%{box-shadow:0 0 5px #67c23a80}50%{box-shadow:0 0 20px #67c23acc}to{box-shadow:0 0 5px #67c23a80}}.action-button.one-click-push[data-v-621b662f]{position:relative;overflow:hidden}.action-button.one-click-push.is-loading[data-v-621b662f],.action-button.one-click-push.is-loading[data-v-621b662f]:hover{animation:one-click-push-glow-621b662f 1.5s infinite;background-color:#67c23a!important;border-color:#67c23a!important}.reset-button[data-v-621b662f]{background-color:#909399;border-color:#909399}.reset-button[data-v-621b662f]:hover{background-color:#a6a9ad;border-color:#a6a9ad}.status-updating-indicator[data-v-621b662f]{position:fixed;top:20px;right:20px;background:#fffffff2;border:1px solid #409eff;border-radius:8px;padding:12px 16px;display:flex;align-items:center;gap:8px;box-shadow:0 4px 12px #409eff33;z-index:2000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.status-updating-indicator span[data-v-621b662f]{font-size:14px;color:#409eff;font-weight:500}.status-updating-indicator .el-icon[data-v-621b662f]{font-size:16px;color:#409eff}.git-push-loading[data-v-621b662f]{background:linear-gradient(135deg,#409efff2,#67c23af2)!important;-webkit-backdrop-filter:blur(15px)!important;backdrop-filter:blur(15px)!important}.git-push-loading .el-loading-mask[data-v-621b662f]{background:transparent!important}.git-push-loading .el-loading-spinner[data-v-621b662f]{margin-top:-50px!important;position:relative!important}.git-push-loading .el-loading-spinner svg[data-v-621b662f]{width:100px!important;height:100px!important;color:#fff!important}.git-push-loading .el-loading-spinner .circular[data-v-621b662f]{width:100px!important;height:100px!important;animation:git-push-rotate-621b662f 2s linear infinite!important}.git-push-loading .el-loading-spinner .path[data-v-621b662f]{stroke:#fff!important;stroke-width:4!important;stroke-linecap:round!important;filter:drop-shadow(0 0 10px rgba(255,255,255,.8))!important}.git-push-loading .el-loading-text[data-v-621b662f]{color:#fff!important;font-size:20px!important;font-weight:700!important;text-shadow:0 2px 8px rgba(0,0,0,.5)!important;margin-top:30px!important;letter-spacing:1px!important;text-transform:uppercase!important}.git-push-loading .el-loading-spinner[data-v-621b662f]:before{content:"";position:absolute;top:50%;left:50%;width:120px;height:120px;margin:-60px 0 0 -60px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.2) 0%,transparent 70%);animation:git-push-pulse-621b662f 3s ease-in-out infinite;z-index:-1}.git-push-loading .el-loading-spinner[data-v-621b662f]:after{content:"";position:absolute;top:50%;left:50%;width:140px;height:140px;margin:-70px 0 0 -70px;border:2px solid transparent;border-top:2px solid rgba(255,255,255,.3);border-right:2px solid rgba(255,255,255,.1);border-radius:50%;animation:git-push-rotate-621b662f 4s linear infinite reverse;z-index:-1}@keyframes git-push-rotate-621b662f{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes git-push-pulse-621b662f{0%{transform:scale(.8);opacity:.8}50%{transform:scale(1.2);opacity:.3}to{transform:scale(.8);opacity:.8}}.actions-flex-container[data-v-621b662f]{display:flex;justify-content:space-between;gap:10px;width:100%}.left-actions[data-v-621b662f]{flex:3;display:flex;align-items:center}.right-actions[data-v-621b662f]{flex:2;display:flex;align-items:center;justify-content:center}.button-grid .el-button[data-v-621b662f]{margin:0;height:100%;min-height:36px;display:flex;align-items:center;justify-content:center;padding:8px 15px}.button-grid .el-button[data-v-621b662f]:first-child{grid-column:1/2;grid-row:1/2}.button-grid .el-button[data-v-621b662f]:nth-child(2){grid-column:2/3;grid-row:1/2}.button-grid .el-button[data-v-621b662f]:last-child{grid-column:1/3;grid-row:2/3}.one-push-button[data-v-621b662f]{height:100%;width:100%;padding:10px 15px;background:linear-gradient(135deg,#4169e1,#5e81f4);border:none;border-radius:8px;box-shadow:0 4px 10px #4169e140;transition:all .3s ease;position:relative;z-index:1000}.one-push-content[data-v-621b662f]{display:flex;align-items:center;justify-content:center;height:100%}.one-push-icon[data-v-621b662f]{font-size:24px;margin-right:10px}.one-push-desc[data-v-621b662f]{font-size:12px;opacity:.8;margin-top:4px}.pushing-text[data-v-621b662f]{font-size:20px;font-weight:700;text-align:center}.pushing-spinner[data-v-621b662f]{margin-bottom:16px}.circular[data-v-621b662f]{height:64px;width:64px;animation:pushing-rotate-621b662f 2s linear infinite}.path[data-v-621b662f]{stroke:#fff;stroke-width:4;stroke-linecap:round;stroke-dasharray:90,150;stroke-dashoffset:0;animation:pushing-dash-621b662f 1.5s ease-in-out infinite}@keyframes pushing-rotate-621b662f{to{transform:rotate(360deg)}}@keyframes pushing-dash-621b662f{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.message-template-container[data-v-621b662f]{display:flex;flex-direction:column;height:calc(100vh - 278px);overflow:hidden}.templates-container[data-v-621b662f]{display:flex;gap:20px;margin-top:15px;flex:1;overflow:hidden}.message-templates-list[data-v-621b662f]{flex:3;display:flex;flex-direction:column;border-right:1px solid #ebeef5;padding-right:15px;height:calc(100vh - 432px)}.message-templates-list h3[data-v-621b662f]{margin-top:0;margin-bottom:15px;font-size:16px;font-weight:500;color:#303133;padding-bottom:8px;border-bottom:1px solid #ebeef5}.current-default-message[data-v-621b662f]{flex:2;display:flex;flex-direction:column;gap:15px;padding-left:15px}.current-default-message h3[data-v-621b662f]{margin-top:0;margin-bottom:15px;font-size:16px;font-weight:500;color:#303133;padding-bottom:8px;border-bottom:1px solid #ebeef5}.templates-scroll-area[data-v-621b662f]{overflow-y:auto;padding-right:5px;flex:1}.default-message-card[data-v-621b662f]{margin-bottom:15px;box-shadow:0 2px 8px #00000014;border-radius:4px;transition:all .3s ease}.default-message-card[data-v-621b662f]:hover{box-shadow:0 4px 12px #0000001f}.default-message-content[data-v-621b662f]{padding:12px 15px;background-color:#f0f9eb;border-left:3px solid #67c23a;font-weight:500;word-break:break-all;min-height:60px;display:flex;align-items:center;border-radius:0 4px 4px 0;color:#303133}.message-help-text[data-v-621b662f]{background-color:#f8f9fa;border-radius:4px;padding:15px;font-size:14px;color:#606266;border-left:3px solid #909399;margin-top:auto;box-shadow:0 2px 8px #0000000d}.message-help-text h4[data-v-621b662f]{margin-top:0;margin-bottom:10px;color:#303133;font-size:15px}.message-help-text p[data-v-621b662f]{margin:8px 0;line-height:1.5}.advanced-options-toggle[data-v-621b662f]{display:flex;align-items:center;justify-content:center;padding:6px 0;background-color:#f5f7fa;border-radius:4px;cursor:pointer;transition:all .3s ease;-webkit-user-select:none;user-select:none;font-size:14px}.advanced-options-toggle[data-v-621b662f]:hover{background-color:#ebeef5;color:#409eff}.toggle-icon[data-v-621b662f]{margin-left:8px;transition:transform .3s ease;font-size:12px}.toggle-icon.is-active[data-v-621b662f]{transform:rotate(180deg)}.advanced-fields[data-v-621b662f]{margin-top:10px;display:flex;flex-direction:column;gap:15px;animation:fade-in-621b662f .3s ease-in-out}@keyframes fade-in-621b662f{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.merge-dialog-content[data-v-621b662f]{padding:0 10px}.merge-intro[data-v-621b662f]{margin-bottom:20px;color:#606266}.merge-options[data-v-621b662f]{display:flex;flex-direction:column;gap:10px}.dialog-footer[data-v-621b662f]{display:flex;justify-content:flex-end;gap:10px}.merge-confirm-btn[data-v-621b662f]{margin-left:10px}.merge-button[data-v-621b662f]{background-color:#409eff;border-color:#409eff}.branch-group[data-v-621b662f]{border-top:none}.branch-group .group-title[data-v-621b662f]{color:#606266;font-weight:500;margin-bottom:12px}[data-v-621b662f] .el-checkbox__label{white-space:normal;line-height:1.4}.stash-list-content[data-v-621b662f]{padding:20px 0}.stash-list-actions[data-v-621b662f]{margin-top:20px;display:flex;justify-content:flex-end}.stash-dialog-content p[data-v-621b662f]{margin-bottom:20px;color:#606266}.reset-group[data-v-621b662f]{border-top:none}.card-header[data-v-621b662f]{padding:8px 16px;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;align-items:center}.git-tools-button[data-v-621b662f]{transition:transform .3s}.git-tools-button[data-v-621b662f]:hover{transform:rotate(90deg)}.layout-container[data-v-621b662f]{display:flex;flex-direction:column;gap:15px;height:100%}.commit-section[data-v-621b662f]{flex:1;width:100%;min-width:0}[data-v-621b662f] .git-operations-drawer .el-drawer__header{margin-bottom:10px;padding:12px 16px;border-bottom:1px solid #f0f0f0;font-size:16px;font-weight:500}[data-v-621b662f] .git-operations-drawer .el-drawer__body{padding:10px;overflow-y:auto}.actions-section[data-v-621b662f]{padding:0}.center-button-container[data-v-621b662f]{display:flex;justify-content:space-between;align-items:center;margin-top:10px;position:relative}.button-divider[data-v-621b662f]{height:1px;background:linear-gradient(to right,#dcdfe600,#dcdfe6,#dcdfe600);flex:1;margin:0 15px}.one-push-button[data-v-621b662f]{padding:0 25px;min-width:160px;height:40px;font-weight:500;border-radius:20px;box-shadow:0 2px 6px #4169e14d;transition:all .3s;position:relative;z-index:2}.one-push-button[data-v-621b662f]:hover{transform:translateY(-1px);box-shadow:0 4px 8px #4169e166}.action-separator[data-v-621b662f]{position:relative;text-align:center;margin:12px 0;height:20px}.separator-text[data-v-621b662f]{background-color:#f5f7fa;padding:0 10px;font-size:12px;color:#909399;position:relative;z-index:1}.action-separator[data-v-621b662f]:before{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background-color:#e4e7ed;z-index:0}.one-push-container[data-v-621b662f]{display:flex;justify-content:center}.one-push-button[data-v-621b662f]{width:100%;max-width:300px;height:auto;padding:10px 20px;background:linear-gradient(135deg,#4169e1,#5e81f4);border:none;border-radius:8px;box-shadow:0 4px 10px #4169e140;transition:all .3s ease;position:relative;z-index:1000}.one-push-button[data-v-621b662f]:hover{transform:translateY(-2px);box-shadow:0 6px 12px #4169e159;background:linear-gradient(135deg,#3a5ecc,#4b6edf)}.one-push-button[data-v-621b662f]:active{transform:translateY(0);box-shadow:0 2px 6px #4169e133}.one-push-content[data-v-621b662f]{display:flex;align-items:center;justify-content:center}.one-push-icon[data-v-621b662f]{font-size:20px;margin-right:10px}.one-push-text[data-v-621b662f]{display:flex;flex-direction:column;align-items:flex-start;text-align:left}.one-push-title[data-v-621b662f]{font-size:16px;font-weight:500;line-height:1.2}.one-push-desc[data-v-621b662f]{font-size:12px;opacity:.8;margin-top:2px}.button-row[data-v-621b662f]{display:flex;justify-content:space-between;gap:10px;width:100%}.button-row .el-button[data-v-621b662f]{flex:1;min-width:100px}.center-button-container[data-v-621b662f],.button-divider[data-v-621b662f]{display:none}.git-cmd-tooltip{font-family:Consolas,Courier New,monospace!important;font-size:13px!important;font-weight:500!important;color:#303133!important;background-color:#f5f7fa!important;border:1px solid #dcdfe6!important;border-radius:4px!important;padding:8px 12px!important;box-shadow:0 2px 12px #0000001a!important}.stash-detail-dialog .el-dialog__body{padding:12px;height:calc(100vh - 200px);display:flex;flex-direction:column}.use-flex-body .el-dialog__body{display:flex;flex-direction:column;height:100%}.stash-detail-dialog .el-dialog__footer{padding:15px 20px;border-top:1px solid #f0f0f0}.stash-detail-content{height:100%;display:flex;flex-direction:column}.stash-header{margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #ebeef5}.stash-info h3{margin:0 0 8px;font-size:18px;font-weight:600;color:#409eff}.stash-description{margin:0;color:#606266;font-size:14px;line-height:1.5}.stash-main-content{flex:1;min-height:0;height:100%}.stash-files-panel{width:300px;flex-shrink:0;background-color:#fafafa;border-radius:8px;border:1px solid #e4e7ed;overflow:hidden;display:flex;flex-direction:column}.stash-diff-panel{flex:1;background-color:#fafafa;border-radius:8px;border:1px solid #e4e7ed;overflow:hidden;min-width:0;display:flex;flex-direction:column}.panel-header{padding:12px 16px;background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;display:flex;justify-content:space-between;align-items:center}.panel-header h4{margin:0;font-size:14px;font-weight:600;color:#303133}.selected-file{font-size:12px;color:#909399;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-list{flex:1;min-height:0;overflow:hidden}.diff-content{flex:1;min-height:0}.diff-text{font-size:12px;line-height:1.6;color:#303133;background-color:#fff;margin:0;padding:16px;white-space:pre-wrap;word-break:break-all;border:none;outline:none;overflow-wrap:break-word}.template-dialog .el-dialog__body,.message-template-dialog .el-dialog__body,.merge-dialog .el-dialog__body{padding:20px}.template-dialog .el-input__inner,.message-template-dialog .el-input__inner,.merge-dialog .el-input__inner{height:40px;line-height:40px}.template-dialog .el-button,.message-template-dialog .el-button{border-radius:4px;font-weight:500}.template-dialog .el-card,.message-template-dialog .el-card{border-radius:4px;overflow:hidden}.template-dialog .el-card__body,.message-template-dialog .el-card__body{padding:12px 15px}.template-dialog .el-empty__image,.message-template-dialog .el-empty__image{width:80px;height:80px}.stash-action-buttons{display:inline-flex;align-items:center;gap:8px}.config-warning-content{display:flex;align-items:flex-start;gap:12px;padding:16px 0}.warning-icon{flex-shrink:0;margin-top:2px}.warning-message{flex:1;margin:0;font-size:14px;line-height:1.6;color:#606266;white-space:pre-line}.config-warning-content+.el-dialog__footer .dialog-footer{display:flex;justify-content:flex-end;gap:8px}.card[data-v-c85ca6b0]{background-color:#fff;border-radius:8px;box-shadow:0 2px 12px #0000001a;margin-bottom:20px;display:flex;flex-direction:column;height:100%;overflow:hidden;position:relative}.log-header[data-v-c85ca6b0]{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid #ebeef5;position:sticky;top:0;background-color:#fff;z-index:100}.fullscreen-mode .log-header[data-v-c85ca6b0]{margin-bottom:10px;box-shadow:0 2px 8px #0000000d}.header-left[data-v-c85ca6b0]{display:flex;align-items:center;gap:16px}.header-left h2[data-v-c85ca6b0]{margin:0;font-size:16px;font-weight:600;color:#303133}.log-actions[data-v-c85ca6b0]{display:flex;align-items:center;gap:12px}.action-button[data-v-c85ca6b0]{transition:all .3s ease;border-radius:8px;border:1px solid transparent;box-shadow:0 2px 4px #0000001a;font-weight:500;padding:8px 16px;display:flex;align-items:center;justify-content:center;gap:8px}.action-button[data-v-c85ca6b0]:hover{transform:translateY(-2px);box-shadow:0 4px 8px #00000026}.filter-button[data-v-c85ca6b0]{background:linear-gradient(135deg,#e6a23c,#f0c78a);color:#fff;min-width:90px}.filter-button.active-filter[data-v-c85ca6b0]{background:linear-gradient(135deg,#d48806,#e6a23c)}.filter-button .filter-badge[data-v-c85ca6b0] .el-badge__content{background-color:#f56c6c;color:#fff;border:2px solid white;box-shadow:0 0 0 1px #e6a23c}.view-mode-button[data-v-c85ca6b0]{background:linear-gradient(135deg,#409eff,#53a8ff);color:#fff}.view-mode-button.active-view[data-v-c85ca6b0]{background:linear-gradient(135deg,#1890ff,#096dd9)}.commit-display-button[data-v-c85ca6b0]{background:linear-gradient(135deg,#67c23a,#85ce61);color:#fff}.commit-display-button.active-commits[data-v-c85ca6b0]{background:linear-gradient(135deg,#52c41a,#389e0d)}.refresh-button[data-v-c85ca6b0]{background:linear-gradient(135deg,#909399,#c0c4cc);color:#fff;min-width:unset;padding:8px;border-radius:50%;width:36px;height:36px}.refresh-button[data-v-c85ca6b0]:hover{background:linear-gradient(135deg,#606266,#909399)}.refresh-button-animated[data-v-c85ca6b0]{animation:spin-c85ca6b0 1s linear}@keyframes spin-c85ca6b0{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.content-area[data-v-c85ca6b0]{flex:1;min-height:100px;height:calc(100% - 52px);display:flex;flex-direction:column;overflow:auto}.content-area-content[data-v-c85ca6b0]{height:100%;display:flex;flex-direction:column}.content-area.with-filter[data-v-c85ca6b0]{height:calc(100% - 112px);padding-top:0}.content-area>div[data-v-c85ca6b0]{flex:1;display:flex;flex-direction:column}.el-table[data-v-c85ca6b0]{--el-table-border-color: #f0f0f0;--el-table-header-bg-color: #f8f9fa;border-radius:8px;overflow:hidden}[data-v-c85ca6b0] .el-table__header-wrapper{background-color:#f8f9fa}[data-v-c85ca6b0] .el-table__header th{background-color:#f8f9fa;color:#606266;font-weight:600;height:36px;font-size:13px}[data-v-c85ca6b0] .el-table__row{transition:all .2s ease}[data-v-c85ca6b0] .el-table__row:hover{background-color:#ecf5ff!important}[data-v-c85ca6b0] .el-table--striped .el-table__row--striped{background-color:#fafafa}[data-v-c85ca6b0] .el-table__cell{padding:4px 0;font-size:13px}.branch-container[data-v-c85ca6b0]{display:flex;flex-wrap:wrap;gap:4px;margin-right:8px;flex-shrink:0}.branch-tag[data-v-c85ca6b0]{margin-right:0;border-radius:3px;transition:all .2s ease;font-size:10px;padding:1px 4px;height:16px;line-height:14px}.branch-tag[data-v-c85ca6b0]:hover{transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.commit-count[data-v-c85ca6b0]{margin-bottom:12px;font-size:14px;color:#606266;text-align:right}.graph-view[data-v-c85ca6b0]{width:100%;flex:1;display:flex;flex-direction:column;overflow-y:auto;padding:0 8px}.graph-container[data-v-c85ca6b0]{width:100%;flex:1;min-height:500px;border:1px solid #ebeef5;border-radius:8px;padding:16px;background-color:#fff;position:relative;box-shadow:0 2px 8px #00000008}.graph-container svg[data-v-c85ca6b0]{transform-origin:top left;transition:transform .2s ease}.graph-controls[data-v-c85ca6b0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;background-color:#f8f9fa;padding:12px;border-radius:8px;border:1px solid #ebeef5}.zoom-controls[data-v-c85ca6b0]{display:flex;gap:12px;align-items:center}.zoom-slider[data-v-c85ca6b0]{width:200px}.scale-info[data-v-c85ca6b0]{font-size:14px;color:#606266;background-color:#fff;padding:4px 10px;border-radius:4px;border:1px solid #ebeef5}.refresh-notification[data-v-c85ca6b0]{background-color:#f0f9eb;color:#67c23a;padding:10px 15px;border-radius:8px;font-size:14px;border-left:4px solid #67c23a;animation:fadeOut-c85ca6b0 2s forwards;position:fixed;top:20px;right:20px;z-index:9999;box-shadow:0 4px 12px #0000001a;max-width:300px;text-align:center}@keyframes fadeOut-c85ca6b0{0%{opacity:0;transform:translateY(-20px)}20%{opacity:1;transform:translateY(0)}80%{opacity:1}to{opacity:0}}.author-name[data-v-c85ca6b0]{cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;max-width:100%;font-weight:500;font-size:12px}.commit-hash[data-v-c85ca6b0]{cursor:pointer;color:#409eff;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-weight:500;border-radius:3px;padding:1px 3px;background-color:#ecf5ff;transition:all .2s ease;font-size:11px}.commit-hash[data-v-c85ca6b0]:hover{text-decoration:none;background-color:#d9ecff;box-shadow:0 2px 4px #0000000d}.commit-detail-container[data-v-c85ca6b0]{display:flex;flex-direction:column;gap:16px;flex:1;min-height:0;overflow:hidden}.commit-info[data-v-c85ca6b0]{padding:12px;background-color:#f5f7fa;border-radius:8px;font-size:14px;display:flex;flex-direction:column;gap:12px;flex-shrink:0;max-height:200px}.commit-info-header[data-v-c85ca6b0]{display:flex;flex-wrap:wrap;gap:12px;align-items:center;background-color:#fff;padding:12px;border-radius:8px;border:1px solid #e4e7ed}.info-item[data-v-c85ca6b0]{display:flex;align-items:center;gap:8px}.item-label[data-v-c85ca6b0]{font-weight:700;color:#606266;white-space:nowrap}.item-value[data-v-c85ca6b0]{color:#333;word-break:break-all}.commit-message-container[data-v-c85ca6b0]{display:flex;flex-direction:column;gap:8px}.message-label[data-v-c85ca6b0]{font-weight:700;color:#606266}[data-v-c85ca6b0] .commit-detail-dialog .el-dialog__body{padding:12px;height:calc(100vh - 200px);display:flex;flex-direction:column;overflow:hidden}.diff-content[data-v-c85ca6b0]::-webkit-scrollbar,.files-list[data-v-c85ca6b0]::-webkit-scrollbar{width:6px;height:6px}.diff-content[data-v-c85ca6b0]::-webkit-scrollbar-thumb,.files-list[data-v-c85ca6b0]::-webkit-scrollbar-thumb{background-color:#9093994d;border-radius:4px}.diff-content[data-v-c85ca6b0]::-webkit-scrollbar-thumb:hover,.files-list[data-v-c85ca6b0]::-webkit-scrollbar-thumb:hover{background-color:#90939980}.diff-content[data-v-c85ca6b0]::-webkit-scrollbar-track,.files-list[data-v-c85ca6b0]::-webkit-scrollbar-track{background-color:transparent}.diff-content[data-v-c85ca6b0],.files-list[data-v-c85ca6b0]{scrollbar-width:thin;scrollbar-color:rgba(144,147,153,.3) transparent}.filter-panel-header[data-v-c85ca6b0]{background-color:#f5f7fa;padding:16px;margin-bottom:16px;border-radius:8px;box-shadow:0 2px 12px #0000000d;transition:all .3s ease;width:100%;position:sticky;top:36px;z-index:99}.fullscreen-mode .filter-panel-header[data-v-c85ca6b0]{position:sticky;top:60px;z-index:9;background-color:#fff;width:100%;border-radius:0;border-bottom:1px solid #ebeef5;box-shadow:0 2px 8px #0000000d}.filter-form[data-v-c85ca6b0]{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}.filter-item[data-v-c85ca6b0]{flex:1;min-width:200px}.filter-actions[data-v-c85ca6b0]{display:flex;align-items:center;gap:10px;white-space:nowrap;flex-shrink:0}.filter-input[data-v-c85ca6b0]{width:100%}.filter-input.date-range[data-v-c85ca6b0]{width:100%;max-width:280px}.compact-label[data-v-c85ca6b0]{color:#909399;font-size:12px;margin-right:6px;white-space:nowrap;font-weight:700;border-right:1px solid #dcdfe6;padding-right:8px}.filter-action-button[data-v-c85ca6b0]{padding:8px 16px;border-radius:6px;transition:all .3s;min-width:70px;font-weight:500}.filter-action-button[data-v-c85ca6b0]:hover{transform:translateY(-2px);box-shadow:0 2px 8px #0000001a}.table-view-container[data-v-c85ca6b0]{height:100%;display:flex;flex-direction:column;flex:1}.log-table[data-v-c85ca6b0]{flex:1;width:100%}.commit-message-cell[data-v-c85ca6b0]{display:flex;align-items:center;min-height:32px}.message-content[data-v-c85ca6b0]{display:flex;align-items:center;gap:8px;width:100%}.message-text[data-v-c85ca6b0]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;line-height:1.3}.copy-message-btn[data-v-c85ca6b0]{opacity:0;transition:opacity .2s ease;padding:4px;min-width:auto;height:auto}.commit-message-cell:hover .copy-message-btn[data-v-c85ca6b0]{opacity:1}.copy-message-btn[data-v-c85ca6b0]:hover{color:#409eff}.fullscreen-mode .table-view-container[data-v-c85ca6b0]{height:calc(100vh - 160px)}.fullscreen-mode .log-table[data-v-c85ca6b0]{height:100%}.load-more-container[data-v-c85ca6b0]{display:flex;flex-direction:column;align-items:center;padding:8px 0;border-top:1px dashed #ebeef5;gap:8px}.pagination-info[data-v-c85ca6b0]{font-size:13px;color:#909399;margin-bottom:4px}.loading-more[data-v-c85ca6b0]{display:flex;align-items:center;color:#909399;font-size:13px;gap:8px}.loading-spinner[data-v-c85ca6b0]{width:16px;height:16px;border:2px solid #dcdfe6;border-top-color:#409eff;border-radius:50%;animation:spinner-c85ca6b0 1s linear infinite}@keyframes spinner-c85ca6b0{to{transform:rotate(360deg)}}.load-more-button[data-v-c85ca6b0]{cursor:pointer;color:#409eff;font-size:13px;padding:6px 16px;border:1px solid #d9ecff;background-color:#ecf5ff;border-radius:4px;transition:all .3s;font-weight:500}.no-more-data[data-v-c85ca6b0]{color:#909399;font-size:13px;font-style:italic;display:flex;flex-direction:column;align-items:center}.total-loaded[data-v-c85ca6b0]{font-size:12px;margin-top:4px;color:#c0c4cc}@keyframes fadeIn-c85ca6b0{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.context-menu-item[data-v-c85ca6b0]{padding:10px 16px;cursor:pointer;font-size:14px;display:flex;align-items:center;transition:all .2s ease;color:#606266}.context-menu-item[data-v-c85ca6b0]:hover{background-color:#f5f7fa;color:#409eff}.context-menu-item i[data-v-c85ca6b0]{margin-right:10px;font-size:16px}[data-v-c85ca6b0] .el-table--border .el-table__inner-wrapper tr{border:none!important}[data-v-c85ca6b0] .el-table--border .el-table__inner-wrapper td{border-right:none!important;border-bottom:none!important}[data-v-c85ca6b0] .el-table--border .el-table__inner-wrapper th{border-right:none!important}[data-v-c85ca6b0] .el-table--border,[data-v-c85ca6b0] .el-table--border .el-table__inner-wrapper{border:none!important}[data-v-c85ca6b0] .el-table--border:after,[data-v-c85ca6b0] .el-table--border:before,[data-v-c85ca6b0] .el-table__inner-wrapper:after,[data-v-c85ca6b0] .el-table__inner-wrapper:before{display:none!important}[data-v-c85ca6b0] .el-table tr{background-color:transparent!important}[data-v-c85ca6b0] .el-table--striped .el-table__body tr.el-table__row--striped td{background-color:#00000005!important}.fullscreen-mode[data-v-c85ca6b0]{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999;margin:0;border-radius:0;border:none;box-shadow:none;background-color:#fff;display:flex;flex-direction:column;overflow:auto}.fullscreen-mode .log-header[data-v-c85ca6b0]{position:sticky;top:0;z-index:10;background-color:#fff;padding:16px;margin-bottom:10px;width:100%}.fullscreen-mode .filter-panel-header[data-v-c85ca6b0]{position:sticky;top:60px;z-index:9;background-color:#fff;width:100%}.fullscreen-mode .content-area[data-v-c85ca6b0]{height:100vh;max-height:none;flex:1;overflow:auto}.fullscreen-mode .el-table[data-v-c85ca6b0]{height:calc(100vh - 60px)}.fullscreen-mode .graph-view[data-v-c85ca6b0]{height:calc(100vh - 140px)}.fullscreen-button[data-v-c85ca6b0]{background:linear-gradient(135deg,#909399,#c0c4cc);color:#fff}.fullscreen-button.active-fullscreen[data-v-c85ca6b0]{background:linear-gradient(135deg,#606266,#909399)}.context-menu[data-v-c85ca6b0]{position:fixed;background:#fff;border:1px solid #dcdfe6;border-radius:8px;box-shadow:0 4px 16px #0000001a;padding:6px 0;z-index:3000;min-width:200px;animation:fadeIn-c85ca6b0 .15s ease-out}.fullscreen-context-menu[data-v-c85ca6b0]{z-index:999999}.icon-only-button[data-v-c85ca6b0]{min-width:unset;width:36px;height:36px;padding:8px;border-radius:8px;display:flex;align-items:center;justify-content:center}.icon-only-button .el-icon[data-v-c85ca6b0]{margin-right:0}.el-table .el-table__cell .cell{word-break:break-all}.diff-header{font-weight:700;background-color:#e6f1fc;padding:10px 16px;margin:12px 0;border-radius:6px;color:#0366d6;border-bottom:1px solid #c8e1ff}.diff-old-file,.diff-new-file{color:#586069;padding:4px 8px;font-family:JetBrains Mono,Fira Code,Consolas,monospace}.diff-old-file{color:#cb2431}.diff-new-file{color:#22863a}.diff-hunk-header{color:#6f42c1;background-color:#f1f8ff;padding:4px 8px;margin:8px 0;border-radius:4px;font-family:JetBrains Mono,Fira Code,Consolas,monospace}.diff-added{background-color:#e6ffed;color:#22863a;padding:2px 8px;border-left:4px solid #22863a;font-family:JetBrains Mono,Fira Code,Consolas,monospace;display:block;margin:2px 0}.diff-removed{background-color:#ffeef0;color:#cb2431;padding:2px 8px;border-left:4px solid #cb2431;font-family:JetBrains Mono,Fira Code,Consolas,monospace;display:block;margin:2px 0}.diff-context{color:#444;padding:2px 8px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;display:block;margin:2px 0;background-color:#fafbfc}.load-more-button:hover{background-color:#d9ecff;box-shadow:0 2px 6px #409eff26;transform:translateY(-1px)}.command-history-button[data-v-123bc700]{transition:all .3s ease}.command-history-button[data-v-123bc700]:hover{transform:translateY(-2px);box-shadow:0 4px 12px #409eff4d}.command-history-dialog[data-v-123bc700]{border-radius:8px;z-index:9999!important}[data-v-123bc700] .command-history-dialog .el-overlay{z-index:9998!important}[data-v-123bc700] .command-history-dialog .el-dialog{z-index:9999!important}.dialog-toolbar[data-v-123bc700]{padding:12px 20px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.socket-status[data-v-123bc700]{font-size:12px}.clear-button[data-v-123bc700]{transition:all .3s}.clear-button[data-v-123bc700]:hover{transform:rotate(12deg);background-color:#ff4d4f;border-color:#ff4d4f}.copy-all-button[data-v-123bc700]{transition:all .3s;position:relative}.copy-all-button[data-v-123bc700]:hover{transform:translateY(-2px);background-color:#409eff;border-color:#409eff;box-shadow:0 2px 6px #409eff4d}.copy-commands-button[data-v-123bc700]{transition:all .3s;position:relative}.copy-commands-button[data-v-123bc700]:hover{transform:translateY(-2px);background-color:#67c23a;border-color:#67c23a;box-shadow:0 2px 6px #67c23a4d}.copy-commands-button[data-v-123bc700]:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:12px;height:12px;border-radius:50%;background-color:#ffffff4d;opacity:0;transition:opacity .3s}.copy-all-button[data-v-123bc700]:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:12px;height:12px;border-radius:50%;background-color:#ffffff4d;opacity:0;transition:opacity .3s}.copy-commands-button[data-v-123bc700]:active:after,.copy-all-button[data-v-123bc700]:active:after{opacity:1;animation:ripple-123bc700 .6s ease-out}@keyframes ripple-123bc700{0%{width:0;height:0;opacity:.5}to{width:30px;height:30px;opacity:0}}.dialog-content[data-v-123bc700]{padding:0 20px 20px}.loading-state[data-v-123bc700]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;min-height:100px}.history-scroll[data-v-123bc700]{overflow-y:auto;max-height:calc(80vh - 160px)}.loading-icon[data-v-123bc700]{font-size:36px;color:#409eff;margin-bottom:10px}.loading-text[data-v-123bc700]{font-size:14px;color:#606266}.history-list[data-v-123bc700]{display:flex;flex-direction:column;gap:8px}.history-item[data-v-123bc700]{border:1px solid #ebeef5;border-radius:4px;transition:all .2s;background-color:#f8f9fa;overflow:hidden}.history-item[data-v-123bc700]:hover{box-shadow:0 2px 12px #0000001a}.history-item.is-error[data-v-123bc700]{border-left:3px solid #f56c6c}.item-header[data-v-123bc700]{padding:10px 12px;display:flex;justify-content:space-between;align-items:center;cursor:pointer;transition:background-color .2s}.item-header[data-v-123bc700]:hover{background-color:#f0f2f5}.command-info[data-v-123bc700]{flex:1;min-width:0;overflow:hidden}.command-text[data-v-123bc700]{display:flex;align-items:center;gap:8px;margin-bottom:4px}.command-text code[data-v-123bc700]{font-family:Consolas,Courier New,monospace;font-size:13px;color:#303133;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.command-meta[data-v-123bc700]{display:flex;align-items:center;gap:16px;font-size:12px;color:#909399}.timestamp[data-v-123bc700],.duration[data-v-123bc700]{white-space:nowrap}.item-actions[data-v-123bc700]{display:flex;align-items:center;gap:6px;margin-left:8px}.item-details[data-v-123bc700]{padding:10px 12px;border-top:1px solid #ebeef5;background-color:#fff;display:flex;flex-direction:column;gap:12px}.output-section[data-v-123bc700]{display:flex;flex-direction:column;gap:6px}.output-section.error[data-v-123bc700]{border-left:3px solid #f56c6c;padding-left:8px}.output-section[data-v-123bc700]:not(.error){border-left:3px solid #67c23a;padding-left:8px}.output-header[data-v-123bc700]{display:flex;justify-content:space-between;align-items:center}.output-header h4[data-v-123bc700]{margin:0;font-size:14px;font-weight:500;color:#606266}.output-content[data-v-123bc700]{background-color:#f8f9fa;padding:10px;border-radius:4px;font-family:Consolas,Courier New,monospace;font-size:12px;white-space:pre-wrap;word-break:break-all;margin:0;max-height:300px;overflow-y:auto;border:1px solid #ebeef5}.status-tag[data-v-123bc700]{flex-shrink:0}.truncation-notice[data-v-123bc700]{margin-top:6px}.output-content[data-v-123bc700]::-webkit-scrollbar{width:6px;height:6px}.output-content[data-v-123bc700]::-webkit-scrollbar-thumb{background-color:#c0c4cc;border-radius:3px}.output-content[data-v-123bc700]::-webkit-scrollbar-track{background-color:#f5f7fa}.command-history-dialog{z-index:99999!important}.el-overlay{z-index:99998!important}.el-dialog{z-index:99999!important}.el-overlay.is-message-box{z-index:99998!important}.el-dialog.command-history-dialog{z-index:99999!important}body{font-family:Arial,sans-serif;margin:0;padding:0;background-color:#f5f5f5;overflow:hidden;height:100vh}.main-container{position:fixed;top:60px;bottom:60px;left:0;right:0;padding:10px;overflow:hidden;z-index:1001}.grid-layout{display:grid;grid-template-columns:2fr 4px 3fr;grid-template-rows:1fr 4px 1fr;grid-template-areas:"git-status v-resizer commit-form" "h-resizer h-resizer h-resizer" "log-list log-list log-list";gap:6px;height:100%}.git-status-panel{grid-area:git-status;overflow:hidden;max-height:100%;padding:0}.commit-form-panel{grid-area:commit-form;overflow:hidden;max-height:100%;padding:0}.log-list-panel{grid-area:log-list;overflow:hidden;max-height:100%;padding:0}.card{background-color:#fff;border-radius:8px;box-shadow:0 4px 12px #0000000d;border:1px solid rgba(0,0,0,.03);height:100%;overflow:hidden;display:flex;flex-direction:column}.main-header{background-color:#24292e;color:#fff;padding:0 20px;display:flex;justify-content:space-between;align-items:center;position:fixed;top:0;left:0;right:0;z-index:1000;box-shadow:0 2px 10px #0003;height:60px;box-sizing:border-box}.header-left{display:flex;align-items:center;gap:10px;min-width:220px;flex:1}.logo{height:32px;width:auto}h1{margin:0;font-size:24px}.header-info{display:flex;align-items:center;gap:10px;justify-content:flex-end}#user-info{display:flex;align-items:center;background-color:#282c34b3;padding:6px 10px;border-radius:4px;border:1px solid rgba(255,255,255,.15);margin-right:10px;flex-shrink:0}.directory-selector{display:flex;flex-direction:row;justify-content:space-between;align-items:center;background-color:#282c34b3;border-radius:4px;padding:6px 10px;border:1px solid rgba(255,255,255,.15);box-shadow:0 2px 8px #00000026;flex-shrink:0}.command-history-section{display:flex;align-items:center;margin-left:12px}.directory-display{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.directory-path{font-family:monospace;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px;font-weight:500;background-color:#0003;padding:4px 8px;border-radius:3px;border-left:3px solid #409EFF;flex:1;min-width:0;max-width:500px}.branch-label,.user-label,.user-name{font-weight:700;margin-right:5px}.user-email{color:#e0e0e0;font-size:12px}.branch-name{font-family:monospace}.status-box{background-color:#f6f8fa;border:1px solid #e1e4e8;border-radius:3px;padding:15px;white-space:pre-wrap;font-family:monospace;overflow-y:auto}.tips{margin-top:20px;padding:15px;background-color:#f5f7fa;border-radius:5px;border-left:4px solid #409eff}.tips h3{margin-top:0;font-size:16px;margin-bottom:10px}.code-block{background-color:#2d2d2d;color:#f8f8f2;font-family:monospace;padding:10px 15px;border-radius:4px;margin-bottom:10px}.loading-container{display:flex;justify-content:center;align-items:center;height:100%}.loading-card{width:300px;text-align:center;padding:30px}.loading-spinner{font-size:48px;margin-bottom:20px;color:#409eff}.loading-text{font-size:18px;color:#606266}.user-settings-btn{margin-left:10px}.user-warning{color:#e6a23c;font-weight:700}.main-footer{background-color:#24292e;color:#fff;padding:10px 20px;display:flex;justify-content:space-between;align-items:center;position:fixed;bottom:0;left:0;right:0;z-index:100;box-shadow:0 -2px 10px #0000001a;height:60px;box-sizing:border-box}.logo[data-v-882efda6]{will-change:filter;transition:filter .3s}.logo[data-v-882efda6]:hover{filter:drop-shadow(0 0 2em #42b883aa)}.branch-info[data-v-882efda6]{display:flex;align-items:center;gap:10px}.branch-wrapper[data-v-882efda6]{display:flex;align-items:center;background-color:#ffffff26;border-radius:4px;padding:8px 12px;box-shadow:0 2px 4px #0003;transition:all .3s}.branch-wrapper[data-v-882efda6]:hover{background-color:#fff3}.branch-label[data-v-882efda6]{font-weight:700;margin-right:10px;color:#fff}.branch-select[data-v-882efda6]{width:200px;margin-right:10px}.create-branch-btn[data-v-882efda6]{background-color:#2ea44f;border-color:#2ea44f;transition:all .3s;box-shadow:0 2px 4px #0003}.create-branch-btn[data-v-882efda6]:hover{background-color:#3bbc63;border-color:#3bbc63;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.footer-right[data-v-882efda6]{display:flex;align-items:center;gap:10px;color:#ffffffe6;font-size:13px;background-color:#ffffff1a;padding:8px 12px;border-radius:4px;box-shadow:0 2px 4px #0003}.repo-url-label[data-v-882efda6]{font-weight:700;margin-right:8px;color:#fff}.repo-url[data-v-882efda6]{color:#e6f7ff;font-family:monospace;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.copy-url-btn[data-v-882efda6]{transition:all .3s;background-color:#1890ff;border-color:#1890ff;box-shadow:0 2px 4px #0003}.copy-url-btn[data-v-882efda6]:hover{background-color:#40a9ff;border-color:#40a9ff;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.vertical-resizer[data-v-882efda6]{grid-area:v-resizer;background-color:#e8e8e8;cursor:col-resize;transition:background-color .2s,box-shadow .2s;position:relative;z-index:10;border-radius:4px;box-shadow:0 0 2px #0000001a}.vertical-resizer[data-v-882efda6]:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:2px;height:40px;background-color:#a0a0a0;border-radius:2px;transition:background-color .2s,width .2s,box-shadow .2s}.vertical-resizer[data-v-882efda6]:hover,.vertical-resizer.active[data-v-882efda6]{background-color:#d0d0d0;box-shadow:0 0 4px #0003}.vertical-resizer[data-v-882efda6]:hover:after,.vertical-resizer.active[data-v-882efda6]:after{background-color:#409eff;width:3px;box-shadow:0 0 6px #409eff99}.horizontal-resizer[data-v-882efda6]{grid-area:h-resizer;background-color:#e8e8e8;cursor:row-resize;transition:background-color .2s,box-shadow .2s;position:relative;z-index:10;border-radius:4px;box-shadow:0 0 2px #0000001a}.horizontal-resizer[data-v-882efda6]:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:40px;height:2px;background-color:#a0a0a0;border-radius:2px;transition:background-color .2s,height .2s,box-shadow .2s}.horizontal-resizer[data-v-882efda6]:hover,.horizontal-resizer.active[data-v-882efda6]{background-color:#d0d0d0;box-shadow:0 0 4px #0003}.horizontal-resizer[data-v-882efda6]:hover:after,.horizontal-resizer.active[data-v-882efda6]:after{background-color:#409eff;height:3px;box-shadow:0 0 6px #409eff99}.vertical-resizer-bottom[data-v-882efda6]{grid-area:v-resizer-bottom;background-color:#e8e8e8;cursor:col-resize;transition:background-color .2s,box-shadow .2s;position:relative;z-index:10;border-radius:4px;box-shadow:0 0 2px #0000001a}.vertical-resizer-bottom[data-v-882efda6]:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:2px;height:40px;background-color:#a0a0a0;border-radius:2px;transition:background-color .2s,width .2s,box-shadow .2s}.vertical-resizer-bottom[data-v-882efda6]:hover,.vertical-resizer-bottom.active[data-v-882efda6]{background-color:#d0d0d0;box-shadow:0 0 4px #0003}.vertical-resizer-bottom[data-v-882efda6]:hover:after,.vertical-resizer-bottom.active[data-v-882efda6]:after{background-color:#409eff;width:3px;box-shadow:0 0 6px #409eff99}.directory-selector[data-v-882efda6]{display:flex;flex-direction:row;justify-content:space-between;align-items:center;background-color:#282c34b3;border-radius:4px;padding:8px 12px;margin-bottom:8px;border:1px solid rgba(255,255,255,.2);box-shadow:0 2px 8px #0003}.directory-display[data-v-882efda6]{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.directory-path[data-v-882efda6]{font-family:monospace;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px;font-weight:500;background-color:#0003;padding:4px 8px;border-radius:3px;border-left:3px solid #409EFF;flex:1;min-width:0;max-width:350px}.directory-actions[data-v-882efda6]{display:flex;gap:4px;margin-left:8px}.dir-button[data-v-882efda6]{padding:4px;height:24px;width:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#409eff,#53a8ff);color:#fff;border:none;box-shadow:0 2px 4px #0003;transition:all .3s}.dir-button[data-v-882efda6]:hover{transform:translateY(-1px);box-shadow:0 3px 6px #0000004d;background:linear-gradient(135deg,#53a8ff,#66b1ff)}.dir-button.el-button--info[data-v-882efda6]{background:linear-gradient(135deg,#909399,#a6a9ad)}.dir-button.el-button--info[data-v-882efda6]:hover{background:linear-gradient(135deg,#a6a9ad,#c0c4cc)}.directory-icon[data-v-882efda6]{display:flex;justify-content:center;align-items:center;width:24px;height:24px;border-radius:3px;background-color:#409eff1a;color:#409eff;margin-right:2px}.directory-input-group[data-v-882efda6]{display:flex;align-items:center;gap:8px;width:100%}.recent-directories[data-v-882efda6]{display:flex;flex-wrap:wrap;gap:4px}.recent-dir-tag[data-v-882efda6]{cursor:pointer;background-color:#e6f7ff;border:1px solid #91d5ff;padding:4px 8px;border-radius:4px}.directory-browser[data-v-882efda6]{width:100%;height:400px;overflow:auto}.current-path[data-v-882efda6]{padding:10px;background-color:#f5f7fa;border-radius:4px;margin-bottom:10px;border:1px solid #e4e7ed;display:flex;align-items:center;width:100%;box-sizing:border-box}.path-label[data-v-882efda6]{font-weight:700;margin-right:5px;white-space:nowrap;flex-shrink:0}.path-value[data-v-882efda6]{font-family:monospace;word-break:break-all;flex:1;min-width:0;background-color:#fff;padding:5px 8px;border-radius:3px;border:1px solid #dcdfe6;box-shadow:inset 0 1px 2px #0000000d;width:100%}.directory-list[data-v-882efda6]{list-style:none!important;padding:0;margin:0;border:1px solid #e4e7ed;border-radius:4px;max-height:300px;overflow-y:auto;background-color:#fff;display:flex;flex-direction:column;width:100%;box-sizing:border-box}.directory-item[data-v-882efda6]{padding:10px 12px;border-bottom:1px solid #ebeef5;cursor:pointer;display:flex;align-items:center;transition:all .2s ease;position:relative;width:100%;box-sizing:border-box;list-style:none!important}.directory-item[data-v-882efda6]:hover{background-color:#ecf5ff}.directory-item[data-v-882efda6]:last-child{border-bottom:none}.parent-dir[data-v-882efda6]{background-color:#f5f7fa;font-weight:500}.dir-icon[data-v-882efda6]{margin-right:12px;display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0}.dir-name[data-v-882efda6]{display:flex;align-items:center;font-size:14px;line-height:1.4}.folder-icon[data-v-882efda6]{filter:drop-shadow(0 1px 2px rgba(0,0,0,.1));transition:all .2s ease}.directory-item:hover .folder-icon[data-v-882efda6]{transform:scale(1.1)}[data-v-882efda6] .directory-browser-dialog{border-radius:8px;overflow:hidden}[data-v-882efda6] .directory-browser-dialog .el-message-box__header{background-color:#f5f7fa;padding:15px 20px;border-bottom:1px solid #e4e7ed;position:relative}[data-v-882efda6] .directory-browser-dialog .el-message-box__title{color:#409eff;font-weight:500;font-size:18px}[data-v-882efda6] .directory-browser-dialog .el-message-box__headerbtn{position:absolute;top:15px;right:15px;width:24px;height:24px;border-radius:50%;background-color:#0000000d;transition:all .3s;display:flex;align-items:center;justify-content:center}[data-v-882efda6] .directory-browser-dialog .el-message-box__headerbtn:hover{background-color:#0000001a;transform:rotate(90deg)}[data-v-882efda6] .directory-browser-dialog .el-message-box__headerbtn .el-message-box__close{color:#606266;font-weight:700;font-size:16px}[data-v-882efda6] .directory-browser-dialog .el-message-box__headerbtn:hover .el-message-box__close{color:#409eff}[data-v-882efda6] .directory-browser-dialog .el-message-box__content{padding:20px}.el-message-box__message{width:100%}.directory-browser-dialog{border-radius:8px;overflow:hidden}.directory-browser-dialog .el-message-box__header{background-color:#f5f7fa;padding:15px 20px;border-bottom:1px solid #e4e7ed;position:relative}.directory-browser-dialog .el-message-box__title{color:#409eff;font-weight:500;font-size:18px}.directory-browser-dialog .el-message-box__headerbtn{position:absolute;top:15px;right:15px;width:24px;height:24px;border-radius:50%;background-color:#0000000d;transition:all .3s;display:flex;align-items:center;justify-content:center}.directory-browser-dialog .el-message-box__headerbtn:hover{background-color:#0000001a;transform:rotate(90deg)}.directory-browser-dialog .el-message-box__headerbtn .el-message-box__close{color:#606266;font-weight:700;font-size:16px}.directory-browser-dialog .el-message-box__headerbtn:hover .el-message-box__close{color:#409eff}.directory-browser-dialog .el-message-box__content{padding:20px}.directory-browser-dialog .el-message-box__btns{padding:10px 20px 15px;border-top:1px solid #e4e7ed}.directory-browser{width:100%;height:400px;overflow:auto}.current-path{padding:10px;background-color:#f5f7fa;border-radius:4px;margin-bottom:10px;border:1px solid #e4e7ed;display:flex;align-items:center;width:100%;box-sizing:border-box}.path-label{font-weight:700;margin-right:5px;white-space:nowrap;flex-shrink:0}.path-value{font-family:monospace;word-break:break-all;flex:1;min-width:0;background-color:#fff;padding:5px 8px;border-radius:3px;border:1px solid #dcdfe6;box-shadow:inset 0 1px 2px #0000000d;width:100%}.directory-list{list-style:none!important;padding:0;margin:0;border:1px solid #e4e7ed;border-radius:4px;max-height:300px;overflow-y:auto;background-color:#fff;display:flex;flex-direction:column;width:100%;box-sizing:border-box}.directory-item{padding:10px 12px;border-bottom:1px solid #ebeef5;cursor:pointer;display:flex;align-items:center;transition:all .2s ease;position:relative;width:100%;box-sizing:border-box;list-style:none!important}.directory-item:hover{background-color:#ecf5ff}.directory-item:last-child{border-bottom:none}.parent-dir{background-color:#f5f7fa;font-weight:500}.dir-icon{margin-right:12px;display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0}.dir-name{display:flex;align-items:center;font-size:14px;line-height:1.4}.folder-icon{filter:drop-shadow(0 1px 2px rgba(0,0,0,.1));transition:all .2s ease}.directory-item:hover .folder-icon{transform:scale(1.1)}/*! tailwindcss v4.1.13 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-800:oklch(27.8% .033 256.848);--color-white:#fff;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--shadow-sm:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--shadow-md:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--ease-in-out:cubic-bezier(.4,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.fixed{position:fixed}.relative{position:relative}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.flex{display:flex}.hidden{display:none}.table{display:table}.table-column{display:table-column}.flex-shrink{flex-shrink:1}.flex-grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.border{border-style:var(--tw-border-style);border-width:1px}.uppercase{text-transform:uppercase}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-page);color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;line-height:var(--line-height-normal);transition:var(--transition-all)}.el-button+.el-button{margin-left:0}.el-button{transition:var(--transition-all)}.el-card{border:1px solid var(--border-color);box-shadow:var(--shadow-base);transition:var(--transition-all)}.el-card:hover{box-shadow:var(--shadow-hover)}.el-input__wrapper{border:1px solid var(--border-color);transition:var(--transition-border)}.el-input__wrapper:hover{border-color:var(--border-hover)}.el-input__wrapper.is-focus{border-color:var(--border-focus);box-shadow:var(--shadow-focus)}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}:root{--color-primary: #409eff;--color-primary-light: #5a67d8;--color-primary-dark: #337ecc;--color-primary-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);--color-primary-gradient-hover: linear-gradient(135deg, #5a67d8 0%, #6b46c1 100%);--color-success: #67c23a;--color-success-light: #10b981;--color-warning: #e6a23c;--color-warning-light: #f59e0b;--color-danger: #f56c6c;--color-danger-light: #ef4444;--color-danger-dark: #dc2626;--color-info: #909399;--color-info-light: #8b5cf6;--color-white: #ffffff;--color-black: #000000;--color-gray-50: #f9fafb;--color-gray-100: #f3f4f6;--color-gray-200: #e5e7eb;--color-gray-300: #d1d5db;--color-gray-400: #9ca3af;--color-gray-500: #6b7280;--color-gray-600: #4b5563;--color-gray-700: #374151;--color-gray-800: #1f2937;--color-gray-900: #111827;--git-status-added: #10b981;--git-status-modified: #f59e0b;--git-status-deleted: #ef4444;--git-status-untracked: #8b5cf6;--git-status-locked: #dc2626;--git-diff-header-bg: #f1f8ff;--git-diff-header-color: #0366d6;--git-diff-header-border: #c8e1ff;--git-diff-added-bg: #e6ffed;--git-diff-added-color: #22863a;--git-diff-added-border: #22863a;--git-diff-removed-bg: #ffeef0;--git-diff-removed-color: #cb2431;--git-diff-removed-border: #cb2431;--git-diff-hunk-bg: #f1f8ff;--git-diff-hunk-color: #6f42c1;--git-diff-context-color: #24292f;--git-diff-context-bg: #ffffff;--btn-primary-bg: var(--color-primary);--btn-primary-hover-bg: var(--color-primary-light);--btn-primary-active-bg: var(--color-primary-dark);--btn-primary-color: var(--color-white);--btn-success-bg: var(--color-success);--btn-success-hover-bg: #85ce61;--btn-success-active-bg: #5daf34;--btn-success-color: var(--color-white);--btn-warning-bg: var(--color-warning);--btn-warning-hover-bg: #ebb563;--btn-warning-active-bg: #cf9236;--btn-warning-color: var(--color-white);--btn-danger-bg: var(--color-danger);--btn-danger-hover-bg: #f78989;--btn-danger-active-bg: #dd6161;--btn-danger-color: var(--color-white);--btn-info-bg: var(--color-info);--btn-info-hover-bg: #a6a9ad;--btn-info-active-bg: #82848a;--btn-info-color: var(--color-white);--btn-text-color: var(--color-primary);--btn-text-hover-color: var(--color-primary-light);--btn-text-active-color: var(--color-primary-dark);--bg-page: #f5f5f5;--bg-page-dark: #2d2d2d;--bg-container: var(--color-white);--bg-container-hover: #f8fafc;--bg-container-dark: #24292e;--bg-overlay: rgba(40, 44, 52, .7);--bg-overlay-light: rgba(0, 0, 0, .2);--bg-code: #f6f8fa;--bg-code-dark: #2d2d2d;--bg-code-line: #fafbfc;--border-color: rgba(0, 0, 0, .06);--border-color-light: rgba(0, 0, 0, .03);--border-color-medium: #e1e4e8;--border-color-dark: rgba(255, 255, 255, .15);--border-hover: rgba(102, 126, 234, .15);--border-focus: var(--color-primary);--border-active: var(--color-primary-dark);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .04);--shadow-base: 0 1px 4px rgba(0, 0, 0, .04);--shadow-md: 0 2px 8px rgba(0, 0, 0, .08);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .08);--shadow-xl: 0 8px 24px rgba(0, 0, 0, .12);--shadow-hover: 0 4px 12px rgba(0, 0, 0, .08);--shadow-active: 0 2px 6px rgba(0, 0, 0, .12);--shadow-focus: 0 0 0 2px rgba(64, 158, 255, .2);--shadow-dark: 0 2px 10px rgba(0, 0, 0, .2);--shadow-dark-lg: 0 4px 16px rgba(0, 0, 0, .3);--text-primary: #1f2937;--text-primary-dark: #f8f8f2;--text-secondary: #606266;--text-secondary-dark: #e0e0e0;--text-tertiary: #9ca3af;--text-tertiary-dark: rgba(255, 255, 255, .6);--text-placeholder: #c0c4cc;--text-placeholder-dark: rgba(255, 255, 255, .4);--text-link: var(--color-primary);--text-link-hover: var(--color-primary-light);--text-link-active: var(--color-primary-dark);--text-success: var(--color-success);--text-warning: var(--color-warning);--text-danger: var(--color-danger);--text-info: var(--color-info);--radius-xs: 2px;--radius-sm: 3px;--radius-base: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-full: 50%;--spacing-xs: 2px;--spacing-sm: 4px;--spacing-base: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 20px;--spacing-2xl: 24px;--spacing-3xl: 32px;--font-size-xs: 10px;--font-size-sm: 12px;--font-size-base: 13px;--font-size-md: 14px;--font-size-lg: 16px;--font-size-xl: 18px;--font-size-2xl: 20px;--font-size-3xl: 24px;--line-height-tight: 1.2;--line-height-normal: 1.4;--line-height-relaxed: 1.6;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--transition-fast: .1s;--transition-base: .2s;--transition-slow: .3s;--ease-in: ease-in;--ease-out: ease-out;--ease-in-out: ease-in-out;--ease-custom: cubic-bezier(.4, 0, .2, 1);--transition-all: all var(--transition-base) var(--ease-custom);--transition-color: color var(--transition-base) var(--ease-custom);--transition-bg: background-color var(--transition-base) var(--ease-custom);--transition-border: border-color var(--transition-base) var(--ease-custom);--transition-shadow: box-shadow var(--transition-base) var(--ease-custom);--transition-transform: transform var(--transition-base) var(--ease-custom);--z-dropdown: 1000;--z-sticky: 1020;--z-fixed: 1030;--z-modal-backdrop: 1040;--z-modal: 1050;--z-popover: 1060;--z-tooltip: 1070;--z-toast: 1080;--scrollbar-track: transparent;--scrollbar-thumb: rgba(144, 147, 153, .3);--scrollbar-thumb-hover: rgba(144, 147, 153, .5);--scrollbar-width: 6px;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Monaco, Inconsolata, "Roboto Mono", "Droid Sans Mono", Consolas, "Courier New", monospace}[data-theme=dark]{--bg-page: var(--bg-page-dark);--bg-container: var(--bg-container-dark);--text-primary: var(--text-primary-dark);--text-secondary: var(--text-secondary-dark);--text-tertiary: var(--text-tertiary-dark);--text-placeholder: var(--text-placeholder-dark);--border-color: var(--border-color-dark);--border-color-light: rgba(255, 255, 255, .08);--border-color-medium: rgba(255, 255, 255, .12);--shadow-base: var(--shadow-dark);--shadow-lg: var(--shadow-dark-lg);--git-diff-context-bg: #24292e;--git-diff-context-color: #f8f8f2}.bg-gradient-primary{background:var(--color-primary-gradient)}.bg-gradient-primary-hover{background:var(--color-primary-gradient-hover)}.text-git-added{color:var(--git-status-added)}.text-git-modified{color:var(--git-status-modified)}.text-git-deleted{color:var(--git-status-deleted)}.text-git-untracked{color:var(--git-status-untracked)}.text-git-locked{color:var(--git-status-locked)}.bg-git-added{background-color:var(--git-status-added)}.bg-git-modified{background-color:var(--git-status-modified)}.bg-git-deleted{background-color:var(--git-status-deleted)}.bg-git-untracked{background-color:var(--git-status-untracked)}.bg-git-locked{background-color:var(--git-status-locked)}.shadow-sm{box-shadow:var(--shadow-sm)}.shadow-base{box-shadow:var(--shadow-base)}.shadow-md{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.shadow-xl{box-shadow:var(--shadow-xl)}.transition-all{transition:var(--transition-all)}.transition-color{transition:var(--transition-color)}.transition-bg{transition:var(--transition-bg)}.transition-border{transition:var(--transition-border)}.transition-shadow{transition:var(--transition-shadow)}.transition-transform{transition:var(--transition-transform)}.diff-header{background-color:var(--git-diff-header-bg);padding:var(--spacing-base) var(--spacing-md);margin:var(--spacing-base) 0;border-radius:var(--radius-md);color:var(--git-diff-header-color);border:1px solid var(--git-diff-header-border);border-left:4px solid var(--git-diff-header-color);font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:var(--line-height-normal);font-weight:var(--font-weight-semibold);box-shadow:0 1px 3px #0366d61a;transition:var(--transition-all)}.diff-old-file,.diff-new-file{padding:5px var(--spacing-base);font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:var(--line-height-normal);margin:1px 0;border-radius:var(--radius-sm);display:block;font-weight:var(--font-weight-semibold);transition:var(--transition-all)}.diff-old-file{color:var(--git-diff-removed-color);background-color:var(--git-diff-removed-bg);border-left:4px solid var(--git-diff-removed-border)}.diff-new-file{color:var(--git-diff-added-color);background-color:var(--git-diff-added-bg);border-left:4px solid var(--git-diff-added-border)}.diff-hunk-header{color:var(--git-diff-hunk-color);background-color:var(--git-diff-hunk-bg);padding:var(--spacing-sm) var(--spacing-base);margin:var(--spacing-base) 0;border-radius:var(--radius-base);font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:var(--line-height-normal);transition:var(--transition-all)}.diff-added{background-color:var(--git-diff-added-bg);color:var(--git-diff-added-color);padding:2px var(--spacing-base);border-left:4px solid var(--git-diff-added-border);font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:var(--line-height-normal);display:block;margin:1px 0;transition:var(--transition-all)}.diff-removed{background-color:var(--git-diff-removed-bg);color:var(--git-diff-removed-color);padding:2px var(--spacing-base);border-left:4px solid var(--git-diff-removed-border);font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:var(--line-height-normal);display:block;margin:1px 0;transition:var(--transition-all)}.diff-context{color:var(--git-diff-context-color);padding:2px var(--spacing-base);font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:var(--line-height-normal);display:block;margin:1px 0;background-color:var(--git-diff-context-bg);transition:var(--transition-all)}.diff-formatted,.diff-content{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}.diff-formatted::-webkit-scrollbar,.diff-content::-webkit-scrollbar{width:var(--scrollbar-width);height:var(--scrollbar-width)}.diff-formatted::-webkit-scrollbar-thumb,.diff-content::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--radius-base);transition:var(--transition-bg)}.diff-formatted::-webkit-scrollbar-thumb:hover,.diff-content::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover)}.diff-formatted::-webkit-scrollbar-track,.diff-content::-webkit-scrollbar-track{background:var(--scrollbar-track)}.el-dialog.use-flex-body{display:flex;flex-direction:column;height:100%}.el-dialog.use-flex-body .el-dialog__body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding:8px 16px;box-sizing:border-box}.dialog-content-scroll{flex:1;min-height:0;overflow:auto}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import{d as ms,r as d,c as q,E as o,o as dt,a as vs,l as Xs,b as xe,w as je,e as S,f as v,n as ft,g as Y,h as e,t as A,i as t,u as n,j as Zs,k as s,m as Z,p as zt,F as Fe,q as Ae,s as ke,v as Ye,x as he,y as eo,z as x,A as st,B as Yt,C as to,D as rs,G as Vt,H as Xe,I as Rt,J as St,K as jt,L as bt,M as gs,N as Kt,O as Qt,P as hs,Q as ys,R as _s,S as ws,T as so,U as Xt,V as Lt,W as ks,X as cs,Y as oo,Z as He,_ as Zt,$ as es,a0 as Tt,a1 as $s,a2 as Gt,a3 as ao,a4 as bs,a5 as lo,a6 as Ct,a7 as ut,a8 as no,a9 as io,aa as ro,ab as ts,ac as us,ad as co,ae as Dt,af as Ot,ag as Cs,ah as uo,ai as fo,aj as Ss,ak as Ts,al as po,am as mo,an as vo,ao as Fs,ap as $t,aq as Vs,ar as rt,as as go,at as ho,au as yo,av as _o,aw as wo,ax as ko,ay as $o,az as bo,aA as Co,aB as So,aC as To,aD as Fo,aE as ds,aF as fs,aG as Vo,aH as Ge,aI as Lo,aJ as xo}from"./vendor-Cw2fOyGk.js";(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const p of document.querySelectorAll('link[rel="modulepreload"]'))i(p);new MutationObserver(p=>{for(const _ of p)if(_.type==="childList")for(const R of _.addedNodes)R.tagName==="LINK"&&R.rel==="modulepreload"&&i(R)}).observe(document,{childList:!0,subtree:!0});function l(p){const _={};return p.integrity&&(_.integrity=p.integrity),p.referrerPolicy&&(_.referrerPolicy=p.referrerPolicy),p.crossOrigin==="use-credentials"?_.credentials="include":p.crossOrigin==="anonymous"?_.credentials="omit":_.credentials="same-origin",_}function i(p){if(p.ep)return;p.ep=!0;const _=l(p);fetch(p.href,_)}})();const ot=ms("config",()=>{const N=d(""),r=d([]),l=d([]),i=d([]),p=d([]),_=d(!1),R=d(!1),h=q(()=>({defaultCommitMessage:N.value,descriptionTemplates:r.value,scopeTemplates:l.value,messageTemplates:i.value,lockedFiles:p.value}));async function U(B=!1){if(!B&&R.value&&!_.value)return console.log("使用缓存的配置信息"),h.value;try{_.value=!0,console.log("加载配置信息...");const j=await(await fetch("/api/config/getConfig")).json();return N.value=j.defaultCommitMessage||"",r.value=j.descriptionTemplates||[],l.value=j.scopeTemplates||[],i.value=j.messageTemplates||[],p.value=j.lockedFiles||[],R.value=!0,console.log("配置信息加载完成"),h.value}catch(C){return console.error("加载配置失败:",C),o.error(`加载配置失败: ${C.message}`),null}finally{_.value=!1}}async function te(B){try{const j=await(await fetch("/api/config/saveDefaultMessage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({defaultCommitMessage:B})})).json();return j.success?(N.value=B,o.success("默认提交信息已保存"),!0):(o.error(`保存失败: ${j.error}`),!1)}catch(C){return o.error(`保存失败: ${C.message}`),!1}}async function M(B,C){try{const ce=await(await fetch("/api/config/save-template",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({template:B,type:C})})).json();return ce.success?(C==="description"?r.value.includes(B)||r.value.push(B):C==="scope"?l.value.includes(B)||l.value.push(B):C==="message"&&(i.value.includes(B)||i.value.push(B)),o.success("模板已保存"),!0):(o.error(`保存模板失败: ${ce.error}`),!1)}catch(j){return o.error(`保存模板失败: ${j.message}`),!1}}async function H(B,C){try{const ce=await(await fetch("/api/config/delete-template",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({template:B,type:C})})).json();return ce.success?(C==="description"?r.value=r.value.filter(ne=>ne!==B):C==="scope"?l.value=l.value.filter(ne=>ne!==B):C==="message"&&(i.value=i.value.filter(ne=>ne!==B)),o.success("模板已删除"),!0):(o.error(`删除模板失败: ${ce.error}`),!1)}catch(j){return o.error(`删除模板失败: ${j.message}`),!1}}async function y(B,C,j){try{const ne=await(await fetch("/api/config/update-template",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({oldTemplate:B,newTemplate:C,type:j})})).json();if(ne.success){if(j==="description"){const k=r.value.indexOf(B);k!==-1&&(r.value[k]=C)}else if(j==="scope"){const k=l.value.indexOf(B);k!==-1&&(l.value[k]=C)}else if(j==="message"){const k=i.value.indexOf(B);k!==-1&&(i.value[k]=C)}return o.success("模板已更新"),!0}else return o.error(`更新模板失败: ${ne.error}`),!1}catch(ce){return o.error(`更新模板失败: ${ce.message}`),!1}}async function w(){try{const C=await(await fetch("/api/locked-files")).json();return C.success?(p.value=C.lockedFiles||[],C.lockedFiles):(o.error(`加载锁定文件列表失败: ${C.error}`),[])}catch(B){return console.error("加载锁定文件列表失败:",B),o.error(`加载锁定文件列表失败: ${B.message}`),[]}}async function E(B){try{const j=await(await fetch("/api/lock-file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({filePath:B})})).json();return j.success?(await w(),o.success(`文件已锁定: ${B}`),!0):(o.error(`锁定文件失败: ${j.error}`),!1)}catch(C){return console.error("锁定文件失败:",C),o.error(`锁定文件失败: ${C.message}`),!1}}async function I(B){try{const j=await(await fetch("/api/unlock-file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({filePath:B})})).json();return j.success?(await w(),o.success(`文件已解锁: ${B}`),!0):(o.error(`解锁文件失败: ${j.error}`),!1)}catch(C){return console.error("解锁文件失败:",C),o.error(`解锁文件失败: ${C.message}`),!1}}async function se(B){try{const j=await(await fetch("/api/check-file-lock",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({filePath:B})})).json();return j.success?j.isLocked:(console.error("检查文件锁定状态失败:",j.error),!1)}catch(C){return console.error("检查文件锁定状态失败:",C),!1}}return{defaultCommitMessage:N,descriptionTemplates:r,scopeTemplates:l,messageTemplates:i,lockedFiles:p,isLoading:_,isLoaded:R,config:h,loadConfig:U,saveDefaultMessage:te,saveTemplate:M,deleteTemplate:H,updateTemplate:y,loadLockedFiles:w,lockFile:E,unlockFile:I,isFileLocked:se}}),Ht=800;function Bo(){const N=window.location.port||"80";if(N==="5173"||N==="4173"||N==="5544"){const l="3001";return console.log(`开发环境:从环境变量读取后端端口 ${l}`),parseInt(l,10)}const r=parseInt(N,10);return console.log(`生产环境:使用当前页面端口 ${r}`),r}const Po=Bo(),Qe=ms("git",()=>{const N=ot(),r=d(""),l=d([]),i=d(""),p=d(""),_=d(!1),R=d(!1),h=d(!1),U=d(0),te=d(""),M=d(!1),H=d(!1),y=d(!1),w=d(!1),E=d(!1),I=d(0),se=d(0),B=d(!1),C=d(""),j=d(0),ce=d(0),ne=d(!0),k=d(null),D=d(""),ye=d(""),F=d([]),O=d({staged:[],unstaged:[],untracked:[]}),K=d([]),ue=d(!1),ve=d(!1),me=d(!1),ie=d(!1),re=d(!1),Q=d([]),pe=d(!1),z=d(!1),T=d(!1),ae=d(!1);function X(){r.value="",l.value=[],i.value="",p.value="",_.value=!1,R.value=!1,h.value=!1,U.value=0,I.value=0,se.value=0,B.value=!1,C.value="",j.value=0,ce.value=0,H.value=!1,y.value=!1,w.value=!1,E.value=!1,te.value="",M.value=!1,F.value=[],O.value={staged:[],unstaged:[],untracked:[]},K.value=[],ue.value=!1,ve.value=!1,me.value=!1,ie.value=!1,re.value=!1}async function de(c=!1,f=!1){if(!h.value)return;const V=Date.now();if(!c&&!f&&V-j.value<3e4){console.log("使用缓存的分支状态");return}try{console.log("获取分支状态...");let b="/api/branch-status";const fe=[];c&&fe.push("force=true"),f&&fe.push("countOnly=true"),fe.length>0&&(b+="?"+fe.join("&"));const Ee=await(await fetch(b)).json();Ee&&(I.value=Ee.ahead||0,se.value=Ee.behind||0,B.value=Ee.hasUpstream||!1,C.value=Ee.upstreamBranch||"",j.value=V,console.log(`分支状态更新:领先 ${I.value} 个提交,落后 ${se.value} 个提交,上游分支:${B.value?C.value:"无"}`))}catch(b){console.error("获取分支状态失败:",b),I.value=0,se.value=0,B.value=!1,C.value=""}}async function Te(){const c=Date.now();if(c-U.value<1e3)return console.log("使用缓存的Git仓库状态:",h.value?"是":"不是"),h.value;try{const V=await(await fetch("/api/current_directory")).json();return h.value=V.isGitRepo===!0,U.value=c,console.log(`当前目录${h.value?"是":"不是"}Git仓库`),h.value}catch(f){return console.error("检查Git仓库状态失败:",f),h.value=!1,U.value=c,!1}}async function Le(c=!1){try{const b=await(await fetch(c?"/api/branch?force=true":"/api/branch")).json();b.branch&&(r.value=b.branch,console.log(`当前分支更新为: ${b.branch}${c?" (强制刷新)":""}`))}catch(f){console.error("获取分支信息失败:",f)}}async function De(){if(h.value)try{console.log("获取所有分支...");const f=await(await fetch("/api/branches")).json();f.branches&&Array.isArray(f.branches)&&(l.value=f.branches,ce.value=Date.now(),console.log(`获取到${f.branches.length}个分支`))}catch(c){console.error("获取所有分支信息失败:",c)}}async function Pe(c){console.log("切换到分支:",c);try{_.value=!0;const V=await(await fetch("/api/checkout",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({branch:c})})).json();return V.success?(o({message:`已切换到分支: ${c}`,type:"success"}),await Le(!0),await de(!0),!0):(o({message:`切换分支失败: ${V.error}`,type:"error"}),!1)}catch(f){return o({message:`切换分支失败: ${f.message}`,type:"error"}),!1}finally{_.value=!1}}async function oe(){try{const f=await(await fetch("/api/user-info")).json();f.name&&f.email&&(i.value=f.name,p.value=f.email)}catch(c){console.error("获取用户信息失败:",c)}}async function Oe(c,f){if(!c.trim())return o({message:"分支名称不能为空",type:"warning"}),!1;try{R.value=!0;const b=await(await fetch("/api/create-branch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({newBranchName:c,baseBranch:f||r.value})})).json();return b.success?(o({message:`已创建并切换到分支: ${c}`,type:"success"}),await Le(!0),await de(!0),await De(),!0):(o({message:`创建分支失败: ${b.error}`,type:"error"}),!1)}catch(V){return o({message:`创建分支失败: ${V.message}`,type:"error"}),!1}finally{R.value=!1}}async function Me(){try{const f=await(await fetch("/api/clear-user-config",{method:"POST"})).json();return f.success?(i.value="",p.value="",o({message:"已清除Git用户配置",type:"success"}),!0):(o({message:`清除配置失败: ${f.error}`,type:"error"}),!1)}catch(c){return o({message:`清除配置失败: ${c.message}`,type:"error"}),!1}}async function at(c,f){try{const b=await(await fetch("/api/restore-user-config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:c,email:f})})).json();return b.success?(i.value=c,p.value=f,o({message:"已恢复Git用户配置",type:"success"}),!0):(o({message:`恢复配置失败: ${b.error}`,type:"error"}),!1)}catch(V){return o({message:`恢复配置失败: ${V.message}`,type:"error"}),!1}}async function Ze(){if(!h.value)return o({message:"当前目录不是Git仓库",type:"warning"}),!1;try{y.value=!0;const f=await(await fetch("/api/pull",{method:"POST"})).json();return f.success?(o({message:"拉取成功",type:"success"}),await de(),!0):(f.needsMerge?o({message:`需要合并更改: ${f.pullOutput||"存在冲突需要手动解决"}`,type:"warning",duration:5e3}):o({message:`拉取失败: ${f.error}`,type:"error"}),!1)}catch(c){return o({message:`拉取失败: ${c.message}`,type:"error"}),!1}finally{y.value=!1}}async function Ne(){if(!h.value)return o({message:"当前目录不是Git仓库",type:"warning"}),!1;try{w.value=!0;const f=await(await fetch("/api/fetch-all",{method:"POST"})).json();return f.success?(o({message:"获取所有远程分支信息成功",type:"success"}),await de(),!0):(o({message:`获取远程分支信息失败: ${f.error}`,type:"error"}),!1)}catch(c){return o({message:`获取远程分支信息失败: ${c.message}`,type:"error"}),!1}finally{w.value=!1}}async function Je(){k.value&&k.value.disconnect();try{const c=`http://localhost:${Po}`;if(console.log("尝试连接Socket.IO服务器:",c),k.value=Xs(c,{reconnectionDelayMax:1e4,reconnection:!0,reconnectionAttempts:10,reconnectionDelay:1e3,timeout:2e4,autoConnect:!0,forceNew:!0,transports:["websocket","polling"]}),!k.value){console.error("Socket.IO初始化失败: socket为null");return}console.log("Socket.IO客户端已创建,开始注册事件监听器..."),k.value.on("connect",()=>{var f;console.log("✅ Socket.IO连接成功,事件监听器已生效,Socket ID:",(f=k.value)==null?void 0:f.id),ne.value&&k.value&&k.value.emit("start_monitoring")}),k.value.on("project_info",f=>{D.value=f.projectPath,ye.value=f.projectRoomId,console.log(`当前项目: ${f.projectPath}`),console.log(`房间ID: ${f.projectRoomId}`)}),k.value.on("project_changed",f=>{console.log(`项目已切换: ${f.oldProjectPath} -> ${f.newProjectPath}`),D.value=f.newProjectPath,ye.value=f.newProjectRoomId,k.value&&k.value.emit("join_room",f.newProjectRoomId),console.log(`已加入新项目房间: ${f.newProjectRoomId}`)}),k.value.on("disconnect",f=>{console.log("与Socket.IO服务器断开连接:",f)}),k.value.on("git_status_update",f=>{if(ne.value){if(console.log("✅ 成功监听到 git_status_update 事件:",new Date().toLocaleTimeString()),console.log("git_status_update data ==>",f),console.log("currentProjectPath.value ==>",D.value),console.log("data.projectPath ==>",f.projectPath),f.projectPath&&D.value&&f.projectPath!==D.value){console.log(`忽略不同项目的状态更新: ${f.projectPath}`);return}console.log("正在更新 Git 文件状态..."),f.porcelain!==void 0&&u(f.porcelain)}}),k.value.on("monitoring_status",f=>{console.log("文件监控状态:",f.active?"已启动":"已停止")}),k.value.on("connect_error",f=>{console.error("Socket连接错误:",f.message)}),k.value.on("connect_timeout",()=>{console.error("Socket连接超时")}),k.value.on("reconnect",f=>{var V;console.log(`Socket重连成功,尝试次数: ${f}`),ne.value&&(console.log("重连后重新发送start_monitoring请求"),(V=k.value)==null||V.emit("start_monitoring"))}),k.value.on("reconnect_attempt",f=>{console.log(`Socket尝试重连,第 ${f} 次尝试`)}),k.value.on("reconnect_error",f=>{console.error("Socket重连错误:",f.message)}),k.value.on("reconnect_failed",()=>{console.error("Socket重连失败,已达到最大重试次数")}),console.log("Socket.IO事件监听器注册完成:connect, project_info, project_changed, git_status_update, monitoring_status"),k.value&&!k.value.connected&&(console.log("Socket未连接,尝试手动连接..."),k.value.connect())}catch(c){console.error("Socket.IO连接初始化失败:",c)}}function P(){if(console.log("toggleAutoUpdate调用,当前值:",ne.value),!k.value){console.error("无法切换自动更新状态: socket连接不存在"),o.error("无法连接到服务器,自动更新可能不会生效"),console.log("尝试重新建立socket连接..."),Je(),localStorage.setItem("zen-gitsync-auto-update",ne.value.toString());return}try{ne.value?(console.log("发送start_monitoring命令..."),k.value.emit("start_monitoring"),o.success("自动更新已启用")):(console.log("发送stop_monitoring命令..."),k.value.emit("stop_monitoring"),o.info("自动更新已禁用")),localStorage.setItem("zen-gitsync-auto-update",ne.value.toString()),console.log("已保存自动更新设置到本地存储:",ne.value)}catch(c){console.error("切换自动更新状态时出错:",c),o.error(`切换自动更新失败: ${c.message}`)}}function u(c){if(c===void 0||c===""){K.value=[];return}const f=c.split(`
|
|
2
2
|
`),V=[];for(const b of f){const fe=b.match(/^([ MADRCU\?]{2})\s+(.+)$/);if(fe){let ze="";const Ee=fe[1],tt=Ee.charAt(0),ht=Ee.charAt(1);tt==="A"||tt==="M"||tt==="D"||tt==="R"?ze="added":tt===" "&&ht==="M"?ze="modified":tt===" "&&ht==="D"?ze="deleted":Ee==="??"?ze="untracked":ze="other",V.push({path:fe[2],type:ze})}}K.value=V}async function le(c=!0){if(!h.value){console.log("当前目录不是Git仓库,跳过加载提交历史");return}try{ue.value=!0,console.log("开始加载提交历史...");const f=new Date().getTime(),b=await(await fetch(`/api/log?page=1&_t=${f}`)).json();b&&b.data&&Array.isArray(b.data)?(F.value=[...b.data],console.log(`提交历史加载完成,共 ${F.value.length} 条记录`)):(console.warn("API返回的提交历史格式不正确:",b),F.value=[])}catch(f){console.error("获取提交历史失败:",f),c&&o({message:`获取提交历史失败: ${f.message}`,type:"error"})}finally{ue.value=!1}}async function J(){if(!h.value){console.log("当前目录不是Git仓库,跳过加载Git状态");return}try{ve.value=!0,await Se()}catch(c){console.error("获取Git状态失败:",c),o({message:`获取Git状态失败: ${c.message}`,type:"error"})}finally{ve.value=!1}}async function Se(){if(console.log("开始获取Git状态(porcelain格式)..."),!h.value){console.log("当前目录不是Git仓库,跳过加载Git状态");return}try{const f=await(await fetch("/api/status_porcelain")).json();f.status!==void 0?u(f.status):K.value=[]}catch(c){console.error("获取Git状态(porcelain)失败:",c),o({message:`获取Git状态(porcelain)失败: ${c.message}`,type:"error"}),K.value=[]}}async function Ve(){if(!h.value)return o.warning("当前目录不是Git仓库"),!1;try{me.value=!0;const c=K.value.filter(f=>{const V=f.path.replace(/\\/g,"/");return!N.lockedFiles.some(fe=>{const ze=fe.replace(/\\/g,"/");return V===ze})});if(c.length===0)return o({message:"没有需要暂存的文件(所有文件都被锁定)",type:"warning"}),!1;if(c.length===K.value.length){const V=await(await fetch("/api/add",{method:"POST"})).json();return V.success?(o({message:"文件已添加到暂存区",type:"success"}),!0):(o({message:`添加文件失败: ${V.error}`,type:"error"}),!1)}else{const V=await(await fetch("/api/add-filtered",{method:"POST"})).json();if(V.success){const b=K.value.length-c.length;let fe=`已添加 ${c.length} 个文件到暂存区`;return b>0&&(fe+=`,跳过 ${b} 个锁定文件`),o({message:fe,type:"success"}),!0}else return o({message:`添加文件失败: ${V.error}`,type:"error"}),!1}}catch(c){return o({message:`添加文件失败: ${c.message}`,type:"error"}),!1}finally{me.value=!1}}async function _e(){if(!h.value)return o.warning("当前目录不是Git仓库"),!1;try{me.value=!0;const f=await(await fetch("/api/add-all",{method:"POST"})).json();return f.success?(o({message:"所有文件已添加到暂存区",type:"success"}),!0):(o({message:`添加文件失败: ${f.error}`,type:"error"}),!1)}catch(c){return o({message:`添加文件失败: ${c.message}`,type:"error"}),!1}finally{me.value=!1}}async function $e(c){if(!h.value)return o.warning("当前目录不是Git仓库"),!1;try{me.value=!0;const V=await(await fetch("/api/add-file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({filePath:c})})).json();return V.success?(o({message:"文件已暂存",type:"success"}),J(),!0):(o({message:`暂存文件失败: ${V.error}`,type:"error"}),!1)}catch(f){return o({message:`暂存文件失败: ${f.message}`,type:"error"}),!1}finally{me.value=!1}}async function Ue(c){if(!h.value)return o.warning("当前目录不是Git仓库"),!1;try{re.value=!0;const V=await(await fetch("/api/unstage-file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({filePath:c})})).json();return V.success?(o({message:"已取消暂存文件",type:"success"}),J(),!0):(o({message:`取消暂存失败: ${V.error}`,type:"error"}),!1)}catch(f){return o({message:`取消暂存失败: ${f.message}`,type:"error"}),!1}finally{re.value=!1}}function be(c){return new Promise(f=>setTimeout(f,c))}async function Ce(c,f=!1){if(!h.value)return o.warning("当前目录不是Git仓库"),!1;try{ie.value=!0;const b=await(await fetch("/api/commit",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:c,hasNewlines:c.includes(`
|
|
3
3
|
`),noVerify:f})})).json();return b.success?(o({message:"提交成功",type:"success"}),!0):(o({message:`commitChanges 提交失败: ${b.error}`,type:"error"}),!1)}catch(V){return o({message:`提交失败: ${V.message}`,type:"error"}),!1}finally{ie.value=!1}}async function We(){if(!h.value)return o.warning("当前目录不是Git仓库"),!1;try{H.value=!0;const f=await(await fetch("/api/push",{method:"POST"})).json();return f.success?(I.value=0,se.value=0,await Promise.all([J(),le()]),console.log("推送成功,分支状态已设置为同步 (ahead=0, behind=0)"),!0):(o({message:`推送失败: ${f.error}`,type:"error"}),!1)}catch(c){return o({message:`推送失败: ${c.message}`,type:"error"}),!1}finally{H.value=!1}}async function Ie(c,f={}){if(!h.value)return o({message:"当前目录不是Git仓库",type:"warning"}),!1;if(!c)return o({message:"请选择要合并的分支",type:"warning"}),!1;if(c===r.value)return o({message:"不能合并当前分支到自身",type:"warning"}),!1;try{E.value=!0;const V=await fetch("/api/merge",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({branch:c,...f})}),b=await V.json();return V.status===409?(o({message:"合并分支时发生冲突,请手动解决",type:"warning",duration:5e3}),!1):b.success?(o({message:`成功合并分支 ${c} 到 ${r.value}`,type:"success"}),await J(),await de(),!0):(o({message:`合并分支失败: ${b.error}`,type:"error"}),!1)}catch(V){return o({message:`合并分支失败: ${V.message}`,type:"error"}),!1}finally{E.value=!1}}async function ee(c,f=!1){if(console.log("开始暂存并提交操作..."),!await Ve())return!1;console.log("暂存完成,等待Git操作完成..."),await be(Ht),console.log("开始提交更改...");const b=await Ce(c,f);return console.log("暂存并提交操作完成"),b}async function lt(c,f=!1){try{if(console.log("开始暂存文件..."),!await Ve()||(console.log("暂存完成,等待Git操作完成..."),await be(Ht),console.log("开始提交更改..."),!await Ce(c,f)))return!1;console.log("提交完成,等待Git操作完成..."),await be(Ht),console.log("开始推送到远程...");const fe=await We();return console.log("一键推送操作完成,状态已统一刷新"),fe}catch(V){console.error("一键推送操作失败:",V);try{(await(await fetch("/api/remove-lock",{method:"POST"})).json()).success&&o({message:"检测到Git锁定文件冲突,已自动清理,请重试操作",type:"warning"})}catch(b){console.error("清理锁定文件失败:",b)}o({message:`操作失败: ${V.message}`,type:"error"});try{await Promise.all([J(),le(),de()])}catch(b){console.error("刷新状态失败:",b)}return!1}}async function nt(){if(!h.value)return o.warning("当前目录不是Git仓库"),!1;try{re.value=!0;const f=await(await fetch("/api/reset-head",{method:"POST"})).json();return f.success?(o({message:"已重置暂存区",type:"success"}),J(),!0):(o({message:`重置暂存区失败: ${f.error}`,type:"error"}),!1)}catch(c){return o({message:`重置暂存区失败: ${c.message}`,type:"error"}),!1}finally{re.value=!1}}async function pt(c){if(!h.value)return o.warning("当前目录不是Git仓库"),!1;try{re.value=!0;const V=await(await fetch("/api/reset-to-remote",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({branch:c})})).json();return V.success?(o({message:`已重置分支 ${c} 到远程状态`,type:"success"}),J(),le(),!0):(o({message:`重置分支失败: ${V.error}`,type:"error"}),!1)}catch(f){return o({message:`重置分支失败: ${f.message}`,type:"error"}),!1}finally{re.value=!1}}async function mt(){if(h.value)try{M.value=!0,console.log("获取远程仓库地址...");const f=await(await fetch("/api/remote-url")).json();f.success?(te.value=f.url||"",console.log(`获取到远程仓库地址: ${te.value}`)):(console.warn("获取远程仓库地址失败:",f.error),te.value="")}catch(c){console.error("获取远程仓库地址失败:",c),te.value=""}finally{M.value=!1}}async function vt(){if(!te.value)return o({message:"没有可复制的远程仓库地址",type:"warning"}),!1;try{return await navigator.clipboard.writeText(te.value),o({message:"已复制远程仓库地址",type:"success"}),!0}catch(c){return console.error("复制远程仓库地址失败:",c),o({message:`复制失败: ${c.message}`,type:"error"}),!1}}dt(()=>{const c=localStorage.getItem("zen-gitsync-auto-update");c!==null&&(ne.value=c==="true"),Je()});function et(){k.value&&(k.value.disconnect(),k.value=null)}vs(()=>{et()});async function Re(){if(!h.value)return o.warning("当前目录不是Git仓库"),[];try{pe.value=!0;const f=await(await fetch("/api/stash-list")).json();return f.success?(Q.value=f.stashes,f.stashes):(o.error(`获取stash列表失败: ${f.error}`),[])}catch(c){return console.error("获取stash列表失败:",c),o.error(`获取stash列表失败: ${c.message}`),[]}finally{pe.value=!1}}async function gt(c,f=!1,V=!0){if(!h.value)return o.warning("当前目录不是Git仓库"),!1;try{ae.value=!0;const fe=await(await fetch("/api/stash-save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:c,includeUntracked:f,excludeLocked:V})})).json();return fe.success?(o.success(fe.message),await Re(),await J(),!0):(o.warning(fe.message),!1)}catch(b){return console.error("保存stash失败:",b),o.error(`保存stash失败: ${b.message}`),!1}finally{ae.value=!1}}async function $(c,f=!1){if(!h.value)return o.warning("当前目录不是Git仓库"),!1;try{z.value=!0;const V=await fetch("/api/stash-apply",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({stashId:c,pop:f})}),b=await V.json();return V.status===409?(o.warning("应用stash时发生冲突,请手动解决"),!1):b.success?(o.success(b.message),await Re(),await J(),!0):(o.error(`应用stash失败: ${b.error}`),!1)}catch(V){return console.error("应用stash失败:",V),o.error(`应用stash失败: ${V.message}`),!1}finally{z.value=!1}}async function g(c){if(!h.value)return o.warning("当前目录不是Git仓库"),!1;try{T.value=!0;const V=await(await fetch("/api/stash-drop",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({stashId:c})})).json();return V.success?(o.success(V.message),await Re(),!0):(o.error(`删除stash失败: ${V.error}`),!1)}catch(f){return console.error("删除stash失败:",f),o.error(`删除stash失败: ${f.message}`),!1}finally{T.value=!1}}async function W(){if(!h.value)return o.warning("当前目录不是Git仓库"),!1;try{T.value=!0;const f=await(await fetch("/api/stash-clear",{method:"POST"})).json();return f.success?(o.success(f.message),Q.value=[],!0):(o.error(`清空stash失败: ${f.error}`),!1)}catch(c){return console.error("清空stash失败:",c),o.error(`清空stash失败: ${c.message}`),!1}finally{T.value=!1}}return{currentBranch:r,allBranches:l,userName:i,userEmail:p,isChangingBranch:_,isCreatingBranch:R,isGitRepo:h,lastCheckedTime:U,branchAhead:I,branchBehind:se,hasUpstream:B,upstreamBranch:C,lastBranchStatusTime:j,lastBranchesTime:ce,remoteUrl:te,isLoadingRemoteUrl:M,stashes:Q,isLoadingStashes:pe,isApplyingStash:z,isDroppingStash:T,isSavingStash:ae,log:F,status:O,fileList:K,isLoadingLog:ue,isLoadingStatus:ve,isAddingFiles:me,isCommiting:ie,isResetting:re,autoUpdateEnabled:ne,isPushing:H,isGitPulling:y,isGitFetching:w,isGitMerging:E,$reset:X,checkGitRepo:Te,getCurrentBranch:Le,getAllBranches:De,changeBranch:Pe,getUserInfo:oe,createBranch:Oe,clearUserConfig:Me,restoreUserConfig:at,getBranchStatus:de,gitPull:Ze,gitFetchAll:Ne,initSocketConnection:Je,toggleAutoUpdate:P,parseStatusPorcelain:u,fetchLog:le,fetchStatus:J,fetchStatusPorcelain:Se,addToStage:Ve,addAllToStage:_e,addFileToStage:$e,unstageFile:Ue,commitChanges:Ce,pushToRemote:We,addAndCommit:ee,addCommitAndPush:lt,resetHead:nt,resetToRemote:pt,getRemoteUrl:mt,copyRemoteUrl:vt,mergeBranch:Ie,getStashList:Re,saveStash:gt,applyStash:$,dropStash:g,clearAllStashes:W,socket:k,disconnectSocket:et}});function zo(N){return N.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function jo(N){return N?N.split(`
|
|
4
|
-
`).map(l=>{const i=zo(l);return l.startsWith("diff --git")||l.startsWith("diff --cc")||l.startsWith("diff --combined")?`<div class="diff-header">${i}</div>`:l.startsWith("---")?`<div class="diff-old-file">${i}</div>`:l.startsWith("+++")?`<div class="diff-new-file">${i}</div>`:l.startsWith("@@")?`<div class="diff-hunk-header">${i}</div>`:l.startsWith("+")?`<div class="diff-added">${i}</div>`:l.startsWith("-")?`<div class="diff-removed">${i}</div>`:`<div class="diff-context">${i}</div>`}).join(""):""}function Do(N){return N?N.trim():"(无提交信息)"}function Oo(N){if(!N)return"";const r=/^(feat|fix|docs|style|refactor|perf|test|chore|build|ci|revert)(\([^)]+\))?\s*:\s*(.+)$/s,l=N.match(r);return l?l[3].trim():N.trim()}const Ro="/assets/vscode-twqwGmNt.webp",Go={key:0,class:"files-panel"},Ao={class:"panel-header"},Mo={key:0,class:"file-count"},Uo={class:"files-list"},Eo=["onClick"],Io={class:"file-name"},No={class:"panel-header"},Ho={class:"header-right"},Jo={key:0,class:"selected-file"},Wo={key:1,class:"action-buttons"},qo=["src"],Yo={class:"diff-content"},Ko=["innerHTML"],Qo=xe({__name:"FileDiffViewer",props:{files:{},emptyText:{default:"没有找到变更文件"},diffContent:{default:""},selectedFile:{default:""},height:{default:"100%"},showFileList:{type:Boolean,default:!0},context:{default:"git-status"},showOpenButton:{type:Boolean,default:!0}},emits:["file-select","open-file","open-with-vscode"],setup(N,{emit:r}){const l=N,i=r,p=d(""),_=q(()=>l.selectedFile||p.value),R=q(()=>l.files.map(y=>({...y,displayName:y.name||y.path.split("/").pop()||y.path}))),h=q(()=>l.diffContent&&l.diffContent.trim()!=="");function U(y){p.value=y,i("file-select",y)}function te(){if(!_.value){o.warning("请先选择一个文件");return}i("open-file",_.value,l.context)}function M(){if(!_.value){o.warning("请先选择一个文件");return}i("open-with-vscode",_.value,l.context)}const H=q(()=>{switch(l.context){case"git-status":return"在系统默认编辑器中打开文件";case"commit-detail":return"打开该提交时的文件版本";case"stash-detail":return"打开该stash中的文件版本";default:return"打开文件"}});return je(()=>l.selectedFile,y=>{y!==void 0&&(p.value=y)}),je(()=>l.files,y=>{if(y.length>0&&!_.value){const w=y[0];U(w.path)}},{immediate:!0}),(y,w)=>(v(),S("div",{class:"file-diff-viewer",style:ft({height:y.height})},[y.showFileList?(v(),S("div",Go,[e("div",Ao,[w[0]||(w[0]=e("h4",null,"变更文件",-1)),y.files.length>0?(v(),S("span",Mo,"("+A(y.files.length)+")",1)):Y("",!0)]),e("div",Uo,[t(n(Zs),{height:"100%"},{default:s(()=>[y.files.length===0?(v(),Z(n(zt),{key:0,description:y.emptyText,"image-size":60},null,8,["description"])):Y("",!0),(v(!0),S(Fe,null,Ae(R.value,E=>(v(),S("div",{key:E.path,class:ke(["file-item",{active:E.path===_.value,[`file-type-${E.type}`]:E.type}]),onClick:I=>U(E.path)},[t(n(st),{class:"file-icon"},{default:s(()=>[t(n(Yt))]),_:1}),t(n(Ye),{content:E.path,placement:"top",disabled:E.displayName.length<=35,"hide-after":1e3,"show-after":200},{default:s(()=>[e("span",Io,A(E.displayName),1)]),_:2},1032,["content","disabled"])],10,Eo))),128))]),_:1})])])):Y("",!0),e("div",{class:ke(["diff-panel",{"full-width":!y.showFileList}])},[e("div",No,[w[3]||(w[3]=e("h4",null,"文件差异",-1)),e("div",Ho,[_.value?(v(),S("span",Jo,A(_.value.split("/").pop()),1)):Y("",!0),y.showOpenButton&&_.value?(v(),S("div",Wo,[t(n(Ye),{content:H.value,placement:"top",effect:"light"},{default:s(()=>[t(n(he),{type:"primary",size:"small",icon:n(eo),onClick:te,class:"open-file-btn"},{default:s(()=>w[1]||(w[1]=[x(" 打开文件 ")])),_:1},8,["icon"])]),_:1},8,["content"]),t(n(Ye),{content:"用VSCode打开文件",placement:"top",effect:"light"},{default:s(()=>[t(n(he),{type:"success",size:"small",onClick:M,class:"vscode-btn"},{default:s(()=>[e("img",{src:n(Ro),alt:"VSCode",class:"vscode-icon"},null,8,qo),w[2]||(w[2]=x(" VSCode "))]),_:1})]),_:1})])):Y("",!0)])]),e("div",Yo,[h.value?(v(),S("div",{key:1,class:"diff-text",innerHTML:n(jo)(y.diffContent)},null,8,Ko)):(v(),Z(n(zt),{key:0,description:_.value?"该文件没有差异内容":"请选择文件查看差异","image-size":80},null,8,["description"]))])],2)],4))}}),Be=(N,r)=>{const l=N.__vccOpts||N;for(const[i,p]of r)l[i]=p;return l},ss=Be(Qo,[["__scopeId","data-v-1640713a"]]),Xo={class:"common-dialog__footer"},Zo=xe({__name:"CommonDialog",props:{modelValue:{type:Boolean},title:{},size:{default:"medium"},type:{default:"default"},width:{},height:{},top:{default:"8vh"},closeOnClickModal:{type:Boolean,default:!1},closeOnPressEscape:{type:Boolean,default:!0},destroyOnClose:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},customClass:{},appendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},showFooter:{type:Boolean,default:!1},confirmText:{default:"确定"},cancelText:{default:"取消"},showCancel:{type:Boolean,default:!0},confirmLoading:{type:Boolean,default:!1}},emits:["update:modelValue","confirm","cancel","close","opened","closed"],setup(N,{emit:r}){const l=N,i=r,p=q(()=>{if(l.width)return l.width;switch(l.size){case"small":return"30%";case"medium":return"50%";case"large":return"80%";case"extra-large":return"90%";default:return"50%"}}),_=q(()=>{if(l.height)return l.height;switch(l.type){case"full-height":return"calc(100vh - 100px)";case"flex":return"calc(100vh - 160px)";default:return"auto"}}),R=q(()=>{const w={};return(l.type==="full-height"||l.type==="flex")&&(w["--dialog-height"]=_.value),w}),h=q(()=>{const w=[];return l.customClass&&w.push(l.customClass),l.type==="flex"&&w.push("common-dialog--flex"),l.type==="full-height"&&w.push("common-dialog--full-height"),w.join(" ")});function U(){i("update:modelValue",!1),i("close")}function te(){i("confirm")}function M(){i("cancel"),U()}function H(){i("opened")}function y(){i("closed")}return(w,E)=>{const I=he;return v(),Z(n(Vt),{"model-value":w.modelValue,title:w.title,width:p.value,top:w.top,style:ft(R.value),"close-on-click-modal":w.closeOnClickModal,"close-on-press-escape":w.closeOnPressEscape,"destroy-on-close":w.destroyOnClose,draggable:w.draggable,class:ke(h.value),"append-to-body":w.appendToBody,"lock-scroll":w.lockScroll,onClose:U,onOpened:H,onClosed:y},to({default:s(()=>[rs(w.$slots,"default",{},void 0,!0)]),_:2},[w.showFooter||w.$slots.footer?{name:"footer",fn:s(()=>[rs(w.$slots,"footer",{},()=>[e("div",Xo,[w.showCancel?(v(),Z(I,{key:0,onClick:M},{default:s(()=>[x(A(w.cancelText),1)]),_:1})):Y("",!0),t(I,{type:"primary",loading:w.confirmLoading,onClick:te},{default:s(()=>[x(A(w.confirmText),1)]),_:1},8,["loading"])])],!0)]),key:"0"}:void 0]),1032,["model-value","title","width","top","style","close-on-click-modal","close-on-press-escape","destroy-on-close","draggable","class","append-to-body","lock-scroll"])}}}),Ft=Be(Zo,[["__scopeId","data-v-c1505473"]]),ea={key:0,class:"file-group"},ta={class:"file-list"},sa=["onClick"],oa={class:"file-info"},aa={class:"file-name-section"},la=["title"],na={class:"file-directory"},ia={class:"file-actions"},ra={key:1,style:{"font-size":"16px","font-weight":"bold"}},ca=xe({__name:"FileGroup",props:{files:{},title:{},groupKey:{},collapsedGroups:{},isFileLocked:{type:Function},getFileName:{type:Function},getFileDirectory:{type:Function}},emits:["toggleCollapse","fileClick","toggleFileLock","stageFile","unstageFile","revertFileChanges"],setup(N,{emit:r}){const l=N,i=r,p=q(()=>l.files.length>0),_=q(()=>l.collapsedGroups[l.groupKey]);function R(){i("toggleCollapse",l.groupKey)}function h(w){i("fileClick",w)}function U(w,E){E.stopPropagation(),i("toggleFileLock",w)}function te(w,E){E.stopPropagation(),i("stageFile",w)}function M(w,E){E.stopPropagation(),i("unstageFile",w)}function H(w,E){E.stopPropagation(),i("revertFileChanges",w)}function y(w){switch(w){case"added":return[{type:"unstage",tooltip:"取消暂存",buttonType:"warning",icon:"-",handler:M}];case"modified":case"deleted":return[{type:"stage",tooltip:"添加到暂存区",buttonType:"success",icon:"+",handler:te},{type:"revert",tooltip:"撤回修改",buttonType:"danger",icon:Qt,handler:H}];case"untracked":return[{type:"stage",tooltip:"添加到暂存区",buttonType:"success",icon:"+",handler:te},{type:"delete",tooltip:"删除文件",buttonType:"danger",icon:Kt,handler:H}];default:return[]}}return(w,E)=>{const I=st,se=Ye,B=he;return p.value?(v(),S("div",ea,[e("div",{class:"file-group-header",onClick:R},[t(I,{class:ke(["collapse-icon",{collapsed:_.value}])},{default:s(()=>[t(n(Rt))]),_:1},8,["class"]),e("span",null,A(w.title),1)]),Xe(e("div",ta,[(v(!0),S(Fe,null,Ae(w.files,C=>(v(),S("div",{key:C.path,class:"file-item",onClick:j=>h(C)},[e("div",oa,[e("div",{class:ke(["file-status-indicator",[C.type,{locked:l.isFileLocked(C.path)}]])},null,2),e("div",aa,[t(se,{content:l.getFileName(C.path),placement:"top",disabled:l.getFileName(C.path).length<=25,"hide-after":1e3,"show-after":200},{default:s(()=>[e("span",{class:ke(["file-name",{"locked-file-name":l.isFileLocked(C.path)}])},[x(A(l.getFileName(C.path))+" ",1),l.isFileLocked(C.path)?(v(),Z(I,{key:0,class:"lock-indicator"},{default:s(()=>[t(n(jt))]),_:1})):Y("",!0)],2)]),_:2},1032,["content","disabled"])]),e("div",{class:"file-path-section",title:l.getFileDirectory(C.path)},[t(se,{content:l.getFileDirectory(C.path),placement:"top",disabled:l.getFileDirectory(C.path).length<=30,"hide-after":1e3,"show-after":200},{default:s(()=>[e("span",na,A(l.getFileDirectory(C.path)),1)]),_:2},1032,["content","disabled"])],8,la)]),e("div",ia,[t(se,{content:l.isFileLocked(C.path)?"解锁文件":"锁定文件",placement:"top","hide-after":1e3,"show-after":200},{default:s(()=>[t(B,{type:l.isFileLocked(C.path)?"danger":"info",size:"small",text:"",onClick:j=>U(C.path,j),class:"file-action-btn"},{default:s(()=>[t(I,{size:"16"},{default:s(()=>[(v(),Z(bt(l.isFileLocked(C.path)?n(jt):n(gs))))]),_:2},1024)]),_:2},1032,["type","onClick"])]),_:2},1032,["content"]),(v(!0),S(Fe,null,Ae(y(C.type),j=>(v(),Z(se,{key:j.type,content:j.tooltip,placement:"top","hide-after":1e3,"show-after":200},{default:s(()=>[t(B,{type:j.buttonType,size:"small",text:"",onClick:ce=>j.handler(C.path,ce),class:"file-action-btn"},{default:s(()=>[typeof j.icon!="string"?(v(),Z(I,{key:0,size:"16"},{default:s(()=>[(v(),Z(bt(j.icon)))]),_:2},1024)):(v(),S("span",ra,A(j.icon),1))]),_:2},1032,["type","onClick"])]),_:2},1032,["content"]))),128))])],8,sa))),128))],512),[[St,!_.value]])])):Y("",!0)}}}),Jt=Be(ca,[["__scopeId","data-v-1197e0f9"]]),ua={class:"card"},da={class:"status-header"},fa={class:"header-actions"},pa=["element-loading-text"],ma={key:0,class:"status-box"},va={key:1,class:"status-box-wrap"},ga={key:0,class:"branch-status-info"},ha={class:"branch-sync-status"},ya={class:"sync-status-content"},_a={class:"status-badges"},wa={class:"badge-content"},ka={class:"badge-content"},$a={key:1,class:"file-list-container"},ba={key:2,class:"empty-status"},Ca={class:"empty-icon"},Sa={class:"lock-feature-description"},Ta={class:"description-header"},Fa={key:0,class:"empty-locked-files"},Va={class:"empty-icon"},La={key:1,class:"locked-files-list"},xa={class:"locked-files-header"},Ba={class:"locked-file-items"},Pa={class:"file-info"},za={class:"file-path-container"},ja={class:"file-name"},Da={class:"file-directory"},Oa={class:"file-actions"},Ra={class:"dialog-footer"},Ga=xe({__name:"GitStatus",props:{initialDirectory:{type:String,default:""}},setup(N,{expose:r}){const l=N,i=Qe(),p=ot(),_=q(()=>i.isLoadingStatus),R=d(""),h=d(""),U=d(!1),te=d(!1),M=d(-1),H=q(()=>i.fileList.map(z=>({path:z.path,name:z.path.split("/").pop()||z.path,type:z.type})));async function y(z){await ne(z)}async function w(z,T){try{const X=await(await fetch("/api/open-file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({filePath:z,context:T})})).json();X.success?o.success(X.message):o.error(X.error||"打开文件失败")}catch(ae){o.error(`打开文件失败: ${ae.message}`)}}async function E(z,T){try{const X=await(await fetch("/api/open-with-vscode",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({filePath:z,context:T})})).json();X.success?o.success(X.message):o.error(X.error||"用VSCode打开文件失败")}catch(ae){o.error(`用VSCode打开文件失败: ${ae.message}`)}}const I=d(!1),se=d({staged:!1,unstaged:!1,untracked:!1}),B=d(l.initialDirectory||"");async function C(){try{if(!B.value){const T=await(await fetch("/api/current_directory")).json();B.value=T.directory||"未知目录"}if(!i.isGitRepo)return;await i.fetchStatus(),await i.getBranchStatus(),o({message:"Git 状态已刷新",type:"success"})}catch(z){o({message:"刷新失败: "+z.message,type:"error"})}}async function j(z){try{await He.confirm(`确认解锁该文件?
|
|
4
|
+
`).map(l=>{const i=zo(l);return l.startsWith("diff --git")||l.startsWith("diff --cc")||l.startsWith("diff --combined")?`<div class="diff-header">${i}</div>`:l.startsWith("---")?`<div class="diff-old-file">${i}</div>`:l.startsWith("+++")?`<div class="diff-new-file">${i}</div>`:l.startsWith("@@")?`<div class="diff-hunk-header">${i}</div>`:l.startsWith("+")?`<div class="diff-added">${i}</div>`:l.startsWith("-")?`<div class="diff-removed">${i}</div>`:`<div class="diff-context">${i}</div>`}).join(""):""}function Do(N){return N?N.trim():"(无提交信息)"}function Oo(N){if(!N)return"";const r=/^(feat|fix|docs|style|refactor|perf|test|chore|build|ci|revert)(\([^)]+\))?\s*:\s*(.+)$/s,l=N.match(r);return l?l[3].trim():N.trim()}const Ro="/assets/vscode-twqwGmNt.webp",Go={key:0,class:"files-panel"},Ao={class:"panel-header"},Mo={key:0,class:"file-count"},Uo={class:"files-list"},Eo=["onClick"],Io={class:"file-name"},No={class:"panel-header"},Ho={class:"header-right"},Jo={key:0,class:"selected-file"},Wo={key:1,class:"action-buttons"},qo=["src"],Yo={class:"diff-content"},Ko=["innerHTML"],Qo=xe({__name:"FileDiffViewer",props:{files:{},emptyText:{default:"没有找到变更文件"},diffContent:{default:""},selectedFile:{default:""},height:{default:"100%"},showFileList:{type:Boolean,default:!0},context:{default:"git-status"},showOpenButton:{type:Boolean,default:!0}},emits:["file-select","open-file","open-with-vscode"],setup(N,{emit:r}){const l=N,i=r,p=d(""),_=q(()=>l.selectedFile||p.value),R=q(()=>l.files.map(y=>({...y,displayName:y.name||y.path.split("/").pop()||y.path}))),h=q(()=>l.diffContent&&l.diffContent.trim()!=="");function U(y){p.value=y,i("file-select",y)}function te(){if(!_.value){o.warning("请先选择一个文件");return}i("open-file",_.value,l.context)}function M(){if(!_.value){o.warning("请先选择一个文件");return}i("open-with-vscode",_.value,l.context)}const H=q(()=>{switch(l.context){case"git-status":return"在系统默认编辑器中打开文件";case"commit-detail":return"打开该提交时的文件版本";case"stash-detail":return"打开该stash中的文件版本";default:return"打开文件"}});return je(()=>l.selectedFile,y=>{y!==void 0&&(p.value=y)}),je(()=>l.files,y=>{if(y.length>0&&!_.value){const w=y[0];U(w.path)}},{immediate:!0}),(y,w)=>(v(),S("div",{class:"file-diff-viewer",style:ft({height:y.height})},[y.showFileList?(v(),S("div",Go,[e("div",Ao,[w[0]||(w[0]=e("h4",null,"变更文件",-1)),y.files.length>0?(v(),S("span",Mo,"("+A(y.files.length)+")",1)):Y("",!0)]),e("div",Uo,[t(n(Zs),{height:"100%"},{default:s(()=>[y.files.length===0?(v(),Z(n(zt),{key:0,description:y.emptyText,"image-size":60},null,8,["description"])):Y("",!0),(v(!0),S(Fe,null,Ae(R.value,E=>(v(),S("div",{key:E.path,class:ke(["file-item",{active:E.path===_.value,[`file-type-${E.type}`]:E.type}]),onClick:I=>U(E.path)},[t(n(st),{class:"file-icon"},{default:s(()=>[t(n(Yt))]),_:1}),t(n(Ye),{content:E.path,placement:"top",disabled:E.displayName.length<=35,"hide-after":1e3,"show-after":200},{default:s(()=>[e("span",Io,A(E.displayName),1)]),_:2},1032,["content","disabled"])],10,Eo))),128))]),_:1})])])):Y("",!0),e("div",{class:ke(["diff-panel",{"full-width":!y.showFileList}])},[e("div",No,[w[3]||(w[3]=e("h4",null,"文件差异",-1)),e("div",Ho,[_.value?(v(),S("span",Jo,A(_.value.split("/").pop()),1)):Y("",!0),y.showOpenButton&&_.value?(v(),S("div",Wo,[t(n(Ye),{content:H.value,placement:"top",effect:"light"},{default:s(()=>[t(n(he),{type:"primary",size:"small",icon:n(eo),onClick:te,class:"open-file-btn"},{default:s(()=>w[1]||(w[1]=[x(" 打开文件 ")])),_:1},8,["icon"])]),_:1},8,["content"]),t(n(Ye),{content:"用VSCode打开文件",placement:"top",effect:"light"},{default:s(()=>[t(n(he),{type:"success",size:"small",onClick:M,class:"vscode-btn"},{default:s(()=>[e("img",{src:n(Ro),alt:"VSCode",class:"vscode-icon"},null,8,qo),w[2]||(w[2]=x(" VSCode "))]),_:1})]),_:1})])):Y("",!0)])]),e("div",Yo,[h.value?(v(),S("div",{key:1,class:"diff-text",innerHTML:n(jo)(y.diffContent)},null,8,Ko)):(v(),Z(n(zt),{key:0,description:_.value?"该文件没有差异内容":"请选择文件查看差异","image-size":80},null,8,["description"]))])],2)],4))}}),Be=(N,r)=>{const l=N.__vccOpts||N;for(const[i,p]of r)l[i]=p;return l},ss=Be(Qo,[["__scopeId","data-v-1640713a"]]),Xo={class:"common-dialog__footer"},Zo=xe({__name:"CommonDialog",props:{modelValue:{type:Boolean},title:{},size:{default:"medium"},type:{default:"default"},width:{},height:{},top:{default:"8vh"},closeOnClickModal:{type:Boolean,default:!1},closeOnPressEscape:{type:Boolean,default:!0},destroyOnClose:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},customClass:{},appendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},showFooter:{type:Boolean,default:!1},confirmText:{default:"确定"},cancelText:{default:"取消"},showCancel:{type:Boolean,default:!0},confirmLoading:{type:Boolean,default:!1}},emits:["update:modelValue","confirm","cancel","close","opened","closed"],setup(N,{emit:r}){const l=N,i=r,p=q(()=>{if(l.width)return l.width;switch(l.size){case"small":return"30%";case"medium":return"50%";case"large":return"80%";case"extra-large":return"90%";default:return"50%"}}),_=q(()=>{if(l.height)return l.height;switch(l.type){case"full-height":return"calc(100vh - 100px)";case"flex":return"calc(100vh - 160px)";default:return"auto"}}),R=q(()=>{const w={};return(l.type==="full-height"||l.type==="flex")&&(w["--dialog-height"]=_.value),w}),h=q(()=>{const w=[];return l.customClass&&w.push(l.customClass),l.type==="flex"&&w.push("common-dialog--flex"),l.type==="full-height"&&w.push("common-dialog--full-height"),w.join(" ")});function U(){i("update:modelValue",!1),i("close")}function te(){i("confirm")}function M(){i("cancel"),U()}function H(){i("opened")}function y(){i("closed")}return(w,E)=>{const I=he;return v(),Z(n(Vt),{"model-value":w.modelValue,title:w.title,width:p.value,top:w.top,style:ft(R.value),"close-on-click-modal":w.closeOnClickModal,"close-on-press-escape":w.closeOnPressEscape,"destroy-on-close":w.destroyOnClose,draggable:w.draggable,class:ke(h.value),"append-to-body":w.appendToBody,"lock-scroll":w.lockScroll,onClose:U,onOpened:H,onClosed:y},to({default:s(()=>[rs(w.$slots,"default",{},void 0,!0)]),_:2},[w.showFooter||w.$slots.footer?{name:"footer",fn:s(()=>[rs(w.$slots,"footer",{},()=>[e("div",Xo,[w.showCancel?(v(),Z(I,{key:0,onClick:M},{default:s(()=>[x(A(w.cancelText),1)]),_:1})):Y("",!0),t(I,{type:"primary",loading:w.confirmLoading,onClick:te},{default:s(()=>[x(A(w.confirmText),1)]),_:1},8,["loading"])])],!0)]),key:"0"}:void 0]),1032,["model-value","title","width","top","style","close-on-click-modal","close-on-press-escape","destroy-on-close","draggable","class","append-to-body","lock-scroll"])}}}),Ft=Be(Zo,[["__scopeId","data-v-c1505473"]]),ea={key:0,class:"file-group"},ta={class:"file-list"},sa=["onClick"],oa={class:"file-info"},aa={class:"file-name-section"},la=["title"],na={class:"file-directory"},ia={class:"file-actions"},ra={key:1,style:{"font-size":"16px","font-weight":"bold"}},ca=xe({__name:"FileGroup",props:{files:{},title:{},groupKey:{},collapsedGroups:{},isFileLocked:{type:Function},getFileName:{type:Function},getFileDirectory:{type:Function}},emits:["toggleCollapse","fileClick","toggleFileLock","stageFile","unstageFile","revertFileChanges"],setup(N,{emit:r}){const l=N,i=r,p=q(()=>l.files.length>0),_=q(()=>l.collapsedGroups[l.groupKey]);function R(){i("toggleCollapse",l.groupKey)}function h(w){i("fileClick",w)}function U(w,E){E.stopPropagation(),i("toggleFileLock",w)}function te(w,E){E.stopPropagation(),i("stageFile",w)}function M(w,E){E.stopPropagation(),i("unstageFile",w)}function H(w,E){E.stopPropagation(),i("revertFileChanges",w)}function y(w){switch(w){case"added":return[{type:"unstage",tooltip:"取消暂存",buttonType:"warning",icon:"-",handler:M}];case"modified":case"deleted":return[{type:"stage",tooltip:"添加到暂存区",buttonType:"success",icon:"+",handler:te},{type:"revert",tooltip:"撤回修改",buttonType:"danger",icon:Qt,handler:H}];case"untracked":return[{type:"stage",tooltip:"添加到暂存区",buttonType:"success",icon:"+",handler:te},{type:"delete",tooltip:"删除文件",buttonType:"danger",icon:Kt,handler:H}];default:return[]}}return(w,E)=>{const I=st,se=Ye,B=he;return p.value?(v(),S("div",ea,[e("div",{class:"file-group-header",onClick:R},[t(I,{class:ke(["collapse-icon",{collapsed:_.value}])},{default:s(()=>[t(n(Rt))]),_:1},8,["class"]),e("span",null,A(w.title),1)]),Xe(e("div",ta,[(v(!0),S(Fe,null,Ae(w.files,C=>(v(),S("div",{key:C.path,class:"file-item",onClick:j=>h(C)},[e("div",oa,[e("div",{class:ke(["file-status-indicator",[C.type,{locked:l.isFileLocked(C.path)}]])},null,2),e("div",aa,[t(se,{content:l.getFileName(C.path),placement:"top",disabled:l.getFileName(C.path).length<=25,"hide-after":1e3,"show-after":200},{default:s(()=>[e("span",{class:ke(["file-name",{"locked-file-name":l.isFileLocked(C.path)}])},[x(A(l.getFileName(C.path))+" ",1),l.isFileLocked(C.path)?(v(),Z(I,{key:0,class:"lock-indicator"},{default:s(()=>[t(n(jt))]),_:1})):Y("",!0)],2)]),_:2},1032,["content","disabled"])]),e("div",{class:"file-path-section",title:l.getFileDirectory(C.path)},[t(se,{content:l.getFileDirectory(C.path),placement:"top",disabled:l.getFileDirectory(C.path).length<=30,"hide-after":1e3,"show-after":200},{default:s(()=>[e("span",na,A(l.getFileDirectory(C.path)),1)]),_:2},1032,["content","disabled"])],8,la)]),e("div",ia,[t(se,{content:l.isFileLocked(C.path)?"解锁文件":"锁定文件",placement:"top","hide-after":1e3,"show-after":200},{default:s(()=>[t(B,{type:l.isFileLocked(C.path)?"danger":"info",size:"small",text:"",onClick:j=>U(C.path,j),class:"file-action-btn"},{default:s(()=>[t(I,{size:"16"},{default:s(()=>[(v(),Z(bt(l.isFileLocked(C.path)?n(jt):n(gs))))]),_:2},1024)]),_:2},1032,["type","onClick"])]),_:2},1032,["content"]),(v(!0),S(Fe,null,Ae(y(C.type),j=>(v(),Z(se,{key:j.type,content:j.tooltip,placement:"top","hide-after":1e3,"show-after":200},{default:s(()=>[t(B,{type:j.buttonType,size:"small",text:"",onClick:ce=>j.handler(C.path,ce),class:"file-action-btn"},{default:s(()=>[typeof j.icon!="string"?(v(),Z(I,{key:0,size:"16"},{default:s(()=>[(v(),Z(bt(j.icon)))]),_:2},1024)):(v(),S("span",ra,A(j.icon),1))]),_:2},1032,["type","onClick"])]),_:2},1032,["content"]))),128))])],8,sa))),128))],512),[[St,!_.value]])])):Y("",!0)}}}),Jt=Be(ca,[["__scopeId","data-v-19d1466f"]]),ua={class:"card"},da={class:"status-header"},fa={class:"header-actions"},pa=["element-loading-text"],ma={key:0,class:"status-box"},va={key:1,class:"status-box-wrap"},ga={key:0,class:"branch-status-info"},ha={class:"branch-sync-status"},ya={class:"sync-status-content"},_a={class:"status-badges"},wa={class:"badge-content"},ka={class:"badge-content"},$a={key:1,class:"file-list-container"},ba={key:2,class:"empty-status"},Ca={class:"empty-icon"},Sa={class:"lock-feature-description"},Ta={class:"description-header"},Fa={key:0,class:"empty-locked-files"},Va={class:"empty-icon"},La={key:1,class:"locked-files-list"},xa={class:"locked-files-header"},Ba={class:"locked-file-items"},Pa={class:"file-info"},za={class:"file-path-container"},ja={class:"file-name"},Da={class:"file-directory"},Oa={class:"file-actions"},Ra={class:"dialog-footer"},Ga=xe({__name:"GitStatus",props:{initialDirectory:{type:String,default:""}},setup(N,{expose:r}){const l=N,i=Qe(),p=ot(),_=q(()=>i.isLoadingStatus),R=d(""),h=d(""),U=d(!1),te=d(!1),M=d(-1),H=q(()=>i.fileList.map(z=>({path:z.path,name:z.path.split("/").pop()||z.path,type:z.type})));async function y(z){await ne(z)}async function w(z,T){try{const X=await(await fetch("/api/open-file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({filePath:z,context:T})})).json();X.success?o.success(X.message):o.error(X.error||"打开文件失败")}catch(ae){o.error(`打开文件失败: ${ae.message}`)}}async function E(z,T){try{const X=await(await fetch("/api/open-with-vscode",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({filePath:z,context:T})})).json();X.success?o.success(X.message):o.error(X.error||"用VSCode打开文件失败")}catch(ae){o.error(`用VSCode打开文件失败: ${ae.message}`)}}const I=d(!1),se=d({staged:!1,unstaged:!1,untracked:!1}),B=d(l.initialDirectory||"");async function C(){try{if(!B.value){const T=await(await fetch("/api/current_directory")).json();B.value=T.directory||"未知目录"}if(!i.isGitRepo)return;await i.fetchStatus(),await i.getBranchStatus(),o({message:"Git 状态已刷新",type:"success"})}catch(z){o({message:"刷新失败: "+z.message,type:"error"})}}async function j(z){try{await He.confirm(`确认解锁该文件?
|
|
5
5
|
${z}`,"确认解锁",{type:"warning",confirmButtonText:"解锁",cancelButtonText:"取消"}),await p.unlockFile(z)}catch{}}async function ce(){if(p.lockedFiles.length)try{await He.confirm(`确认解锁所有已锁定文件?共 ${p.lockedFiles.length} 个。`,"清空全部锁定",{type:"warning",confirmButtonText:"全部解锁",cancelButtonText:"取消"});const z=[...p.lockedFiles];await Promise.all(z.map(T=>p.unlockFile(T))),await p.loadLockedFiles(),o.success("已清空所有文件锁定")}catch{}}async function ne(z){try{te.value=!0,R.value=z,M.value=i.fileList.findIndex(ae=>ae.path===z);const T=i.fileList[M.value];if(T&&T.type==="untracked")try{const X=await(await fetch(`/api/file-content?file=${encodeURIComponent(z)}`)).json();X.success&&X.content?h.value=`diff --git a/${z} b/${z}
|
|
6
6
|
新文件: ${z}
|
|
7
7
|
--- /dev/null
|
package/src/ui/public/index.html
CHANGED
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Zen-GitSync - Git同步工具</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-C0pJBE1x.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/vendor-Cw2fOyGk.js">
|
|
10
10
|
<link rel="stylesheet" crossorigin href="/assets/vendor-BLnrYq3C.css">
|
|
11
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
11
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BnGk9kfZ.css">
|
|
12
12
|
</head>
|
|
13
13
|
<body>
|
|
14
14
|
<div id="app"></div>
|
package/src/ui/server/index.js
CHANGED
|
@@ -2129,7 +2129,9 @@ async function startUIServer(noOpen = false, savePort = false) {
|
|
|
2129
2129
|
const path = (await import('path')).default;
|
|
2130
2130
|
const fs = (await import('fs')).default;
|
|
2131
2131
|
|
|
2132
|
-
//
|
|
2132
|
+
// 过滤出未锁定且需要包含在 stash 中的路径(文件或目录)
|
|
2133
|
+
// 注意:当 includeUntracked === true 时,允许把未跟踪目录作为 pathspec 传给
|
|
2134
|
+
// `git stash push -u -- <pathspec>`,这样可正确包含新建目录内的未跟踪文件。
|
|
2133
2135
|
const filesToStash = [];
|
|
2134
2136
|
for (const item of changedFiles) {
|
|
2135
2137
|
const { status, filename } = item;
|
|
@@ -2142,20 +2144,26 @@ async function startUIServer(noOpen = false, savePort = false) {
|
|
|
2142
2144
|
});
|
|
2143
2145
|
|
|
2144
2146
|
if (!isLocked) {
|
|
2145
|
-
// 检查文件是否存在(排除已删除的文件和目录)
|
|
2146
2147
|
try {
|
|
2147
2148
|
const fullPath = path.resolve(filename);
|
|
2148
2149
|
const stats = fs.statSync(fullPath);
|
|
2149
|
-
//
|
|
2150
|
+
// 1) 已存在的普通文件:始终包含
|
|
2150
2151
|
if (stats.isFile()) {
|
|
2151
2152
|
filesToStash.push(filename);
|
|
2153
|
+
} else if (stats.isDirectory()) {
|
|
2154
|
+
// 2) 目录:当勾选了 includeUntracked 时,允许把目录作为 pathspec
|
|
2155
|
+
// 这样 `git stash push -u -- <dir>` 会把目录中的未跟踪文件也一并保存
|
|
2156
|
+
if (includeUntracked) {
|
|
2157
|
+
filesToStash.push(filename);
|
|
2158
|
+
}
|
|
2152
2159
|
}
|
|
2153
2160
|
} catch (error) {
|
|
2161
|
+
// 3) 文件系统不可达的情况
|
|
2154
2162
|
// 对于已删除的文件(D状态),我们仍然需要包含它们
|
|
2155
2163
|
if (status.includes('D')) {
|
|
2156
2164
|
filesToStash.push(filename);
|
|
2157
2165
|
}
|
|
2158
|
-
//
|
|
2166
|
+
// 其他情况(如路径不存在且不是删除状态)则跳过
|
|
2159
2167
|
}
|
|
2160
2168
|
}
|
|
2161
2169
|
}
|
|
@@ -2277,7 +2285,7 @@ async function startUIServer(noOpen = false, savePort = false) {
|
|
|
2277
2285
|
}
|
|
2278
2286
|
});
|
|
2279
2287
|
|
|
2280
|
-
// 获取stash
|
|
2288
|
+
// 获取stash中的文件列表(包含未跟踪文件)
|
|
2281
2289
|
app.get('/api/stash-files', async (req, res) => {
|
|
2282
2290
|
try {
|
|
2283
2291
|
const { stashId } = req.query;
|
|
@@ -2291,12 +2299,31 @@ async function startUIServer(noOpen = false, savePort = false) {
|
|
|
2291
2299
|
|
|
2292
2300
|
console.log(`获取stash文件列表: stashId=${stashId}`);
|
|
2293
2301
|
|
|
2294
|
-
//
|
|
2295
|
-
const { stdout } = await execGitCommand(`git
|
|
2296
|
-
|
|
2297
|
-
|
|
2298
|
-
const
|
|
2299
|
-
|
|
2302
|
+
// 0) 解析出当前 stash 提交及其父提交哈希,避免在 Windows 上使用 ^ 语法
|
|
2303
|
+
const { stdout: parentsLine } = await execGitCommand(`git rev-list --parents -n 1 ${stashId}`, { log: false });
|
|
2304
|
+
const hashes = parentsLine.trim().split(/\s+/).filter(Boolean);
|
|
2305
|
+
const stashCommit = hashes[0] || '';
|
|
2306
|
+
const parent1 = hashes[1] || '';
|
|
2307
|
+
const parent3 = hashes[3] || ''; // 当包含未跟踪文件时,第三父才存在
|
|
2308
|
+
|
|
2309
|
+
// 1) 跟踪文件的变更列表:父1 与 stash 提交的差异(若无父1则为空)
|
|
2310
|
+
let trackedFiles = [];
|
|
2311
|
+
if (parent1) {
|
|
2312
|
+
const { stdout: trackedOut } = await execGitCommand(`git diff --name-only ${parent1} ${stashCommit}`, { log: false });
|
|
2313
|
+
trackedFiles = trackedOut.split('\n').map(s => s.trim()).filter(Boolean);
|
|
2314
|
+
}
|
|
2315
|
+
|
|
2316
|
+
// 2) 未跟踪文件:来自第三父(若存在)
|
|
2317
|
+
let untrackedFiles = [];
|
|
2318
|
+
if (parent3) {
|
|
2319
|
+
const { stdout: untrackedOut } = await execGitCommand(`git ls-tree -r --name-only ${parent3}`, { log: false });
|
|
2320
|
+
untrackedFiles = untrackedOut.split('\n').map(s => s.trim()).filter(Boolean);
|
|
2321
|
+
}
|
|
2322
|
+
|
|
2323
|
+
// 合并并去重
|
|
2324
|
+
const fileSet = new Set([ ...trackedFiles, ...untrackedFiles ]);
|
|
2325
|
+
const files = Array.from(fileSet);
|
|
2326
|
+
console.log(`找到${files.length}个stash文件(含未跟踪):`, files);
|
|
2300
2327
|
|
|
2301
2328
|
res.json({
|
|
2302
2329
|
success: true,
|
|
@@ -2311,7 +2338,7 @@ async function startUIServer(noOpen = false, savePort = false) {
|
|
|
2311
2338
|
}
|
|
2312
2339
|
});
|
|
2313
2340
|
|
|
2314
|
-
// 获取stash
|
|
2341
|
+
// 获取stash中特定文件的差异(包含未跟踪文件)
|
|
2315
2342
|
app.get('/api/stash-file-diff', async (req, res) => {
|
|
2316
2343
|
try {
|
|
2317
2344
|
const { stashId, file } = req.query;
|
|
@@ -2324,21 +2351,52 @@ async function startUIServer(noOpen = false, savePort = false) {
|
|
|
2324
2351
|
}
|
|
2325
2352
|
|
|
2326
2353
|
console.log(`获取stash文件差异: stashId=${stashId}, file=${file}`);
|
|
2327
|
-
|
|
2328
|
-
//
|
|
2329
|
-
|
|
2330
|
-
const
|
|
2354
|
+
|
|
2355
|
+
// 先解析父提交哈希,避免使用 ^ 语法
|
|
2356
|
+
const { stdout: parentsLine } = await execGitCommand(`git rev-list --parents -n 1 ${stashId}`, { log: false });
|
|
2357
|
+
const hashes = parentsLine.trim().split(/\s+/).filter(Boolean);
|
|
2358
|
+
const stashCommit = hashes[0] || '';
|
|
2359
|
+
const parent1 = hashes[1] || '';
|
|
2360
|
+
const parent3 = hashes[3] || '';
|
|
2361
|
+
|
|
2362
|
+
// 检查该文件是否来自第三父(未跟踪文件)
|
|
2363
|
+
let isFromThirdParent = false;
|
|
2364
|
+
if (parent3) {
|
|
2365
|
+
try {
|
|
2366
|
+
await execGitCommand(`git cat-file -e ${parent3}:"${file}"`, { log: false });
|
|
2367
|
+
isFromThirdParent = true;
|
|
2368
|
+
} catch (_) {
|
|
2369
|
+
isFromThirdParent = false;
|
|
2370
|
+
}
|
|
2371
|
+
}
|
|
2372
|
+
|
|
2373
|
+
if (isFromThirdParent) {
|
|
2374
|
+
// 未跟踪文件:读取第三父中的内容,构造新增文件的统一diff
|
|
2375
|
+
const { stdout: blob } = await execGitCommand(`git show ${parent3}:"${file}"`, { log: false });
|
|
2376
|
+
const lines = blob.endsWith('\n') ? blob.slice(0, -1).split('\n') : blob.split('\n');
|
|
2377
|
+
const lineCount = lines.filter(() => true).length; // 保持计数正确
|
|
2378
|
+
const plusLines = lines.map(l => `+${l}`).join('\n');
|
|
2379
|
+
const diffText = [
|
|
2380
|
+
`diff --git a/${file} b/${file}`,
|
|
2381
|
+
`new file mode 100644`,
|
|
2382
|
+
`--- /dev/null`,
|
|
2383
|
+
`+++ b/${file}`,
|
|
2384
|
+
`@@ -0,0 +${lineCount} @@`,
|
|
2385
|
+
`${plusLines}`
|
|
2386
|
+
].join('\n');
|
|
2387
|
+
|
|
2388
|
+
return res.json({ success: true, diff: diffText });
|
|
2389
|
+
}
|
|
2390
|
+
|
|
2391
|
+
// 否则,使用原有方式获取与父1的变更(直接针对 stash 提交显示该文件的变化)
|
|
2392
|
+
const { stdout } = await execGitCommand(`git show ${stashCommit} -- "${file}"`);
|
|
2331
2393
|
|
|
2332
2394
|
console.log(`获取到差异内容,长度: ${stdout.length}`);
|
|
2333
|
-
// 如果差异内容太长,只打印前100个字符
|
|
2334
2395
|
if (stdout.length > 100) {
|
|
2335
2396
|
console.log(`差异内容预览: ${stdout.substring(0, 100)}...`);
|
|
2336
2397
|
}
|
|
2337
2398
|
|
|
2338
|
-
res.json({
|
|
2339
|
-
success: true,
|
|
2340
|
-
diff: stdout
|
|
2341
|
-
});
|
|
2399
|
+
res.json({ success: true, diff: stdout });
|
|
2342
2400
|
} catch (error) {
|
|
2343
2401
|
console.error('获取stash文件差异失败:', error);
|
|
2344
2402
|
res.status(500).json({
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@charset "UTF-8";[data-v-1640713a]:root{--color-primary: #409eff;--color-primary-light: #5a67d8;--color-primary-dark: #337ecc;--color-primary-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);--color-primary-gradient-hover: linear-gradient(135deg, #5a67d8 0%, #6b46c1 100%);--color-success: #67c23a;--color-success-light: #10b981;--color-warning: #e6a23c;--color-warning-light: #f59e0b;--color-danger: #f56c6c;--color-danger-light: #ef4444;--color-danger-dark: #dc2626;--color-info: #909399;--color-info-light: #8b5cf6;--color-white: #ffffff;--color-black: #000000;--color-gray-50: #f9fafb;--color-gray-100: #f3f4f6;--color-gray-200: #e5e7eb;--color-gray-300: #d1d5db;--color-gray-400: #9ca3af;--color-gray-500: #6b7280;--color-gray-600: #4b5563;--color-gray-700: #374151;--color-gray-800: #1f2937;--color-gray-900: #111827;--git-status-added: #10b981;--git-status-modified: #f59e0b;--git-status-deleted: #ef4444;--git-status-untracked: #8b5cf6;--git-status-locked: #dc2626;--git-diff-header-bg: #f1f8ff;--git-diff-header-color: #0366d6;--git-diff-header-border: #c8e1ff;--git-diff-added-bg: #e6ffed;--git-diff-added-color: #22863a;--git-diff-added-border: #22863a;--git-diff-removed-bg: #ffeef0;--git-diff-removed-color: #cb2431;--git-diff-removed-border: #cb2431;--git-diff-hunk-bg: #f1f8ff;--git-diff-hunk-color: #6f42c1;--git-diff-context-color: #24292f;--git-diff-context-bg: #ffffff;--btn-primary-bg: var(--color-primary);--btn-primary-hover-bg: var(--color-primary-light);--btn-primary-active-bg: var(--color-primary-dark);--btn-primary-color: var(--color-white);--btn-success-bg: var(--color-success);--btn-success-hover-bg: #85ce61;--btn-success-active-bg: #5daf34;--btn-success-color: var(--color-white);--btn-warning-bg: var(--color-warning);--btn-warning-hover-bg: #ebb563;--btn-warning-active-bg: #cf9236;--btn-warning-color: var(--color-white);--btn-danger-bg: var(--color-danger);--btn-danger-hover-bg: #f78989;--btn-danger-active-bg: #dd6161;--btn-danger-color: var(--color-white);--btn-info-bg: var(--color-info);--btn-info-hover-bg: #a6a9ad;--btn-info-active-bg: #82848a;--btn-info-color: var(--color-white);--btn-text-color: var(--color-primary);--btn-text-hover-color: var(--color-primary-light);--btn-text-active-color: var(--color-primary-dark);--bg-page: #f5f5f5;--bg-page-dark: #2d2d2d;--bg-container: var(--color-white);--bg-container-hover: #f8fafc;--bg-container-dark: #24292e;--bg-overlay: rgba(40, 44, 52, .7);--bg-overlay-light: rgba(0, 0, 0, .2);--bg-code: #f6f8fa;--bg-code-dark: #2d2d2d;--bg-code-line: #fafbfc;--border-color: rgba(0, 0, 0, .06);--border-color-light: rgba(0, 0, 0, .03);--border-color-medium: #e1e4e8;--border-color-dark: rgba(255, 255, 255, .15);--border-hover: rgba(102, 126, 234, .15);--border-focus: var(--color-primary);--border-active: var(--color-primary-dark);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .04);--shadow-base: 0 1px 4px rgba(0, 0, 0, .04);--shadow-md: 0 2px 8px rgba(0, 0, 0, .08);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .08);--shadow-xl: 0 8px 24px rgba(0, 0, 0, .12);--shadow-hover: 0 4px 12px rgba(0, 0, 0, .08);--shadow-active: 0 2px 6px rgba(0, 0, 0, .12);--shadow-focus: 0 0 0 2px rgba(64, 158, 255, .2);--shadow-dark: 0 2px 10px rgba(0, 0, 0, .2);--shadow-dark-lg: 0 4px 16px rgba(0, 0, 0, .3);--text-primary: #1f2937;--text-primary-dark: #f8f8f2;--text-secondary: #606266;--text-secondary-dark: #e0e0e0;--text-tertiary: #9ca3af;--text-tertiary-dark: rgba(255, 255, 255, .6);--text-placeholder: #c0c4cc;--text-placeholder-dark: rgba(255, 255, 255, .4);--text-link: var(--color-primary);--text-link-hover: var(--color-primary-light);--text-link-active: var(--color-primary-dark);--text-success: var(--color-success);--text-warning: var(--color-warning);--text-danger: var(--color-danger);--text-info: var(--color-info);--radius-xs: 2px;--radius-sm: 3px;--radius-base: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-full: 50%;--spacing-xs: 2px;--spacing-sm: 4px;--spacing-base: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 20px;--spacing-2xl: 24px;--spacing-3xl: 32px;--font-size-xs: 10px;--font-size-sm: 12px;--font-size-base: 13px;--font-size-md: 14px;--font-size-lg: 16px;--font-size-xl: 18px;--font-size-2xl: 20px;--font-size-3xl: 24px;--line-height-tight: 1.2;--line-height-normal: 1.4;--line-height-relaxed: 1.6;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--transition-fast: .1s;--transition-base: .2s;--transition-slow: .3s;--ease-in: ease-in;--ease-out: ease-out;--ease-in-out: ease-in-out;--ease-custom: cubic-bezier(.4, 0, .2, 1);--transition-all: all var(--transition-base) var(--ease-custom);--transition-color: color var(--transition-base) var(--ease-custom);--transition-bg: background-color var(--transition-base) var(--ease-custom);--transition-border: border-color var(--transition-base) var(--ease-custom);--transition-shadow: box-shadow var(--transition-base) var(--ease-custom);--transition-transform: transform var(--transition-base) var(--ease-custom);--z-dropdown: 1000;--z-sticky: 1020;--z-fixed: 1030;--z-modal-backdrop: 1040;--z-modal: 1050;--z-popover: 1060;--z-tooltip: 1070;--z-toast: 1080;--scrollbar-track: transparent;--scrollbar-thumb: rgba(144, 147, 153, .3);--scrollbar-thumb-hover: rgba(144, 147, 153, .5);--scrollbar-width: 6px;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Monaco, Inconsolata, "Roboto Mono", "Droid Sans Mono", Consolas, "Courier New", monospace}[data-theme=dark][data-v-1640713a]{--bg-page: var(--bg-page-dark);--bg-container: var(--bg-container-dark);--text-primary: var(--text-primary-dark);--text-secondary: var(--text-secondary-dark);--text-tertiary: var(--text-tertiary-dark);--text-placeholder: var(--text-placeholder-dark);--border-color: var(--border-color-dark);--border-color-light: rgba(255, 255, 255, .08);--border-color-medium: rgba(255, 255, 255, .12);--shadow-base: var(--shadow-dark);--shadow-lg: var(--shadow-dark-lg);--git-diff-context-bg: #24292e;--git-diff-context-color: #f8f8f2}.bg-gradient-primary[data-v-1640713a]{background:var(--color-primary-gradient)}.bg-gradient-primary-hover[data-v-1640713a]{background:var(--color-primary-gradient-hover)}.text-git-added[data-v-1640713a]{color:var(--git-status-added)}.text-git-modified[data-v-1640713a]{color:var(--git-status-modified)}.text-git-deleted[data-v-1640713a]{color:var(--git-status-deleted)}.text-git-untracked[data-v-1640713a]{color:var(--git-status-untracked)}.text-git-locked[data-v-1640713a]{color:var(--git-status-locked)}.bg-git-added[data-v-1640713a]{background-color:var(--git-status-added)}.bg-git-modified[data-v-1640713a]{background-color:var(--git-status-modified)}.bg-git-deleted[data-v-1640713a]{background-color:var(--git-status-deleted)}.bg-git-untracked[data-v-1640713a]{background-color:var(--git-status-untracked)}.bg-git-locked[data-v-1640713a]{background-color:var(--git-status-locked)}.shadow-sm[data-v-1640713a]{box-shadow:var(--shadow-sm)}.shadow-base[data-v-1640713a]{box-shadow:var(--shadow-base)}.shadow-md[data-v-1640713a]{box-shadow:var(--shadow-md)}.shadow-lg[data-v-1640713a]{box-shadow:var(--shadow-lg)}.shadow-xl[data-v-1640713a]{box-shadow:var(--shadow-xl)}.transition-all[data-v-1640713a]{transition:var(--transition-all)}.transition-color[data-v-1640713a]{transition:var(--transition-color)}.transition-bg[data-v-1640713a]{transition:var(--transition-bg)}.transition-border[data-v-1640713a]{transition:var(--transition-border)}.transition-shadow[data-v-1640713a]{transition:var(--transition-shadow)}.transition-transform[data-v-1640713a]{transition:var(--transition-transform)}.file-diff-viewer[data-v-1640713a]{display:flex;border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;background-color:var(--bg-container);height:100%;flex:1;min-height:0;box-shadow:var(--shadow-base);transition:var(--transition-all)}.files-panel[data-v-1640713a]{width:300px;min-width:250px;background:#fafbfc;border-right:1px solid var(--border-color);display:flex;flex-direction:column;box-shadow:inset -1px 0 0 var(--border-color-light)}.diff-panel[data-v-1640713a]{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--bg-container)}.diff-panel.full-width[data-v-1640713a]{width:100%}.panel-header[data-v-1640713a]{padding:var(--spacing-md) var(--spacing-lg);background:#fff;color:#303133;border-bottom:1px solid #e4e7ed;display:flex;justify-content:space-between;align-items:center;box-shadow:0 1px 3px #0000000d}.panel-header h4[data-v-1640713a]{margin:0;font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:#303133}.header-right[data-v-1640713a]{display:flex;align-items:center;gap:var(--spacing-sm)}.action-buttons[data-v-1640713a]{display:flex;align-items:center;gap:var(--spacing-xs)}.open-file-btn[data-v-1640713a]{border-radius:var(--radius-sm);font-size:var(--font-size-xs);padding:var(--spacing-xs) var(--spacing-sm);transition:all .3s ease}.open-file-btn[data-v-1640713a]:hover{transform:translateY(-1px);box-shadow:0 2px 8px #409eff4d}.vscode-btn[data-v-1640713a]{border-radius:var(--radius-sm);font-size:var(--font-size-xs);padding:var(--spacing-xs) var(--spacing-sm);transition:all .3s ease;display:flex;align-items:center;gap:4px}.vscode-btn[data-v-1640713a]:hover{transform:translateY(-1px);box-shadow:0 2px 8px #67c23a4d}.vscode-icon[data-v-1640713a]{width:16px;height:16px;object-fit:contain}.file-count[data-v-1640713a]{font-size:var(--font-size-xs);color:#606266;font-weight:var(--font-weight-medium);background:#f5f7fa;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-full);border:1px solid #e4e7ed}.selected-file[data-v-1640713a]{font-size:var(--font-size-xs);color:#606266;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#f0f2f5;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);border:1px solid #d9d9d9}.files-list[data-v-1640713a]{flex:1;min-height:0;overflow:hidden;background:#fff}.file-item[data-v-1640713a]{display:flex;align-items:center;padding:var(--spacing-base) var(--spacing-lg);cursor:pointer;transition:var(--transition-all);border-bottom:1px solid rgba(255,255,255,.1);position:relative;background:transparent}.file-item[data-v-1640713a]:before{content:"";position:absolute;left:0;top:0;width:3px;height:100%;background:transparent;transition:var(--transition-all)}.file-item[data-v-1640713a]:hover{background:#f5f7fa;transform:translate(2px)}.file-item[data-v-1640713a]:hover:before{background:#409eff}.file-item.active[data-v-1640713a]{background:#e6f7ff;color:#1890ff;border-left:3px solid #1890ff}.file-item.active[data-v-1640713a]:before{background:#1890ff;width:4px}.file-item.active .file-icon[data-v-1640713a]{color:#1890ff}.file-item.file-type-added[data-v-1640713a]:before{background:var(--git-status-added)}.file-item.file-type-added[data-v-1640713a]:not(.active):hover{background:linear-gradient(90deg,#10b9811a,#fffc)}.file-item.file-type-added[data-v-1640713a]:not(.active):hover:before{background:var(--git-status-added);width:4px}.file-item.file-type-modified[data-v-1640713a]:before{background:var(--git-status-modified)}.file-item.file-type-modified[data-v-1640713a]:not(.active):hover{background:linear-gradient(90deg,#f59e0b1a,#fffc)}.file-item.file-type-modified[data-v-1640713a]:not(.active):hover:before{background:var(--git-status-modified);width:4px}.file-item.file-type-deleted[data-v-1640713a]:before{background:var(--git-status-deleted)}.file-item.file-type-deleted[data-v-1640713a]:not(.active):hover{background:linear-gradient(90deg,#ef44441a,#fffc)}.file-item.file-type-deleted[data-v-1640713a]:not(.active):hover:before{background:var(--git-status-deleted);width:4px}.file-item.file-type-untracked[data-v-1640713a]:before{background:var(--git-status-untracked)}.file-item.file-type-untracked[data-v-1640713a]:not(.active):hover{background:linear-gradient(90deg,#8b5cf61a,#fffc)}.file-item.file-type-untracked[data-v-1640713a]:not(.active):hover:before{background:var(--git-status-untracked);width:4px}.file-icon[data-v-1640713a]{margin-right:var(--spacing-base);color:var(--text-secondary);font-size:var(--font-size-lg);flex-shrink:0;transition:var(--transition-color)}.file-name[data-v-1640713a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-primary);transition:var(--transition-color)}.active .file-name[data-v-1640713a]{color:#1890ff;font-weight:var(--font-weight-semibold)}.diff-content[data-v-1640713a]{flex:1;padding:var(--spacing-lg);overflow:auto;background:var(--bg-container);min-height:0}.diff-content .diff-text[data-v-1640713a]{font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:var(--line-height-normal);white-space:pre-wrap;word-break:break-all;height:100%;padding:var(--spacing-md);background:var(--bg-code);border-radius:var(--radius-base);border:1px solid var(--border-color-light)}[data-v-1640713a] .el-scrollbar__view{height:100%}[data-v-1640713a] .el-scrollbar__bar .el-scrollbar__thumb{background-color:var(--scrollbar-thumb)}[data-v-1640713a] .el-scrollbar__bar .el-scrollbar__thumb:hover{background-color:var(--scrollbar-thumb-hover)}.diff-text[data-v-1640713a]{border-radius:var(--radius-base);background:var(--bg-code);border:1px solid var(--border-color-light)}.file-diff-dialog.common-dialog--flex .el-dialog__body,.stash-detail-dialog.common-dialog--flex .el-dialog__body,.commit-detail-dialog.common-dialog--flex .el-dialog__body{height:calc(100vh - 200px)!important;padding:12px!important;display:flex!important;flex-direction:column!important;overflow:hidden!important}[data-v-c1505473] .common-dialog--flex .el-dialog{display:flex;flex-direction:column;height:var(--dialog-height, auto)!important;max-height:90vh}[data-v-c1505473] .common-dialog--flex .el-dialog__body{display:flex;flex-direction:column;flex:1;padding:16px;box-sizing:border-box;overflow:hidden;min-height:0}[data-v-c1505473] .common-dialog--full-height .el-dialog{display:flex;flex-direction:column;height:var(--dialog-height, auto)}[data-v-c1505473] .common-dialog--full-height .el-dialog__body{display:flex;flex-direction:column;flex:1;overflow:hidden;padding:12px;box-sizing:border-box;min-height:0}[data-v-c1505473] .commit-detail-dialog.common-dialog--flex .el-dialog__body,[data-v-c1505473] .file-diff-dialog.common-dialog--flex .el-dialog__body,[data-v-c1505473] .stash-detail-dialog.common-dialog--flex .el-dialog__body{height:calc(100vh - 200px)!important;padding:12px!important;display:flex!important;flex-direction:column!important;overflow:hidden!important}.common-dialog__footer[data-v-c1505473]{display:flex;gap:12px;justify-content:flex-end}.common-dialog__footer .el-button[data-v-c1505473]{min-width:80px}[data-v-1197e0f9]:root{--color-primary: #409eff;--color-primary-light: #5a67d8;--color-primary-dark: #337ecc;--color-primary-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);--color-primary-gradient-hover: linear-gradient(135deg, #5a67d8 0%, #6b46c1 100%);--color-success: #67c23a;--color-success-light: #10b981;--color-warning: #e6a23c;--color-warning-light: #f59e0b;--color-danger: #f56c6c;--color-danger-light: #ef4444;--color-danger-dark: #dc2626;--color-info: #909399;--color-info-light: #8b5cf6;--color-white: #ffffff;--color-black: #000000;--color-gray-50: #f9fafb;--color-gray-100: #f3f4f6;--color-gray-200: #e5e7eb;--color-gray-300: #d1d5db;--color-gray-400: #9ca3af;--color-gray-500: #6b7280;--color-gray-600: #4b5563;--color-gray-700: #374151;--color-gray-800: #1f2937;--color-gray-900: #111827;--git-status-added: #10b981;--git-status-modified: #f59e0b;--git-status-deleted: #ef4444;--git-status-untracked: #8b5cf6;--git-status-locked: #dc2626;--git-diff-header-bg: #f1f8ff;--git-diff-header-color: #0366d6;--git-diff-header-border: #c8e1ff;--git-diff-added-bg: #e6ffed;--git-diff-added-color: #22863a;--git-diff-added-border: #22863a;--git-diff-removed-bg: #ffeef0;--git-diff-removed-color: #cb2431;--git-diff-removed-border: #cb2431;--git-diff-hunk-bg: #f1f8ff;--git-diff-hunk-color: #6f42c1;--git-diff-context-color: #24292f;--git-diff-context-bg: #ffffff;--btn-primary-bg: var(--color-primary);--btn-primary-hover-bg: var(--color-primary-light);--btn-primary-active-bg: var(--color-primary-dark);--btn-primary-color: var(--color-white);--btn-success-bg: var(--color-success);--btn-success-hover-bg: #85ce61;--btn-success-active-bg: #5daf34;--btn-success-color: var(--color-white);--btn-warning-bg: var(--color-warning);--btn-warning-hover-bg: #ebb563;--btn-warning-active-bg: #cf9236;--btn-warning-color: var(--color-white);--btn-danger-bg: var(--color-danger);--btn-danger-hover-bg: #f78989;--btn-danger-active-bg: #dd6161;--btn-danger-color: var(--color-white);--btn-info-bg: var(--color-info);--btn-info-hover-bg: #a6a9ad;--btn-info-active-bg: #82848a;--btn-info-color: var(--color-white);--btn-text-color: var(--color-primary);--btn-text-hover-color: var(--color-primary-light);--btn-text-active-color: var(--color-primary-dark);--bg-page: #f5f5f5;--bg-page-dark: #2d2d2d;--bg-container: var(--color-white);--bg-container-hover: #f8fafc;--bg-container-dark: #24292e;--bg-overlay: rgba(40, 44, 52, .7);--bg-overlay-light: rgba(0, 0, 0, .2);--bg-code: #f6f8fa;--bg-code-dark: #2d2d2d;--bg-code-line: #fafbfc;--border-color: rgba(0, 0, 0, .06);--border-color-light: rgba(0, 0, 0, .03);--border-color-medium: #e1e4e8;--border-color-dark: rgba(255, 255, 255, .15);--border-hover: rgba(102, 126, 234, .15);--border-focus: var(--color-primary);--border-active: var(--color-primary-dark);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .04);--shadow-base: 0 1px 4px rgba(0, 0, 0, .04);--shadow-md: 0 2px 8px rgba(0, 0, 0, .08);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .08);--shadow-xl: 0 8px 24px rgba(0, 0, 0, .12);--shadow-hover: 0 4px 12px rgba(0, 0, 0, .08);--shadow-active: 0 2px 6px rgba(0, 0, 0, .12);--shadow-focus: 0 0 0 2px rgba(64, 158, 255, .2);--shadow-dark: 0 2px 10px rgba(0, 0, 0, .2);--shadow-dark-lg: 0 4px 16px rgba(0, 0, 0, .3);--text-primary: #1f2937;--text-primary-dark: #f8f8f2;--text-secondary: #606266;--text-secondary-dark: #e0e0e0;--text-tertiary: #9ca3af;--text-tertiary-dark: rgba(255, 255, 255, .6);--text-placeholder: #c0c4cc;--text-placeholder-dark: rgba(255, 255, 255, .4);--text-link: var(--color-primary);--text-link-hover: var(--color-primary-light);--text-link-active: var(--color-primary-dark);--text-success: var(--color-success);--text-warning: var(--color-warning);--text-danger: var(--color-danger);--text-info: var(--color-info);--radius-xs: 2px;--radius-sm: 3px;--radius-base: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-full: 50%;--spacing-xs: 2px;--spacing-sm: 4px;--spacing-base: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 20px;--spacing-2xl: 24px;--spacing-3xl: 32px;--font-size-xs: 10px;--font-size-sm: 12px;--font-size-base: 13px;--font-size-md: 14px;--font-size-lg: 16px;--font-size-xl: 18px;--font-size-2xl: 20px;--font-size-3xl: 24px;--line-height-tight: 1.2;--line-height-normal: 1.4;--line-height-relaxed: 1.6;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--transition-fast: .1s;--transition-base: .2s;--transition-slow: .3s;--ease-in: ease-in;--ease-out: ease-out;--ease-in-out: ease-in-out;--ease-custom: cubic-bezier(.4, 0, .2, 1);--transition-all: all var(--transition-base) var(--ease-custom);--transition-color: color var(--transition-base) var(--ease-custom);--transition-bg: background-color var(--transition-base) var(--ease-custom);--transition-border: border-color var(--transition-base) var(--ease-custom);--transition-shadow: box-shadow var(--transition-base) var(--ease-custom);--transition-transform: transform var(--transition-base) var(--ease-custom);--z-dropdown: 1000;--z-sticky: 1020;--z-fixed: 1030;--z-modal-backdrop: 1040;--z-modal: 1050;--z-popover: 1060;--z-tooltip: 1070;--z-toast: 1080;--scrollbar-track: transparent;--scrollbar-thumb: rgba(144, 147, 153, .3);--scrollbar-thumb-hover: rgba(144, 147, 153, .5);--scrollbar-width: 6px;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Monaco, Inconsolata, "Roboto Mono", "Droid Sans Mono", Consolas, "Courier New", monospace}[data-theme=dark][data-v-1197e0f9]{--bg-page: var(--bg-page-dark);--bg-container: var(--bg-container-dark);--text-primary: var(--text-primary-dark);--text-secondary: var(--text-secondary-dark);--text-tertiary: var(--text-tertiary-dark);--text-placeholder: var(--text-placeholder-dark);--border-color: var(--border-color-dark);--border-color-light: rgba(255, 255, 255, .08);--border-color-medium: rgba(255, 255, 255, .12);--shadow-base: var(--shadow-dark);--shadow-lg: var(--shadow-dark-lg);--git-diff-context-bg: #24292e;--git-diff-context-color: #f8f8f2}.bg-gradient-primary[data-v-1197e0f9]{background:var(--color-primary-gradient)}.bg-gradient-primary-hover[data-v-1197e0f9]{background:var(--color-primary-gradient-hover)}.text-git-added[data-v-1197e0f9]{color:var(--git-status-added)}.text-git-modified[data-v-1197e0f9]{color:var(--git-status-modified)}.text-git-deleted[data-v-1197e0f9]{color:var(--git-status-deleted)}.text-git-untracked[data-v-1197e0f9]{color:var(--git-status-untracked)}.text-git-locked[data-v-1197e0f9]{color:var(--git-status-locked)}.bg-git-added[data-v-1197e0f9]{background-color:var(--git-status-added)}.bg-git-modified[data-v-1197e0f9]{background-color:var(--git-status-modified)}.bg-git-deleted[data-v-1197e0f9]{background-color:var(--git-status-deleted)}.bg-git-untracked[data-v-1197e0f9]{background-color:var(--git-status-untracked)}.bg-git-locked[data-v-1197e0f9]{background-color:var(--git-status-locked)}.shadow-sm[data-v-1197e0f9]{box-shadow:var(--shadow-sm)}.shadow-base[data-v-1197e0f9]{box-shadow:var(--shadow-base)}.shadow-md[data-v-1197e0f9]{box-shadow:var(--shadow-md)}.shadow-lg[data-v-1197e0f9]{box-shadow:var(--shadow-lg)}.shadow-xl[data-v-1197e0f9]{box-shadow:var(--shadow-xl)}.transition-all[data-v-1197e0f9]{transition:var(--transition-all)}.transition-color[data-v-1197e0f9]{transition:var(--transition-color)}.transition-bg[data-v-1197e0f9]{transition:var(--transition-bg)}.transition-border[data-v-1197e0f9]{transition:var(--transition-border)}.transition-shadow[data-v-1197e0f9]{transition:var(--transition-shadow)}.transition-transform[data-v-1197e0f9]{transition:var(--transition-transform)}.file-group[data-v-1197e0f9]{margin-bottom:var(--spacing-md);border-radius:var(--radius-md);overflow:hidden;background:var(--bg-container);box-shadow:var(--shadow-base);border:1px solid var(--border-color);transition:var(--transition-all)}.file-group[data-v-1197e0f9]:hover{box-shadow:var(--shadow-hover)}.file-group-header[data-v-1197e0f9]{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);background:#f8f9fa;cursor:pointer;font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);color:#303133;transition:var(--transition-all);position:relative;border-bottom:1px solid #e4e7ed}.file-group-header[data-v-1197e0f9]:hover{background:#f0f2f5}.collapse-icon[data-v-1197e0f9]{transition:var(--transition-transform);font-size:var(--font-size-sm);color:#606266}.collapse-icon.collapsed[data-v-1197e0f9]{transform:rotate(-90deg)}.file-list[data-v-1197e0f9]{display:flex;flex-direction:column;padding:var(--spacing-sm);gap:1px}.file-item[data-v-1197e0f9]{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-sm) var(--spacing-base);background:var(--bg-container);border-radius:var(--radius-base);cursor:pointer;transition:var(--transition-bg),var(--transition-shadow);border:1px solid var(--border-color-light);height:28px;box-sizing:border-box;position:relative}.file-item[data-v-1197e0f9]:before{content:"";position:absolute;left:0;top:0;width:3px;height:100%;background:transparent;transition:var(--transition-all);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.file-item[data-v-1197e0f9]:hover{background:var(--bg-container-hover);border-color:var(--border-hover)}.file-item[data-v-1197e0f9]:hover:before{background:#409eff}.file-info[data-v-1197e0f9]{display:flex;align-items:center;gap:var(--spacing-md);flex:1;min-width:0}.file-status-indicator[data-v-1197e0f9]{width:6px;height:6px;border-radius:var(--radius-full);flex-shrink:0;transition:var(--transition-all)}.file-status-indicator.added[data-v-1197e0f9]{background:var(--git-status-added)}.file-status-indicator.modified[data-v-1197e0f9]{background:var(--git-status-modified)}.file-status-indicator.deleted[data-v-1197e0f9]{background:var(--git-status-deleted)}.file-status-indicator.untracked[data-v-1197e0f9]{background:var(--git-status-untracked)}.file-status-indicator.locked[data-v-1197e0f9]{border:2px solid var(--git-status-locked);background:#fef2f2;animation:pulse-1197e0f9 2s infinite}@keyframes pulse-1197e0f9{0%,to{box-shadow:0 0 #dc262666}50%{box-shadow:0 0 0 2px #dc262600}}.file-name-section[data-v-1197e0f9]{min-width:0;flex:0 1 auto}.file-name[data-v-1197e0f9]{font-weight:var(--font-weight-medium);color:var(--text-primary);font-size:var(--font-size-sm);line-height:var(--line-height-tight);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:var(--spacing-sm);transition:var(--transition-color)}.file-item:hover .file-name[data-v-1197e0f9]{color:var(--text-link)}.file-name.locked-file-name[data-v-1197e0f9]{color:var(--git-status-locked);font-weight:var(--font-weight-semibold)}.lock-indicator[data-v-1197e0f9]{font-size:var(--font-size-xs);color:var(--git-status-locked)}.file-path-section[data-v-1197e0f9]{flex:1;min-width:0;margin-left:var(--spacing-md)}.file-directory[data-v-1197e0f9]{font-size:var(--font-size-xs);color:var(--text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;font-weight:var(--font-weight-normal);background:var(--color-gray-100);padding:1px var(--spacing-sm);border-radius:var(--radius-sm);transition:var(--transition-all)}.file-item:hover .file-directory[data-v-1197e0f9]{background:#e0e7ff;color:#6366f1}.file-actions[data-v-1197e0f9]{display:none;align-items:center;gap:var(--spacing-xs);flex-shrink:0;padding:1px;border-radius:var(--radius-base);background:#ffffffe6;box-shadow:var(--shadow-sm);border:1px solid var(--border-color-light)}.file-item:hover .file-actions[data-v-1197e0f9]{display:flex;animation:slideIn-1197e0f9 var(--transition-base) ease-out}@keyframes slideIn-1197e0f9{0%{opacity:0;transform:translate(var(--spacing-base))}to{opacity:1;transform:translate(0)}}.file-action-btn[data-v-1197e0f9]{min-width:auto!important;width:20px!important;height:20px!important;padding:0!important;display:flex;align-items:center;justify-content:center;transition:var(--transition-all);border-radius:var(--radius-sm)}.file-action-btn[data-v-1197e0f9]:hover{transform:scale(1.05);box-shadow:var(--shadow-sm)}.file-action-btn[data-v-1197e0f9]:active{transform:scale(1);transition:var(--transition-fast)}.card[data-v-3573605e]{background-color:#fff;border-radius:12px;box-shadow:0 2px 12px #0000000a;border:1px solid rgba(0,0,0,.03);height:100%;width:100%;display:flex;flex-direction:column;overflow:hidden;transition:all .3s ease;position:relative}.status-header[data-v-3573605e]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #f0f0f0}.status-header h2[data-v-3573605e]{margin:0;font-size:16px;font-weight:500;color:#303133}.header-actions[data-v-3573605e]{display:flex;align-items:center;gap:8px}.card-content[data-v-3573605e]{padding:8px;overflow-y:auto;overflow-x:hidden;flex:1;display:flex;flex-direction:column}.status-box[data-v-3573605e]{white-space:pre-wrap;font-family:monospace;background-color:#f8f9fa;padding:16px;border-radius:8px;margin-bottom:20px;max-height:200px;overflow-y:auto;overflow-x:hidden;border:1px solid #f0f0f0;font-size:14px;line-height:1.5;width:100%;box-sizing:border-box}.file-list-container[data-v-3573605e]{overflow-y:auto;flex:1;width:100%;box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgba(144,147,153,.3) transparent}.file-list-container[data-v-3573605e]::-webkit-scrollbar{width:6px;height:6px}.file-list-container[data-v-3573605e]::-webkit-scrollbar-thumb{background-color:#9093994d;border-radius:4px}.file-list-container[data-v-3573605e]::-webkit-scrollbar-thumb:hover{background-color:#90939980}.file-list-container[data-v-3573605e]::-webkit-scrollbar-track{background-color:transparent}.empty-status[data-v-3573605e]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center;background-color:#f9f9f9;border-radius:8px;flex-grow:1}.empty-icon[data-v-3573605e]{width:64px;height:64px;display:flex;align-items:center;justify-content:center;background-color:#f0f2f5;border-radius:50%;margin-bottom:16px;font-size:28px;color:#909399;animation:pulse-3573605e 2s infinite ease-in-out}@keyframes pulse-3573605e{0%{transform:scale(1);opacity:.7}50%{transform:scale(1.05);opacity:1}to{transform:scale(1);opacity:.7}}.empty-text[data-v-3573605e]{font-size:18px;font-weight:500;color:#606266;margin-bottom:8px}.empty-subtext[data-v-3573605e]{font-size:14px;color:#909399;margin-bottom:20px}.status-box-wrap[data-v-3573605e]{height:100%;display:flex;flex-direction:column;gap:16px}.branch-status-info[data-v-3573605e]{margin-bottom:0;background-color:#fff;border-radius:8px;overflow:hidden;border:1px solid #e4e7ed;transition:all .3s ease}.branch-status-info[data-v-3573605e]:hover{box-shadow:0 2px 8px #0000000d}.branch-sync-status[data-v-3573605e]{display:flex;align-items:center;padding:12px 16px;margin-bottom:0;background-color:#f8f9fa}.sync-status-content[data-v-3573605e]{display:flex;align-items:center;flex-wrap:wrap;gap:10px;width:100%}.status-badges[data-v-3573605e]{display:flex;flex-direction:column;gap:8px;width:100%}.status-badge[data-v-3573605e]{display:flex;align-items:center;width:100%;border-radius:4px;padding:8px 12px;transition:all .3s ease}.status-badge.el-tag--warning[data-v-3573605e]{background-color:#fff7e6;border-color:#ffd591;color:#d46b08}.status-badge.el-tag--info[data-v-3573605e]{background-color:#e6f7ff;border-color:#91d5ff;color:#1890ff}.status-badge[data-v-3573605e]:hover{transform:translateY(-2px);box-shadow:0 2px 8px #0000000d}.badge-content[data-v-3573605e]{display:flex;align-items:center;gap:8px;font-size:13px}.diff-dialog[data-v-3573605e]{height:calc(100vh - 150px)}.use-flex-body .el-dialog__body[data-v-3573605e]{display:flex;flex-direction:column;height:100%;padding:12px}.auto-update-switch[data-v-3573605e] .el-switch__core{transition:all .3s ease-in-out;box-shadow:0 2px 5px #0000001a}.auto-update-switch[data-v-3573605e] .el-switch__core:hover{box-shadow:0 2px 8px #0003}.auto-update-switch.is-checked[data-v-3573605e] .el-switch__core{box-shadow:0 2px 5px #67c23a4d}.auto-update-switch.is-checked[data-v-3573605e] .el-switch__core:hover{box-shadow:0 2px 8px #67c23a80}.el-button[data-v-3573605e]{transition:all .3s ease}.el-button[data-v-3573605e]:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 2px 8px #0000001a}.card-content[data-v-3573605e] .el-loading-mask{background-color:#fffc;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:10}.card-content[data-v-3573605e] .el-loading-spinner{transform:scale(1.2)}.card-content[data-v-3573605e] .el-loading-text{font-size:16px;color:#409eff;font-weight:700;margin-top:10px}.empty-locked-files[data-v-3573605e]{text-align:center;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:40px 20px;color:#666}.empty-locked-files .empty-icon[data-v-3573605e]{font-size:48px;color:#d9d9d9;margin-bottom:16px}.empty-locked-files p[data-v-3573605e]{margin:8px 0}.empty-tip[data-v-3573605e]{font-size:12px;color:#999}.locked-files-list[data-v-3573605e]{max-height:400px;overflow-y:auto}.locked-files-header[data-v-3573605e]{display:flex;align-items:center;gap:8px;padding:12px 16px;background-color:#fff7e6;border:1px solid #ffd591;border-radius:6px;margin-bottom:16px;color:#d46b08;font-weight:500}.locked-files-header .info-icon[data-v-3573605e]{color:#d46b08;cursor:help}.lock-feature-description[data-v-3573605e]{background-color:#f6f8fa;border:1px solid #e1e4e8;border-radius:8px;padding:16px;margin-bottom:16px}.description-header[data-v-3573605e]{display:flex;align-items:center;gap:8px;margin-bottom:12px}.description-icon[data-v-3573605e]{color:#1890ff;font-size:16px}.description-title[data-v-3573605e]{font-weight:600;color:#262626;font-size:14px}.description-content[data-v-3573605e]{font-size:13px;line-height:1.6;color:#595959}.description-content p[data-v-3573605e]{margin:8px 0}.description-content ul[data-v-3573605e]{margin:4px 0 12px;padding-left:20px}.description-content li[data-v-3573605e]{margin:4px 0}.locked-file-items[data-v-3573605e]{display:flex;flex-direction:column;gap:8px}.locked-file-item[data-v-3573605e]{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background-color:#fffbf0;border:1px solid #ffd591;border-radius:6px;transition:all .2s ease}.locked-file-item[data-v-3573605e]:hover{background-color:#fff7e6;border-color:#ffa940}.global-loading-overlay[data-v-12e53b20]{position:fixed;top:0;left:0;right:0;bottom:0;background:transparent;display:flex;align-items:center;justify-content:center;z-index:9999}.loading-container[data-v-12e53b20]{display:flex;flex-direction:column;align-items:center;gap:20px;padding:40px;border-radius:20px;background:linear-gradient(135deg,#409effe6,#67c23ae6);-webkit-backdrop-filter:blur(25px);backdrop-filter:blur(25px);box-shadow:0 8px 32px #0000004d;height:200px}.loading-spinner[data-v-12e53b20]{position:relative;width:120px;height:120px}.spinner-ring[data-v-12e53b20]{position:absolute;top:0;left:0;width:100%;height:100%;border:4px solid transparent;border-radius:50%}.spinner-ring[data-v-12e53b20]:nth-child(1){border-top:4px solid rgba(255,255,255,.9);animation:spin-12e53b20 2s linear infinite}.spinner-ring[data-v-12e53b20]:nth-child(2){border-right:4px solid rgba(255,255,255,.6);animation:spin-12e53b20 3s linear infinite reverse;width:90%;height:90%;top:5%;left:5%}.spinner-ring[data-v-12e53b20]:nth-child(3){border-bottom:4px solid rgba(255,255,255,.3);animation:spin-12e53b20 4s linear infinite;width:80%;height:80%;top:10%;left:10%}.loading-text[data-v-12e53b20]{color:#fff;font-size:18px;font-weight:600;text-shadow:0 2px 8px rgba(0,0,0,.3);letter-spacing:1px;text-align:center;animation:pulse-text-12e53b20 2s ease-in-out infinite}.loading-progress[data-v-12e53b20]{width:200px;height:4px;background:#fff3;border-radius:2px;overflow:hidden}.progress-bar[data-v-12e53b20]{height:100%;background:linear-gradient(90deg,#fff,#fffc);border-radius:2px;transition:width .3s ease;box-shadow:0 0 10px #ffffff80}@keyframes spin-12e53b20{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse-text-12e53b20{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}.loading-fade-enter-active[data-v-12e53b20],.loading-fade-leave-active[data-v-12e53b20]{transition:all .3s ease}.loading-fade-enter-from[data-v-12e53b20],.loading-fade-leave-to[data-v-12e53b20]{opacity:0}.loading-fade-enter-to[data-v-12e53b20],.loading-fade-leave-from[data-v-12e53b20]{opacity:1}.loading-fade-enter-active .loading-container[data-v-12e53b20],.loading-fade-leave-active .loading-container[data-v-12e53b20]{transition:all .3s ease}.loading-fade-enter-from .loading-container[data-v-12e53b20],.loading-fade-leave-to .loading-container[data-v-12e53b20]{opacity:0;transform:scale(.8);-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px)}.loading-fade-enter-to .loading-container[data-v-12e53b20],.loading-fade-leave-from .loading-container[data-v-12e53b20]{opacity:1;transform:scale(1);-webkit-backdrop-filter:blur(25px);backdrop-filter:blur(25px)}.success-overlay[data-v-c64a7b5e]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:9999}.success-container[data-v-c64a7b5e]{background:#fff;border-radius:16px;padding:40px;display:flex;flex-direction:column;align-items:center;gap:20px;box-shadow:0 20px 40px #0003;max-width:400px;text-align:center}.success-icon[data-v-c64a7b5e]{width:80px;height:80px}.success-svg[data-v-c64a7b5e]{width:100%;height:100%}.success-circle[data-v-c64a7b5e]{stroke:#67c23a;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:166;stroke-dashoffset:166;fill:none;animation:success-circle-animation-c64a7b5e .6s cubic-bezier(.65,0,.45,1) forwards}.success-check[data-v-c64a7b5e]{stroke:#67c23a;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:48;stroke-dashoffset:48;animation:success-check-animation-c64a7b5e .3s cubic-bezier(.65,0,.45,1) .8s forwards}.success-text[data-v-c64a7b5e]{font-size:24px;font-weight:700;color:#303133;margin:0}.success-description[data-v-c64a7b5e]{font-size:16px;color:#606266;margin:0;line-height:1.5}@keyframes success-circle-animation-c64a7b5e{to{stroke-dashoffset:0}}@keyframes success-check-animation-c64a7b5e{to{stroke-dashoffset:0}}.success-fade-enter-active[data-v-c64a7b5e],.success-fade-leave-active[data-v-c64a7b5e]{transition:all .3s ease}.success-fade-enter-from[data-v-c64a7b5e],.success-fade-leave-to[data-v-c64a7b5e]{opacity:0;-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px)}.success-fade-enter-to[data-v-c64a7b5e],.success-fade-leave-from[data-v-c64a7b5e]{opacity:1;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.success-fade-enter-active .success-container[data-v-c64a7b5e],.success-fade-leave-active .success-container[data-v-c64a7b5e]{transition:all .3s ease}.success-fade-enter-from .success-container[data-v-c64a7b5e],.success-fade-leave-to .success-container[data-v-c64a7b5e]{opacity:0;transform:scale(.8) translateY(20px)}.success-fade-enter-to .success-container[data-v-c64a7b5e],.success-fade-leave-from .success-container[data-v-c64a7b5e]{opacity:1;transform:scale(1) translateY(0)}.template-container[data-v-7943f6e9]{display:flex;flex-direction:column;gap:20px;height:100%}.template-form[data-v-7943f6e9]{display:flex;flex-direction:column;gap:12px}.template-input[data-v-7943f6e9]{font-size:14px}.template-form-buttons[data-v-7943f6e9]{display:flex;gap:8px;justify-content:flex-start}.template-list[data-v-7943f6e9]{flex:1;overflow:hidden;display:flex;flex-direction:column}.template-list h3[data-v-7943f6e9]{margin:0 0 16px;font-size:16px;font-weight:600;color:#303133}.template-item[data-v-7943f6e9]{margin-bottom:12px;border-radius:6px;transition:all .3s ease}.template-item[data-v-7943f6e9]:hover{box-shadow:0 4px 12px #00000026}.template-content[data-v-7943f6e9]{flex:1;font-size:14px;color:#606266;word-break:break-all;margin-right:12px}.template-actions[data-v-7943f6e9]{display:flex;gap:6px;align-items:center;flex-shrink:0}.message-template-container[data-v-7943f6e9]{flex-direction:column}.templates-container[data-v-7943f6e9]{display:flex;gap:20px;flex:1;overflow:hidden}.message-templates-list[data-v-7943f6e9]{flex:1;display:flex;flex-direction:column;overflow:hidden}.templates-scroll-area[data-v-7943f6e9]{flex:1;overflow-y:auto;padding-right:8px}.current-default-message[data-v-7943f6e9]{flex:1;display:flex;flex-direction:column;gap:16px}.current-default-message h3[data-v-7943f6e9]{margin:0;font-size:16px;font-weight:600;color:#303133}.default-message-card[data-v-7943f6e9]{border-radius:6px}.default-message-content[data-v-7943f6e9]{font-size:14px;color:#606266;word-break:break-all}.message-help-text[data-v-7943f6e9]{background-color:#f8f9fa;padding:16px;border-radius:6px;border-left:4px solid #409eff}.message-help-text h4[data-v-7943f6e9]{margin:0 0 8px;font-size:14px;color:#303133}.message-help-text p[data-v-7943f6e9]{margin:0 0 8px;font-size:13px;color:#606266;line-height:1.5}.message-help-text p[data-v-7943f6e9]:last-child{margin-bottom:0}.templates-scroll-area[data-v-7943f6e9]::-webkit-scrollbar{width:6px}.templates-scroll-area[data-v-7943f6e9]::-webkit-scrollbar-thumb{background-color:#c0c4cc;border-radius:3px}.templates-scroll-area[data-v-7943f6e9]::-webkit-scrollbar-track{background-color:#f5f7fa}.git-command-preview .preview-container[data-v-3c53a3e7]{display:flex;align-items:center;gap:12px;background-color:#f5f7fa;border:1px solid #e4e7ed;border-radius:6px;padding:12px 16px;transition:all .2s ease}.git-command-preview .preview-container[data-v-3c53a3e7]:hover{border-color:#c0c4cc;box-shadow:0 2px 8px #0000000f}.git-command-preview .preview-container .preview-title[data-v-3c53a3e7]{font-size:14px;color:#606266;font-weight:500;white-space:nowrap;flex-shrink:0;min-width:fit-content}.git-command-preview .preview-container .preview-content[data-v-3c53a3e7]{flex:1;background-color:#1a1a1a;color:#fff;border:1px solid #3c4043;border-radius:4px;padding:8px 12px;margin:0;font-family:Courier New,Monaco,Menlo,monospace;font-size:13px;font-weight:500;line-height:1.4;overflow-x:auto;white-space:nowrap;text-shadow:0 0 1px rgba(255,255,255,.3)}.git-command-preview .preview-container .preview-content.code-command[data-v-3c53a3e7]{background-color:#1a1a1a;color:#fff;border-color:#3c4043;font-weight:500;text-shadow:0 0 1px rgba(255,255,255,.3)}.git-command-preview .preview-container .copy-command-btn[data-v-3c53a3e7]{padding:6px 12px;min-height:32px;flex-shrink:0;border-radius:4px}.git-command-preview .preview-container .copy-command-btn .el-icon[data-v-3c53a3e7]{font-size:14px}.git-command-preview .preview-container .copy-command-btn[data-v-3c53a3e7]:hover{transform:translateY(-1px);box-shadow:0 4px 8px #409eff4d}.one-push-button[data-v-58e155b2]{height:100%}.one-push-button.form[data-v-58e155b2]{width:100%}.one-push-button.drawer[data-v-58e155b2]{width:auto;height:32px}.one-push-button .one-push-content[data-v-58e155b2]{display:flex;align-items:center}.one-push-button .one-push-content .one-push-text[data-v-58e155b2]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-left:10px}.one-push-button .one-push-content .one-push-text .one-push-desc[data-v-58e155b2]{font-size:12px;padding-top:4px}.stage-button.from-drawer[data-v-67a3259e]{padding:6px 12px;font-size:12px;height:32px}.stage-button.from-status[data-v-67a3259e]{padding:8px 14px;font-size:13px;height:36px}.stage-button.from-form[data-v-67a3259e]{padding:10px 16px;font-size:14px;height:40px}.commit-button.from-drawer[data-v-5a88b7bc]{padding:6px 12px;font-size:12px;height:32px}.commit-button.from-status[data-v-5a88b7bc]{padding:8px 14px;font-size:13px;height:36px}.commit-button.from-form[data-v-5a88b7bc]{padding:10px 16px;font-size:14px;height:40px}.push-button.from-drawer[data-v-3c2392d6]{padding:6px 12px;font-size:12px;height:32px}.push-button.from-status[data-v-3c2392d6]{padding:8px 14px;font-size:13px;height:36px}.push-button.from-form[data-v-3c2392d6]{padding:10px 16px;font-size:14px;height:40px}.form-bottom-actions[data-v-6cf9ea2c]{padding:16px;background:linear-gradient(135deg,#f8fafc,#e2e8f0);border-radius:12px;border:1px solid #e2e8f0;transition:all .3s ease;box-shadow:0 2px 8px #0000000d}.form-bottom-actions[data-v-6cf9ea2c]:hover{transform:translateY(-1px);box-shadow:0 4px 16px #0000001a}.actions-flex-container[data-v-6cf9ea2c]{display:flex;gap:16px;align-items:center;justify-content:space-between}.button-grid[data-v-6cf9ea2c]{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;align-items:stretch}.right-actions[data-v-6cf9ea2c]{min-width:160px;display:flex;align-items:stretch}@keyframes snakeBorder-621b662f{0%,to{border-top:2px solid #409EFF;border-right:2px solid transparent;border-bottom:2px solid transparent;border-left:2px solid transparent}25%{border-top:2px solid #409EFF;border-right:2px solid #67C23A;border-bottom:2px solid transparent;border-left:2px solid transparent}50%{border-top:2px solid transparent;border-right:2px solid #67C23A;border-bottom:2px solid #409EFF;border-left:2px solid transparent}75%{border-top:2px solid transparent;border-right:2px solid transparent;border-bottom:2px solid #409EFF;border-left:2px solid #67C23A}}@keyframes glowPulse-621b662f{0%,to{box-shadow:0 0 8px #409eff66}50%{box-shadow:0 0 12px #67c23a80}}.card[data-v-621b662f]{background-color:#fff;border-radius:8px;box-shadow:0 2px 10px #00000008;border:1px solid rgba(0,0,0,.03);height:100%;width:100%;display:flex;flex-direction:column;overflow:hidden;position:relative}.card-header h2[data-v-621b662f]{margin:0;font-size:16px;font-weight:500;color:#303133}.header-actions[data-v-621b662f]{display:flex;align-items:center;gap:8px}.card-content[data-v-621b662f]{padding:8px;overflow-y:auto;flex:1}.actions-section h3[data-v-621b662f]{margin-top:0;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid #dcdfe6;font-size:16px;color:#303133;font-weight:500}.operations-wrapper[data-v-621b662f]{display:flex;gap:10px}.action-groups[data-v-621b662f]{display:flex;flex-direction:column;gap:12px}.action-group[data-v-621b662f]{background-color:#f9f9f9;border-radius:6px;padding:12px 14px;box-shadow:0 2px 8px #00000014;transition:all .3s ease;flex:1}.action-group[data-v-621b662f]:hover{box-shadow:0 4px 12px #0000001f}.group-title[data-v-621b662f]{font-size:13px;font-weight:700;margin-bottom:8px;color:#606266;text-align:left;display:block;position:relative;padding-left:6px;border-bottom:1px solid rgba(0,0,0,.06);padding-bottom:6px}.group-buttons[data-v-621b662f]{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px;padding:0}.action-button[data-v-621b662f]{font-size:14px;font-weight:500}.action-button[data-v-621b662f]:hover{transform:translateY(-1px);box-shadow:0 2px 5px #00000026}.action-button[data-v-621b662f]:active{transform:translateY(0)}.stash-content[data-v-621b662f]{display:flex;flex-direction:column;height:100%;gap:12px}.stash-info-row[data-v-621b662f]{display:flex;align-items:center;gap:24px;padding:12px 16px;background-color:#f8f9fa;border-radius:6px;border:1px solid #e9ecef;flex-shrink:0}.stash-id[data-v-621b662f],.stash-description[data-v-621b662f]{display:flex;align-items:center;gap:8px}.info-label[data-v-621b662f]{font-size:13px;font-weight:500;color:#606266;white-space:nowrap}.stash-id-value[data-v-621b662f]{font-family:ui-monospace,SFMono-Regular,SF Mono,Monaco,Inconsolata,Roboto Mono,Droid Sans Mono,Consolas,Courier New,monospace;font-size:12px;background-color:#e9ecef;color:#495057;padding:2px 6px;border-radius:3px;border:1px solid #dee2e6}.stash-description[data-v-621b662f]{flex:1}.stash-description-value[data-v-621b662f]{font-size:14px;color:#303133;font-weight:400;word-break:break-all}.stash-main-content[data-v-621b662f]{flex:1;min-height:0;display:flex;flex-direction:column}.command-text[data-v-621b662f],.command-text-long[data-v-621b662f]{display:none}.standard-commit-form[data-v-621b662f]{display:flex;flex-direction:column;gap:8px;margin-bottom:15px}.standard-commit-header[data-v-621b662f]{display:flex;flex-direction:column;gap:4px;width:100%}.type-scope-container[data-v-621b662f]{display:flex;gap:10px;width:100%}.type-select[data-v-621b662f]{width:35%}.scope-wrapper[data-v-621b662f]{display:flex;align-items:center;gap:5px;width:65%}.commit-form[data-v-621b662f]{display:flex;flex-direction:column;gap:8px}.description-container[data-v-621b662f]{display:flex;align-items:center;gap:5px;width:100%;background:linear-gradient(135deg,#f8faff,#eef4ff);border-radius:12px;margin:8px 0;box-shadow:0 2px 8px #409eff1a;transition:all .3s ease}.description-container[data-v-621b662f]:hover{box-shadow:0 4px 16px #409eff33}[data-v-621b662f] .description-input{flex-grow:1}[data-v-621b662f] .description-input .el-input__wrapper{border-radius:8px;background:#fff;border:2px solid #409eff;box-shadow:0 2px 4px #409eff1a;transition:all .3s ease}[data-v-621b662f] .description-input .el-input__wrapper:hover{border-color:#66b1ff;box-shadow:0 4px 8px #409eff33}[data-v-621b662f] .description-input .el-input__wrapper.is-focus{border-color:#409eff;box-shadow:0 0 0 4px #409eff33}[data-v-621b662f] .description-input .el-input__inner{font-size:15px;font-weight:500;color:#303133}[data-v-621b662f] .description-input .el-input__inner::placeholder{color:#a8abb2;font-weight:400}[data-v-621b662f] .type-select .el-select__wrapper{border-radius:8px;background:#fff;border:2px solid #f56c6c;box-shadow:0 2px 4px #f56c6c1a;transition:all .3s ease;height:40px}[data-v-621b662f] .type-select .el-select__wrapper:hover{border-color:#f78989;box-shadow:0 4px 8px #f56c6c33}[data-v-621b662f] .type-select .el-select__wrapper.is-focus{border-color:#f56c6c;box-shadow:0 0 0 4px #f56c6c33}[data-v-621b662f] .type-select .el-select__inner{font-size:14px;font-weight:500;color:#303133}[data-v-621b662f] .type-select .el-select__inner::placeholder{color:#a8abb2;font-weight:400}[data-v-621b662f] .scope-input{flex-grow:1}[data-v-621b662f] .scope-input .el-input__wrapper{border-radius:8px;background:#fff;border:2px solid #67c23a;box-shadow:0 2px 4px #67c23a1a;transition:all .3s ease;height:40px}[data-v-621b662f] .scope-input .el-input__wrapper:hover{border-color:#85ce61;box-shadow:0 4px 8px #67c23a33}[data-v-621b662f] .scope-input .el-input__wrapper.is-focus{border-color:#67c23a;box-shadow:0 0 0 4px #67c23a33}[data-v-621b662f] .scope-input .el-input__inner{font-size:14px;font-weight:500}[data-v-621b662f] .scope-input .el-input__inner::placeholder{color:#a8abb2;font-weight:400}[data-v-621b662f] .commit-message-input{background:linear-gradient(135deg,#fff8f0,#fff2e6);border-radius:12px;margin:8px 0;box-shadow:0 2px 8px #e6a23c1a;transition:all .3s ease}[data-v-621b662f] .commit-message-input .el-textarea__inner{border-radius:8px;background:#fff;border:2px solid #e6a23c;box-shadow:0 2px 4px #e6a23c1a;font-size:15px;font-weight:500;transition:all .3s ease}[data-v-621b662f] .commit-message-input .el-textarea__inner:hover{border-color:#ebb563;box-shadow:0 4px 8px #e6a23c33}[data-v-621b662f] .commit-message-input .el-textarea__inner:focus{border-color:#e6a23c;box-shadow:0 0 0 4px #e6a23c33;outline:none}[data-v-621b662f] .commit-message-input .el-textarea__inner::placeholder{color:#a8abb2;font-weight:400}[data-v-621b662f] .commit-message-input:hover{border-color:#e6a23c;box-shadow:0 4px 16px #e6a23c33}.settings-button[data-v-621b662f]{flex-shrink:0}.template-container[data-v-621b662f]{display:flex;flex-direction:column;height:calc(85vh - 100px);overflow-y:auto;padding:5px}.template-form[data-v-621b662f]{margin-bottom:20px;background-color:#f8f9fa;padding:15px;border-radius:6px;border:1px solid #ebeef5}.template-form-buttons[data-v-621b662f]{display:flex;gap:10px;margin-top:12px;justify-content:flex-end}.template-input[data-v-621b662f]{flex-grow:1}.template-list[data-v-621b662f]{overflow-y:auto;height:100%}.template-list h3[data-v-621b662f]{margin-top:0;margin-bottom:15px;font-size:16px;font-weight:500;color:#303133;padding-bottom:8px;border-bottom:1px solid #ebeef5}.template-item[data-v-621b662f]{margin-bottom:10px;transition:all .2s ease;border:1px solid #ebeef5}.template-item[data-v-621b662f]:hover{background-color:#f5f7fa;transform:translateY(-2px);box-shadow:0 2px 12px #0000001a}.template-content[data-v-621b662f]{flex-grow:1;margin-right:10px;word-break:break-all;padding:5px 0;color:#303133;font-weight:500}.template-actions[data-v-621b662f]{display:flex;gap:8px;justify-content:flex-end;min-width:180px;flex-shrink:0}.commit-options[data-v-621b662f]{display:flex;flex-direction:row;gap:8px;margin-bottom:12px}.option-card[data-v-621b662f]{background:linear-gradient(135deg,#fff,#f8f9fa);border:1px solid #e9ecef;border-radius:8px;padding:8px 10px;transition:all .3s ease;box-shadow:0 1px 3px #0000000d;flex:1;min-width:0}.option-card[data-v-621b662f]:hover{border-color:#409eff;box-shadow:0 2px 8px #409eff1a;transform:translateY(-1px)}.option-header[data-v-621b662f]{display:flex;flex-direction:row;align-items:center;gap:8px;text-align:left}.option-icon[data-v-621b662f]{width:20px;height:20px;border-radius:4px;display:flex;align-items:center;justify-content:center;background:#409eff;color:#fff;font-size:10px;flex-shrink:0}.option-icon.warning[data-v-621b662f]{background:#f56c6c}.option-icon.success[data-v-621b662f]{background:#67c23a}.option-info[data-v-621b662f]{flex:1;min-width:0}.option-title[data-v-621b662f]{margin:0;font-size:12px;font-weight:600;color:#303133;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.option-desc[data-v-621b662f]{margin:0;font-size:10px;color:#909399;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.option-switch[data-v-621b662f]{flex-shrink:0}.option-switch[data-v-621b662f] .el-switch__label{font-size:12px;font-weight:500}.option-switch[data-v-621b662f] .el-switch__label.is-active{color:#409eff}.top-actions-container[data-v-621b662f]{margin-bottom:16px}.top-actions-container[data-v-621b662f] .form-bottom-actions{background:#fff;border:1px solid #e4e7ed;box-shadow:0 1px 3px #0000000d;margin-bottom:0}.top-actions-container[data-v-621b662f] .form-bottom-actions:hover{transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.top-actions-container[data-v-621b662f] .actions-flex-container{gap:20px}.top-actions-container[data-v-621b662f] .button-grid{gap:16px}.top-actions-container[data-v-621b662f] .el-button{border-radius:8px;font-weight:500;transition:all .3s ease}.top-actions-container[data-v-621b662f] .el-button:hover{transform:translateY(-1px);box-shadow:0 4px 8px #00000026}.top-actions-container[data-v-621b662f] .el-button--primary{background:#409eff;border:none;color:#fff}.top-actions-container[data-v-621b662f] .el-button--success{background:#67c23a;border:none;color:#fff}.top-actions-container[data-v-621b662f] .el-button--warning{background:#e6a23c;border:none;color:#fff}.top-actions-container[data-v-621b662f] .el-button:disabled{opacity:.4!important;background-color:#f5f7fa!important;border-color:#e4e7ed!important;color:#c0c4cc!important}.top-actions-container[data-v-621b662f] .el-button--primary:disabled{background-color:#a0cfff!important;border-color:#a0cfff!important;color:#fff!important;opacity:.5!important}.top-actions-container[data-v-621b662f] .el-button--success:disabled{background-color:#b3e19d!important;border-color:#b3e19d!important;color:#fff!important;opacity:.5!important}.top-actions-container[data-v-621b662f] .el-button--warning:disabled{background-color:#f3d19e!important;border-color:#f3d19e!important;color:#fff!important;opacity:.5!important}.top-actions-container[data-v-621b662f] .el-button--info{background:#909399;border:none;color:#fff}@media (max-width: 768px){.commit-options[data-v-621b662f]{flex-direction:column;gap:6px}.option-card[data-v-621b662f]{padding:8px}.option-header[data-v-621b662f]{flex-direction:row;gap:8px;text-align:left}.option-icon[data-v-621b662f]{width:20px;height:20px;font-size:10px}.option-title[data-v-621b662f]{font-size:11px}.option-desc[data-v-621b662f]{font-size:9px;-webkit-line-clamp:1;line-clamp:1}.top-actions-container[data-v-621b662f] .actions-flex-container{flex-direction:column;gap:12px}.top-actions-container[data-v-621b662f] .button-grid{grid-template-columns:1fr;gap:8px}}.code-command[data-v-621b662f]{background-color:#2d2d2d;color:#f8f8f2;font-family:Courier New,Courier,monospace;padding:10px;border-radius:4px;overflow-x:auto;white-space:pre;font-size:14px}.layout-container[data-v-621b662f]{flex-direction:row}.commit-section[data-v-621b662f]{flex:3}.actions-section[data-v-621b662f]{width:320px}.operations-wrapper[data-v-621b662f]{flex-direction:column}.git-config-warning[data-v-621b662f]{width:100%}.config-command[data-v-621b662f]{background-color:#2d2d2d;color:#f8f8f2;font-family:Courier New,Courier,monospace;padding:10px;border-radius:4px;margin-top:10px;white-space:pre}@keyframes pushing-pulse-621b662f{0%{box-shadow:0 0 #67c23a66}70%{box-shadow:0 0 0 15px #67c23a00}to{box-shadow:0 0 #67c23a00}}@keyframes pushing-border-621b662f{0%{border-color:#67c23a}50%{border-color:#85ce61}to{border-color:#67c23a}}.card.is-pushing[data-v-621b662f]{animation:pushing-border-621b662f 1.5s infinite ease-in-out;box-shadow:0 4px 12px #0000001a;transition:all .3s ease}@keyframes one-click-push-glow-621b662f{0%{box-shadow:0 0 5px #67c23a80}50%{box-shadow:0 0 20px #67c23acc}to{box-shadow:0 0 5px #67c23a80}}.action-button.one-click-push[data-v-621b662f]{position:relative;overflow:hidden}.action-button.one-click-push.is-loading[data-v-621b662f],.action-button.one-click-push.is-loading[data-v-621b662f]:hover{animation:one-click-push-glow-621b662f 1.5s infinite;background-color:#67c23a!important;border-color:#67c23a!important}.reset-button[data-v-621b662f]{background-color:#909399;border-color:#909399}.reset-button[data-v-621b662f]:hover{background-color:#a6a9ad;border-color:#a6a9ad}.status-updating-indicator[data-v-621b662f]{position:fixed;top:20px;right:20px;background:#fffffff2;border:1px solid #409eff;border-radius:8px;padding:12px 16px;display:flex;align-items:center;gap:8px;box-shadow:0 4px 12px #409eff33;z-index:2000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.status-updating-indicator span[data-v-621b662f]{font-size:14px;color:#409eff;font-weight:500}.status-updating-indicator .el-icon[data-v-621b662f]{font-size:16px;color:#409eff}.git-push-loading[data-v-621b662f]{background:linear-gradient(135deg,#409efff2,#67c23af2)!important;-webkit-backdrop-filter:blur(15px)!important;backdrop-filter:blur(15px)!important}.git-push-loading .el-loading-mask[data-v-621b662f]{background:transparent!important}.git-push-loading .el-loading-spinner[data-v-621b662f]{margin-top:-50px!important;position:relative!important}.git-push-loading .el-loading-spinner svg[data-v-621b662f]{width:100px!important;height:100px!important;color:#fff!important}.git-push-loading .el-loading-spinner .circular[data-v-621b662f]{width:100px!important;height:100px!important;animation:git-push-rotate-621b662f 2s linear infinite!important}.git-push-loading .el-loading-spinner .path[data-v-621b662f]{stroke:#fff!important;stroke-width:4!important;stroke-linecap:round!important;filter:drop-shadow(0 0 10px rgba(255,255,255,.8))!important}.git-push-loading .el-loading-text[data-v-621b662f]{color:#fff!important;font-size:20px!important;font-weight:700!important;text-shadow:0 2px 8px rgba(0,0,0,.5)!important;margin-top:30px!important;letter-spacing:1px!important;text-transform:uppercase!important}.git-push-loading .el-loading-spinner[data-v-621b662f]:before{content:"";position:absolute;top:50%;left:50%;width:120px;height:120px;margin:-60px 0 0 -60px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.2) 0%,transparent 70%);animation:git-push-pulse-621b662f 3s ease-in-out infinite;z-index:-1}.git-push-loading .el-loading-spinner[data-v-621b662f]:after{content:"";position:absolute;top:50%;left:50%;width:140px;height:140px;margin:-70px 0 0 -70px;border:2px solid transparent;border-top:2px solid rgba(255,255,255,.3);border-right:2px solid rgba(255,255,255,.1);border-radius:50%;animation:git-push-rotate-621b662f 4s linear infinite reverse;z-index:-1}@keyframes git-push-rotate-621b662f{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes git-push-pulse-621b662f{0%{transform:scale(.8);opacity:.8}50%{transform:scale(1.2);opacity:.3}to{transform:scale(.8);opacity:.8}}.actions-flex-container[data-v-621b662f]{display:flex;justify-content:space-between;gap:10px;width:100%}.left-actions[data-v-621b662f]{flex:3;display:flex;align-items:center}.right-actions[data-v-621b662f]{flex:2;display:flex;align-items:center;justify-content:center}.button-grid .el-button[data-v-621b662f]{margin:0;height:100%;min-height:36px;display:flex;align-items:center;justify-content:center;padding:8px 15px}.button-grid .el-button[data-v-621b662f]:first-child{grid-column:1/2;grid-row:1/2}.button-grid .el-button[data-v-621b662f]:nth-child(2){grid-column:2/3;grid-row:1/2}.button-grid .el-button[data-v-621b662f]:last-child{grid-column:1/3;grid-row:2/3}.one-push-button[data-v-621b662f]{height:100%;width:100%;padding:10px 15px;background:linear-gradient(135deg,#4169e1,#5e81f4);border:none;border-radius:8px;box-shadow:0 4px 10px #4169e140;transition:all .3s ease;position:relative;z-index:1000}.one-push-content[data-v-621b662f]{display:flex;align-items:center;justify-content:center;height:100%}.one-push-icon[data-v-621b662f]{font-size:24px;margin-right:10px}.one-push-desc[data-v-621b662f]{font-size:12px;opacity:.8;margin-top:4px}.pushing-text[data-v-621b662f]{font-size:20px;font-weight:700;text-align:center}.pushing-spinner[data-v-621b662f]{margin-bottom:16px}.circular[data-v-621b662f]{height:64px;width:64px;animation:pushing-rotate-621b662f 2s linear infinite}.path[data-v-621b662f]{stroke:#fff;stroke-width:4;stroke-linecap:round;stroke-dasharray:90,150;stroke-dashoffset:0;animation:pushing-dash-621b662f 1.5s ease-in-out infinite}@keyframes pushing-rotate-621b662f{to{transform:rotate(360deg)}}@keyframes pushing-dash-621b662f{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.message-template-container[data-v-621b662f]{display:flex;flex-direction:column;height:calc(100vh - 278px);overflow:hidden}.templates-container[data-v-621b662f]{display:flex;gap:20px;margin-top:15px;flex:1;overflow:hidden}.message-templates-list[data-v-621b662f]{flex:3;display:flex;flex-direction:column;border-right:1px solid #ebeef5;padding-right:15px;height:calc(100vh - 432px)}.message-templates-list h3[data-v-621b662f]{margin-top:0;margin-bottom:15px;font-size:16px;font-weight:500;color:#303133;padding-bottom:8px;border-bottom:1px solid #ebeef5}.current-default-message[data-v-621b662f]{flex:2;display:flex;flex-direction:column;gap:15px;padding-left:15px}.current-default-message h3[data-v-621b662f]{margin-top:0;margin-bottom:15px;font-size:16px;font-weight:500;color:#303133;padding-bottom:8px;border-bottom:1px solid #ebeef5}.templates-scroll-area[data-v-621b662f]{overflow-y:auto;padding-right:5px;flex:1}.default-message-card[data-v-621b662f]{margin-bottom:15px;box-shadow:0 2px 8px #00000014;border-radius:4px;transition:all .3s ease}.default-message-card[data-v-621b662f]:hover{box-shadow:0 4px 12px #0000001f}.default-message-content[data-v-621b662f]{padding:12px 15px;background-color:#f0f9eb;border-left:3px solid #67c23a;font-weight:500;word-break:break-all;min-height:60px;display:flex;align-items:center;border-radius:0 4px 4px 0;color:#303133}.message-help-text[data-v-621b662f]{background-color:#f8f9fa;border-radius:4px;padding:15px;font-size:14px;color:#606266;border-left:3px solid #909399;margin-top:auto;box-shadow:0 2px 8px #0000000d}.message-help-text h4[data-v-621b662f]{margin-top:0;margin-bottom:10px;color:#303133;font-size:15px}.message-help-text p[data-v-621b662f]{margin:8px 0;line-height:1.5}.advanced-options-toggle[data-v-621b662f]{display:flex;align-items:center;justify-content:center;padding:6px 0;background-color:#f5f7fa;border-radius:4px;cursor:pointer;transition:all .3s ease;-webkit-user-select:none;user-select:none;font-size:14px}.advanced-options-toggle[data-v-621b662f]:hover{background-color:#ebeef5;color:#409eff}.toggle-icon[data-v-621b662f]{margin-left:8px;transition:transform .3s ease;font-size:12px}.toggle-icon.is-active[data-v-621b662f]{transform:rotate(180deg)}.advanced-fields[data-v-621b662f]{margin-top:10px;display:flex;flex-direction:column;gap:15px;animation:fade-in-621b662f .3s ease-in-out}@keyframes fade-in-621b662f{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.merge-dialog-content[data-v-621b662f]{padding:0 10px}.merge-intro[data-v-621b662f]{margin-bottom:20px;color:#606266}.merge-options[data-v-621b662f]{display:flex;flex-direction:column;gap:10px}.dialog-footer[data-v-621b662f]{display:flex;justify-content:flex-end;gap:10px}.merge-confirm-btn[data-v-621b662f]{margin-left:10px}.merge-button[data-v-621b662f]{background-color:#409eff;border-color:#409eff}.branch-group[data-v-621b662f]{border-top:none}.branch-group .group-title[data-v-621b662f]{color:#606266;font-weight:500;margin-bottom:12px}[data-v-621b662f] .el-checkbox__label{white-space:normal;line-height:1.4}.stash-list-content[data-v-621b662f]{padding:20px 0}.stash-list-actions[data-v-621b662f]{margin-top:20px;display:flex;justify-content:flex-end}.stash-dialog-content p[data-v-621b662f]{margin-bottom:20px;color:#606266}.reset-group[data-v-621b662f]{border-top:none}.card-header[data-v-621b662f]{padding:8px 16px;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;align-items:center}.git-tools-button[data-v-621b662f]{transition:transform .3s}.git-tools-button[data-v-621b662f]:hover{transform:rotate(90deg)}.layout-container[data-v-621b662f]{display:flex;flex-direction:column;gap:15px;height:100%}.commit-section[data-v-621b662f]{flex:1;width:100%;min-width:0}[data-v-621b662f] .git-operations-drawer .el-drawer__header{margin-bottom:10px;padding:12px 16px;border-bottom:1px solid #f0f0f0;font-size:16px;font-weight:500}[data-v-621b662f] .git-operations-drawer .el-drawer__body{padding:10px;overflow-y:auto}.actions-section[data-v-621b662f]{padding:0}.center-button-container[data-v-621b662f]{display:flex;justify-content:space-between;align-items:center;margin-top:10px;position:relative}.button-divider[data-v-621b662f]{height:1px;background:linear-gradient(to right,#dcdfe600,#dcdfe6,#dcdfe600);flex:1;margin:0 15px}.one-push-button[data-v-621b662f]{padding:0 25px;min-width:160px;height:40px;font-weight:500;border-radius:20px;box-shadow:0 2px 6px #4169e14d;transition:all .3s;position:relative;z-index:2}.one-push-button[data-v-621b662f]:hover{transform:translateY(-1px);box-shadow:0 4px 8px #4169e166}.action-separator[data-v-621b662f]{position:relative;text-align:center;margin:12px 0;height:20px}.separator-text[data-v-621b662f]{background-color:#f5f7fa;padding:0 10px;font-size:12px;color:#909399;position:relative;z-index:1}.action-separator[data-v-621b662f]:before{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background-color:#e4e7ed;z-index:0}.one-push-container[data-v-621b662f]{display:flex;justify-content:center}.one-push-button[data-v-621b662f]{width:100%;max-width:300px;height:auto;padding:10px 20px;background:linear-gradient(135deg,#4169e1,#5e81f4);border:none;border-radius:8px;box-shadow:0 4px 10px #4169e140;transition:all .3s ease;position:relative;z-index:1000}.one-push-button[data-v-621b662f]:hover{transform:translateY(-2px);box-shadow:0 6px 12px #4169e159;background:linear-gradient(135deg,#3a5ecc,#4b6edf)}.one-push-button[data-v-621b662f]:active{transform:translateY(0);box-shadow:0 2px 6px #4169e133}.one-push-content[data-v-621b662f]{display:flex;align-items:center;justify-content:center}.one-push-icon[data-v-621b662f]{font-size:20px;margin-right:10px}.one-push-text[data-v-621b662f]{display:flex;flex-direction:column;align-items:flex-start;text-align:left}.one-push-title[data-v-621b662f]{font-size:16px;font-weight:500;line-height:1.2}.one-push-desc[data-v-621b662f]{font-size:12px;opacity:.8;margin-top:2px}.button-row[data-v-621b662f]{display:flex;justify-content:space-between;gap:10px;width:100%}.button-row .el-button[data-v-621b662f]{flex:1;min-width:100px}.center-button-container[data-v-621b662f],.button-divider[data-v-621b662f]{display:none}.git-cmd-tooltip{font-family:Consolas,Courier New,monospace!important;font-size:13px!important;font-weight:500!important;color:#303133!important;background-color:#f5f7fa!important;border:1px solid #dcdfe6!important;border-radius:4px!important;padding:8px 12px!important;box-shadow:0 2px 12px #0000001a!important}.stash-detail-dialog .el-dialog__body{padding:12px;height:calc(100vh - 200px);display:flex;flex-direction:column}.use-flex-body .el-dialog__body{display:flex;flex-direction:column;height:100%}.stash-detail-dialog .el-dialog__footer{padding:15px 20px;border-top:1px solid #f0f0f0}.stash-detail-content{height:100%;display:flex;flex-direction:column}.stash-header{margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #ebeef5}.stash-info h3{margin:0 0 8px;font-size:18px;font-weight:600;color:#409eff}.stash-description{margin:0;color:#606266;font-size:14px;line-height:1.5}.stash-main-content{flex:1;min-height:0;height:100%}.stash-files-panel{width:300px;flex-shrink:0;background-color:#fafafa;border-radius:8px;border:1px solid #e4e7ed;overflow:hidden;display:flex;flex-direction:column}.stash-diff-panel{flex:1;background-color:#fafafa;border-radius:8px;border:1px solid #e4e7ed;overflow:hidden;min-width:0;display:flex;flex-direction:column}.panel-header{padding:12px 16px;background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;display:flex;justify-content:space-between;align-items:center}.panel-header h4{margin:0;font-size:14px;font-weight:600;color:#303133}.selected-file{font-size:12px;color:#909399;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-list{flex:1;min-height:0;overflow:hidden}.diff-content{flex:1;min-height:0}.diff-text{font-size:12px;line-height:1.6;color:#303133;background-color:#fff;margin:0;padding:16px;white-space:pre-wrap;word-break:break-all;border:none;outline:none;overflow-wrap:break-word}.template-dialog .el-dialog__body,.message-template-dialog .el-dialog__body,.merge-dialog .el-dialog__body{padding:20px}.template-dialog .el-input__inner,.message-template-dialog .el-input__inner,.merge-dialog .el-input__inner{height:40px;line-height:40px}.template-dialog .el-button,.message-template-dialog .el-button{border-radius:4px;font-weight:500}.template-dialog .el-card,.message-template-dialog .el-card{border-radius:4px;overflow:hidden}.template-dialog .el-card__body,.message-template-dialog .el-card__body{padding:12px 15px}.template-dialog .el-empty__image,.message-template-dialog .el-empty__image{width:80px;height:80px}.stash-action-buttons{display:inline-flex;align-items:center;gap:8px}.config-warning-content{display:flex;align-items:flex-start;gap:12px;padding:16px 0}.warning-icon{flex-shrink:0;margin-top:2px}.warning-message{flex:1;margin:0;font-size:14px;line-height:1.6;color:#606266;white-space:pre-line}.config-warning-content+.el-dialog__footer .dialog-footer{display:flex;justify-content:flex-end;gap:8px}.card[data-v-c85ca6b0]{background-color:#fff;border-radius:8px;box-shadow:0 2px 12px #0000001a;margin-bottom:20px;display:flex;flex-direction:column;height:100%;overflow:hidden;position:relative}.log-header[data-v-c85ca6b0]{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid #ebeef5;position:sticky;top:0;background-color:#fff;z-index:100}.fullscreen-mode .log-header[data-v-c85ca6b0]{margin-bottom:10px;box-shadow:0 2px 8px #0000000d}.header-left[data-v-c85ca6b0]{display:flex;align-items:center;gap:16px}.header-left h2[data-v-c85ca6b0]{margin:0;font-size:16px;font-weight:600;color:#303133}.log-actions[data-v-c85ca6b0]{display:flex;align-items:center;gap:12px}.action-button[data-v-c85ca6b0]{transition:all .3s ease;border-radius:8px;border:1px solid transparent;box-shadow:0 2px 4px #0000001a;font-weight:500;padding:8px 16px;display:flex;align-items:center;justify-content:center;gap:8px}.action-button[data-v-c85ca6b0]:hover{transform:translateY(-2px);box-shadow:0 4px 8px #00000026}.filter-button[data-v-c85ca6b0]{background:linear-gradient(135deg,#e6a23c,#f0c78a);color:#fff;min-width:90px}.filter-button.active-filter[data-v-c85ca6b0]{background:linear-gradient(135deg,#d48806,#e6a23c)}.filter-button .filter-badge[data-v-c85ca6b0] .el-badge__content{background-color:#f56c6c;color:#fff;border:2px solid white;box-shadow:0 0 0 1px #e6a23c}.view-mode-button[data-v-c85ca6b0]{background:linear-gradient(135deg,#409eff,#53a8ff);color:#fff}.view-mode-button.active-view[data-v-c85ca6b0]{background:linear-gradient(135deg,#1890ff,#096dd9)}.commit-display-button[data-v-c85ca6b0]{background:linear-gradient(135deg,#67c23a,#85ce61);color:#fff}.commit-display-button.active-commits[data-v-c85ca6b0]{background:linear-gradient(135deg,#52c41a,#389e0d)}.refresh-button[data-v-c85ca6b0]{background:linear-gradient(135deg,#909399,#c0c4cc);color:#fff;min-width:unset;padding:8px;border-radius:50%;width:36px;height:36px}.refresh-button[data-v-c85ca6b0]:hover{background:linear-gradient(135deg,#606266,#909399)}.refresh-button-animated[data-v-c85ca6b0]{animation:spin-c85ca6b0 1s linear}@keyframes spin-c85ca6b0{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.content-area[data-v-c85ca6b0]{flex:1;min-height:100px;height:calc(100% - 52px);display:flex;flex-direction:column;overflow:auto}.content-area-content[data-v-c85ca6b0]{height:100%;display:flex;flex-direction:column}.content-area.with-filter[data-v-c85ca6b0]{height:calc(100% - 112px);padding-top:0}.content-area>div[data-v-c85ca6b0]{flex:1;display:flex;flex-direction:column}.el-table[data-v-c85ca6b0]{--el-table-border-color: #f0f0f0;--el-table-header-bg-color: #f8f9fa;border-radius:8px;overflow:hidden}[data-v-c85ca6b0] .el-table__header-wrapper{background-color:#f8f9fa}[data-v-c85ca6b0] .el-table__header th{background-color:#f8f9fa;color:#606266;font-weight:600;height:36px;font-size:13px}[data-v-c85ca6b0] .el-table__row{transition:all .2s ease}[data-v-c85ca6b0] .el-table__row:hover{background-color:#ecf5ff!important}[data-v-c85ca6b0] .el-table--striped .el-table__row--striped{background-color:#fafafa}[data-v-c85ca6b0] .el-table__cell{padding:4px 0;font-size:13px}.branch-container[data-v-c85ca6b0]{display:flex;flex-wrap:wrap;gap:4px;margin-right:8px;flex-shrink:0}.branch-tag[data-v-c85ca6b0]{margin-right:0;border-radius:3px;transition:all .2s ease;font-size:10px;padding:1px 4px;height:16px;line-height:14px}.branch-tag[data-v-c85ca6b0]:hover{transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.commit-count[data-v-c85ca6b0]{margin-bottom:12px;font-size:14px;color:#606266;text-align:right}.graph-view[data-v-c85ca6b0]{width:100%;flex:1;display:flex;flex-direction:column;overflow-y:auto;padding:0 8px}.graph-container[data-v-c85ca6b0]{width:100%;flex:1;min-height:500px;border:1px solid #ebeef5;border-radius:8px;padding:16px;background-color:#fff;position:relative;box-shadow:0 2px 8px #00000008}.graph-container svg[data-v-c85ca6b0]{transform-origin:top left;transition:transform .2s ease}.graph-controls[data-v-c85ca6b0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;background-color:#f8f9fa;padding:12px;border-radius:8px;border:1px solid #ebeef5}.zoom-controls[data-v-c85ca6b0]{display:flex;gap:12px;align-items:center}.zoom-slider[data-v-c85ca6b0]{width:200px}.scale-info[data-v-c85ca6b0]{font-size:14px;color:#606266;background-color:#fff;padding:4px 10px;border-radius:4px;border:1px solid #ebeef5}.refresh-notification[data-v-c85ca6b0]{background-color:#f0f9eb;color:#67c23a;padding:10px 15px;border-radius:8px;font-size:14px;border-left:4px solid #67c23a;animation:fadeOut-c85ca6b0 2s forwards;position:fixed;top:20px;right:20px;z-index:9999;box-shadow:0 4px 12px #0000001a;max-width:300px;text-align:center}@keyframes fadeOut-c85ca6b0{0%{opacity:0;transform:translateY(-20px)}20%{opacity:1;transform:translateY(0)}80%{opacity:1}to{opacity:0}}.author-name[data-v-c85ca6b0]{cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;max-width:100%;font-weight:500;font-size:12px}.commit-hash[data-v-c85ca6b0]{cursor:pointer;color:#409eff;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-weight:500;border-radius:3px;padding:1px 3px;background-color:#ecf5ff;transition:all .2s ease;font-size:11px}.commit-hash[data-v-c85ca6b0]:hover{text-decoration:none;background-color:#d9ecff;box-shadow:0 2px 4px #0000000d}.commit-detail-container[data-v-c85ca6b0]{display:flex;flex-direction:column;gap:16px;flex:1;min-height:0;overflow:hidden}.commit-info[data-v-c85ca6b0]{padding:12px;background-color:#f5f7fa;border-radius:8px;font-size:14px;display:flex;flex-direction:column;gap:12px;flex-shrink:0;max-height:200px}.commit-info-header[data-v-c85ca6b0]{display:flex;flex-wrap:wrap;gap:12px;align-items:center;background-color:#fff;padding:12px;border-radius:8px;border:1px solid #e4e7ed}.info-item[data-v-c85ca6b0]{display:flex;align-items:center;gap:8px}.item-label[data-v-c85ca6b0]{font-weight:700;color:#606266;white-space:nowrap}.item-value[data-v-c85ca6b0]{color:#333;word-break:break-all}.commit-message-container[data-v-c85ca6b0]{display:flex;flex-direction:column;gap:8px}.message-label[data-v-c85ca6b0]{font-weight:700;color:#606266}[data-v-c85ca6b0] .commit-detail-dialog .el-dialog__body{padding:12px;height:calc(100vh - 200px);display:flex;flex-direction:column;overflow:hidden}.diff-content[data-v-c85ca6b0]::-webkit-scrollbar,.files-list[data-v-c85ca6b0]::-webkit-scrollbar{width:6px;height:6px}.diff-content[data-v-c85ca6b0]::-webkit-scrollbar-thumb,.files-list[data-v-c85ca6b0]::-webkit-scrollbar-thumb{background-color:#9093994d;border-radius:4px}.diff-content[data-v-c85ca6b0]::-webkit-scrollbar-thumb:hover,.files-list[data-v-c85ca6b0]::-webkit-scrollbar-thumb:hover{background-color:#90939980}.diff-content[data-v-c85ca6b0]::-webkit-scrollbar-track,.files-list[data-v-c85ca6b0]::-webkit-scrollbar-track{background-color:transparent}.diff-content[data-v-c85ca6b0],.files-list[data-v-c85ca6b0]{scrollbar-width:thin;scrollbar-color:rgba(144,147,153,.3) transparent}.filter-panel-header[data-v-c85ca6b0]{background-color:#f5f7fa;padding:16px;margin-bottom:16px;border-radius:8px;box-shadow:0 2px 12px #0000000d;transition:all .3s ease;width:100%;position:sticky;top:36px;z-index:99}.fullscreen-mode .filter-panel-header[data-v-c85ca6b0]{position:sticky;top:60px;z-index:9;background-color:#fff;width:100%;border-radius:0;border-bottom:1px solid #ebeef5;box-shadow:0 2px 8px #0000000d}.filter-form[data-v-c85ca6b0]{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}.filter-item[data-v-c85ca6b0]{flex:1;min-width:200px}.filter-actions[data-v-c85ca6b0]{display:flex;align-items:center;gap:10px;white-space:nowrap;flex-shrink:0}.filter-input[data-v-c85ca6b0]{width:100%}.filter-input.date-range[data-v-c85ca6b0]{width:100%;max-width:280px}.compact-label[data-v-c85ca6b0]{color:#909399;font-size:12px;margin-right:6px;white-space:nowrap;font-weight:700;border-right:1px solid #dcdfe6;padding-right:8px}.filter-action-button[data-v-c85ca6b0]{padding:8px 16px;border-radius:6px;transition:all .3s;min-width:70px;font-weight:500}.filter-action-button[data-v-c85ca6b0]:hover{transform:translateY(-2px);box-shadow:0 2px 8px #0000001a}.table-view-container[data-v-c85ca6b0]{height:100%;display:flex;flex-direction:column;flex:1}.log-table[data-v-c85ca6b0]{flex:1;width:100%}.commit-message-cell[data-v-c85ca6b0]{display:flex;align-items:center;min-height:32px}.message-content[data-v-c85ca6b0]{display:flex;align-items:center;gap:8px;width:100%}.message-text[data-v-c85ca6b0]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;line-height:1.3}.copy-message-btn[data-v-c85ca6b0]{opacity:0;transition:opacity .2s ease;padding:4px;min-width:auto;height:auto}.commit-message-cell:hover .copy-message-btn[data-v-c85ca6b0]{opacity:1}.copy-message-btn[data-v-c85ca6b0]:hover{color:#409eff}.fullscreen-mode .table-view-container[data-v-c85ca6b0]{height:calc(100vh - 160px)}.fullscreen-mode .log-table[data-v-c85ca6b0]{height:100%}.load-more-container[data-v-c85ca6b0]{display:flex;flex-direction:column;align-items:center;padding:8px 0;border-top:1px dashed #ebeef5;gap:8px}.pagination-info[data-v-c85ca6b0]{font-size:13px;color:#909399;margin-bottom:4px}.loading-more[data-v-c85ca6b0]{display:flex;align-items:center;color:#909399;font-size:13px;gap:8px}.loading-spinner[data-v-c85ca6b0]{width:16px;height:16px;border:2px solid #dcdfe6;border-top-color:#409eff;border-radius:50%;animation:spinner-c85ca6b0 1s linear infinite}@keyframes spinner-c85ca6b0{to{transform:rotate(360deg)}}.load-more-button[data-v-c85ca6b0]{cursor:pointer;color:#409eff;font-size:13px;padding:6px 16px;border:1px solid #d9ecff;background-color:#ecf5ff;border-radius:4px;transition:all .3s;font-weight:500}.no-more-data[data-v-c85ca6b0]{color:#909399;font-size:13px;font-style:italic;display:flex;flex-direction:column;align-items:center}.total-loaded[data-v-c85ca6b0]{font-size:12px;margin-top:4px;color:#c0c4cc}@keyframes fadeIn-c85ca6b0{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.context-menu-item[data-v-c85ca6b0]{padding:10px 16px;cursor:pointer;font-size:14px;display:flex;align-items:center;transition:all .2s ease;color:#606266}.context-menu-item[data-v-c85ca6b0]:hover{background-color:#f5f7fa;color:#409eff}.context-menu-item i[data-v-c85ca6b0]{margin-right:10px;font-size:16px}[data-v-c85ca6b0] .el-table--border .el-table__inner-wrapper tr{border:none!important}[data-v-c85ca6b0] .el-table--border .el-table__inner-wrapper td{border-right:none!important;border-bottom:none!important}[data-v-c85ca6b0] .el-table--border .el-table__inner-wrapper th{border-right:none!important}[data-v-c85ca6b0] .el-table--border,[data-v-c85ca6b0] .el-table--border .el-table__inner-wrapper{border:none!important}[data-v-c85ca6b0] .el-table--border:after,[data-v-c85ca6b0] .el-table--border:before,[data-v-c85ca6b0] .el-table__inner-wrapper:after,[data-v-c85ca6b0] .el-table__inner-wrapper:before{display:none!important}[data-v-c85ca6b0] .el-table tr{background-color:transparent!important}[data-v-c85ca6b0] .el-table--striped .el-table__body tr.el-table__row--striped td{background-color:#00000005!important}.fullscreen-mode[data-v-c85ca6b0]{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999;margin:0;border-radius:0;border:none;box-shadow:none;background-color:#fff;display:flex;flex-direction:column;overflow:auto}.fullscreen-mode .log-header[data-v-c85ca6b0]{position:sticky;top:0;z-index:10;background-color:#fff;padding:16px;margin-bottom:10px;width:100%}.fullscreen-mode .filter-panel-header[data-v-c85ca6b0]{position:sticky;top:60px;z-index:9;background-color:#fff;width:100%}.fullscreen-mode .content-area[data-v-c85ca6b0]{height:100vh;max-height:none;flex:1;overflow:auto}.fullscreen-mode .el-table[data-v-c85ca6b0]{height:calc(100vh - 60px)}.fullscreen-mode .graph-view[data-v-c85ca6b0]{height:calc(100vh - 140px)}.fullscreen-button[data-v-c85ca6b0]{background:linear-gradient(135deg,#909399,#c0c4cc);color:#fff}.fullscreen-button.active-fullscreen[data-v-c85ca6b0]{background:linear-gradient(135deg,#606266,#909399)}.context-menu[data-v-c85ca6b0]{position:fixed;background:#fff;border:1px solid #dcdfe6;border-radius:8px;box-shadow:0 4px 16px #0000001a;padding:6px 0;z-index:3000;min-width:200px;animation:fadeIn-c85ca6b0 .15s ease-out}.fullscreen-context-menu[data-v-c85ca6b0]{z-index:999999}.icon-only-button[data-v-c85ca6b0]{min-width:unset;width:36px;height:36px;padding:8px;border-radius:8px;display:flex;align-items:center;justify-content:center}.icon-only-button .el-icon[data-v-c85ca6b0]{margin-right:0}.el-table .el-table__cell .cell{word-break:break-all}.diff-header{font-weight:700;background-color:#e6f1fc;padding:10px 16px;margin:12px 0;border-radius:6px;color:#0366d6;border-bottom:1px solid #c8e1ff}.diff-old-file,.diff-new-file{color:#586069;padding:4px 8px;font-family:JetBrains Mono,Fira Code,Consolas,monospace}.diff-old-file{color:#cb2431}.diff-new-file{color:#22863a}.diff-hunk-header{color:#6f42c1;background-color:#f1f8ff;padding:4px 8px;margin:8px 0;border-radius:4px;font-family:JetBrains Mono,Fira Code,Consolas,monospace}.diff-added{background-color:#e6ffed;color:#22863a;padding:2px 8px;border-left:4px solid #22863a;font-family:JetBrains Mono,Fira Code,Consolas,monospace;display:block;margin:2px 0}.diff-removed{background-color:#ffeef0;color:#cb2431;padding:2px 8px;border-left:4px solid #cb2431;font-family:JetBrains Mono,Fira Code,Consolas,monospace;display:block;margin:2px 0}.diff-context{color:#444;padding:2px 8px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;display:block;margin:2px 0;background-color:#fafbfc}.load-more-button:hover{background-color:#d9ecff;box-shadow:0 2px 6px #409eff26;transform:translateY(-1px)}.command-history-button[data-v-123bc700]{transition:all .3s ease}.command-history-button[data-v-123bc700]:hover{transform:translateY(-2px);box-shadow:0 4px 12px #409eff4d}.command-history-dialog[data-v-123bc700]{border-radius:8px;z-index:9999!important}[data-v-123bc700] .command-history-dialog .el-overlay{z-index:9998!important}[data-v-123bc700] .command-history-dialog .el-dialog{z-index:9999!important}.dialog-toolbar[data-v-123bc700]{padding:12px 20px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.socket-status[data-v-123bc700]{font-size:12px}.clear-button[data-v-123bc700]{transition:all .3s}.clear-button[data-v-123bc700]:hover{transform:rotate(12deg);background-color:#ff4d4f;border-color:#ff4d4f}.copy-all-button[data-v-123bc700]{transition:all .3s;position:relative}.copy-all-button[data-v-123bc700]:hover{transform:translateY(-2px);background-color:#409eff;border-color:#409eff;box-shadow:0 2px 6px #409eff4d}.copy-commands-button[data-v-123bc700]{transition:all .3s;position:relative}.copy-commands-button[data-v-123bc700]:hover{transform:translateY(-2px);background-color:#67c23a;border-color:#67c23a;box-shadow:0 2px 6px #67c23a4d}.copy-commands-button[data-v-123bc700]:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:12px;height:12px;border-radius:50%;background-color:#ffffff4d;opacity:0;transition:opacity .3s}.copy-all-button[data-v-123bc700]:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:12px;height:12px;border-radius:50%;background-color:#ffffff4d;opacity:0;transition:opacity .3s}.copy-commands-button[data-v-123bc700]:active:after,.copy-all-button[data-v-123bc700]:active:after{opacity:1;animation:ripple-123bc700 .6s ease-out}@keyframes ripple-123bc700{0%{width:0;height:0;opacity:.5}to{width:30px;height:30px;opacity:0}}.dialog-content[data-v-123bc700]{padding:0 20px 20px}.loading-state[data-v-123bc700]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;min-height:100px}.history-scroll[data-v-123bc700]{overflow-y:auto;max-height:calc(80vh - 160px)}.loading-icon[data-v-123bc700]{font-size:36px;color:#409eff;margin-bottom:10px}.loading-text[data-v-123bc700]{font-size:14px;color:#606266}.history-list[data-v-123bc700]{display:flex;flex-direction:column;gap:8px}.history-item[data-v-123bc700]{border:1px solid #ebeef5;border-radius:4px;transition:all .2s;background-color:#f8f9fa;overflow:hidden}.history-item[data-v-123bc700]:hover{box-shadow:0 2px 12px #0000001a}.history-item.is-error[data-v-123bc700]{border-left:3px solid #f56c6c}.item-header[data-v-123bc700]{padding:10px 12px;display:flex;justify-content:space-between;align-items:center;cursor:pointer;transition:background-color .2s}.item-header[data-v-123bc700]:hover{background-color:#f0f2f5}.command-info[data-v-123bc700]{flex:1;min-width:0;overflow:hidden}.command-text[data-v-123bc700]{display:flex;align-items:center;gap:8px;margin-bottom:4px}.command-text code[data-v-123bc700]{font-family:Consolas,Courier New,monospace;font-size:13px;color:#303133;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.command-meta[data-v-123bc700]{display:flex;align-items:center;gap:16px;font-size:12px;color:#909399}.timestamp[data-v-123bc700],.duration[data-v-123bc700]{white-space:nowrap}.item-actions[data-v-123bc700]{display:flex;align-items:center;gap:6px;margin-left:8px}.item-details[data-v-123bc700]{padding:10px 12px;border-top:1px solid #ebeef5;background-color:#fff;display:flex;flex-direction:column;gap:12px}.output-section[data-v-123bc700]{display:flex;flex-direction:column;gap:6px}.output-section.error[data-v-123bc700]{border-left:3px solid #f56c6c;padding-left:8px}.output-section[data-v-123bc700]:not(.error){border-left:3px solid #67c23a;padding-left:8px}.output-header[data-v-123bc700]{display:flex;justify-content:space-between;align-items:center}.output-header h4[data-v-123bc700]{margin:0;font-size:14px;font-weight:500;color:#606266}.output-content[data-v-123bc700]{background-color:#f8f9fa;padding:10px;border-radius:4px;font-family:Consolas,Courier New,monospace;font-size:12px;white-space:pre-wrap;word-break:break-all;margin:0;max-height:300px;overflow-y:auto;border:1px solid #ebeef5}.status-tag[data-v-123bc700]{flex-shrink:0}.truncation-notice[data-v-123bc700]{margin-top:6px}.output-content[data-v-123bc700]::-webkit-scrollbar{width:6px;height:6px}.output-content[data-v-123bc700]::-webkit-scrollbar-thumb{background-color:#c0c4cc;border-radius:3px}.output-content[data-v-123bc700]::-webkit-scrollbar-track{background-color:#f5f7fa}.command-history-dialog{z-index:99999!important}.el-overlay{z-index:99998!important}.el-dialog{z-index:99999!important}.el-overlay.is-message-box{z-index:99998!important}.el-dialog.command-history-dialog{z-index:99999!important}body{font-family:Arial,sans-serif;margin:0;padding:0;background-color:#f5f5f5;overflow:hidden;height:100vh}.main-container{position:fixed;top:60px;bottom:60px;left:0;right:0;padding:10px;overflow:hidden;z-index:1001}.grid-layout{display:grid;grid-template-columns:2fr 4px 3fr;grid-template-rows:1fr 4px 1fr;grid-template-areas:"git-status v-resizer commit-form" "h-resizer h-resizer h-resizer" "log-list log-list log-list";gap:6px;height:100%}.git-status-panel{grid-area:git-status;overflow:hidden;max-height:100%;padding:0}.commit-form-panel{grid-area:commit-form;overflow:hidden;max-height:100%;padding:0}.log-list-panel{grid-area:log-list;overflow:hidden;max-height:100%;padding:0}.card{background-color:#fff;border-radius:8px;box-shadow:0 4px 12px #0000000d;border:1px solid rgba(0,0,0,.03);height:100%;overflow:hidden;display:flex;flex-direction:column}.main-header{background-color:#24292e;color:#fff;padding:0 20px;display:flex;justify-content:space-between;align-items:center;position:fixed;top:0;left:0;right:0;z-index:1000;box-shadow:0 2px 10px #0003;height:60px;box-sizing:border-box}.header-left{display:flex;align-items:center;gap:10px;min-width:220px;flex:1}.logo{height:32px;width:auto}h1{margin:0;font-size:24px}.header-info{display:flex;align-items:center;gap:10px;justify-content:flex-end}#user-info{display:flex;align-items:center;background-color:#282c34b3;padding:6px 10px;border-radius:4px;border:1px solid rgba(255,255,255,.15);margin-right:10px;flex-shrink:0}.directory-selector{display:flex;flex-direction:row;justify-content:space-between;align-items:center;background-color:#282c34b3;border-radius:4px;padding:6px 10px;border:1px solid rgba(255,255,255,.15);box-shadow:0 2px 8px #00000026;flex-shrink:0}.command-history-section{display:flex;align-items:center;margin-left:12px}.directory-display{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.directory-path{font-family:monospace;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px;font-weight:500;background-color:#0003;padding:4px 8px;border-radius:3px;border-left:3px solid #409EFF;flex:1;min-width:0;max-width:500px}.branch-label,.user-label,.user-name{font-weight:700;margin-right:5px}.user-email{color:#e0e0e0;font-size:12px}.branch-name{font-family:monospace}.status-box{background-color:#f6f8fa;border:1px solid #e1e4e8;border-radius:3px;padding:15px;white-space:pre-wrap;font-family:monospace;overflow-y:auto}.tips{margin-top:20px;padding:15px;background-color:#f5f7fa;border-radius:5px;border-left:4px solid #409eff}.tips h3{margin-top:0;font-size:16px;margin-bottom:10px}.code-block{background-color:#2d2d2d;color:#f8f8f2;font-family:monospace;padding:10px 15px;border-radius:4px;margin-bottom:10px}.loading-container{display:flex;justify-content:center;align-items:center;height:100%}.loading-card{width:300px;text-align:center;padding:30px}.loading-spinner{font-size:48px;margin-bottom:20px;color:#409eff}.loading-text{font-size:18px;color:#606266}.user-settings-btn{margin-left:10px}.user-warning{color:#e6a23c;font-weight:700}.main-footer{background-color:#24292e;color:#fff;padding:10px 20px;display:flex;justify-content:space-between;align-items:center;position:fixed;bottom:0;left:0;right:0;z-index:100;box-shadow:0 -2px 10px #0000001a;height:60px;box-sizing:border-box}.logo[data-v-882efda6]{will-change:filter;transition:filter .3s}.logo[data-v-882efda6]:hover{filter:drop-shadow(0 0 2em #42b883aa)}.branch-info[data-v-882efda6]{display:flex;align-items:center;gap:10px}.branch-wrapper[data-v-882efda6]{display:flex;align-items:center;background-color:#ffffff26;border-radius:4px;padding:8px 12px;box-shadow:0 2px 4px #0003;transition:all .3s}.branch-wrapper[data-v-882efda6]:hover{background-color:#fff3}.branch-label[data-v-882efda6]{font-weight:700;margin-right:10px;color:#fff}.branch-select[data-v-882efda6]{width:200px;margin-right:10px}.create-branch-btn[data-v-882efda6]{background-color:#2ea44f;border-color:#2ea44f;transition:all .3s;box-shadow:0 2px 4px #0003}.create-branch-btn[data-v-882efda6]:hover{background-color:#3bbc63;border-color:#3bbc63;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.footer-right[data-v-882efda6]{display:flex;align-items:center;gap:10px;color:#ffffffe6;font-size:13px;background-color:#ffffff1a;padding:8px 12px;border-radius:4px;box-shadow:0 2px 4px #0003}.repo-url-label[data-v-882efda6]{font-weight:700;margin-right:8px;color:#fff}.repo-url[data-v-882efda6]{color:#e6f7ff;font-family:monospace;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.copy-url-btn[data-v-882efda6]{transition:all .3s;background-color:#1890ff;border-color:#1890ff;box-shadow:0 2px 4px #0003}.copy-url-btn[data-v-882efda6]:hover{background-color:#40a9ff;border-color:#40a9ff;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.vertical-resizer[data-v-882efda6]{grid-area:v-resizer;background-color:#e8e8e8;cursor:col-resize;transition:background-color .2s,box-shadow .2s;position:relative;z-index:10;border-radius:4px;box-shadow:0 0 2px #0000001a}.vertical-resizer[data-v-882efda6]:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:2px;height:40px;background-color:#a0a0a0;border-radius:2px;transition:background-color .2s,width .2s,box-shadow .2s}.vertical-resizer[data-v-882efda6]:hover,.vertical-resizer.active[data-v-882efda6]{background-color:#d0d0d0;box-shadow:0 0 4px #0003}.vertical-resizer[data-v-882efda6]:hover:after,.vertical-resizer.active[data-v-882efda6]:after{background-color:#409eff;width:3px;box-shadow:0 0 6px #409eff99}.horizontal-resizer[data-v-882efda6]{grid-area:h-resizer;background-color:#e8e8e8;cursor:row-resize;transition:background-color .2s,box-shadow .2s;position:relative;z-index:10;border-radius:4px;box-shadow:0 0 2px #0000001a}.horizontal-resizer[data-v-882efda6]:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:40px;height:2px;background-color:#a0a0a0;border-radius:2px;transition:background-color .2s,height .2s,box-shadow .2s}.horizontal-resizer[data-v-882efda6]:hover,.horizontal-resizer.active[data-v-882efda6]{background-color:#d0d0d0;box-shadow:0 0 4px #0003}.horizontal-resizer[data-v-882efda6]:hover:after,.horizontal-resizer.active[data-v-882efda6]:after{background-color:#409eff;height:3px;box-shadow:0 0 6px #409eff99}.vertical-resizer-bottom[data-v-882efda6]{grid-area:v-resizer-bottom;background-color:#e8e8e8;cursor:col-resize;transition:background-color .2s,box-shadow .2s;position:relative;z-index:10;border-radius:4px;box-shadow:0 0 2px #0000001a}.vertical-resizer-bottom[data-v-882efda6]:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:2px;height:40px;background-color:#a0a0a0;border-radius:2px;transition:background-color .2s,width .2s,box-shadow .2s}.vertical-resizer-bottom[data-v-882efda6]:hover,.vertical-resizer-bottom.active[data-v-882efda6]{background-color:#d0d0d0;box-shadow:0 0 4px #0003}.vertical-resizer-bottom[data-v-882efda6]:hover:after,.vertical-resizer-bottom.active[data-v-882efda6]:after{background-color:#409eff;width:3px;box-shadow:0 0 6px #409eff99}.directory-selector[data-v-882efda6]{display:flex;flex-direction:row;justify-content:space-between;align-items:center;background-color:#282c34b3;border-radius:4px;padding:8px 12px;margin-bottom:8px;border:1px solid rgba(255,255,255,.2);box-shadow:0 2px 8px #0003}.directory-display[data-v-882efda6]{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.directory-path[data-v-882efda6]{font-family:monospace;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px;font-weight:500;background-color:#0003;padding:4px 8px;border-radius:3px;border-left:3px solid #409EFF;flex:1;min-width:0;max-width:350px}.directory-actions[data-v-882efda6]{display:flex;gap:4px;margin-left:8px}.dir-button[data-v-882efda6]{padding:4px;height:24px;width:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#409eff,#53a8ff);color:#fff;border:none;box-shadow:0 2px 4px #0003;transition:all .3s}.dir-button[data-v-882efda6]:hover{transform:translateY(-1px);box-shadow:0 3px 6px #0000004d;background:linear-gradient(135deg,#53a8ff,#66b1ff)}.dir-button.el-button--info[data-v-882efda6]{background:linear-gradient(135deg,#909399,#a6a9ad)}.dir-button.el-button--info[data-v-882efda6]:hover{background:linear-gradient(135deg,#a6a9ad,#c0c4cc)}.directory-icon[data-v-882efda6]{display:flex;justify-content:center;align-items:center;width:24px;height:24px;border-radius:3px;background-color:#409eff1a;color:#409eff;margin-right:2px}.directory-input-group[data-v-882efda6]{display:flex;align-items:center;gap:8px;width:100%}.recent-directories[data-v-882efda6]{display:flex;flex-wrap:wrap;gap:4px}.recent-dir-tag[data-v-882efda6]{cursor:pointer;background-color:#e6f7ff;border:1px solid #91d5ff;padding:4px 8px;border-radius:4px}.directory-browser[data-v-882efda6]{width:100%;height:400px;overflow:auto}.current-path[data-v-882efda6]{padding:10px;background-color:#f5f7fa;border-radius:4px;margin-bottom:10px;border:1px solid #e4e7ed;display:flex;align-items:center;width:100%;box-sizing:border-box}.path-label[data-v-882efda6]{font-weight:700;margin-right:5px;white-space:nowrap;flex-shrink:0}.path-value[data-v-882efda6]{font-family:monospace;word-break:break-all;flex:1;min-width:0;background-color:#fff;padding:5px 8px;border-radius:3px;border:1px solid #dcdfe6;box-shadow:inset 0 1px 2px #0000000d;width:100%}.directory-list[data-v-882efda6]{list-style:none!important;padding:0;margin:0;border:1px solid #e4e7ed;border-radius:4px;max-height:300px;overflow-y:auto;background-color:#fff;display:flex;flex-direction:column;width:100%;box-sizing:border-box}.directory-item[data-v-882efda6]{padding:10px 12px;border-bottom:1px solid #ebeef5;cursor:pointer;display:flex;align-items:center;transition:all .2s ease;position:relative;width:100%;box-sizing:border-box;list-style:none!important}.directory-item[data-v-882efda6]:hover{background-color:#ecf5ff}.directory-item[data-v-882efda6]:last-child{border-bottom:none}.parent-dir[data-v-882efda6]{background-color:#f5f7fa;font-weight:500}.dir-icon[data-v-882efda6]{margin-right:12px;display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0}.dir-name[data-v-882efda6]{display:flex;align-items:center;font-size:14px;line-height:1.4}.folder-icon[data-v-882efda6]{filter:drop-shadow(0 1px 2px rgba(0,0,0,.1));transition:all .2s ease}.directory-item:hover .folder-icon[data-v-882efda6]{transform:scale(1.1)}[data-v-882efda6] .directory-browser-dialog{border-radius:8px;overflow:hidden}[data-v-882efda6] .directory-browser-dialog .el-message-box__header{background-color:#f5f7fa;padding:15px 20px;border-bottom:1px solid #e4e7ed;position:relative}[data-v-882efda6] .directory-browser-dialog .el-message-box__title{color:#409eff;font-weight:500;font-size:18px}[data-v-882efda6] .directory-browser-dialog .el-message-box__headerbtn{position:absolute;top:15px;right:15px;width:24px;height:24px;border-radius:50%;background-color:#0000000d;transition:all .3s;display:flex;align-items:center;justify-content:center}[data-v-882efda6] .directory-browser-dialog .el-message-box__headerbtn:hover{background-color:#0000001a;transform:rotate(90deg)}[data-v-882efda6] .directory-browser-dialog .el-message-box__headerbtn .el-message-box__close{color:#606266;font-weight:700;font-size:16px}[data-v-882efda6] .directory-browser-dialog .el-message-box__headerbtn:hover .el-message-box__close{color:#409eff}[data-v-882efda6] .directory-browser-dialog .el-message-box__content{padding:20px}.el-message-box__message{width:100%}.directory-browser-dialog{border-radius:8px;overflow:hidden}.directory-browser-dialog .el-message-box__header{background-color:#f5f7fa;padding:15px 20px;border-bottom:1px solid #e4e7ed;position:relative}.directory-browser-dialog .el-message-box__title{color:#409eff;font-weight:500;font-size:18px}.directory-browser-dialog .el-message-box__headerbtn{position:absolute;top:15px;right:15px;width:24px;height:24px;border-radius:50%;background-color:#0000000d;transition:all .3s;display:flex;align-items:center;justify-content:center}.directory-browser-dialog .el-message-box__headerbtn:hover{background-color:#0000001a;transform:rotate(90deg)}.directory-browser-dialog .el-message-box__headerbtn .el-message-box__close{color:#606266;font-weight:700;font-size:16px}.directory-browser-dialog .el-message-box__headerbtn:hover .el-message-box__close{color:#409eff}.directory-browser-dialog .el-message-box__content{padding:20px}.directory-browser-dialog .el-message-box__btns{padding:10px 20px 15px;border-top:1px solid #e4e7ed}.directory-browser{width:100%;height:400px;overflow:auto}.current-path{padding:10px;background-color:#f5f7fa;border-radius:4px;margin-bottom:10px;border:1px solid #e4e7ed;display:flex;align-items:center;width:100%;box-sizing:border-box}.path-label{font-weight:700;margin-right:5px;white-space:nowrap;flex-shrink:0}.path-value{font-family:monospace;word-break:break-all;flex:1;min-width:0;background-color:#fff;padding:5px 8px;border-radius:3px;border:1px solid #dcdfe6;box-shadow:inset 0 1px 2px #0000000d;width:100%}.directory-list{list-style:none!important;padding:0;margin:0;border:1px solid #e4e7ed;border-radius:4px;max-height:300px;overflow-y:auto;background-color:#fff;display:flex;flex-direction:column;width:100%;box-sizing:border-box}.directory-item{padding:10px 12px;border-bottom:1px solid #ebeef5;cursor:pointer;display:flex;align-items:center;transition:all .2s ease;position:relative;width:100%;box-sizing:border-box;list-style:none!important}.directory-item:hover{background-color:#ecf5ff}.directory-item:last-child{border-bottom:none}.parent-dir{background-color:#f5f7fa;font-weight:500}.dir-icon{margin-right:12px;display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0}.dir-name{display:flex;align-items:center;font-size:14px;line-height:1.4}.folder-icon{filter:drop-shadow(0 1px 2px rgba(0,0,0,.1));transition:all .2s ease}.directory-item:hover .folder-icon{transform:scale(1.1)}/*! tailwindcss v4.1.13 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-800:oklch(27.8% .033 256.848);--color-white:#fff;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--shadow-sm:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--shadow-md:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--shadow-xl:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;--ease-in-out:cubic-bezier(.4,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.fixed{position:fixed}.relative{position:relative}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.flex{display:flex}.hidden{display:none}.table{display:table}.table-column{display:table-column}.flex-shrink{flex-shrink:1}.flex-grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.border{border-style:var(--tw-border-style);border-width:1px}.uppercase{text-transform:uppercase}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}}:root{--color-primary:#409eff;--color-primary-light:#5a67d8;--color-primary-dark:#337ecc;--color-primary-gradient:linear-gradient(135deg,#667eea 0%,#764ba2 100%);--color-primary-gradient-hover:linear-gradient(135deg,#5a67d8 0%,#6b46c1 100%);--color-success:#67c23a;--color-success-light:#10b981;--color-warning:#e6a23c;--color-warning-light:#f59e0b;--color-danger:#f56c6c;--color-danger-light:#ef4444;--color-danger-dark:#dc2626;--color-info:#909399;--color-info-light:#8b5cf6;--color-white:#fff;--color-black:#000;--color-gray-50:#f9fafb;--color-gray-100:#f3f4f6;--color-gray-200:#e5e7eb;--color-gray-300:#d1d5db;--color-gray-400:#9ca3af;--color-gray-500:#6b7280;--color-gray-600:#4b5563;--color-gray-700:#374151;--color-gray-800:#1f2937;--color-gray-900:#111827;--git-status-added:#10b981;--git-status-modified:#f59e0b;--git-status-deleted:#ef4444;--git-status-untracked:#8b5cf6;--git-status-locked:#dc2626;--git-diff-header-bg:#f1f8ff;--git-diff-header-color:#0366d6;--git-diff-header-border:#c8e1ff;--git-diff-added-bg:#e6ffed;--git-diff-added-color:#22863a;--git-diff-added-border:#22863a;--git-diff-removed-bg:#ffeef0;--git-diff-removed-color:#cb2431;--git-diff-removed-border:#cb2431;--git-diff-hunk-bg:#f1f8ff;--git-diff-hunk-color:#6f42c1;--git-diff-context-color:#24292f;--git-diff-context-bg:#fff;--btn-primary-bg:var(--color-primary);--btn-primary-hover-bg:var(--color-primary-light);--btn-primary-active-bg:var(--color-primary-dark);--btn-primary-color:var(--color-white);--btn-success-bg:var(--color-success);--btn-success-hover-bg:#85ce61;--btn-success-active-bg:#5daf34;--btn-success-color:var(--color-white);--btn-warning-bg:var(--color-warning);--btn-warning-hover-bg:#ebb563;--btn-warning-active-bg:#cf9236;--btn-warning-color:var(--color-white);--btn-danger-bg:var(--color-danger);--btn-danger-hover-bg:#f78989;--btn-danger-active-bg:#dd6161;--btn-danger-color:var(--color-white);--btn-info-bg:var(--color-info);--btn-info-hover-bg:#a6a9ad;--btn-info-active-bg:#82848a;--btn-info-color:var(--color-white);--btn-text-color:var(--color-primary);--btn-text-hover-color:var(--color-primary-light);--btn-text-active-color:var(--color-primary-dark);--bg-page:#f5f5f5;--bg-page-dark:#2d2d2d;--bg-container:var(--color-white);--bg-container-hover:#f8fafc;--bg-container-dark:#24292e;--bg-overlay:#282c34b3;--bg-overlay-light:#0003;--bg-code:#f6f8fa;--bg-code-dark:#2d2d2d;--bg-code-line:#fafbfc;--border-color:#0000000f;--border-color-light:#00000008;--border-color-medium:#e1e4e8;--border-color-dark:#ffffff26;--border-hover:#667eea26;--border-focus:var(--color-primary);--border-active:var(--color-primary-dark);--shadow-sm:0 1px 3px #0000000a;--shadow-base:0 1px 4px #0000000a;--shadow-md:0 2px 8px #00000014;--shadow-lg:0 4px 12px #00000014;--shadow-xl:0 8px 24px #0000001f;--shadow-hover:0 4px 12px #00000014;--shadow-active:0 2px 6px #0000001f;--shadow-focus:0 0 0 2px #409eff33;--shadow-dark:0 2px 10px #0003;--shadow-dark-lg:0 4px 16px #0000004d;--text-primary:#1f2937;--text-primary-dark:#f8f8f2;--text-secondary:#606266;--text-secondary-dark:#e0e0e0;--text-tertiary:#9ca3af;--text-tertiary-dark:#fff9;--text-placeholder:#c0c4cc;--text-placeholder-dark:#fff6;--text-link:var(--color-primary);--text-link-hover:var(--color-primary-light);--text-link-active:var(--color-primary-dark);--text-success:var(--color-success);--text-warning:var(--color-warning);--text-danger:var(--color-danger);--text-info:var(--color-info);--radius-xs:2px;--radius-sm:3px;--radius-base:4px;--radius-md:6px;--radius-lg:8px;--radius-xl:12px;--radius-full:50%;--spacing-xs:2px;--spacing-sm:4px;--spacing-base:8px;--spacing-md:12px;--spacing-lg:16px;--spacing-xl:20px;--spacing-2xl:24px;--spacing-3xl:32px;--font-size-xs:10px;--font-size-sm:12px;--font-size-base:13px;--font-size-md:14px;--font-size-lg:16px;--font-size-xl:18px;--font-size-2xl:20px;--font-size-3xl:24px;--line-height-tight:1.2;--line-height-normal:1.4;--line-height-relaxed:1.6;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--transition-fast:.1s;--transition-base:.2s;--transition-slow:.3s;--ease-in:ease-in;--ease-out:ease-out;--ease-in-out:ease-in-out;--ease-custom:cubic-bezier(.4,0,.2,1);--transition-all:all var(--transition-base)var(--ease-custom);--transition-color:color var(--transition-base)var(--ease-custom);--transition-bg:background-color var(--transition-base)var(--ease-custom);--transition-border:border-color var(--transition-base)var(--ease-custom);--transition-shadow:box-shadow var(--transition-base)var(--ease-custom);--transition-transform:transform var(--transition-base)var(--ease-custom);--z-dropdown:1000;--z-sticky:1020;--z-fixed:1030;--z-modal-backdrop:1040;--z-modal:1050;--z-popover:1060;--z-tooltip:1070;--z-toast:1080;--scrollbar-track:transparent;--scrollbar-thumb:#9093994d;--scrollbar-thumb-hover:#90939980;--scrollbar-width:6px;--font-mono:ui-monospace,SFMono-Regular,"SF Mono",Monaco,Inconsolata,"Roboto Mono","Droid Sans Mono",Consolas,"Courier New",monospace}[data-theme=dark]{--bg-page:var(--bg-page-dark);--bg-container:var(--bg-container-dark);--text-primary:var(--text-primary-dark);--text-secondary:var(--text-secondary-dark);--text-tertiary:var(--text-tertiary-dark);--text-placeholder:var(--text-placeholder-dark);--border-color:var(--border-color-dark);--border-color-light:#ffffff14;--border-color-medium:#ffffff1f;--shadow-base:var(--shadow-dark);--shadow-lg:var(--shadow-dark-lg);--git-diff-context-bg:#24292e;--git-diff-context-color:#f8f8f2}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-page);color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;line-height:var(--line-height-normal);transition:var(--transition-all)}.el-button+.el-button{margin-left:0}.el-button{transition:var(--transition-all)}.el-card{border:1px solid var(--border-color);box-shadow:var(--shadow-base);transition:var(--transition-all)}.el-card:hover{box-shadow:var(--shadow-hover)}.el-input__wrapper{border:1px solid var(--border-color);transition:var(--transition-border)}.el-input__wrapper:hover{border-color:var(--border-hover)}.el-input__wrapper.is-focus{border-color:var(--border-focus);box-shadow:var(--shadow-focus)}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}:root{--color-primary: #409eff;--color-primary-light: #5a67d8;--color-primary-dark: #337ecc;--color-primary-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);--color-primary-gradient-hover: linear-gradient(135deg, #5a67d8 0%, #6b46c1 100%);--color-success: #67c23a;--color-success-light: #10b981;--color-warning: #e6a23c;--color-warning-light: #f59e0b;--color-danger: #f56c6c;--color-danger-light: #ef4444;--color-danger-dark: #dc2626;--color-info: #909399;--color-info-light: #8b5cf6;--color-white: #ffffff;--color-black: #000000;--color-gray-50: #f9fafb;--color-gray-100: #f3f4f6;--color-gray-200: #e5e7eb;--color-gray-300: #d1d5db;--color-gray-400: #9ca3af;--color-gray-500: #6b7280;--color-gray-600: #4b5563;--color-gray-700: #374151;--color-gray-800: #1f2937;--color-gray-900: #111827;--git-status-added: #10b981;--git-status-modified: #f59e0b;--git-status-deleted: #ef4444;--git-status-untracked: #8b5cf6;--git-status-locked: #dc2626;--git-diff-header-bg: #f1f8ff;--git-diff-header-color: #0366d6;--git-diff-header-border: #c8e1ff;--git-diff-added-bg: #e6ffed;--git-diff-added-color: #22863a;--git-diff-added-border: #22863a;--git-diff-removed-bg: #ffeef0;--git-diff-removed-color: #cb2431;--git-diff-removed-border: #cb2431;--git-diff-hunk-bg: #f1f8ff;--git-diff-hunk-color: #6f42c1;--git-diff-context-color: #24292f;--git-diff-context-bg: #ffffff;--btn-primary-bg: var(--color-primary);--btn-primary-hover-bg: var(--color-primary-light);--btn-primary-active-bg: var(--color-primary-dark);--btn-primary-color: var(--color-white);--btn-success-bg: var(--color-success);--btn-success-hover-bg: #85ce61;--btn-success-active-bg: #5daf34;--btn-success-color: var(--color-white);--btn-warning-bg: var(--color-warning);--btn-warning-hover-bg: #ebb563;--btn-warning-active-bg: #cf9236;--btn-warning-color: var(--color-white);--btn-danger-bg: var(--color-danger);--btn-danger-hover-bg: #f78989;--btn-danger-active-bg: #dd6161;--btn-danger-color: var(--color-white);--btn-info-bg: var(--color-info);--btn-info-hover-bg: #a6a9ad;--btn-info-active-bg: #82848a;--btn-info-color: var(--color-white);--btn-text-color: var(--color-primary);--btn-text-hover-color: var(--color-primary-light);--btn-text-active-color: var(--color-primary-dark);--bg-page: #f5f5f5;--bg-page-dark: #2d2d2d;--bg-container: var(--color-white);--bg-container-hover: #f8fafc;--bg-container-dark: #24292e;--bg-overlay: rgba(40, 44, 52, .7);--bg-overlay-light: rgba(0, 0, 0, .2);--bg-code: #f6f8fa;--bg-code-dark: #2d2d2d;--bg-code-line: #fafbfc;--border-color: rgba(0, 0, 0, .06);--border-color-light: rgba(0, 0, 0, .03);--border-color-medium: #e1e4e8;--border-color-dark: rgba(255, 255, 255, .15);--border-hover: rgba(102, 126, 234, .15);--border-focus: var(--color-primary);--border-active: var(--color-primary-dark);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .04);--shadow-base: 0 1px 4px rgba(0, 0, 0, .04);--shadow-md: 0 2px 8px rgba(0, 0, 0, .08);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .08);--shadow-xl: 0 8px 24px rgba(0, 0, 0, .12);--shadow-hover: 0 4px 12px rgba(0, 0, 0, .08);--shadow-active: 0 2px 6px rgba(0, 0, 0, .12);--shadow-focus: 0 0 0 2px rgba(64, 158, 255, .2);--shadow-dark: 0 2px 10px rgba(0, 0, 0, .2);--shadow-dark-lg: 0 4px 16px rgba(0, 0, 0, .3);--text-primary: #1f2937;--text-primary-dark: #f8f8f2;--text-secondary: #606266;--text-secondary-dark: #e0e0e0;--text-tertiary: #9ca3af;--text-tertiary-dark: rgba(255, 255, 255, .6);--text-placeholder: #c0c4cc;--text-placeholder-dark: rgba(255, 255, 255, .4);--text-link: var(--color-primary);--text-link-hover: var(--color-primary-light);--text-link-active: var(--color-primary-dark);--text-success: var(--color-success);--text-warning: var(--color-warning);--text-danger: var(--color-danger);--text-info: var(--color-info);--radius-xs: 2px;--radius-sm: 3px;--radius-base: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-full: 50%;--spacing-xs: 2px;--spacing-sm: 4px;--spacing-base: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 20px;--spacing-2xl: 24px;--spacing-3xl: 32px;--font-size-xs: 10px;--font-size-sm: 12px;--font-size-base: 13px;--font-size-md: 14px;--font-size-lg: 16px;--font-size-xl: 18px;--font-size-2xl: 20px;--font-size-3xl: 24px;--line-height-tight: 1.2;--line-height-normal: 1.4;--line-height-relaxed: 1.6;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--transition-fast: .1s;--transition-base: .2s;--transition-slow: .3s;--ease-in: ease-in;--ease-out: ease-out;--ease-in-out: ease-in-out;--ease-custom: cubic-bezier(.4, 0, .2, 1);--transition-all: all var(--transition-base) var(--ease-custom);--transition-color: color var(--transition-base) var(--ease-custom);--transition-bg: background-color var(--transition-base) var(--ease-custom);--transition-border: border-color var(--transition-base) var(--ease-custom);--transition-shadow: box-shadow var(--transition-base) var(--ease-custom);--transition-transform: transform var(--transition-base) var(--ease-custom);--z-dropdown: 1000;--z-sticky: 1020;--z-fixed: 1030;--z-modal-backdrop: 1040;--z-modal: 1050;--z-popover: 1060;--z-tooltip: 1070;--z-toast: 1080;--scrollbar-track: transparent;--scrollbar-thumb: rgba(144, 147, 153, .3);--scrollbar-thumb-hover: rgba(144, 147, 153, .5);--scrollbar-width: 6px;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Monaco, Inconsolata, "Roboto Mono", "Droid Sans Mono", Consolas, "Courier New", monospace}[data-theme=dark]{--bg-page: var(--bg-page-dark);--bg-container: var(--bg-container-dark);--text-primary: var(--text-primary-dark);--text-secondary: var(--text-secondary-dark);--text-tertiary: var(--text-tertiary-dark);--text-placeholder: var(--text-placeholder-dark);--border-color: var(--border-color-dark);--border-color-light: rgba(255, 255, 255, .08);--border-color-medium: rgba(255, 255, 255, .12);--shadow-base: var(--shadow-dark);--shadow-lg: var(--shadow-dark-lg);--git-diff-context-bg: #24292e;--git-diff-context-color: #f8f8f2}.bg-gradient-primary{background:var(--color-primary-gradient)}.bg-gradient-primary-hover{background:var(--color-primary-gradient-hover)}.text-git-added{color:var(--git-status-added)}.text-git-modified{color:var(--git-status-modified)}.text-git-deleted{color:var(--git-status-deleted)}.text-git-untracked{color:var(--git-status-untracked)}.text-git-locked{color:var(--git-status-locked)}.bg-git-added{background-color:var(--git-status-added)}.bg-git-modified{background-color:var(--git-status-modified)}.bg-git-deleted{background-color:var(--git-status-deleted)}.bg-git-untracked{background-color:var(--git-status-untracked)}.bg-git-locked{background-color:var(--git-status-locked)}.shadow-sm{box-shadow:var(--shadow-sm)}.shadow-base{box-shadow:var(--shadow-base)}.shadow-md{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.shadow-xl{box-shadow:var(--shadow-xl)}.transition-all{transition:var(--transition-all)}.transition-color{transition:var(--transition-color)}.transition-bg{transition:var(--transition-bg)}.transition-border{transition:var(--transition-border)}.transition-shadow{transition:var(--transition-shadow)}.transition-transform{transition:var(--transition-transform)}.diff-header{background-color:var(--git-diff-header-bg);padding:var(--spacing-base) var(--spacing-md);margin:var(--spacing-base) 0;border-radius:var(--radius-md);color:var(--git-diff-header-color);border:1px solid var(--git-diff-header-border);border-left:4px solid var(--git-diff-header-color);font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:var(--line-height-normal);font-weight:var(--font-weight-semibold);box-shadow:0 1px 3px #0366d61a;transition:var(--transition-all)}.diff-old-file,.diff-new-file{padding:5px var(--spacing-base);font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:var(--line-height-normal);margin:1px 0;border-radius:var(--radius-sm);display:block;font-weight:var(--font-weight-semibold);transition:var(--transition-all)}.diff-old-file{color:var(--git-diff-removed-color);background-color:var(--git-diff-removed-bg);border-left:4px solid var(--git-diff-removed-border)}.diff-new-file{color:var(--git-diff-added-color);background-color:var(--git-diff-added-bg);border-left:4px solid var(--git-diff-added-border)}.diff-hunk-header{color:var(--git-diff-hunk-color);background-color:var(--git-diff-hunk-bg);padding:var(--spacing-sm) var(--spacing-base);margin:var(--spacing-base) 0;border-radius:var(--radius-base);font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:var(--line-height-normal);transition:var(--transition-all)}.diff-added{background-color:var(--git-diff-added-bg);color:var(--git-diff-added-color);padding:2px var(--spacing-base);border-left:4px solid var(--git-diff-added-border);font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:var(--line-height-normal);display:block;margin:1px 0;transition:var(--transition-all)}.diff-removed{background-color:var(--git-diff-removed-bg);color:var(--git-diff-removed-color);padding:2px var(--spacing-base);border-left:4px solid var(--git-diff-removed-border);font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:var(--line-height-normal);display:block;margin:1px 0;transition:var(--transition-all)}.diff-context{color:var(--git-diff-context-color);padding:2px var(--spacing-base);font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:var(--line-height-normal);display:block;margin:1px 0;background-color:var(--git-diff-context-bg);transition:var(--transition-all)}.diff-formatted,.diff-content{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}.diff-formatted::-webkit-scrollbar,.diff-content::-webkit-scrollbar{width:var(--scrollbar-width);height:var(--scrollbar-width)}.diff-formatted::-webkit-scrollbar-thumb,.diff-content::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--radius-base);transition:var(--transition-bg)}.diff-formatted::-webkit-scrollbar-thumb:hover,.diff-content::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover)}.diff-formatted::-webkit-scrollbar-track,.diff-content::-webkit-scrollbar-track{background:var(--scrollbar-track)}.el-dialog.use-flex-body{display:flex;flex-direction:column;height:100%}.el-dialog.use-flex-body .el-dialog__body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding:8px 16px;box-sizing:border-box}.dialog-content-scroll{flex:1;min-height:0;overflow:auto}
|