feat: Live-Countdowns für Reset-Zeiten bei AG und MiniMax (5h + Weekly)
Build and Push Docker Image / build-and-push (push) Canceled after 0s

This commit is contained in:
Jannik committed 2026-09-05 20:05:13 +02:00
1 parent ef2fc51ee5
commit a90e6b23db
5 files changed
+59 -63

No files matched your search

+4 -4
View File
@@ -30,28 +30,28 @@ function updateAntigravityQuota(data) {
used: gemini5hUsed,
total: 100,
percentage: gemini5hUsed,
meta: { resetStr: data.gemini_5h_reset || 'Unknown' }
meta: { resetTime: data.gemini_5h_reset || null }
},
{
provider: 'AG Gemini (Weekly)',
used: geminiWeeklyUsed,
total: 100,
percentage: geminiWeeklyUsed,
meta: { resetStr: data.gemini_weekly_reset || 'Unknown' }
meta: { resetTime: data.gemini_weekly_reset || null }
},
{
provider: 'AG Claude (5h)',
used: claude5hUsed,
total: 100,
percentage: claude5hUsed,
meta: { resetStr: data.claude_5h_reset || 'Unknown' }
meta: { resetTime: data.claude_5h_reset || null }
},
{
provider: 'AG Claude (Weekly)',
used: claudeWeeklyUsed,
total: 100,
percentage: claudeWeeklyUsed,
meta: { resetStr: data.claude_weekly_reset || 'Unknown' }
meta: { resetTime: data.claude_weekly_reset || null }
}
];
// Persist to DB so values survive server restarts
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/services/providers.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/services/providers.ts"],"names":[],"mappings":"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"}
+40 -39
View File
@@ -78,41 +78,45 @@ function updateRow(providerId, quota) {
}
// Detail text
const detailsId = `details-${quota.provider.toLowerCase().replace(/[^a-z0-9]/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '')}`;
const detailsEl = document.getElementById(detailsId);
if (quota.provider.startsWith('MiniMax') && quota.meta) {
statusText.innerText = `${Math.round(quota.used)}% / 100%`;
const detailsId = `details-${quota.provider.toLowerCase().replace(/[^a-z0-9]/g, '-')}`;
const detailsEl = document.getElementById(detailsId);
if (detailsEl) {
const parseDate = (val) => {
if (!val) return '--';
const ts = (typeof val === 'number' && val < 9999999999) ? val * 1000 : val;
return new Date(ts).toLocaleString();
};
const resetStr = parseDate(quota.meta.reset);
const resetTs = quota.meta.reset;
const targetMs = (typeof resetTs === 'number' && resetTs < 9999999999) ? resetTs * 1000 : resetTs;
const countdownId = `countdown-${detailsId}`;
if (quota.provider.includes('5h')) {
detailsEl.innerHTML = `
<div><span>Reset in:</span> <strong id="minimax-countdown" style="color: var(--success)">--:--:--</strong></div>
`;
const targetTs = (typeof quota.meta.reset === 'number' && quota.meta.reset < 9999999999) ? quota.meta.reset * 1000 : quota.meta.reset;
if (targetTs) startMinimaxCountdown(targetTs);
detailsEl.innerHTML = `<div><span>Reset in:</span> <strong id="${countdownId}" style="color: var(--success)">--:--:--</strong></div>`;
if (targetMs) startCountdown(countdownId, targetMs);
} else {
detailsEl.innerHTML = `
<div><span>Reset:</span> <strong style="color: var(--success)">${resetStr}</strong></div>
`;
// Weekly: show countdown if in the future, else formatted date
if (targetMs && targetMs > Date.now()) {
detailsEl.innerHTML = `<div><span>Reset in:</span> <strong id="${countdownId}" style="color: var(--success)">--:--:--</strong></div>`;
startCountdown(countdownId, targetMs);
} else {
const resetStr = targetMs ? new Date(targetMs).toLocaleString() : '--';
detailsEl.innerHTML = `<div><span>Reset:</span> <strong style="color: var(--success)">${resetStr}</strong></div>`;
}
}
}
} else if (quota.provider.startsWith('AG ') && quota.meta) {
statusText.innerText = `${Math.round(quota.used)}% / 100%`;
const detailsId = `details-${quota.provider.toLowerCase().replace(/[^a-z0-9]/g, '-')}`;
const detailsEl = document.getElementById(detailsId);
if (detailsEl) {
const resetStr = quota.meta.resetStr || '--';
detailsEl.innerHTML = `
<div><span>Reset:</span> <strong style="color: var(--success)">${resetStr}</strong></div>
`;
const resetTs = quota.meta.resetTime;
const targetMs = resetTs ? new Date(resetTs).getTime() : null;
const countdownId = `countdown-${detailsId}`;
if (targetMs && targetMs > Date.now()) {
detailsEl.innerHTML = `<div><span>Reset in:</span> <strong id="${countdownId}" style="color: var(--success)">--:--:--</strong></div>`;
startCountdown(countdownId, targetMs);
} else if (targetMs) {
detailsEl.innerHTML = `<div><span>Reset:</span> <strong style="color: var(--success)">${new Date(targetMs).toLocaleString()}</strong></div>`;
} else {
detailsEl.innerHTML = `<div><span>Reset:</span> <strong style="color: var(--text-muted)">--</strong></div>`;
}
}
} else if (quota.provider.toLowerCase() === 'poe' && quota.meta) {
statusText.innerText = `${(quota.used).toLocaleString()} / ${(quota.total).toLocaleString()}`;
@@ -175,33 +179,30 @@ function startPoeCountdown() {
poeCountdownInterval = setInterval(updateCountdown, 1000);
}
let minimaxCountdownInterval = null;
function startMinimaxCountdown(targetTs) {
if (minimaxCountdownInterval) clearInterval(minimaxCountdownInterval);
const targetDate = new Date(targetTs);
let countdownIntervals = {};
function startCountdown(elementId, targetMs) {
if (countdownIntervals[elementId]) clearInterval(countdownIntervals[elementId]);
const updateCountdown = () => {
const now = new Date();
let diffMs = targetDate.getTime() - now.getTime();
if (diffMs < 0) {
// Already passed, show 00:00:00 or let the UI handle refresh
diffMs = 0;
}
let diffMs = targetMs - Date.now();
if (diffMs < 0) diffMs = 0;
const h = Math.floor(diffMs / (1000 * 60 * 60));
const m = Math.floor((diffMs % (1000 * 60 * 60)) / (1000 * 60));
const s = Math.floor((diffMs % (1000 * 60)) / 1000);
const el = document.getElementById('minimax-countdown');
const el = document.getElementById(elementId);
if (el) {
el.innerText = `${h.toString().padStart(2, '0')}:${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;
} else {
clearInterval(countdownIntervals[elementId]);
delete countdownIntervals[elementId];
}
};
updateCountdown();
minimaxCountdownInterval = setInterval(updateCountdown, 1000);
countdownIntervals[elementId] = setInterval(updateCountdown, 1000);
}
async function fetchHistory() {
+4 -4
View File
@@ -23,28 +23,28 @@ export function updateAntigravityQuota(data: any) {
used: gemini5hUsed,
total: 100,
percentage: gemini5hUsed,
meta: { resetStr: data.gemini_5h_reset || 'Unknown' }
meta: { resetTime: data.gemini_5h_reset || null }
},
{
provider: 'AG Gemini (Weekly)',
used: geminiWeeklyUsed,
total: 100,
percentage: geminiWeeklyUsed,
meta: { resetStr: data.gemini_weekly_reset || 'Unknown' }
meta: { resetTime: data.gemini_weekly_reset || null }
},
{
provider: 'AG Claude (5h)',
used: claude5hUsed,
total: 100,
percentage: claude5hUsed,
meta: { resetStr: data.claude_5h_reset || 'Unknown' }
meta: { resetTime: data.claude_5h_reset || null }
},
{
provider: 'AG Claude (Weekly)',
used: claudeWeeklyUsed,
total: 100,
percentage: claudeWeeklyUsed,
meta: { resetStr: data.claude_weekly_reset || 'Unknown' }
meta: { resetTime: data.claude_weekly_reset || null }
}
];
+10 -15
View File
@@ -159,13 +159,8 @@ async function main() {
return;
}
let gemini5h = 1, geminiWeekly = 1, gemini5hReset = 'Unknown', geminiWeeklyReset = 'Unknown';
let claude5h = 1, claudeWeekly = 1, claude5hReset = 'Unknown', claudeWeeklyReset = 'Unknown';
const formatTime = (ts) => {
if (!ts) return 'Unknown';
return new Date(ts).toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});
};
let gemini5h = 1, geminiWeekly = 1, gemini5hReset = null, geminiWeeklyReset = null;
let claude5h = 1, claudeWeekly = 1, claude5hReset = null, claudeWeeklyReset = null;
for (const group of groups) {
const isGemini = group.displayName && group.displayName.toLowerCase().includes('gemini');
@@ -173,18 +168,18 @@ async function main() {
if (isGemini) {
if (bucket.window === '5h') {
gemini5h = bucket.remainingFraction ?? 1;
gemini5hReset = formatTime(bucket.resetTime);
gemini5hReset = bucket.resetTime || null;
} else if (bucket.window === 'weekly') {
geminiWeekly = bucket.remainingFraction ?? 1;
geminiWeeklyReset = formatTime(bucket.resetTime);
geminiWeeklyReset = bucket.resetTime || null;
}
} else {
if (bucket.window === '5h') {
claude5h = bucket.remainingFraction ?? 1;
claude5hReset = formatTime(bucket.resetTime);
claude5hReset = bucket.resetTime || null;
} else if (bucket.window === 'weekly') {
claudeWeekly = bucket.remainingFraction ?? 1;
claudeWeeklyReset = formatTime(bucket.resetTime);
claudeWeeklyReset = bucket.resetTime || null;
}
}
}
@@ -195,10 +190,10 @@ async function main() {
gemini_weekly_remaining: Math.round(geminiWeekly * 100),
claude_5h_remaining: Math.round(claude5h * 100),
claude_weekly_remaining: Math.round(claudeWeekly * 100),
gemini_5h_reset: `in ${gemini5hReset}`,
gemini_weekly_reset: `in ${geminiWeeklyReset}`,
claude_5h_reset: `in ${claude5hReset}`,
claude_weekly_reset: `in ${claudeWeeklyReset}`
gemini_5h_reset: gemini5hReset,
gemini_weekly_reset: geminiWeeklyReset,
claude_5h_reset: claude5hReset,
claude_weekly_reset: claudeWeeklyReset
};
console.log('Gefundene Live-Daten:', payload);