Commit Graph
62 Commits
Author SHA1 Message Date
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
klockky 4c0dd48a3a fix: порядок логина при хэндшейке + регистрация FCM-токена (pushOptions) 2026-06-10 11:35:17 +03: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
klockky 5eaa425c8f feat(webapp): мини-приложения через webAppInitData, вход в Сферум 2026-06-07 18:28:59 +00:00
Jganenok e954e0bc3b я балбес, фикс #33 2026-06-05 14:11:41 +07:00
Jganenok a2851b3681 Возможность войти в приложение без соединения. Вроде фикс issue #33 2026-06-05 13:11:28 +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
Jganenok 838e892bbc онэмашке 2026-05-29 18:38:33 +07:00
Jganenok 5a3890c55e набурмалдил 2026-05-29 13:52:13 +07:00
Jganenok e7f401b01d просто босс, просто начальник нахуй оптимизации 2026-05-29 11:21:41 +07:00
Jganenok 0947863697 легонько набурмалдил, остальнось сделать FKM и фронт уведомлений 2026-05-28 16:44:59 +07:00
Jganenok 58c02003fc жесты 2026-05-28 00:07:27 +07:00
klockky 8a9832c85b feat: десктоп-режим — 2-pane с ресайз-разделителем при ширине окна ≥ 900px 2026-05-26 17:32:29 +03:00
klockky d963af407d второй стиль меню действий: список (как в telegram); выбор в кастомизации 2026-05-23 08:22:05 +00:00
klockky ad3885cfb3 fix: импорт package:flutter/rendering.dart для RenderRepaintBoundary 2026-05-22 18:43:31 +00:00
klockky 939dabbd86 анимация circular reveal при смене темы 2026-05-22 18:17:56 +00:00
klockky 5a9f7363dd фикс подтормаживания при смене темы 2026-05-21 06:37:10 +00:00
klockky 3e4aeea4de кастомизация темы — режим, AMOLED, расписание переключения 2026-05-21 05:59:34 +00:00
Jganenok 99b87a56c7 немножко реал тайма в chat screen 2026-05-17 23:26:50 +07:00
Jganenok 7fd0206c34 закрепление и мьют чатов 2026-05-17 19:49:29 +07:00
Jganenok d3f9b10d01 отправка файлов, анимации с реанимации 2026-05-17 16:11:30 +07:00
klockky c4eaae501b fix(security): close critical findings #1-3 from issue #17
- TLS: validate cert chain by default; debug-menu toggle to disable
  - Logs: redact secrets in sender/dispatcher payloads
  - Identity: per-install mt_instanceid/deviceId, per-launch clientSessionId
2026-05-16 23:36:28 +03:00
Jganenok 590c9ed1e2 ну немножечко так оптимизировал чутка, добавил раздел 'производительность' в насторйки, немного сделал чуточку в кастомизации, пару мелочей переделал 2026-05-16 21:10:21 +07:00
klockky 26407a63aa fix(fonts): make font size reactive via ValueNotifier 2026-05-16 12:41:06 +03:00
klockky f4d40de8b9 perf(theme): memoize themes to stop AnimatedTheme re-lerp storm 2026-05-16 12:03:12 +03:00
klockky 9d8c815821 feat(customization): system font, custom Google Fonts by URL, font size slider 2026-05-16 11:25:08 +03:00
klockky 8848ad1769 feat(customization): font switcher with Unbounded, styled via m3e 2026-05-16 10:58:14 +03:00
klockky 5b3af0541f fix(network): make non-VPN network selection robust + show failure reason 2026-05-16 09:16:52 +03:00
klockky c46579d916 fix(network): trigger VPN bypass on handshake failure too 2026-05-16 08:34:54 +03:00
klockky 6e3cdc434d feat(network): VPN bypass — bind to non-VPN net (wlan*/rmnet*) when tun detected + dev toggle 2026-05-16 07:45:29 +03:00
klockky 5a6cb10c91 feat(push): FCM via MAX server — oneme flavor, dedicated FCM workflow, opcode 22, notifications + CI/lint fixes 2026-05-15 18:14:22 +03:00
Jganenok 74917dd3ec даты, починил какую то хуйню с переподключением при старте 2026-05-15 16:26:19 +07:00
klockky 5db3b2d135 feat: тактильная отдача + тумблер в настройках 2026-05-15 07:26:27 +03:00
klockky 53805e8d74 Merge branch 'feature/FullStack' of https://github.com/KometTeam/Komet into feature/FullStack 2026-05-14 13:16:50 +03:00
klockky d541e9df9d fix(transport): Zstd-распаковка, гонка PacketReceiver, fix имён и стикеров 2026-05-14 13:12:41 +03:00
Jganenok 2991dd4500 изменение профиля 2026-05-13 23:57:38 +07:00
prime 72ac52b9b5 руки переломаю 2026-04-29 19:02:44 +10:00
Ваше Имя 3c8621d5fe нахуевертил 2026-04-12 14:18:26 +07:00
klockky 4d4958a25f feat(settings): версия приложения, секретное меню разработчика и перетаскиваемый FPS-оверлей 2026-04-05 21:36:21 +03:00
Ваше Имя a9ed2b4859 Фронт сообщений в чате, пока только текстовые 2026-04-05 19:14:16 +07:00
klockky a683748a33 fix(ui): center folder tab labels in chat list 2026-04-05 13:28:22 +03:00
Ваше Имя 095155fcf9 Fix code analysis issues: remove unused imports, debug prints, fix deprecated methods and naming conventions 2026-04-04 22:15:55 +07:00
klockky fbbd284a7a feat(theme): system light/dark mode and Material You dynamic colors 2026-04-04 16:02:36 +03:00
Ваше Имя 3f99bda6d2 нахуевёртил 2026-04-04 13:31:13 +07:00
klockky 80f528f4fb Added localization support for multiple languages, including Russian and English, and integrated language selection in the login and country selection screens. Updated pubspec.yaml and pubspec.lock to include necessary dependencies. 2026-04-03 21:29:45 +03:00
Ваше Имя 676c2c715f бля это сэкс 2026-04-03 20:54:12 +07:00