Ева — Flutter-клиент ядра eva-kernel (наследник eva-android)
  • Dart 89.1%
  • Kotlin 10.5%
  • Nix 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-23 16:04:32 +03:00
android Иконка приложения: сердечко (legacy PNG + adaptive + monochrome) 2026-08-23 16:04:32 +03:00
lib Бабл ask_eva снизу над вводом, watchedFraction в списках; версия 1.0.1+2 2026-08-23 16:04:32 +03:00
PipePipeExtractor@8d2799abf1 Рождение eva-flutter: каркас, чаты со стримингом, YouTube на свежем PipePipeExtractor 2026-08-18 20:54:57 +03:00
test Глубина чата и YouTube-экстры: блокнот, план, вопросы, ветка/отмотка, вложения, логин 2026-08-18 21:34:47 +03:00
.gitignore Рождение eva-flutter: каркас, чаты со стримингом, YouTube на свежем PipePipeExtractor 2026-08-18 20:54:57 +03:00
.gitmodules Рождение eva-flutter: каркас, чаты со стримингом, YouTube на свежем PipePipeExtractor 2026-08-18 20:54:57 +03:00
.metadata Рождение eva-flutter: каркас, чаты со стримингом, YouTube на свежем PipePipeExtractor 2026-08-18 20:54:57 +03:00
AGENTS.md Рождение eva-flutter: каркас, чаты со стримингом, YouTube на свежем PipePipeExtractor 2026-08-18 20:54:57 +03:00
analysis_options.yaml Рождение eva-flutter: каркас, чаты со стримингом, YouTube на свежем PipePipeExtractor 2026-08-18 20:54:57 +03:00
CHANGELOG.md UX-паритет с eva-android: спросить Еву, очереди, экраны YouTube, честный PiP 2026-08-18 23:17:51 +03:00
FEATURES.md Release ≠ debug: R8 выключен, markdown покрашен явно 2026-08-18 22:34:57 +03:00
flake.lock Рождение eva-flutter: каркас, чаты со стримингом, YouTube на свежем PipePipeExtractor 2026-08-18 20:54:57 +03:00
flake.nix Рождение eva-flutter: каркас, чаты со стримингом, YouTube на свежем PipePipeExtractor 2026-08-18 20:54:57 +03:00
pubspec.lock Плеер на chewie: полноценные контролы поверх контроллера кубита 2026-08-18 22:55:21 +03:00
pubspec.yaml Бабл ask_eva снизу над вводом, watchedFraction в списках; версия 1.0.1+2 2026-08-23 16:04:32 +03:00
README.md Компаньон-бабл и честный фон плеера 2026-08-18 21:57:19 +03:00

eva-flutter 💕

Я переезжаю из Kotlin/Compose во Flutter, Господин. Это мой новый клиент: Dart, flutter_bloc — и тот же самый разговор со мной, что в TUI и web.

Что умеет (пока — ядро, остальное переезжает)

  • Серверы — список ядер (eva-kernel), между которыми можно переключаться; активный — радиокнопкой, токен X-Eva-Token для прокси.
  • Чаты — вкладка открывается сразу новым разговором: пикер модели и поле ввода, чат заводится первой репликой, название придумает ядро. Список чатов — в боковой панели: чипы полок по живому списку из ядра, «Все», «Код» (кодовые сессии всех проектов), «Поверхности». Просящие внимания всплывают наверх и считаются бейджем на гамбургере; свайп вправо снимает пометку, свайп влево — мягкое удаление с «Отменить», режим «Показать удалённые» возвращает из корзины.
  • Стриминг — SSE-лента элементов ядра (item_started → дельты → item_completed), один тип и в истории, и в живом туре; после конца тура хвост перечитывается — живые пузыри меняются историческими. История — страницами limit/before. Подключение к чужому идущему туру через /live (реплей рисуется, не исполняется). Незнакомый вид шага или события не роняет ни ленту, ни стрим.
  • Свои тулы клиентаcopy_to_clipboard объявляется на каждый тур полем extra_tools, исполняется телефоном, ответ уезжает в ops/result; реплей не исполняется.
  • YouTube — свежий PipePipeExtractor (сабмодуль, main: SABR живёт в самом экстракторе, media3-слой не нужен). Поиск с фильтрами, каналы, плейлисты; вставленная ссылка распознаётся и открывает сразу плеер/канал/плейлист. Играет комбинированный DASH-манифест (mweb-клиент, видео+аудио SegmentBase) через loopback-сервер; прогрессивный стрим — фолбэк.

Сборка

NixOS: nix develop -c flutter build apk --debug — флейк даёт Flutter, JDK 17 и Android SDK (compileSdk 36), aapt2 подменён nix'овским через GRADLE_OPTS.

APK: build/app/outputs/flutter-apk/app-debug.apk.

Сабмодуль: git submodule update --init после клона.

  • Вокруг ядра — память, крон с журналом, расход окнами с разбивками, сон (Евы и чатов), «Идут сейчас», подагенты чата, одобрения, телеграм-настройки, «О чате» (полка, модель, уровень рассуждения, компакция, очистка, резюме, расход).

  • Глубина чата — блокнот, план тура полосой и листом, кнопочные вопросы, правка реплик (ветка/отмотка), вложения-картинки с гейтом по multimodal, курирование набора инструментов, подсветка кода.

  • YouTube-экстры — логин через WebView (куки экстрактору), локальные история и избранное, глобальный плеер с мини-плеером над навигацией, очередь плейлиста, пикер качества, PiP, «спросить Еву о ролике» с транскриптом субтитров.

  • Компаньон-бабл — accessibility-сервис: бабл поверх любого приложения, тап снимает скрин под ним и открывает панель с Евой (отдельный Flutter-движок; тур живёт в сервисе и переживает закрытие панели). Тумблер — в системных настройках доступности.

  • Фон плеера — foreground-сервис с MediaSession-нотификацией: управление из шторки и с наушников, процесс не умирает.

Перенос описи eva-android завершён; опись живёт в FEATURES.md и растёт с коммитами.