A Kotlin Multiplatform Strinova Wiki resource browser & downloader, built with Compose for Desktop and Android.
| Desktop | Android |
|---|---|
![]() |
![]() |
- 🔍 Smart Search — 4 search modes: voice-only categories, all resource types, file search (namespace 6), and portrait/illustration.
- ⚡ Concurrent Downloads — Scan category trees and download files with configurable concurrency.
- 🎵 Audio Playback — In-app playback for
WAV,OGG,FLAC, andMP3files. - 🖼️ Rich Preview — Live image previews for
PNG,JPG,WebP, and animatedGIF. - 🗂️ File Selection Dialog — Per-category file picker with search, language filtering (CN/JP/EN), and image preview.
- 🔍 Search History — Persistent search suggestions.
- 🔄 MP3/FLAC → WAV Conversion — Batch-convert downloaded audio to WAV with configurable sample rate and bit depth. Optional WAV merging.
- ⌨️ Keyboard Shortcuts —
Ctrl+Ffocus search,F5re-search,Ctrl+Ddownload,Ctrl+A/Ctrl+Shift+Aselect / deselect all,Ctrl+1~4switch modes,↑↓navigate, and more. - 🎛️ Windows Backdrop — Switch between Mica, Tabbed, Acrylic, Aero, and other Windows 11 backdrop styles at runtime.
- 🪟 Custom Title Bar — Borderless native window with custom caption buttons and drag-to-move support.
- 🖥️ Compatibility — Graceful fallback on non-Windows-11 devices with gradient background.
- 🏠 Wiki Hub — Native client for browsing characters, weapons, maps, costumes, game modes, announcements, voting, and more — no WebView needed.
- 🖼️ Gallery — Browse wallpapers, stickers, and comics in a native image gallery with section filtering and fullscreen preview.
- 🌐 Built-in Wiki Browser — Embedded WebView with cookie persistence, auto-login detection, user info display, and file download/upload support.
- 🖼️ Portrait Viewer — Swipeable multi-image preview per costume with image type labels and page indicators.
- 📁 File Manager — Browse downloaded files with multi-select mode (long-press), batch delete/share, image gallery preview, and audio playback.
- 📊 Download History — Track past downloads with status and file count.
- ⭐ Favorites — Bookmark characters for quick access.
- 💾 Offline Cache — Disk cache for Wiki resources with offline-first mode, cache pruning, and manual cache clearing.
- 🎨 Material You — Dynamic color with wallpaper-based seed color, light/dark/system theme, and liquid glass effects.
| Component | Technology |
|---|---|
| Language | Kotlin 2.3.10 |
| Async | Kotlin Coroutines |
| Network | OkHttp 5 |
| Serialization | kotlinx.serialization |
| UI Foundation | Compose Multiplatform 1.10.3 |
| Component | Technology |
|---|---|
| UI | Compose Fluent UI, ComposeWindowStyler |
| Audio | javax.sound.sampled, mp3spi, jflac-codec |
| Image | javax.imageio.ImageIO (GIF frame decoding) |
| Native | JNA 5 (Windows API) |
| Component | Technology |
|---|---|
| UI | Jetpack Compose + Material 3 |
| Image Loading | Coil 3 (async + GIF) |
| Web | Android WebView |
| Audio | Android MediaPlayer |
| Architecture | AndroidViewModel + StateFlow |
src/
├── commonMain/ # Shared business logic
│ ├── data/ # Wiki API core, models, serialization
│ ├── portrait/ # Portrait parsing & organization
│ └── util/ # File extension utilities
├── desktopMain/ # Desktop (Windows) target
│ ├── data/ # OkHttp client, image loader, cookies
│ ├── viewmodel/ # State management
│ ├── ui/screens/ # Screen composables
│ ├── ui/components/ # Reusable UI components
│ ├── util/ # Audio conversion, preferences
│ └── jna/windows/ # Win32 API bindings
└── androidMain/ # Android target
├── core/ # Cache, media, navigation, network, preferences, shared UI
├── feature/ # Feature-first modules
│ ├── character/ # Character list/detail/costumes
│ ├── weapon/ # Weapon list/detail/skins
│ ├── wiki/ # Hub, maps, gallery, activities, decorations, stringer pages
│ ├── download/ # Search, download, history, portrait viewer
│ ├── settings/ # App settings and update checks
│ └── tools/ # File/audio/text utilities
└── MainActivity.kt
# Build the project
./gradlew.bat build
# Run Desktop app
./gradlew.bat run
# Build Android APK
./gradlew.bat assembleDebugFor macOS/Linux, use
./gradlewinstead of./gradlew.bat.
- 📡 API Dependency: The app depends on Bilibili wiki endpoints; availability may vary depending on network conditions.
- 📱 Android: Requires Android 8.0 (API 26) or later.
See LICENSE.txt for more information.

