Commit Graph
114 Commits
Author SHA1 Message Date
torvalds 44658bec3b fix: задание от стасика 2026-06-28 16:38:32 +07:00
klockky 888a6d2075 perf(android): уменьшаем вес APK на ~33% (65→43.6 МБ)
- media_kit только для десктопа — убраны ffmpeg/libass/mdk с мобилы (~10 МБ)
- google_fonts заменён бандлом Inter/Outfit/Unbounded — убран реестр всех
  шрифтов из libapp.so (22→10 МБ)
- удалена неиспользуемая зависимость camera (CameraX)
- Dart-обфускация (--obfuscate --split-debug-info) в релизных CI + выгрузка
  символов
- кастомные шрифты с Google Fonts вернулись через FontLoader + кэш, без веса
- хардкод Inter заменён наследованием шрифта из активной темы
2026-06-25 22:51:04 +03:00
klockkyandClaude Opus 4.8 892ab75dd0 feat(macos): сборка DMG, фикс keychain и opus-библиотек
- secure storage: usesDataProtectionKeychain=false — вход в аккаунт
  больше не падает с -34018 без аккаунта разработчика
- entitlements: убран app-sandbox/keychain-access-groups (adhoc без Team ID)
- иконка: squircle с прозрачными полями (нативный macOS-вид)
- opus/ogg: битые bitcode-библиотеки ogg_opus_player заменены на
  собранные из исходников universal (.a в macos/prebuilt/opus +
  scripts/fix_opus_macos.sh применяет их после pub get)
- scripts/build_dmg.sh: adhoc-сборка universal DMG с дизайном (create-dmg)
- CI: build-macos.yml собирает DMG-артефакт; flutter-main.yml чинит libs

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 20:08:10 +03:00
klockky 6be49e32cc Merge branch 'feature/voice-video-notes' into feature/FullStack 2026-06-25 17:36:01 +03:00
klockky 7c790c4777 fix(db): бандленый SQLite через FFI — UPSERT падал на Android 9 и старше 2026-06-25 16:08:33 +03:00
klockky 9233d90e70 feat(media): голосовые сообщения и видеокружки
- голосовые: запись/отправка/воспроизведение, Ogg/Opus (libopus FFI на Windows/Android), волна, анимации, lock + slide-to-cancel
- видеокружки: нативная квадратная запись 480x480 (Camera2 + GL), аудио mono 48k, снятие video edit-list для прохождения серверного валидатора
- file_uploader: единый uploadMediaFile (аудио+видео), чтение полного ответа CDN
- проигрывание видео и кружков в message_bubble
2026-06-25 12:53:11 +03:00
klockky a6acbfb115 feat(spoof): обновил фингерпринт и версию до 26.19.2 + миграция старых профилей 2026-06-23 16:32:31 +03:00
klockky ddb60b1d71 feat(links): поддержка max.ru-ссылок и komet:// диплинков
- резолв max.ru/{join,joincall,u,c,:auth,<channel>}
- открытие чатов/профилей/звонков и подтверждение веб-входа в приложении
- внешние диплинки: intent-filter (Android), URL-схемы (iOS/macOS), komet://-регистрация в рантайме (Windows/Linux)
- fix(calls): не слать opcode 79 до login (жижа я тебя выебу)
2026-06-23 14:18:51 +03:00
torvalds ea5bf8cb9e feat(chat): догрузка сообщений 2026-06-22 22:03:56 +07:00
torvalds 655cae0a95 feat(commands): еще немного команд 2026-06-22 16:37:56 +07:00
torvalds eaf6084451 fix(spoof): сука коки зачем нам самостав айося в спуфе 2026-06-22 11:28:53 +07:00
klockky eef66b4ff9 фикс манифеста 2026-06-21 18:18:28 +00:00
torvalds c0cc679080 feat: / команды 2026-06-21 22:35:58 +07:00
klockky df2c5b3c4d fix(chats): просмотренный канал не попадает в список чатов (флаг in_list) 2026-06-21 14:31:04 +00:00
klockky 4839656301 fix(search): поиск по сообщениям через chatSearch + просмотр каналов из поиска 2026-06-21 13:37:31 +00:00
klockky 52f0b1694f feat(search): экран поиска — чаты, контакты, сообщения и поиск по номеру 2026-06-21 12:48:08 +00:00
klockky b398b07e70 feat(contacts): обмен номером телефона по NFC/BLE 2026-06-21 12:26:01 +00:00
klockky 193a28ece1 feat(contacts): синхронный показ карточки + статус обмена 2026-06-21 10:47:59 +00:00
klockky 9cc54fba01 feat(contacts): обмен контактами NFC→BLE 2026-06-21 10:18:48 +00:00
klockky 1299f1af2f feat(contacts): добавление контакта через NFC 2026-06-21 07:49:15 +00:00
klockky 08d5cabae5 feat(spoof): пер-аккаунтный спуф с тумблером и прокидыванием в веб-аппы
- спуф теперь свой на каждый аккаунт, вмораживается при входе
- тумблер вкл/выкл в настройках (по умолчанию выключен)
- новый аккаунт добавляется со своим включённым спуфом (другое устройство)
- UA спуфа прокинут в Сферум, Цифровой ID (вебвью + HTTP)
- генерация выбирает Android или iOS; iOS отдаёт deviceType IOS
- экран спуфа показывает текущую личность, а не свежесгенерированную
2026-06-20 15:15:09 +00:00
torvalds e9bc599110 fix: небольшие фиксы от линуса торвальдса 2026-06-13 23:06:54 +07:00
torvalds f00f18a421 feat: гост мод и фиксы разные всякие я линус торвальдс 2026-06-13 22:19:45 +07:00
klockky bb00cf1d09 fix(tls): убран kReleaseMode-гард, тумблер insecure-TLS работает в release 2026-06-13 09:59:10 +00:00
Jganenok ebc22cd8bd feat(chats_screen): Real-time работа с lastMsg, галочки. 2026-06-13 16:06:41 +07:00
Jganenok b9a89a4437 feat(calls): Я ЕБЛАН ХАХАХХА Я ШАШКИ ЧЕРЕЗ ЗВОНКИ СДЕЛАЛ 2026-06-13 00:42:14 +07:00
Jganenok 34cd52335e feat(calls): Щас попробую легонечко с data channel побурмалдить 2026-06-12 22:19:57 +07:00
Jganenok afbfa33b99 feat(calls): Тяжело...... Звонки. Вроде полностью. Почти. 2026-06-12 22:19:57 +07:00
Jganenok e4ed1c10e1 feat(frontend): flossy стиль. Выбор градиент/без 2026-06-12 00:13:13 +07:00
Jganenok e66f760a16 feat(calls): я в рот блять ебал эти звонки ваши ебучие Ыuka 2026-06-11 22:08:51 +07:00
klockky 94d3e44354 feat: полное отображение типов сообщений + предпросмотр ссылок и оптимизация фото
Модели (lib/models/):
- attachment.dart — новые типы ShareAttachment (OG-карточка ссылки) и
  CallAttachment (звонок); FILE получил вложенное превью и поле token;
  LOCATION — поле zoom; единый декодер previewData (сырой WebP → data-URI)
  вынесен в decodeAttachPreview
