diff --git a/morda.md b/morda.md index cf6da34..1c47354 100644 --- a/morda.md +++ b/morda.md @@ -123,3 +123,51 @@ - `/api/v1/ping-llm` ✅ - `/api/v1/chat` ✅ - `/api/v1/session/upload` с `dynamic_samples` ✅ + +## Текущий макет (реализовано) + +``` +elmAI v0.68 📡🟢 ELM🟢 ECU🟢 LLM🟢 ← одна строка +[ ОШИБКИ / ДИАГНОСТИКА / СТАРТ / СТОП ] + вывод +[ 📋 История ] ⏱ 12с ← таймер справа +[____________________________] [➤] ← 3 строки ввода +``` + +## Логика кнопки (стейт-машина) + +| State | Текст | Цвет | Действие | +|-------|-------|------|----------| +| INIT | ⚠️ ОШИБКИ | 🟠 | scanDtc() | +| DTC | 🔍 ДИАГНОСТИКА | 🔵 | runDiagnostics() | +| DIAG | ▶ СТАРТ | 🟢 | startDynamicRecording() | +| START | ⏹ СТОП | 🔴 | stopDynamicRecording() | +| STOP | ▶ СТАРТ | 🟢 | не используется | + +- Кнопка неактивна (alpha=0.4) если ELM 🔴 или ECU 🔴 +- Поле ввода неактивно если LLM 🔴 +- После DTC-сканирования ECU → 🟢 +- После СТОП → DIAG (можно снова СТАРТ) + +## Исправлено (v0.57 → v0.68) + +| v | Что | +|---|-----| +| 0.57 | Layout v2, иконки, трансформер | +| 0.58 | Всё в одной строке | +| 0.59 | setIndicator в runOnUiThread | +| 0.60 | LLM → 🤓 | +| 0.61 | Таймер в строке Истории, нет ELM → кнопка неактивна | +| 0.62 | Поле ввода неактивно без LLM | +| 0.63 | 🤓 → 🎓 | +| 0.64 | 🎓 → LLM текст | +| 0.65 | СТОП работает, ECU 🟢 после сканирования | +| 0.66 | ensureConnected всегда перед dynamic test | +| 0.67 | Кнопка неактивна без ECU | +| 0.68 | Двойной вызов checkLlm/checkEcu убран, таймер в catch | + +## Известные проблемы (TODO) + +- `findElmDevice()` возвращает null при >1 устройствах (диалог асинхронный) +- Android 12+ — startChecks до получения BT-разрешений +- `State.STOP` не используется