Repository navigation
Releases
MiniiChat v1.0.2
Dark mode legibility fix, stable signing for in-place upgrades, and two new feature groups.
Install
miniichat-1.0.2-arm64-v8a-release.apk for most modern phones (recommended), or miniichat-1.0.2-armeabi-v7a-release.apk for older 32-bit ARM.
v1.0.2 onward uses a stable signing certificate, so future upgrades install in place without needing to uninstall first. Upgrading from v1.0.0 / v1.0.1 still requires one final uninstall because their signatures were ephemeral.
Dark mode
- Tightened the static dark palette: lighter
onSurfaceVariant, stronger surface contrast for chips, hints, and dividers - Material You dynamic color in dark mode now overrides the legibility-critical roles, so wallpapers that produced low-contrast text no longer turn body copy nearly black
New feature: per-provider HTTP customization
- Provider editor is now a full-screen page (was a cramped dialog)
- Advanced section adds key/value editors for custom HTTP headers and extra body params — lets you set things like OpenRouter's
HTTP-Referer, Anthropic'santhropic-version, or any provider-specific JSON option - Saved values are sent on every
/chat/completionsand/modelsrequest
New feature: message actions (long press)
- Long-press any message to open a menu
- User: Copy / Edit / Regenerate from here / Delete
- Assistant: Copy / Delete
- Inline edit mode rewrites the message in place
- "Regenerate from here" branches the conversation: drops everything after the chosen user message and re-runs
Build
- versionCode 7 / versionName 1.0.2
- ABI splits: separate
arm64-v8aandarmeabi-v7aAPKs - Stable signing keystore committed to the repo (public OSS signature)
- GitHub Release attaches release APKs only
Acknowledgements
Feature scope inspired by rikkahub (Apache-2.0) and kelivo (AGPL-3.0). No source copied — original Kotlin/Compose. Go give them a star too.
MiniiChat v1.0.1
Bug-fix release. Two release APKs: arm64-v8a (most modern phones, recommended) and armeabi-v7a (older 32-bit ARM devices). Pick whichever matches your device.
Bug fixes
- Editor state leak — editing one provider/assistant then another no longer shows stale data
- Chat scroll thrash — list no longer animates on every streamed token
- DataStore I/O during streaming — UI updates in-memory each token; persistence throttled to 250ms
- Settings two-way binding — slider / system prompt no longer drop input on rapid changes
- Send debounce — re-entrant taps while a stream is in flight are now ignored
- Regenerate keeps attachments — re-running a message no longer drops the user's images / files
- Attachment OOM — 10 MB hard cap with streaming size guard, oversize files rejected with a Toast
- Assistant delete button — now properly disabled (greyed out) when only one assistant remains
- Error dialog — only offers "Open Providers" when the error is actually about provider config; otherwise just OK
- i18n leftovers — drawer date headers ("Today / Yesterday / Previous 7 days / 30 days / Older") and Settings section headers now use string resources, so Chinese mode no longer shows English text
- formatBytes — 1-decimal precision (1.5 KB instead of "1KB")
Build
- versionCode 6 / versionName 1.0.1
- ABI splits: separate APKs per architecture
- APK filename:
miniichat-<version>-<abi>-release.apk - GitHub Release attaches release APKs only; debug builds remain a CI artifact
Acknowledgements
Feature scope inspired by rikkahub (Apache-2.0) and kelivo (AGPL-3.0). No source copied — original Kotlin/Compose. Go give them a star too.
MiniiChat v1.0.0
First stable release.
Install: download miniichat-1.0.0-release.apk below.
Highlights
- Multi-provider with auto-fetch
/modelsand bottom-sheet picker (11 presets including OpenAI, OpenRouter, DeepSeek, Groq, Mistral, Together, Gemini, SiliconFlow, Ollama, LM Studio) - Custom assistants with name / emoji avatar / system prompt / optional temperature override (4 built-in presets)
- Prompt variables:
{model} {provider} {assistant} {date} {time} {datetime} {weekday} {locale} - Media attachments — images sent as base64 data URLs (works with vision models like gpt-4o, gemini-1.5, claude-3.5-sonnet); files inlined as text refs
- Streaming with stop button, regenerate, copy
- Markdown: headings, fenced code blocks, lists, quotes, bold / italic / inline code / strike
- Material You + theme mode (system / light / dark) — dynamic color on Android 12+
- Bilingual UI: English / 简体中文
- Drawer: search, date-grouped chat list, per-row rename / delete
- Base URL auto-appends
/v1if missing; provider model lists collapse after 5 entries - System back navigates up: drawer → picker → sub-screen → chat → exit
Technical
- Native Kotlin + Jetpack Compose, Material 3
- Ktor + OkHttp + kotlinx.serialization
- DataStore preferences, no backend, no analytics
- Min Android 8.0 (API 26)
- Two artifacts:
release(CI-signed, recommended) anddebug(unminified, for development)
Acknowledgements
Feature scope inspired by rikkahub (Apache-2.0) and kelivo (AGPL-3.0). No source code copied — all original Kotlin/Compose. Go give them a star too.
MiniiChat v0.4.2 — bug fixes + media attachments
Bug fixes (from v0.4.1 testing)
- Streaming flag clears immediately after AI reply finishes — no more waiting a few seconds before sending the next message
- Preset selection no longer overwrites your typed Base URL / Name. The preset URL becomes a placeholder and is used only when the input is left empty
- Provider model lists collapse after 5 entries, with Show more / Show fewer
New: media attachments
- New + button in input bar with Image / File submenu
- Picked attachments shown as removable chips above the text input
- User bubble renders attachment chips above the text bubble
- Image attachments sent as base64 data URLs in OpenAI-compatible multipart content (works with vision-capable models like gpt-4o, gemini-1.5, claude-3.5-sonnet)
- File attachments inlined as text references for non-vision models
Min Android 8.0 (API 26).
MiniiChat v0.4.1 — bug fixes
Fixes for issues reported in v0.4.0.
- Auto-append /v1 to provider base URLs missing a version suffix on save
- Remove unused + button from input bar (was a no-op placeholder)
- User messages now render as right-aligned chat bubbles (social-app style); assistant keeps avatar + full-width markdown
- System back button navigates up properly: drawer closes drawer, model picker dismisses, Providers/Assistants returns to Settings, Settings returns to Chat, only exits the app from the Chat root
Min Android 8.0 (API 26).
MiniiChat v0.4.0 — assistants, i18n, dynamic theme
Functionality port inspired by kelivo's public feature list (no code copied — kelivo is AGPL, miniichat is MIT; all original Kotlin/Compose).
Custom assistants
- Create / edit / delete assistants with name, emoji avatar, system prompt, optional temperature override
- 4 built-in presets: Default / Coder / Translator / Writer
- Manage in Settings → Assistants
Prompt variables
- {model} {provider} {assistant} {date} {time} {datetime} {weekday} {locale}
- Rendered into the active system prompt before every request
Per-provider customization
- customHeaders + extraBody fields on every provider
- Sent on /chat/completions and /models requests
- (Editor UI for these fields will land in a follow-up; data model + plumbing already wired)
Material You + theme mode
- Dynamic color toggle (Android 12+)
- Theme: Follow system / Light / Dark
Language
- Settings → Language: System / English / 中文
- Chinese translation for all UI strings
Min Android 8.0 (API 26).
MiniiChat v0.3.0 — flat iOS-style UI + custom icon
Major UI redesign + new launcher icon.
UI:
- Dropped the glass look entirely. Now pure-white (light) / near-black (dark) flat UI.
- Message stream is iOS-list style: small sender header (avatar + name) above full-width markdown content. No chat bubbles, no gradient backgrounds, no blur.
- Top bar: conversation title centered + a small model/provider pill chip below.
- Input bar: simple rounded grey surface with circular send/stop button.
- Hairline 0.5dp dividers, no shadows.
Launcher icon:
- Custom adaptive icon built from a user-supplied source image.
- Foreground PNG at 432px with 66% safe-zone padding.
- Background color sampled from icon edges (#F7F0F1).
- Legacy mipmap PNGs at all 5 densities, including round variants.
Min Android 8.0 (API 26).
MiniiChat v0.2.0 — Glass UI + multi-provider
Major redesign.
Glass UI
- Iridescent gradient backdrop with blurred color blobs (lavender / cyan / peach / lime)
- Translucent surfaces with hairline borders and an inner highlight stroke
- New palette tuned for the glass look (light / dark)
Multi-provider
- Add any number of OpenAI-compatible providers, each with its own base URL + API key
- 11 built-in presets: OpenAI, OpenRouter, DeepSeek, Groq, Mistral, Together, Gemini (OpenAI shim), SiliconFlow, Ollama, LM Studio, Custom
- Manage providers in Settings → Providers
Model picker
- Tap the model chip in the top bar to open a bottom-sheet picker grouped by provider
- Search box filters across all providers
- Fetch models button on each provider card calls
GET /modelsand pulls the full list - Manual add: type any model id and tap +
- Tap any model chip to make it active
Min Android 8.0 (API 26).
MiniiChat v0.1.1 — UI refactor
Minis-style UI refactor.
- Drawer with search + date-grouped chats (Today / Yesterday / 7d / 30d / Older), per-row 3-dot menu
- Top bar shows current model name + chat title subtitle
- Assistant messages: avatar + full-width markdown (no bubble); user keeps right-side bubble
- Pill-shaped input bar with attach + arrow-up send / stop
- Inline markdown renderer (headings, fenced code, lists, quotes, bold/italic/code/strike)
- Animated typing indicator
- Selectable text on all messages, per-message Copy
- Empty state with Settings hint when API key missing
Min Android 8.0 (API 26).
MiniiChat v0.1.0
First release.
- OpenAI-compatible chat client (works with OpenAI, OpenRouter, DeepSeek, Groq, Ollama, LM Studio, etc.)
- Jetpack Compose + Material 3 UI, dark/light, dynamic color on Android 12+
- SSE streaming with stop button
- Local conversation history + settings via DataStore
- MIT licensed
Min Android 8.0 (API 26).