bayan-api / src

Commit History

feat: add Autocomplete feature to home page + features page
ae29246

youssefreda9 commited on

fix: block grammar model from removing/normalizing punctuation marks
de7e7ce

youssefreda9 commited on

revert: remove auto re-analyze after apply - causes grammar/punctuation cycle
8fe9501

youssefreda9 commited on

fix: prevent analyze loop - skip redundant API calls when text unchanged
5a4cea7

youssefreda9 commited on

fix: instant re-analyze after apply (direct analyzeText call, no debounce)
bd81b49

youssefreda9 commited on

feat: P1-P3 improvements + auto re-analyze after apply
a2f1290

youssefreda9 commited on

fix: Pipeline hardening - 37 bugs + 10 edge cases (Round 1 + Round 2)
acba693

youssefreda9 commited on

fix(spelling): strict ortho-only filter prevents word corruption
e0bf168

youssefreda9 commited on

debug(punctuation): enhanced lock logging to show which owner blocks punctuation
bd94153

youssefreda9 commited on

fix(punctuation): allow pure punctuation changes through stage lock
c98b613

youssefreda9 commited on

fix(autocomplete): only trigger after space - no partial words
5353bc3

youssefreda9 commited on

feat(autocomplete): threshold=0.05 + max 3 suggestions
bf57d15

youssefreda9 commited on

fix(autocomplete): replace beam search with sampling for diverse GPT-2 predictions
29b3425

youssefreda9 commited on

fix(autocomplete): GPT-2 now generates complete words, not BPE subword tokens
f8bb786

youssefreda9 commited on

fix(autocomplete): true context awareness - GPT-2 now adds own candidates + cache key uses 5 words
e9527e6

youssefreda9 commited on

fix(autocomplete): 3 user-reported issues - last word only, dropdown position, cursor after accept
a6aeadf

youssefreda9 commited on

fix(autocomplete): fix dropdown not showing - 3 critical bugs fixed
2bb09e9

youssefreda9 commited on

feat(NLP-4): AutoComplete integration — hybrid bigram + GPT-2
d27ee08

youssefreda9 commited on

fix(critical): stop spelling from corrupting correct words + fix pronoun agreement + reject hallucinations
7e24e70

youssefreda9 commited on

fix: re-label grammar spelling fixes + handle prefix in hamza whitelist
8f13258

youssefreda9 commited on

fix: all model bugs — S1 S2 S3 G1 P1 (6 fixes across 4 files)
bc71395

youssefreda9 commited on

fix: QA sweep — 6 issues resolved (sidebar chips, corrected field, input sanitization, punc cap, docs, tests)
10ec354

youssefreda9 commited on

fix: Tooltip shows no correction buttons for grammar/punctuation — empty array is truthy in JS
1afad28

youssefreda9 commited on

fix: Grammar Gradio client retry with exponential backoff (3 attempts, 2s/4s/8s)
75e46c4

youssefreda9 commited on

fix: Grammar retry on rate-limit + cursor position after correction
a52b4fe

youssefreda9 commited on

feat: Pipeline Hardening v3.3 — stage ownership, punctuation safety, UUID migration
a1c20fd

youssefreda9 commited on

ui: Clean up editor placeholder text and alignment (top-right)
06539c0

youssefreda9 commited on

fix: Green traffic light (fullscreen) now works - Wrong selector: .editor-main-layout → .editor-layout - Grid override: grid-template-columns: 1fr !important - Hide both docs-panel and sidebar-desktop
8167c44

youssefreda9 commited on

