Skip to content

Releases: foru17/make-x-great-again

v0.4.0

28 May 14:25

Choose a tag to compare

Added

  • Silent blocking through X's first-party blocks/create.json endpoint, replacing
    the old simulated click + native confirmation flow.
  • Background block queue with pacing, cross-tab coordination, retry cooldowns,
    and per-row states for queued, active, done, and failed blocks.
  • Expanded bubble queue UI: animated pending list, progress bar, stable four-cell
    status summary, and per-account pending/blocking indicators.
  • Batched public-list lookup via /v1/check?ids=... to reduce extension-to-edge
    request volume on spam-heavy threads while preserving the old single-id lookup.
  • GitHub Device Flow deep-linking from the popup to the settings tab, plus a
    boxed verification code with one-click copy.
  • Public landing trend endpoint (/v1/list/trends) and D1 index migration for
    published-list time-window charts.
  • Side-channel agent moderation pipeline:
    • /v1/agent/queue, /v1/agent/decide, /v1/agent/stats
    • agent staging statuses: agent_blacklist, agent_whitelist, agent_pending
    • admin review tabs and promotion actions for agent decisions.

Changed

  • Auto-blocking now uses a visible background queue rather than blocking the
    user on native X confirmation dialogs.
  • The bubble top summary is fixed to 命中 / 正在 / 待拉 / 已拉 so progress
    changes do not resize the panel.
  • Public-list and local-cache auto-block hits no longer re-submit redundant
    confirm_spam reports after a successful block.
  • Block pacing was tuned to reduce wait time while still avoiding bursty X API
    traffic.
  • The options page login route now supports ?tab=settings&login=1 and direct
    ?tab= / #settings deep links.
  • MAIN-world GraphQL capture no longer forwards X Authorization headers through
    page-visible events; silent block uses the fixed public X web bearer.

Fixed

  • Stale side-channel agent decisions can no longer downgrade rows already handled
    by a human/admin path. /v1/agent/decide now requires the row to still be in
    auto_pending_review and returns 409 stale_agent_decision otherwise.
  • agent_attempts now represents failed agent attempts only; successful agent
    decisions reset the counter, and runner failures populate agent_error.
  • Agent requeue now clears agent annotations and resets retry state so the item
    is actually visible to the next queue fetch.
  • Admin agent single and batch promotion actions now handle HTTP/network errors,
    refresh the list, and avoid stuck half-completed UI states.
  • GitHub login from the popup no longer lands on the options overview tab before
    starting the login flow.

Notes

  • Chrome Web Store upload artifact:
    extension/.output/mxga-extension-0.4.0-chrome.zip
  • Server operators should apply
    services/edge/migrations/2026-05-28-public-trends.sql before relying on the
    trends endpoint at larger public-list sizes.

Chrome Web Store / unpacked install artifact: mxga-extension-0.4.0-chrome.zip.

v0.3.0 — 身份解析硬化 + 自动拉黑 + UI 重写

26 May 13:09
4c83b40

Choose a tag to compare

v0.3.0 (2026-05-26)

