Changelog

Every shipped release, newest first. The same notes appear as the update changelog inside the app.

0.5.1

  • Fixed the app failing to start after the 0.5.0 update ("Error during initialization")
  • Fixed the loading screen's cached theme colors never applying (broken in compiled builds for several versions)

0.5.0

  • Fixed Call Pipeline canvas on mobile: pinch zoom now actually works (anchored between your fingers), one finger on empty canvas pans the view, and the fullscreen button falls back to a full-viewport overlay with an Exit button on mobile browsers without the Fullscreen API
  • Added Author's Note: a global note injected near the end of the prompt (configurable role and depth), with a saved-notes library (name, save, load, delete). Find it in the chat ⋯ menu — a green dot shows when a note is active
  • The "Send last message as final" checkbox is now a "Prefill" toggle (same behavior, opposite polarity — checked means the last message is sent as prefill). Your saved setting carries over unchanged
  • Added Prompt Processing to the chat ⋯ menu (default: None), opening a picker with descriptions: Merge consecutive roles, Semi-strict, Strict (user first), Single user message, Single system message, and NoAss — the whole chat sent as one name-prefixed assistant message the model continues as its own prefill (rentry.co/NoAss). The menu entry shows the active mode
  • Empty and whitespace-only messages (e.g. left over from interrupted generations) are now stripped from the prompt before sending — some APIs reject them
  • Fixed text styling with HTML rendering off: styled messages no longer show literal <span> markup, and nested styling (italics inside quotes, quotes inside bold, code with quotes) now colors correctly instead of spilling style attributes into the text
  • Fixed pipeline canvas port wiring: tapping a block's in-port to complete a tap-tap connection works reliably now (it used to silently disarm), new blocks can't spawn off-canvas, and adding a block scrolls the view so both it and Main are visible

0.4.0

  • New optional API parameters: Top A, Typical P, and Logit Bias (JSON token map) with per-model auto-detection
  • New "Web search" toggle in Advanced Settings: lets the model search the web during generation (Claude server tool, OpenRouter :online, Grok Live Search, OpenAI search-preview)
  • New "Prompt caching (Claude)" toggle (on by default): unchanged context re-reads at ~10% input price — swipes and long chats get much cheaper
  • New Summarizer tab: enable auto-summary of old history, set recap length with a slider, edit the summarizer's prompt structure like a preset (system/user/assistant rows with macros), and view/edit/clear the current chat's recap
  • The app now warns when a reply is nearly identical to the previous one (suggests swiping or raising repetition penalty)
  • Fixed background-mode saves erasing card-trigger chat variables
  • New Call Pipeline (Calls tab): a node-graph editor — drag Prepare/Rewrite/Preset/Saved call/Judge blocks on a canvas and wire them between the Main (preset) and Output blocks; parallel branches race and a Judge picks the winner; a Judge watching a single block loops it with feedback until it approves; a Yes/No judge routes the flow down green (yes) or red (no) wires; progress line on the composer
  • Call Pipeline blocks are fully configurable: name/description, model (picked from your API's model list), temperature, top P, max tokens, penalties, preset (current or any saved), per-block web search, and chat history (full / last N / none, user-only or assistant-only) — grouped into clear sections
  • Whole Call Pipelines can be saved as named presets, loaded/deleted from the toolbar, and exported/imported as JSON files
  • Pipeline rewrites now show a pulsing "refining…" chip on the message while they run, and refined messages get a ± button that opens a modal with the full Diff (green additions / red removals), Original, and Refined views
  • Pipeline block requests now stream internally (accumulated, not rendered), so long rewrite/judge calls no longer risk dying to connection idle timeouts
  • When the last pipeline step is a plain rewrite block, its output now streams live into the message instead of swapping in all at once
  • Rewrote the pipeline blocks' instruction wrapper: the old "Ignore previous instructions" phrasing made some models refuse the task ("I won't follow OOC overrides") — blocks are now framed as sanctioned app processing steps
  • Call Pipeline canvas: wheel zoom on desktop, pinch and double-tap zoom on mobile, fullscreen button
  • Fixed clicking a re-rendering control in a non-Chat tab bouncing you back to the Chat tab
  • Fixed switching chats while a reply was generating: the reply could overwrite messages in, or get saved into, the newly opened chat — it now always lands in the chat it was generated for (visible when you switch back)
  • Fixed flipping the streaming toggle while a reply was generating silently dropping that reply
  • Fixed streamed replies leaking into another chat if you switched chats mid-stream (chunks kept writing into whichever chat was open)
  • Fixed deleting a chat while its background generation was running: the late reply used to recreate the deleted chat — deletion now cancels the background task
  • Background generation polling now retries brief network hiccups instead of detaching until you minimize/reopen the app
  • Pipeline steps that produce no output (e.g. bad key/model on a block) now show a warning instead of being skipped silently

0.3.1

  • Smaller Android APK (~1MB less): removed duplicated frontend files from the app bundle
  • Fixed chat area leaving a large gap above the message box after the Android keyboard opens/closes
  • Background-safe generation is now on by default everywhere (toggle still available in Advanced Settings, without popup notifications)
  • Fixed swipe regeneration silently overwriting the previous message version when background generation is on
  • Fixed touch-swipe regeneration sending the wrong chat context when swiping a message that isn't the latest
  • Fixed the message box not growing while typing multi-line messages (was frozen at one line)

0.3.0

  • Exported character cards are now spec-compliant V2 (chara_card_v2) and keep embedded lorebooks, alternate greetings, and extensions instead of flattening them away.
  • Character import now reads V3 cards (ccv3 chunk) and plain .json card files in addition to PNG.
  • Character cards with embedded lorebooks (character_book) now import the lorebook automatically and bind it to the character; V2 position values (before_char/after_char) are mapped correctly.
  • Alternate greetings from character cards now appear as swipeable versions of the first message.
  • Character post_history_instructions are now injected after chat history (with {{original}} support), and V3 single-colon macros ({{roll:N}}, {{pick:...}}) work.
  • V3 .charx character archives now import, including the embedded icon as the avatar.
  • Lorebook entries with V3 decorators (@@activate, @@position, @@role, ...) are handled: supported ones apply, all are stripped from prompt text.
  • Card macros: {{char}} uses the V3 nickname when set, {{// comments}} are stripped from prompts, and {{original}} works inside a card's system_prompt.
  • Lorebooks: V3 regex keys (use_regex) and standalone lorebook_v3 files import correctly; selective now follows spec semantics; @@activate_only_after/@@activate_only_every decorators map to delay/cooldown.
  • The character editor now has dedicated fields for nickname, post-history instructions, alternate greetings, creator notes, card tags, creator, and version.
  • New: group chats! Create a group from the Characters tab, members reply in turn (mentions and talkativeness decide who), with member chips above the composer to trigger, mute, or pass the turn.
  • Lorebook V3 decorators completed: keep_activate_after_match, is_greeting, and spec-correct activate_only_after/every; new {{hidden_key}}, {{reverse}}, and stable {{pick}} macros; APNG cards import.
  • Lorebook entries can now inject at a specific depth in chat history (@@depth decorator and SillyTavern position-4 world info).
  • CHARX assets are now stored: embedded icons, backgrounds, and other assets survive import, and background assets display behind the chat for that character.
  • Exported PNG cards now carry both V2 (chara) and V3 (ccv3) data, and a new "Export as CHARX" button in the character editor produces a V3 .charx archive with the avatar and stored assets embedded.
  • Importing a card with tags now offers an "Adopt tags" button to merge them into your library tag filters (instead of ignoring or auto-merging them).
  • Cards that ship regex scripts (RisuAI customScripts / SillyTavern regex_scripts) now offer an "Adopt scripts" button on import; adopted scripts only run for that character and show a character badge in the regex manager.
  • RisuAI PNG cards with embedded emotions/extra assets (chara-ext-asset chunks) now import those assets into character storage instead of dropping them.
  • RisuAI .charx archives with a module.risum now import fully: module regex scripts feed the "Adopt scripts" offer, the module lorebook binds to the character, and the module (including trigger scripts, which are never executed) survives re-export verbatim.
  • Chat variables: prompts and cards can now use {{getvar}}, {{setvar}}, and {{addvar}} macros; values are saved per chat and persist across reloads.
  • Interactive cards: cards that ship declarative triggers (stat systems, affection meters, etc.) now offer an "Enable triggers" button; once enabled they update chat variables, inject prompt text conditionally, and can add messages — all opt-in per character.
  • Cards with JavaScript code scripts (RisuAI cjs/triggercode) can now run them in a sandbox — code executes with no network access and can't touch your settings or API keys, and a runaway script is auto-stopped. Opt-in per character with a warning.
  • Lorebook entries with `@@position personality` or `@@position scenario` now render at those points in the prompt instead of defaulting to the top.
  • The `{{pick::a::b::c}}` double-colon macro form now works (previously only `{{pick:a,b,c}}` did).
  • New "Export as JSON" button in the character editor writes a spec-compliant V3 card.json (preserves embedded lorebook, greetings, and V3 metadata; strips local asset URLs).
  • Card triggers now run Lua scripts (RisuAI triggerlua) and the full trigger-v2 opcode set, alongside the existing JavaScript triggers — all sandboxed, opt-in per character, with network/LLM access as a separate explicit grant.
  • Conditional card syntax now works: {{#if}}/{{#if_pure}} blocks (including bare {{/}} closers and {{? expr}} conditions) and inline functions ({{equal}}, {{and}}, {{greater}}, {{getvar}}, arithmetic, etc.) are evaluated in both prompts and displayed messages instead of showing as raw text.
  • Card image references now display: [🖼️|name] and {{asset::name}}/{{img::name}}/{{emotion::name}} render the card's embedded images inline in messages.
  • Fully interactive RisuAI cards now render: display scripts build the card's HTML UI, the card's own CSS (backgroundHTML) is applied, clickable buttons run the card's scripts (e.g. a language/scenario picker), and images + conditional content appear — matching how the card looks in RisuAI.
  • Large .charx files that previously failed to import ("card.json not found") now load correctly.

0.2.1

  • Fixed the mobile keyboard leaving a gap under the chat and unfocusing the jailbreak editor while typing.
  • Major performance pass: faster streaming and sends, smaller payloads, and far fewer disk writes across jailbreaks, characters, and sync.
  • Character editing no longer drops embedded card data; PNG export now works with emoji and special characters.
  • Theme colors now apply across the whole app chrome, plus visual fixes on mobile and wide screens.
  • Hardened the sync relay and API server.

0.2.0

  • Completed visual overhaul across desktop and mobile interfaces.
  • Improved chat composer, navigation, characters, personas, presets, settings, modals, and responsive layouts.
  • Fixed desktop and mobile scrolling, viewport sizing, race conditions, and layout regressions.

0.1.10

  • Fixed mobile/APK character upload by using a native file-label trigger instead of a hidden programmatic click.
  • Made character card import accept Android file pickers that return generic or missing MIME types for PNG cards.
  • Improved Android WebView file chooser handling with openable document intents, multiple selection, MIME mapping, and read URI grants.