Releases: foru17/make-x-great-again
v0.4.0
Added
- Silent blocking through X's first-party
blocks/create.jsonendpoint, 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_spamreports 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=1and direct
?tab=/#settingsdeep 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/decidenow requires the row to still be in
auto_pending_reviewand returns409 stale_agent_decisionotherwise. agent_attemptsnow represents failed agent attempts only; successful agent
decisions reset the counter, and runner failures populateagent_error.- Agent
requeuenow 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.sqlbefore 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 重写
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_strvsrest_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.md、docs/CWS_LISTING.md同步更新 - TypeScript strict + Biome + 15 个测试 + WXT 生产构建全绿
如何升级
Chrome Web Store 用户:商店审核通过后会自动推送,无需任何操作。
手动加载 / Edge / Brave / Arc 用户:
- 下载
mxga-extension-0.3.0-chrome.zip - 解压
chrome://extensions→ 「加载已解压的扩展程序」→ 选解压目录
完整 diff
v0.2.0 — AI 驱动的 X 旁路扩展(首发版)
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 → 点旁边的小图钉 📌,让小蓝常驻可见。
✅ 装好后第一次使用
- **打开 https://x.com**,正常刷推
- 工具栏右上角会出现蓝色小气泡 "守护中" → 说明扩展已经在工作
- 找一条评论区被刷屏的推文(比如随便点一个热门帖),下拉看回复 → 气泡会变红显示 "本页发现 N 个可疑账号"
- 点气泡展开 → 看到列表 → 单独勾选 / 取消 / 一键拉黑选中
推荐:登录 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
🌐 相关链接
- 🏠 官网:https://x.zuoluo.tv
- 📋 公开黑名单:https://x.zuoluo.tv/list
- 💻 源码 (AGPL-3.0):https://github.com/foru17/make-x-great-again
- 🐛 反馈 / 申诉:https://github.com/foru17/make-x-great-again/issues
🤖 Generated with Claude Code