diff --git a/checksums.txt b/checksums.txt
new file mode 100644
index 0000000..1171dd1
--- /dev/null
+++ b/checksums.txt
@@ -0,0 +1 @@
+7830fab0eb763247602fd4815549a13eeb25841afbe2d3a047d25b9f4b9cf86d commandcode_0.2.2_linux_amd64.zip
diff --git a/commandcode_0.2.2_linux_amd64.zip b/commandcode_0.2.2_linux_amd64.zip
new file mode 100644
index 0000000..9eaadcc
Binary files /dev/null and b/commandcode_0.2.2_linux_amd64.zip differ
diff --git a/plugin/plugin.go b/plugin/plugin.go
index 2cdfad5..d9c1fc4 100644
--- a/plugin/plugin.go
+++ b/plugin/plugin.go
@@ -13,7 +13,7 @@ import (
const (
PluginID = "commandcode"
PluginName = "commandcode"
- PluginVersion = "0.2.1"
+ PluginVersion = "0.2.2"
PluginAuthor = "zgs225"
PluginRepo = "https://github.com/zgs225/cliproxy-plugin-commandcode"
PluginLogo = "https://raw.githubusercontent.com/zgs225/cliproxy-plugin-commandcode/main/assets/logo.svg"
diff --git a/plugin/quota_page.go b/plugin/quota_page.go
index 44c708d..d714f35 100644
--- a/plugin/quota_page.go
+++ b/plugin/quota_page.go
@@ -663,7 +663,7 @@ const QuotaPageHTML = `
Command Code 配额
- v0.2.1
+ v0.2.2
Plan: -
CLIProxyAPI 实时限额与 Credits 用量监控
@@ -932,9 +932,15 @@ const QuotaPageHTML = `
alertBox.className = "alert";
}
- function formatNumber(num) {
- if (num === null || num === undefined || isNaN(num)) return "0";
- return Number(num).toLocaleString(undefined, { maximumFractionDigits: 2 });
+ // Command Code 额度按美元(USD)计价:金额统一加 $ 前缀,按美元格式输出(千分位 + 两位小数)
+ function formatUSD(num) {
+ if (num === null || num === undefined || isNaN(num)) return "$0.00";
+ return Number(num).toLocaleString("en-US", {
+ style: "currency",
+ currency: "USD",
+ minimumFractionDigits: 2,
+ maximumFractionDigits: 2
+ });
}
function formatCountdown(targetDate) {
@@ -987,17 +993,17 @@ const QuotaPageHTML = `
}
// Credits
- valMonthlyCredits.textContent = formatNumber(credits.monthly_credits);
- valOpensourceCredits.textContent = formatNumber(credits.opensource_monthly_credits);
- valTotalCredits.textContent = formatNumber(credits.total_credits);
+ valMonthlyCredits.textContent = formatUSD(credits.monthly_credits);
+ valOpensourceCredits.textContent = formatUSD(credits.opensource_monthly_credits);
+ valTotalCredits.textContent = formatUSD(credits.total_credits);
// Monthly (billing period)
const monthly = limits.monthly || {};
const pMonth = Math.min(100, Math.max(0, monthly.percentage || 0));
badgeMonthly.textContent = pMonth.toFixed(1) + "%";
- usedMonthly.textContent = formatNumber(monthly.used);
- capMonthly.textContent = "/ " + formatNumber(monthly.cap);
- remainMonthly.textContent = formatNumber(monthly.remaining);
+ usedMonthly.textContent = formatUSD(monthly.used);
+ capMonthly.textContent = "/ " + formatUSD(monthly.cap);
+ remainMonthly.textContent = formatUSD(monthly.remaining);
barMonthly.style.width = pMonth + "%";
barMonthly.className = "progress-bar" + (pMonth >= 90 || monthly.exceeded ? " danger" : pMonth >= 70 ? " warning" : "");
@@ -1009,9 +1015,9 @@ const QuotaPageHTML = `
const fiveHour = limits.five_hour || {};
const pFive = Math.min(100, Math.max(0, fiveHour.percentage || 0));
badgeFiveHour.textContent = pFive.toFixed(1) + "%";
- usedFiveHour.textContent = formatNumber(fiveHour.used);
- capFiveHour.textContent = "/ " + formatNumber(fiveHour.cap);
- remainFiveHour.textContent = formatNumber(fiveHour.remaining);
+ usedFiveHour.textContent = formatUSD(fiveHour.used);
+ capFiveHour.textContent = "/ " + formatUSD(fiveHour.cap);
+ remainFiveHour.textContent = formatUSD(fiveHour.remaining);
barFiveHour.style.width = pFive + "%";
barFiveHour.className = "progress-bar" + (pFive >= 90 || fiveHour.exceeded ? " danger" : pFive >= 70 ? " warning" : "");
@@ -1029,9 +1035,9 @@ const QuotaPageHTML = `
const weekly = limits.weekly || {};
const pWeek = Math.min(100, Math.max(0, weekly.percentage || 0));
badgeWeekly.textContent = pWeek.toFixed(1) + "%";
- usedWeekly.textContent = formatNumber(weekly.used);
- capWeekly.textContent = "/ " + formatNumber(weekly.cap);
- remainWeekly.textContent = formatNumber(weekly.remaining);
+ usedWeekly.textContent = formatUSD(weekly.used);
+ capWeekly.textContent = "/ " + formatUSD(weekly.cap);
+ remainWeekly.textContent = formatUSD(weekly.remaining);
barWeekly.style.width = pWeek + "%";
barWeekly.className = "progress-bar" + (pWeek >= 90 || weekly.exceeded ? " danger" : pWeek >= 70 ? " warning" : "");