🛡️ 身份解析硬化(治根那条 avatar-id 误判)

  • NEW: MAIN-world 内容脚本拦截 X 自家 /i/api/graphql/* 响应,直接拿真 rest_id,不再依赖头像 URL 反推
  • NEW: 读 <script type="application/ld+json">mainEntity.identifier 作为 profile 页规范 ID 源
  • NEW: 从 data-testid="<uid>-(follow|unfollow|subscribe)" 兜底拿 uid
  • HARDENED: legacy.id_str vs rest_id 不一致直接丢弃;用 Twitter snowflake epoch 反解 candidate uid 注册时间跟 legacy.created_at 比对,差异 >2 天且撞 avatar media id → 直接丢弃 + warn
  • 9 条 ingestGraphqlUsers 公开 API 回归测试

🤝 Viewer-scoped 过滤

5 个新 Signal 字段(viewerIsSelf / viewerFollowing / viewerBlocking / viewerMuting / viewerFollowRequestSent)。前端扩展 + 服务端 /v1/classify + /v1/report 双层短路:

  • 你自己、你关注的人、你 mute / block 的人 → 永远不会被自己上报
  • 公榜信任分不会被自己污染

⚡ 对已确认的垃圾号自动拉黑(设置项,默认 OFF)

新设置 autoBlockListHits。开启后两条路径都进入既有限速拉黑队列:

来源 触发 说明
list_hit /v1/check 命中(无视 verdict.label) 服务端已过滤 status='human_confirmed',被返回即公榜确认。管理员手动加黑名单(即使 AI 标签是"不确定 35%")也自动拉。修复线上 case Mary @Mary1463962 / Mark @Mark76056378472。
cache_hit 本地缓存 verdict 是 spammy 标签 缓存是本机 AI 判断,软信号,仅在 spam / porn_bot / likely_spam 时下手

两条 auto 路径都跳过 confirm_spam 再上报(不污染公榜 reporter count)。
管理面板审计标签:公榜命中 / 缓存命中 / 手动 / 一键全部

🎨 UI 重写

  • 浅色主题@media (prefers-color-scheme: light) 跟系统切换
  • 每行勾选:bubble card 内每条 finding 带 checkbox,一键拉黑只对选中
  • 异步上报状态机:上报 → 上报中 → 已上报 / 失败(带错误 tooltip)
  • Popover 边界 flip:超出 viewport 自动翻到另一侧
  • 雷达环进度:pill 用 conic-gradient 可视化扫描进度
  • 管理面板左上角图标:通用盾牌 SVG → 小蓝吉祥物 PNG(跟 popup 一致)

🔒 XSS 加固

ui.ts 所有 innerHTML 模板插值统一过 escHtml(),关闭一条真实存在的 prompt-injection 路径——攻击者 X bio 注入 → LLM reasons 字段输出 HTML → 角标悬浮卡 innerHTML → content-script 上下文 RCE。Shadow DOM 不隔离 JS 执行。

工程

  • 版本 0.2.0 → 0.3.0
  • README、docs/STATUS.mddocs/CWS_LISTING.md 同步更新
  • TypeScript strict + Biome + 15 个测试 + WXT 生产构建全绿

如何升级

Chrome Web Store 用户:商店审核通过后会自动推送,无需任何操作。

手动加载 / Edge / Brave / Arc 用户

  1. 下载 mxga-extension-0.3.0-chrome.zip
  2. 解压
  3. chrome://extensions → 「加载已解压的扩展程序」→ 选解压目录

完整 diff

PR #19#19

v0.2.0 — AI 驱动的 X 旁路扩展(首发版)

25 May 09:25

Choose a tag to compare

Make X Great Again v0.2.0 — 首个公开发布版

Chrome Web Store 正在审核(敏感品类,通常 1–2 周)。这一版给愿意手动加载的用户先用。

AI 驱动的 X 旁路扩展。 装上之后,你刷 X 时它在背景静默识别色情/广告 spam 机器人,给你一键真拉黑(驱动 X 自己的屏蔽 UI,不是 hide)。完全开源、零数据收集、不要求任何注册。


🚀 安装步骤(5 步,约 1 分钟)

1. 下载

点本页下方 Assets 里的 mxga-extension-0.2.0-chrome.zip 下载。

2. 解压

双击下载好的 zip 解压(macOS 自动解压;Windows 右键 → 解压到当前文件夹)。解压后会得到一个文件夹(里面有 manifest.json 等文件)。记住这个文件夹的位置

3. 打开 Chrome 的扩展管理页

在 Chrome 地址栏输入:

chrome://extensions

回车,进入扩展管理页。

4. 打开右上角的「开发者模式」

页面右上角有一个 "开发者模式" (Developer mode) 开关,打开它

打开后会出现一排新按钮:「加载已解压的扩展程序」(Load unpacked) / 「打包扩展程序」/ 「更新」。

5. 加载扩展

「加载已解压的扩展程序」 → 选择第 2 步解压出来的文件夹 → 确认。

完成。Chrome 工具栏会出现小蓝(🐦红帽 mascot)图标。

6.(推荐)固定到工具栏

工具栏右侧的拼图图标 🧩 → 找到 MXGA → 点旁边的小图钉 📌,让小蓝常驻可见。


✅ 装好后第一次使用

  1. **打开 https://x.com**,正常刷推
  2. 工具栏右上角会出现蓝色小气泡 "守护中" → 说明扩展已经在工作
  3. 找一条评论区被刷屏的推文(比如随便点一个热门帖),下拉看回复 → 气泡会变红显示 "本页发现 N 个可疑账号"
  4. 点气泡展开 → 看到列表 → 单独勾选 / 取消 / 一键拉黑选中

推荐:登录 GitHub 解锁 AI 实时判定

  • 点扩展图标 → 顶部蓝色提示卡 → "用 GitHub 登录"
  • 自动跳转 GitHub Device Flow(无需 client secret,安全)
  • 登录后扩展会在你刷 X 时实时调用 AI 判定,命中率比仅用公榜匹配高很多
  • 只读你的 GitHub 数字 ID 做防滥用计数,不读邮箱、私有仓库、任何其他信息

不想登录?完全没问题。不登录的话,扩展只用公开黑名单匹配(已确认的 ~108 个账号),效果会差一些但完全可用。


🛡️ 关于隐私

完整隐私声明:docs/PRIVACY.md

简要:

  • 不收集姓名、邮箱、IP、设备指纹
  • 不读你的 X cookie / token
  • 不会跟踪你浏览的非 x.com 页面
  • 你的 GitHub 数字 ID 在我们这边就是一串数字,没有任何反查你 X 身份的途径

🎯 这一版包含

  • AI 实时判定 — 调云端 LLM 在线识别 spam / 色情 bot / 水军;判定不微调,纯 prompt
  • 公榜命中(红色「公榜」tag)— 已被维护者确认的账号,秒命中、零成本
  • 维护者白名单(绿色「白名单」badge)— 已被维护者确认安全的账号
  • 本地缓存(灰色「缓存」tag)— 之前判过的账号本机复用
  • 一键真拉黑 — 驱动 X 自己的屏蔽菜单,不是隐藏
  • bulk 操作 + per-row 勾选 — 误判时可单独取消
  • L0a 6h 增量同步白名单 — 维护者新加的安全账号 6h 内全网用户都生效
  • 本地成就感 — popup 显示你扫了多少、拦了多少
  • base-ui 视觉系统 — 整套黑/暗主题自适应

更详细的变更:CHANGELOG / commits


🔐 完整性校验(可选)

File mxga-extension-0.2.0-chrome.zip
Size 133 KB
SHA-256 39ffcd460ce8c4f526d69f2567a8b89f48dc9d71597c90a88c73cc9dca489e2f
# macOS / Linux
shasum -a 256 mxga-extension-0.2.0-chrome.zip

输出应该匹配上面的 SHA-256。


❓ 遇到问题

  • 装上之后 X 没反应?→ chrome://extensions 看下扩展是不是"已启用",右键 mascot 图标 → "查看检视图" 看 service worker 有没有报错
  • 误判某个账号?→ 开 GitHub issue 附带 X handle
  • 还是不放心?→ 源码全部 AGPL-3.0,每行都可查:https://github.com/foru17/make-x-great-again

🌐 相关链接

🤖 Generated with Claude Code