- poll.dart — корректный парсинг голосов ({userId,timestamp}) и признак
  своего голоса (options & 1); helper withStateMap

Лента сообщений (message_bubble.dart):
- SHARE — карточка предпросмотра ссылки (картинка, домен, заголовок,
  описание), тап открывает URL
- CALL — отображение звонков: аудио/видео/групповые/пропущенные,
  длительность, направление; симметричная иконка
- LOCATION — карточка геопозиции, тап открывает карту
- FILE — превью-картинка над строкой файла
- кликабельные ссылки в тексте и подписях (LinkText)
- фикс лишней ширины бабблов гео/share/опроса (IntrinsicWidth + stretch)
- оптимизация рендера фото: убран fade-in, уменьшен размер декода
  плиток фото-сетки

Опросы:
- интерактивное голосование через opcode 304 (polls.dart, poll_view.dart):
  одиночный/множественный выбор, отметка своего ответа, проценты

Список чатов (chats.dart):
- превью типа вложения для сообщений без текста («Фото», «Опрос: …»,
  «Звонок», «Геопозиция», «Файл: …», «Ссылка: …» и т.д.)

Настройки разработчика:
- тумблер «Предпросмотр ссылок» (app_link_preview.dart) — отключает
  SHARE-карточки, оставляя текст со ссылкой; применяется на лету

