Skip to content

Поддержка compose multiplatform#858

Open
raininforest wants to merge 9 commits into
developfrom
feature/kmp
Open

Поддержка compose multiplatform#858
raininforest wants to merge 9 commits into
developfrom
feature/kmp

Conversation

@raininforest

Copy link
Copy Markdown
Collaborator

sdds-uikit-compose

Compose Multiplatform

  • sdds-uikit-compose переведён на Kotlin Multiplatform;
  • общий код компонентов и ресурсов перенесён в commonMain;
  • платформенная логика вынесена в соответствующие source sets;
  • добавлены цели Android, JVM, iOS, macOS, JS и Wasm.

sdds-icons-compose

Мультиплатформенные иконки

  • добавлен новый KMP-артефакт io.github.salute-developers:sdds-icons-compose;
  • иконки представлены как ImageVector и доступны из commonMain;
  • добавлены автоматическая генерация и отдельный workflow публикации;
  • обработаны коллизии имён на case-insensitive файловых системах.

Theme Builder

Генерация Compose Multiplatform

  • добавлен режим compose.multiplatform(true);
  • код генерируется в commonMain/kotlin, ресурсы — в commonMain/composeResources;
  • генерация шрифтов переведена на Compose Resources;
  • добавлены мультиплатформенные реализации для иконок, типографики и определения размера окна;
  • исключена генерация Android-only API в CMP-режиме;
  • обновлена генерация интеграционных модулей и словаря компонентов.

Docs

Объединение модулей

  • модули docs-compose, docs-views и docs-ksp объединены в единый модуль docs;
  • обновлены зависимости и импорты в документации и fixtures.

Sandbox

Compose Multiplatform sandbox

  • общий UI sandbox перенесён в commonMain;
  • добавлены адаптивные mobile/large layouts и мультиплатформенная навигация;
  • платформенная логика системных панелей, back handling и обновлений разделена по source sets;
  • sdds.serv.compose переведён на CMP вместе с темой, ресурсами и интеграционным модулем;
  • добавлены launcher-ы для Android, Desktop, iOS, macOS, JS и Wasm.

Build system

  • обновлены convention-плагины для KMP-библиотек и приложений;
  • добавлен общий набор CMP-целей;
  • JVM target повышен с 8 до 11;
  • Compose Multiplatform обновлён до 1.8.2;
  • обновлены связанные версии Compose, Coroutines, Navigation и Lifecycle.

What/why changed

Изменения добавляют сквозную поддержку Compose Multiplatform: от базовых компонентов и иконок до генерации тем, документации и демонстрационного приложения.

Это позволяет переиспользовать SDDS Compose UI и сгенерированные дизайн-системы на Android, Desktop, iOS, macOS и Web без дублирования платформенного кода.

Тестирование

  • добавлены unit-тесты CMP-генерации шрифтов, типографики, иконок и вариаций компонентов;
  • добавлены тесты адаптивного layout и back navigation sandbox;
  • Android screenshot-тесты сохранены после миграции структуры source sets.

Особенности миграции

  • для сборки теперь требуется JVM 11;
  • вместо отдельных docs-модулей необходимо использовать docs;
  • шесть Compose-иконок временно исключены из генерации из-за коллизий имён на macOS и Windows.

Связанные изменения: #847, #849, #851, #852, #855.

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 1298e3fd-8684-4c4e-9dbd-3173108da113

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/kmp

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@salutedevs

salutedevs commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

📦 Собранные Debug APK

📲 Как установить APK на Android-устройство:

  1. Распакуйте архив.
  2. Скопируйте нужный .apk на устройство (через USB, Telegram, Google Drive и т.д.).
  3. Откройте .apk на устройстве и подтвердите установку.
    Если потребуется, включите Разрешение на установку из неизвестных источников в настройках устройства.

💻 Установка через USB (ADB):

  1. Включите Отладку по USB на устройстве (Настройки → Для разработчиков).
  2. Подключите устройство к компьютеру по USB.
  3. Убедитесь, что устройство отображается:
    adb devices
  4. Установите .apk:
    adb install path/to/your.apk
    Если приложение уже установлено и нужно обновить:
    adb install -r path/to/your.apk

@salutedevs

salutedevs commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

@raininforest
raininforest force-pushed the develop branch 2 times, most recently from e283d8e to 998f66b Compare July 23, 2026 14:50

@angirb angirb Jul 24, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Modal обрезается на всех multiplatform-платформах, кроме Андроид мобайл, особенно заметно на large screen. Компоненты, которые используют modal/overlay, также ограничиваются границами модального контейнера.
  2. Notification, Toast и Dropdown обрезаются границами модального окна. Из-за этого Notification/Toast появляются по границе экрана, а у Dropdown dimBackground модальное окно тоже обрезается.
Image Image Image Image Image

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. iOS mobile: BottomSheet при edge-to-edge открывается не на полную ширину экрана.
  2. bottomSheet не отключается dimBackground/useNativeBlackout везде кроме Android mobile.
Image

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. CodeInput на large screen увеличивает шрифты, но spacing/paddings не увеличиваются.
Image

видео не грузит, могу в личку прислать

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. DropZone: drag не работает.
  2. Segment: selected item получает hover-state так, что selected-state становится не подсвечивается.
  3. macOS/iOS Simulator mobile: не отображаются изображения в Avatar/AiUserMessage.
  4. ComboBox: checkmark после выбора элемента отображается белым.
  5. Focus selector не появляется при Tab-навигации на Button/TextField/etc.
  6. Focus selector появляется по mouse click на CheckBox/RadioBox.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants