Toshqondiy logo Toshqondiy Akademiyasi
Yangiliklar

Versiya tarixi

Ilovaning har bir versiyasi va yangilanishi — nima qo'shildi, nima yangilandi.

Yangilanish

v1.4.287

2026 M10 28

Obuna faqat oylik; bepul — kuniga 1 insho + 1 og‘zaki insho

  • feat(tarif): bepul — kuniga 1 insho + 1 og'zaki insho, Terra modelida
  • feat(obuna): yillik obuna olib tashlandi — faqat oylik 120 000 so'm
Yangilanish

v1.4.286

2026 M10 28

Premium: kuniga 10 ta insho va og‘zaki insho tahlili

  • feat(obuna): Premium tahlil limiti 20 -> 10, model Sol -> GPT-6.1 Terra
  • docs(reja): 57.1 prodda — OTA 1.4.285, o'lchov va benchmark jurnali
Yangilanish

v1.4.285

2026 M10 28

Og‘zaki insho: bugungi mavzu va savollar, vaqt talabi, insho ↔ gapirish ko‘prigi

  • Merge feat/57-gapirish-egizak: og'zaki insho — inshoning egizagi + ko'prik (57.1)
  • docs(reja): 57-spec — gapirish inshoning egizagi + ko'prik (tayyor-spec)
  • feat(57.1): og'zaki insho — nom, testlar, e2e, benchmark skripti, jurnal
  • wip(57.1): server — gapirish bugungi mavzusi, ko'prik, vaqt talabi, daraja sharti, prompt
  • wip(57.1): gapirish egizagi — maket (umumiy mavzu kartasi, vaqt talabi, ko'prik)
  • docs(reja): 57-spec — gapirish inshoning egizagi + ko'prik (tayyor-spec)
  • feat(lugat): 56.3 tugadi (tirik 30438); 56.6a keyingi haftaga
  • feat(lugat): 56 tez rejim yuklama (56.3i-3)
  • feat(lugat): 56.3i 005-008 prodda (tirik 30381); noqis guard ـئِذٍ istisnosi
  • feat(lugat): 56 tez rejim yuklama (56.3i-2)
  • docs(56): reja — hozir faqat 56.3i, 56.6a keyingi haftaga (haftalik limit)
  • feat(lugat): 56.6a 086-087 prodda (tirik 30145); sessiya yakuni — davom jadvali
  • feat(lugat): 56 tez rejim yuklama (56.6a-42)
  • feat(lugat): 56.3i 001-004 prodda (tirik 30086)
  • feat(lugat): 56 tez rejim yuklama (56.3i-1)
  • feat(lugat): 56.6a 084-085 prodda (tirik 29870); 086-087 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-41)
  • chore(lugat): dupscan56.py — yashirin takror skaneri
  • feat(lugat): 56.3h tugadi (tirik 29809); 56.3i navbati 490/10
  • feat(lugat): 56 tez rejim yuklama (56.3h-5)
  • feat(lugat): 56.6a 082-083 prodda (tirik 29594); nisba tanvini, عالمي takrori; 084-085 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-40c)
  • feat(lugat): 56 tez rejim yuklama (56.6a-40b)
  • feat(lugat): 56 tez rejim yuklama (56.6a-40)
  • feat(lugat): 56.3h 013-016 prodda (tirik 29556)
  • feat(lugat): 56 tez rejim yuklama (56.3h-4)
  • feat(lugat): 56.6a 080-081 prodda (tirik 29357); 082-083 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-39)
  • feat(lugat): 56.3h 009-012 prodda (tirik 29298)
  • feat(lugat): 56 tez rejim yuklama (56.3h-3)
  • feat(lugat): 56.6a 078-079 prodda (tirik 29103); 080-081 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-38)
  • docs(56): jurnal imlo
  • feat(lugat): 56.3h 005-008 prodda (tirik 29050)
  • feat(lugat): 56 tez rejim yuklama (56.3h-2)
  • feat(lugat): 56.6a 076-077 prodda (tirik 28835); 078-079 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-37)
  • feat(lugat): 56.3h 001-004 prodda (tirik 28787)
  • feat(lugat): 56 tez rejim yuklama (56.3h-1)
  • feat(lugat): 56.6a 074-075 prodda (tirik 28580); 076-077 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-36)
  • feat(lugat): 56.3g tugadi (tirik 28532); 56.3h navbati 1000/20
  • feat(lugat): 56 tez rejim yuklama (56.3g-5)
  • feat(lugat): 56.6a 072-073 prodda (tirik 28322); 074-075 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-35)
  • feat(lugat): 56.3g 013-016 prodda (tirik 28263)
  • feat(lugat): 56 tez rejim yuklama (56.3g-4)
  • feat(lugat): 56.6a 070-071 prodda (tirik 28053); 072-073 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-34)
  • feat(lugat): 56.3g 009-012 prodda (tirik 28014)
  • feat(lugat): 56 tez rejim yuklama (56.3g-3)
  • feat(lugat): 56.6a 068-069 prodda (tirik 27812); 070-071 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-33)
  • feat(lugat): 56.3g 005-008 prodda (tirik 27762)
  • feat(lugat): 56 tez rejim yuklama (56.3g-2)
  • feat(lugat): 56.6a 066-067 prodda (tirik 27549); 068-069 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-32)
  • feat(lugat): 56.3g 001-004 prodda (tirik 27518)
  • feat(lugat): 56 tez rejim yuklama (56.3g-1)
  • feat(lugat): 56.6a 064-065 prodda (tirik 27310); mo''→mo' tuzatish; 066-067 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-31b)
  • feat(lugat): 56 tez rejim yuklama (56.6a-31)
  • feat(lugat): 56.3f tugadi (tirik 27258); 56.3g navbati 1000/20
  • feat(lugat): 56 tez rejim yuklama (56.3f-5)
  • feat(lugat): 56.6a 062-063 prodda (tirik 27059); 064-065 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-30)
  • feat(lugat): 56.3f 013-016 prodda (tirik 27032)
  • feat(lugat): 56 tez rejim yuklama (56.3f-4)
  • feat(lugat): 56.6a 060-061 prodda (tirik 26817); 062-063 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-29)
  • feat(lugat): 56.3f 009-012 prodda (tirik 26775)
  • feat(lugat): 56 tez rejim yuklama (56.3f-3)
  • feat(lugat): 56.6a 058-059 prodda (tirik 26567); 060-061 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-28b)
  • feat(lugat): 56 tez rejim yuklama (56.6a-28)
  • feat(lugat): 56.3f 005-008 prodda (tirik 26520)
  • feat(lugat): 56 tez rejim yuklama (56.3f-2)
  • feat(lugat): 56.6a 056-057 prodda (tirik 26319); 058-059 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-27b)
  • feat(lugat): 56 tez rejim yuklama (56.6a-27)
  • feat(lugat): 56.3f 001-004 prodda (tirik 26273)
  • feat(lugat): 56 tez rejim yuklama (56.3f-1)
  • feat(lugat): 56.6a 054-055 prodda (tirik 26085); 056-057 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-26)
  • docs(56): jurnal — 56.3e tugadi
  • feat(lugat): 56.3e tugadi (tirik 26039); 56.3f navbati 1000/20
  • feat(lugat): 56 tez rejim yuklama (56.3e-5)
  • docs: CLAUDE.md — «davom et» worktree'dagi yo'riqnomani o'qisin
  • feat(lugat): 56.3e 013-016 prodda (tirik 25861); sessiya yakuni — davom jadvali, jurnal
  • feat(lugat): 56 tez rejim yuklama (56.3e-4)
  • feat(lugat): 56.6a 052-053 prodda (tirik 25675); eski translit 10 avto; 054-055 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-25)
  • docs(reja): 56 davom — 56.3e 009-012 prodda (tirik 25642)
  • feat(lugat): 56 tez rejim yuklama (56.3e-3)
  • feat(lugat): 56.6a 050-051 prodda (tirik 25455); eski translit 9 avto; 052-053 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-24)
  • docs(reja): 56 davom — 56.3e 005-008 prodda (tirik 25416)
  • feat(lugat): 56 tez rejim yuklama (56.3e-2)
  • feat(lugat): 56.6a 048-049 prodda (tirik 25224); 050-051 navbat; U prompt check --dry
  • feat(lugat): 56 tez rejim yuklama (56.6a-23)
  • docs(reja): 56 davom — 56.3e 001-004 prodda (tirik 25169)
  • feat(lugat): 56 tez rejim yuklama (56.3e-1)
  • fix(lugat): kamolot56 queue --dry yozmaydi; tasodifan yaratilgan 56.6a 050-289 navbati olib tashlandi (extras keyin biriktirilsin)
  • feat(lugat): 56.6a 046-047 prodda (tirik 24973); 048-049 navbat; agent scratch .scratch56
  • feat(lugat): 56 tez rejim yuklama (56.6a-22)
  • feat(lugat): 56.3d tugadi (tirik 24927); 56.3e navbati 1000/20
  • feat(lugat): 56 tez rejim yuklama (56.3d-5)
  • feat(lugat): 56.6a 044-045 prodda (tirik 24728); translit56 izoh arabchasi; 046-047 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-21)
  • docs(reja): 56 davom — 56.3d 013-016 prodda (tirik 24699)
  • feat(lugat): 56 tez rejim yuklama (56.3d-4)
  • feat(lugat): 56.6a 042-043 prodda (tirik 24512); 044-045 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-20)
  • docs(reja): 56 davom — 56.3d 009-012 prodda (tirik 24476)
  • feat(lugat): 56 tez rejim yuklama (56.3d-3)
  • feat(lugat): 56.6a 040-041 prodda (tirik 24282); translit56 ة/noqis; 042-043 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-19)
  • docs(reja): 56 davom — 56.3d 005-008 prodda (tirik 24235)
  • feat(lugat): 56 tez rejim yuklama (56.3d-2)
  • feat(lugat): 56.6a 038-039 prodda (tirik 24047); translit56.py (eski qo'sh unli) yukla56 ga; 040-041 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-18)
  • docs(reja): 56 davom — 56.3d 001-004 prodda (tirik 24004)
  • feat(lugat): 56 tez rejim yuklama (56.3d-1)
  • feat(lugat): 56.6a 036-037 prodda (tirik 23811); eski translit 3; 038-039 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-17)
  • feat(lugat): 56.3c tugadi (tirik 23750); 56.3d navbati 1000/20
  • feat(lugat): 56 tez rejim yuklama (56.3c-5)
  • feat(lugat): 56.6a 034-035 prodda (tirik 23562); eski translit 8; 036-037 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-16)
  • docs(reja): 56 davom — 56.3c 013-016 prodda (tirik 23507)
  • feat(lugat): 56 tez rejim yuklama (56.3c-4)
  • feat(lugat): 56.6a 032-033 prodda (tirik 23313); eski translit 6; 034-035 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-15)
  • feat(lugat): 56.3c 009-012 prodda (tirik 23269); 2 imlo takrori yashirildi; yukla56 yashirish argumenti
  • feat(lugat): 56 tez rejim yuklama (56.3c-3c)
  • chore: vaqtinchalik yuklash skripti olib tashlandi
  • feat(lugat): 56 tez rejim yuklama (56.3c-3b)
  • feat(lugat): 56 tez rejim yuklama (56.3c-3)
  • feat(lugat): 56.6a 030-031 prodda (tirik 23083); 032-033 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-14)
  • docs(reja): 56 davom — 56.3c 005-008 prodda (tirik 23033)
  • feat(lugat): 56 tez rejim yuklama (56.3c-2)
  • feat(lugat): 56.6a 028-029 prodda (tirik 22834); eski translit 9; 030-031 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-13)
  • docs(reja): 56 davom — 56.3c 001-004 prodda (tirik 22765)
  • feat(lugat): 56 tez rejim yuklama (56.3c-1)
  • feat(lugat): 56.6a 026-027 prodda (tirik 22573); eski translit 4; 028-029 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-12)
  • feat(lugat): 56.3b tugadi (tirik 22531); 56.3c navbati 1000/20
  • feat(lugat): 56 tez rejim yuklama (56.3b-5)
  • feat(lugat): 56.6a 024-025 prodda (tirik 22347); eski translit 11 tuzatish; 026-027 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-11)
  • docs(reja): 56 davom — 56.3b 013-016 prodda (tirik 22306)
  • feat(lugat): 56 tez rejim yuklama (56.3b-4)
  • feat(lugat): 56.6a 022-023 prodda (tirik 22107); 024-025 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-10)
  • docs(reja): 56 davom — 56.3b 009-012 prodda (tirik 22051)
  • feat(lugat): 56 tez rejim yuklama (56.3b-3)
  • feat(lugat): 56.6a 020-021 prodda (tirik 21852); translit 3; 022-023 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-9)
  • docs(reja): 56 davom — 56.3b 005-008 prodda (tirik 21798)
  • feat(lugat): 56 tez rejim yuklama (56.3b-2)
  • feat(lugat): 56.6a 018-019 prodda (tirik 21603); 020-021 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-8)
  • docs(reja): 56 davom — 56.3b 001-004 prodda (tirik 21557)
  • feat(lugat): 56 tez rejim yuklama (56.3b-1)
  • feat(lugat): 56.6a 016-017 prodda (tirik 21371); 018-019 navbat
  • feat(lugat): 56 tez rejim yuklama (56.6a-7)
  • feat(lugat): 56.3a tugadi (tirik 21322); 56.3b navbati 1000/20; collect dubl alias tuzatildi
  • feat(lugat): 56 tez rejim yuklama (56.3a-4)
  • feat(lugat): 56.6a 016-017 navbat + qoldiq
  • docs(reja): 56 davom — 56.6a 014-015 prodda (tirik 21102)
  • feat(lugat): 56 tez rejim yuklama (56.6a-6c)
  • feat(lugat): 56 tez rejim yuklama (56.6a-6b)
  • feat(lugat): 56 tez rejim yuklama (56.6a-6)
  • docs(reja): 56 davom — 56.3a 012-015 prodda (tirik 21054)
  • feat(lugat): 56 tez rejim yuklama (56.3a-3)
  • feat(lugat): 56.6a 014-015 navbat + qoldiq
  • feat(lugat): 56.6a 012-013 prodda (tirik 20857); translit 3 tuzatish; U id saboq
  • feat(lugat): 56 tez rejim yuklama (56.6a-5)
  • docs(reja): 56 davom — 56.3a 008-011 prodda (tirik 20787)
  • feat(lugat): 56 tez rejim yuklama (56.3a-2)
  • feat(lugat): 56.6a 012-013 navbat + qoldiq
  • feat(lugat): 56.6a 010-011 + 56.3a 006-007 prodda (tirik 20582); davom jadvali
  • feat(lugat): 56 tez rejim yuklama (56.6a-4)
  • feat(lugat): 56.3a 006-007 merge; sub-agent qoidasi — 1 ta Opus
  • docs(reja): 56 — yangi sessiyaga o'tish holati (tirik 20 423)
  • feat(lugat): 56 tez rejim yuklama (56.3a-1)
  • docs(reja): 56 davom jadvali — tez rejim, tez56/yukla56 skriptlari
  • feat(lugat): 56 tez rejim yuklama (56.6a-3)
  • feat(lugat): 56.3 saralash tugadi (21/21); 56.3a navbati — 1000 nomzod (lahja, ism ham), 20 partiya
  • feat(lugat): 56.6a 001-007 prodda (tirik 20083); navbat 008-009
  • feat(lugat): 56.6a 003-007 merge — 311 maqola boyitildi, 183 omograf; eski translit/izoh xatolari tuzatildi
  • feat(lugat): 56.6s qaytarish o'tishi — queue --queries, qoldiq/qaror haligacha to'g'ri radlarni o'tkazib yuboradi
  • feat(lugat): 56.2b tez rejim merge — 1050 maqola (R/H siz), اِدَّكَرَ takrori birlashtirildi
  • feat(lugat): «hamma so'z» buyrug'i — siyosiy/lahja/ism/qo'pol/diniy ibora qo'shiladi; tez rejim (Sonnet → skript → load)
  • feat(lugat): 56.6a 004-005 R+H (19 jiddiy tuzatildi, 9 omograf rad), hisob: 004 914/914, 005 967/967
  • feat(lugat): 56.6a 006-007 faqat birlik yo'li (1089 qaror, ≈20 daq); predlog izohi avtomatik bog'lanishga; k-v0 asos belgisi
  • feat(lugat): 56.6a/003 birlik yo'li to'liq (R+H), yakuniy hisob: 955 birlik — maqolada 837, rad/bor 82, R 36
  • feat(lugat): 56.6a 003-005 birlik qarorlari (qamrov 100%), mexanizm tuzatishlari; 006-007 navbat (faqat birlik yo'li)
  • docs(reja): 56 spec 4.10 — birlik mexanizmi to'liq joriy qilindi; U qoidalari (fahsh, harbiy, form, items, lug'at:)
  • feat(lugat): 56.6 v2 birlik mexanizmi — qamrov56.py, birlik56.py, U agent; 003 R2/H, 004-005 Sonnet K
  • feat(lugat): 56.6 Sonnet/Opus A/B (003) va navbat 004-005
  • docs(reja): 56.6a sinovi prodda — jurnal, davom jadvali
  • feat(lugat): 56.2b G 022-025 — 56.2b G tugadi
  • feat(lugat): 56.6a kamolot sinovi merge — 144 maqola boyitildi, 48 omograf; sifat qarori (jiddiy 0, mayda ≤10%)
  • feat(lugat): 56.6a uchinchi audit (jiddiy 2, oddiy 4) topilmalari
  • feat(lugat): 56.6a chuqur R2 (110 maqola, 38 tuzatish)
  • feat(lugat): 56.6a qayta audit (jiddiy 0, oddiy 6) topilmalari
  • feat(lugat): 56.6a sinonim qayta ko'rigi (94 maqola)
  • feat(lugat): 56.6a audit (jiddiy 0, oddiy 6) topilmalari; K/R ga sinonim qoidasi
  • feat(lugat): 56.6a sinov — K, R, H 001-002 (144 yamoq, 48 omograf); check eski xatoni hakamga beradi
  • feat(lugat): 56.2b G 021; agent chegarasi 1
  • feat(lugat): 56.2b G 017-020 (172 maqola)
  • feat(lugat): 56.3 saralash 016-017
  • feat(lugat): 56.6 kamolot asbobi — kamolot56.py, K yo'riqnomasi, 56.6a sinov navbati
  • docs(reja): 56.2a prodda — jurnal, README, davom jadvali
  • feat(lugat): 56.3 saralash 014-015
  • feat(lugat): 56.2b G 013-016 (176 maqola)
  • feat(lugat): 56.2b G 009-012 (165 maqola); agent chegarasi 2
  • feat(lugat): 56.3 saralash 012-013
  • feat(lugat): 56.2a audit 52 (jiddiy 0, oddiy 1) va merge — 880 maqola
  • feat(lugat): 56.2b G 005-008; davom yo'riqnomasi holati yangilandi
  • feat(lugat): 56.2b G 001-004 (172 maqola)
  • feat(lugat): 56.3 saralash 010-011
  • docs(reja): 56 avtonom davom yo'riqnomasi (yangi sessiya uchun); audit ekrani 2400
  • feat(lugat): 56.2a R+H 016-020 — 56.2a hakam tugadi
  • feat(lugat): 56.3 saralash 008-009
  • feat(lugat): 56.2a R+H 006-010
  • feat(lugat): 56.2a R+H 011-015
  • feat(lugat): 56.2b navbat (1209 nomzod)
  • feat(lugat): 56.2a H 001-005 (tuzatilgan 14, rad 9 — extras56 ga nishon va iboralar)
  • feat(lugat): 56.2a G 019-020 — 56.2a G tugadi
  • feat(lugat): 56.2a G 015-018 (173 maqola)
  • feat(lugat): 56.2a R 001-005; nisba ayol shakli takror qo'riqchisi (takror_nisba_ayol)
  • feat(lugat): 56.3 saralash 006-007
  • feat(lugat): 56.2a G 007-010 (187 maqola)
  • feat(lugat): 56.2a G 011-014 (179 maqola)
  • feat(lugat): 56.3 saralash 004-005; collect bo'laklararo dublni aliasga
  • feat(lugat): 56.3 saralash bo'lak 002-003
  • docs: agent chegarasi 3 (Muhammad 2026-10-25)
  • fix(lugat): alias bosh so'zni to'smaydi — lookup avval bosh so'z, keyin alias nishoni (onlayn va offline)
  • feat(lugat): 56.2a G 003-006 (175 maqola)
  • feat(lugat): 56.3 saralash bo'lak 001 (keep 339, proper 20, form/existing 82, dialect 41, noise 13, person 5)
  • docs(reja): 56.5 — alias bosh so'zni to'sishi topildi, tuzatish rejasi
  • feat(lugat): 56.2a sinov G 001-002 (85 maqola, 36 ibora); g-56 aniqliklari, extras56 (rad etilgan shakl iboralari)
  • feat(lugat): 56.3 saralash tayyorlovi (triage56, triage-56.txt), R rubrikasi r-56.md; agent chegarasi 2
  • feat(lugat): 56.2 tayyorlov — navbat (lugat56 queue), G yo'riqnomasi g-56.md, verify_gen56, iboralarda siyosiy qo'riqchi; 56.2a 20 partiya
  • docs(reja): 56.1 prodda — OTA 1.4.284, migratsiya 053
Yangilanish

v1.4.284

2026 M10 25

