Changelog
Last updated: June 9, 2026
Phase 5 — June 2026
Current release
June 9, 2026 — v0.4.70 — Gemini Pro Token Expansion
Targeted token budget increases for Gemini Pro models, which use extended thinking internally and need 4000+ tokens to produce complete responses.
Token Budget Expansion
- GEMINI PRO — FULL RESPONSES: Gemini 2.5 Pro and 3.1 Pro now get a 5000-token ceiling for PRO and Founder users. These models use extended thinking before replying, consuming tokens invisibly — previous 2500 cap was cutting responses mid-sentence.
- GEMINI FLASH ON PLUS: Gemini Flash models on NAKAMA+ now use the PRO-tier token ceiling (2500 instead of 1500), enabling richer multi-character group responses.
- BACKEND CAP RAISED: Standard (non-Founder) model cap for Gemini 2.5 Pro, 2.5 Pro Preview, and 3.1 Pro Preview raised from 3500 → 5000 on the server side, matching the new client defaults.
Credit Repricing
- GEMINI 2.5 PRO: 10 → 12 credits per message (reflects actual cost)
- GEMINI 3.1 PRO: 12 → 15 credits per message
- CLAUDE SONNET 4.6: 10 → 12 credits per message
June 9, 2026 — v0.4.69 — Subscription Screens + Paid Founder
All subscription screens fully updated with accurate pricing, model lists, and the new paid Founder path via PayPal.
Subscription UI
- PAID FOUNDER CARD: Non-founder users now see a Nakama Founder card ($79.99/mo) in the subscription screen with a "Subscribe on Web" button linking to the PayPal checkout page.
- PLAN CARDS UPDATED: All plan cards (Free, NAKAMA+, PRO, Founder) updated with current feature lists and accurate pricing.
- CURRENT TIER BANNER: Tier detection now correctly highlights NAKAMA_PLUS_PERMANENT users as "+ plan active."
June 9, 2026 — v0.4.68 — Chat Recovery + Tuning Slider Fix
Root-cause fix for the long-standing chat disappearing bug (reported by Oll), plus a fix for the response length slider resetting after using the preset chips.
Response Tuning Fix
- SLIDER NO LONGER RESETS: The Short/Normal/Detailed preset chips previously overwrote the response length setting saved in the Tuning Sheet. Now the preset chips use a separate session-only state — your saved Tuning Sheet value is always preserved and shown when you reopen it.
Chat Recovery Fixes
- PAGINATION FIX: Recovery after reinstall was silently truncated at 1000 messages by PostgREST's default row limit. Users with >1000 total messages had recently-chatted characters permanently lost. Now paginates in 1000-row batches to recover ALL characters.
- NEW CONVERSATION BUG: Starting a "New Conversation" incorrectly deleted cloud history, making characters unrecoverable after reinstall. Fixed — new conversation now only clears local messages, preserving cloud history for cross-device recovery.
- RECOVERY FALLBACK: Added a 3-second safety net in the chat list screen — if Room is still empty after startup (e.g. auth session was not ready when MainViewModel ran recovery), re-triggers cloud recovery automatically.
- FASTER RECOVERY: Recovery now downloads the 200 most recent messages per character (most recent first) instead of doing a slow full bidirectional sync. Full sync still runs when each chat is opened.
June 9, 2026 — v0.4.21–v0.4.67 — Community & Infrastructure
Backend hardening, role sync fixes, and a major goodwill upgrade for all early members.
Community Upgrade
- ALL MEMBERS UPGRADED: Every current Discord member has been upgraded to Early Permanent Founder — full model access, all features, locked forever. Grandfathered from the original Beta phase.
- +50,000 CREDITS: All 49 app accounts received +50,000 credits as a thank-you for patience during the role sync issues.
- PAYPAL DONATION LINK: Community support link added — any amount welcome, no obligation.
Discord Bot & Role Sync Fixes
- DISCORD_GENERAL_CHANNEL_ID: Was set to guild ID instead of #general channel ID — announcements were silently failing. Fixed.
- DISCORD_SETUP_DONE: Bot was re-running full server setup (creating duplicate roles, channels) on every Railway restart. Fixed with persistent env var.
- PAYPAL_CLIENT_ID duplicate: A variable with a trailing space was shadowing the real key, potentially using sandbox credentials for live transactions. Duplicate removed.
- New member pipeline: Every new Discord joiner automatically receives "Nakama Plus Permanent" role via GuildMemberAdd. New app signups default to NAKAMA_PLUS_PERMANENT tier via Railway env var.
- Role sync reliability: autoLinkByName cross-matches Discord display names + usernames against app usernames + display names for accurate tier assignment without manual linking.
- PAID FOUNDER TIER: New paid path to Founder status — Nakama Founder plan at $79.99/mo grants "Paid Founder" Discord role, 20,000 credits/month, 300 free Claude messages, full model access.
June 4–5, 2026 — v0.4.7–v0.4.20 — Open Testing Foundation
Two days of emergency fixes, community-driven debugging, platform polish, and full crash coverage. Special thanks to 堕落的魅魔 (jinyueshizhang) for tracking down every root cause.
Critical Fixes
- DATA LOSS (v0.4.7): Room DB migration was missing try/catch — crash loop on update, users had to reinstall losing all data. Fixed with safeAddColumn() wrappers on all migrations. Destructive fallback permanently forbidden.
- PUBLISH 404 (v0.4.7): Publish endpoint queried non-existent column → HTTP 400 → every publish returned 404 for all users. Removed bad column from select.
- AVATAR BREAK (v0.4.7): unpublishCharacter() was deleting storage images — republish pointed to deleted files. Storage files now preserved on unpublish.
- CLOUD BACKUP (v0.4.7): Every character save silently backs up to Supabase (drafts included, privately). Startup sync every 6h. Auto-recovery on launch if 0 local characters. Local backup before every DB migration.
Group Chat — 9 Bugs Fixed
- v0.4.8: Discover groups appearing in My Groups — migration DEFAULT 1 stamped all rows isOwned=true. fixLegacyIsOwnedFlags() corrects on startup.
- v0.4.8: Group chat title resetting on navigation — fixed with DataStore 2-tier cache (survives all navigation patterns).
- v0.4.9: Groups appearing as "Unknown Character" in chat list — ChatsViewModel now uses unfiltered group chat list to exclude all group IDs.
- v0.4.13: Groups missing after reinstall — recoverGroupChatsFromCloud() restores user's own published groups on startup.
- v0.4.14: Recovered groups invisible (no messages after wipe) — ALL group chats now appear in Chats tab regardless of message history. Fallback recovery if no groups found 1.5s after startup.
- v0.4.16–v0.4.17: Ghost delete icon after swiping or long-pressing to delete — both paths now remove the GroupChat entity from Room, not just messages.
- v0.4.10–v0.4.12: AI Writer button wired to a dead screen (orphaned) — rewired to CreateTabScreen, now visible at the top of character creation.
AI Character Writer
- NEW (v0.4.18): ✦ Build Character button now fully wired — calls backend, fills all fields at once: name, tagline, opening message, tags, full 8-section long description. Two-call backend: main description + lightweight meta extraction.
- NEW (v0.4.12): 📋 Template button loads the Nakama v5 structure in your app language. All 7 templates written by hand — zh-CN, zh-TW, ja, ko, de, es, vi. Locale auto-detected.
- FIX (v0.4.12): AI Writer fully localized. Japanese rewritten entirely by hand (machine translation was broken). All 57 strings × 7 languages.
- COST: 5 credits per generation.
Cosmetics
- NEW (v0.4.19): 🖼️ Custom Chat Background — upload any image as chat wallpaper (global, applies to all chats). $0.99.
- NEW (v0.4.19): ✨ Animated Avatar Frame — rotating arc animation around your profile picture. $1.99.
- NEW (v0.4.19): 🌟 Profile Theme Pack — custom colors and layout. $4.99.
- NEW (v0.4.19): 🎨 Accent Color — swap the signature purple. Free for Nakama+. $0.99 others.
- FOUNDERS: All cosmetics auto-granted on every device. Settings → Appearance → tap any item to configure.
- BACKEND: /api/cosmetics, /api/cosmetics/apply, /api/cosmetics/purchase endpoints live. Ownership syncs to DataStore on startup for offline use.
Localization
- ONBOARDING (v0.4.17): Full manual audit — Korean and Spanish gender options were in English. German corrected Sie→du throughout. Japanese improved (get_started, date fields, feedback). zh-rCN/zh-rTW naturalness pass.
- AI WRITER (v0.4.12): Japanese rewritten from scratch — machine translation was empty strings and escaped characters. zh-rTW Traditional Chinese fully corrected. All 7 languages hand-reviewed.
- TEMPLATES (v0.4.17): Character templates written by hand in all 7 languages. No LLM translation used.
- DISCORD WELCOME (v0.4.17): Both SFW and Full builds show community welcome on first launch with Discord link. Localized into 7 languages manually.
Crashlytics Coverage (v0.4.20)
- Every catch block in every Repository and ViewModel now records to Crashlytics. Nothing fails silently before open testing.
- Files covered: CharacterRepository (6 gaps), CosmeticsRepository (2), AuthRepository (3), GroupChatViewModel (1), CreditRepository (3), StorageRepository (4), CharacterCreateViewModel (1).
- NavGraph already had screen tracking via setCurrentScreen() on every route — every crash shows which screen the user was on.
Platform Systems
- Claude cap: PRO users get 500 Claude messages/month included. Messages 501+ cost 10cr each. Founders: unlimited always. Graceful in-app dialog with fallback to DeepSeek.
- AI write cost: 5 credits per generation (was 2).
- Invite system fix: !invite-lb command fixed (was querying broken view). !link command added — links Discord ID to Nakama account. Credits land in app once discord_id column exists on profiles. Pending credits stored until account linked.
- Cosmetics backend: /api/cosmetics ownership system live. Founders auto-granted all cosmetics. Purchase flow ready for Phase 4 Paddle integration.
Discord & Server
- All member roles corrected: join date ≤ June 3 = Founder, June 4 = Nakama Plus Permanent.
- Bot updated — new members auto-receive Nakama Plus Permanent Discord role.
- APP_DEFAULT_TIER=NAKAMA_PLUS_PERMANENT on Railway — all new signups get Nakama Plus Permanent.
- Phase 4 and Phase 4b welcome-back dialogs removed from app (legacy).
June 3, 2026 — v0.16.1 — Chat Customization + Full i18n
- NEW — CHAT APPEARANCE: Tap ⋮ (3-dot menu) in any chat → Appearance. Choose Message Style (Classic / Bubbles), Background (Dark / Midnight / Rose / Glass + opacity), Text Size (Small–XL with live preview), Message Spacing (Compact / Normal / Relaxed). All settings saved per-device.
- NEW — STORY STARTERS: Scene chips appear when starting a new chat — 🎲 Random / ☀️ Warm / ⚡ Tense / 🌙 Mystery. AI generates a 2–3 sentence opening scene and drops it into your input. Chips hide after first message.
- NEW — RESPONSE PRESETS: ⚡ Short / 💬 Normal / 📖 Detailed chips always visible above the input bar for quick length changes.
- NEW — SCROLL TO BOTTOM: Floating ↓ button appears in chat when scrolled up — one tap returns to latest messages.
- NEW — APPEARANCE SETTINGS: Settings → Appearance → Visual Customization gives a full screen for font size, spacing, bubble width, nav labels, and premium cosmetics (Founders: all features free 👑).
- NEW — CREATOR PROTECTION: Duplicate character detection on publish. SHA-256 content hash + image MD5 + weighted text similarity (long desc 50%, greeting 20%). First offense: auto-unpublish + warning. Second offense: all characters removed + account flagged. Mods DM'd with match scores.
- NEW — GROUP CHAT TUNING: ⚙️ gear in group chat header → model picker + length/creativity/adherence sliders. Cost preview shows credits per turn.
- FIX: Other users' group chats no longer appear in "My Groups" (Room DB now stores isOwned flag; DB migration v21)
- FIX: Group chat name and avatar no longer reset after exiting and re-entering
- FIX: Character avatars no longer revert to old published image after save failure (local selection preserved for retry)
- FIX: Group chat Start button on web fixed (genId() undefined reference resolved)
- FULL i18n: All 7 languages now fully translated — zh-CN, zh-TW, ja, ko, de, es, vi. All new screens (Appearance, Chat Customization, Settings) included. AppCompatDelegate locale switching now works correctly across every screen.
- ANDROID: Bubble shape now controlled by Chat Style setting (Classic = uniform 16dp, Bubbles = 18dp/4dp iPhone-style tail)
- ANDROID: Chat ⋮ menu: Appearance entry opens dedicated ChatAppearanceSheet with sub-screens for bubble style, text size, spacing
- WEB: Chat appearance sub-screen system in 3-dot menu — full sub-screens for Background, Text Size, Bubble Style with back navigation
- WEB: CSS variables (--chat-font-size, --msg-spacing, --bubble-max-width) applied globally; all settings persist to localStorage
- BACKEND: POST /api/chat/story-starter — Groq llama-3.3-70b generates 2–3 sentence scene openers, costs 1 credit
May 31, 2026 — Version 0.3.2-beta (Build 12)
- CHARACTERS: New characters now save as drafts by default — never auto-published. You publish when you're ready from My Characters.
- CHARACTERS: Unpublish or fully delete characters from both the website and the app. Delete cascades through all servers — likes, bookmarks, notifications, cloud chats.
- CLOUD SYNC: Chat history now syncs between the app and the website — continue any conversation across devices.
- WEBSITE: My Characters tab now has Publish, Unpublish, and Delete buttons with ownership enforcement.
- WEBSITE: Chinese translation now applies globally on page load across all screens.
- WEBSITE: NSFW characters properly blurred on /play Discover grid for unverified users.
- WEBSITE: Creator profile pages now load for all users including Google sign-in (null username issue fixed, 16 accounts restored).
- WEBSITE: Liked and bookmarked characters now load from Supabase correctly (two-step query fix).
- WEBSITE: Avatar upload during character creation now saves to Supabase Storage (was showing preview but losing the URL).
- WEBSITE: Followers/Following counts are now tappable and show a list.
- WEBSITE: Settings screen no longer shows raw JavaScript code (fn.toString() HTML injection fixed).
- WEBSITE: Web users always show Founder tier — never "Free".
- PAYMENTS: Payment UI shows graceful "Coming Soon" state. Ko-fi bridge added for immediate tier support.
- SECURITY: Helmet security headers, CORS hardening (origin allowlist), per-endpoint rate limits, JWT validation on credits API, input sanitization on AI routes.
- ANDROID: R8 minification enabled — APK size reduced from 79 MB to 72 MB.
- ANDROID: deleteCharacter() now calls Supabase RPC for full server-side cascade delete (was only deleting locally).
- ANDROID: Cloud sync no longer auto-publishes draft characters.
May 31, 2026 — Version 0.3.0-beta
- CREDIT SYSTEM: Full in-app credit economy — earn daily check-in credits, spend per message by model tier (Groq=1, DeepSeek Flash=2, DeepSeek V3=3, Cydonia=5, Claude=10)
- CREDIT SYSTEM: Tier allowances — FREE=500/day, Nakama+=5,000/day, Pro=20,000/day, Founder=50,000/day
- WEB APP: Google Sign-In fixed — redirect URL validation, PKCE flow, duplicate login guard, auto profile creation
- WEB APP: NSFW character cards now correctly blurred for unverified users on /characters page
- FIX: Engine selector (model override) no longer resets after 5 seconds in chat
- FIX: Gallery avatar upload no longer clears character card cover image
- FIX: NSFW tuning panel scrollable — all save buttons now reachable
- FIX: Liked characters appear instantly in Library after liking (no refresh needed)
- FIX: Own characters no longer disappear from Library after bookmarking
- FIX: Published characters now correctly show opening messages from remote data
- CONTENT MODERATION: Image filtering (Sightengine), text filtering (LLM), ban system, report auto-escalation, Discord mod queue
- LEGAL: DMCA policy page, Content Policy, DMCA links across all pages
May 30, 2026 — Version 0.2.12-beta
Intensive community testing session. 12 builds shipped in one day.
- FIX: Bookmark persistence — startup cleanup was deleting all valid bookmarks on cold start (inverted SQL logic)
- FIX: Likes — Supabase trigger type mismatch (uuid = text) was silently rolling back every like
- FIX: Like notifications — confirmed working end-to-end after trigger fix
- FIX: Notification badge — JWT expiry was silently returning 0; session refresh added before every badge poll
- FIX: Session restore — silent JWT refresh on cold start; no more unexpected logouts
- FIX: Image upload — moved from cacheDir to filesDir; avatar preserved on publish failure
- FIX: UUID cast in scheduleTranslation + unpublishCharacter (168 Crashlytics events resolved)
- FIX: Tuning prefs not saving — isNsfw guard added to onApply
- FIX: Bookmark library bug — isLocalOwnChar check prevents foreign chars appearing in Library
- FIX: NSFW disclaimer patterns expanded (28 patterns, covers all models)
- FIX: safeMaxTokens floor — minimum 200 tokens guaranteed on all routes
- NEW: Response Tuning Panel (length, creativity, adherence sliders)
- NEW: Character Adherence slider (top_p + system prompt reminder injection)
- NEW: NSFW Model Selector (Cydonia / DeepSeek / Claude per character)
- NEW: Smart Discord bug triage bot (replaces hardcoded template)
- NEW: Background channel monitor (auto-classifies messages as bugs/features)
May 30, 2026 — Version 0.2.5-beta
- NEW: NSFW Model Selector — choose Cydonia 24B, DeepSeek V3.2, or Claude Sonnet per character; selection saved per character; tier-gated
- NEW: Character Adherence Slider — third slider in the Tune Response panel; controls how closely the AI follows the character definition, from Free to Strict; uses top_p + system prompt reminder injection
- NEW: Response Tuning Panel — Founders and testers can adjust response length, creativity/temperature, and character adherence per character via the 3-dot menu in chat
- NEW: Smart bug triage bot replaces hardcoded Discord template — live AI conversation collects details naturally and logs automatically
- NEW: Background channel monitor — bot detects bugs and feature requests in general conversation silently
- FIX: Like and comment errors resolved — RLS policies corrected, like counts now visible to all users
- FIX: Like and bookmark notifications now fire correctly
- FIX: Cydonia 24B repetition reduced — temperature, frequency penalty, and repetition penalty tuned; crash fallback added
- FIX: NSFW content filters removed from system prompt for NSFW characters on full build
- FIX: Translation spam reduced — 8-character minimum threshold, dedup cache added
- FIX: Build status now posts as one clean English message (no more 8-locale wall)
- FIX: Bot no longer auto-pins messages in Discord
May 29, 2026 — Security, Notifications & 50+ Fixes
- Push notifications hardened — UUID cast bug fixed on all Supabase profile UPDATEs; FCM tokens now reliably saved for all active users
- Comment threading — replies properly nested under parent comments with AnimatedVisibility collapse/expand and 16dp indent accent
- Pinch-to-zoom gallery viewer — fullscreen images support up to 4× zoom with pan
- User profile avatar upload pipeline — uploads to Supabase Storage, syncs to profiles.avatar_url, restores on sign-in
- Bidirectional translation — definition fields now auto-translate into English for non-English characters; comments translate both ways
- SFW content hardening — system prompt SFW enforcement prefix; DB-level is_nsfw filter on all Supabase character queries
- Founder tier split — beta testers before May 29 keep full PRO (FOUNDER); Open Testing joiners receive permanent NAKAMA+ with "Founding Member" badge
- Auto-founder kill switch — FOUNDER_GRANTS_ENABLED=false env var for Open Testing launch
- Follower/following tappable lists on own Creator Profile — matches PublicCreatorProfileScreen
- All UUID cast bugs swept from AuthRepository — updateUsername, updateLastSeen, checkFounderStatus, revalidateFounderStatus
- Creator search, stop button in chat, home button on all screens, chat history sync
Social Layer
- Creator profiles — public page, avatar, bio, follower/following counts, published characters list
- Follow / Unfollow creators
- Character likes — heart button + live count
- Comment sections — threaded one level deep, like comments, creator moderation
- Direct Messages — 1-on-1 real-time via Supabase Realtime, unread badge
- Activity Feed — likes, follows, comments, replies, DMs — real-time, mark all read
- Leaderboards — Top 50 Characters, Top 50 Creators
Discovery
- Discover sort modes: Default, Newest, Trending, Most Liked, Following filter
- Like/comment counts visible on character cards
- Pull to refresh on Discover
Quality of Life
- New app icon — purple Nakama logo, community-designed by 堕落的魅魔
- Korean locale — 8 launch languages total
- Display name persistence fixed — no longer reverts to "user" after restart
- Chat bar race condition fixed — always shows immediately on first load
- Leaderboard UUID display fixed — shows character names correctly
- Character publish data fixed — full definition visible to other users
- Follow/like notification triggers fixed — notifications now fire correctly
- Founder DM access fixed — no more false "membership required"
- Follower/following counts fixed
Model Stack
- FREE: Llama 3.3 70B Versatile (Groq) — default
- FREE fast: Llama 3.1 8B Instant (Groq) — fallback
- FREE emergency: Qwen3-32B (Groq) — rate limit fallback
- NAKAMA+: DeepSeek V3.2 20251201 (creative), DeepSeek V4 Flash (fast)
- ALL tiers NSFW: Cydonia 24B v4.1 — uncensored RP specialist
- PRO: Claude Sonnet 4.6 — best quality available
Phase 4 — April / May 2026
Infrastructure
- Railway backend live — all AI routes through Railway, API keys removed from APK
- Supabase auth — Google OAuth + email/password + guest mode
- Firebase Crashlytics + Analytics live on both SFW and NSFW builds
- Domain nakamaai.app live (Namecheap → Railway)
Features
- Founder system — permanent PRO tier for all beta testers, overrides subscription forever
- Public character publishing + Discover feed with swipe cards
- Supabase Storage for avatar and gallery images (public buckets)
- Group chat engine — multi-character, round-robin + @mention routing
- Scenario engine — world context + cast injected into system prompt
- Cloud character sync — Settings → Sync Now
- Push notifications via Firebase Cloud Messaging
- User presence dots on avatars — online/offline indicators
- Auto-translation on publish — name, bio, tags translated to all 7 locales
- Birthdate age verification on first launch (NSFW build only)
- Vietnamese locale added
- All 8 seed characters with official PixAI artwork
- Playtester Hub screen with changelog and feedback link
- Character definition share toggle — full or public-only
Phase 3 — Week 3
- Bottom navigation — 6 tabs: Discover, Search, Create, Library, Chats, Settings
- Creator tools — character gallery (up to 10 images), tags, NSFW toggle, tier system
- Chat enhancements — regenerate, backtrack, branch, advance, edit, copy, long-press menu
- Chat background — gallery picker, blur toggle, per character stored in DataStore
- Roleplay message rendering — *actions* italic gray, **thoughts** italic near-white, asterisks stripped
- Prologue narrator messages at chat start
- Per-character player persona (overrides global)
- Full localization system — EN, JA, ZH-CN, ZH-TW, DE, ES from day one
- Character export/import (JSON)
- Group chat creation screen
- Scenario creation screen
Phase 2 — Week 2
- Chat loop with Groq API via Railway backend
- Rolling context window — 40 messages creative/fallback, 20 fast
- Rate limit fallback chain — Llama 70B → Llama 8B → Qwen3-32B → friendly error
- NakamaMemoryBuilder — system prompt builder with character context, language injection, NSFW framing
- *action* and **thought** variable formatting standards
- Stop sequences to prevent AI from writing user lines
- Startup ping on GROQ_FAST — once per process lifetime
- Authorization header redacted in OkHttp logs
Phase 1 — Week 1
- Project scaffold — Kotlin, Jetpack Compose Material 3, MVVM architecture
- Room database — CharacterEntity, ChatMessageEntity, ScenarioEntity, GroupChatEntity
- Hilt dependency injection, KSP (not KAPT)
- Navigation Compose with bottom nav
- DataStore user preferences
- Repository pattern — ViewModels never touch DAOs directly
- 8 seed characters (local, isDraft=false, isSeed=true)
- SFW and NSFW build flavors from day one