Compare commits

...

7 Commits

8 changed files with 594 additions and 868 deletions
+1 -1
View File
@@ -22,7 +22,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
node-version: '24'
cache: 'npm'
- name: Install dependencies
+534 -850
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -31,7 +31,7 @@
"@types/react-dom": "^19.2.3",
"@typescript-eslint/eslint-plugin": "^8.48.1",
"@typescript-eslint/parser": "^8.48.1",
"@vitejs/plugin-react": "^5.1.1",
"@vitejs/plugin-react": "^6.0.1",
"eslint": "^9.39.1",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-refresh": "^0.4.24",
@@ -40,7 +40,7 @@
"sass": "^1.94.2",
"typescript": "^5.9.3",
"typescript-eslint": "^8.48.1",
"vite": "^7.2.6",
"vite-plugin-singlefile": "^2.3.0"
"vite": "^8.0.10",
"vite-plugin-singlefile": "^2.3.3"
}
}
+3 -4
View File
@@ -410,14 +410,13 @@ const fetchCodexQuota = async (
const planTypeFromFile = resolveCodexPlanType(file);
const accountId = resolveCodexChatgptAccountId(file);
if (!accountId) {
throw new Error(t('codex_quota.missing_account_id'));
}
const requestHeader: Record<string, string> = {
...CODEX_REQUEST_HEADERS,
'Chatgpt-Account-Id': accountId,
};
if (accountId) {
requestHeader['Chatgpt-Account-Id'] = accountId;
}
const result = await apiCallApi.request({
authIndex,
+35 -5
View File
@@ -57,11 +57,7 @@ $openai-toolbar-control-height: 36px;
.openaiProviderList {
display: grid;
gap: $spacing-md;
grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
@media (min-width: 1400px) {
grid-template-columns: repeat(3, 1fr);
}
grid-template-columns: repeat(auto-fill, minmax(min(100%, 350px), 1fr));
@include mobile {
grid-template-columns: 1fr;
@@ -78,6 +74,7 @@ $openai-toolbar-control-height: 36px;
align-items: stretch;
gap: $spacing-sm;
min-height: 0;
min-width: 0;
}
.openaiProviderMeta {
@@ -456,6 +453,7 @@ $openai-toolbar-control-height: 36px;
align-items: baseline;
gap: 6px;
margin-bottom: 4px;
min-width: 0;
font-size: 13px;
line-height: 1.4;
}
@@ -470,6 +468,9 @@ $openai-toolbar-control-height: 36px;
.fieldValue {
color: var(--text-primary);
font-weight: 600;
min-width: 0;
max-width: 100%;
overflow-wrap: anywhere;
word-break: break-all;
font-family: 'Monaco', 'Menlo', 'Consolas', 'Ubuntu Mono', monospace;
}
@@ -480,22 +481,30 @@ $openai-toolbar-control-height: 36px;
flex-wrap: wrap;
gap: 6px;
margin-top: 6px;
min-width: 0;
max-width: 100%;
}
.headerBadge {
display: inline-flex;
align-items: center;
gap: 4px;
flex-wrap: wrap;
min-width: 0;
max-width: 100%;
background: var(--accent-tertiary, #f3f4f6);
border: 1px solid var(--border-primary);
border-radius: 12px;
padding: 4px 10px;
font-size: 12px;
color: var(--text-secondary);
overflow-wrap: anywhere;
word-break: break-word;
strong {
font-weight: 600;
color: var(--text-primary);
flex-shrink: 0;
}
}
@@ -506,6 +515,8 @@ $openai-toolbar-control-height: 36px;
gap: 6px;
margin-top: 8px;
align-items: center;
min-width: 0;
max-width: 100%;
}
.modelCountLabel {
@@ -525,6 +536,8 @@ $openai-toolbar-control-height: 36px;
align-items: center;
gap: 4px;
flex-wrap: wrap;
min-width: 0;
max-width: 100%;
background: var(--bg-quinary, #f8f9fa);
color: var(--text-secondary);
border: 1px solid var(--border-secondary);
@@ -542,12 +555,16 @@ $openai-toolbar-control-height: 36px;
.modelName {
font-weight: 600;
color: var(--text-primary);
min-width: 0;
max-width: 100%;
overflow-wrap: anywhere;
}
.modelAlias {
color: var(--text-tertiary);
font-style: italic;
min-width: 0;
max-width: 100%;
overflow-wrap: anywhere;
&::before {
@@ -581,6 +598,8 @@ $openai-toolbar-control-height: 36px;
// API密钥条目列表(二级卡片)
.apiKeyEntriesSection {
margin-top: 10px;
min-width: 0;
max-width: 100%;
}
.apiKeyEntriesLabel {
@@ -594,6 +613,8 @@ $openai-toolbar-control-height: 36px;
display: flex;
flex-direction: column;
gap: 6px;
min-width: 0;
max-width: 100%;
}
.apiKeyEntryCard {
@@ -601,6 +622,8 @@ $openai-toolbar-control-height: 36px;
flex-wrap: wrap;
align-items: center;
gap: 8px;
min-width: 0;
max-width: 100%;
padding: 8px 12px;
background: var(--bg-secondary, #f9fafb);
border: 1px solid var(--border-secondary);
@@ -626,12 +649,19 @@ $openai-toolbar-control-height: 36px;
font-family: 'Monaco', 'Menlo', 'Consolas', 'Ubuntu Mono', monospace;
font-weight: 600;
color: var(--text-primary);
min-width: 0;
max-width: 100%;
overflow-wrap: anywhere;
word-break: break-all;
}
.apiKeyEntryProxy {
color: var(--text-tertiary);
font-size: 11px;
min-width: 0;
max-width: 100%;
overflow-wrap: anywhere;
word-break: break-word;
&::before {
content: '| Proxy: ';
+15 -1
View File
@@ -690,7 +690,21 @@
}
.fileCardDisabled {
opacity: 0.72;
background-color: color-mix(in srgb, var(--bg-primary) 78%, var(--bg-secondary));
border-color: color-mix(in srgb, var(--border-color) 62%, transparent);
.providerAvatar,
.cardHeaderContent,
.cardMeta,
.healthStatusMessage,
.cardInsights {
opacity: 0.72;
}
.cardSelection,
.cardActions {
opacity: 1;
}
&:hover {
transform: none;
+1 -1
View File
@@ -73,7 +73,7 @@
}
}
:global([data-theme='dark']) {
[data-theme='dark'] {
.btn {
color: #fff;
}
+2 -3
View File
@@ -68,10 +68,9 @@ export default defineConfig({
assetsInlineLimit: 100000000,
chunkSizeWarningLimit: 100000000,
cssCodeSplit: false,
rollupOptions: {
rolldownOptions: {
output: {
inlineDynamicImports: true,
manualChunks: undefined
codeSplitting: false
}
}
}