antigravity-claude-proxy 3.0.1 → 3.1.0
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 +1 -1
- package/public/css/src/input.css +381 -211
- package/public/css/style.css +1 -1
- package/public/favicon.svg +4 -8
- package/public/index.html +78 -72
- package/public/js/components/dashboard/charts.js +17 -43
- package/public/js/components/dashboard.js +16 -21
- package/public/js/components/models.js +10 -9
- package/public/js/translations/en.js +37 -37
- package/public/js/translations/id.js +36 -36
- package/public/js/translations/pt.js +37 -37
- package/public/js/translations/tr.js +37 -37
- package/public/views/accounts.html +34 -38
- package/public/views/dashboard.html +86 -99
- package/public/views/logs.html +4 -4
- package/public/views/models.html +32 -36
- package/public/views/settings.html +50 -50
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
<div x-data="accountManager" class="view-container">
|
|
2
2
|
<!-- Compact Header -->
|
|
3
|
-
<div class="flex items-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
<h1 class="text-2xl font-bold text-white tracking-tight" x-text="$store.global.t('accountManagement')">
|
|
3
|
+
<div class="flex items-end justify-between gap-4">
|
|
4
|
+
<div class="flex flex-col gap-1">
|
|
5
|
+
<h1 class="font-display text-[1.5rem] leading-tight font-bold text-white tracking-[-0.01em]" x-text="$store.global.t('accountManagement')">
|
|
7
6
|
Account Management
|
|
8
7
|
</h1>
|
|
9
|
-
<
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
Manage Google Account tokens and authorization states
|
|
13
|
-
</span>
|
|
14
|
-
</div>
|
|
8
|
+
<p class="text-sm text-gray-500" x-text="$store.global.t('manageTokens')">
|
|
9
|
+
Manage Google Account tokens and authorization states
|
|
10
|
+
</p>
|
|
15
11
|
</div>
|
|
16
12
|
|
|
17
13
|
<!-- Action Buttons -->
|
|
@@ -68,7 +64,7 @@
|
|
|
68
64
|
:class="$store.data.accounts.length >= $store.data.maxAccounts ? 'text-yellow-400' : 'text-gray-400'"
|
|
69
65
|
x-text="$store.data.accounts.length + '/' + $store.data.maxAccounts"></span>
|
|
70
66
|
</div>
|
|
71
|
-
<button class="btn bg-neon-purple hover:bg-
|
|
67
|
+
<button class="btn bg-neon-purple hover:bg-[#7fdbe4] border-none text-space-950 btn-xs gap-2 h-8"
|
|
72
68
|
:class="{ 'opacity-50 cursor-not-allowed': $store.data.accounts.length >= $store.data.maxAccounts }"
|
|
73
69
|
:disabled="$store.data.accounts.length >= $store.data.maxAccounts"
|
|
74
70
|
@click="$store.data.accounts.length < $store.data.maxAccounts && document.getElementById('add_account_modal').showModal()">
|
|
@@ -85,13 +81,13 @@
|
|
|
85
81
|
<table class="w-full">
|
|
86
82
|
<thead x-show="$store.data.accounts.length > 0">
|
|
87
83
|
<tr class="bg-space-900/50 border-b border-space-border/50">
|
|
88
|
-
<th class="pl-6 py-3 text-left text-[
|
|
89
|
-
<th class="py-3 text-left text-[
|
|
90
|
-
<th class="py-3 text-left text-[
|
|
91
|
-
<th class="py-3 text-left text-[
|
|
92
|
-
<th class="py-3 text-left text-[
|
|
93
|
-
<th class="py-3 text-left text-[
|
|
94
|
-
<th class="py-3 pr-6 text-right text-[
|
|
84
|
+
<th class="pl-6 py-3 text-left text-[11px] font-medium text-gray-500 w-16" x-text="$store.global.t('enabled')">Enabled</th>
|
|
85
|
+
<th class="py-3 text-left text-[11px] font-medium text-gray-500 flex-1 min-w-[200px]" x-text="$store.global.t('accountEmail')">Account (Email)</th>
|
|
86
|
+
<th class="py-3 text-left text-[11px] font-medium text-gray-500 w-20" x-text="$store.global.t('source')">Source</th>
|
|
87
|
+
<th class="py-3 text-left text-[11px] font-medium text-gray-500 w-16" x-text="$store.global.t('tier')">Tier</th>
|
|
88
|
+
<th class="py-3 text-left text-[11px] font-medium text-gray-500 w-32" x-text="$store.global.t('quota')">Quota</th>
|
|
89
|
+
<th class="py-3 text-left text-[11px] font-medium text-gray-500 w-24" x-text="$store.global.t('health')">Health</th>
|
|
90
|
+
<th class="py-3 pr-6 text-right text-[11px] font-medium text-gray-500 w-32" x-text="$store.global.t('operations')">Operations</th>
|
|
95
91
|
</tr>
|
|
96
92
|
</thead>
|
|
97
93
|
<tbody>
|
|
@@ -111,7 +107,7 @@
|
|
|
111
107
|
Get started by adding a Google account via OAuth, or use the CLI command to import credentials.
|
|
112
108
|
</p>
|
|
113
109
|
<div class="flex items-center gap-4 mt-2">
|
|
114
|
-
<button class="btn bg-neon-purple hover:bg-
|
|
110
|
+
<button class="btn bg-neon-purple hover:bg-[#7fdbe4] border-none text-space-950 btn-sm gap-2"
|
|
115
111
|
onclick="document.getElementById('add_account_modal').showModal()">
|
|
116
112
|
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
117
113
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4" />
|
|
@@ -181,7 +177,7 @@
|
|
|
181
177
|
<span class="text-xs text-gray-600">-</span>
|
|
182
178
|
</template>
|
|
183
179
|
<div x-show="acc.quotaThreshold !== undefined"
|
|
184
|
-
class="text-[
|
|
180
|
+
class="text-[11px] font-mono text-neon-yellow/60 mt-0.5"
|
|
185
181
|
x-text="'min: ' + getEffectiveThreshold(acc)"></div>
|
|
186
182
|
</div>
|
|
187
183
|
</td>
|
|
@@ -199,7 +195,7 @@
|
|
|
199
195
|
x-text="acc.status.toUpperCase()">
|
|
200
196
|
</span>
|
|
201
197
|
<p x-show="acc.status === 'banned'"
|
|
202
|
-
class="text-[
|
|
198
|
+
class="text-[10px] text-red-600/70 mt-0.5 max-w-[200px] leading-tight"
|
|
203
199
|
x-text="acc.error || 'Gemini disabled for ToS violation'">
|
|
204
200
|
</p>
|
|
205
201
|
</div>
|
|
@@ -208,7 +204,7 @@
|
|
|
208
204
|
<div class="flex justify-end gap-2">
|
|
209
205
|
<!-- Fix Button -->
|
|
210
206
|
<button x-show="acc.status === 'invalid'"
|
|
211
|
-
class="px-3 py-1 text-[
|
|
207
|
+
class="px-3 py-1 text-[11px] font-medium rounded bg-yellow-500/10 text-yellow-400 hover:bg-yellow-500/20 border border-yellow-500/30 hover:border-yellow-500/50 transition-all"
|
|
212
208
|
@click="fixAccount(acc.email)"
|
|
213
209
|
x-text="$store.global.t('fix')">
|
|
214
210
|
FIX
|
|
@@ -216,7 +212,7 @@
|
|
|
216
212
|
<!-- Appeal Button (banned accounts only) -->
|
|
217
213
|
<a x-show="acc.status === 'banned'"
|
|
218
214
|
href="mailto:gemini-code-assist-user-feedback@google.com"
|
|
219
|
-
class="px-3 py-1 text-[
|
|
215
|
+
class="px-3 py-1 text-[11px] font-medium rounded bg-red-900/20 text-red-400 hover:bg-red-900/30 border border-red-800/30 hover:border-red-800/50 transition-all"
|
|
220
216
|
title="Email Google to appeal this ban">
|
|
221
217
|
APPEAL
|
|
222
218
|
</a>
|
|
@@ -293,7 +289,7 @@
|
|
|
293
289
|
<button class="w-full flex items-center justify-between px-6 py-3 bg-space-900/50 border-b border-space-border/50 hover:bg-space-900/70 transition-colors"
|
|
294
290
|
@click="$store.settings.toggle('healthInspectorOpen'); if ($store.settings.healthInspectorOpen && !healthData.strategy) fetchHealthData()">
|
|
295
291
|
<div class="flex items-center gap-3">
|
|
296
|
-
<span class="text-[
|
|
292
|
+
<span class="text-[10px] font-medium px-1.5 py-0.5 rounded bg-neon-purple/20 text-neon-purple border border-neon-purple/30">DEV</span>
|
|
297
293
|
<span class="text-sm font-semibold text-gray-300" x-text="$store.global.t('strategyHealthInspector')">Strategy Health Inspector</span>
|
|
298
294
|
</div>
|
|
299
295
|
<svg class="w-4 h-4 text-gray-500 transition-transform" :class="{ 'rotate-180': $store.settings.healthInspectorOpen }"
|
|
@@ -331,14 +327,14 @@
|
|
|
331
327
|
<table class="w-full">
|
|
332
328
|
<thead>
|
|
333
329
|
<tr class="border-b border-space-border/50">
|
|
334
|
-
<th class="py-2 text-left text-[
|
|
335
|
-
<th class="py-2 text-left text-[
|
|
330
|
+
<th class="py-2 text-left text-[11px] font-medium text-gray-500">Email</th>
|
|
331
|
+
<th class="py-2 text-left text-[11px] font-medium text-gray-500 w-40"
|
|
336
332
|
x-text="$store.global.t('healthScore')">Health Score</th>
|
|
337
|
-
<th class="py-2 text-left text-[
|
|
333
|
+
<th class="py-2 text-left text-[11px] font-medium text-gray-500 w-28"
|
|
338
334
|
x-text="$store.global.t('tokenBucket')">Tokens</th>
|
|
339
|
-
<th class="py-2 text-left text-[
|
|
335
|
+
<th class="py-2 text-left text-[11px] font-medium text-gray-500 w-20"
|
|
340
336
|
x-text="$store.global.t('consecutiveFailures')">Failures</th>
|
|
341
|
-
<th class="py-2 text-left text-[
|
|
337
|
+
<th class="py-2 text-left text-[11px] font-medium text-gray-500 w-20">Status</th>
|
|
342
338
|
</tr>
|
|
343
339
|
</thead>
|
|
344
340
|
<tbody>
|
|
@@ -375,7 +371,7 @@
|
|
|
375
371
|
x-text="acc.consecutiveFailures"></span>
|
|
376
372
|
</td>
|
|
377
373
|
<td class="py-2">
|
|
378
|
-
<span class="text-[
|
|
374
|
+
<span class="text-[11px] font-medium capitalize px-1.5 py-0.5 rounded"
|
|
379
375
|
:class="acc.isUsable ? 'bg-neon-green/10 text-neon-green border border-neon-green/20' : 'bg-red-500/10 text-red-400 border border-red-500/20'"
|
|
380
376
|
x-text="acc.isUsable ? 'OK' : 'DEGRADED'"></span>
|
|
381
377
|
</td>
|
|
@@ -387,7 +383,7 @@
|
|
|
387
383
|
|
|
388
384
|
<!-- Scoring reference -->
|
|
389
385
|
<div x-show="healthData.trackers !== null && healthData.trackers?.accounts?.length > 0" class="mt-3 px-3 py-2 rounded bg-space-900/40 border border-space-border/30">
|
|
390
|
-
<p class="text-[
|
|
386
|
+
<p class="text-[11px] text-gray-500 font-mono leading-relaxed">
|
|
391
387
|
Score is adjusted for successes, rate limits, and failures with passive recovery.
|
|
392
388
|
<br>
|
|
393
389
|
Selection uses weighted health, token usage, quota, and recency (LRU).
|
|
@@ -444,7 +440,7 @@
|
|
|
444
440
|
</dialog>
|
|
445
441
|
|
|
446
442
|
<!-- Quota Distribution Modal -->
|
|
447
|
-
<dialog id="quota_modal" class="modal
|
|
443
|
+
<dialog id="quota_modal" class="modal">
|
|
448
444
|
<div class="modal-box max-w-2xl w-full bg-space-900 border border-space-border text-gray-300 shadow-2xl p-6">
|
|
449
445
|
<h3 class="font-bold text-xl text-white mb-2 flex items-center gap-2">
|
|
450
446
|
<svg class="w-6 h-6 text-neon-cyan" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
@@ -474,9 +470,9 @@
|
|
|
474
470
|
</div>
|
|
475
471
|
|
|
476
472
|
<div class="flex justify-between items-center">
|
|
477
|
-
<span class="text-[
|
|
473
|
+
<span class="text-[11px] text-gray-500 capitalize font-medium" x-text="$store.data.getModelFamily(modelId)"></span>
|
|
478
474
|
<template x-if="limit.resetTime">
|
|
479
|
-
<span class="text-[
|
|
475
|
+
<span class="text-[11px] text-yellow-500/80 font-mono italic"
|
|
480
476
|
x-text="$store.global.t('resetsIn', { time: window.utils.formatTimeUntil(limit.resetTime) })"></span>
|
|
481
477
|
</template>
|
|
482
478
|
</div>
|
|
@@ -502,7 +498,7 @@
|
|
|
502
498
|
</dialog>
|
|
503
499
|
|
|
504
500
|
<!-- Threshold Settings Modal -->
|
|
505
|
-
<dialog id="threshold_modal" class="modal
|
|
501
|
+
<dialog id="threshold_modal" class="modal">
|
|
506
502
|
<div class="modal-box max-w-md w-full bg-space-900 border border-space-border text-gray-300 shadow-2xl p-6">
|
|
507
503
|
<h3 class="font-bold text-xl text-white mb-2 flex items-center gap-2">
|
|
508
504
|
<svg class="w-6 h-6 text-neon-yellow" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
@@ -546,7 +542,7 @@
|
|
|
546
542
|
<span class="text-gray-500 text-xs">%</span>
|
|
547
543
|
</div>
|
|
548
544
|
</div>
|
|
549
|
-
<p class="text-[
|
|
545
|
+
<p class="text-[11px] text-gray-600 mt-1">
|
|
550
546
|
Leave empty to use the global threshold from Settings.
|
|
551
547
|
</p>
|
|
552
548
|
</div>
|
|
@@ -585,7 +581,7 @@
|
|
|
585
581
|
:value="threshold"
|
|
586
582
|
@input="updateModelThreshold(modelId, $event.target.value)"
|
|
587
583
|
aria-label="Model threshold">
|
|
588
|
-
<span class="text-gray-500 text-[
|
|
584
|
+
<span class="text-gray-500 text-[11px]">%</span>
|
|
589
585
|
</div>
|
|
590
586
|
<button class="btn btn-xs btn-ghost text-gray-500 hover:text-red-400 px-1"
|
|
591
587
|
@click="removeModelThreshold(modelId)">
|
|
@@ -597,7 +593,7 @@
|
|
|
597
593
|
</template>
|
|
598
594
|
|
|
599
595
|
<template x-if="Object.keys(thresholdDialog.modelQuotaThresholds).length === 0">
|
|
600
|
-
<p class="text-[
|
|
596
|
+
<p class="text-[11px] text-gray-600 text-center py-2">
|
|
601
597
|
No per-model overrides configured.
|
|
602
598
|
</p>
|
|
603
599
|
</template>
|