feat: Complete UI/UX audit — all 20 fixes implemented Critical: - #1 Text duplication on consecutive apply (re-index spans) ✅ - #2 Apply All button (remove confirm() dialog, direct apply) ✅ - #3 Backend suggestion categorization (noted, minor) ✅ UX Fixes: - #4 Toolbar RTL verified correct ✅ - #5 Punctuation highlight: blinking insertion marker instead of bg ✅ - #6 Document title truncation with ellipsis ✅ - #7 Sidebar scrollable (score circle visible) ✅ - #8 Empty editor placeholder RTL alignment ✅ Design: - #9 Hero CTA button contrast (border 0.35 + glow) ✅ - #10 Features demos already complete for all 4 features ✅ - #11 Pricing cards equal heights (flex layout) ✅ - #12 Footer GitHub link with icon + Arabic text ✅ - #13 Pricing button text corrected ✅ - #14 بيّنة nav link: pill badge, smaller, visually distinct ✅ - #15 Scroll-to-top already correct (st > 400) ✅ Text/Content: - #16 Arabic text verified correct (خصيصًا) ✅ - #17 Traffic lights functional (red=close, yellow=collapse, green=fullscreen) ✅ - #18 Stats font size increased ✅ - #19 Dark mode already excellent ✅ - #20 Light mode: toolbar, tabs, cards, stats all improved ✅
23b1721

youssefreda9 commited on

fix: UI/UX audit fixes (10 items addressed) Critical: - Fix text duplication on consecutive suggestion apply (re-index spans) - Suggestion list now updates after apply (counters + cards refresh) UX Fixes: - Sidebar scrollable (score circle always accessible) - Suggestions max-height reduced: 420→320px - Stat items: larger font + better contrast in dark mode Text: - Pricing: 'الترقية للاحترافي' → 'الترقية للخطة الاحترافية' Undo/Redo: - formatUndo/Redo now use custom stack (unified) - Formatting commands save undo state before applying - Typing tracked via debounced pushUndoStateDebounced
9eaed94

youssefreda9 commited on

fix: New document starts empty instead of inheriting old content Previously createDocument() used getEditorText() to save current content into the new doc. Now it creates with empty string and calls loadDocumentText('') to clear the editor.
37fc5f3

youssefreda9 commited on

feat: NLP-3.5 Hardening Sprint — Performance + Overlap Resolver TASK 2: Per-stage timing instrumentation (spelling_ms, grammar_ms, punctuation_ms, total_ms) TASK 3: Smart text processing — skip AraSpell for texts > 300 chars TASK 4+5: Global overlap resolver with priority system grammar(3) > punctuation(2) > spelling(1) > autocomplete(0) Full span collision detection (exact + partial overlaps) TASK 6: AutoComplete priority hook prepared (priority=0)
920c24b

youssefreda9 commited on

fix: Strip HTML formatting on paste into editor - Added paste event handler that converts clipboard to plain text - Prevents rich text styling (colors, opacity, fonts) from being carried over - Preserves paragraph structure with line breaks - Fixes ghost formatting when pasting from chat or web pages
df46576

youssefreda9 commited on

feat: NLP-3 PuncAra-v1 Integration — Local punctuation model - Created src/nlp/punctuation/ package (rules + service) - Extracted from PuncAra.py: preprocessing, postprocessing, chunking logic - PunctuationChecker: lazy-loaded EncoderDecoderModel from bayan10/PuncAra-v1 - Wired into /api/analyze as Step 3 (Spelling -> Grammar -> Punctuation) - Updated /api/punctuation standalone endpoint - Updated /api/health to report punctuation status - Dockerfile pre-downloads PuncAra-v1 weights during build - Increased gunicorn timeout to 300s for full pipeline
92557ee

youssefreda9 commited on

fix: Re-index suggestion spans after dismiss (keep as-is) - After filtering dismissed suggestion from array, span data-suggestion-id indices became stale - Adjacent error words became unclickable because findSuggestionById used wrong index - Now re-indexes all remaining spans to match updated array positions
383cd0a

youssefreda9 commited on

fix: Grammar rules false positive - الامتحان was incorrectly matched - Increased minimum stem length from 2 to 4 in fix_prepositions_advanced - Prevents root-level ان endings (الامتحان, الإنسان) from being treated as grammatical ون/ان
773412e

youssefreda9 commited on

fix: Deduplicate spelling/grammar overlap - grammar wins - When spelling and grammar both flag the same word position, keep only grammar suggestion - Prevents double-highlighting on conjugation errors like يعملوا
976652b

youssefreda9 commited on

