bayan-api / tests /phase1_audit_report.md
youssefreda9's picture
Fix 30 NLP edge cases in Grammar, Spelling, and Punctuation (Phase 10 results and Extension UI improvements)
be32617
|
Raw
History Blame Contribute Delete
7.04 kB
# Phase 1: Full Frontend Inventory — Bayan Website vs Chrome Extension
## Executive Summary
The Bayan Chrome Extension has **significant design system divergence** from the website, primarily in `popup.css` which uses a completely different color palette and font family. The sidepanel is properly aligned. There is one **syntax-breaking bug** in `sidepanel.js`, duplicated dead code in `ext-init.js`, and mixed old/new color systems in `content-inline.css`.
---
## 1. Design Token Comparison
| Token | Website (`tokens.css`) | Popup (`popup.css`) | Sidepanel (`sidepanel.css`) | Content Inline |
|-------|----------------------|--------------------|-----------------------------|----------------|
| Primary | `#6BA3E0` (blue) | `#6366f1` (indigo) ❌ | `var(--color-primary)` ✅ | `#6366f1` ❌ |
| Background | `#12141A` | `#0f0f14` ❌ | `var(--color-bg)` ✅ | `#0f0f14` ❌ |
| Surface | `#1A1D26` | `#1a1a24` ❌ | `var(--color-surface)` ✅ | `#1a1a24` ❌ |
| Text | `#E0DCD4` | `#e4e4e7` ❌ | `var(--color-text)` ✅ | `#e4e4e7` ❌ |
| Font | `Cairo, Tajawal` | `Segoe UI, SF Pro` ❌ | `Cairo, Tajawal` ✅ | system fonts ❌ |
| Spelling Error | `#E88A8A` | `#ef4444` ❌ | `#E88A8A` ✅ | Mixed ⚠️ |
| Grammar Error | `#E4B35A` | `#f59e0b` ❌ | `#E4B35A` ✅ | Mixed ⚠️ |
| Punctuation | `#6BC98A` | `#22c55e` ❌ | `#6BC98A` ✅ | `#6BC98A` ✅ |
### Verdict
- **Popup CSS**: Fully divergent — needs complete token realignment
- **Sidepanel CSS**: Properly aligned via `var()` references
- **Content Inline CSS**: Mixed — newer "UI Sync" section uses correct colors, older sections use wrong ones
---
## 2. Component Inventory
### Website Components
| Component | CSS Class | Status |
|-----------|-----------|--------|
| Navigation bar | `.nav` | Website only |
| Mobile drawer | `.mobile-nav-drawer` | Website only |
| Editor shell | `.editor-shell` | Website only |
| Format toolbar | `.format-toolbar` | Website only |
| Editor surface | `.editor-surface` | Website only |
| Score ring | `.score-ring-wrap` | Both ✅ |
| Suggestion cards | `.suggestion-card` | Both ✅ |
| Suggestion popover | `.suggestion-popover` | Website only |
| Error highlights | `.error-highlight` | Both ✅ |
| Summarize panel | `.summarize-panel` | Both ✅ |
| Dialect panel | `.dialect-panel` | Both ✅ |
| Auth gate modal | `.auth-gate-modal` | Website only |
| Documents panel | `.docs-panel-desktop` | Website only |
| Cloud sync badge | `.cloud-sync-badge` | Website only |
| Autocomplete dropdown | `.autocomplete-dropdown` | Website only |
| Ghost text | `.ghost-text` | Both ✅ |
| Quran modal | `.quran-check-modal` | Website only |
| Toast | `.toast` | Both ✅ |
| Bottom sheet (mobile) | `.bottom-sheet` | Website only |
| Analyzing indicator | `.analyzing-indicator` | Both ✅ |
### Extension-Only Components
| Component | Location | Class prefix |
|-----------|----------|-------------|
| FAB button | content-inline | `bayan-il-fab` |
| Inline tooltip | content-inline | `bayan-il-tooltip` |
| Inline modal | content-inline | `bayan-il-modal` |
| Tab system | popup/sidepanel | `bayan-tab`/`sp-tab` |
| Health status | popup/sidepanel | `bayan-status`/`sp-status` |
| Theme toggle | popup/sidepanel | `bayan-theme-toggle`/`sp-theme-toggle` |
| Apply to Page button | sidepanel | `sp-apply-page-btn` |
---
## 3. Feature Parity Matrix
| Feature | Website | Popup | Sidepanel | Content Script |
|---------|---------|-------|-----------|----------------|
| Text correction | ✅ | ✅ | ✅ | ✅ |
| Summarization | ✅ | ✅ | ✅ | ❌ |
| Dialect→MSA | ✅ | ✅ | ✅ | ❌ |
| Quran verification | ✅ | ✅ | ✅ | ❌ |
| Quran translation | ❌ | ❌ | ✅ | ❌ |
| Autocomplete (ghost) | ✅ | ❌ | ❌ | ✅ |
| Autocomplete (button) | ❌ | ✅ | ✅ | ❌ |
| Score ring | ✅ | ✅ | ✅ | ❌ |
| Rich text editor | ✅ | ❌ | ❌ | ❌ |
| Format toolbar | ✅ | ❌ | ❌ | ❌ |
| Auth (Supabase) | ✅ | ❌ | ❌ | ❌ |
| Document management | ✅ | ❌ | ❌ | ❌ |
| Cloud sync | ✅ | ❌ | ❌ | ❌ |
| File export | ✅ | ❌ | ❌ | ❌ |
| File import | ✅ | ❌ | ❌ | ❌ |
| Settings sync | ✅ | ❌ | ❌ | ❌ |
| Theme toggle | ✅ | ✅ | ✅ | ✅ |
| Context menu | ❌ | ✅ | ✅ | ❌ |
| Write back to page | ❌ | ❌ | ✅ | ❌ |
| Inline analysis | ❌ | ❌ | ❌ | ✅ |
| FAB button | ❌ | ❌ | ❌ | ✅ |
---
## 4. File Architecture
### Shared Code (extension/shared/)
- `css/tokens.css`, `css/base.css`, `css/components.css`**IDENTICAL** to website `src/css/`
- `js/` — Full mirror of website JS modules (auth, documents, sync, vendor, etc.)
- These shared files are loaded in popup.html and sidepanel.html but are **largely non-functional** in the extension context (no Supabase auth, no contenteditable editor)
### Extension-Specific Code
| File | Lines | Purpose |
|------|-------|---------|
| `popup.html` | 306 | 5-tab UI with textarea |
| `popup.css` | 822 | **Divergent** design system |
| `popup.js` | 723 | Tab switching, analysis, suggestions |
| `sidepanel/sidepanel.html` | 342 | 5-tab UI with textarea + translation |
| `sidepanel/sidepanel.css` | 773 | **Aligned** with website tokens |
| `sidepanel/sidepanel.js` | 922 | Similar to popup + persistence + write-back |
| `content-inline.css` | 1170 | Inline styles with !important isolation |
| `content-inline.js` | ~1600 | IIFE content script controller |
| `background.js` | 265 | Service worker + context menu + cache |
| `ext-init.js` | 92 | Dead code (references non-existent elements) |
| `sidepanel/ext-init.js` | 92 | Identical dead copy |
---
## 5. Critical Issues Found
### P0 — Syntax Error
- **`sidepanel/sidepanel.js:759`** — Orphaned function body. The `function addApplyPageButton(anchorBtn, getText, source) {` declaration line is missing; only the body (`if (!anchorBtn || !anchorBtn.parentElement) return;`) exists. This causes a runtime syntax error.
### P1 — Design System Divergence
- **`popup.css`** uses completely different tokens (#6366f1 indigo palette, Segoe UI font) vs website (#6BA3E0 blue palette, Cairo font)
- **`content-inline.css`** has mixed old (#ef4444) and new (#E88A8A) color values
### P2 — Dead Code
- **`ext-init.js`** (both copies) references `editor-container` and `.editor-actions` which don't exist in popup or sidepanel HTML
- **`extension/shared/js/`** contains full website modules (auth, documents, sync) that cannot function in extension context
### P3 — Code Duplication
- `popup.js` and `sidepanel.js` share ~60% identical logic (tab switching, analysis, suggestions, score ring, toast)
- `ext-init.js` exists as identical files in two locations
---
## 6. Recommended Fix Priority
1. Fix `sidepanel.js` syntax error (P0)
2. Realign `popup.css` tokens to match website design system (P1)
3. Fix `content-inline.css` mixed color values (P1)
4. Add Cairo font to popup (P1)
5. Remove dead `ext-init.js` files (P2)
6. Unify popup.js/sidepanel.js shared logic (P3 — future phase)