Releases: andrew-malitchuk/inkcast-kmp
Releases · andrew-malitchuk/inkcast-kmp
Release list
0.0.1
[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
ResultLauncherfor 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
Destinationsealed class andAppNavigatorabstraction. - 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.