feat: NLP-2 Grammar Integration — dependency-aware pipeline - Add grammar_rules.py (ArabicGrammarGuard from Grammer_Rules.py with camel-tools) - Add grammar_service.py (lazy-loaded Gradio Client + rules pipeline) - Wire /api/grammar endpoint to real grammar service - Wire /api/analyze Step 2 to grammar (receives AraSpell output) - Update /api/health to report grammar status - Add gradio_client to requirements.txt - Add camel_data download to Dockerfile - Frontend unchanged (already supports grammar-error yellow highlighting)
39f0dd8

youssefreda9 commited on

ui: Better hero demo text - natural sentences with few clear errors
7908da0

youssefreda9 commited on

ui: Update hero section - Remove 'مدعوم بالذكاء الاصطناعي' badge - Replace demo text with real spelling/grammar errors - Update error counts: 8 إملائي, 3 نحوي, 2 ترقيم, score 45
7c0bffa

youssefreda9 commited on

fix: PDF dropdown visible + verify spelling context + araspell audit - Fix summary export dropdown clipping (overflow: visible + opens upward) - Verify: use_contextual=True in araspell_service.py (line 83) ✓ - Verify: ContextualCorrector fully initialized and used in pipeline ✓ - Verify: All araspell_rules.py classes used: AraSpellPostProcessor, ErrorClassifier, RulesBasedCorrector, OutputValidator, VocabularyManager, WordAligner, SplitMergeSpecialist, EditDistanceCorrector, ContextualCorrector, ArabicSpellChecker ✓ - Fix misleading comment about contextual=False
d4b662b

youssefreda9 commited on

fix: Make all editor footer buttons equal size (40x40px)
ce561e7

youssefreda9 commited on

fix: Remove double-inversion of summary length - Browser already reverses range slider in RTL - Sending raw value now matches correctly: طويل→3, قصير→1
08aa431

youssefreda9 commited on

fix: Keep summary length label fixed as متوسط
3d1867f

youssefreda9 commited on

fix: Invert summary length slider value for RTL - RTL slider: min=1 is RIGHT (طويل), max=3 is LEFT (قصير) - API expects: 1=short, 3=long - Fix: send (4 - value) to API so طويل→3 (long), قصير→1 (short)
5b6a568

youssefreda9 commited on

feat: Summary UI improvements + PDF fix - Swap short/long labels on summary length slider (RTL: long left, short right) - Remove 'تلخيص النص كاملاً' checkbox and button - Replace single export button with dropdown (TXT/DOCX/PDF) in summary - Hide format toolbar when on summary tab, show on writing tab - Fix PDF export freeze: use foreignObjectRendering:false + lower scale - Add loading toast during PDF export - Add summary DOCX and PDF export functions
010e380

youssefreda9 commited on

fix: Undo/Redo inside editor only + auto-focus after corrections - Moved listener back to editor element (capture:true) as user requested - Added editor.focus() after applySuggestionAtOffsets (line 432) - Added editor.focus() after applyAlternativeCorrection (line 474) - Added editor.focus() after dismissSuggestion (line 518) - After any correction/dismiss, editor auto-focuses so Ctrl+Z works immediately
31e6b78

youssefreda9 commited on

fix: Undo/Redo now works after spelling corrections - Moved keydown listener from editor to document with capture:true - Uses stopImmediatePropagation to prevent browser native undo - Auto-focuses editor after undo/redo - Works even when tooltip click steals focus from editor
0940035

youssefreda9 commited on

fix: Use capture phase on editor for Ctrl+Z/Y to intercept before browser native undo - Listener now on editor element with capture:true instead of document - Added stopPropagation to prevent browser native undo from also firing - Ensures corrections/dismissals can be properly undone
50ae2d7

youssefreda9 commited on

feat: Add custom Undo/Redo for corrections and dismissals - Ctrl+Z undoes correction/dismiss (restores previous editor state) - Ctrl+Y or Ctrl+Shift+Z redoes - pushUndoState() called before every applyCorrection, applyAlternative, dismissSuggestion, applyAll - 50-level undo stack - Only intercepts when custom stack has entries (falls through to browser native otherwise)
0f88e4f

youssefreda9 commited on