Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions index.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"version": 1,
"updated_at": "2026-07-16T08:27:07Z",
"updated_at": "2026-07-26T14:30:31Z",
"scripts": [
{
"id": "codex-context-used-meter",
Expand All @@ -21,8 +21,8 @@
{
"id": "hide-usage-alert",
"name": "Hide Usage Alert",
"description": "隐藏额度提醒",
"version": "0.1.4",
"description": "隐藏额度提醒与顶栏获取 Plus 按钮",
"version": "0.1.5",
"author": "0xTotoroX",
"tags": [
"usage",
Expand All @@ -32,7 +32,7 @@
],
"homepage": "https://github.com/0xTotoroX/codex-hide-usage-alert",
"script_url": "https://raw.githubusercontent.com/BigPizzaV3/CodexPlusPlusScriptMarket/main/scripts/hide-usage-alert.js",
"sha256": "29fb7eb5b44cda3281ddcaed5174746c02b0a8b9de461c49774bb3746a3cda7b"
"sha256": "c7e907e998bfc3d4153302fa84dfb0b1e4fa16d6e738db669713a84872f631d6"
},
{
"id": "model-deck",
Expand Down
22 changes: 21 additions & 1 deletion scripts/hide-usage-alert.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
const HIDDEN_ATTR = "data-codex-plus-hidden-usage-alert";
const HIDDEN_KIND_ATTR = `${HIDDEN_ATTR}-kind`;
const HIDDEN_MARKER_SELECTOR = `[${HIDDEN_ATTR}], [${HIDDEN_KIND_ATTR}]`;
const SCRIPT_VERSION = "0.1.4";
const SCRIPT_VERSION = "0.1.5";
const PROTECTED_SURFACE_SELECTOR = [
"[data-codex-composer-root]",
"[data-codex-composer]",
Expand Down Expand Up @@ -50,6 +50,9 @@
/(剩余\s*\d+%\s*使用量|重置频率|下次重置时间|remaining\s+\d+%\s+usage|usage\s+remaining|reset\s+frequency|next\s+reset)/i;
const actionTextRe =
/(升级|Plus|upgrade|pricing|plan|重置|reset|限额|额度|限制|limit|quota)/i;
const plusUpsellRe =
/^(?:获取|开通|升级(?:至|到)?|免费试用|试用|Get|Try|Upgrade(?:\s+to)?)\s*(?:ChatGPT\s*)?Plus$/i;
const PLUS_UPSELL_SELECTOR = "button, a, [role='button']";

function normalizeText(value) {
return String(value || "").replace(/\s+/g, " ").trim();
Expand Down Expand Up @@ -138,6 +141,22 @@
return usageCardBox(node);
}

function looksLikePlusUpsell(node) {
if (!node.matches(PLUS_UPSELL_SELECTOR)) return false;
if (!node.closest("header")) return false;
if (intersectsConversationContent(node)) return false;
return plusUpsellRe.test(candidateText(node));
}

function scanPlusUpsell(root) {
const nodes = Array.from(root.querySelectorAll(PLUS_UPSELL_SELECTOR));
if (root.matches(PLUS_UPSELL_SELECTOR)) nodes.unshift(root);
for (const node of nodes) {
if (node.closest(`[${HIDDEN_ATTR}="true"]`)) continue;
if (looksLikePlusUpsell(node)) hideNode(node, "plus-upsell");
}
}

function hideNode(node, kind) {
if (!isElement(node) || node === document.body || node === document.documentElement) return false;
if (node.getAttribute(HIDDEN_ATTR) === "true") return false;
Expand Down Expand Up @@ -208,6 +227,7 @@
function scanSubtree(root) {
if (!isElement(root)) return false;
state.scans += 1;
scanPlusUpsell(root);
for (const node of collectCandidates(root)) classifyCandidate(node);
return true;
}
Expand Down