Lug'at: yangi «Iboralar» bo'limi (so'z birikmalari, predlog bilan ishlatilishi, maqollar), fe'llarda «Buyruq» shakli, ko'p ma'noli so'zlarda «Barcha ma'nolari» kartasi.

  • docs(reja): 56.1 jurnali
  • feat(lugat): 56.1 — «Iboralar» bo'limi, «Buyruq» qatori, ko'p ma'noli so'z kartasi
  • feat(lugat): 56.0 — Muhammad bazasi muzlatildi (faqat o'zbekcha ustun, rus o'qilmaydi)
  • docs(reja): 56 — ovoz, ibora qidiruvi, atoqli ot verify istisnosi, agent yo'riqnomalari sinovi
  • docs(reja): 56 — bazadan maksimal foyda: Iboralar bo'limi, Buyruq qatori, uzbarab ma'nolari
  • docs(reja): 56 — Muhammad bazasi: hamma so'z bizda, bo'sh joylar, kamolot (tayyor-spec)
  • chore: eski lug'at servisi nomini izoh/spec'dan olib tashlash
  • Merge feat/48-olchov-ulushi
  • feat(tezlik): o'lchov hamma sessiyada — eski 10 % ulush tashlanadi
  • docs(reja): 46 to'xtatildi — Muhammad: fonda pauza qolsin
  • docs(reja): 42 holati — OTA 1.4.281 prodda
  • Merge fix/sarlavha-fokus-ramkasi
  • fix(a11y): sarlavhadagi dastur fokusi ko'k ramka chizmasin (kirish ekrani, holat almashishi)
  • Merge feat/47-play-yangilash
  • feat(47): do'kon yangilanishi ilova ichida, 2 kundan keyin majburiy
  • style(backend): dictionary_service ruff format (pre-push)
  • Merge feat/42-shrift-haptika
  • feat(42): tizim shrifti 1,0–1,3, yagona haptika moduli, ekran o'quvchi
  • docs(55): 55-SPEC TAYYOR — 55.6j prodda, 17 922 maqola, MSA 85,92%, CA 85,37%; README, CLAUDE.md, avtonom yo'riqnoma yopildi
  • data(55.6j): audit 52 (0 jiddiy, 4 oddiy) + merge 517 → entries 18 020
  • data(55.6j): loan ko'rigi 353 → +10
  • data(55.6j): R (3) + H + apply
  • data(55.6j): 001-006 G (296) + S + review-sub
  • data(55.6j): 007-011 G (221) + S + review-sub
  • data(55.6j): saralash yakuni — 537 keep → 11 partiya; 19 900 qaror excluded ga; kitob navbati bo'sh
  • data(55.6): saralash 037-039 (keep 22/1500)
  • data(55.6): saralash 034-036 (keep 25/1500)
  • data(55.6): saralash 031-033 (keep 44/1500)
  • data(55.6): extra — avval rad etilgan نسبي، إلحاح olib tashlandi
  • data(55.6): saralash 028-030 (keep 36/1500); extra +4
  • data(55.6): saralash 022-024 (keep 58/1500); extra +5
  • data(55.6): saralash 025-027 (keep 49/1500); extra لكم
  • data(55.6): saralash 019-021 (keep 55/1500)
  • data(55.6): saralash 016-018 (keep 37/1500)
  • data(55.6): saralash 010-012 (keep 74/1500); توراة keep
  • data(55.6): saralash 013-015 (keep 29/1500)
  • data(55.6): saralash 007-009 (keep 75/1500)
  • data(55.6): saralash 004-006 (keep 32/1500)
  • data(55.6): saralash 001-003 (keep 74/1500)
  • data(55): 2-A — 51 fors-asl so'zda uzbek_loan false (prodda); g-extra qoidasi; jurnal
  • chore(55): 1-C — faqat-kitob saralash: skript filtri (2 065 olmoshli shakl), 42 bo'lak, triage prompti, lk55.py; 55.6j tayyorlovi bekor
  • data(55.6j): navbat 1000 (faqat-kitob) → 20 partiya
  • docs(55): 55.6i jurnali — prodda 17 405; keyingisi 55.6j
  • data(55.6i): audit 52 (0 jiddiy, 4 oddiy) + merge 317 → entries 17 503
  • data(55.6i): loan ko'rigi 273 → +3
  • data(55.6i): R (1) + H + apply
  • data(55.6i): 011-015 G (71) + S + review-sub
  • data(55.6i): 016-020 G (20) + S + review-sub
  • data(55.6i): 001-005 G (128) + S + review-sub
  • data(55.6i): 006-010 G (98) + S + review-sub
  • data(55.6i): navbat 1000 (faqat-kitob) → 20 partiya
  • docs(55): 55.6h jurnali — prodda 17 088; keyingisi 55.6i
  • data(55.6h): audit 52 (1 jiddiy: shadda; 3 oddiy) + merge 315 → entries 17 186
  • data(55.6h): loan ko'rigi 275 → +9
  • data(55.6h): 016-020 R (1) + H + apply
  • data(55.6h): 016-020 G (66) + S + review-sub
  • data(55.6h): 001-015 R (3) + H + apply
  • data(55.6h): 011-015 G (80) + S + review-sub
  • data(55.6h): 006-010 G (95) + S + review-sub
  • data(55.6h): 001-005 G (74) + S + review-sub
  • data(55.6h): navbat 1000 (faqat-kitob) → 20 partiya
  • docs(55): 55.6g jurnali — prodda 16 773; keyingisi 55.6h
  • data(55.6g): audit 52 (0 jiddiy, 6 oddiy) + merge 377 → entries 16 871
  • data(55.6g): loan ko'rigi 303 → +17
  • data(55.6g): R (2) + H + apply
  • data(55.6g): yana 5 fe'l (تَحَالَفَ…) maqola
  • data(55.6g): teskari masdar qoidasi bilan rad etilgan 8 fe'l maqola qilindi (لَانَ، حَسَدَ، اِلْتَهَبَ…)
  • chore(55): g-extra — masdar qoidasi bir tomonlama
  • data(55.6g): 006-010 G (112) + S + review-sub
  • data(55.6g): 016-020 G (39) + S + review-sub
  • data(55.6g): 012 translit noqis
  • data(55.6g): 011-015 G (82) + S + review-sub
  • data(55.6g): 001-005 G (132) + S + review-sub
  • data(55.6g): navbat 1000 (faqat-kitob) → 20 partiya
  • docs(55): 55.6f jurnali — prodda 16 396, korpusdagi kitob so'zlari tugadi; o'qish havolasi +2
  • data(55.6f): audit 52 (0 jiddiy, 1 oddiy) + merge 829 → entries 16 494
  • data(55.6f): loan ko'rigi 707 → +12
  • data(55.6f): 016-020 R (3) + H + apply
  • data(55.6f): 016-020 G (189) + S + review-sub
  • data(55.6f): 001-015 R (4) + H + apply
  • data(55.6f): 011-015 G (217) + S + review-sub
  • data(55.6f): 001-005 G (224) + S + review-sub
  • data(55.6f): 006-010 G (199) + S + review-sub
  • data(55.6f): navbat 1000 → 20 partiya
  • data(55): ض translit 15 ta 55.x yozuvda z → d (prodda)
  • docs(55): 55.6e jurnali — prodda 15 567; keyingisi 55.6f
  • data(55.6e): audit 52 (0 jiddiy, 1 oddiy) + merge 882 (ichki takror 2 olib tashlandi) → entries 15 665
  • data(55.6e): loan ko'rigi 714 → +16
  • data(55.6e): 016-020 R (1) + H + apply
  • data(55.6e): 016-020 G (221) + S; 001-015 R (3) + H + apply; ض translit → d (5)
  • data(55.6e): 011-015 G (215) + S + review-sub
  • data(55.6e): 006-010 G (220) + S + review-sub
  • data(55.6e): 001-005 G (228) + S + review-sub
  • data(55.6e): navbat 1000 → 20 partiya
  • docs(55): avtonom yo'riqnoma G qadami tozalandi
  • docs(55): 55.6d jurnali — prodda 14 685; g-extra-55.6.txt; keyingisi 55.6e
  • data(55.6d): audit 52 (1 jiddiy: odobsiz omograf ko'plik → null) + merge 827 → entries 14 783
  • data(55.6d): loan ko'rigi 694 → +20
  • data(55.6d): 011-015 R (0) + H + apply
  • data(55.6d): 011-015 G (223) + S; مومس، عهر noise
  • data(55.6d): R (4) + H + apply 15 partiya
  • data(55.6d): 016-020 G (197) + S; طاسة form
  • data(55.6d): 006-010 G (203) + S + review-sub
  • data(55.6d): 001-005 G (206) + S; لوطي noise
  • data(55.6d): navbat 1000 → 20 partiya
  • docs(55): 55.6c jurnali — prodda 13 858, MSA 85,83%, CA 85,21%; keyingisi 55.6d
  • data(55.6c): audit 52 (0 jiddiy, 4 oddiy) + kitobiy loan 7 → false + merge 902 → entries 13 956
  • data(55.6c): R 016-020 + H + apply; loan ko'rigi 668 → +2
  • data(55.6c): 016-020 G (215) + S; 001-015 R (6) + H + apply
  • data(55.6c): 011-015 G (240) + S toza + review-sub
  • docs(55): sub-agent chegarasi 2 ta (Muhammad 2026-10-17)
  • data(55.6c): 006-010 G (218) + S toza + review-sub
  • data(55.6c): 001-005 G (229) + S toza + review-sub
  • data(55.6c): navbat 1000 → 20 partiya
  • docs(55): 55.6b jurnali — prodda 12 956, MSA 85,79%, CA 85,07%; keyingisi 55.6c
  • data(55.6b): audit 52 (0 jiddiy, 3 oddiy tuzatildi) + merge 940 → entries 13 054
  • data(55.6b): loan ko'rigi 611 → +7
  • data(55.6b): R (9) + H qo'lda + apply — 940 maqola; قحبة noise
  • data(55.6b): 016-020 G (232) + S toza + review-sub
  • data(55.6b): 011-015 G (245) + S toza + review-sub
  • data(55.6b): 006-010 G (231) + S toza + review-sub
  • data(55.6b): 001-005 G (240, 11 rad) + S toza + review-sub; to'xtash nuqtasi 55-avtonom-davom.md da
  • docs(55): avtonom «davom et» yo'riqnomasi (55-avtonom-davom.md) + CLAUDE.md kirish qoidasi
  • data(55.6b): navbat 1000 (o'rin 10 592–13 677) → 20 partiya; queue55: qayta rad etilgan diniy yopiq qoladi
  • chore(55): G prompt shabloni bosqichga bog'liq emas ({STAGE})
  • docs(55): 55.6a jurnali — prodda 12 016, CA qamrovi 84,9%; dict_coverage diniyni hisoblaydi
  • data(55.6a): 973 maqola entries.jsonl ga (diniy guruh + kitob); audit 52 (0 jiddiy, 4 oddiy); nisba translit -iy (35); الْحَاقَّةُ ichki takrori; darvoza 0
  • data(55.6a): 016-020 G (248) + S + R (2) + qo'lda H; 20 partiya judged — 974 maqola
  • data(55.6a): 001-015 yengil R (9) + qo'lda H + apply — 727 maqola
  • data(55.6a): 001-010 G (485, 19 rad; diniy guruh) + S (izohda arabcha, ة translit tuzatildi); review-sub
  • data(55.6a): navbat 1000 (diniy 591 boshida) → 20 partiya; G prompt shabloni repoga
  • fix(55): G yo'riqnomasi — uzbek_loan ildizdosh so'z misollari (55.5e auditi sinfi)
  • docs(55): 55.5e jurnali — prodda 11 043, qamrov 84,5%
  • data(55.5e): 871 maqola entries.jsonl ga; audit 52 (0 jiddiy, 9 oddiy — hammasi uzbek_loan); 715 lik loan qayta ko'rigi (+103); darvoza 0 xato
  • data(55.5e): 016-020 G (214) + S + qo'lda R/H; 20 partiya judged — 871 maqola
  • data(55.5e): 001-015 yengil R (11) + qo'lda H (35: 12 tasdiq) + apply — 659 maqola
  • data(55.5e): partiya 011-015 — G (228, 23 rad; diniy endi maqola) + S; 001-010 fe'llarda o'zbekcha ildizdosh (25)
  • data(55.5e): partiya 001-010 — G (437, 78 rad) + S; review-sub
  • feat(55): lug'atda diniy so'z ruxsat (Muhammad qarori) — qo'riqchi faqat siyosiy, G/R/H/audit promptlari, diniy rad etilganlar 55.6 navbatining boshiga
  • docs(55): 55.6 kitob so'zlari — Wasit + Muxtor as-Sihoh bosh so'zlari muzlatildi, kitob55.py navbati
  • docs(55): 55.5d o'qish havolasi o'zgarmadi
  • docs(55): 55.5d jurnali — prodda 10 172, qamrov 84,3%
  • data(55.5d): 878 maqola entries.jsonl ga; audit 52 (0 jiddiy, 3 oddiy, 2 qo'llandi); darvoza 0 xato qo'riqchi: noqis ism translitida -i (18 tuzatildi), test
  • data(55.5d): 001-015 yengil R (7 topilma) + qo'lda H (30: 9 tasdiq, 6 rad) + apply
  • data(55.5d): partiya 011-015 — G (206, 48 rad) + S; ig'tirab; review-sub. Sessiya oxiri: 016-020 G boshlanmagan
  • data(55.5d): partiya 001-005 — G (241, 13 rad) + S; الشَّيْخ → الْعَجُوز; review-sub
  • data(55.5d): partiya 006-010 — G (216, 36 rad) + S toza; review-sub
  • data(55.5d): 1 000 nomzod, 20 partiya
  • docs(55): 55.5c jurnali — prodda 9 294, qamrov 84,1%
  • data(55.5c): 909 maqola entries.jsonl ga; darvoza 0 xato
  • data(55.5c): audit 52 (0 jiddiy, 9 oddiy; 8 qo'llandi)
  • data(55.5c): R (4) va H qo'lda — 3 «o'zbekchada bor», غِبٌّ hadis iborasi misoldan olindi, 17 rad
  • data(55.5c): 011-015 — R/H qo'lda (6 shubhali maqola, hammasi to'g'ri)
  • data(55.5c): partiya 011-015 — G (230, 24 rad) + S; مُعْدٍ takror rad; muhaba; qo'riqchi: لَجْنَة ≠ جنة (test)
  • data(55.5c): partiya 016-020 — G (233, 27 rad) + S; qo'riqchi: ma'nosi boshqa omograf (نَامُوسٌ) hakamga
  • data(55.5c): partiya 006-010 — G (221, 32 rad) + S; qo'riqchi: «suratga/suradi/hajmi» soxta topilmasi tuzatildi (test)
  • data(55.5c): partiya 001-005 — G (226, 29 rad) + S toza; review-sub
  • feat(55.5c): noqis ism izohi batch55 prepare ichida; 55.5c 1 000 nomzod (o'rin 6 652–7 775), 20 partiya
  • docs(55): 55.5b jurnali — prodda 8 385, qamrov 83,6%
  • data(55.5b): 931 maqola entries.jsonl ga; darvoza 0 xato
  • data(55.5b): audit 53 (0 jiddiy, 3 haqiqiy oddiy: tanvin translit 2, أَعْجَمُ ma'nosi); audit rubrikasi — 6–10 ming o'rinda B2 ham C1 ham to'g'ri
  • data(55.5b): R 017-020 (1), H 017-020 qo'lda (7 rad)
  • data(55.5b): partiya 017-020 — G (190, 15 rad) + S toza; review-sub
  • data(55.5b): H 001-016 qo'llandi
  • data(55.5b): yengil R 001-016 (8), judge-in
  • data(55.5b): partiya 013-016 — G (176, 30 rad) + S; muhama translit
  • data(55.5b): partiya 009-012 — G (187, 19 rad) + S; 2 misol neytral
  • data(55.5b): partiya 005-008 — G (198, 10 rad) + S toza; review-sub
  • data(55.5b): 002 misol neytral (مَالِك); review-sub 001-004
  • data(55.5b): partiya 001-004 — G (180, 24 rad) + S; الْأَمِيرُ → الْمَلِكُ; review-sub
  • data(55.5b): 1 000 nomzod (o'rin 5 411–6 650), 20 partiya; noqis ism izohlari
  • docs(55): 55.5a jurnali — prodda 7 454, qamrov 82,9%; o'qish havolasi mavjudini saqlaydi; aliaslar
  • data(55.5a): 948 maqola entries.jsonl ga; darvoza 0 xato
  • data(55.5a): audit 53 (0 jiddiy, 9 oddiy) qo'llandi; مَيْسِرٌ rad (diniy ibora)
  • data(55.5a): H 010-013, 018-020 qo'llandi
  • data(55.5a): H 014-017 qo'llandi
  • data(55.5a): yengil R 014-017 (18), judge-in
  • data(55.5a): yengil R 010-013, 018-020 (15), judge-in
  • data(55.5a): partiya 014-017 — G (185, 20 rad) + S; ig'tisab translit; review-sub
  • data(55.5a): partiya 018-020 — G (147, 12 rad) + S toza; review-sub
  • data(55.5a): partiya 010-013 — G (198, 24 rad) + S; عُمْرَهُ soxta topilma → حَيَاتَهُ; review-sub
  • data(55.5a): H 001-009 (17 tasdiq, 41 rad) qo'llandi
  • data(55.5a): yengil R 001-009 (16 oddiy), judge-in
  • feat(55.5): yengil R (review-sub) — Muhammad «A + B»: maqsad 1–3-qatlam, R faqat shubhalilarga
  • data(55.5a): partiya 007-009 — G (140, 13 rad) + S; noqis ism takrorlari (وَافٍ، مُسْتَوٍ، مُنْتَهٍ) rad; 010-020 ga ي li yozuv izohi
  • data(55.5a): partiya 001-003 — G (134, 28 rad) + S toza
  • data(55.5a): partiya 004-006 — G (145, 11 rad) + S; مُوَازٍ takrori rad
  • feat(55.5): queue55.py — tartib navbatidan yangi lemmalar; ال takror qo'riqchisi; harakatsiz nomzod shakl bilan adashsa chiqarilmaydi (G ga izoh); 55.5a 1 000 nomzod, 20 partiya
  • chore(55): knip — audit skrinshot skripti entry
  • chore(55): audit skrinshot skripti scripts/dict/audit/ ga (e2e dan ko'chdi), README
  • docs(55): 55.4 jurnali — prodda 6 506, qamrov 81,0%; hafta kunlari takrori yashirildi, aliaslar; README
  • data(55.4): 517 maqola entries.jsonl ga; darvoza: verify 0 xato, kalit to'qnashuvi 0
  • data(55.4): audit 33 (0 jiddiy, 4 oddiy) — xato sinfi: chet so'zga soxta ildiz; 15 ta root null, mi'atan; rubrika va G promptiga qoida
  • data(55.4): qayta R 007-011 (2 oddiy) qo'llandi — لَوْحِيٌّ misol, زَنْبَقٌ «zambaq»
  • data(55.4): H 007-011 (42 tasdiq, 14 rad) qo'llandi; qayta R kirishi
  • data(55.4): qayta R 001-006 (5 oddiy) qo'llandi
  • data(55.4): H 001-006 qo'llandi (37 tuzatish), qayta R kirishi
  • data(55.4): H 001-006 (37 tasdiq, 15 rad)
  • data(55.4): judge-in tayyor (77 tanqid + 31 savol)
  • data(55.4): R 010-011 (20 tanqid); R tugadi
  • data(55.4): R 007-009 (17 tanqid)
  • data(55.4): R 004-006 (9 tanqid)
  • data(55.4): R 001-003 (31 tanqid)
  • data(55.4): partiya 010-011 — G (83) + S toza; G tugadi (520 maqola)
  • data(55.4): partiya 007-009 — G (145, 5 rad) + S; «suratga» qo'riqchi soxta topilmasi → «rasmga»
  • data(55.4): partiya 004-006 — G (148, 2 rad) + S; 4 translit ة → -a qo'lda (miqla, misfa, mikva, fursha)
  • data(55.4): partiya 002-003 — G (100) + S (hakamga 3 savol)
  • data(55.4): partiya 001 — G (44, 6 rad) + S toza
  • data(55.4): «kam» birikmalar tahlili — 10 qism so'z nomzodga; 11 partiya (533); 4 noto'g'ri «shakl» qaytarildi (خَالَةٌ، فُطُورٌ، صِينِيَّةٌ، مُوَاصَلَاتٌ)
  • data(55.4): mavzu ro'yxati (1 667 so'z, 34 mavzu) va filtr — 1 033 bor, 527 yangi nomzod, 107 «kam» (ko'pi ikki so'zli birikma)
  • feat(55.4): mavzu_freq.py — kundalik mavzu so'zlari lug'atda bormi va MSA ≥0,1/mln filtri
  • docs(55): 55.3 jurnali — prodda, kontent havolasi 263 → 51, README
  • data(55.3): kontent audit (0 jiddiy, 1 oddiy) — مَحْذُورٌ «hazar»; o'qish havolalari qayta yig'ildi
  • data(55.3): kontent 109 maqola entries.jsonl ga (H: 4 tasdiq, 4 rad)
  • data(55.3): kontent R (4 tanqid)
  • data(55.3): kontent 007 — G (9) + S
  • data(55.3): kontent 005-006 — G (100) + S toza
  • data(55.3): audit (0 jiddiy, 1 oddiy) — بُعَيْدَ «ba'd»
  • data(55.3): kontent saralash — 109 nomzod (88 so'z + 20 grammatika atamasi + مَقُولٌ), 3 partiya; 54 alias (kontentdagi shakllar)
  • data(55.3): 153 o'quv so'zi entries.jsonl ga; gate 0 xato
  • data(55.3): H qo'llandi (22 tasdiq, 6 rad); ساءَ shakli «suiiste'mol»
  • docs(55): rubrika — gap ichida vasl alifiga harakat (55.3 ko'rigi)
  • data(55.3): R 003-004, judge-in
  • data(55.3): R 001-002 (15 tanqid, 0 jiddiy)
  • fix(55): حَرَى va حَبَّذَا jomid fe'llar ro'yxatiga; 55.3/003 S toza
  • data(55.3): partiya 003-004 — G (56 maqola, 3 rad) + S
  • data(55.3): partiya 002 — G (50) + S
  • data(55.3): partiya 001 — G (50) + S toza
  • data(55.3): o'quv so'zlari nomzodlari — 159 (sarf 64, ism vaznlari 39, nahv 66), 4 partiya; qo'riqchi unli farqini ham ko'radi (نِعْمَ ≠ نِعَم)
  • docs(55): 55.2 jurnali — prodda, o'qish havolasi 99,6%, README
  • fix(o'qish): havola — o'z maqolasi masdar/ko'plikdan ustun, harakat moslik bali, vasl alifi, yasalgan muzore faqat fe'lga; load_texts harakatli lemma bilan aniq bog'laydi
  • fix(55): guards55.norm backend normalize_arabic bilan bir xil (ئ→ي, ؤ→و); لَئِنْ/كَأَيِّنْ keyingi sense_index ga
  • data(55.2): 112 maqola entries.jsonl ga (3 partiya), o'qish matnlari havolasi 99,6%
  • data(55.2): partiya 003 — G (36) + S toza
  • data(55.2): G/R/H 001-002 merge (76 maqola); 3-partiya (o'qish matnlarida yo'q 36 so'z); aliaslar (لِـ/بِـ shakllari, ko'pliklar); qo'riqchi — harakatli nomzod shadda bilan farqlansa chiqarilmaydi; o'qish havolasi muzore yengilligi; 3 matnda harakat xatosi
  • fix(55): qo'riqchi — bitta so'zning ikki imlosi (translit va ma'no bir xil) hakamga; 55.2 R natijalari
  • fix(o'qish): bosilgan so'z havolasi harakat bo'yicha — har shaklga barcha maqolalar, matn harakatiga mos keladigani
  • data(55.2): partiya 002 — G (25 maqola) + S toza
  • data(55.2): partiya 001 — G (52 maqola) + S toza
  • data(55.2): nomzodlar — 74 yordamchi so'z (harf, olmosh, bog'lovchi, ravish), 2 partiya
  • docs(55): 55.1 prodda — zaxira, load_pg, OTA 1.4.280; README jadvallari
  • data(55.1): alias ثلاثاء → الثلاثاء (hafta kuni ال bilan yozilgan)
  • Merge remote-tracking branch 'origin/main' into feat/55-lugat-kengaytirish
  • docs(55): 55.1 jurnali — natija, darvoza, narx, chetlashishlar
  • data(55.1): qayta audit (0 jiddiy, 2 haqiqiy oddiy) tuzatildi — خَفَّ «xiffa» havolasi, سَبَّ misoli neytral
  • docs(55): rubrika — «o'zbekchada bor» ma'no bog'liqligi sharti (55.1 hakami ildizdosh-ma'nosiz havola bergan)
  • data(55.1): butun to'plam qayta R (19) → H (15 tasdiq) qo'llandi; «o'zbekchada bor» ma'no bog'liq bo'lmagan 5 ildiz havolasi olib tashlandi
  • docs(55): rubrika — misolda diniy ibora va son–sanalmish moslashuvi (55.1 qayta ko'rigi topdi)
  • fix(lug'at): keng harfli ildiz (س ش ص ض) maqola diskidan chiqmasin — ingichka bo'shliq + 10px (55.1 auditi)
  • fix(55): qo'riqchi — misolda Qur'on/hadis iborasi (55.1 auditi: بر الوالدين); butun to'plam qayta R kirishi
  • data(55.1): 109 maqola entries.jsonl ga (2 partiya, G→S→R→H→qayta R); darvoza skriptlari 0 xato
  • data(55.1): 002 H (15 tasdiq) + 001 qayta H qo'llandi
  • fix(55): G yo'riqnomasi — yevropa so'zi «o'zbekchada bor» emas (Muhammad mezoni 2026-10-10); 002 R + 001 qayta R
  • data(55.1): partiya 001 — R (10 tanqid) + H (8 tasdiq, 13 rad) qo'llandi
  • data(55.1): partiya 002 — G (40 maqola, 2 rad) + S toza
  • data(55.1): partiya 001 — G (69 maqola) + S toza; أَمَام/إِمَام qo'riqchi soxta topilmasi tuzatildi
  • feat(55): «Yangi so'zlar» — added_at, browse?new, new_count; bosh ekranda karta, ro'yxat sahifasi, «Yangi qo'shilgan» belgisi
  • data(55.1): nomzodlar — 73 qisqa lemma (T1) + 13-spec/hafta kunlari + qidiruv topilmalari, 2 partiya
  • docs(55): manba qatori prodda, 55.1 ga o'tish qarori
  • feat(55): CAMeL manba qatori — Yordam sahifasi va Lug'at bosh ekrani (CC BY-SA 4.0)
  • data(55.0): 8 tirik yetim yozuv prod'dan JSONL'ga qaytarildi
  • docs(55): 4-qatlam qarori — 20 000 gacha ball tartibida (Muhammad, A)
  • data(55.0): muzlatilgan tartib ranking.jsonl.gz + qatlam sanoqlari jurnalga
  • data(55.0): lemmatizatsiya 0419-0420 — barcha 421 paket tayyor
  • data(55.0): lemmatizatsiya 0415-0418
  • data(55.0): lemmatizatsiya 0411-0414
  • data(55.0): lemmatizatsiya 0407-0410
  • data(55.0): lemmatizatsiya 0403-0406
  • data(55.0): lemmatizatsiya 0399-0402
  • data(55.0): lemmatizatsiya 0395-0398
  • data(55.0): lemmatizatsiya 0391-0394
  • data(55.0): lemmatizatsiya 0387-0390
  • data(55.0): lemmatizatsiya 0383-0386
  • data(55.0): lemmatizatsiya 0379-0382
  • data(55.0): lemmatizatsiya 0375-0378
  • data(55.0): lemmatizatsiya 0371-0374
  • data(55.0): lemmatizatsiya 0367-0370
  • data(55.0): lemmatizatsiya 0363-0366
  • data(55.0): lemmatizatsiya 0359-0362
  • data(55.0): lemmatizatsiya 0355-0358
  • data(55.0): lemmatizatsiya 0351-0354
  • data(55.0): lemmatizatsiya 0347-0350
  • data(55.0): lemmatizatsiya 0343-0346
  • data(55.0): lemmatizatsiya 0339-0342
  • data(55.0): lemmatizatsiya 0335-0338
  • data(55.0): lemmatizatsiya 0331-0334
  • data(55.0): lemmatizatsiya 0327-0330
  • data(55.0): lemmatizatsiya 0323-0326
  • data(55.0): lemmatizatsiya 0319-0322
  • data(55.0): lemmatizatsiya 0315-0318
  • data(55.0): lemmatizatsiya 0311-0314
  • data(55.0): lemmatizatsiya 0307-0310
  • data(55.0): lemmatizatsiya 0303-0306
  • data(55.0): lemmatizatsiya 0299-0302
  • data(55.0): lemmatizatsiya 0295-0298
  • data(55.0): lemmatizatsiya 0291-0294
  • data(55.0): lemmatizatsiya 0287-0290
  • data(55.0): lemmatizatsiya 0283-0286
  • data(55.0): lemmatizatsiya 0279-0282
  • data(55.0): lemmatizatsiya 0275-0278
  • data(55.0): lemmatizatsiya 0271-0274
  • data(55.0): lemmatizatsiya 0267-0270
  • data(55.0): lemmatizatsiya 0263-0266
  • data(55.0): lemmatizatsiya 0259-0262
  • data(55.0): lemmatizatsiya 0255-0258
  • data(55.0): lemmatizatsiya 0251-0254
  • data(55.0): lemmatizatsiya 0244-0250
  • data(55.0): lemmatizatsiya 0240-0243
  • data(55.0): lemmatizatsiya 0236-0239
  • data(55.0): lemmatizatsiya 0232-0235
  • data(55.0): lemmatizatsiya 0228-0231
  • data(55.0): lemmatizatsiya 0224-0227
  • data(55.0): lemmatizatsiya 0220-0223
  • data(55.0): lemmatizatsiya 0216-0219
  • data(55.0): lemmatizatsiya 0212-0215
  • data(55.0): lemmatizatsiya 0208-0211
  • data(55.0): lemmatizatsiya 0204-0207
  • data(55.0): lemmatizatsiya 0200-0203
  • data(55.0): lemmatizatsiya 0196-0199
  • data(55.0): lemmatizatsiya 0192-0195
  • data(55.0): lemmatizatsiya 0188-0191
  • data(55.0): lemmatizatsiya 0184-0187
  • data(55.0): lemmatizatsiya 0180-0183
  • data(55.0): lemmatizatsiya 0176-0179
  • data(55.0): lemmatizatsiya 0172-0175
  • data(55.0): lemmatizatsiya 0168-0171
  • data(55.0): lemmatizatsiya 0164-0167
  • data(55.0): lemmatizatsiya 0160-0163
  • data(55.0): lemmatizatsiya 0156-0159
  • data(55.0): lemmatizatsiya 0152-0155
  • data(55.0): lemmatizatsiya 0148-0151
  • data(55.0): lemmatizatsiya 0144-0147
  • data(55.0): lemmatizatsiya 0140-0143
  • data(55.0): lemmatizatsiya 0136-0139
  • data(55.0): lemmatizatsiya 0132-0135
  • data(55.0): lemmatizatsiya 0128-0131; shovqin lemmasida uzunlik chegarasi yo'q
  • data(55.0): lemmatizatsiya 0124-0127
  • data(55.0): lemmatizatsiya 0120-0123
  • docs(55): sub-agent chegarasi 1 → 2 (Muhammad)
  • data(55.0): lemmatizatsiya 0116-0119
  • data(55.0): lemmatizatsiya 0112-0115
  • data(55.0): lemmatizatsiya 0108-0111
  • data(55.0): lemmatizatsiya 0104-0107
  • docs(55): sub-agent chegarasi 2 → 1 (Muhammad)
  • data(55.0): lemmatizatsiya 0100-0103
  • data(55.0): lemmatizatsiya 0096-0099
  • data(55.0): lemmatizatsiya 0092-0095
  • data(55.0): lemmatizatsiya 0088-0091
  • data(55.0): lemmatizatsiya 0084-0087
  • data(55.0): lemmatizatsiya 0080-0083
  • data(55.0): lemmatizatsiya 0076-0079; ism/ibora lemmasida bo'sh joy
  • data(55.0): lemmatizatsiya 0072-0075
  • docs(55): parallel sub-agent chegarasi 3 → 2 (Muhammad)
  • data(55.0): lemmatizatsiya 0064-0067
  • data(55.0): lemmatizatsiya 0068-0071
  • data(55.0): lemmatizatsiya 0060-0063
  • data(55.0): lemmatizatsiya 0056-0059
  • data(55.0): lemmatizatsiya 0052-0055
  • data(55.0): lemmatizatsiya 0048-0051
  • data(55.0): lemmatizatsiya 0040-0043
  • data(55.0): lemmatizatsiya 0044-0047
  • data(55.0): lemmatizatsiya 0036-0039; shovqin lemmasiga uzunlik chegarasi qo'llanmaydi
  • data(55.0): lemmatizatsiya 0032-0035
  • data(55.0): lemmatizatsiya 0028-0031
  • data(55.0): lemmatizatsiya 0024-0027
  • data(55.0): lemmatizatsiya 0016-0019
  • data(55.0): lemmatizatsiya 0010-0012, 0020-0023
  • data(55.0): oquv-manba.jsonl — 359 o'quv so'zi (sarf, ism vaznlari, nahv guruhlari)
  • docs(55.0): scripts/dict/README — 55 quvuri (Opus agentlar, --plan, zaxira, hisob daftari)
  • docs(55.0): jurnal — takror tozalash, zaxira/tiklash sinovi, lemmatizatsiya narxi, oflayn qidiruv o'lchovi
  • docs(55.0): CAMeL manbalari va sha256
  • data(55.0): lemmatizatsiya 0007-0009, 0013-0015
  • feat(55.0): content_links.py — ilova kontentidagi bog'lanmagan arabcha so'zlar (313 shakl)
  • feat(55.0): agent yo'riqnomalari (build.py → generate/review/judge/audit.md) va batch55.py zanjiri
  • fix(55.0): prodda ikki marta ko'ringan 14 takror yashirildi (kartochkasiz, havolasiz), 4 alias
  • feat(55.0): guards55 (takror, daraja, taqiqli misol, kalit) testlari bilan; lemmatizatsiya 0000-0006
  • feat(55.0): dict_coverage.py — Opus lemmatizatsiyasi bo'yicha matn qamrovi, testi bilan
  • style(55.0): restore_dict ruff
  • feat(55.0): zaxira va o'chirmasdan tiklash, takrorlar tozalandi, qo'riqchi testlari
  • feat(55.0): chuqur havza, guruhlash, lemmatizatsiya agenti, load_pg --plan va himoyalar
  • docs(55): Gemma olib tashlandi — lemmatizatsiya ham Opus sub-agentlarda (Muhammad qarori)
  • docs(reja): 55 navbatda birinchi — Muhammad qarori
  • docs(55): qamrov o'lchov skriptlari saqlandi
  • docs(55): «uzun ismlar» ma'nosi aniqlashtirildi
  • docs(55): spec pardozi — o'quv so'zlari (sarf-nahv), muzlatilgan tartib, sinov darvozasi, orqaga qaytarish, oflayn tezlik, litsenziya
  • docs(55): lug'atni kengaytirish spec'i — kamida 20 000 lemma, kenglik qatlamlari, takror va ma'lumot himoyasi
  • Merge fix/orqaga-tugmalar: orqaga/chiqish/yopish tugmalari auditi va tuzatishlar
  • test(e2e): tab steklari — faqat havoladan ochilgan ro'yxat So'z boyligiga qaytadi
  • Merge main into fix/orqaga-tugmalar
  • fix: orqaga/chiqish/yopish tugmalari — audit topilmalari tuzatildi
  • docs(reja): insho qayta qurildi — OTA 1.4.277, migratsiya 052
  • chore(knip): insho kontenti ekran auditi (scripts/topics) — CLI kirish nuqtalari
  • Merge feat/53-insho: insho qayta qurildi (53.1 → 53.2 → 53.3)
  • docs(reja): 53 tayyor — kod main'ga, yetkazish oxirgi tasdiqdan keyin; 54 (insho 2-bosqich) navbatga
  • docs(53): jurnal — kontent 120/120, o'qitish simulyatsiyasi triaji
  • feat(53.3): o'qitish simulyatsiyasi tuzatishlari — so'z shakllari, namunada bosiladigan so'z, oddiy ishora
  • feat(53.3): 120 insho mavzusiga foydali so'zlar va namuna insho; varaq uchun shakllar
  • fix(53.3): verify_content — o'zbekcha -dir/-dek qo'shimchalari (iymondandir); haj+mi soxta emas
  • fix(53.3): verify_content — misollarda jang/iymon/harbiy kabi so'zlar ham ogohlantiradi
  • fix(53.3): verify_content — taqiqli so'z qo'shimchasi bilan ham (namozga, الصَّلَاةِ)
  • fix(53.2): tuzatish yakuni — «edi → bo'ldi» qatori flex bilan (bidi probel yutilardi)
  • docs(audit): orqaga/chiqish/yopish tugmalari auditi — 46 topilma, sinovlar
  • feat(53.3): verify_content — chip so'zining lug'at misoli taqiqli bo'lsa ogohlantirish
  • docs(53.3): CONTENT.md — قَرَأَ istisno (o'qimoq uchun muqobil yo'q)
  • feat(53.3): verify_content — biror ma'nosi diniy bo'lgan foydali so'zga ogohlantirish
  • docs(53): jurnal — Android/iOS qurilma sinovi, to'liq e2e, kontent holati
  • test(53): Android emulyatorida insho — chiplar surilishi, varaq, klaviatura tasmasi, namuna
  • test(53): e2e — reja qadami mavzu nomi bilan, insho mavzusi «Almashtirish» orqali; AI tekshiruvi Luna'da
  • docs(53): jurnal — 53.3 ilova va kontent quvuri; hakam brifi
  • feat(53.3): kontent quvuri asboblari va doimiy e2e
  • feat(53.3): foydali so'zlar va namuna insho — ilova
  • docs(53): jurnal — 53.2, UX tekshiruvi triaji, 53.3 holati va qolgan ishlar
  • wip(53.3): foydali so'z varag'i, namuna shakllari, so'z lug'atga aniq lemma bilan
  • feat(53.3): server — mavzu foydali so'zlari va namuna insho (migratsiya 052)
  • fix(53): mustaqil UX tekshiruvi topilmalari
  • feat(53.2): «Xatolarni o'zing tuzat» — AI'siz tuzatish mashqi
  • docs(53): benchmark va prod o'lchovi natijalari; insho darajasi benchmark skripti
  • feat(53.1): server — bugungi mavzu, mavzu bazadan, so'z chegarasi, AI'ga daraja va savollar
  • feat(53.1): insho yozish ekrani qayta — bugungi mavzu, savollar, so'z talabi, sokin natija va tarix
  • docs(reja): 53 — insho qayta qurilishi spec'i (tayyor-spec)
  • docs(reja): xabarlar (toast) — OTA 1.4.276
  • Merge feat/toast-qayta: xabarlar (toast) qayta yasaldi
  • docs(reja): tasdiqlash oynalari — OTA 1.4.275
  • Merge feat/tasdiq-oynasi: tasdiqlash oynalari bitta pastki varaqqa (ConfirmSheet)
  • feat(ui): tasdiqlash oynalari qayta yasaldi — bitta pastki varaq (ConfirmSheet)
  • docs(reja): xabarlar (toast) qayta yasaldi — qator va skrinshot
  • feat(toast): burchak 20, ichki ikonka kvadrati 12
  • feat(toast): ixchamroq — 64 → 52 pt, ikonka 32 px, yozuv 14/600
  • feat(toast): karta shakli, telefonda markazda; × va color-mix olib tashlandi
  • docs(reja): kirish ekranlari — OTA 1.4.274
  • Merge feat/login-qayta: kirish ekranlari qayta yasaldi + 52-spec reja
  • docs(reja): 52 — kirishsiz sinov (Apple HIG «kirishni kechiktiring») reja sifatida; kirish ekranlari qatori
  • Merge main into feat/login-qayta
  • Merge feat/profil-qayta: Profil v3 + yutuqlar butunlay olib tashlandi
  • feat(db): 051 — user_achievements jadvali o'chiriladi (yutuqlar olib tashlandi)
  • feat: yutuqlar (achievements) butunlay olib tashlandi — XP va streak qoldi
  • feat(login): kirish ekranlari qayta yasaldi — ilova uslubi, bitta ekran, UX auditi
  • feat(profil-v3): Profil qayta yasaldi — daraja kartasi, natijalar, 30 kunlik faollik; sozlamalar sahifa bo'ldi
  • chore(49): Mac App Store'ga yuborildi — skrinshot rejimi, ASC skrinshot yuklovchi, hujjatlar
  • Merge feat/49-macos: Mac App Store versiyasi (Mac Catalyst)
  • test(49): platform mock'iga isMac
  • docs(49): jurnal — lokal Mac'da ishlaydi; native reliz ro'yxatiga Mac bandi va capability ogohlantirishi
  • feat(49): Mac App Store paketi — Toshqondiy.app, ta'lim toifasi, release-mac.sh
  • chore(49): Mac sinov skriptlari — run-debug, profile (ASC API), shot, winid
  • feat(49): Mac'da video to'liq ekrani — oyna ham butun ekranga (YouTube kabi)
  • feat(49): Mac menyusi, Mac'ni aniqlash, alohida yangilanish chegarasi
  • wip(49): Mac Catalyst — haqiqiy Mac ilovasi lokal ishlaydi
  • docs(49-51): web va macOS alohida spec'larga — 49 macOS (tayyor-spec), 50 web (reja), 51 iPhone Duo (kutilmoqda)
  • docs(45): tayyor — vidjetlar main'da, piksel o'lchovi 136/136; native keyingi relizda (navbat 11)
  • feat(45.2): Android vidjetlari piksel darajasida — o'lcham katakdan, kunduz/tun
  • wip(45.2): Android vidjetlari — so'z kartochkasi va bugungi reja (RemoteViews)
  • chore(45): vidjet chizish va bo'sh joy o'lchovi vositasi (scripts/widget)
  • fix(45.1): vidjetlar piksel darajasida — bo'sh joy ≤19 pt, chegaradan chiqish yo'q
  • feat(45.1): iOS vidjetlari — so'z kartochkasi va bugungi reja
  • docs(44): tayyor — lending, backend, OTA 1.4.271; native keyingi relizda
  • feat(44): havola ilovada ochiladi — Universal/App Links, toshqondiy://, ikonka menyusi
  • docs(49): web va macOS'da chiqarish — spec (reja), navbat oxirida
  • docs(41): Android 55 production 100% — Google kirish pre-launch logi bilan tasdiqlandi
  • docs(41): reliz jurnali spec fayliga ko'chirildi
  • docs(41): reliz yuborildi — iOS 1.4 (19) App Review'da, Android 55 internal
  • docs(43): to'xtatildi — do'kon billing'i kerak emas, Click qoladi
  • docs(40): to'xtatildi — Muhammad «kerak emas 40»
  • docs(39): tayyor — OTA 1.4.270, Muhammad videoni tasdiqladi
  • Merge feat/39-navigatsiya-pardoz: navigatsiya pardozi (OTA video tasdig'idan keyin)
  • feat(39): navigatsiya pardozi — svayp fizikasi, fokus, varaqlar, kirishdan keyin qaytish, iPad
  • docs(38): tayyor — OTA 1.4.269, Muhammad videoni tasdiqladi
  • Merge feat/38-tab-steklari: 38.2–38.3 tab steklari (OTA tasdiqdan keyin)
  • feat(38.2–38.3): tab steklari — har tab o'z ichki sahifasini eslab qoladi
  • Merge feat/38-tab-steklari: 38.1 model va drop-in navigatsiya
  • feat(38.1): tab steklari modeli, drop-in navigatsiya va lint qoidasi
  • Merge feat/37-android-orqaga: Android tizim «orqaga»
  • feat(37): Android tizim «orqaga» — tablar, fonga chiqish, fokus oqimlari himoyasi
  • test(e2e): suhbat navbar testi telefon va planshet maketida alohida
  • Merge fix/seed-prompts-dublikat: seed_prompts qulfi o'z tranzaksiyasida
  • docs(41): jurnal, README holati, native reliz navbati (telefon ro'yxati)
  • fix(41): splash hozirgidek (#c2dfff, oq ط) — Muhammad A varianti; OTA sinoviga OTA_KEEP
  • feat(41): Capacitor 8.5.3, Capgo 8.52.1 va plaginlar — xavfsizlik relizi
  • fix(33): video chiziqda o'ynaganda karta progress chizig'i jonli yangilanadi
  • fix(33): qurilma tekshiruvi — PiP'dan qaytgach pleer siljishi, iOS fokus ramkasi; spec tayyor
  • docs(48): 48.0 prodda — OTA 1.4.264, migratsiya 050
  • feat(48): tezlik telemetriyasi — haqiqiy telefonlardan fps, hisobotda «Tezlik» bo'limi (48.0)
  • fix(lug'at): omograflar prod'da yo'qolardi — alohida sense_index; load_pg tuzatildi
  • Merge remote-tracking branch 'origin/main' into audit/lugat-tekshiruv
  • docs(lug'at): audit hisobotiga yakun bo'limi
  • fix(lug'at): qo'lda ko'rik — 97 holat hal qilindi
  • fix(alifbo): translit lug'at jadviga moslandi — s/x/z/g'/v (th/kh/dh/gh/w o'rniga)
  • fix(lug'at): translit و → v (o'zbek lotinida w yo'q) — 465 yozuv; risiwar → risifar
  • docs(lug'at): audit hisoboti — usul, mezon, ochiq masalalar, 97 qo'lda ko'rik
  • fix(lug'at): qolgan 13 ta «o'zbekchada bor» holati — begona so'z va kamsituvchi izoh
  • fix(lug'at): «o'zbekchada bor» (uzbek_loan) auditi — 1085 yozuv
  • test(e2e): eski 26 ta yiqilish tuzatildi — ilova emas, sinov muhiti
  • fix(lug'at): audit — ma'no, misol, ildiz, ko'plik, daraja tuzatishlari (330 yozuv, 389 maydon)
  • fix(lug'at): translit jadvalga tenglashtirildi — kh/gh/th/dh → x/g'/s/z (524 yozuv)
  • docs(36): OTA 1.4.262 — prodda (backend deploy bilan)
  • Merge branch 'main' into feat/36-aqlli-orqaga
  • feat(36): «aqlli orqaga» — ← va chiqish tugmalari haqiqatan orqaga qaytaradi
  • docs(audit): native qobiq (B yo'li) tadqiqoti — variantlar, tavsiya, qaror chegaralari
  • docs(48): telemetriya 34-spec trace-telemetry naqshiga tayanadi
  • Merge remote-tracking branch 'origin/main' into audit/navigatsiya
  • docs(48,40): Redmi Note 12 Pro'da 30 fps — real loglar, telemetriya, iPhone 11 va eski Android
  • docs(34): OTA 1.4.261 — prodda (migratsiya 049, admin «Harf chizish»)
  • Merge remote-tracking branch 'origin/main' into feat/34-chizish-mantiq
  • docs(48): tezlik va silliqlik auditi spec'i (A yo'li)
  • Merge remote-tracking branch 'origin/main' into feat/34-chizish-mantiq
  • fix(34): och yo'l va xotiradan yozishda xabar ko'rinmaydigan o'q va ko'k yo'lni tilga olmaydi
  • docs(audit): navigatsiya auditi sinovlari ma'lumotnoma sifatida saqlandi
  • test(34): so'zlar ro'yxati skrinshoti ichki aylantirish bilan
  • docs(41-47): native plaginlar tadqiqoti bo'yicha tuzatish spec'lari
  • docs(34): skrinshotlar yangilandi (to'liq rangli tayanch, nuqta halqalari)
  • docs(34): qo'l harakati Muhammad tasdiqladi (111 yo'l); review belgilari olib tashlandi; knip — ishlatilmagan eksport
  • Merge remote-tracking branch 'origin/main' into feat/34-chizish-mantiq
  • fix(34): tayanch harf to'liq rangda (tatvil choki yo'qoldi), yaqin nuqta halqalari kichrayadi; jurnal 34.2–34.6, skrinshotlar 34-15…22
  • docs: native plaginlar tadqiqoti; 37/39 spec'lariga NAV-1 va statusTap aniqligi
  • docs(36-40): navigatsiya auditi va tuzatish spec'lari
  • feat(34): Yozish mashqi — 72 harf shakli va 11 so'zni ulab yozish, zaif harflar rejada (34.5)
  • feat(34): chizish urinishlari backend'da — jadval 049, endpointlar, zaif harflar rejada, haftalik hisobot (34.5–34.6)
  • docs(34): eski yo'l xaritasi «oldin» nomi bilan; 34.1 eski skrinshotlari o'rniga yangilari
  • feat(34): qo'l harakati yo'llari, namoyish, baholash v2, qalam siyohi, takror zinapoyasi (34.2–34.5)
  • Merge fix/ios-tepa-soyasi: iOS soat ostidagi kulrang soya (keyingi native relizga)
  • fix(ios): soat ostidagi kulrang soya — iOS 26+ scroll edge effect o'chirildi
  • test(34): alifbo chizish e2e — barmoq qadami 12 → 4 (parallel yuklamada 30 s ga sig'masdi)
  • docs(35): OTA 1.4.260 — prodda
  • Merge remote-tracking branch 'origin/main' into feat/34-chizish-mantiq
  • Merge feat/35-bugungi-reja: «Bugungi reja» kartasi qaytdi + header XP chipi (35)
  • docs(35): spec, skrinshot va README jadvallari
  • feat(35): «Bugungi reja» kartasi qaytdi — eski karta + pardoz, header'da jami XP
  • docs(34): xarita havolasi tiklandi
  • docs(34): 28 harf yo'l xaritasi; qaytish hisobi tuzatildi (20/28, 17 tasida oxirida orqaga)
  • feat(34): harf chizish — siyoh turadi, nuqtalar ko'rinadi, foiz va sabab (34-spec 34.1)
  • docs(33): OTA 1.4.259 — 2.4 prodda
  • docs(33): 2.4 skrinshot sahifasi va telefon tekshiruvi
  • test(33): 2.4 skrinshotlari — varaq ostidagi sanoq, animatsiyadan keyingi planshet
  • Merge feat/33-pardoz: tomosha paneli pardozi (33-spec 2.4)
  • feat(33): tomosha paneli pardozi — iPad Esc/chap panel, sanoq, chiziqdagi xato, mikrofon (33-spec 2.4)
  • docs(33): OTA 1.4.258 — 2.3 prodda
  • Merge feat/33-surish: tomosha panelini barmoq bilan surish (33-spec 2.3)
  • feat(33): tomosha panelini barmoq bilan surish (33-spec 2.3)
  • docs(33): OTA 1.4.257 — 2.2 prodda
  • Merge feat/33-tomosha-paneli: tomosha paneli va B chiziq (33-spec 2.2)
  • docs(33): 2.2 bajarish jurnali va jadvallar
  • feat(33): tomosha paneli va B chiziq (33-spec 2.2)
  • docs(33): 2.2 qoralamasi lokal stash'da
  • docs(33): OTA 1.4.256 — 1a, 1b va 2.1 prodda
  • Merge feat/33-bitta-pleer: bitta pleer — dars joyida almashadi, muqova, mini'da progress (33-spec 2.1)
  • docs(33): 2.1 bajarish jurnali va jadvallar
  • feat(33): bitta pleer — dars joyida almashadi, muqova, mini'da progress (2.1)
  • Merge fix/21-chiqish-remount: chiqayotgan ekran qayta qurilmaydi (33-spec 1b)
  • fix(33): chiqayotgan ekran qayta qurilmaydi — stek hostlari bitta kalitli massivda (1b)
  • Merge fix/33-pleer-egasi: pleer egasi — dars almashganda qora ekran tuzatildi (33-spec 1a)
  • fix(33): pleer egasi — dars almashganda qora ekran va eski video mini oynada qolmaydi
  • docs(33): video tomosha paneli spec'i + VP9 test videolari
  • docs(32): OTA 1.4.255 — videosiz asosiy ekran jadvallarda
  • Merge fix/32-videosiz: asosiy ekrandan video kartasi olib tashlandi
  • fix(32): asosiy ekrandan video kartasi butunlay olib tashlandi
  • Merge feat/32-asosiy-ekran-jonli: asosiy ekran jonli qatlami (32-spec)
  • feat(32): asosiy ekran jonli qatlami — ustoz kartasi, daraja halqasi, wow harakat
  • docs(31): OTA 1.4.253 — spec va README jadvallari
  • Merge feat/31-asosiy-ekran-pardoz: asosiy ekran pardozi (31-spec)
  • feat(31): asosiy ekran pardozi — UI/UX auditi tuzatishlari
  • docs(30): OTA 1.4.252 — spec va README jadvallari
  • Merge feat/30-asosiy-ekran: asosiy ekran v2 (30-spec)
  • feat(30): asosiy ekran v2 — hamma mashq bir bosishda, kam yozuv
  • docs(29): deploy, prod tekshiruvi va 422 tuzatishi jurnalga
  • fix(admin): Statistika prodda 422 berardi — days query; HTTP smoke qo'riqchisi
  • docs(29): jurnalga sharh tuzatishlari va test tuzatishi
  • test(plan): yengil rejim testi LIGHT_ROTATION'ga bog'landi
  • fix(admin): mustaqil sharh topilmalari — push sinovi, yetkazish, Fikrlar sahifalash
  • docs(29): spec tayyor + bajarish jurnali; admin/design ← design-v2
  • feat(admin): design-v2 3-bosqich — Push xabarlar, Kontent, Fikrlar
  • feat(admin): design-v2 2-bosqich — Statistika (collect() sonlari, 7/30/90, oldingi davr) va To'lovlar
  • feat(admin): design-v2 1-bosqich — oq sidebar, filtr kartochkalari, o'ng panel, profil, jurnal, xavfsizlik, Premium dialogi, ⌘K, telefon
  • feat(admin): oxirgi faollik, onlayn, filtrlar va Face ID taymeri backend'ga ulandi
  • feat(admin): yangi dizayn (admin/design) — Geist, yashil aksent, o'ng panel, mobil ko'rinish
  • fix(nginx): mime.types ulanmagan edi — .js text/plain bilan ketib pay. va admin. sahifalari oq ekran edi
  • feat(admin): 29-spec 1-bosqich panel — shadcn/ui, foydalanuvchilar, Premium, jurnal, Face ID; nginx admin hosti
  • feat(admin): 29-spec 1-bosqich backend — Access JWT, passkey, jurnal, foydalanuvchi va Premium amallari
  • docs(reja): 29-spec tasdiqlandi — tayyor-spec; «Fikr bildirish» 3-bosqichda
  • docs(reja): 29-spec admin panel (veb, shadcn) — reja holatida
  • docs(28): 1.4.250–1.4.251 jurnali, Android oldin/keyin skrinshoti
  • fix(update): do'kon ekrani turgan qurilma ham OTA oladi — avval yangi kod, keyin ekran
  • fix(update): yangilanish ekrani oq emas — soat zonasi bilan bir rang (iOS --app-bg, Android tizim paneli #c2dfff)
  • docs(28): majburiy yangilanish prodda — OTA 1.4.249, chegara android 54 / ios 18
  • docs: native reliz tartibiga do'kon chegarasini ko'tarish qadami (28-spec)
  • fix(update): iOS'da foiz 0% da qotmasin — vaqt bo'yicha silliq taxmin; simulyator sinovi jurnali
  • test(update): e2e oqimlar va skrinshotlar; ochilishdagi ekran darhol to'liq oq
  • feat(update): majburiy yangilanish — OTA oq ekran, do'kon chegarasi, xavfsiz lahza (28-spec)
  • fix(tts): Edge erkak ovozi Moaz → Hamed — Moaz ج ni Misr shevasidagidek «g» deydi
  • docs(stt): Gemini 3.5 Transcribe natijasi (bepul tarifda 16 yozuv); umumiy jadval natijasiz modelni chetlaydi
  • docs(ai): haqiqiy matnlarda ko'r-ko'rona hakamlik — Sol medium 47/56, Luna 38/56, high foydasiz
  • feat(ai): bepul tahlil Luna'da, premium tahlil OPENAI_PREMIUM_MODEL (GPT-6.1 Sol)
  • feat(ai): tahlil GPT-6.1 Sol'da, fikrlashsiz chaqiruvlar (rolli suhbat) Luna'da
  • feat(stt): benchmarkka Gemini 3.5 Transcribe (til ar, VERBATIM, lug'at) va 3.8 Flash
  • docs(stt): Groq Whisper, OpenAI va Gemini benchmarki — telefon sharoiti, o'quvchi ovozi
  • fix(27): Edge ovozi osilsa 5 s da uziladi, qayta urinadi; ayol suhbatdosh zaxirasi marin
  • fix(27): ⚠ telefon sharoiti sinovidan keyin — dal-dad o'chiq, 6 xavfli so'zda yo'q
  • fix(27): iOS talaffuz yozuvi gpt-transcribe'da 400 berardi — fayl nomi imzodan
  • docs(reja): 27 — tayyor, backend 5806050 va OTA 1.4.248 prodda
  • feat(27): ⚠ gpt-transcribe auditidan o'tdi — 8 to'plamda yoqildi
  • feat(27): Cedar TTS ulandi, talaffuz STT gpt-transcribe, klientda sekin tinglash
  • wip(27): TTS provayder qatlami (Cedar + kesh + Edge zaxira) va 1-sessiya jurnali
  • docs(reja): 27 — ishlanmoqda, davomi feat/27-ovoz-tts branch'ida
  • docs(reja): 27 — rolli suhbat javoblari Edge'da qoladi, Cedar faqat o'zgarmas kontent uchun
  • docs(reja): 27 — OpenAI ovozi (mini-tts Cedar), tinglanganda kesh, Edge zaxira, talaffuz gpt-transcribe
  • fix(prompts): seed_prompts qulfi o'z tranzaksiyasida — workerlar dublikat versiya yozmaydi
  • fix(ai): OpenAI kutish chegarasi 120 → 60 s — osilgan so'rov tezroq zaxiraga o'tadi
  • feat(ai): GPT-6 Luna asosiy provayder, DeepSeek Flash avtomatik zaxira
  • fix(ai): prompt sifati — tanvin alifi, adad ikki yo'nalish, zamon tanlovi, faqat grammatik tuzatish, diniy ibora taqiqi
  • docs(reja): iOS 1.3 (18) qayta yuborildi — obuna iOS'da yashirin, Premium limitlari saqlanadi
  • chore(ios): build 18 (1.3) — obuna iOS'da yashirilgan JS bilan
  • fix(ios): obuna va Click iOS'da yashirildi, Premium limitlari saqlanadi
  • docs(reja): 26 iPad — tayyor; iOS 1.3 (17) App Review'da, Android 2.3.0 (54) production
  • test(e2e): login — Welcome tanishtiruvi va tipografik apostrof (eskirgan test)
  • feat(ipad): iPad va planshet — native to'liq ekran, yon panel, keng maketlar (26-spec)
  • docs(reja): 25 tizim PiP — simulyator/emulyator skrinshotlari
  • feat(video): tizim PiP — video ilovadan tashqarida ham suzadi (25-spec)
  • docs(reja): 24 mini pleer — tayyor, OTA 1.4.244
  • feat(video): ilova ichidagi mini pleer (24-spec)
  • fix(video): audit tuzatishlari — YouTube darajasidagi pleer xatti-harakati
  • fix(video): yuklanish paytida ham Play/Pauza va ±10 s bosiladi
  • fix(video): seek'da tutqich darhol joyida, pauzada ham controls yashiriladi
  • feat(video): haqiqiy gorizontal rejim va YouTube uslubidagi pleer
  • feat(video): to'liq ekranda gorizontal ko'rish — portret ekranda quti 90° buriladi
  • feat(dizayn): sokin uslub — Asosiy, Lug'at, So'z boyligi: oq kartalar, rang faqat ikonada
  • feat(profil): sokin profil — bitta aksent, kam element, raqam «1 840»
  • feat(ios): Click obunasi iOS'da qaytarildi
  • content(video): sarlavhalar — 16 «Fe'l, fo'il va majhul fe'l», 18 «Tavobi': sifat, ta'kid, atf, badal»
  • content(video): 23 «Mushtaqqot» varag'i (reviewed) — 9/9 tayyor
  • content(video): 22 «Af'oli xamsa» varag'i (reviewed)
  • content(video): 21 «Muzore' fe'lining jazmi» varag'i (reviewed)
  • content(video): 20 «Muzore' fe'lining nasbi» varag'i (reviewed)
  • content(video): 19 «Hol» varag'i (reviewed)
  • content(video): 18 tavobi' («Sifat») varag'i (reviewed)
  • content(video): 17 «Lozim va muta'addiy» varag'i (reviewed); Imlo → B1/6, A2 qayta raqamlandi
  • content(video): 16 «Fe'l va fo'il» transkript, dars varag'i, tekshiruv (reviewed)
  • content(video): 15 «Imlo» transkript, dars varag'i, tekshiruv (reviewed)
  • fix(video): whisper-cli statik quriladi — eski build papkasiga rpath bog'lanmasin
  • fix(video): stt.py Kotib modelini Application Support dan ham topadi
  • chore(video): sources.json — yangi 15–23 videolar HLS kalitlari
  • merge: videolar yangilandi — 9 yangi dars, 1080p HD, pleyerda HD belgisi
  • style(video): local_transcode ruff
  • chore(video): eski 9–14 videolar kontenti o'chirildi; HD_MIN_HEIGHT eksport qilinmaydi
  • feat(video): 1080p HD varianti, 25 kadr + qopqoqli CRF, pleyerda HD belgisi
  • merge: iOS 27 UIScene tuzatishi (1.2 build 16)
  • docs(reja): iOS 1.2 (16) UIScene tuzatishi bilan qayta yuborildi
  • fix(ios-smoke): pipefail ostida grep -q tirik ilovani «yiqildi» derdi
  • fix(ios): UIScene hayot sikli — iOS 27 da ishga tushishdagi yiqilish (1.2 build 16)
  • docs(reja): 23-spec prodda (OTA 1.4.238)
  • merge: 23-spec mikrofon ishonchliligi va yozuv ovozi sifati
  • feat(23): mikrofon ishonchliligi va yozuv ovozi sifati
  • docs(reja): Android 2.2.0 (53) production'da
  • docs(reja): do'kon relizi holati — iOS review'da, Play sahifasi yangi
  • chore(play): play-promote.mjs — yuklangan build'ni boshqa kanalga chiqarish
  • docs(reja): do'kon relizi — build'lar va yangi skrinshotlar tayyor
  • merge: dev platforma kaliti (do'kon skrinshotlari)
  • chore(dev): brauzerda iOS/Android ko'rinishini chizish kaliti (faqat dev)
  • chore(native): Android 2.2.0, iOS 1.2 (15) — do'kon relizi
  • merge: iOS obuna eslatmalari tozalandi
  • fix(ios): obuna eslatmalari iOS'da to'liq yashirildi (App Store 3.1.1)
  • docs(reja): silliqlash va tez ishga tushish tayyor — OTA 1.4.236
  • merge: silliqlash (grafik oqim, oldindan yuklash, navbar FLIP) + tez ishga tushish
  • feat(ui): tez ishga tushish — splash ekran tayyor bo'lishi bilan yopiladi
  • feat(ui): silliqlash — o'tishlar grafik oqimda, ekranlar oldindan tayyor, navbar pill FLIP
  • docs(reja): 21 tayyor — OTA 1.4.235
  • merge: 21 — tirik ekran steki, haqiqiy oldingi ekran bilan svayp-back
  • docs(reja): 21 — tizim back skrinshoti
  • docs(reja): 21 jurnali — iOS simulyator tekshiruvi
  • feat(nav): 21 — tirik ekran steki: haqiqiy oldingi ekran bilan «orqaga» svaypi
  • docs(reja): navbat — 21 svayp-back birinchi, 19 audio kutadi
  • merge: pardoz 2 — nishonlash lahzasi, javob animatsiyasi, skeletlar
  • docs(reja): pardoz 2 tayyor
  • feat(ui): pardoz 2 — nishonlash lahzasi bir xil: konfetti + haptika + tovush, javob animatsiyasi, skeletlar
  • merge: pardoz 1 — dizayn tizimi auditi va yangi foydalanuvchining birinchi ekrani
  • docs(reja): pardoz 1 tayyor, navbatda pardoz 2
  • feat(ui): pardoz 1 — dizayn tizimi auditi va yangi foydalanuvchining birinchi ekrani
  • merge: «Yo'l» dizayn yo'nalishi butun ilovada — pastki qirrali yuzalar, tekis plitkalar, bezak doiralari olib tashlandi
  • docs(reja): «Yo'l» dizayni tayyor, pardoz rejasi navbatda
  • CLAUDE.md: App Store Connect Support/Marketing URL eslatmasi
  • test(card): variant testlari pastki qirra uslubiga moslandi
  • fix(ui): audit — color-mix() o'rniga tokenlar (iOS 15 mosligi), qoldiq soyalar, eskirgan e2e testlar
  • feat(ui): butun ilova «Yo'l» dizayn yo'nalishida — pastki qirrali yuzalar, tekis rangli plitkalar, bezak doiralari olib tashlandi
  • merge: So'z boyligi «Yo'l» dizayn yo'nalishi — tinch fon, pastki qirrali yuzalar, daraja yo'li
  • feat(ui): So'z boyligi «Yo'l» dizayn yo'nalishida — tinch fon, pastki qirrali yuzalar, daraja yo'li
  • docs(videolar): OTA 1.4.230 — yetkazish jurnalga yozildi
  • merge: videolar bo'limi tozalandi — brend qatori, daraja bo'linishi va alohida qidiruv ekrani olib tashlandi
  • fix(videolar): qidiruvni yopganda lentadagi joy saqlanadi + kirish detallari
  • fix(videolar): brend qatori, daraja bo'linishi va alohida qidiruv ekrani olib tashlandi
  • docs(14): OTA 1.4.229 — yetkazish jurnalga yozildi
  • merge: 14-offline — lug'at qurilmada, mashq tarmoqsiz ham oxirigacha boradi
  • feat(14): offline rejim — lug'at qurilmada, kartochkalar va alifbo tarmoqsiz
  • docs(12): OTA 1.4.228 — reliz raqami jadvallarga va jurnalga yozildi
  • measure(12): Moaz ovozi bilan qayta audit — ⚠ baribir o'chiq qoladi
  • feat(tts): ilova ovozi ar-SA-Hamed → ar-QA-Moaz (o'lchov asosida)
  • measure(12): 8 fusha TTS ovozi taqqoslandi — ar-QA-Moaz oldinda
  • Merge: 12-spec talaffuz mashqi
  • chore(12): ovoz namunalari to'plami skripti
  • feat(12): imlo shovqiniga bag'rikenglik + ⚠ o'lchovi (sintetik audit)
  • feat(12): talaffuz mashqi — minimal juftliklar, Whisper + taxmin, ballsiz
  • Merge: yillik chegirma 40% (840 000 so'm/yil)
  • feat(narx): yillik obuna 840 000 so'm — chegirma 17% dan 40% ga
  • docs(10): OTA 1.4.227 — reliz raqami jadvallarga va jurnalga yozildi
  • docs(10): skrinshotlar oxirgi kod bilan qayta olindi
  • docs(10): o'lchov natijalari va 10 sinov suhbati hujjatga tushdi
  • fix(10): baho promptida maqsad javobning o'zida sanab chiqiladi
  • fix(10): maqsad qisman bajarilsa «bajardingiz» deyilmaydi
  • perf(10): yakuniy bahoda fikrlash o'chirildi (minimal 48 s berdi)
  • perf(10): yakuniy baho 70 s dan tushirildi, kutish holati ko'rinadigan bo'ldi
  • merge: 10 rolli suhbat — AI suhbatdosh bilan dialog (10-spec)
  • fix(10): mustaqil tekshiruv topilmalari — maqsad namunalarda o'rgatilsin
  • refactor(10): ovoz oqimi alohida hookga, sessiya moslashi render bosqichida
  • feat(10): 36 ssenariy, ekran auditi va birinchi qadam ko'rsatmasi
  • feat(10): rolli suhbat — backend, ekranlar va kontent quvuri
  • docs(13): OTA 1.4.226 — reliz raqami jadvalga va jurnalga yozildi
  • merge: 13 o'qish matnlari — darajali o'quv matnlari (13-spec)
  • fix(13): A1 daraja kalibratsiyasi — «chunki» ergash gapi olib tashlandi
  • fix(13): uzun sarlavha ekran tepasida kesilmaydi
  • fix(13): mustaqil tekshiruv topilmalari + iqtibos qo'riqchisi qat'iylashtirildi
  • docs(13): holat «tayyor» — README jadvallari va spec jurnali
  • feat(13): 120/120 matn tayyor — kontent to'liq
  • chore(13): texts.jsonl — 105 matn (B2 yarmi)
  • feat(13): B2 kontenti 1–15 (fikr, madaniyat) — 105/120 matn
  • fix(13): qism-yugurish oldingi natijalarni o'chirmaydi
  • docs(13): tekshiruv brifi — daraja bo'yicha bitta hukm fayli + ekran suratlari
  • feat(13): B1 kontenti to'liq — 90/120 matn
  • fix(13): javob kaliti izohga zid bo'lsa — xato
  • fix(13): «Harakat» tugmasi rol bo'yicha izlanadi
  • feat(13): B1 kontenti 1–15 (hikoya, tabiat)
  • feat(13): muallif izohi lug'at maqolasi bilan birga ko'rsatiladi
  • test(13): o'qib bo'lgandan keyingi holat uchun skrinshot
  • test(13): kontent shakli uchun CI regressiya testi
  • feat(13): «Yangi so'zlarni takrorga» — spec 3-bo'limi talabi
  • fix(13): TTS xato bersa ketma-ket ijro holati tozalanadi
  • feat(13): tinglayotganda joriy gap ko'rinib turadi
  • docs(13): A2 paketida topilgan uchta tuzoq brifga qo'shildi
  • feat(13): A2 kontenti to'liq — 60/120 matn
  • docs(13): brifda iqtibos qoidasi aniqlashtirildi
  • fix(13): izohdagi iqtibos matnga MOS kelishi talab qilinadi
  • test(13): reja qatorining o'qish yorlig'i uchun test
  • style(13): ruff format
  • chore(13): ekran auditi suratlari git'dan chiqarildi
  • docs(13): B1/B2 mavzulari uchun lug'at teshiklari brifga qo'shildi
  • fix(13): oltita matnda variant uzunliklari tenglashtirildi
  • fix(13): «shahar» so'zi taqiq ro'yxatidan chiqarildi
  • feat(13): «to'g'ri javob eng uzun» naqshi uchun qo'riqchi
  • docs(13): bajarish jurnali — chetlashishlar va o'lchangan tuzoqlar
  • fix(13): A1 savollarining to'rtta nuqsoni
  • fix(13): harakat sinflari kod nuqtasidan yasaladi — ikki jim xato
  • test(13): diktant e2e — «Mashqlar» panjarasida endi 5 tugma
  • fix(13): «Harakat» tugmasi sarlavhaga ham ta'sir qiladi
  • fix(13): ekran auditi savol izohlaridagi bidi tartibini ham o'lchaydi
  • feat(13): A1 kontenti (30 matn) va ikki yangi qo'riqchi
  • fix(13): ekran nuqsonlari, e2e va ekran auditi
  • feat(13): o'qish matnlari — backend, ekranlar va kontent quvuri
  • merge: 11 diktant — tinglab yozish mashqi (11-spec)
  • feat(11): diktant — tinglab yozish mashqi (11-spec)
  • docs(17): jurnal, qabul mezonlari va navbat yangilandi
  • feat(17): hisobot rasmi ixchamlashtirildi (Muhammad: «qisqaroq bo'lsin»)
  • feat(17): hisobot Telegram'ga RASM bo'lib ketadi
  • merge: 17 o'lchov hisoboti — haftalik metrika skripti + paywall_view
  • feat(17): o'lchov hisoboti — retention, faollik, konversiya
  • merge: 04 tozalash — ogohlantirishlar 46→14, verify.py bo'lindi
  • docs(04): jurnalga tozalash natijalari
  • fix(04): tekshiruv ogohlantirishlari 46 → 14, verify.py 516 → 204 satr
  • docs(05): jurnalga sarlavha qarori va uch o'zgarish
  • feat(05): sarlavha ham varaqdan keladi — baza bilan ziddiyat qaytmasin
  • docs(05): haqiqiy kontent bilan tasdiq suratlari
  • docs(05): reja jadvallari — 05 tayyor, navbatda 17
  • fix(05): level_order daraja ICHIDAGI tartib (02-spec), global emas
  • merge: 05 — video dars varag'i va Kotib STT quvuri
  • docs(05): jurnalga kontent jadvali
  • feat(05): 13 va 14-video varaqlari — oltalasi ham tayyor
  • fix(05): harakat tekshiruvi cho'zish harflarini sanamaydi
  • fix(05): halqaning kesilgan dumi ham tashlanadi
  • fix(05): boshqa videoga o'tilganda savol javoblari qolib ketardi
  • chore(05): knip scripts/video/*.mjs ni ko'radi + jurnal kengaytirildi
  • feat(05): reviewed bayrog'i — hakam ko'rigisiz varaq prodga chiqmaydi
  • fix(05): chip chegarasi 3 harf — bir ro'yxatdagi yuklamalar bir xil ko'rinsin
  • feat(05): 9-video varag'i — muzore' fe'lining nasbi (B1)
  • fix(05): qisqa arabcha morfema ham chip bo'ladi (ekran auditi topilmasi)
  • fix(05): mazmun uzunligiga chegara — «ikki gap» yetarli emas
  • test(05): so'z qatori lug'at maqolasini ochishi (qabul mezoni 4)
  • docs(05): VIDEO_WATCH_SPEC yangilandi — progress qaytdi, ekran bo'lindi
  • fix(05): so'zlar jadvali 320 px da kesilmaydi
  • feat(05): 12-video varag'i (kataba tasrifi) + reja jadvali
  • feat(05): STT halqa qo'riqchisi, TimeLink aylanasi, jurnal
  • feat(05): 10 va 11-video varaqlari + yagona TTS hooki
  • feat(05): dars varag'i — backend, UI va kontent quvuri skeleti
  • docs(04): ikkinchi o'lchov namunasi — teg qamrovi 94%, aniqlik 70%
  • docs(04): reja jadvallari yangilandi — 04 tayyor, navbatda 05
  • docs(04): tasdiq uchun ekran suratlari yangilandi
  • docs(04): prodda o'lchov natijalari
  • fix(04): teg o'lchovi juftlashtirildi — nazorat guruhi ayni matnlar
  • merge: 04 — har xatoga «Nega?» qoida izohi
  • fix(04): ekran auditidagi 11 kontent tuzatishi
  • docs(04): ekran auditi natijalari jurnalga
  • fix(04): o'zbekcha matndagi yolg'iz arabcha harf chip bo'lib chiziladi
  • feat(04): teg qamrovi va tahlil vaqtini o'lchash skripti (qabul mezoni 3 va 7)
  • chore(04): scripts/grammar ruff qoidalariga moslandi
  • fix(04): o'zbekcha matnda arabcha tinish belgisi va yopishgan qo'shimcha
  • feat(04): barcha 93 qoida kartasi tayyor
  • docs(04): ekran auditi brifi
  • feat(04): A1-3 va A2-1 qoida kartalari tayyor (81/93)
  • feat(04): ekran auditi skripti + mexanik tekshiruvlar (bidi, gorizontal, kesilish)
  • fix(04): o'zbekcha matn ichidagi arabcha bo'laklar bidi bilan buzilardi
  • docs(04): kitob o'tishi rad etildi (Muhammad qarori)
  • docs(04): keyingi sessiyaga topshiriq (65/93 qoida)
  • feat(04): A1-2 va A2-2 qoida kartalari tayyor (65/93)
  • feat(04): A1-1 va B2-2 qoida kartalari tayyor (50/93)
  • feat(04): B1-3 va B2-1 qoida kartalari tayyor (32/93)
  • docs(04): hakamlik brifiga sentence_uz sizib chiqishi qo'shildi
  • feat(04): B1-1 va B1-2 qoida kartalari tayyor (16 ta)
  • docs(04): bajarish jurnali
  • feat(04): yangi 12 tegning auditi — 4 teg olib tashlandi, 1 misol tuzatildi
  • docs(04): crosscheck va hakamlik briflari
  • feat(04): mashq yakunida mustahkamlangan qoidalar soni
  • feat(04): taksonomiya tekshiruvdan o'tdi (97 teg) + «Nega?» e2e va rang tuzatishi
  • feat(04): grammatika taksonomiyasi, «Nega?» API va varaq skeleti
  • merge: 22 — o'qish savollari harakatni rostdan sinasin
  • docs(22): reja jadvallari yangilandi — 22 tayyor, navbatda 04
  • feat(22): o'qish savollari harakatni rostdan sinasin + 5-12-darslar auditi
  • merge: 20 — alifbo o'qitish sifati (avval o'rgat, keyin so'ra)
  • fix(20): 13–17-darslar — gap qoidalari, belgi darslari, yakuniy tekshiruv
  • docs(20): sana to'g'rilandi (2026-09-12)
  • chore(20): skrinshotlar yangilandi (8 e2e testi yashil)
  • fix(20): qayta tekshiruvda topilgan 8 nuqson — namuna mashqni takrorlamasin
  • feat(20): alifbo o'qitish sifati — avval o'rgat, keyin so'ra
  • fix(nav): ilovaning o'z «orqaga» svaypi olib tashlandi — orqaga faqat platforma yo'li bilan
  • docs(20): Muhammad qarorlari — qisqa unlilar 3-darsga, modul 17 darsda qoladi
  • fix(18): «o'rtasida» savolida ulanmaydigan harf variant bo'lmaydi + spec 20
  • merge: 18 alifbo kontentini mustaqil tekshirish
  • chore(18): e2e skrinshotlari yangilandi
  • fix(18): chizish ekranidagi ikki hisob, takror ma'no, ع izohi
  • docs(18): spec jurnali va reja README yangilandi
  • fix(18): kanonik harakat tartibi va gap qadamining ochiq holati
  • docs(18): README dan olib tashlangan ovoz skripti chiqarildi
  • docs(18): quvur README qo'riqchilar va ekran surati skripti bilan yangilandi
  • fix(18): tanvin kartasi va belgi savoli (A2 qayta ko'rigi)
  • fix(18): chizish maydoni Tajawal yuklangach qayta chiziladi
  • fix(18): chizish yo'llari harf shaklini to'liq qoplaydi (J-08…J-11)
  • fix(18): alifbo UI — harakat belgisi ustma-ust tushmaydi, ball saqlanadi
  • fix(18): alifbo kontenti — harf nomlari, translit izchilligi, quvur qo'riqchilari
  • feat(18): har qadamning ekran surati quvuri (capture_steps.mjs)
  • feat(06,18,19): alifbodan ovoz olib tashlandi; tekshiruv va ovoz rejalari
  • fix(06): tanvin ziddiyati va harf→lotin izchilligi
  • merge: 06 alifbo tayyorgarlik moduli
  • fix(06): باب «bob» emas «bab» — o'zlashma shakli translitga sizib kirgan
  • feat(06): alifbo tayyorgarlik moduli — 17 dars, chizish, A0 kunlik reja
  • fix(navbar): panel uy indikatoridan 8 px yuqorida (20 → 8), indikatorsiz qurilmada 20 px
  • fix(navbar): safe-area panel ichida emas, tagida — iPhone'da pill ostidagi bo'sh oq yarim oy yo'qoldi
  • merge: Videolar «Daraja yo'li» hero (V1) va kengayuvchi pill navbar (N1)
  • feat(ui): Videolar «Daraja yo'li» hero (V1) va kengayuvchi pill navbar (N1)
  • fix(backend): seed_prompts — parallel worker'lar bir versiyani ikki marta yozmasin (pg_advisory_xact_lock)
  • fix(backend): seed_prompts AsyncConnection qatoridan content/version o'qiydi — prompt versiyasi ko'tarilmay qolardi
  • Merge feat/02-oquv-yoli: CEFR o'quv yo'li (02-spec)
  • content(02): insho/muhadasa mavzular banki — 240 mavzu, tekshiruv zanjiridan o'tgan
  • feat(02): CEFR o'quv yo'li — frontend: /daraja sahifasi, tekshiruv, Videolar chiplari, mavzu tanlash
  • feat(02): CEFR o'quv yo'li — backend: daraja shartlari, 10 savolli tekshiruv, mavzular banki
  • fix(reja): bo'sh yoki chala /plan/today javobi Asosiy ekranni yiqitmaydi
  • feat(ui): ichki sahifalar Asosiy ekran gradient oilasida — 39 ekran, to'rt yo'nalish
  • merge: Videolar va Lug'at dizayni — gradient sarlavha kartalari, rangli to'plamlar
  • feat(videolar, lug'at): Asosiy ekran oilasida dizayn — gradient sarlavha kartalari, oq lenta kartalari, rangli to'plamlar
  • merge: profil dizayni — gradient identity, rangli plitkalar, «Bu hafta» kartasi
  • feat(profil): Asosiy ekran oilasida dizayn — gradient identity, rangli plitkalar, «Bu hafta» kartasi
  • merge: 03 Kunlik reja — reja kartasi, streak/daraja chipi, kalendar, sozlama
  • feat(03): mashq kartalari — rangli gradient, to'la rangli ikona diski, yorug'lik doirasi
  • feat(03): tezkor amallar — uch karta (ikona plitkasi, nom, tirik izoh)
  • feat(03): reja kartasi — gradient sarlavha, PlanRing, «Keyingi» tugmasi
  • feat(03): Kunlik reja — 3 rejim, hodisada belgilanadigan reja kartasi, streak/daraja chipi, 30 kunlik kalendar
  • docs(reja): navbat jadvali — «keyingi vazifa» protokoli, 17 o'lchov spec, ildiz CLAUDE.md
  • merge: 07 Profil qayta tuzildi
  • feat(07): Profil qayta tuzildi — statistika plitkalari, yutuqlar tasmasi, sozlamalar ⚙ varaqda
  • merge: 07 mukofot lahzasi
  • feat(07): mukofot lahzasi — «+N XP» va yutuq modali mashq tugagan joyda
  • docs(reja): 07 holati «tayyor» — prodda (backend + OTA 1.4.202)
  • merge: 07 — XP, yutuqlar galereyasi va streak freeze
  • feat(07): XP, yutuqlar galereyasi va streak freeze
  • docs(reja): 08 holati «tayyor» — prodda (backend + OTA 1.4.201)
  • feat(08): muhadasa transkriptini tasdiqlash va ishonch belgisi
  • chore(ios): web-only o'zgarish uchun arxiv yangilash skripti
  • chore(ios): build raqami 14 — status bar tuzatishi bilan yangi arxiv
  • fix(auth): status bar ostida oq polosa — fon gradienti u yerga chiqmasdi
  • fix(ios): imzosiz CI arxivi entitlement'larni yo'qotgan — build 12 rad etilgan sabab
  • docs(placement): holat tayyor — prodda (backend + OTA 1.4.199)
  • fix(placement): 035 migratsiyasi idempotent — create_all bilan to'qnashmaydi
  • merge: daraja aniqlash testi (spec 01) — backend, ilova va 614 elementli savollar banki
  • docs(reja): 16 funksiya spetsifikatsiyasi va bosh reja
  • docs(reja): 16 funksiya spetsifikatsiyasi va bosh reja
  • docs(placement): qabul mezonlari holati jurnalga yozildi
  • refactor(placement): 400 satrdan oshgan ikki fayl bo'lindi
  • content(placement): B1/B2 ikkinchi paketlar — bank to'ldi (614 element)
  • content(placement): A2 ikkinchi paket va B2 tinglash — 549 element, listen A1/A2 kvotasi to'ldi
  • content(placement): A1/A2/B2 ikkinchi paketlar va B1/B2 matnlar — 503 element
  • content(placement): A1/B1 gap va listen, A2 matn, mavzular — tekshiruvdan o'tgan 435 element
  • fix(placement): tekshiruv skriptidagi uch soxta topilma
  • docs(placement): yetkazish tartibi — migratsiya, bank, OTA
  • fix(placement): yuborish davomida bosqich ekrani almashtirilmaydi
  • feat(placement): daraja aniqlash testi — backend, ilova ekranlari va savollar quvuri
  • feat(analysis): ball va tahlil serverda hisoblanib saqlanadi — klient JSON'i qabul qilinmaydi
  • chore(ios): CI arxivini lokalda imzolab yuklaydigan skript
  • fix(ci): Codemagic faqat imzosiz arxiv qursin; imzolash lokalda
  • fix(ci): imzo fayllarini Codemagic o'zi yaratsin (fetch-signing-files --create)
  • ci(ios): Codemagic konfiguratsiyasi — bepul macOS runner, TestFlight
  • ci(ios): ulashilgan App sxemasi + GoogleService-Info.plist repo'ga
  • ci(ios): Xcode Cloud uchun ci_post_clone — Node, web bundle, cap sync
  • ci: vaqtinchalik runner probe olib tashlandi (sabab: GitHub billing bloklangan)
  • ci: vaqtinchalik runner probe
  • ci(ios): GitHub Actions'da archive + App Store Connect'ga yuklash; build 12
  • fix(ios): native splash Capacitor'ning standart «X» rasmi o'rniga brend (och ko'k fon, oq ط)
  • chore(ios): MARKETING_VERSION 1.0 → 1.1 — 1.0 poyezdi App Store'da yopilgan
  • feat(ios): push notification ulanishi (APNs→FCM), obuna iOS'da yashirildi, build 11
  • fix(backend): admin qoldiqlari — is_admin 500 xatosi, created_by_admin_id, APNs payload
  • fix(dialog): markaziy modal telefonda chetdan chetga yotmaydi
  • chore(frontend): ishlatilmagan query-keys.ts olib tashlandi
  • feat(bildirishnomalar): push deep-link, SQL ko'rinish, o'qilgan belgisi va kesh — to'liq qayta qurish
  • feat(asosiy ekran): tezkor amallar o'rtasiga «Insho yozish» tugmasi qo'shildi
  • refactor(mavzu): dark rejim olib tashlandi — ilova faqat yorug'
  • fix(navigatsiya): yetim ekranlar tugatildi — har ekranda chiqish yo'li bor
  • feat(yangilanishlar): sahifa maketga to'liq keltirildi
  • feat(so'z boyligi): takror tizimi ilovaning qolgan qismi bilan bog'landi
  • feat(so'z boyligi): takror tizimi endi o'zini tushuntiradi
  • feat(so'z boyligi): bo'lim mashg'ulotga aylantirildi (maket «10 So'z boyligi v2»)
  • chore: .coverage fayli gitignore ga qo'shildi
  • feat(obuna): 26-ekran maketiga o'tkazildi + faol obuna ma'lumoti backenddan
  • feat(obuna): obuna sahifasi qayta dizayn qilindi + o'zbekcha oy nomlari
  • feat(ui): Welcome, Login, skeleton va bildirishnomalar qayta dizayn qilindi
  • chore(claude): /ota slash buyrug'i qaytarildi
  • feat(video): pleer va lenta YouTube uslubida qayta joylashtirildi
  • chore: CLAUDE.md olib tashlandi
  • feat(offline)!: internet uzilganda ogohlantirish banneri olib tashlandi
  • feat(fon)!: fon o'zgartirish funksiyasi butunlay olib tashlandi
  • chore(env): o'lik kalitlar .env.example dan olib tashlandi
  • docs(readme): eskirgan CI va audit-design eslatmalari tuzatildi
  • chore: o'lik kod, jadval ustunlari, skriptlar va arxiv hujjatlar olib tashlandi
  • fix(backend): init_db legacy migratsiya bloki olib tashlandi, jim except'lar yo'q
  • chore(backend): barcha funksiyalarga qaytish tipi, ruff ANN2 yoqildi
  • refactor(video): VideoLessonsHome 779 → 538 satr, watch/ bo'laklari
  • refactor(video): VideoPlayer 1267 → 382 satr, mantiq player/ hook'lariga
  • docs: yangi CLAUDE.md (/init) — 985 → 164 satr
  • chore: Claude qoidalari qatlami butunlay olib tashlandi
  • docs(audit): ikkinchi to'lqin natijalari qo'shildi
  • refactor(ui): Toaster offsetlari constants.ts ga (TOAST_OFFSET)
  • chore(dict): quvur oraliq artefaktlari git'dan chiqarildi (6 MB)
  • test(e2e): o'chirilgan redirect va mavzu sahifasi testlari olib tashlandi
  • docs: docs/superpowers havolalarini docs/archive ga moslash
  • chore(frontend): telemetriya, leaderboard, streak AI kartalari, impersonation va eski redirectlar (2-to'lqin)
  • chore(backend): admin, audit, feature-flag, leaderboard, streak-card va groq-chat qoldiqlari (2-to'lqin)
  • chore(db): o'lik jadvallar — 18 model, 15 ad-hoc migratsiya bloki, Alembic 028 (5-bosqich)
  • docs: README, backend/README, .env.example va CLAUDE.md haqiqatga moslandi (8-bosqich)
  • chore: sifat darvozalari — lint 0, ruff, knip, React 18 tiplari, native plugin tozalash (6–7-bosqich)
  • chore: eski AI lug'at oilasi, promo banner va daily-words olib tashlandi (4-bosqich)
  • chore: ildizdagi axlat — screns/, tts/, banner-new.png, docs/archive (3-bosqich)
  • chore(backend): o'lik kodni tozalash — 2-bosqich (audit 2026-09-04)
  • chore(frontend): o'lik kodni tozalash — 1-bosqich (audit 2026-09-04)
  • docs(audit): loyiha auditi — jonli/o'lik kod xaritasi va tozalash rejasi
  • fix(stt): Whisper bias prompti + muhadasa promptida mishear ogohlantirishi
  • fix(e2e): multi-account testlari tuzatildi — 2 ta yiqilish
  • chore(ai): chat olib tashlangandan qolgan o'lik kod tozalandi
  • fix(ai): chat qoldiqlari — profil matni va hujjat aniqligi
  • docs: AI chat olib tashlandi, premium limiti 20
  • refactor(subscription): ai_assistant limitlari olib tashlandi
  • feat(subscription): premium tahlil limiti 30 -> 20
  • refactor(ai): embedding indekslash to'xtatildi
  • refactor(ai): chat kontekst/xotira/RAG modullari olib tashlandi
  • refactor(ai): chat endpointlari va prompt seed olib tashlandi
  • chore(design): audit baseline pasaytirildi — chat fayllari o'chirildi
  • feat(subscription): paywall — 20 ta tahlil, AI savol qatori olib tashlandi
  • refactor(dashboard): tezkor kartalar 3 dan 2 ga tushdi
  • refactor(ai): chat marshruti va komponentlari olib tashlandi
  • docs: AI xarajat nazorati — spec va reja
  • docs(backend): LLM bo'limi — DeepSeek V4 Pro asosiy model
  • fix(ai): fikrlash paytida heartbeat — 70s sukunat oqimni uzardi
  • fix(sse): gzip SSE oqimini oxirigacha buferlab qo'yardi
  • feat(ai): DeepSeek V4 Pro asosiy model, Gemma zaxiraga
  • feat(profile): bo'limlar sahifa emas, pastdan chiqadigan varaq
  • feat(profile): Claude Design 7a — 11 qator 6 qatorga tushdi
  • feat(video): Videolar tabida navbar scroll yo'nalishiga qarab sirg'aladi
  • fix(dashboard): tezkor amal ikonalari kattalashtirildi
  • feat(dashboard): asosiy ekran Claude Design 6b kompozitsiyasida
  • revert: Videolar tabida navbar yana ko'rinadi
  • fix(nav): Videolar tabida navbar yashirin — maket 5a aynan bajarildi
  • test(e2e): video spec'ini tekis lentaga moslashtirish + hujjatlar
  • fix(layout): tab paneli xatosi butun pager'ni yiqitmasin + Screen to'liq balandlik
  • feat(speaking): 3b maketi — 3a bilan bir xil fokus oqimi
  • feat(writing): 3a maketi — fokus oqimi
  • feat(dictionary): 4a maketi — tipografik bo'sh holat va katta sarlavha
  • feat(dashboard): 1a maketi — banner, video lentasi va streak/statistika tugmalari olib tashlandi
  • feat(video): Videolar tabi uchun tekis lenta
  • feat(nav): «Videolar» tabi va yangilangan BottomNav ko'rinish qoidasi
  • feat(ui): pill tugma varianti va katta AppBar sarlavhasi
  • docs(spec): Claude Design «Asosiy oyna» redizayni — spec va reja
  • feat(dashboard): «Mashq» tabini asosiy ekranga birlashtirish
  • docs(spec): asosiy ekran birlashtirish dizayni
  • fix(share): ulashish havolalarini o'lik domendan tirik landingga ko'chirish
  • fix(payments): Click qaytish sahifasini backend berishi
  • Revert "test(payments): oylik narxni vaqtincha 1 000 so'mga tushirish"
  • test(payments): oylik narxni vaqtincha 1 000 so'mga tushirish
  • chore(claude): Opus 5 uchun yo'riqnoma qatlamini qisqartirish
  • chore: auto-save (Claude session end) [skip ci]
  • fix(video): orqaga qaytish tarixni PUSH qilmasin, swipe va tugma bir joyga olib borsin
  • fix(video): gorizontal qatorni barmoq bilan vertikal sudrab bo'lmasin
  • fix(video): gorizontal qatorlar chap chetdan kesilmasin
  • feat(video): kutubxona redizayni — hero, mavzu javonlari, qidiruv, mavzu sahifasi
  • feat(payments): kutilayotgan to'lovni qayta ochish tugmasi
  • fix(payments): kutilayotgan to'lov foydalanuvchini qamab qo'yardi
  • fix(subscription): to'lov taklifi butun dunyoda — hudud filtri olib tashlandi
  • feat(subscription): yagona Premium tarif — 120 000 so'm/oy
  • feat(subscription): iOS'da obuna taklifi O'zbekiston qurilmalarida ochiladi
  • fix(lugat): queryKey to'qnashuvi ildizdosh so'zlar ekranini qulatardi
  • fix(test): dictionary progress fixture — password_hash ham majburiy edi
  • fix(test): dictionary progress fixture'ida users.first_name yetishmasdi
  • docs(video): video-joyla skill lokal transcode oqimiga o'tkazildi
  • chore(video): transcode worker'lari olib tashlandi — HLS endi lokalda
  • feat(video): lokal HLS transcode — server o'rniga Mac'da kodlash
  • feat(lugat): Claude Design redesigni ilovaga ko'chirildi
  • refactor(brand): ilova nomi hamma joyda «Toshqondiy» ga birxillashtirildi
  • fix(design): tipografiya shkalasi h1–h4/p da qalinligini yo'qotardi + ball halqasi nishonga mos kelmasdi
  • refactor(video): ko'rish progressi tizimi butunlay olib tashlandi
  • feat(video): kutubxona kurs sifatida qayta tuzildi + dars oxirida «Keyingi dars» sanog'i
  • feat(video): video bo'limi UI qayta ishlandi — kesilgan sarlavhalar, dizayn tizimi, CLS
  • fix(ui): cn() dizayn tizimining shrift shkalasini jimgina o'chirib tashlardi
  • chore(lugat): yopiq sinf xom paketlari git kuzatuviga o'tkazildi
  • fix(lugat): إِلَى va عَلَى prodga chiqmayotgan edi — omograf to'qnashuvi
  • fix(lugat): ثَانٍ ma'nosi xom faylda ham tuzatildi
  • fix(lugat): ثَانٍ takrori birlashtirildi
  • fix(lugat): son turkumi tiklandi + yopiq sinf paketining ikkinchi yarmi
  • feat(lugat): yopiq sinf turkumlari — olmosh, bog'lovchi, jarr harflari, sonlar
  • fix(lugat): turkum atamalari arab grammatikasiga o'tkazildi
  • feat(lugat): Lug'at tabi AI tahlildan tekshirilgan lug'atga o'tkazildi
  • feat(design): wow-frontend dizayn qatlami o'rnatildi va loyihaga moslandi
  • fix(lugat): sifat ko'rigi — yana uch xil transliteratsiya drifti yopildi
  • fix(lugat): jomid fe'llar 1-qatlamda soxta xato bermaydi
  • fix(lugat): prodda qolib ketgan 7 yozuv manba faylga qaytarildi
  • fix(lugat): transliteratsiya o'zbek lotin alifbosiga tenglashtirildi
  • feat(lugat): oxirgi 55 yozuv ham yopildi — prodda 5403 tekshirilgan yozuv
  • feat(lugat): lug'at 5342 tekshirilgan yozuvga yetdi — prodda
  • feat(lugat): sub-agent paketi hakamlikdan o'tdi — 1-qatlam 46 dan 7 xatoga tushdi
  • feat(lugat): 1967 so'z sub-agentlar bilan generatsiya qilindi — bazada 5523 yozuv
  • fix(lugat): generatsiya keshi 1967 so'zni jimgina o'tkazib yubordi
  • feat(lugat): oxirgi 40 yozuv ham ko'rikdan o'tdi — prodda 3468 yozuv
  • feat(lugat): 2838 yangi yozuv besh qatlamli tekshiruvdan o'tdi — jami 3468
  • feat(lugat): takroriy yozuvlarni belgilash — omografdan harakat bilan ajratiladi
  • feat(lugat): tuzatilgan yozuvlarni qayta ko'rikka chiqarish rejimi
  • docs(lugat): zanjirga korpus izchilligi qatlami qo'shildi
  • feat(lugat): korpus izchilligi tekshiruvi — modellar ko'ra olmaydigan sinf
  • docs(lugat): 4-qatlam hukm bosqichiga aylandi — tanqidlarning 42% i soxta
  • feat(lugat): 4-qatlam hukmlarini qo'llash — rad etilgan tanqid ham yopiladi
  • fix(lugat): tuzatish promptiga transliteratsiya jadvali qo'shildi
  • fix(lugat): 429 kvota xatosi paketni yiqitardi — alohida uzun kutish jadvali
  • feat(lugat): shubha ballari bo'yicha tanlov — cheklangan byudjetni xatoga yo'naltirish
  • fix(lugat): 3-qatlam kesh nomi ham tarkib hash'iga o'tdi + sozlanadigan paket hajmi
  • feat(lugat): 3-qatlam ko'rikchisi almashtiriladigan — Gemma bepul muqobil
  • fix(lugat): yuklash bosqichida translit/pos/daraja normalizatsiyasi — 18 xato yo'qoldi
  • fix(lugat): kross-tekshiruv keshi paket raqamiga bog'langan edi — 640 yozuv tekshirilmay qolardi
  • fix(lugat): uzilgan HTTP javobi butun generatsiyani qulatgan edi
  • fix(lugat): AI ko'rik qatlami 630 lik paketda 90 topilma berdi — 24 tasi qo'llandi
  • feat(lugat): --only-new bayrog'i — ko'rik bo'laklari faqat yangi yozuvlar uchun
  • test(lugat): xabar berish servisi testlari
  • docs(lugat): tekshiruv zanjiri yangilandi — 5 qatlam va tuzatishdan keyingi ko'rik
  • feat(lugat): AI ko'rik qatlami — 3-qatlamni tashqi modelga o'tkazish
  • fix(lugat): tuzatishdan keyingi ko'rik — 33 tasdiqlangan topilma qo'llandi
  • feat(lugat): xato haqida xabar berish tugmasi
  • test(lugat): xabar jadvalini test fikstursiga qo'shish
  • feat(lugat): xato haqida xabar berish — dictionary_reports jadvali va POST /report
  • fix(lugat): tuzatish bosqichi 8 ta soxta o'zlashma yasagan edi
  • test(lugat): HTTP qatlami testlari — endpoint ulanishi va sifat filtri
  • fix(lugat): chet so'zlarda ildiz yo'qligi ogohlantirish emas — info
  • feat(lugat): «So'z boyligi» bo'limi, teskari qidiruv va talaffuz
  • docs(lugat): spec tuzatildi — eski lug'at servisi o'lik kod emas ekan
  • feat(lugat): qidiruv lug'atni birinchi manba qiladi
  • fix(lugat): sessiya fabrikasi nomi — AsyncSessionLocal
  • feat(lugat): /api/dictionary routeri va Postgres yuklash skripti
  • feat(lugat): dictionary_entries modeli va so'rov qatlami
  • docs(lugat): ilovaga ulash implementatsiya rejasi — 8 task, TDD qadamlar bilan
  • docs(lugat): ilovaga ulash spec — jadval, API, «So'z boyligi» bo'limi
  • docs(lugat): 500 so'zlik paket hisoboti — yakuniy ma'lumot va topilmalar
  • feat(lugat): 500 so'zlik paket yakunlandi — 630 yozuv, 0 ochiq xato
  • fix(lugat): tuzatish zanjiri yakunlandi — 45 xato → 0
  • chore(lugat): 4 qatlamli tekshiruv yakunlandi — 636 yozuvda 181 topilma
  • fix(lugat): 2-qatlam solishtiruvi va o'zbekcha apostrof izchilligi
  • feat(lugat): fe'l ma'no shakli va ko'plik-bosh-so'z tekshiruvlari
  • fix(lugat): 1-qatlam soxta xatolari — manqus otlar, hamza imlosi, ildizsiz chet so'zlar
  • docs(lugat): 3/4-qatlam ko'rik mezoni — nima tekshiriladi va javob formati
  • feat(lugat): top 500 lemma ro'yxati tayyor — hamza takrorlari va korpus shovqini tozalandi
  • fix(lugat): omograflar jimgina yo'qolayotgan edi — kalitga sense_index qo'shildi
  • feat(lugat): tuzatish zanjiri, ko'rik hisoboti va parallel generatsiya
  • feat(lugat): lug'at quvuri — chastota havzasi, lemmatizatsiya, SQLite + JSONL saqlash
  • docs(lugat): lug'at tizimi spec — o'lchangan natijalar bilan yangilandi
  • feat(theme): default fon rangi «Dengiz ko'ki» bo'ldi
  • docs(android): Google Sign-In xatosini aniqlash tartibi — logcat birinchi
  • fix(android): Play build'lari Firebase konfiguratsiyasisiz chiqayotgan edi
  • docs(android): Play App Signing sertifikati Firebase'da bo'lishi shartligi hujjatlandi
  • docs: Apple entitlement arizasi yuborilmadi — ilova reader app shartiga mos emas
  • docs: infra tavsifi to'g'rilandi — Cloudflare Tunnel YO'Q
  • docs: Apple Reader App entitlement arizasi uchun tayyor javoblar
  • feat(payments): pay.toshqondiy.uz obuna sahifasi + Click sozlash shabloni
  • feat(payments): Paywall Telegram o'rniga Click to'loviga o'tdi
  • feat(payments): Click to'lov integratsiyasi — backend
  • chore(ios): build 10 — kamera usage description + iOS to'siqsiz rejim
  • fix(ios): profil rasmi xatosi + iOS'da pullik to'siqlarni olib tashlash
  • chore(ios): bump build to 9 — portret-only + video tuzatishlar
  • Merge branch 'main' of github.com:MuhammadMirrr/toshqondiy-ai
  • fix(playstore): release notes 500 belgigacha kesiladi
  • fix(playstore): release notes 500 belgigacha kesiladi
  • fix(android): colors.xml izohidagi '--' APK build'ni yiqitardi
  • fix(android): colors.xml izohidagi '--' APK build'ni yiqitardi
  • feat(orientation): ilova portret-only — landshaft butunlay o'chirildi
  • fix(video): fullscreen'da hujjat foni qora — och-ko'k ramka yo'qoldi
  • fix(video): sticky safe-area takrorlanishi va nolga tushuvchi resume
  • fix(dashboard): banner gradientini toraytirish — personaj to'liq ko'rinsin
  • refactor(dashboard): «streak/seriya» atamasini olib tashlash, banner kompozitsiyasi
  • fix(ui): yutuq modali markazda ochilsin, blur status bar zonasini ham qoplasin
  • fix(ui): tekshiruvda topilgan regressiyalarni tuzatish
  • fix(ui): audit — umumiy fayllardagi qolgan tuzatishlar
  • fix(ui): audit 1-to'lqin — 165 topilma 10 ta fayl-guruhida tuzatildi
  • fix(ui): audit poydevori — ErrorState primitivi va umumiy tuzatishlar
  • refactor(backend,lookup): Shamela kutubxonasini olib tashlash + schema qoldiqlarini tozalash
  • fix(ota): sekin mobil tarmoq uchun getLatest/download taymautlarini kengaytirish
  • fix(backend): gemma proxy auth, video progress body param, token reuse kaskadi
  • fix(ui,lookup): sahifa kengligi siqilishi va lug'at tarjimasi (iOS audit 2026-08-09)
  • chore(ios): bump build to 8
  • feat(lookup): arabcha lug'at ma'nolarini o'zbekchaga tarjima qilish (W8)
  • feat(video,ios): fullscreen landshaft qulfi va faqat-iPhone qo'llab-quvvatlash
  • chore(ios): bump build to 7
  • chore(design): audit baseline'ini tushirish (xom button 21 → 20)
  • fix(ios,statusbar): status bar uslubining teskari semantikasi va «App» nomi
  • fix(video): boshqaruvlar o'qilsin, inline play/pause qaytsin, modal scrim tepani qoplasin
  • fix(lookup): soxta natija, ko'rinmas qidiruv, ichki manba nomlari va noto'g'ri moslik
  • fix(nav,practice): qulflangan tab sababini aytsin, kartalar bir chiziqqa tushsin
  • fix(ui): do'kon nomi, muhadasa matni, kesilgan salomlashuv, sana formati, huquqiy havolalar
  • fix(stats): ball ko'rinishini yagona manbaga keltirish, bo'sh grafik va orqaga tugmasi
  • fix(stats): «Sizning o'rningiz» ro'yxatdagi joyga mos kelsin (ST1)
  • fix(backend): prompt seed'ni advisory lock bilan poygadan himoyalash
  • fix(backend): word_recommendations'da datetime/timezone import qilinmagan edi
  • test(backend): testlar konteynerda haqiqatan ishlasin, undefined-name qo'rig'i butun backendni skanersin
  • fix(backend,analysis): AI xulosalash NameError, prompt seed, reyting maxfiyligi, qotgan mezon
  • fix(ai): arabcha aralash matnda RTL buzilishi va kesilgan taklif kartalari
  • fix(speaking): jim yozuvni aniqlash — soxta transkript va yolg'on ball
  • fix(analysis): xato pill'i o'zi yopilsin — nav va tugmalarni bloklamasin
  • fix(auth): login xatosining jimgina yutilishini tuzatish
  • fix(speaking): muhadasa yozuvi saqlanmasligini tuzatish (422)
  • fix(layout): BottomNav bo'shlig'ini yagona manbaga keltirish
  • chore(ios): bump build to 6
  • fix(auth): Sign in with Apple ishlamasligini tuzatish (App Store 2.1(a))
  • chore(ios): bump build to 5
  • fix(ios): mikrofon ruxsati so'ralmasligini tuzatish
  • fix(auth): AuthValueProps chegarasiga bufer (720 → 730px)
  • fix(auth): AuthShell top safe-area ikki marta hisoblanishini tuzatish
  • fix(auth): AuthShell balandlik chegarasi va o'lik izohlar, ForceUpdateScreen a11y
  • chore(design): ratchet baseline pasaytirildi (auth + onboarding + update)
  • fix(auth): Welcome (/ index route) uchun ham compact AuthShell
  • refactor(auth): login qobig'i dizayn tizimiga ko'chirildi
  • refactor(onboarding): 3 qadamli overlay butunlay olib tashlandi
  • feat(push): ikkinchi kunda yumshoq ruxsat so'rovi (Drawer)
  • feat(push): ruxsat so'rovi qarori — ikkinchi kalendar kun
  • fix(update): GitHub APK yo'li olib tashlandi, do'kon havolasiga o'tildi
  • feat(update): platformaga mos do'kon havolasi utility'si
  • fix(plan): AuthShell'da h-full olib tashlandi — PageTransition min-h-full ichida qulaydi
  • docs(plan): login/onboarding/push/yangilanish implementatsiya rejasi
  • docs(spec): login qobig'i, onboarding, push ruxsati va yangilanish oqimi dizayni
  • chore(ios): build 4 — Sign in with Apple entitlement bilan birinchi build
  • feat(auth): Sign in with Apple — App Store guideline 4.8
  • feat(auth): hisobni butunlay o'chirish — App Store 5.1.1(v)
  • fix(ios): App Store 2.3.10 va 3.1.1 — Android havolalari va tashqi to'lov iOS'da yashirildi
  • chore(design): 4-bosqich ratchet — 7 metrika kamaydi, hujjatlar yangilandi
  • refactor(design): ikkala PageHeader o'chirildi — barcha sahifalar AppBar da
  • refactor(design): muhadasa natijasi va yordamchilari — Screen, EmptyState, Button
  • refactor(design): muhadasa tarixi — Screen + AppBar, Card, token statistikalar
  • refactor(design): muhadasa yozish oqimi — Screen + AppBar, IconButton, ProgressBar
  • refactor(design): tahlil halqasi va status pill — gradientsiz, token ranglar
  • chore(design): o'lik Speaking primitivlarini o'chirish
  • refactor(design): jonli tahlil sahifasi — Screen + AppBar, token kartalar
  • refactor(design): natija sahifasi — Screen + AppBar, tekis hero, 3D CTA
  • chore: auto-save (Claude session end) [skip ci]
  • refactor(design): insho matn kartalari — danger/success tokenlari, IconButton
  • refactor(design): ball halqasi va baholash mezonlari — token ranglar, ProgressBar
  • refactor(design): ball ranglari 4 tokenga — success/brand/streak/danger, gradientsiz hero
  • fix(design): AppBar safeTop prop — ikki karra safe-area inset tuzatildi
  • docs(design): 4-bosqich implementatsiya rejasi — Speaking + tahlil natijalari
  • chore(design): mascot quvurini hujjatlashtirish + uyqudagi miqyosini tenglash
  • feat(design): mascot 6 kayfiyat to'liq — Toshqondiy personaji
  • feat(design): mascot 'uyqudagi' holati — birinchi personaj asseti
  • chore(design): o'lik insho primitivlarini o'chirish
  • chore(design): 3-bosqich ratchet — 6 metrika kamaydi, hujjatlar yangilandi
  • refactor(design): insho primitivlari — EmptyState, ghost drawer tugmalari
  • refactor(design): WritingResultPage — Screen va EmptyState
  • refactor(design): WritingHistory — Screen, Card va token statistikalar
  • refactor(design): WritingCompose — Screen, ProgressBar va 3D CTA
  • refactor(design): TopicPicker — 4 xom tugma Button/PillSelector ga
  • refactor(design): Practice — gradientsiz 3D kartalar dizayn tizimida
  • docs(design): 3-bosqich implementatsiya rejasi — Practice + insho oqimi
  • docs(design): 2-bosqich bajarildi deb belgilandi
  • chore(design): 2-bosqich ratchet — legacy ro'yxatdan 18 satr o'chdi
  • refactor(design): DashboardBanners — 7 xom button Button/IconButton ga
  • refactor(design): DashboardVideoRail — ProgressBar + shkala shriftlari
  • refactor(design): DashboardContinueCard — Button qobiq + shkala shriftlari
  • refactor(design): DashboardSmartBanner — gradientsiz tekis bg-brand hero
  • refactor(design): DashboardHeader — gradientlar o'rniga yagona streak rangi
  • refactor(design): Dashboard ildiz konteyneri Screen ga ko'chirildi
  • refactor(design): BottomNav dizayn tizimiga ko'chirildi
  • docs(design): 2-bosqich implementatsiya rejasi — BottomNav + Dashboard
  • docs(design): 1-bosqich bajarildi deb belgilandi
  • docs(design): yadro komponentlar, /dev/kit va dark mode tuzog'i hujjatlandi
  • feat(design): /dev/kit — dizayn tizimi jonli katalogi
  • feat(design): EmptyState — 3 alohida bo'sh-holat bloki o'rniga
  • feat(design): Mascot komponenti — 6 kayfiyat, asset yetishmasa placeholder
  • feat(design): ProgressBar va ProgressRing — tone-aware progress ko'rsatkichlari
  • feat(design): Card variantlari — flat / interactive / feature
  • feat(design): Button variant=3d + tone — Duolingo uslubidagi CTA
  • feat(design): AppBar — 7 xil header va qo'lda back tugma o'rniga
  • feat(design): Screen konteyneri — min-h-screen va qo'lda safe-area o'rniga
  • chore: auto-save (Claude session end) [skip ci]
  • feat(design): 0-bosqich — dizayn tizimi poydevori va tishli qo'riqchi
  • docs(design): dizayn tizimi reseti spesifikatsiyasi — Duolingo ruhi + doimiy ratchet qo'riqchi
  • docs(claude): kontekst tozalash — doim yuklanadigan memory 40k → 31k belgi
  • refactor(video): prezentatsion komponentlarni alohida modullarga ajratish
  • perf(video): hls.js dinamik import — watch chunk 565 KB → 41 KB
  • fix(backend): video routerda rate limit, progress upsert poygasi, streak bosimi
  • fix(video): scrub yo'qolishi, 44px seek zonasi, Library header safe-area
  • fix(video): activeVideo derivation — muzlagan snapshot, soxta "tugallangan", cheksiz spinner
  • fix(video): fullscreen lifecycle — geometriya va status bar tiklash
  • docs(video): video streaming UI/UX + native kod auditi
  • chore(claude): Explanatory output style o'chirildi
  • fix(claude): video-joyla skill butunlay ishlamas holatda edi — tuzatildi
  • test(ci): sinov workflow olib tashlandi — natija olindi
  • test(ci): minimal workflow — Actions blokining sababini aniqlash uchun vaqtinchalik
  • docs(ci): Actions bu repo'da ishga tushmayotgani hujjatlashtirildi
  • feat(ios): scripts/asc_api.py — doimiy App Store Connect API klienti
  • ci: GitHub Actions workflow — lint, type-check, unit test, build
  • docs(claude): ish muhiti Mac<->server aniqlashtirildi + ios/CLAUDE.md yaratildi
  • feat(claude): hooks (guard/format/autosave) + 4 slash komanda + plugin whitelist
  • chore(claude): .claude/rules ni haqiqatga moslash — 48 keraksiz fayl o'chirildi
  • docs(appstore): kengaytirilgan kartochka tavsifi (v1.0 review'dan keyin qo'llanadi)
  • fix(ios): haqiqiy Toshqondiy logosi (Capacitor placeholder o'rniga) + build 3
  • fix(ios): NSPhotoLibrary purpose strings + build 2 (ITMS-90683)
  • feat(ios): TestFlight beta tayyorgarlik — ITSAppUsesNonExemptEncryption=false
  • fix(safe-area): Android tepadagi status bar overlap / ishonchsiz inset
  • fix(auth): WiFi'ga ulangan-u internet yo'q holatda bekorga logout bo'lishni tuzatish
  • fix(auth): Welcome loading spinner ekran markazida chiqmasligini tuzatish
  • fix(video): watch sahifasidagi UI muammolarni tuzatish
  • fix(video): native fullscreen/PiP xatolarini tuzatish, pleerni Toshqondiy dizayn tizimiga o'tkazish
  • feat(design): sync UI component library to Claude Design
  • feat(ios): iOS platform bootstrap (Capacitor) — build/login end-to-end ishlaydi
  • fix(ota): changelog'dan platformaga xos va bump-shovqinini filtrlash
  • fix(android): Play Store listing tilini 'uz' ga tuzatish (uz-UZ qo'llab-quvvatlanmaydi)
  • feat(android): Play Store store listing (matn+ikonka) yuklash skripti
  • fix(android): Play Store release alohida keystore (.env.playstore) ishlatsin
  • feat(android): Play Store avtomatik release skripti qo'shildi
  • feat(dashboard): AI yordamchi kartasi asosiy oynadan olib tashlandi
  • Revert "feat(dashboard): sokin & premium qayta dizayn (estetika — noldan)"
  • feat(dashboard): sokin & premium qayta dizayn (estetika — noldan)
  • feat(dashboard): professional polish — yangi default fon 'Bulut' + kartalar/tipografiya
  • fix(dashboard): AI karta savol uzatish buzuq edi — tuzatildi + chip shablonlari
  • fix(dashboard): AI kartasi rangini yorqin va yaltiroq qildi
  • feat(dashboard): asosiy oynaga AI yordamchi bloki qo'shildi, kun so'zi olib tashlandi
  • fix(auth): OTA reload'dan keyin har safar logout bo'lishini tuzatish
  • fix(dashboard): streak 0 bo'lganda header'dagi nuqta ko'rsatilmasin
  • fix(layout): modal ochiq paytda BottomNav ko'rinmasin (z-40)
  • fix(ota): yangilash banneri BottomNav bilan to'qnashmasligi uchun teparoq
  • fix(notifications): push yoqish banneri ruxsat rad etilganda sozlamaga yo'naltirsin
  • chore(android): cap sync — capacitor-native-settings native registratsiya
  • feat(notifications): push ruxsati rad etilganda sozlamaga yo'naltirish
  • fix(dashboard): video kartalar tepasidagi notekis oq joyni tuzatish
  • feat(dashboard): asosiy oynaga "Video darslar" lentasi qo'shish
  • feat(dashboard): asosiy oynani kontekstli "uy"ga aylantirish
  • fix(monetizatsiya): free_user_access flag'ni teg-tugi bilan o'chirish + AI race guard
  • fix(monetizatsiya): main.py'ga subscription router import (Telegram paywall qoldig'i)
  • feat(monetizatsiya): kvotalarni qayta belgilash + bo'sh va'dalarni tozalash
  • feat(monetizatsiya): Payme'ni Telegram qo'lda obunaga almashtirish
  • feat(monetizatsiya): premium video gate — stream-url tarif tekshiruvi
  • feat(monetizatsiya): frontend paywall — /obuna sahifa + obuna servisi + Pro belgi
  • feat(monetizatsiya): Payme to'lov integratsiyasi (async-native, litsenziyasiz)
  • feat(monetizatsiya): admin grant/revoke endpoint + entitlement helper
  • feat(monetizatsiya): Faza 0 — tarif (plan) poydevori, kvotalar tarif-aware
  • fix(ota): Capgo 'No update available' throw'i endi 'uptodate' — yolg'on xato xabari tuzatildi
  • fix(ota): Capgo statik import — chunk-yuklash osilishi tuzatildi (OTA uzilishining ildizi)
  • fix(ota): OTA ishonchlilik paketi — diagnostika beacon, timeout, resume-check, qo'lda tekshirish
  • chore(ui): tugma regressiya qo'riqlash (F5) — ESLint warn qoidalar, ratchet skript, hujjat
  • refactor(ui): Video/Profil/auth tugma qoldiqlari (F4) — IconButton overlay, 44px, token ranglar
  • refactor(ui): Writing/Speaking/AI tugma unifikatsiyasi (F3) — FilterChips, BadgeModal, kanonik CTA'lar
  • refactor(ui): Dashboard/Practice/lug'at tugma migratsiyasi (F2) — surface tokenlar, PillSelector, haqiqiy buttonlar
  • fix(ui): tugma quick-wins (F1) — 44px hit-area, active feedback, token ranglar, o'lik kod
  • chore: auto-save (Claude session end) [skip ci]
  • chore: auto-save (Claude session end) [skip ci]
  • feat(ui): tugma dizayn-tizimi poydevori (F0) — 44px touch, IconButton/PillSelector, focus-visible
  • feat(ota): /check so'roviga diagnostika logi — qurilma bundle holatini kuzatish
  • fix(android): noto'g'ri android:profileable atributi olib tashlandi (aapt2 build xatosi)
  • fix(ota): sovuq startda pending bundle splash ostida qo'llanadi
  • test(analysis): savedItem cache-seed asserti
  • fix(analysis): final review — auth reset, duplicate submit, cache seed, pill %, save-error UX
  • refactor(analysis): eski blocking overlay va processing-context olib tashlandi
  • fix(analysis): pill exit animatsiyasi — AnimatePresence shartli child pattern
  • feat(analysis): fonda davom pill — tahlil holati har sahifada ko'rinadi
  • feat(speaking): practice store'ga ulandi — transkripsiya jonli sahifada
  • fix(writing): offline navbatda topic AI promptga yetadi + start rejection toast
  • feat(writing): compose store'ga ulandi — darhol jonli sahifa + mavzu tanlash
  • fix(analysis): live sahifa — monoton progress, 44px tugmalar, retry indikatori
  • feat(analysis): jonli natija sahifasi — /analysis/live, fazali render
  • fix(analysis): TopicPicker 44px touch target + disabled testi
  • feat(analysis): TopicPicker — bugungi mavzular / o'z mavzum / erkin yozish
  • fix(analysis): sessiya store run-token guard — stale run yangi sessiyani buzmaydi
  • feat(analysis): navigatsiyada tirik tahlil sessiya store + hook
  • fix(ai): speaking tahlilga prompt-injection himoyasi
  • feat(ai): muhadasa streaming tahlil + topic prompt/submit plumbing
  • fix(analysis): haqiqiy median (juft son) + expectedMs NaN himoyasi
  • feat(analysis): thinking fazasi uchun vaqt-progress modeli (median + 40% cap)
  • docs(analysis): jonli natija sahifasi implementation plan (10 task, TDD)
  • docs(analysis): jonli natija sahifasi + mavzu tanlash dizayn spec
  • fix(ota): OTA zanjiri va build tozalashlari
  • fix(react): hooks/auth state'dagi 7 ta audit bugi
  • fix(network): APK tarmoq qatlamidagi 5 ta audit bugi
  • fix(backend): audit natijasidagi 10 ta bug tuzatildi
  • Merge branch 'feat/profil'
  • chore(profile): ishlatilmagan importlarni olib tashlash (userKeys, Loader2)
  • Merge branch 'feat/home-dashboard'
  • Merge branch 'feat/lugat'
  • feat(statistika): shaxsiy va global tablarni bitta minimal sahifaga birlashtirish
  • refactor(lugat): o'lik kodni tozalash + data-layer professional refaktor
  • refactor(profile): dublikatsiyani yo'qotish, o'lik sessions funksiyasini tiriltirish, rang tokenlarini tuzatish
  • refactor(dashboard): o'lik kodlarni o'chirish + tozalash
  • refactor(statistika): o'lik leaderboard kodi va keraksiz statValues'ni olib tashlash
  • fix(auth): login audit alohida sessiyada commit (refresh/reuse loglar yo'qolmasin)
  • fix(auth): split-brain pirillash (flash loop) tuzatish
  • chore: keraksiz vaqtinchalik rasmlarni o'chirish
  • docs: CLAUDE.md — prod DB SQLite→PostgreSQL + hardening yangilanishi
  • feat(db): SQLite → PostgreSQL cutover (konkurensiya yechimi)
  • perf(cache): sync Redis → redis.asyncio (event-loop bloklash yo'qoldi)
  • perf(gemma): shared httpx client + semaphore + multi-key rotation + 429 backoff; fix(security): trusted X-Real-IP instead of forwarded-allow-ips=*
  • fix(rate-limit): yagona Redis-backed slowapi limiter + real client IP
  • perf(nginx): real client IP (CF-Connecting-IP) + worker tuning
  • docs: PostgreSQL ko'chish + hardening implementatsiya rejasi (5 faza)
  • docs: PostgreSQL ko'chish + backend hardening dizayn spec
  • fix(video): ABR regressiyasi — sekin start, 720p imkonsiz, qotib qolish
  • fix(video): fullscreen'da status bar qayta ko'rinishi (tepada safe-area gap)
  • feat(video): YouTube-grade player UX — progress flush, HLS recovery, scrubber
  • feat(video): backend reliability + YouTube-grade HLS delivery
  • chore: auto-save (Claude session end) [skip ci]
  • feat(ota): 'Yangi versiya tayyor' in-app update prompti
  • fix(ui): Bildirishnomalar header — to'q ko'k bannerni sodda header'ga almashtirish
  • fix(ui): Speaking/Writing History bo'sh holat — kartasiz toza dizayn
  • fix(ui): bo'sh holatlardan g'arib oq karta + chegarani olib tashlash
  • chore: auto-save (Claude session end) [skip ci]
  • Merge branch 'main' into worktree-notifications-redesign
  • feat(notifications): premium hero redizayn + foydali in-app tizim
  • perf(compat): eski Android WebView qo'llab-quvvatlash — build target chrome64
  • chore(android): config gigienasi — keyingi APK rebuild'da kuchga kiradi
  • perf(native-feel): nativ haptika engine + cold-start preload tozalash + polish
  • merge(push): push notification + streak engagement tizimi (UI redesign, onboarding soft-ask, firebase-admin push fix, UTC+5 streak, aqlli anti-spam eslatma)
  • chore(push): planlash scaffolding (spec + plan) tozalandi — implement tugadi
  • fix(backend): formatter o'chirib yuborgan import'larni tiklash (5 kritik undefined-name) + pyflakes guard test
  • fix(backend): streak eslatma scheduler worker-safe — atomik DB-da'vo (uvicorn --workers 4 da dublikat push oldini olish)
  • test(ui): onboarding push soft-ask testlari (Ha→native ruxsat, kerakmas→skip)
  • feat(ui): bildirishnoma inbox app dizayniga moslandi (ikona tile, hammasini o'qildi, semantic ranglar); o'lik local-notifications kodi olib tashlandi
  • feat(ui): onboarding push-ruxsat soft-ask card (3-qadam; Ha → native ruxsat)
  • feat(ui): bildirishnoma sozlamalari sahifasi (push/streak toggle + eslatma vaqti drawer); Profil row havolaga aylandi
  • feat(backend): prefs endpoint (streak toggle+soat) + streak video/lug'at qidiruvdan ham saqlanadi
  • feat(backend): aqlli streak eslatma scheduler + anti-spam policy (lifespan loop, quiet hours, max 1/kun; test 7/7)
  • fix(backend): push'ni firebase-admin SDK'ga ko'chirish — event loop bloklanmaydi, o'lik token faqat UNREGISTERED'da o'chadi (test 3/3)
  • fix(backend): streak + kunlik limit kun chegarasini UTC+5 (Toshkent) ga to'g'rilash (sof helper + test)
  • feat(backend): streak eslatma DB ustunlar (models + init_db ALTER + migration 021)
  • feat(backend): Toshkent (UTC+5) vaqti helper + test (5/5)
  • docs(push): implementation plan (TDD, 4 faza, 14 task)
  • docs(push): push notification + streak engagement tizimi dizayn spec'i
  • fix(safe-area): eski APK regressiyasini oldini olish — native bridge versiya guard
  • fix(safe-area): har Android/OEM da ishonchli safe-area inset (status bar overlap)
  • chore: auto-save (Claude session end) [skip ci]
  • chore(ci): GitHub Actions workflow'larni olib tashlash (private repo startup_failure)
  • docs(claude-md): asosiy CLAUDE.md/README tuzatishlari + AUDIT eskirgan-banner
  • docs(claude-md): 5 ta hujjatni audit qilib joriy kodga moslab tuzatish
  • chore(ota): release-apk.sh apk-info (latest.json) ni avtomat yangilaydi
  • chore: remove stray screenshot files from repo root
  • fix(ota): fresh install darhol eng yangi UI — builtin versiya handshake + splash-gate
  • fix(auth): Google One Tap xatosida klassik account-picker'ga avto-fallback
  • refactor(video): kartochka stagger animation olib tashlandi
  • chore: auto-save (Claude session end) [skip ci]
  • docs(video): SPEC.md — Faza 1-4 element status va versiya tarixi
  • feat(video): visual polish — CLS, blur, radius (Faza 4)
  • feat(video): HLS mobile bandwidth optimization (Faza 3)
  • refactor(video): TanStack Query migration (Faza 2)
  • feat(video): list stagger, heart pop, smooth controls fade (Faza 1)
  • chore: e2e visual regression test + screenshot fayllar tartibga keltirish
  • feat(worker): 2-chi transcode worker parallel + progress DB sync
  • feat(video): transcoding videolar "Tayyorlanmoqda" bilan ko'rsatish + player UI polish
  • feat(video): 3 ta yangi dars + autoplay unmuted + EBU R128 loudness normalization
  • refactor(video): keraksiz setError(null) sync setState olib tashlandi (lint warning fix)
  • refactor(video): initialPositionRef → state (React Compiler warning fix)
  • feat(video): Action chiplar qaytarish + tag chiplar + landscape FS + SPEC.md
  • fix(video): Play VA Pause ikkalasi markazda (foydalanuvchi feedback'i)
  • feat(video): YouTube uslubi — Library + Watch page ajratish, Big Play markazda
  • chore: auto-save (Claude session end) [skip ci]
  • feat(video): system bars QORA faqat video sahifada (YouTube uslubi)
  • fix(video): video darslik audit fixes — backend crash guards, YouTube UX
  • chore: auto-save (Claude session end) [skip ci]
  • fix(video): rename _r2_public_url to r2_public_url (NameError fix)
  • feat(video): YouTube watch-screen UX — full redesign
  • fix(video): /library route must precede /{video_id} (422 fix)
  • feat(video): YouTube-mobile UX + R2 public domain
  • chore: auto-save (Claude session end) [skip ci]
  • feat(skills): video-joyla skill — terminaldan video upload
  • feat(video): admin UI to'liq olib tashlash (worktree sync)
  • Merge branch 'main' of https://github.com/MuhammadMirrr/toshqondiy-ai
  • fix(video): debug banner'ni olib tashlash — hamma user uchun ko'rinardi
  • fix(video): transcode progress SSE o'rniga polling — APK'da ishlasin
  • feat(video): /video-lessons sahifasiga diagnostika banner + doimiy admin sahifa link
  • fix(video): /video-lessons sahifasiga kirganda admin holatini server'dan qayta o'qish
  • fix(video): admin uchun 'Boshqarish' va 'Video qo'shish' tugmalari
  • feat(video): R2 status endpoint va admin diagnostic banner
  • fix(video): 204 status uchun response_model=None + Response import
  • fix(video): video_lessons import qaytadan qo'shildi
  • feat(video): video darslik tizimi to'liq (R2 + HLS + admin upload)
  • docs(video): deployment yo'riqnomasi va status
  • feat(video): frontend admin va user player (HLS adaptive)
  • feat(video): backend foundation va transcoding worker
  • docs(video): video darslik tizimi design spec
  • fix: enlarge auth info cards
  • feat: enrich auth onboarding cards
  • fix: polish auth screen layout
  • feat: refresh auth onboarding UI
  • feat(nav): native Android Toast double-back-to-exit uchun
  • feat(nav): Android double-back-to-exit asosiy tab sahifalarda
  • fix(nav): locked tab bosilganda toast chiqmasin
  • fix(toast): faqat error toastlar qoladi tahlil flow ichida
  • merge: GlassCard refaktor + tahlil oynasi mikro-polish
  • refactor(analysis): extract GlassCard + micro-polish overlay
  • merge: tahlil kutish oynasini premium qayta dizayn — glass overlay + global processing context
  • feat(analysis): premium glass overlay + global processing context
  • merge: tahlil kutish oynasi qayta dizayni (haqiqiy progress + jonli ball halqasi)
  • feat(analysis): tahlil kutish oynasini qayta dizayn — haqiqiy progress + jonli ball halqasi
  • Merge branch 'claude/stupefied-borg-65d92e'
  • feat(analysis): ko'p mezonli baholash + natija mantiq/UI nomutanosibliklarini tuzatish
  • Merge branch 'claude/stupefied-borg-65d92e'
  • fix(analysis): natija CTA tugmasi suzuvchi BottomNav ortida qolardi
  • Merge branch 'claude/stupefied-borg-65d92e'
  • feat(analysis): wow score hero karta + ballga qarab konfetti
  • feat(writing,speaking): natija oynasi bitta-oynaga qayta dizayn + tavsiyalar/feedback olib tashlandi
  • fix(wallpaper): orqa fon crop'ida erkin zoom/surish — rasm tor portretga majburlanmaydi
  • docs(auth): hujjatlarni Google-only login holatiga moslash + signInWithGoogle in-flight guard
  • feat(nav): chat tizimini butunlay olib tashlash + qulflangan 'O'yin' tab
  • docs(src): PageTransition edge-back + swipe fizika yangilanishi CLAUDE.md'da
  • fix(swipe): edge-back wrapper fixed inset-0 sahifalarni qulatardi (regressiya)
  • fix(release): APK Telegram caption 1024 limitiga qisqartirish
  • feat(android): chap-chet system gesture exclusion (edge-back to'qnashuvi)
  • fix(swipe): motion .stop() callback leak + edge-back touch-action reliability
  • feat(swipe): Telegram darajasidagi tab swipe fizikasi + edge-back jesti
  • feat(profile): Telegram-uslubidagi custom orqa fon (wallpaper) — frontend
  • feat(backend): custom wallpaper — bg_mode/image/blur/overlay ustunlar + endpointlar
  • docs(src): tab swipe — doimiy pager (TabPager) hujjatlashtirildi
  • fix(navigation): touch-pan-y har panelда — pager scroll konteyneri gesture'ni bekor qilardi
  • refactor(navigation): doimiy pager — tab swipe flash'ini butunlay yo'qotish
  • fix(navigation): touch-action pan-y — swipe touch qurilmada ishlamayotgan edi
  • fix(navigation): swipe sezuvchanligini oshirish — oson tetiklanish va commit
  • feat(navigation): asosiy tab'lar orasida Telegram-uslubidagi finger-following swipe
  • fix(practice): action linkdagi pill border'ni olib tashlash
  • feat(practice): premium card redesign — borders, color-tinted shadows, atmospheric glow
  • fix(fonts): Cairo o'rniga Tajawal — Readex Pro ga vizual yaqinroq
  • fix(fonts): Readex Pro broken metrics — Cairo Variable bilan almashtirildi
  • fix(search): input descender clip - line-height + overflow + height oshirildi
  • fix(search): input field'da arab descender clearance qo'shish
  • fix(search): ح va boshqa arab descender'lari kesilishini tuzatish
  • feat(ota): silliq splash cross-fade, 'Yangilandi' toast olib tashlandi
  • chore(git): to'g'ridan main'ga avto-push siyosati + SessionEnd autosave hook
  • docs: split CLAUDE.md into nested per-domain files (#30)
  • fix(speaking): MediaRecorder cleanup + drawer audio teardown
  • feat(speaking): muhadasa bo'limini insho yozish dizayniga modular ko'chirish
  • fix(ai-chat): yuborish tugmasi 2px chapga (right-1.5 → right-2)
  • fix(ai-chat): yuborish tugmasi yana 1px yuqori (3px total)
  • fix(ai-chat): yuborish tugmasi 2px ga sozlandi (4px ko'p edi)
  • fix(ai-chat): yuborish tugmasi optical center'ga 4px yuqoriroq
  • fix(ai-chat): yuborish tugmasini wrapper div ichiga olish
  • fix(ai-chat): yuborish tugmasi inputning vertikal markazida turadi
  • feat(writing): yozish sahifasiga "Oxirgi insholar" banner qo'shildi
  • refactor(writing): mavzu tanlash bo'limini olib tashlash, /writing → erkin yozish
  • feat(ai-chat): yuborish tugmasi professional polish
  • style(ai-chat): yuborish tugmasi ArrowUp ikonkasiga o'zgartirildi
  • style(ai-chat): header tugmalari joyini almashtirish
  • feat(ai-chat): chat fon brand ko'k saqlash + header polish
  • feat(ai-chat): GPT/Claude-darajasidagi UX overhaul (Phase 4)
  • feat(ai): Phase 3 — Anthropic Claude butunlay olib tashlandi (Gemma-only)
  • fix(ai-assistant): is_feature_enabled importi yo'qotilgan edi (kritik bug)
  • feat(rag): muhadasa transkripti ham RAG'ga indekslanadi
  • chore(ai): deprecation markers for Groq/Claude proxies (Phase 2.12)
  • feat(ai): AI Memory + RAG infrastructure (Phase 2.3-2.7)
  • feat(ai): Speaking analysis + topic generation Gemma'ga (Phase 2.10)
  • feat(writing): Gemma 4 31B'ga writing analysis ko'chirildi (Phase 2.9)
  • chore(ai): aniqlik mustahkamlash — temp 0.2→0.15 + ANIQLIK qoidasi promptga
  • feat(ai-assistant): Phase 2.8 + 2.11 — Gemma 4 31B migration + qisqa lingvistik prompt
  • feat(ai): Phase 2.2 — gemma_proxy.py v2 (plain text + thought separation)
  • feat(ai): Phase 2.1 — Gemini 2.5 Flash sanity test passes
  • docs(claude-md): git auto-push qoidasi feature branch'lar uchun
  • chore(ota): release script auto-cleanup + OTA policy hujjati
  • refactor(ai-assistant): UX polish — typography, header/input layout, theme cards
  • feat(ai-assistant): premium chat UI — ChatGPT/Claude darajasidagi UX
  • fix(updates): silent OTA + modal faqat APK update kerak bo'lganda
  • feat(updates): professional auto-update tizimi (banner + modal + toast)
  • fix(backend): APK MIME type + /download/app universal endpoint
  • feat(profile): Telegram-style crop, neumorphic UI, dynamic status bar, referral drop
  • feat(profile): qayta dizayn + foto/username/push backend support
  • docs(claude-md): edge-to-edge migration + yangi keyboard hooklarni hujjatlash
  • Merge pull request #29 from MuhammadMirrr/fix/keyboard-bottomnav-dropdown
  • feat(android-15): edge-to-edge plugin migration — safe-area → capawesome
  • fix(lugat): WordLookup dropdown sizing + UI cleanup
  • fix(keyboard): Telegram-pattern chat input lift + a11y input polish
  • Merge pull request #28 from MuhammadMirrr/fix/keyboard-bottomnav-dropdown
  • feat(lugat): UI/UX audit overhaul — a11y + offline-first + daily words
  • Merge pull request #27 from MuhammadMirrr/fix/keyboard-bottomnav-dropdown
  • fix(keyboard): BottomNav klaviatura ochilganda yashirilsin + dropdown to'liq ko'rinsin
  • fix(scripts): release-apk.sh APK rebuild paytida OTA bundle ham birga
  • feat(scripts): release-apk.sh + release-ota.sh — bir buyruq bilan to'liq pipeline
  • fix(ci): APK/OTA download URL'lar server'dagi public /media/ orqali
  • feat(ci+backend): release-ota.yml workflow + changelog field
  • fix(android): colors.xml XML comment'da -- taqiqlangan belgilarni olib tashlash
  • Merge pull request #26 from MuhammadMirrr/fix/lugat-bug
  • fix(lugat): klaviatura ochilganda qora fon — defensive bg-app-bg layerlari
  • chore(ci): GitHub Actions, husky pre-commit/push, lint-staged
  • feat(analytics): PostHog product analytics (EU region)
  • feat(plugins): filesystem, in-app review, local notifications
  • chore(deps): Firebase Auth 7.5 → 8.2 + firebase 11 → 12 major upgrade
  • chore(deps): Capacitor patch yangilashlar
  • feat(observability): @sentry/capacitor native crash reporting
  • Merge pull request #24 from MuhammadMirrr/fix/google-auth-asyncio-import
  • fix(auth): asyncio importi yo'qligi sabab Google login 500 xato
  • Merge pull request #23 from MuhammadMirrr/feat/login-native-shell
  • feat(layout): production-grade native shell (1.1.6)
  • feat(login): minimalistic full-screen layout (1.1.5)
  • feat(auth): login UI qayta yozish + xavfsizlik/UX kuchaytirish (1.1.3)
  • docs(claude): APK + OTA bundle birga chiqishi kerakligi haqida kritik qoida (#22)
  • Merge pull request #21 from MuhammadMirrr/merge/telegram-removal-to-main
  • chore(merge): resolve PR #21 conflicts with main (#20)
  • Merge pull request #20 from MuhammadMirrr/claude/optimistic-galileo-5a7e11
  • Merge PR #19: Telegram login butunlay olib tashlandi (Google only)
  • chore(release): APK 2.1.1 (versionCode 23), OTA bundle 1.1.1
  • feat(auth): Telegram login butunlay olib tashlandi — faqat Google Sign-In
  • fix(onboarding): BottomNav onboarding overlay paytida yashirin bo'lsin
  • feat(android): package ID — uz.toshqondiyakademiyasi.app → uz.toshqondiy.app
  • Merge pull request #18 from MuhammadMirrr/claude/optimistic-galileo-5a7e11
  • fix(keyboard+push): BottomNav klaviatura paytida yashirilishi (root yechim) + crash fix
  • feat(lookup): premium bo'sh holat illyustratsiyasi — lupa + arabcha harf + maslahat
  • Merge pull request #17 from MuhammadMirrr/claude/optimistic-galileo-5a7e11
  • fix(auth): rotation_replay grace — client race uchun push alarm yubormaslik
  • fix(auth): rotation_replay grace — client race uchun push alarm yubormaslik
  • fix(auth): refresh token race — SecureStorage write'ni await qilish
  • fix(lookup): Tarix→so'z bosilsa bo'sh ekran bugi — setSearchParams remount
  • Merge pull request #16 from MuhammadMirrr/claude/optimistic-galileo-5a7e11
  • feat(lookup): tablar va Mashhur ildizlar olib tashlandi, Tarix alohida sahifa
  • feat(lookup): Lug'at shell yumshoq, bg-app-bg bilan birlashgan
  • revert(practice): Mashq sahifasidagi blob backgrounds o'zgarishlari ortga qaytarildi
  • feat(phase-2): Profil va Mashq Dashboard darajasiga premium qayta dizayn
  • fix(auth): har OTA dan keyin logout bug — token init race + checkAuthStatus refresh
  • feat(lookup): Lug'at bo'limini Dashboard darajasiga premium qayta dizayn
  • fix(layout): BottomNav'ni RootLayout'ga ko'chirish (uchish bug fix)
  • Merge remote-tracking branch 'origin/main' into claude/optimistic-galileo-5a7e11
  • feat(fonts): Plus Jakarta Sans + Readex Pro almashtirildi (Amiri o'rniga)
  • Merge pull request #15 from MuhammadMirrr/docs/claude-md-update
  • docs: remove obsolete MOBILE_CLAUDE.md + cleanup warning in CLAUDE.md
  • docs(claude): kompleks yangilash — 16 plugin, offline-first, a11y, test infra
  • Merge pull request #9 from MuhammadMirrr/feat/login-ux-phase-1
  • Merge remote-tracking branch 'origin/main' into feat/login-ux-phase-1
  • Merge pull request #1 from MuhammadMirrr/fix/push-permission-timing
  • Merge pull request #14 from MuhammadMirrr/feat/auth-login-landing-polish
  • feat(backend): FCM push payload'iga unread_count + send_push_to_user wrapper
  • feat(pro-pass): 9 nativ-his yaxshilanishlari paketi
  • feat(pro): nativ-his sifati paketi — security, performance, observability
  • fix(offline): OfflineBanner ulandi + React Query persist + offlineFirst
  • feat(ux): long-press action menu + pull-to-refresh kengaytirildi
  • feat(native): polish APK feel — CSS, slide transitions, drawer, network, share
  • Merge pull request #13 from MuhammadMirrr/feat/auth-login-landing-polish
  • feat(toast): premium notification system with mobile-aware positioning
  • Merge pull request #12 from MuhammadMirrr/feat/auth-login-landing-polish
  • Use Telegram approval for login
  • Polish Telegram login flow
  • Merge pull request #11 from MuhammadMirrr/feat/auth-login-landing-polish
  • feat(auth): polish login landing experience
  • Merge pull request #10 from MuhammadMirrr/feat/mobile-login-redesign
  • feat(auth): redesign mobile login flow
  • feat: polish writing topic selection
  • Merge pull request #8 from MuhammadMirrr/feat/login-ux-phase-1
  • feat(writing): stream analysis and polish mobile flow
  • docs(claude): APK-first kuchaytirish — banner, har bo'lim callout, matrix yangilanishi
  • Merge pull request #7 from MuhammadMirrr/feat/login-ux-phase-1
  • fix(auth): mobile OTP login 5-bug cluster — rate limit, Turnstile, freeze, bot stale, UserTelegram
  • fix(auth): Capacitor APK detection — X-Capacitor-App header
  • Merge pull request #6 from MuhammadMirrr/feat/login-ux-phase-1
  • feat(auth): 180 kunlik refresh token pattern — access 30 daq + refresh sliding
  • Merge pull request #5 from MuhammadMirrr/feat/login-ux-phase-1
  • feat: audit 2026-04-22 fix — 4 faza (release blocker'lar + stability + design + cleanup)
  • fix: safe-area top inset global'da body'ga
  • feat: i18n va arab UI tarjimasini olib tashlash, APK 2.0.1
  • Merge pull request #4 from MuhammadMirrr/feat/login-ux-phase-1
  • feat(auth): P1+P2 login refactor — a11y, i18n/RTL, SecureStorage, Turnstile
  • Merge pull request #3 from MuhammadMirrr/feat/login-ux-phase-1
  • feat(auth): login UX polish — safe-area, edge-to-edge, demo APK, dark mode
  • Merge pull request #2 from MuhammadMirrr/feat/login-ux-phase-1
  • feat(auth): APK login UX to'liq qayta ishlangan — Faza 1
  • chore: remove unused vitest.config.ts
  • docs: document ARM64+QEMU APK build variant and sync capacitor plugins
  • fix: request push permission only on user opt-in, not at app boot
  • docs: update git remote URL to toshqondiy-ai
  • chore: initial commit — toshqondiy-ai
Yangilanish

v1.4.283

2026 M10 19

Tezlik o‘lchovi hamma sessiyada (48)

  • Merge feat/48-olchov-ulushi
  • feat(tezlik): o'lchov hamma sessiyada — eski 10 % ulush tashlanadi
  • docs(reja): 46 to'xtatildi — Muhammad: fonda pauza qolsin
  • docs(reja): 42 holati — OTA 1.4.281 prodda
Yangilanish

v1.4.282

2026 M10 19

  • Merge fix/sarlavha-fokus-ramkasi
  • fix(a11y): sarlavhadagi dastur fokusi ko'k ramka chizmasin (kirish ekrani, holat almashishi)
Yangilanish

v1.4.281

2026 M10 19

  • Merge feat/47-play-yangilash
  • feat(47): do'kon yangilanishi ilova ichida, 2 kundan keyin majburiy
  • style(backend): dictionary_service ruff format (pre-push)
  • Merge feat/42-shrift-haptika
  • feat(42): tizim shrifti 1,0–1,3, yagona haptika moduli, ekran o'quvchi
  • docs(55): 55-SPEC TAYYOR — 55.6j prodda, 17 922 maqola, MSA 85,92%, CA 85,37%; README, CLAUDE.md, avtonom yo'riqnoma yopildi
  • data(55.6j): audit 52 (0 jiddiy, 4 oddiy) + merge 517 → entries 18 020
  • data(55.6j): loan ko'rigi 353 → +10
  • data(55.6j): R (3) + H + apply
  • data(55.6j): 001-006 G (296) + S + review-sub
  • data(55.6j): 007-011 G (221) + S + review-sub
  • data(55.6j): saralash yakuni — 537 keep → 11 partiya; 19 900 qaror excluded ga; kitob navbati bo'sh
  • data(55.6): saralash 037-039 (keep 22/1500)
  • data(55.6): saralash 034-036 (keep 25/1500)
  • data(55.6): saralash 031-033 (keep 44/1500)
  • data(55.6): extra — avval rad etilgan نسبي، إلحاح olib tashlandi
  • data(55.6): saralash 028-030 (keep 36/1500); extra +4
  • data(55.6): saralash 022-024 (keep 58/1500); extra +5
  • data(55.6): saralash 025-027 (keep 49/1500); extra لكم
  • data(55.6): saralash 019-021 (keep 55/1500)
  • data(55.6): saralash 016-018 (keep 37/1500)
  • data(55.6): saralash 010-012 (keep 74/1500); توراة keep
  • data(55.6): saralash 013-015 (keep 29/1500)
  • data(55.6): saralash 007-009 (keep 75/1500)
  • data(55.6): saralash 004-006 (keep 32/1500)
  • data(55.6): saralash 001-003 (keep 74/1500)
  • data(55): 2-A — 51 fors-asl so'zda uzbek_loan false (prodda); g-extra qoidasi; jurnal
  • chore(55): 1-C — faqat-kitob saralash: skript filtri (2 065 olmoshli shakl), 42 bo'lak, triage prompti, lk55.py; 55.6j tayyorlovi bekor
  • data(55.6j): navbat 1000 (faqat-kitob) → 20 partiya
  • docs(55): 55.6i jurnali — prodda 17 405; keyingisi 55.6j
  • data(55.6i): audit 52 (0 jiddiy, 4 oddiy) + merge 317 → entries 17 503
  • data(55.6i): loan ko'rigi 273 → +3
  • data(55.6i): R (1) + H + apply
  • data(55.6i): 011-015 G (71) + S + review-sub
  • data(55.6i): 016-020 G (20) + S + review-sub
  • data(55.6i): 001-005 G (128) + S + review-sub
  • data(55.6i): 006-010 G (98) + S + review-sub
  • data(55.6i): navbat 1000 (faqat-kitob) → 20 partiya
  • docs(55): 55.6h jurnali — prodda 17 088; keyingisi 55.6i
  • data(55.6h): audit 52 (1 jiddiy: shadda; 3 oddiy) + merge 315 → entries 17 186
  • data(55.6h): loan ko'rigi 275 → +9
  • data(55.6h): 016-020 R (1) + H + apply
  • data(55.6h): 016-020 G (66) + S + review-sub
  • data(55.6h): 001-015 R (3) + H + apply
  • data(55.6h): 011-015 G (80) + S + review-sub
  • data(55.6h): 006-010 G (95) + S + review-sub
  • data(55.6h): 001-005 G (74) + S + review-sub
  • data(55.6h): navbat 1000 (faqat-kitob) → 20 partiya
  • docs(55): 55.6g jurnali — prodda 16 773; keyingisi 55.6h
  • data(55.6g): audit 52 (0 jiddiy, 6 oddiy) + merge 377 → entries 16 871
  • data(55.6g): loan ko'rigi 303 → +17
  • data(55.6g): R (2) + H + apply
  • data(55.6g): yana 5 fe'l (تَحَالَفَ…) maqola
  • data(55.6g): teskari masdar qoidasi bilan rad etilgan 8 fe'l maqola qilindi (لَانَ، حَسَدَ، اِلْتَهَبَ…)
  • chore(55): g-extra — masdar qoidasi bir tomonlama
  • data(55.6g): 006-010 G (112) + S + review-sub
  • data(55.6g): 016-020 G (39) + S + review-sub
  • data(55.6g): 012 translit noqis
  • data(55.6g): 011-015 G (82) + S + review-sub
  • data(55.6g): 001-005 G (132) + S + review-sub
  • data(55.6g): navbat 1000 (faqat-kitob) → 20 partiya
  • docs(55): 55.6f jurnali — prodda 16 396, korpusdagi kitob so'zlari tugadi; o'qish havolasi +2
  • data(55.6f): audit 52 (0 jiddiy, 1 oddiy) + merge 829 → entries 16 494
  • data(55.6f): loan ko'rigi 707 → +12
  • data(55.6f): 016-020 R (3) + H + apply
  • data(55.6f): 016-020 G (189) + S + review-sub
  • data(55.6f): 001-015 R (4) + H + apply
  • data(55.6f): 011-015 G (217) + S + review-sub
  • data(55.6f): 001-005 G (224) + S + review-sub
  • data(55.6f): 006-010 G (199) + S + review-sub
  • data(55.6f): navbat 1000 → 20 partiya
  • data(55): ض translit 15 ta 55.x yozuvda z → d (prodda)
  • docs(55): 55.6e jurnali — prodda 15 567; keyingisi 55.6f
  • data(55.6e): audit 52 (0 jiddiy, 1 oddiy) + merge 882 (ichki takror 2 olib tashlandi) → entries 15 665
  • data(55.6e): loan ko'rigi 714 → +16
  • data(55.6e): 016-020 R (1) + H + apply
  • data(55.6e): 016-020 G (221) + S; 001-015 R (3) + H + apply; ض translit → d (5)
  • data(55.6e): 011-015 G (215) + S + review-sub
  • data(55.6e): 006-010 G (220) + S + review-sub
  • data(55.6e): 001-005 G (228) + S + review-sub
  • data(55.6e): navbat 1000 → 20 partiya
  • docs(55): avtonom yo'riqnoma G qadami tozalandi
  • docs(55): 55.6d jurnali — prodda 14 685; g-extra-55.6.txt; keyingisi 55.6e
  • data(55.6d): audit 52 (1 jiddiy: odobsiz omograf ko'plik → null) + merge 827 → entries 14 783
  • data(55.6d): loan ko'rigi 694 → +20
  • data(55.6d): 011-015 R (0) + H + apply
  • data(55.6d): 011-015 G (223) + S; مومس، عهر noise
  • data(55.6d): R (4) + H + apply 15 partiya
  • data(55.6d): 016-020 G (197) + S; طاسة form
  • data(55.6d): 006-010 G (203) + S + review-sub
  • data(55.6d): 001-005 G (206) + S; لوطي noise
  • data(55.6d): navbat 1000 → 20 partiya
  • docs(55): 55.6c jurnali — prodda 13 858, MSA 85,83%, CA 85,21%; keyingisi 55.6d
  • data(55.6c): audit 52 (0 jiddiy, 4 oddiy) + kitobiy loan 7 → false + merge 902 → entries 13 956
  • data(55.6c): R 016-020 + H + apply; loan ko'rigi 668 → +2
  • data(55.6c): 016-020 G (215) + S; 001-015 R (6) + H + apply
  • data(55.6c): 011-015 G (240) + S toza + review-sub
  • docs(55): sub-agent chegarasi 2 ta (Muhammad 2026-10-17)
  • data(55.6c): 006-010 G (218) + S toza + review-sub
  • data(55.6c): 001-005 G (229) + S toza + review-sub
  • data(55.6c): navbat 1000 → 20 partiya
  • docs(55): 55.6b jurnali — prodda 12 956, MSA 85,79%, CA 85,07%; keyingisi 55.6c
  • data(55.6b): audit 52 (0 jiddiy, 3 oddiy tuzatildi) + merge 940 → entries 13 054
  • data(55.6b): loan ko'rigi 611 → +7
  • data(55.6b): R (9) + H qo'lda + apply — 940 maqola; قحبة noise
  • data(55.6b): 016-020 G (232) + S toza + review-sub
  • data(55.6b): 011-015 G (245) + S toza + review-sub
  • data(55.6b): 006-010 G (231) + S toza + review-sub
  • data(55.6b): 001-005 G (240, 11 rad) + S toza + review-sub; to'xtash nuqtasi 55-avtonom-davom.md da
  • docs(55): avtonom «davom et» yo'riqnomasi (55-avtonom-davom.md) + CLAUDE.md kirish qoidasi
  • data(55.6b): navbat 1000 (o'rin 10 592–13 677) → 20 partiya; queue55: qayta rad etilgan diniy yopiq qoladi
  • chore(55): G prompt shabloni bosqichga bog'liq emas ({STAGE})
  • docs(55): 55.6a jurnali — prodda 12 016, CA qamrovi 84,9%; dict_coverage diniyni hisoblaydi
  • data(55.6a): 973 maqola entries.jsonl ga (diniy guruh + kitob); audit 52 (0 jiddiy, 4 oddiy); nisba translit -iy (35); الْحَاقَّةُ ichki takrori; darvoza 0
  • data(55.6a): 016-020 G (248) + S + R (2) + qo'lda H; 20 partiya judged — 974 maqola
  • data(55.6a): 001-015 yengil R (9) + qo'lda H + apply — 727 maqola
  • data(55.6a): 001-010 G (485, 19 rad; diniy guruh) + S (izohda arabcha, ة translit tuzatildi); review-sub
  • data(55.6a): navbat 1000 (diniy 591 boshida) → 20 partiya; G prompt shabloni repoga
  • fix(55): G yo'riqnomasi — uzbek_loan ildizdosh so'z misollari (55.5e auditi sinfi)
  • docs(55): 55.5e jurnali — prodda 11 043, qamrov 84,5%
  • data(55.5e): 871 maqola entries.jsonl ga; audit 52 (0 jiddiy, 9 oddiy — hammasi uzbek_loan); 715 lik loan qayta ko'rigi (+103); darvoza 0 xato
  • data(55.5e): 016-020 G (214) + S + qo'lda R/H; 20 partiya judged — 871 maqola
  • data(55.5e): 001-015 yengil R (11) + qo'lda H (35: 12 tasdiq) + apply — 659 maqola
  • data(55.5e): partiya 011-015 — G (228, 23 rad; diniy endi maqola) + S; 001-010 fe'llarda o'zbekcha ildizdosh (25)
  • data(55.5e): partiya 001-010 — G (437, 78 rad) + S; review-sub
  • feat(55): lug'atda diniy so'z ruxsat (Muhammad qarori) — qo'riqchi faqat siyosiy, G/R/H/audit promptlari, diniy rad etilganlar 55.6 navbatining boshiga
  • docs(55): 55.6 kitob so'zlari — Wasit + Muxtor as-Sihoh bosh so'zlari muzlatildi, kitob55.py navbati
  • docs(55): 55.5d o'qish havolasi o'zgarmadi
  • docs(55): 55.5d jurnali — prodda 10 172, qamrov 84,3%
  • data(55.5d): 878 maqola entries.jsonl ga; audit 52 (0 jiddiy, 3 oddiy, 2 qo'llandi); darvoza 0 xato qo'riqchi: noqis ism translitida -i (18 tuzatildi), test
  • data(55.5d): 001-015 yengil R (7 topilma) + qo'lda H (30: 9 tasdiq, 6 rad) + apply
  • data(55.5d): partiya 011-015 — G (206, 48 rad) + S; ig'tirab; review-sub. Sessiya oxiri: 016-020 G boshlanmagan
  • data(55.5d): partiya 001-005 — G (241, 13 rad) + S; الشَّيْخ → الْعَجُوز; review-sub
  • data(55.5d): partiya 006-010 — G (216, 36 rad) + S toza; review-sub
  • data(55.5d): 1 000 nomzod, 20 partiya
  • docs(55): 55.5c jurnali — prodda 9 294, qamrov 84,1%
  • data(55.5c): 909 maqola entries.jsonl ga; darvoza 0 xato
  • data(55.5c): audit 52 (0 jiddiy, 9 oddiy; 8 qo'llandi)
  • data(55.5c): R (4) va H qo'lda — 3 «o'zbekchada bor», غِبٌّ hadis iborasi misoldan olindi, 17 rad
  • data(55.5c): 011-015 — R/H qo'lda (6 shubhali maqola, hammasi to'g'ri)
  • data(55.5c): partiya 011-015 — G (230, 24 rad) + S; مُعْدٍ takror rad; muhaba; qo'riqchi: لَجْنَة ≠ جنة (test)
  • data(55.5c): partiya 016-020 — G (233, 27 rad) + S; qo'riqchi: ma'nosi boshqa omograf (نَامُوسٌ) hakamga
  • data(55.5c): partiya 006-010 — G (221, 32 rad) + S; qo'riqchi: «suratga/suradi/hajmi» soxta topilmasi tuzatildi (test)
  • data(55.5c): partiya 001-005 — G (226, 29 rad) + S toza; review-sub
  • feat(55.5c): noqis ism izohi batch55 prepare ichida; 55.5c 1 000 nomzod (o'rin 6 652–7 775), 20 partiya
  • docs(55): 55.5b jurnali — prodda 8 385, qamrov 83,6%
  • data(55.5b): 931 maqola entries.jsonl ga; darvoza 0 xato
  • data(55.5b): audit 53 (0 jiddiy, 3 haqiqiy oddiy: tanvin translit 2, أَعْجَمُ ma'nosi); audit rubrikasi — 6–10 ming o'rinda B2 ham C1 ham to'g'ri
  • data(55.5b): R 017-020 (1), H 017-020 qo'lda (7 rad)
  • data(55.5b): partiya 017-020 — G (190, 15 rad) + S toza; review-sub
  • data(55.5b): H 001-016 qo'llandi
  • data(55.5b): yengil R 001-016 (8), judge-in
  • data(55.5b): partiya 013-016 — G (176, 30 rad) + S; muhama translit
  • data(55.5b): partiya 009-012 — G (187, 19 rad) + S; 2 misol neytral
  • data(55.5b): partiya 005-008 — G (198, 10 rad) + S toza; review-sub
  • data(55.5b): 002 misol neytral (مَالِك); review-sub 001-004
  • data(55.5b): partiya 001-004 — G (180, 24 rad) + S; الْأَمِيرُ → الْمَلِكُ; review-sub
  • data(55.5b): 1 000 nomzod (o'rin 5 411–6 650), 20 partiya; noqis ism izohlari
  • docs(55): 55.5a jurnali — prodda 7 454, qamrov 82,9%; o'qish havolasi mavjudini saqlaydi; aliaslar
  • data(55.5a): 948 maqola entries.jsonl ga; darvoza 0 xato
  • data(55.5a): audit 53 (0 jiddiy, 9 oddiy) qo'llandi; مَيْسِرٌ rad (diniy ibora)
  • data(55.5a): H 010-013, 018-020 qo'llandi
  • data(55.5a): H 014-017 qo'llandi
  • data(55.5a): yengil R 014-017 (18), judge-in
  • data(55.5a): yengil R 010-013, 018-020 (15), judge-in
  • data(55.5a): partiya 014-017 — G (185, 20 rad) + S; ig'tisab translit; review-sub
  • data(55.5a): partiya 018-020 — G (147, 12 rad) + S toza; review-sub
  • data(55.5a): partiya 010-013 — G (198, 24 rad) + S; عُمْرَهُ soxta topilma → حَيَاتَهُ; review-sub
  • data(55.5a): H 001-009 (17 tasdiq, 41 rad) qo'llandi
  • data(55.5a): yengil R 001-009 (16 oddiy), judge-in
  • feat(55.5): yengil R (review-sub) — Muhammad «A + B»: maqsad 1–3-qatlam, R faqat shubhalilarga
  • data(55.5a): partiya 007-009 — G (140, 13 rad) + S; noqis ism takrorlari (وَافٍ، مُسْتَوٍ، مُنْتَهٍ) rad; 010-020 ga ي li yozuv izohi
  • data(55.5a): partiya 001-003 — G (134, 28 rad) + S toza
  • data(55.5a): partiya 004-006 — G (145, 11 rad) + S; مُوَازٍ takrori rad
  • feat(55.5): queue55.py — tartib navbatidan yangi lemmalar; ال takror qo'riqchisi; harakatsiz nomzod shakl bilan adashsa chiqarilmaydi (G ga izoh); 55.5a 1 000 nomzod, 20 partiya
  • chore(55): knip — audit skrinshot skripti entry
  • chore(55): audit skrinshot skripti scripts/dict/audit/ ga (e2e dan ko'chdi), README
  • docs(55): 55.4 jurnali — prodda 6 506, qamrov 81,0%; hafta kunlari takrori yashirildi, aliaslar; README
  • data(55.4): 517 maqola entries.jsonl ga; darvoza: verify 0 xato, kalit to'qnashuvi 0
  • data(55.4): audit 33 (0 jiddiy, 4 oddiy) — xato sinfi: chet so'zga soxta ildiz; 15 ta root null, mi'atan; rubrika va G promptiga qoida
  • data(55.4): qayta R 007-011 (2 oddiy) qo'llandi — لَوْحِيٌّ misol, زَنْبَقٌ «zambaq»
  • data(55.4): H 007-011 (42 tasdiq, 14 rad) qo'llandi; qayta R kirishi
  • data(55.4): qayta R 001-006 (5 oddiy) qo'llandi
  • data(55.4): H 001-006 qo'llandi (37 tuzatish), qayta R kirishi
  • data(55.4): H 001-006 (37 tasdiq, 15 rad)
  • data(55.4): judge-in tayyor (77 tanqid + 31 savol)
  • data(55.4): R 010-011 (20 tanqid); R tugadi
  • data(55.4): R 007-009 (17 tanqid)
  • data(55.4): R 004-006 (9 tanqid)
  • data(55.4): R 001-003 (31 tanqid)
  • data(55.4): partiya 010-011 — G (83) + S toza; G tugadi (520 maqola)
  • data(55.4): partiya 007-009 — G (145, 5 rad) + S; «suratga» qo'riqchi soxta topilmasi → «rasmga»
  • data(55.4): partiya 004-006 — G (148, 2 rad) + S; 4 translit ة → -a qo'lda (miqla, misfa, mikva, fursha)
  • data(55.4): partiya 002-003 — G (100) + S (hakamga 3 savol)
  • data(55.4): partiya 001 — G (44, 6 rad) + S toza
  • data(55.4): «kam» birikmalar tahlili — 10 qism so'z nomzodga; 11 partiya (533); 4 noto'g'ri «shakl» qaytarildi (خَالَةٌ، فُطُورٌ، صِينِيَّةٌ، مُوَاصَلَاتٌ)
  • data(55.4): mavzu ro'yxati (1 667 so'z, 34 mavzu) va filtr — 1 033 bor, 527 yangi nomzod, 107 «kam» (ko'pi ikki so'zli birikma)
  • feat(55.4): mavzu_freq.py — kundalik mavzu so'zlari lug'atda bormi va MSA ≥0,1/mln filtri
  • docs(55): 55.3 jurnali — prodda, kontent havolasi 263 → 51, README
  • data(55.3): kontent audit (0 jiddiy, 1 oddiy) — مَحْذُورٌ «hazar»; o'qish havolalari qayta yig'ildi
  • data(55.3): kontent 109 maqola entries.jsonl ga (H: 4 tasdiq, 4 rad)
  • data(55.3): kontent R (4 tanqid)
  • data(55.3): kontent 007 — G (9) + S
  • data(55.3): kontent 005-006 — G (100) + S toza
  • data(55.3): audit (0 jiddiy, 1 oddiy) — بُعَيْدَ «ba'd»
  • data(55.3): kontent saralash — 109 nomzod (88 so'z + 20 grammatika atamasi + مَقُولٌ), 3 partiya; 54 alias (kontentdagi shakllar)
  • data(55.3): 153 o'quv so'zi entries.jsonl ga; gate 0 xato
  • data(55.3): H qo'llandi (22 tasdiq, 6 rad); ساءَ shakli «suiiste'mol»
  • docs(55): rubrika — gap ichida vasl alifiga harakat (55.3 ko'rigi)
  • data(55.3): R 003-004, judge-in
  • data(55.3): R 001-002 (15 tanqid, 0 jiddiy)
  • fix(55): حَرَى va حَبَّذَا jomid fe'llar ro'yxatiga; 55.3/003 S toza
  • data(55.3): partiya 003-004 — G (56 maqola, 3 rad) + S
  • data(55.3): partiya 002 — G (50) + S
  • data(55.3): partiya 001 — G (50) + S toza
  • data(55.3): o'quv so'zlari nomzodlari — 159 (sarf 64, ism vaznlari 39, nahv 66), 4 partiya; qo'riqchi unli farqini ham ko'radi (نِعْمَ ≠ نِعَم)
  • docs(55): 55.2 jurnali — prodda, o'qish havolasi 99,6%, README
  • fix(o'qish): havola — o'z maqolasi masdar/ko'plikdan ustun, harakat moslik bali, vasl alifi, yasalgan muzore faqat fe'lga; load_texts harakatli lemma bilan aniq bog'laydi
  • fix(55): guards55.norm backend normalize_arabic bilan bir xil (ئ→ي, ؤ→و); لَئِنْ/كَأَيِّنْ keyingi sense_index ga
  • data(55.2): 112 maqola entries.jsonl ga (3 partiya), o'qish matnlari havolasi 99,6%
  • data(55.2): partiya 003 — G (36) + S toza
  • data(55.2): G/R/H 001-002 merge (76 maqola); 3-partiya (o'qish matnlarida yo'q 36 so'z); aliaslar (لِـ/بِـ shakllari, ko'pliklar); qo'riqchi — harakatli nomzod shadda bilan farqlansa chiqarilmaydi; o'qish havolasi muzore yengilligi; 3 matnda harakat xatosi
  • fix(55): qo'riqchi — bitta so'zning ikki imlosi (translit va ma'no bir xil) hakamga; 55.2 R natijalari
  • fix(o'qish): bosilgan so'z havolasi harakat bo'yicha — har shaklga barcha maqolalar, matn harakatiga mos keladigani
  • data(55.2): partiya 002 — G (25 maqola) + S toza
  • data(55.2): partiya 001 — G (52 maqola) + S toza
  • data(55.2): nomzodlar — 74 yordamchi so'z (harf, olmosh, bog'lovchi, ravish), 2 partiya
  • docs(55): 55.1 prodda — zaxira, load_pg, OTA 1.4.280; README jadvallari
Yangilanish

v1.4.280

2026 M10 16

Lug‘at: yangi so‘zlar bo‘limi va «Yangi qo‘shilgan» belgisi; keng harfli ildiz doirasi tuzatildi

  • data(55.1): alias ثلاثاء → الثلاثاء (hafta kuni ال bilan yozilgan)
  • Merge remote-tracking branch 'origin/main' into feat/55-lugat-kengaytirish
  • docs(55): 55.1 jurnali — natija, darvoza, narx, chetlashishlar
  • data(55.1): qayta audit (0 jiddiy, 2 haqiqiy oddiy) tuzatildi — خَفَّ «xiffa» havolasi, سَبَّ misoli neytral
  • docs(55): rubrika — «o'zbekchada bor» ma'no bog'liqligi sharti (55.1 hakami ildizdosh-ma'nosiz havola bergan)
  • data(55.1): butun to'plam qayta R (19) → H (15 tasdiq) qo'llandi; «o'zbekchada bor» ma'no bog'liq bo'lmagan 5 ildiz havolasi olib tashlandi
  • docs(55): rubrika — misolda diniy ibora va son–sanalmish moslashuvi (55.1 qayta ko'rigi topdi)
  • fix(lug'at): keng harfli ildiz (س ش ص ض) maqola diskidan chiqmasin — ingichka bo'shliq + 10px (55.1 auditi)
  • fix(55): qo'riqchi — misolda Qur'on/hadis iborasi (55.1 auditi: بر الوالدين); butun to'plam qayta R kirishi
  • data(55.1): 109 maqola entries.jsonl ga (2 partiya, G→S→R→H→qayta R); darvoza skriptlari 0 xato
  • data(55.1): 002 H (15 tasdiq) + 001 qayta H qo'llandi
  • fix(55): G yo'riqnomasi — yevropa so'zi «o'zbekchada bor» emas (Muhammad mezoni 2026-10-10); 002 R + 001 qayta R
  • data(55.1): partiya 001 — R (10 tanqid) + H (8 tasdiq, 13 rad) qo'llandi
  • data(55.1): partiya 002 — G (40 maqola, 2 rad) + S toza
  • data(55.1): partiya 001 — G (69 maqola) + S toza; أَمَام/إِمَام qo'riqchi soxta topilmasi tuzatildi
  • feat(55): «Yangi so'zlar» — added_at, browse?new, new_count; bosh ekranda karta, ro'yxat sahifasi, «Yangi qo'shilgan» belgisi
  • data(55.1): nomzodlar — 73 qisqa lemma (T1) + 13-spec/hafta kunlari + qidiruv topilmalari, 2 partiya
  • docs(55): manba qatori prodda, 55.1 ga o'tish qarori
  • data(55.0): 8 tirik yetim yozuv prod'dan JSONL'ga qaytarildi
  • docs(55): 4-qatlam qarori — 20 000 gacha ball tartibida (Muhammad, A)
  • data(55.0): muzlatilgan tartib ranking.jsonl.gz + qatlam sanoqlari jurnalga
  • data(55.0): lemmatizatsiya 0419-0420 — barcha 421 paket tayyor
  • data(55.0): lemmatizatsiya 0415-0418
  • data(55.0): lemmatizatsiya 0411-0414
  • data(55.0): lemmatizatsiya 0407-0410
  • data(55.0): lemmatizatsiya 0403-0406
  • data(55.0): lemmatizatsiya 0399-0402
  • data(55.0): lemmatizatsiya 0395-0398
  • data(55.0): lemmatizatsiya 0391-0394
  • data(55.0): lemmatizatsiya 0387-0390
  • data(55.0): lemmatizatsiya 0383-0386
  • data(55.0): lemmatizatsiya 0379-0382
  • data(55.0): lemmatizatsiya 0375-0378
  • data(55.0): lemmatizatsiya 0371-0374
  • data(55.0): lemmatizatsiya 0367-0370
  • data(55.0): lemmatizatsiya 0363-0366
  • data(55.0): lemmatizatsiya 0359-0362
  • data(55.0): lemmatizatsiya 0355-0358
  • data(55.0): lemmatizatsiya 0351-0354
  • data(55.0): lemmatizatsiya 0347-0350
  • data(55.0): lemmatizatsiya 0343-0346
  • data(55.0): lemmatizatsiya 0339-0342
  • data(55.0): lemmatizatsiya 0335-0338
  • data(55.0): lemmatizatsiya 0331-0334
  • data(55.0): lemmatizatsiya 0327-0330
  • data(55.0): lemmatizatsiya 0323-0326
  • data(55.0): lemmatizatsiya 0319-0322
  • data(55.0): lemmatizatsiya 0315-0318
  • data(55.0): lemmatizatsiya 0311-0314
  • data(55.0): lemmatizatsiya 0307-0310
  • data(55.0): lemmatizatsiya 0303-0306
  • data(55.0): lemmatizatsiya 0299-0302
  • data(55.0): lemmatizatsiya 0295-0298
  • data(55.0): lemmatizatsiya 0291-0294
  • data(55.0): lemmatizatsiya 0287-0290
  • data(55.0): lemmatizatsiya 0283-0286
  • data(55.0): lemmatizatsiya 0279-0282
  • data(55.0): lemmatizatsiya 0275-0278
  • data(55.0): lemmatizatsiya 0271-0274
  • data(55.0): lemmatizatsiya 0267-0270
  • data(55.0): lemmatizatsiya 0263-0266
  • data(55.0): lemmatizatsiya 0259-0262
  • data(55.0): lemmatizatsiya 0255-0258
  • data(55.0): lemmatizatsiya 0251-0254
  • data(55.0): lemmatizatsiya 0244-0250
  • data(55.0): lemmatizatsiya 0240-0243
  • data(55.0): lemmatizatsiya 0236-0239
  • data(55.0): lemmatizatsiya 0232-0235
  • data(55.0): lemmatizatsiya 0228-0231
  • data(55.0): lemmatizatsiya 0224-0227
  • data(55.0): lemmatizatsiya 0220-0223
  • data(55.0): lemmatizatsiya 0216-0219
  • data(55.0): lemmatizatsiya 0212-0215
  • data(55.0): lemmatizatsiya 0208-0211
  • data(55.0): lemmatizatsiya 0204-0207
  • data(55.0): lemmatizatsiya 0200-0203
  • data(55.0): lemmatizatsiya 0196-0199
  • data(55.0): lemmatizatsiya 0192-0195
  • data(55.0): lemmatizatsiya 0188-0191
  • data(55.0): lemmatizatsiya 0184-0187
  • data(55.0): lemmatizatsiya 0180-0183
  • data(55.0): lemmatizatsiya 0176-0179
  • data(55.0): lemmatizatsiya 0172-0175
  • data(55.0): lemmatizatsiya 0168-0171
  • data(55.0): lemmatizatsiya 0164-0167
  • data(55.0): lemmatizatsiya 0160-0163
  • data(55.0): lemmatizatsiya 0156-0159
  • data(55.0): lemmatizatsiya 0152-0155
  • data(55.0): lemmatizatsiya 0148-0151
  • data(55.0): lemmatizatsiya 0144-0147
  • data(55.0): lemmatizatsiya 0140-0143
  • data(55.0): lemmatizatsiya 0136-0139
  • data(55.0): lemmatizatsiya 0132-0135
  • data(55.0): lemmatizatsiya 0128-0131; shovqin lemmasida uzunlik chegarasi yo'q
  • data(55.0): lemmatizatsiya 0124-0127
  • data(55.0): lemmatizatsiya 0120-0123
  • docs(55): sub-agent chegarasi 1 → 2 (Muhammad)
  • data(55.0): lemmatizatsiya 0116-0119
  • data(55.0): lemmatizatsiya 0112-0115
  • data(55.0): lemmatizatsiya 0108-0111
  • data(55.0): lemmatizatsiya 0104-0107
  • docs(55): sub-agent chegarasi 2 → 1 (Muhammad)
  • data(55.0): lemmatizatsiya 0100-0103
  • data(55.0): lemmatizatsiya 0096-0099
  • data(55.0): lemmatizatsiya 0092-0095
  • data(55.0): lemmatizatsiya 0088-0091
  • data(55.0): lemmatizatsiya 0084-0087
  • data(55.0): lemmatizatsiya 0080-0083
  • data(55.0): lemmatizatsiya 0076-0079; ism/ibora lemmasida bo'sh joy
  • data(55.0): lemmatizatsiya 0072-0075
  • docs(55): parallel sub-agent chegarasi 3 → 2 (Muhammad)
  • data(55.0): lemmatizatsiya 0064-0067
  • data(55.0): lemmatizatsiya 0068-0071
  • data(55.0): lemmatizatsiya 0060-0063
  • data(55.0): lemmatizatsiya 0056-0059
  • data(55.0): lemmatizatsiya 0052-0055
  • data(55.0): lemmatizatsiya 0048-0051
  • data(55.0): lemmatizatsiya 0040-0043
  • data(55.0): lemmatizatsiya 0044-0047
  • data(55.0): lemmatizatsiya 0036-0039; shovqin lemmasiga uzunlik chegarasi qo'llanmaydi
  • data(55.0): lemmatizatsiya 0032-0035
  • data(55.0): lemmatizatsiya 0028-0031
  • data(55.0): lemmatizatsiya 0024-0027
  • data(55.0): lemmatizatsiya 0016-0019
  • data(55.0): lemmatizatsiya 0010-0012, 0020-0023
  • data(55.0): oquv-manba.jsonl — 359 o'quv so'zi (sarf, ism vaznlari, nahv guruhlari)
  • docs(55.0): scripts/dict/README — 55 quvuri (Opus agentlar, --plan, zaxira, hisob daftari)
  • docs(55.0): jurnal — takror tozalash, zaxira/tiklash sinovi, lemmatizatsiya narxi, oflayn qidiruv o'lchovi
  • docs(55.0): CAMeL manbalari va sha256
  • data(55.0): lemmatizatsiya 0007-0009, 0013-0015
  • feat(55.0): content_links.py — ilova kontentidagi bog'lanmagan arabcha so'zlar (313 shakl)
  • feat(55.0): agent yo'riqnomalari (build.py → generate/review/judge/audit.md) va batch55.py zanjiri
  • fix(55.0): prodda ikki marta ko'ringan 14 takror yashirildi (kartochkasiz, havolasiz), 4 alias
  • feat(55.0): guards55 (takror, daraja, taqiqli misol, kalit) testlari bilan; lemmatizatsiya 0000-0006
  • feat(55.0): dict_coverage.py — Opus lemmatizatsiyasi bo'yicha matn qamrovi, testi bilan
  • style(55.0): restore_dict ruff
  • feat(55.0): zaxira va o'chirmasdan tiklash, takrorlar tozalandi, qo'riqchi testlari
  • feat(55.0): chuqur havza, guruhlash, lemmatizatsiya agenti, load_pg --plan va himoyalar
  • docs(55): Gemma olib tashlandi — lemmatizatsiya ham Opus sub-agentlarda (Muhammad qarori)
Yangilanish

v1.4.279

2026 M10 16

  • feat(55): CAMeL manba qatori — Yordam sahifasi va Lug'at bosh ekrani (CC BY-SA 4.0)
  • docs(reja): 55 navbatda birinchi — Muhammad qarori
  • docs(55): qamrov o'lchov skriptlari saqlandi
  • docs(55): «uzun ismlar» ma'nosi aniqlashtirildi
  • docs(55): spec pardozi — o'quv so'zlari (sarf-nahv), muzlatilgan tartib, sinov darvozasi, orqaga qaytarish, oflayn tezlik, litsenziya
  • docs(55): lug'atni kengaytirish spec'i — kamida 20 000 lemma, kenglik qatlamlari, takror va ma'lumot himoyasi
Yangilanish

v1.4.278

2026 M10 13

Orqaga/chiqish/yopish tugmalari: audit topilmalari tuzatildi

  • Merge fix/orqaga-tugmalar: orqaga/chiqish/yopish tugmalari auditi va tuzatishlar
  • test(e2e): tab steklari — faqat havoladan ochilgan ro'yxat So'z boyligiga qaytadi
  • Merge main into fix/orqaga-tugmalar
  • fix: orqaga/chiqish/yopish tugmalari — audit topilmalari tuzatildi
  • docs(reja): insho qayta qurildi — OTA 1.4.277, migratsiya 052
  • docs(audit): orqaga/chiqish/yopish tugmalari auditi — 46 topilma, sinovlar
Yangilanish

v1.4.277

2026 M10 13

Insho yozish qayta qurildi: bugungi mavzu va savollar, foydali so'zlar, namuna insho, xatolarni o'zing tuzat

  • chore(knip): insho kontenti ekran auditi (scripts/topics) — CLI kirish nuqtalari
  • Merge feat/53-insho: insho qayta qurildi (53.1 → 53.2 → 53.3)
  • docs(reja): 53 tayyor — kod main'ga, yetkazish oxirgi tasdiqdan keyin; 54 (insho 2-bosqich) navbatga
  • docs(53): jurnal — kontent 120/120, o'qitish simulyatsiyasi triaji
  • feat(53.3): o'qitish simulyatsiyasi tuzatishlari — so'z shakllari, namunada bosiladigan so'z, oddiy ishora
  • feat(53.3): 120 insho mavzusiga foydali so'zlar va namuna insho; varaq uchun shakllar
  • fix(53.3): verify_content — o'zbekcha -dir/-dek qo'shimchalari (iymondandir); haj+mi soxta emas
  • fix(53.3): verify_content — misollarda jang/iymon/harbiy kabi so'zlar ham ogohlantiradi
  • fix(53.3): verify_content — taqiqli so'z qo'shimchasi bilan ham (namozga, الصَّلَاةِ)
  • fix(53.2): tuzatish yakuni — «edi → bo'ldi» qatori flex bilan (bidi probel yutilardi)
  • feat(53.3): verify_content — chip so'zining lug'at misoli taqiqli bo'lsa ogohlantirish
  • docs(53.3): CONTENT.md — قَرَأَ istisno (o'qimoq uchun muqobil yo'q)
  • feat(53.3): verify_content — biror ma'nosi diniy bo'lgan foydali so'zga ogohlantirish
  • docs(53): jurnal — Android/iOS qurilma sinovi, to'liq e2e, kontent holati
  • test(53): Android emulyatorida insho — chiplar surilishi, varaq, klaviatura tasmasi, namuna
  • test(53): e2e — reja qadami mavzu nomi bilan, insho mavzusi «Almashtirish» orqali; AI tekshiruvi Luna'da
  • docs(53): jurnal — 53.3 ilova va kontent quvuri; hakam brifi
  • feat(53.3): kontent quvuri asboblari va doimiy e2e
  • feat(53.3): foydali so'zlar va namuna insho — ilova
  • docs(53): jurnal — 53.2, UX tekshiruvi triaji, 53.3 holati va qolgan ishlar
  • wip(53.3): foydali so'z varag'i, namuna shakllari, so'z lug'atga aniq lemma bilan
  • feat(53.3): server — mavzu foydali so'zlari va namuna insho (migratsiya 052)
  • fix(53): mustaqil UX tekshiruvi topilmalari
  • feat(53.2): «Xatolarni o'zing tuzat» — AI'siz tuzatish mashqi
  • docs(53): benchmark va prod o'lchovi natijalari; insho darajasi benchmark skripti
  • feat(53.1): server — bugungi mavzu, mavzu bazadan, so'z chegarasi, AI'ga daraja va savollar
  • feat(53.1): insho yozish ekrani qayta — bugungi mavzu, savollar, so'z talabi, sokin natija va tarix
  • docs(reja): 53 — insho qayta qurilishi spec'i (tayyor-spec)
  • docs(reja): xabarlar (toast) — OTA 1.4.276
Yangilanish

v1.4.276

2026 M10 13

Xabarlar (toast) yangi dizaynda: ixcham oq karta, markazda, uzun matn to'liq ko'rinadi

  • Merge feat/toast-qayta: xabarlar (toast) qayta yasaldi
  • docs(reja): tasdiqlash oynalari — OTA 1.4.275
  • docs(reja): xabarlar (toast) qayta yasaldi — qator va skrinshot
  • feat(toast): burchak 20, ichki ikonka kvadrati 12
  • feat(toast): ixchamroq — 64 → 52 pt, ikonka 32 px, yozuv 14/600
  • feat(toast): karta shakli, telefonda markazda; × va color-mix olib tashlandi
Yangilanish

v1.4.275

2026 M10 13

  • Merge feat/tasdiq-oynasi: tasdiqlash oynalari bitta pastki varaqqa (ConfirmSheet)
  • feat(ui): tasdiqlash oynalari qayta yasaldi — bitta pastki varaq (ConfirmSheet)
  • docs(reja): kirish ekranlari — OTA 1.4.274
Yangilanish

v1.4.274

2026 M10 13

  • Merge feat/login-qayta: kirish ekranlari qayta yasaldi + 52-spec reja
  • docs(reja): 52 — kirishsiz sinov (Apple HIG «kirishni kechiktiring») reja sifatida; kirish ekranlari qatori
  • Merge main into feat/login-qayta
  • feat(login): kirish ekranlari qayta yasaldi — ilova uslubi, bitta ekran, UX auditi
Yangilanish

v1.4.273

2026 M10 13

Profil yangilandi: daraja kartasi, natijalar, 30 kunlik faollik; Sozlamalar alohida sahifa; yutuqlar olib tashlandi

  • Merge feat/profil-qayta: Profil v3 + yutuqlar butunlay olib tashlandi
  • feat(db): 051 — user_achievements jadvali o'chiriladi (yutuqlar olib tashlandi)
  • feat: yutuqlar (achievements) butunlay olib tashlandi — XP va streak qoldi
  • feat(profil-v3): Profil qayta yasaldi — daraja kartasi, natijalar, 30 kunlik faollik; sozlamalar sahifa bo'ldi
  • chore(49): Mac App Store'ga yuborildi — skrinshot rejimi, ASC skrinshot yuklovchi, hujjatlar
  • Merge feat/49-macos: Mac App Store versiyasi (Mac Catalyst)
  • test(49): platform mock'iga isMac
  • docs(49): jurnal — lokal Mac'da ishlaydi; native reliz ro'yxatiga Mac bandi va capability ogohlantirishi
  • feat(49): Mac App Store paketi — Toshqondiy.app, ta'lim toifasi, release-mac.sh
  • chore(49): Mac sinov skriptlari — run-debug, profile (ASC API), shot, winid
  • feat(49): Mac'da video to'liq ekrani — oyna ham butun ekranga (YouTube kabi)
  • feat(49): Mac menyusi, Mac'ni aniqlash, alohida yangilanish chegarasi
  • wip(49): Mac Catalyst — haqiqiy Mac ilovasi lokal ishlaydi
  • docs(49-51): web va macOS alohida spec'larga — 49 macOS (tayyor-spec), 50 web (reja), 51 iPhone Duo (kutilmoqda)
Yangilanish

v1.4.272

2026 M10 12

  • docs(45): tayyor — vidjetlar main'da, piksel o'lchovi 136/136; native keyingi relizda (navbat 11)
  • feat(45.2): Android vidjetlari piksel darajasida — o'lcham katakdan, kunduz/tun
  • wip(45.2): Android vidjetlari — so'z kartochkasi va bugungi reja (RemoteViews)
  • chore(45): vidjet chizish va bo'sh joy o'lchovi vositasi (scripts/widget)
  • fix(45.1): vidjetlar piksel darajasida — bo'sh joy ≤19 pt, chegaradan chiqish yo'q
  • feat(45.1): iOS vidjetlari — so'z kartochkasi va bugungi reja
  • docs(44): tayyor — lending, backend, OTA 1.4.271; native keyingi relizda
Yangilanish

v1.4.271

2026 M10 12

Ulashilgan havola endi aniq darsga olib boradi (toshqondiy.uz/app/...), ilova ikonka menyusi va havolalar uchun tayyorgarlik

  • feat(44): havola ilovada ochiladi — Universal/App Links, toshqondiy://, ikonka menyusi
  • docs(49): web va macOS'da chiqarish — spec (reja), navbat oxirida
  • docs(41): Android 55 production 100% — Google kirish pre-launch logi bilan tasdiqlandi
  • docs(41): reliz jurnali spec fayliga ko'chirildi
  • docs(41): reliz yuborildi — iOS 1.4 (19) App Review'da, Android 55 internal
  • docs(43): to'xtatildi — do'kon billing'i kerak emas, Click qoladi
  • docs(40): to'xtatildi — Muhammad «kerak emas 40»
  • docs(39): tayyor — OTA 1.4.270, Muhammad videoni tasdiqladi
Yangilanish

v1.4.270

2026 M10 12

  • Merge feat/39-navigatsiya-pardoz: navigatsiya pardozi (OTA video tasdig'idan keyin)
  • feat(39): navigatsiya pardozi — svayp fizikasi, fokus, varaqlar, kirishdan keyin qaytish, iPad
  • docs(38): tayyor — OTA 1.4.269, Muhammad videoni tasdiqladi
Yangilanish

v1.4.269

2026 M10 12

  • Merge feat/38-tab-steklari: 38.2–38.3 tab steklari (OTA tasdiqdan keyin)
  • feat(38.2–38.3): tab steklari — har tab o'z ichki sahifasini eslab qoladi
  • Merge feat/38-tab-steklari: 38.1 model va drop-in navigatsiya
  • feat(38.1): tab steklari modeli, drop-in navigatsiya va lint qoidasi
Yangilanish

v1.4.268

2026 M10 12

  • Merge feat/37-android-orqaga: Android tizim «orqaga»
  • feat(37): Android tizim «orqaga» — tablar, fonga chiqish, fokus oqimlari himoyasi