|
| 1 | +# X Algorithm Score — Project Status |
| 2 | + |
| 3 | +Last updated: February 2026 |
| 4 | + |
| 5 | +## What's Built |
| 6 | + |
| 7 | +### Core Extension (MVP) |
| 8 | +- **Real-time tweet scoring** on x.com — content script detects the composer via MutationObserver and displays a floating score badge (0-100, S-F grade) |
| 9 | +- **5-component scoring engine** — Content (0-25), Media (0-20), Timing (0-15), Engagement (0-20), Risk penalty (0-30), normalized to 0-100 |
| 10 | +- **3-tab popup** — Test (score drafts offline), Learn (8 algorithm insight cards), Settings (API key, preferences) |
| 11 | +- **Score overlay** — collapsible badge expands to show Suggestions, Breakdown, and Algorithm Factors tabs |
| 12 | +- **Claude AI deep analysis** — optional originality scoring, engagement prediction, rewrite suggestions via user's own API key |
| 13 | +- **Background service worker** — handles install/update, message routing, score history storage, badge updates |
| 14 | + |
| 15 | +### Controversy Risk Scanner (New) |
| 16 | +`src/lib/scandal-detector.ts` — pattern-based detection for content likely to trigger catastrophic algorithmic penalties. |
| 17 | + |
| 18 | +**6 detection categories:** |
| 19 | +| Category | Examples | Why It Matters | |
| 20 | +|----------|----------|----------------| |
| 21 | +| Offensive language | Insults, violent language, slurs | Reports = -369x multiplier | |
| 22 | +| Hot-button topics | Broad group generalizations, political polarization | Mass reports from targeted group | |
| 23 | +| Inflammatory tone | Personal attacks, excessive caps, confrontational language | Blocks/mutes = -74x each | |
| 24 | +| Rage bait | "cope harder", "stay mad", intentional provocation | Blocks far outweigh any reply boost | |
| 25 | +| Targeted attacks | Attacking named users, doxxing references, cancel calls | Mass reports + potential suspension | |
| 26 | +| Misinformation patterns | Conspiracy framing, false authority claims, JAQ-ing | Content moderation flags | |
| 27 | + |
| 28 | +**4 severity levels:** low (2pt penalty), medium (5pt), high (10pt), critical (20pt) |
| 29 | +**4 risk levels:** safe / caution / risky / dangerous |
| 30 | + |
| 31 | +**Integration:** |
| 32 | +- Penalty feeds into scoring engine's risk calculation (capped at 10pts of 30pt risk budget) |
| 33 | +- Top controversy warning surfaces in the suggestions list |
| 34 | +- Popup shows color-coded risk banner with icon, level label, and warning details |
| 35 | +- Overlay shows compact controversy alert strip in expanded view |
| 36 | + |
| 37 | +### Thread Length Detection (Bug Fix) |
| 38 | +Content script now counts `tweetTextarea_N` elements to detect thread length instead of hardcoding `threadLength: 1`. X uses `tweetTextarea_0`, `tweetTextarea_1`, etc. for each tweet in a thread. |
| 39 | + |
| 40 | +### Other Fixes & Cleanup |
| 41 | +- Removed unused dependencies (`lucide-react`, `zustand`) — declared but never imported |
| 42 | +- Removed all TODO comments from source (0 remaining) |
| 43 | +- Removed stale follower-timezone dead code block from timing calculator |
| 44 | +- Fixed broken placeholder screenshot references in README |
| 45 | +- Comprehensive README rewrite with install guide, scoring tables, project structure |
| 46 | + |
| 47 | +### Build & Packaging |
| 48 | +- `npm run build` — tsc + vite build (40 modules, ~460ms) |
| 49 | +- `npm run build:clean` — removes dist/ first |
| 50 | +- `npm run package` — clean build + zip for Chrome Web Store (129KB) |
| 51 | +- TypeScript strict mode, 0 errors |
| 52 | +- Manifest V3 validated, all file references verified |
| 53 | + |
| 54 | +## What Remains |
| 55 | + |
| 56 | +### High Priority (Before CWS Submission) |
| 57 | +- [ ] Load extension in Chrome and verify it works on x.com |
| 58 | +- [ ] Take 5 screenshots for Chrome Web Store listing (see `store-assets/STORE_LISTING.md`) |
| 59 | +- [ ] Fill in store listing placeholders (support email, website URL, GitHub repo) |
| 60 | +- [ ] Host privacy policy at a public URL |
| 61 | +- [ ] Submit to Chrome Web Store |
| 62 | + |
| 63 | +### Medium Priority |
| 64 | +- [ ] Upgrade Vite to 6.x when @crxjs/vite-plugin supports it (fixes esbuild dev server vulnerability — moderate severity, dev-only) |
| 65 | +- [ ] Persist settings changes to chrome.storage (popup Settings tab currently local state only) |
| 66 | +- [ ] Add score history tracking (background service worker has the handler, needs UI) |
| 67 | + |
| 68 | +### Low Priority (Post-MVP) |
| 69 | +- [ ] Timeline scoring — show scores on existing tweets in the feed |
| 70 | +- [ ] User context integration — follower count, engagement rate, Premium status |
| 71 | +- [ ] Thread composer — per-tweet scoring within threads |
| 72 | +- [ ] Optimal posting time — personalized suggestions based on follower timezones |
| 73 | +- [ ] Firefox and Safari support |
| 74 | +- [ ] A/B testing suggestions |
| 75 | + |
| 76 | +## File Map |
| 77 | + |
| 78 | +``` |
| 79 | +src/ |
| 80 | +├── background/index.ts # Service worker (install, messaging, history) |
| 81 | +├── content/ |
| 82 | +│ ├── index.tsx # Composer detection, overlay injection |
| 83 | +│ ├── styles.css # Overlay animations |
| 84 | +│ └── components/ |
| 85 | +│ └── ScoreOverlay.tsx # Collapsible score badge + expanded panel |
| 86 | +├── lib/ |
| 87 | +│ ├── scoring-engine.ts # 5-component scoring + suggestions + factors |
| 88 | +│ ├── scandal-detector.ts # Controversy risk scanner (6 categories) |
| 89 | +│ └── ai-analysis.ts # Claude API integration |
| 90 | +├── popup/ |
| 91 | +│ ├── index.html # Popup entry |
| 92 | +│ ├── main.tsx # React mount |
| 93 | +│ ├── Popup.tsx # 3-tab UI (Test, Learn, Settings) |
| 94 | +│ └── styles.css # Tailwind + custom styles |
| 95 | +└── types/index.ts # All interfaces + default weights |
| 96 | +``` |
| 97 | + |
| 98 | +## Commit History |
| 99 | + |
| 100 | +``` |
| 101 | +b53e2c9 feat: add Controversy Risk Scanner for tweet analysis |
| 102 | +c8b1aa8 docs: rewrite README with full install/dev/usage guide |
| 103 | +de1f1ef docs: update README with packaging commands and fix broken screenshot refs |
| 104 | +79e5495 chore: add CWS packaging scripts and ignore zip artifacts |
| 105 | +494550f chore: extension session updates |
| 106 | +207284c docs: add INSTALL.md and sync version to 0.1.0 |
| 107 | +6200742 docs: comprehensive README with installation guide and algorithm insights |
| 108 | +063a2c7 feat: initial MVP release of X Algorithm Score extension |
| 109 | +``` |
0 commit comments