Skip to content

Releases: andrew-malitchuk/inkcast-kmp

Release list

0.0.1

Choose a tag to compare

@andrew-malitchuk andrew-malitchuk released this 04 Apr 10:45

[0.0.1] - 2026-04-03

Initial release of Inkcast KMP -- a Kotlin Multiplatform companion app for CrossPoint Reader, an open-source e-ink reading device. Runs natively on Android and iOS from a shared Compose Multiplatform codebase.

Added

Core Architecture

  • Clean Architecture project structure with 28+ Gradle modules organized into common, data, domain, and presentation layers.
  • Convention plugin system (build-logic) for unified application, feature, library, and DI module configurations.
  • Koin 4.1.1 dependency injection with module-based wiring across all layers.
  • Orbit MVI 11.0.0 state management (State, Intent, SideEffect) across all feature modules.
  • Kotlin Multiplatform 2.3.20 targeting Android (minSdk 27) and iOS from a single codebase.

Data Layer

  • Ktor 3.1.3 HTTP client with platform-specific engines (OkHttp for Android, Darwin for iOS).
  • CrossPoint REST API integration for device file operations, status queries, and settings control.
  • WebSocket-based file upload protocol with real-time progress tracking.
  • UDP broadcast device discovery with manual IP fallback.
  • EPUB 3 builder with platform-specific ZIP generation (Java for Android, Foundation+minizip for iOS).
  • Article download and HTML-to-EPUB conversion pipeline with image extraction.
  • DataStore Preferences + multiplatform-settings 1.3.0 for cross-platform preference persistence.
  • Preference sources for device IP, last connected IP, language, theme, and onboarding status.
  • CouchbaseLite (KotBase) 3.2.4 integration for local database support.
  • Repository layer orchestrating network, preference, and platform data sources into domain models.

Domain Layer

  • Repository interfaces: ReaderRepository (file ops, device status/settings, discovery, EPUB upload, article processing), ConfigureRepository (theme, language, onboarding).
  • 25+ use case interfaces covering configuration management and reader operations.
  • Use case implementations with ResultLauncher for typed error propagation.

Presentation - Core

  • Compose Multiplatform 1.10.2 shared UI with Material3 theming.
  • Navigation system based on AndroidX Navigation 2.9.2 + Navigation3 with Destination sealed class and AppNavigator abstraction.
  • Design system with custom theme tokens: color palettes (light/dark/system), font sizes, line heights, spacing scale, and typography presets.
  • UI kit following Atomic Design: buttons (Primary, Secondary, Text, Icon with state/size variants), inputs, toggles, chips, progress indicators, sliders, crop box, auto-size text, snackbar stack.
  • Molecule-level components: headers (Simple, Navigation, Action), TabBar, SegmentedButtonGroup, ItemCard, FolderNavigationCard, SettingRow, ChipGroup.
  • Organism-level components: AppBottomSheet, AppPullToRefreshBox, AnimatedSequenceHost.
  • Squircle shape system for iOS-inspired rounded corners.
  • Splash screen with custom animation and timed dismissal.
  • Multiplatform localization supporting English, Ukrainian, Spanish, and German.

Presentation - Features

  • Home: Main hub with 4 tabs (Files, Create, Sleep, Device) and bottom tab navigation.
  • Files: Device file browser with nested folder navigation, upload via FileKit 0.10.0, download, create folder, rename, delete, move, and pull-to-refresh.
  • Create: URL-to-EPUB and Text-to-EPUB workflows with real-time progress tracking, file size preview, and automatic upload to device.
  • Sleep Screen: Image selection and interactive crop (pan/zoom), widget overlay support (calendar, quote), e-ink rendering preview, Floyd-Steinberg dithering, and upload to device.
  • Device: Dashboard displaying firmware version, uptime, free RAM, IP, Wi-Fi mode; controls for screen orientation (4 modes) and UI theme (Classic, Lyra, Lyra Extended).
  • Connection: Auto-discovery via UDP broadcast and manual IP entry with online/offline status verification.
  • Onboarding: First-time setup wizard for device connection.
  • Settings: Theme selection (Light, Dark, System), language switching (EN, UK, ES, DE), device connection management.
  • About: Project information screen.
  • Splash: App initialization with animated transition.

Platform Features

  • Image processing pipeline: center crop, gesture-based crop with normalized offsets, bilinear resize (480x800 for e-ink), grayscale conversion, Floyd-Steinberg 4-level dithering.
  • Share intent support for accepting URLs from other apps.
  • Platform-specific date/time abstraction.
  • Widget rendering for calendar/quote overlays on sleep screen images.

Build and Quality

  • Gradle 9.1.0 with Kotlin 2.3.20 and Java 21.
  • Type-safe Gradle project accessors across all modules.
  • Explicit API mode enforced in all KMP modules.
  • F-Droid publication metadata (fastlane structure) with screenshots, descriptions, and YAML configuration.
  • KDoc documentation across styling, UI kit, navigation, data, and feature modules.