Прочее:
- зависимость url_launcher ^6.3.1 (open_external_url / open_location_on_map)
- bump версии 0.5.0+11 → 0.5.0+12
2026-06-11 17:14:36 +03:00
klockky cf154b006b feat: звонки 1:1 (аудио) — WebRTC + ws2-сигналинг
Реализованы голосовые звонки 1:1 поверх инфраструктуры VK/OK
(flutter_webrtc + сигналинг ws2 wss://videowebrtc.okcdn.ru). Протокол
восстановлен реверсом захваченных пакетов и декомпиляцией
ru.ok.android.externcalls.sdk.

Ядро (lib/core/calls/):
- conversation_params.dart — декодер vcp (LZ4-блок), с unit-тестом
- ws2_signaling.dart — клиент сигналинга ws2 (transmit-data, ICE,
  accept-call, hangup, change-media-settings, ping/pong)
- call_session.dart — WebRTC-контроллер для звонящего и вызываемого
- call_controller.dart — глобальный оркестратор: пуш opcode 137,
  исходящие, приём/отклонение, управление активной сессией

Бэкенд:
- CallsModule.initiateCall — инициация исходящего (opcode 78)
- общий LZ4-block декодер вынесен в core/protocol/lz4_block.dart
  (используется и транспортом, и vcp)

UI / обвязка:
- CallScreen переписан под живой CallSession (+ кнопка «свернуть»
  без завершения звонка, возврат повторным нажатием 📞)
- кнопка звонка в шапке диалога
- инициализация CallController на логине, показ входящего по пушу
- дев-тумблер: принудительный сигнал состояния микрофона без
  изменения реального аудиотрека

Прочее:
- зависимость flutter_webrtc ^0.12.5
- Android: RECORD_AUDIO / MODIFY_AUDIO_SETTINGS / BLUETOOTH
2026-06-10 18:21:27 +03:00
Jganenok d89c1366e2 feat: доделал работу с медиа. 2026-06-10 12:57:30 +07:00
Jganenok 32aa869b89 feat: работа с вложениями 2026-06-10 00:58:19 +07:00
Jganenok e587ef184b fix: большой фикс недочетов и фикс пары язв 2026-06-09 01:00:04 +07:00
klockky 06b5720638 feat(digital-id): Цифровой ID — WebView-мост к оригиналу + нативный режим
Реализован функционал Цифрового ID (паспорт, СНИЛС, ИНН, ОМС, водительское,
СТС и др.) двумя путями с переключателем в меню разработчика.

WebView-мост (по умолчанию):
- Открывает оригинальную страницу digital-id.max.ru и реализует нативный
  хост-мост window.WebViewHandler (postEvent/receiveEvent), который настоящее
  приложение MAX предоставляет нативно: lifecycle-события, биометрия,
  SecureStorage/DeviceStorage, OpenLink (переход на Госуслуги) и заворот
  OAuth-callback (externalCallback) обратно в мини-апп.
- botId Цифрового ID резолвится из settings-entry-banners конфига логина
  (как Сферум).

Нативный режим:
- DigitalIdModule — REST-клиент к ext-api.max.ru (все эндпоинты по образцу
  библиотеки gaijin: biometry, docs, esia, qr, verify, acms, profile),
  авторизация через #WebAppData= из webAppInitData.
- Модели документов и экран онбординга/просмотра.

Прочее:
- Тумблер AppDigitalIdNative (WebView/нативно) и кнопка «Сбросить Цифровой ID»
  (очистка кук и данных WebView) — в настройках разработчика.
2026-06-08 18:23:23 +03:00
Jganenok 628c809fd2 ГОВНОЧИСТ, ГОВНОЧИСТ ГОВНОЧИСТ. ОХ ГОВНА Я КОНЕЧНО УНЕС 2026-06-07 14:06:35 +07:00
Jganenok 5b9aaf7d7e цэ фронт хуйнюшки которая где медиа отправлять 2026-06-07 13:11:20 +07:00
klockky 2daf384dad fix(spoof): persist and apply all spoofing fields 2026-06-06 19:36:24 +03:00
Jganenok a2851b3681 Возможность войти в приложение без соединения. Вроде фикс issue #33 2026-06-05 13:11:28 +07:00
klockky 4804c5bc1d Merge remote-tracking branch 'origin/feature/FullStack' into feature/app-icon-switcher
# Conflicts:
#	pubspec.lock
2026-06-03 18:06:43 +03:00
Jganenok db9de4d8a2 оптимизация: слегоньца набурмалдил 2026-06-03 13:55:14 +07:00
klockky 4bdb0e70cf feat: кэширование файлов/видео + управление кэшем в дев-меню 2026-06-02 20:40:03 +00:00
klockky 1a3570f942 feat: поддержка медиа-вложений — опросы, видео, файлы и просмотр фото
Опросы (новый тип сообщения):
- модель Poll/PollAnswer и PollAttachment (_type: POLL)
- PollsModule: загрузка через opcode 306 (GET_POLL_UPDATES) с кэшем
- рендер опроса в баблах (вопрос, варианты, прогресс-бары, голоса)

Видео:
- getVideoUrl через opcode 83 (VIDEO_PLAY): выбор MP4_*/HLS из ответа
- полноэкранный плеер (video_player) с play/pause и перемоткой
- тап по видео в чате запускает воспроизведение

Файлы:
- getFileUrl через opcode 88 (FILE_DOWNLOAD) с корректным форматом
  {messageId, chatId, fileId} → url (раньше слался неверный {url, token})
- скачивание во временную папку и открытие системным приложением
  (path_provider, open_filex)

Фото:
- полноэкранный просмотрщик с зумом (был TODO-заглушкой)
- фикс «сжатости»: декодирование с учётом devicePixelRatio вместо ×2
2026-06-02 20:06:46 +00:00
klockky 5ff914b0dc feat: мимикрия протокола (opcode 6 + LZ4) и фиксы UI (истории, 2FA) 2026-06-02 18:28:31 +00:00
klockky d35729e911 feat: отправка chatCacheFingerprint и exp в login-пакете (opcode 19) 2026-06-02 17:09:23 +00:00
Jganenok 4afdf4b61e изменение профиля 2026-05-31 17:43:58 +07:00
Jganenok 838e892bbc онэмашке 2026-05-29 18:38:33 +07:00
Jganenok 5a3890c55e набурмалдил 2026-05-29 13:52:13 +07:00
Jganenok d8a2b8ec6d размер шрифта 2026-05-28 21:29:47 +07:00