# 2026-06-06 — Полная сессия (полевой тест + 9 багов + фиксы) ## Текущий статус - **Версия:** v0.47.0-dev - **APK:** https://obdai.ru/elmer.apk - **Сервер:** https://obdai.ru (5.172.178.213, nginx+gunicorn) - **Android repo:** github.com/Repinoid/elmer-android - **Server repo:** gitea.services.ngcloud.ru/Nail/elmer ## Хронология коммитов (Android) | Коммит | Описание | |--------|----------| | `6a33048` | fix: checkDevice() забыл connectAndInit() | | `739afa9` | fix: connect() идемпотентный + run() без двойного connect | | `94b890f` | bump v0.43.0-dev | | `71618c6` | fix: статус-строка — append вместо overwrite | | `d49f6d6` | fix: все appendStatus с \n, таймер на своей строке | | `3ef3532` | fix: scriptRegistered сброс в onDestroy | | `dead66c` | fix: init без ретраев, v1.5-совместимость | ## Все 9 багов 1. checkDevice без connectAndInit — AT-команды без BT-сокета 2. connect не идемпотентный — guard socket.isConnected 3. run двойной connect 4. Статус-строка overwrite — всё на appendStatus(\n...) 5. Таймер съедал заголовок — \n вместо пробела 6. scriptRegistered не сбрасывался после поворота 7. init() 70 секунд на ATAT1 — write+tryRead(2s) вместо exec 8. checkDevice слал v2-команды на v1.5 — проверка isV2 9. recover/updateAtst/handle длинные таймауты — 2000-3000мс ## ELM327: версии и команды (Wikipedia) - **v1.5 НЕ СУЩЕСТВУЕТ** — клон v1.0/v1.4 с фейковой версией - ATAT1 (adaptive timing): с v1.2 - AT@1/AT@2 (device ID): с v1.3 - ATST (set timeout): с v1.2 - Базовые (ATI, ATDP, ATRV, ATSP, ATE0, ATL0, ATS0, ATWS): с v1.0 ## Правила для Copilot 1. Коммит после каждой правки: git add -A && git commit -m "..." && git push 2. При деплое bump версии в android/app/build.gradle.kts 3. Формат: fix:/feat:/refactor:/bump:/docs: ## TODO - [ ] Разбить MainActivity.kt (~470 -> <=200 строк) - [ ] Разбить ElmChecker.kt (~270 -> <=200 строк) - [ ] Подробные комментарии перед каждой функцией - [ ] Полевой тест v0.47.0-dev на машине