Patch notes

Every release of The Loup Frères Island, newest first. The version you download from the download page is the top one.

1.22.0

August 25, 2026

New Feature: Image Studio.

Ever thought to yourself: I need that perfect OC reference, and I have my API keys loaded up right here, but it's such a pain squeezing an image out of characters? Well, I certainly did.

Added Image Studio to the + menu — generate images and video directly, with no character involved. Built primarily around the Grok family! It supports every other image model the app offers, but we recommend Grok, especially its new Imagine Image 2.0, that was added to the app TODAY! It hits the holy trifecta of reference images, good output quality, and not being afraid of hot OCs. Go try it.

Generating

  • Batching: Grok supports up to four images per press, each appearing the moment it finishes rather than waiting on the slowest.
  • The aspect-ratio picker morphs to preview the shape being picked, and only offers ratios the selected model accepts. Quality and resolution controls appear only on models that use them.
  • Grok and Gemini generations display a cost estimate under the controls before submission, priced from xAI's own table.

Video

  • Switch the prompt bar to video for text-to-video, or press Animate on any image to make it the first frame of a clip. Duration, resolution, aspect, and sound are set on chips.
  • Leaving the prompt empty lets Grok decide what happens in the shot. Typing something steers it.
  • Clips render as background jobs with a live percentage. Leaving the page or closing the app does not cancel a render; finished clips land in your feed.

Results & Library

  • Every result carries its full recipe — the prompt, the model, and every setting — one tap away, with copy buttons.
  • Results can be reused as prompts, fed back in as reference images (up to three, from disk, from a character's visual references, or from any earlier result), favorited, or saved to your device.
  • The Library keeps every generation, searchable by prompt text and filterable by favorite or type. Nothing generated here is swept up by the app's cleanup passes.

Failures & Prompting

  • A generation blocked by a provider's content filter shows a dedicated "blocked by content policy" card with a Retry on it.
  • Optional auto-refine switch lets the Content Refiner reword a blocked prompt and try once more on its own.
  • Prompt enhancement can be set to off, always, or auto (auto expands short prompts only). Both the original and the enhanced prompt are kept on the result, and the enhancement instructions are editable like every prompt in this app.

New Feature: Worlds

Added Create World to the + menu. A world is a setting authored once and attached to any number of characters, replacing the practice of pasting the same lore into five lorebooks and indexing it five times.

  • A world is authored like a character card — a lorebook split into entries, static lore that is always in play, the same taxonomy tags with the same Auto-Generate button — and gets its own knowledge graph, browsable in the Archival Scholar and the constellation.
  • Attaching a world copies nothing. The character reads the world's lore live, so an edit to the world reaches every character using it with no re-import.
  • A character's own lorebook KG fuses on top of the world's rather than beside it, so a world figure a character has a private take on does not appear twice.
  • The world itself is never written to. Anything a character changes becomes that character's own copy, so the same world dropped into somebody else arrives exactly as authored.
  • Detaching keeps the lore a character actually fused; the world's own entries stop appearing. Deleting a world lists the characters using it first.
  • Build it for me: a line of direction — "a drowned Victorian city where the tide is a law" — drafts four different settings to choose between, rerolls included, and the chosen one is built out in full. It only fills fields left empty.
  • Worlds can be shared as a file. Lore, cover, and the fully indexed graph travel together, so the recipient does not pay to re-index lore that has already been read.
  • Worlds sync between your devices like characters do, cover art included.

One slow first sync after this update. Worlds change how devices compare libraries, so the first time each pair connects they perform one full comparison instead of the usual quick check. On a large library that is a few minutes and a lot of traffic, once. Every connect after that is back to normal.

New Feature: First Message

Added First Message — an opening post a character carries, used to begin every new timeline with them instead of starting on a blank screen.

  • Written at the bottom of the character card, by hand or with Write it for me, which reads the character's own card so the opening sounds like them rather than like a description of them. Guidance can be left blank.
  • The opening is a real message: the character remembers it, it can be recalled later in the story like anything else, and it can be edited, regenerated, or deleted like any other post.
  • Multiple openings put arrows under the first post — swipe to pick which scene the timeline starts on.
  • The switch is a mute, not a delete: turning it off stops new timelines using the opening but keeps the text.
  • Group chats always start empty.

SillyTavern Import

  • Opening messages are no longer discarded. It now arrives intact, word for word, switched on and ready, with alternate greetings as the swipe options above it.
  • The opening is copied across untouched rather than passed through the converter, so its wording, formatting, and pacing are not rewritten.
  • {char} and {user} from the original card are converted to this app's spelling. However, SillyTavern's native spelling should function just fine.

Web Search

Characters can look things up mid-conversation.

  • Search runs on four surfaces, each with its own switch: the main timeline, Backstage, Live Chat, and the Narrator. The main timeline and the Narrator start off. The Narrator uses at most one search per scene evaluation, so it can check a fact before directing around it.
  • A character who looked something up gets a green shimmer and a globe on their name. Long-press the message (right-click on desktop) for "What they looked up" — the exact searches they ran and the sources they used, with tappable links.
  • Characters write their own notes on what they found, on the turn they search (since persisting search results is impossible - they are kept server-side and never exposed via API). The notes stay on that message for as long as it exists, so a fact looked up once is still there when the story circles back weeks later — in the conversation, and in memory recall on the main timeline. They appear under the sources in "What they looked up".
  • Characters actually search instead of pretending to. Models left to their own devices roleplay the lookup — "hang on, googling it" — and then invent the answer. A nudge now licenses the tool in plain terms: asking them to look something up ("can you google X", "look it up") is an always-honored cue, anything real and current is fair game, and claiming to have checked without checking is forbidden outright.
  • Gemini gets the full search suite: alongside Google Search it can open and read the pages it finds — and links you paste — instead of settling for result blurbs.
  • A quiet "looked something up" line appears the moment a search happens.
  • Requires no new account and no new key — it runs on Google, xAI, Anthropic, or OpenRouter. If the chat model can search by itself it does; otherwise a second, cheap search-capable model searches for it and hands it the report, which lets even a local model look things up. On Windows, Claude Code does it on your existing subscription.

Web Search Settings

  • The settings say in plain words which provider a search would actually use and what it costs, before anything is turned on.
  • Searches per reply and findings per search go up to 25 each — a character can chase a topic as far as it needs to and stops on its own — and a list of sites never to read from is configurable. Every search-related instruction is an editable prompt.
  • The sidecar model picker only offers models that can actually search.

Lore Research

Added a Research lore for me button above the Lorebooks field on a character card. Name a subject that already exists — Lady from Devil May Cry, a noble house of GoT, an entire worldbuild — and it reads up on it and writes what it found straight into the lorebook.

  • Nothing is summarized, trimmed, or rewritten on the way in, and nothing already written is touched — findings are added below.
  • Deep Research (requires a paid Google key) plans its own investigation, runs well over a hundred searches, and returns a properly cited report. It costs real money per run, so the price and the likely wait are shown before it starts.
  • Research runs on Google's side, so the card, the app, or the phone can be left. A blue ring on the character's portrait means it is still running, and a notification opens their card when it lands.

Lazy Creator

  • Added dismiss-with-reason. Turning down one concept or all four now asks what was wrong with it — "almost, but make her older", "less noble, more feral", "wrong century" — and the redraw is told to treat that as a correction and keep what was working. An empty box redraws blindly as before; canceling discards nothing.
  • The Lazy Creator now reads an attached world in full — places, factions, history, rules — and offers people who live there, with a faction they owe or a city they fled. A line under the button indicates when this is happening.
  • With a world attached it is given different instructions: do not invent nations or magic systems, do not re-explain the setting, spend the character's lorebook on the character. Both instruction sets are editable under Settings → Services.
  • Added an opt-in checkbox for your persona, remembered between runs. It is used to give the character somewhere to touch — a trade, a grudge, a gap you could walk into — and is explicitly forbidden from writing you into their history.

Models & Providers

Model Family

  • Added a Model family picker under Primary Provider for OpenRouter, NanoGPT, and relays. Claude, Gemini, GPT, and Grok are selectable, and every model the app has not been told about follows that family. The provider does not change; only the models behind it do.
  • The card lists the actual model each tier lands on — NanoGPT · Gemini 2.5 Pro rather than a guess.
  • Each family sends writing and analysis to different models: the flagship rated for prose goes on the story slots (Gemini 2.5 Pro, Opus 4.6) and the more literal successor goes on the knowledge graph and the Chronicler. The card spells out which is which.
  • Fixed an issue where the cheapest NanoGPT tier pointed at a Claude Haiku name NanoGPT does not serve, failing background jobs on a NanoGPT key. Its Gemini and Grok names were wrong as well; all are now checked against the live model lists.
  • Models picked by hand are never moved by a family switch. The Apply … to all slots button, now named after the selected family, sweeps everything over when that is wanted.

Model Lists

  • Gemini models are now hidden from the model dropdowns when no Gemini key is present, since they could only ever fail. Nothing already chosen is changed or lost.
  • Added Show Gemini models anyway to the Providers & Keys page, right where they went missing.
  • Voice transcription is untouched and keeps the full list, since it needs a Gemini model to hear you.

Models That Cannot See

Characters send their appearance pictures with every message. Until now only a local model could be spared them, so a text-only cloud model like GLM failed the turn with an error you had to decode.

  • The app now reads vision support straight from the catalog when you press Fetch for Anthropic, OpenRouter, NanoGPT, and xAI.
  • For providers that publish nothing — Z.ai, custom endpoints, anything self-hosted — the app learns from the first cannot process images error: it strips the images, sends the message again on its own, and says so in the chat. There is no second failed turn.
  • Major models that are multimodal by nature — Gemini, Claude, GPT-4o and newer — are never in doubt, and are thus excluded from the self-learning blacklist.
  • When pictures are left out, the notes referring to them are removed as well, so a blind model is no longer told about a photo it never received and left to invent what was in it. The character's written Visual Appearance is used instead.
  • Settings → Providers & Keys now lists every model treated as blind and why: reported by the provider, learned from a refusal, or set by you. Anything learned can be forgotten with one tap, and any model can be set by hand either way.
  • The crossed-eye mark now appears in the model list when models are fetched, not only after one has been picked.
  • The "drop images for models that cannot see" switch moved from Local AI to Providers & Keys, as it now covers every provider. Existing choices carry over.
  • Fixed an issue where a character on a blind model would offer GIFs and memes — which means looking at candidates — and would stall reviewing a photo it could not see, holding up selfies.
  • Fixed an issue where the "pictures were left out" note was written into the conversation as a message from the character, saving it to your log and reading it back to the model on later turns. It now appears once per model as a transient notification and stays out of the chat.
  • Live Chat now reports when pictures were left out of a message. It had been doing it silently.
  • The game watcher now warns outright if its model cannot see images, rather than narrating a playthrough it never watched.
  • Fixed an issue where a message too large to send was re-sent without its images but kept the notes pointing at them.

Temperature

  • Fixed an issue where GLM refused every message when Temperature was above 1. Z.AI only allows 0–1, and routing through OpenRouter forwards the value rather than softening it. The app now knows each model's real ceiling, shows the slider only that far, and sends the highest value the model actually accepts instead of failing the turn.
  • The same fix covers Claude on its own API, which has always been limited to 1.
  • Saved Temperature belongs to the slot rather than the model, so switching a slot to a stricter model no longer breaks the very next message.

Gemini

  • Everything that used Gemini 3.5 Flash now uses Gemini 3.7 Flash — writing, memory, the knowledge graph, Live Chat, alarms, the game watcher. It is the current version of the same model at the same tier. Anything picked by hand stays exactly where it was put.
  • Added Gemini 3.7 Flash, Gemini Flash Latest, and Gemini Pro Latest to the model list. The floating options always point at Google's newest release, and are deliberately not the defaults: Google can swap them to a preview or experimental version with tighter rate limits on two weeks' notice.
  • Fixed an issue, before anyone could hit it, where models from a future Gemini generation would have quietly lost their thinking settings and stopped reporting their reasoning, with the thinking controls simply vanishing from the settings page.

Memory & Knowledge Graph

  • Improved embedding effectiveness of gemini-embedding-2 with new TaskTypes.
  • Fixed an issue where the indexer could merge two related entities into one — an ancestor and her descendant sharing a name, a title, and a bloodline were folded together despite the relationship between them already being recorded.
    • Entities with any relationship at all, will never be merged automatically. Nothing is related to itself, so a recorded relationship is the graph stating outright that these are two beings.
    • This covers both the automatic cleanup and the AI auditor. Folds you perform yourself are untouched.
    • A refused merge is written to the debug log with the relationship that blocked it. Duplicates it declines to fold stay visible and can still be merged by hand — the reverse mistake could not be undone.

Mobile

Text Editing

Every writing surface was a popup dialog, which is unpleasant to write on.

  • Text editors are full pages on phones now — editing a message, writing a redraw note, leaving instructions for the concept artist, renaming a timeline, writing a Narrator note, filling in a Life Profile, setting up lore research, interjecting mid-generation, and sending a crash report. The back gesture closes them like anything else.
  • The War Room is a real page rather than a window pretending to be one, so it sits below the status bar properly and the back gesture closes it instead of whatever was behind it.
  • Fixed an issue where several Save buttons silently ignored a press when a required field was empty. They are greyed out instead.
  • Wide windows are unchanged and keep the compact dialogs — there is no keyboard covering anything, and a full-screen takeover would hide the panes being written against.

Prompt Editing

  • Long-pressing any prompt on a phone opens a menu with its name at the top: edit it, copy its text, or restore just that one to default. Nothing else on the page moves.
  • Added a Restore button to the prompt editor's top bar, on phone and desktop alike. It appears only when the prompt differs from the default, and it does not save on its own — the default drops into the editor to be read, typed over, or backed out of.
  • Copy sits above Restore on purpose: once a prompt is restored, the version you wrote is gone.
  • The 9px dot beside an edited prompt's name stays, but only as a marker for "edited". It was never a button worth hunting for.

Appearance

  • Light Academia's highlight color is terracotta now. The greens were unreadable, causing bad user experience.

Settings

  • Fixed the What's New page opening on "No notes shipped with this build" immediately after an update — the one moment the page exists for. Each release's notes ship inside the build they describe, and the page reads them there.
  • Every Upload .txt button — character card, persona, group chat primers, system instructions — now accepts .txt, .md, .markdown, and .text, and is labeled Upload text. The files were only ever read as plain text, so greying Markdown out in the file browser bought nothing and blocked the format most written lore arrives in.

Stability

Android Background

  • Fixed an issue where a fault during a background wake-up — a check for whether a character should text you, an alarm keeping time — took the entire app down with it while it was not on screen. Android would restart it a few seconds later, it would fail the same way, and go down again. A failure now costs that one wake-up. The alarm, timer, and background-messaging paths all survive a fault.
  • Fixed an issue where a timer finishing on a phone with a silent-ringtone profile or a wiped default alarm tone killed the app. Timers now ring silently and still show the timer screen.

Ember Scorch

  • Fixed an issue where changing almost any setting — mark strength, a theme, a font size — while an Ember Scorch misspelling mark was burning killed the app to a red error screen.
  • Fixed an issue where switching marker style away from Ember Scorch while a word was burning left the sparks frozen on screen until restart. They now go out immediately.
  • Fixed an issue where sparks lingered over a screen you had left — switching characters, opening a timeline, or closing a pane mid-burn.
  • Fixed an issue on multi-monitor desktops where dragging the window to a display with different scaling left the embers rendering at the old resolution.

1.21.1

August 19, 2026

New Feature: Bring Your Own Embeddings

Memory no longer requires a Google key. The knowledge graph, memory recall, and the Constellation star-map all run on embeddings, so playing on OpenRouter, NanoGPT, or your own endpoint used to mean keeping a Google key around for this alone.

  • Added an Embeddings section to Settings → Providers & Keys, where you choose who provides them. Google is still the default, and nothing changes if you leave it alone.
  • OpenRouter and NanoGPT both offer the same embedding model the app already used, so switching to your own key there is just a switch. Your existing memories stay exactly as valid as they were. You can also point it at a custom endpoint of your own.
  • Press Fetch next to a provider and it lists only the models that will actually work here, or type the name in yourself. It is the same Gemini embedding model either way — you are choosing who bills you for it, not swapping it for a different one. Anything else is refused, because your stored memories would become unfindable.
  • Roleplay, images, and embeddings are now three separate choices. They can run on three different providers, on three different keys.

Embedding Health

  • The Embeddings section now shows the real state — Working, Not set up, Unreachable, Not a Gemini model or Wrong size — along with which provider and model answered, and how fast. You can tell at a glance that your characters are actually remembering.
  • Press Test to check it whenever you want. It also checks itself once after you change the key or the model.
  • A model that is not Gemini's, or one that answers in a shape this app cannot store, is refused outright rather than saved as something that would never match anything again.
  • Messages that used to say "set your Gemini embedding key" now name whichever provider you actually chose.
  • Indexing progress now survives syncing with a device that has not indexed anything yet.

Terms

  • You will be asked to accept the terms again. The licence and the privacy policy said embeddings always go to Google and that a Google key was required. Both now state that you choose the provider, and that embeddings always leave your device and cannot be generated locally, even when your chat is running on a local model. Also, privacy policy now mentions optional collection of device specs when submitting a bug report.

Performance, Memory & Battery

Idle Cost

  • Background work is now driven strictly by what you actually use. With no alarms and Reaching Out switched off, nothing runs while the app is closed — not a smaller amount, none. Turning on your first alarm brings the background check back; deleting your last one retires it again.
  • Background wake-ups are consolidated into a single check that can tell there is nothing to do before doing any real work, which makes idle days considerably cheaper.
  • Ambient "hey, what are you up to" texts now hold off while your battery is low and arrive once you have charged up. Alarms, replies you are already owed, and your favorite's good morning and goodnight are never delayed by this.
  • Added Battery Saver under Settings → Interface. Every decorative animation stops — the glowing banners, the shimmering frames, the drifting gradients — and the app checks in less often while closed. Your characters still text just as often overall; only the timing gets less precise.

Work In Your Pocket

  • Work that only makes sense while you are looking now pauses when you leave and picks straight back up when you return: settings synchronization, the character-presence check, the alarm re-check, and a video left playing behind the home screen.
  • Drastically improved battery efficiency while your settings are kept in sync with your other devices, both in the background and while you are using the app.
  • Your characters live on a schedule — asleep at 3am, phone locked away during a shift, drifting online in the evening. The app builds that schedule, so it already knows they are asleep until 7:14, or that they will put the phone down in forty minutes. It now waits for that moment instead of checking on a timer. A character asleep for five hours is one quiet wait, and the status dot still flips the instant anything actually happens.
  • Looping animations throughout the app now settle when you are not looking, when your system is set to reduce motion, and under Battery Saver — on PC as well as on the phone.
  • The pinned-persona label in your timeline list is considerably cheaper to draw, especially in long lists.
  • The screen now stays awake until an Overseer story has finished being written, even when a chat message you sent finishes first.
  • The locks the app uses to keep working while your screen is off are now always handed back to the system.

Memory Use

  • Picking which past moments to recall now reads the conversation in small batches and fully loads only the handful it chose. On a long story that is a substantial saving on every single reply, and the memories you get back are the same ones.
  • The app now reads Android's memory-pressure signal by level. A mild warning drops a few unused pictures; only a genuine emergency releases loaded conversations. Once it has given memory back, it waits before doing it again — so the conversation you are reading stays put while other apps come and go.
  • Syncing now builds its comparison list from names and fingerprints alone, fetching contents one at a time and only for what your other device turns out to be missing. Far lighter on memory on a big save, and nothing about what gets synced has changed.
  • The app now hands memory back the moment the system asks for it. Conversations you are not currently reading are released, along with pictures it had kept ready, and everything comes back when you open it again.
  • Only the conversation you are reading is kept loaded. Ones you had moved on from hours ago are released.
  • The store of recently shown pictures is much smaller, and the memory set aside for searching your characters' memories is now sized to what is actually used.
  • Custom backgrounds now keep a single copy in memory at startup.

Custom Themes

New Feature: Reposition

Added a Reposition button to every panel in the custom theme list. A background image almost never has the same shape as the panel it goes behind, so you now choose which part of it shows instead of taking whatever falls in the middle.

  • Press it and the app takes you to that panel where it really lives, dims and grays out everything else, and lets you drag anywhere on the screen to slide the image until it frames what you want.
  • On PC you can also nudge it a pixel at a time with the arrow keys, hold Shift for bigger steps, Enter to keep it, and Esc to throw it away.
  • The Fit setting is right there in the editor, because Fit decides whether there is anything to slide at all. A panel that cannot move tells you why.
  • Panels that appear in more than one place — the action bar is both the chat header and the timeline header on PC — light up together.
  • You are moving the real panel, not a stand-in. Your messages, the composer, the character rail, and the timeline header all stay where they are and sit on top of the image as you slide it.
  • Repositioning the input bar or the paper texture opens a real timeline for you, since neither exists on screen until one is open, and moves the controls out of the way.
  • The input bar and the paper texture slide up and down through the whole picture, not just the sliver the strip happens to show. Both are drawn from a tall image kept behind a short window.
  • Framing travels with the theme. A .louptheme file you bake now carries how you positioned each image. Themes made before this update still import perfectly.
  • Nothing you have already installed moves. Every panel starts exactly where it has always been.

WebP

  • Best (WebP) now produces real WebP on PC and Linux. The app carries its own WebP encoder on every platform.
    • On real backgrounds the same image lands four to six times smaller than the PNG equivalent, with nothing visible lost.
    • Backgrounds with transparency benefit most, as they could never use the smaller JPEG option. A transparent panel that took 425 KB now takes 106 KB.
    • Themes you export shrink by the same amount, so a theme built on a PC is far less likely to trip the "this might be too big" warning when a phone imports it.
  • Best now encodes each image two ways and keeps whichever comes out smaller, so a crisp, flat, or text-heavy picture is never softened just to save space.
  • The encoding options are renamed around what they actually do. JPEG was called Performance and PNG Quality, and WebP now beats both on the very thing each was named for: Lossless (WebP) is the exact same picture as PNG in about a quarter less space, and Smaller (WebP) matches JPEG's look at roughly 40% less while also keeping transparency, which JPEG cannot. The list now reads Best (WebP), Smaller (WebP), Lossless (WebP), then PNG and JPEG — the last two kept for when you want a file another program will open, and labelled as such.
  • Smaller (WebP) and Lossless (WebP) come with a Quality slider and an Effort slider. Effort only changes how hard the encoder works and how long the install takes, never how the picture looks. Picking one of these installs quicker than Best, which has to try both.
  • PNG still saves PNG if that is what you want, and nothing you have already installed changes.
  • GIFs are now saved as animated WebP, which stores the difference between frames instead of a whole picture every time — typically several times smaller for the same animation, playing for exactly as long as it did before. Picking PNG or JPEG keeps them as GIFs.

Animated Backgrounds

  • Animated WebP backgrounds can now be resized and frame-trimmed the way a GIF is, on every platform, and the loop still runs for exactly as long as it did.
  • Oversized GIFs are now resized once, when you install them, to something a phone can actually play, and the app tells you what it did. A GIF too enormous to resize safely is still installed, with a heads-up that it may stutter.
  • Frost now blurs every frame of an animated background instead of holding it on the first one, and looks exactly the same at the same slider setting.
    • The Settings background and the theme list's preview thumbnails still hold a single blurred frame, and now say so under the slider.
  • A panel with an animated image is now labelled "Custom image · animated" in the theme list, so you can tell at a glance which ones move.
  • ⚠️ Disable memory-safety warnings (under the custom theme settings, now on PC as well) also turns off the resizing, not just the warnings. If your animated backgrounds are not shrinking at all, check it — a huge GIF will be stored exactly as you gave it.

Sync & Deletion

  • Banishing a character is now permanent, whether or not your other device is switched on at the time. Their world graph and everything the app knows about them goes with them and stays gone — which also keeps storage from holding on to data belonging to characters you have gotten rid of.
  • A deletion arriving from your PC now clears the rest on the phone too: their lore and its memory vectors, their settings, their pictures, their notifications, and their shortcut.
  • Background clean-up now sticks across a sync instead of being undone by your other device: the knowledge graph's merge of duplicate entities, /nodeclean, lore re-indexing, and the Narrator's note limit. Duplicates merged once stay merged, and the database stops growing on repeat work.
  • /narratorpurge, the Overseer's Purge button, and deleting a single Narrator note are now durable.
  • Find orphaned data now matches alarm ringtones by the real file, so a tone you are still using is never removed and tones you have stopped using finally are.
  • Generated images are now deleted along with the messages that owned them.
    • Regenerating a reply no longer leaves the discarded attempts on disk — the largest single source of reclaimable space.
    • Editing one of your own messages and letting the story re-run from there now clears what it replaced.
    • Deleting a message on one device now removes its pictures on your other device too.
    • Finishing a Game Watcher session now cleans up the play-by-play's pictures, the persona portrait, and the session's settings.
    • An image-only reply with no text is kept, rather than treated as a failed turn.

Local AI

  • Local models that cannot see are no longer sent pictures. Your characters' appearance pictures ride along with every message, and handed to a vision-less local model that meant either a rejected turn or a model reading a note about images it never actually received — and then describing them to you anyway.
    • The app now asks your local server which of its models can actually see. Ollama, KoboldCpp, and LM Studio each report it, and the ones that cannot are marked with a crossed-out eye in every model picker.
    • Pick one of those and the pictures are removed before the message is sent, along with the notes that pointed at them, and you are told in the chat that it happened. The turn goes through instead of failing.
    • Reference IDs for the camera tool survive the removal, so a character can still take a photo of someone it cannot look at.
    • If the app cannot tell whether a model can see — an older server, or one that does not report it — images are still sent, exactly as before.
    • Transcribe Appearance and Lazy Mode are never touched, since reading the picture is the entire point of them.
    • Added Settings → Local AI → Image Handling, which turns the whole thing off.
  • Local models whose name begins with "gemma" now stay on your own server when a character reaches out to you while the app is closed.

Reliability

  • All API requests now survive leaving the app on Android. Switching away, or just locking your screen, no longer interrupts whatever was being written. This existed before on all but few instances.
    • Every request the app makes now holds the phone open until it finishes: chat, character creation, images, video, and memory.
    • The lazy character creator benefits most. It asks you to pick from four concepts, and the minutes you spend reading them are exactly when you put the phone down. It now survives being backgrounded, reports honestly if something does go wrong, and retries by itself if the connection drops.
    • Also applies to proactive messages you asked for by hand, character life profiles, timeline summaries, the refiner, auto-naming, image descriptions, and imported characters.
    • The "working" notification now covers all of this, not just knowledge-graph indexing, and stays one steady entry instead of flickering on and off between steps.

Clearer Labeling For Visual References

The appearance pictures you upload are shown to the model at the start of every conversation. The character card now says so, in the places you would look — easy to miss when the "make the character for me" button sits under the same image slot. They do both jobs.

  • The character card labels the carousel Visual References (Sent to AI) and explains underneath that the AI is shown them at the start of every conversation, and that Lazy Mode reads them. If your model has no vision, it says so in orange and points you at the field to write in instead.
  • Added a ? covering the whole picture: when your own images are sent and when they are not, that Backstage and Live Chat send them whenever a character can take photos, and that your Profile Picture is never sent to anything.
  • Settings → Chat & Memory carries the same explanation beside your model choice, including that these pictures also reach your image provider when a character takes a photo.
  • Renamed Visual Description to Visual Appearance, matching the Transcribe Appearance button beside it. Only the label changed; everything you have written in it is untouched.

Diagnostics

  • Added Settings → Report a Bug → Capture a memory reading. Take one whenever the app feels heavy — several readings from different moments say far more than one, and they are all sent together when you attach the debug log.
    • A reading is also taken automatically whenever you leave the app, the moment just before the system decides whether to close it.
    • Each report now carries a short summary of how much memory the app was using and what was holding it: open conversations, pictures, logs. Sizes and counts only — no message text, no names, no file names.
  • Crash reports now carry a short description of your device: model, chipset, memory, storage, screen, and system version. It separates "the app is too heavy" from "this device is small" — the same report means opposite things on each.
    • No serial numbers, no account or device IDs, and memory and storage are rounded. Nothing is sent unless you press Send.
    • Added an optional contact email, so the developer can come back to you with a question instead of guessing. It starts empty, is only ever used to answer the report you sent, and one tap clears it.
    • View what will be sent shows the exact text first, and switches either of them off. Switching the readings off also stops them being kept on your device.
    • Both are also on the "the app closed unexpectedly" prompt.
  • The crash log no longer re-records history it has already kept, so it holds a longer and cleaner run of real crashes instead of filling up with repeats.
  • Crash log entries now record how much memory the app was using when the system closed it.

Fixes

  • Fixed the app's notification housekeeping failing on Android. Clearing away a deleted character's notifications, and scheduling new ones, now go through cleanly instead of erroring out into the crash log.
  • Fixed a crash when opening a character whose portrait file had gone missing. Changing a portrait no longer deletes the old image until the character is actually saved, so backing out of an edit cannot leave a character pointing at a picture that is not there. Anywhere a portrait is missing now shows a placeholder instead of failing.
  • Fixed characters, personas, and alarms left pointing at a picture that had been moved or deleted. Settings → Backup & Sharing → Find Orphaned Data now reports these too: where the picture can be found again it is reconnected, and where it cannot the empty link is removed so a placeholder shows instead. This repair now runs every time you ask for it, so a picture lost later can still be recovered.
  • Fixed crashes when opening a file picker — choosing a character file, a lorebook, an alarm sound, a text file, or your Baldur's Gate 3 folder. A picker that fails to open now does nothing and lets you try again, instead of closing the app.
  • Fixed a crash from double-tapping the attach button, or a portrait, before the picker had opened. The second tap is now ignored.

1.21.0

August 11, 2026

New Feature: Versions Of Your Own Messages

Editing something you said no longer destroys everything after it. The chat forks instead.

  • Tap Edit on one of your messages, change the wording, and press Save & Regenerate. A ‹ 1/2 › appears under your bubble, exactly like the one under a regenerated reply.
  • Swiping between versions swaps the whole conversation, not only the bubble. Every reply a version led to returns with it: the character's answer, your next three turns, all of it. Nothing is deleted, and you can move between threads as often as you like.
  • You can fork again inside a version. Each branch remembers the sub-version you read.
  • Added Save only to the edit box, for a simple typo. It changes the wording and leaves every reply where it is, with no new version and no regeneration.
  • Long-press the ‹ 1/2 › to delete a version and everything under it. You are told how many messages that is first, and your other version is untouched.
  • The app does not rewind what a character remembers. The chat reads correctly, but facts they learned in a branch you swiped away stay in their memory. Use Branch Timeline for two truly separate stories.
  • Unavailable in group chats, Backstage, and Live Chat, where editing works as before.
  • Fixed an issue where a choice between two versions of a reply was a coin flip the next time two synced devices talked, sometimes reverting on its own. Both devices now agree on your choice.
  • Fixed an issue where deleting a message stranded its other versions in the database, invisible and unreachable.
  • You can clean up orphaned data under Settings -> Backup & Sharing -> Find Orphaned Data.

Reaching Out

New Feature: Favorite Character

Long-press a character in the rail (right-click on desktop) and pick Set as Favorite. You can have one at a time, and they wear a small heart in the rail.

  • The Character is informed they are your special and treat you with particular care.
  • They send a guaranteed good morning and goodnight on their own life profile's schedule, not one you set. A night owl says goodnight at 3am. Each is moved by a few minutes, so a text never arrives at the same suspicious minute.
  • Added a text that asks about your day, returning to something you really mentioned — how the thing went, whether you ate, whether you slept — asked from inside their own day.
  • They text first more often than any other character, and a guaranteed text always wins against another character's random ping.
  • An unanswered good morning or goodnight never counts as leaving them on read, so they never guilt you about one. An ignored "did you eat?" still counts.
  • If they owe you a reply, that reply arrives first.
  • Added Settings → Reaching Out → Favorite Character: how much more they text, how often they ask about your day, how late is "late", and all five prompts, plus buttons that send one of each immediately for tuning.

One Engine For Texting First

AFK notifications and Live Chat self-texts were separate systems with separate rules. They are now one.

  • Every text now has a reason: their own day, the story you write together, or a shared memory that returned. The mix shifts on its own — talk often and texts stay casual, stay away a few days and the story starts to call.
  • Go quiet for a day or two and a character you played with recently texts you more. Stay away for weeks and they take the hint and go quiet, instead of nagging.
  • Unanswered texts now come from the conversation itself, so a character sees exactly what you left on read.
  • Consecutive texts now grow one notification thread instead of a pile of separate ones.
  • Characters now text you first on Windows and Linux while the app is open, even behind another window, and the gold unread ring lights up. Desktop texts stay casual, with no pressure to come back and play.
  • Reach-out texts now use your Live Chat model, so the text that opens a conversation and the replies after it sound like the same person.
  • Everything now sits under Settings → Reaching Out, on desktop too: how often, the missing-you curve, what they text about, the task prompts, and Attitude.
    • Attitude now quiets every kind of text when you never answer, not only some of them.
    • Your old switches are kept. If either kind of texting was on, the new one is on.
    • The missing-you and Attitude sections now show their combined day-by-day forecast — "leave and never answer: day 1 ×1.8, day 3 ×1.0, a month ×0.1" — updating live as you drag either set of sliders.
  • Characters no longer send friend requests with no warning. Friendship still starts in the story.

Local AI

New Feature: LM Studio

  • Added LM Studio to Settings → Local AI, alongside Ollama and KoboldCpp. Give it the server address and every model you have downloaded appears in every model list in the app.
  • The app finds the server the same way LM Studio's own tools do, so it does not mistake something else on that port for a working connection. It also names the model loaded right now.
  • Model lists arrive complete, with quantization and file size next to each name so you can separate two builds of the same model. Embedding models are omitted, as they cannot hold a conversation.
  • Image attachments work with any vision model.
  • Added a button that starts the LM Studio server on Windows, Mac, and Linux, on the port you set.
  • Failures now report a sentence instead of a wall of code. "No model loaded" says exactly that, and a conversation too long for the model's context says so and names what to change.
  • The page names the two LM Studio settings that matter most. Turn Auto-Evict off if you use different models for chat, the Narrator, and the knowledge graph, or every one of them reloads from disk. The first message after a switch is slow because the model loads; the app is not frozen.

New Feature: Local AI From Your Phone

  • The Local AI page is no longer hidden on Android. The server still runs on your PC, and your phone talks to it over your home network.
  • Added an Access From Your Phone section to the PC page. One switch makes your server listen to the whole home network instead of only that computer, applying each server's own method for you.
  • If Windows blocks the connection, the page says so and offers a button that asks for permission once and opens the way through — the same single press Wifi Sync uses. It also repairs the common case of Windows treating your home Wi-Fi as a public network.
  • The switch states plainly that anyone on your network can then use your model, as none of these servers ask for a password.
  • Buttons that start a server remain desktop-only, as a phone cannot start one.
  • Fixed an issue where your local models disappeared from every model list when the app closed, until you opened the Local AI page again.
  • Fixed an issue where a local model with a name that starts like a Google name went to Google instead of your own server. LM Studio names some models that way.
  • Fixed an issue where switching local backends erased the address you typed. Each backend now remembers its own.
  • Fixed an issue where the page showed a green "connected" light above blank space when the server had no model that can hold a conversation. It now says what is missing.

Notice

  • Added a notice to the top of the Local AI page, for every backend: running a conversation on your own machine does not make the whole app self-contained. Memory embeddings are Gemini-only by design, and the knowledge graph, memory recall, relationship mapping, and the Constellation all depend on them. With no embedding key those systems run degraded and characters lose their long-term consistency. Nothing is blocked — you are simply told first.

New Feature: What's New

Patch notes now live inside the app. They used to appear once, in the box that offered you the update, and then disappear forever.

  • Added Settings → What's New, opening with everything your version added. A button there opens the complete patch history: every release the app has ever had, one tap each.
  • After an update, a card drifts down a few seconds after launch: "Updated to 1.20.7 — see what's new." Tap it to read, swipe it away, or ignore it and it leaves by itself.
    • It never asks twice, waits for a quiet moment, never lands inside a conversation, and never appears together with the Patreon card.
  • If you run an old version, the page now lists every release published after yours, not only the newest, with a direct download link for your platform. This works with no license key, which is the point: with no key, the app could never tell you an update existed.
  • Notes for your own version are stored inside the app, so the page works with no internet connection. The check for newer releases runs once a day at most.

Providers & Models

  • Fixed an issue where a custom endpoint reselling a Claude subscription failed every message with a wall of red text about "image_url". Those channels want Claude's own request format and were sent the other one, so your characters' appearance images were rejected before the message reached the model.
    • Add custom endpoint now asks which format the endpoint speaks: OpenAI-compatible, correct in almost every case, or Anthropic Messages, for a service that relays Claude. The endpoint's card shows your choice, and endpoints you already added work exactly as before.
    • Anthropic Messages also gives you Claude's native thinking on that endpoint.
    • Picking the wrong format now produces an error naming the setting to change, instead of the raw reply from the server.
  • Fixed an issue where attaching a picture for a model that cannot see pictures failed with "check your API key", sending you after a problem that did not exist. The app now says the model cannot see images and suggests what to do. A model that should handle pictures and still says this is missing its vision component.
  • Fixed an issue where a failed Backstage reply guessed at your API key instead of giving the real reason.
  • Fixed an issue where a thinking model with a small reply limit could spend the whole limit on thought and write nothing, leaving you an empty message with no explanation. The app now says what happened and which setting to raise.

Media

  • Fixed an issue where a clip a character filmed did not appear until you left the chat and returned. The clip was never lost; nothing told the open chat to show it.
  • Fixed an issue where the message arriving with a clip could carry stray pieces of the character's own instructions.
  • Fixed an issue where a reference picture larger than the service accepts was discarded, leaving the character looking like someone else. Large pictures are now reduced to fit. This also covers a photo you ask a character to bring to life.
  • The debug console now records the size of the picture that arrived next to the shape the app requested, so a service that quietly ignores the requested shape is visible instead of guesswork.
  • Grok Imagine 2.0 is now in every picture picker. It is xAI's newest image model, it ranks above their previous one, and it costs less per picture.
  • Grok Imagine 2.0 alone has a Quality setting, low or medium, and the picker only appears while that model is chosen. Low is a quick draft, about ten seconds. Medium is the normal setting and takes longer for finer detail. Resolution is a separate choice: it enlarges the picture rather than adding detail, so detail comes from Quality.
  • Picking a Grok model now also offers the extra picture shapes only Grok can make, including tall phone-screen and ultrawide ones. Choose one, switch to a model that cannot make it, and the app keeps your choice and tells you it will fall back rather than quietly changing it behind your back.
  • Asking Grok for an ultrawide 21:9 picture quietly gave you an ordinary widescreen one. Grok accepts 21:9 directly now, so you get the shape you asked for.

Patreon

  • Added Settings → Patreon. Now you can support the development of TLFI!
  • If you have no license key, a small card slides in over the chat a few seconds after an update and asks whether you enjoy the app. Tap it to open the Patreon page, swipe it away, or ignore it and it fades. Either way it does not come back until the next version. It shows only ONCE per update.
    • It waits for a clear screen, so it never lands on top of a dialog, and stands aside on a launch that has something more important to tell you.
  • The card and the note at the top of Settings appear only without a license key, and both stop the moment you enter one. A brand-new install is left alone on its first launch.
  • Permanent license keys obtained during Open Beta shut down Patreon pop-up too.

1.20.7

August 8, 2026

New: Characters Can Film You a Video

In a Live Chat, a character can now record a short clip with sound and send it to you.

  • The character tells you that the camera is on, and that message arrives at once. The clip follows a moment later, as its own message. If you close the app during a recording, you still get the clip. The app continues the recording the next time you open it.
  • The character decides when to film, the same way they decide to send a selfie. Settings → Media Tools → Video Generation holds two separate switches. The first lets the character film in a reply to you. The second lets a clip arrive with no message from you first. The first switch does not turn on the second.
  • Both switches are off after the update, and a pacing guard keeps clips rare. On a turn that does not offer the camera, the character never learns that the camera exists. Thus they cannot promise you a clip that they cannot record.
  • You set the length, the resolution, and the shape. The page shows the cost of one clip in plain numbers before you change a setting.
  • Clips play in the chat, in a real player. Read the next section. A clip stays on the device that recorded it, unless you turn on the setting that sends clips to your other devices. A video is much larger than a photo.

New: A Real Video Player - redesigned

Every video in the app now has a real player behind it. This includes a clip that a character filmed and a video that you attached.

  • A clip appears in the shape that the camera recorded, with a gold play button over it. Tall clips stay tall, wide clips stay wide, and the app never crops a clip to fit a box it was not shot for. If the device permits it, the app uses a still frame from the clip as the picture. If not, it uses a plain dark card. The corner shows the length.
  • Press the play button to watch the clip in the chat. You see only the picture, with no bar, no timer, and no buttons over it. Press anywhere else on the clip to open it fullscreen and start it. If you press a clip that already plays, it also goes fullscreen and continues from the same point.
  • Fullscreen repeats the clip, so a short one does not blink past you. It also gives you a scrub bar, skip buttons, and a volume control, all in the app's own gold. The old player borrowed a plain red bar. Swipe up or down to leave, or press Escape.
  • On Windows, the controls appear when you move the mouse, then hide again after three seconds, together with the cursor. Escape closes the player, the space bar plays and pauses, the arrow keys skip and change the volume, and M mutes the sound.
  • On a phone, fullscreen now turns with your phone, so a wide clip fills the screen. When you close the player, the app returns to portrait. Before this update, one video left the whole app rotating loosely until you restarted it.
  • You can now save a clip out of the app, to the gallery on your phone or to any folder on your PC. This was not possible before.
  • The chat scrolls smoothly past videos. A clip that you scrolled past does not load again from the start when you come back to it. A chat that is full of clips no longer slows the app.
  • If a clip is no longer on the device, the app says so and offers to try again, instead of loading forever.
  • The app now recognizes attached .mov, .webm, .mkv, and .m4v files as videos. Before, they appeared as a broken image.

New: xAI (Grok) Support

Added xAI as a provider under Settings → Providers & Keys. One key covers all three uses.

  • You can now select Grok models anywhere you pick a chat model, for roleplay like any other provider.
  • You can now select Grok Imagine in every picture picker, in both quality tiers. It takes reference images the same way as the existing camera, up to three, to keep a character in one consistent look.
  • Grok Imagine also drives the new video feature.

New: The Content Refiner

When a model refuses a picture or a clip, the app no longer only tells you that the camera failed.

  • Turn it on, and a separate AI asks the character what they wanted, rewrites the request so that it gets through, and tries again. You see only the finished picture. None of that exchange reaches the chat, and no one remembers it.
  • The refiner knows the difference between two failures, and it treats each one differently. The model can refuse a request for its wording, or it can reject the finished picture. New wording never repairs the second failure, thus the refiner changes the framing instead.
  • The refiner is off by default. It has its own model and a limit on the number of retries, because each attempt costs another generation.

1.20.6

July 30, 2026

New Feature: The Molten-Iron Spelling Mark

Added the molten-iron mark, also known in settings as "ember scorch". Misspell a word and its letters heat up from the inside, char at the edges, and throw embers.

  • Rebuilt from the ground up to be performant on any and every device. Enjoy!

The Constellation

Star Size & Zoom

  • Fixed an issue where the sky drew itself far too small whenever you were zoomed out at all, rendering stars and names at a fraction of their intended size. On a phone that was nearly all the time, which is why the constellation opened as unreadable specks.
    • Stars and names now come out at their proper size at every zoom, on both Windows and phones.
    • Fixed the same fault capping how far you could pinch in. Zooming stopped well short of comfortable; the full range is now available.
    • Fixed the same fault letting a tap on a name in a star's relations fling you closer than pinching ever could, because that jump was not bound by the same broken limit.
    • Fixed the same fault freezing star sizes on the way back out, turning a zoomed-out constellation into a clump of same-sized blobs.
  • Fixed an issue where every star drew at the minimum size, leaving the map with no shape to it. Well-tied characters and places now outshine less interconnected stars.
  • Constellation names, notable names, and every-star names now appear based on how far you have zoomed into your sky rather than a fixed number, so a thirty-star archive and a three-hundred-star one both name the right amount at the same point in the pinch.

Mobile

  • Redesigned the star map for phones. It was a desktop view squeezed onto a small screen and is now built for a thumb.
  • The sky no longer opens as a thumbnail of the entire archive. It opens on your protagonist, close enough to read and tap, and pinching out from there reaches the whole map.
    • The whole map is now the widest view, so you can no longer shrink past it into a clump.
  • The pinch range is now a couple of gestures wide instead of forty, so getting from an overview to a close read no longer means fighting the map.
  • Tapping a name in a star's relations no longer force-zooms the sky. If you can already read the stars the hop glides over; if you are too far out it rises only as far as it needs to.
  • Replaced the small star card with a proper sheet.
    • It opens on who the star is and the start of its chronicle. Dragging it up reveals everything the desktop panel knows: full description, conditions, aliases, tags, and every tie with its story.
    • A star's strongest ties are now large tappable buttons that carry you there.
    • Swipe it down, tap the X, or tap empty sky to put it away.
  • Buttons, chips, and the legend are now sized for fingers instead of a mouse cursor.
  • The page header now steps aside while you are in the sky. One slim bar holding close, search, and filters sits under the status bar, in place of a quarter of the screen of chrome.
  • RECENTER now returns to the opening view and puts your selection down.
  • Fixed an issue where selecting a star and zooming out turned the rest of the sky nearly black. The highlight now softens as you pull back, so the map stays legible.
  • Star glow now eases off at the overview, so a large archive no longer washes out into one bright smear.

The Archive

Relationship Recall

  • Fixed some issues where node-weight math could conclude incorrectly on Chronicler runs. The app now correctly counts how many edges connect to a node, improving pathfinding across datasets.
  • You can now control how hard the characters prefer to take convoluted paths of the knowledge tree instead of simple ones, surfacing more obscure lore that could otherwise fail to make the cut. You will find the setting inside Knowledge Graph → Recall & Retrieval. Zero returns to the shortest link, whatever that is.

Fill In

  • Fixed an issue where FILL IN never worked again after being canceled.
    • Canceling now hands the archive back immediately, so you can start another search the moment you change your mind.
    • Canceling now also stops the search where it stands instead of quietly finishing it. A canceled search that was mid-retry used to keep going for minutes.
    • The warning now clears by itself when the pass it refers to really does finish, whoever started it.
  • Fixed an issue where an abandoned search could hijack a new one's progress text, or take away its Cancel button.
  • A search that fails outright now says so and gives you the entry back, instead of leaving Save grayed out for as long as the entry stays open.

Chat

  • Added right-click deletion for Canto title cards on PC. Press-and-hold was the only way, which is not how anything else on a desktop is deleted. Phones keep the long press.

1.20.5

July 28, 2026

Personas

  • Fixed an issue where Roleplay As… did nothing on phones. Picking a persona for a timeline closed the picker and changed nothing at all: no mask on the tile, and reopening the picker showed you were still your usual self.
    • Your choice now takes effect the moment you make it. Windows was never affected.
  • Fixed an issue where the persona-switch warning named the wrong person. Playing a hundred messages as one persona, changing who you are in Settings, then handing that story to someone else reported that you had been playing it as your current persona — a name that had never once appeared in it.
    • Timelines now remember who actually wrote them, and the warning names them correctly.
    • Stories written before you could have more than one persona are credited to the Persona in the first User slot. It happens only once after update.
    • Authorship travels between your devices with the timeline.
  • The persona-switch warning no longer appears when nothing would change. Pinning the persona you are already playing as is not a change of name.

Timeline Menu (Mobile)

  • Fixed an issue where Export History to .json reported nothing on completion, and nothing on failure, so a lost export looked exactly like a saved one.
  • Fixed an issue where Branch Timeline never reported the name it branched into.
  • Fixed an issue where Share Kumu Graph could decline to open the share sheet with no indication at all.

1.20.4

July 28, 2026

  • Removed Re-index All Lorebooks from Settings → Knowledge Graph. It was left over from a very early version of the app and should no longer be used. To rebuild one character's graph, open them in the creator and save; that is the safer, deliberate way to do it.
  • Removed Wipe Timeline Graph Memory from the same page. It was a leftover from 1.1.0 as well, predating the Archival Scholar and any sort of data management it brought into TLFI. It should not be used either.
  • Fixed the app closing itself when indexing finishes on Windows. Building a character's world graph tried to raise a notification at the end, and Windows has no notifications to raise.
    • The same fault could take the app down after deleting a character.
  • Fixed being told "the app closed unexpectedly" when it hadn't. Some errors are survivable, and the app kept running through them — but the next launch still opened with a crash report. It now waits to see whether the app actually goes down before claiming it did.

1.20.3

July 28, 2026

New Feature: Be Someone Else

Added support for multiple user personas. You are no longer one person.

  • Added Add User Profile to Settings → User Profile, with arrows at the top that page through your personas by name.
    • Each persona carries its own name, picture, appearance, personality, and lore, exactly as the single profile did.
  • The persona showing on that page is who you are everywhere by default. Switch, and the character speaking to you uses the new name that same turn: in chat, in the Narrator's prose, in the Overseer's chapters, in alarms, and in texts you get while away.
  • Added Roleplay As… to a timeline's long-press menu (right-click on PC), which hands a single story to a persona. The rest of your chats carry on as your usual self.
    • This also works on the Live Chat, which never had a menu of its own before.
  • A timeline pinned to a persona now says so on its tile: a small mask and the name of who you are in it, over a slow shimmer.
    • Very long names wrap rather than disappear, and the full name is always readable in the picker.
  • A timeline's Backstage follows the story it belongs to, so the two never call you different things.
  • Changing persona in a story already underway now explains what it means before it happens: everything already written keeps the old name, and the archive may come to treat the two as different people. It then lets you proceed.
  • Deleting a persona now falls any timeline pinned to it back to your global persona, and reports how many are affected first.
  • Personas sync between your own devices, pictures included.

New Feature: The Entity Indexer

Added Fill in to hand-written archive entries. Writing an entry by hand no longer means writing all of it by hand.

  • Type only a name — Cheesecake, The Battle of Blackwater Bay, Captain Vanya — and press Fill in. The archive reads your chronicle for everything it can prove about that one thing, then fills out the entry.
  • The hunt searches the whole timeline, not the last few messages. The first mention is usually the one that mattered, and it is often hundreds of messages back.
    • Passages that name the entity are read first, then passages that speak of it without naming it.
  • Results include more than a description: every character, place, faction, and object found to be tied to your entry, and the ties themselves — Aurelius → baked → Cheesecake.
  • Nothing is written until you say so. Findings arrive as a list you can read, uncheck, and edit.
    • Entries the archive already holds are marked as such and left alone.
    • Anything that cannot be stored reports why instead of vanishing.
  • Your own words are never overwritten. A description you had already typed stays at the top, with the findings below it.
  • Added Undo fill in, which returns the whole form to its previous state.
  • Added /index <name>, which runs the same hunt from chat. /index Captain Vanya 120 reads more of the timeline, and a bare /index opens a small form if you would rather not type arguments. Findings land in the same editor for review either way.
  • Added Settings → Knowledge Graph → The Entity Indexer, with its own model, its own prompt, and a slider for how many messages one hunt may read (40 by default).
  • Changed new entries to default to This timeline only instead of World lore. Most entries are written from something that happened in the chat you are looking at, and filing those as world lore quietly pushed one timeline's story into every other timeline of that character. It is also the safer direction: a timeline entry only shadows the world's version of the same name, and deleting it brings the original back. World lore remains one tap away.
  • An entity the archive already holds now says where it holds it — "already recorded in world lore" or "in this timeline". A character can exist in both at once, with the timeline's version taking precedence, and the old wording made that look like a mistake.

New Feature: The Page Notices Your Spelling

Added spell checking across the app. Misspelled words are now marked as you write. But they are marked pretty.

  • Marking covers the message box, the fullscreen editor, lorebooks, character descriptions, and the prompt fields throughout Settings.
    • Windows uses the dictionaries your system already has, Android uses your phone's. Neither sends a word anywhere. This happens on your device, like everything else here.
  • The mark is not a red squiggle. A word processor's wavy line has no business in a manuscript, so the mark is a stylized, hard-angled stroke.
    • More marks are being designed and are not in this build. They are functional but extremely unoptimized and cause Out-of-Memory errors even on high-end mobile devices. I will not ship them until they are performant, but the marking options include animated spilled ink and molten iron with embers.
  • Right-click a marked word (long-press on your phone) for corrections, Add to dictionary, and Ignore once. Cut, copy, and paste are all still there.
    • On Windows, a word you add is learned by the whole system, not just this app.
  • Placeholders are never marked: {{personaName}}, /commands, [brackets], === headers ===, links, file paths, and code. Prompt fields do not turn into a field of complaints.
    • Words the app itself uses — lorebook, roleplay, worldbuilding — are known already.
  • A dictionary of 107,000 words ships with the app and takes over on any device with no spell checker of its own. It never goes online.
  • All of it can be turned off with one switch, and the whole thing stays quiet when your system's "reduce animations" setting is on.

Knowledge Graph

  • Added a Chronicler interval slider to Settings → Knowledge Graph, setting how often memory is written (1–100 messages, still 10 by default).
    • The interval is also how much it reads: at 5 it wakes every 5 messages and takes in exactly those 5. A lower number means finer-grained memories more often, at a higher cost.
  • Added a slider for the deep cleanup pass, the expensive one that merges duplicates, finds missing links, and tidies the whole graph (1–1000 messages, still 100 by default), with a box for typing an exact number.
  • Both sliders now carry a warning worth heeding: a very high Chronicler interval paired with a very low cleanup interval is the worst of both worlds — rare, coarse memories and a constantly running expensive pass.
  • Fixed an issue where the deep cleanup pass was often skipped entirely. It rode along with the Chronicler, so a rate limit, a timeout, or a refused response dropped the cleanup silently, and it would not try again for another hundred messages. The two now run independently.
  • Fixed an issue where the Chronicler read a ragged window, re-reading the tail of the previous batch and stretching past its own interval. Each pass now covers its own block, once.
  • /reindex now rebuilds in chunks the size of your Chronicler interval, and /nodeorganize uses it for the stretch of chat it revisits.
  • Fixed an issue on phones where writing an archive entry by hand was impossible: the moment you tapped a field the entire form went blank behind the keyboard, so you were typing a name you could not see into a page that showed nothing at all. Every editor in the Archival Scholar was affected — entries, relations, communities, and the name pickers.

Miscellaneous

  • Fixed an issue where a message beginning with a word that merely starts with a command was swallowed. Opening a line with "/friendship is magic" or "/indexing my feelings" cleared your composer and sent nothing at all — no error, no message. Commands are now matched as whole words.

1.20.2

July 27, 2026

New Feature: Write Your Own Memories

  • The Archival Scholar — the knowledge graph browser you reach by right-clicking a timeline — is no longer read-only. You can now put things into a character's memory by hand.
  • Press Inscribe a new entry at the top of the list, to record anything you want the character to know: a person, a place, an heirloom, an event that happened offscreen.
    • Give it a name, a description and a classification, and it stands alongside everything the engine found for itself — including as a star in the Constellation.
    • You choose who remembers it. Global lore is known in every timeline of that character. This timeline only exists in one chat and quietly overrides the world's version of the same thing. World lore is the default.

Knowledge Graph

Relations

  • Added Add relation to every entry's dossier, linking it to another entry — Vanya → rules over → the Docklands — with a note explaining what the tie signifies. The note is the line the story reads when the relation comes up, not decoration.
  • Direction is respected, so she rules the docks and the docks resent her are two separate truths rather than one blurry link.
  • Added Save & reverse, which offers to write the opposite relation immediately after the first, with its own description.
  • Recording the same tie twic tells you it already exists and folds your note into it, instead of quietly keeping two copies.
  • Added a visible pencil to every relation for editing. They were interactable prior via long-press, it just wasn't obvious you can do that.
  • Deleting a relation, or an entry, is now possible.

Communities

  • You can now found a community yourself: name it, describe it, and put whichever entries you like in it.
  • Added a choice of who owns an entry's placement.
    • Committed to the mathematics lets the indexer re-sort the entry into whichever group its relations really belong to.
    • Pin the placement keeps it exactly where you put it, no matter how its ties change.
    • Pinning an entry that belongs to no community is a valid choice — it stops the indexer from ever filing it anywhere.
  • Pin all members lets you freeze a whole grouping at once.

Reindexing

  • Index Lore as Graph does not destroy hand-written entries and founded communities when it rebuilds a character's world knowledge.
    • It counts what's at stake and asks: Preserve my entries, or Wipe it all. It only asks when you have something to lose.

Sync

  • Fixed an issue where an entry or relation deleted while your other device was off would return on the next sync.
  • Fixed an issue where a hand-placed community could be quietly un-pinned by the other device.

Chat

Editing Messages

  • You can now edit what a character said. Long-press (or right-click) any message from a character or the Narrator and choose Edit.
    • Nothing after it is touched and nothing is regenerated. The message is corrected and the scene carries on.
    • Save is instant — the line reads correctly and their memory of it is left alone. Use it for minor typos.
    • Save & Revectorize also updates what they actually remember of that line. Use it when you changed the meaning rather than the spelling.
  • Fixed an issue where an edit made on one device could be undone by the older copy on the other device at the next sync.

Text Selection (PC)

  • You can now highlight text on PC.
    • The highlight is drawn in your theme's own colors, worked out from your accent and your chat background, so it reads on pale parchment and dark marble alike. It shimmers slowly and throws off small embers that drift up off the words and burn out.
    • Settings → Interface → Animated text selection turns the motion off and leaves a plain tint behind. The slider under it sets how many embers you get.
    • Selecting and copying works the same either way.

Attachments (PC)

  • You can now paste an image straight into the chat box. Copy a screenshot, an image from a browser, or a file in Explorer, then press Ctrl+V in the message box and it arrives as an attachment.
  • Pasting ordinary text still just pastes text.

Character Creation

Lazy Character Creator

  • Revamped. It no longer fires straight into a finished character with no way back short of wiping every field.
  • Added a prompt box to say what you're after — a role, a world, a tone, something you specifically don't want. You can skip it entirely and let your reference images do the talking.
  • It now draws four concepts first, each with a name, a one-line hook and a short paragraph on who they are. Pick one and it's built out into the full character exactly as before.
    • Press a concept's × to redraw that one alone. The other three stay put.
    • Press Generate 4 more to replace the lot.
    • Everything you turn down is remembered for the rest of the session and handed back as a "not this" list, so it stops circling the same idea.
  • Characters now arrive with a name.
  • Failures now tell you the actual reason. "Generation failed" used to be the answer whether your key had expired, the model had refused, or you'd been asked to slow down.
  • Fixed an issue where a failure during concept selection closed everything and threw away what you'd typed.
  • Settings → Services → Lazy Character Creator now holds two prompts: the one that drafts the four concepts, and the one that expands your pick into the full character. They share the same model and settings as before.
    • A prompt you've customized yourself is left untouched. If you have one, add "name" to its output list to get named characters.

Character Editor

  • Fixed an issue where pressing Save in the fullscreen lore editor saved nothing at all, losing everything you'd written if you closed the card without also pressing Save Changes.
    • Saving in the fullscreen editor, or in the Life Profile editor, now writes the whole character card immediately, confirmed by a brief "Character saved." The card stays open so you can keep working.
  • Closing a card with unsaved edits now asks first — Keep Editing, Discard, or Save — instead of silently discarding them.
  • Fixed an issue where choosing Edit Character on a different character while a card was open changed only the title, leaving the first character's form underneath — pressing Save could write the first character's entire card over the second one.
    • Everything that takes you elsewhere — opening a timeline or Backstage, tapping another character, creating a timeline or group chat, tapping a notification — now properly closes the card first, with the same Keep Editing / Discard / Save prompt.
  • Fixed an issue where creating a brand-new character and saving inside the fullscreen editor failed to create them, so Index Lore as Graph would answer "Save character first!"
  • Pressing Index Lore as Graph with unsaved lore now saves the card first, so what gets indexed is what you actually wrote.
  • Fixed an issue where importing or creating a character with a chat open replaced your chat's name at the top with the new card's. The editor now brings its own header.
  • Fixed an issue where the gold frame in the character rail vanished while editing an unsaved character. It now rests on the + slot.
  • Fixed an issue where a freshly created group chat deselected itself the moment it was made.

Sync & Storage

Timelines

  • Fixed an issue where a deleted timeline returned on every single sync, forever.
    • A deletion is now remembered properly on both devices, travels to a device that was switched off when it happened, and can't be undone by an older copy of the timeline on the other end.
    • The timeline's Backstage discussion now goes with it instead of lingering as an invisible leftover.
  • Fixed an issue where Storage & Cleanup never actually sent a cleanup to your other device, despite claiming to, so everything it removed came back on the next connection.
  • Routine syncing is now considerably quicker. Every reconnect used to redo a full comparison from scratch because of this bug.

Portraits

  • Fixed an issue where editing a character on one paired device could wipe that character's picture on both. The edit carried a note saying "the photo is over there," which is meaningless once it arrives elsewhere.
    • Character portraits, persona portraits and appearance references now travel with the change.
  • Portraits already lost are restored on the next launch. The image files were never deleted, only misfiled, so the app finds them and reconnects them by itself — and the recovered picture syncs back to your other device.
  • A character whose picture truly can't be found now falls back to their initial letter instead of an empty circle.
  • Fixed an issue where appearance reference images went missing one by one across syncs.
  • Fixed an issue where the cleanup tool offered to delete a picture belonging to a character you still have.
  • Fixed an issue where removing a portrait in the character editor didn't remove it.

Miscellaneous

  • The app now tells you how to get updates. Without a key it used to stay quiet forever while new versions came and went.
    • If you don't have a key, a note on startup points you at our Discord, where anyone who asks during the Open Beta gets one free. If you do, it takes you straight to the box to paste it in. Enter one and the note is gone for good.
    • The same invitation now sits at the top of Settings → License & Updates, for when your key stops working or you're setting up a second device.

1.20.1

July 24, 2026

  • HOTFIX: no more false "the app closed unexpectedly" reports after an update. Installing an update, swiping the app away, or the system reclaiming memory could make the next launch incorrectly offer to send a crash report. The app now tells a genuine crash apart from these ordinary shutdowns, so you'll only be asked to report when something actually went wrong. (Android.)

1.20.0

July 24, 2026

Hey! So you might be thinking, "1.20.0"? Why'd we skip 1.18 and 1.19? It's my fault. One of my users sideloaded an experimental version of the android app I made specifically for them, built on an armx64-v8 architecture rather than the universal android apk. This caused the internal app version to, for whatever reason, sign itself with a +2000 byte offset, resulting in 1.19.4. Android would throw a "could not update" error due to attempted downgrade. To let them preserve appdata, I've chosen to bump the version to a clean 1.20. This issue is now fixed and will not occur again. On top of it, we have more features requested by the lovely people coming from SillyTavern cooked and ready!

  • You can now use your own font! Prefer something plainer or easier to read than the manuscript typeface? Under Settings → Interface → Font you can change the font for the whole app. Chats, menus, headers, everything, in every theme. The easy way is Browse Google Fonts: a built-in browser with the whole catalog — search, filter by category, feeling, type or language, sort by popular/trending/newest, and see every font previewed in its own style (with your own sample text). Tap one and it's applied instantly, no files to hunt down.

Prefer your own fonts? Install file takes a .ttf or .otf, or even the .zip you downloaded, which the app unpacks for you, so you never have to fiddle with unzipping on your phone before installing. One tap on Reset puts the original font back. Whatever you pick is also baked into any custom theme you share, so it travels to your friends with the theme in one go.

  • Get notified the moment a reply lands. If your provider is slow and you lock or leave the app right after sending, you no longer have to keep checking. A notification (with sound and vibration) now lets you know as soon as the bot replies. It stays quiet while the app is foregrounded so you don't get pinged to oblivion during regular roleplay, and you can turn it off under Settings → Interface → "Notify me when a reply arrives." On by default. (Android.)

1.17.9

July 24, 2026

  • Fixed: a streaming reply now no longer fails when processing malformed bytes.

  • Fixed: the Game Watcher settings no longer close the app on PCs without a working microphone. Opening the Game Watcher settings could instantly close the app on machines where Windows had no usable mic.

1.17.8

July 24, 2026

  • New: the app now allows you to report crashes. If the app ever closes unexpectedly, the next time you open it you'll be asked whether to send a short crash report. It bundles the diagnostic logs and, where the system can capture one: a crash dump, a detailed snapshot of what the app was doing the instant it closed. This works on Windows, Linux, and Android. Nothing is ever sent without your permission, and your API keys are stripped out automatically. It's the biggest help for the kind of sudden close that leaves no other trace, on a machine that isn't mine.

  • Settings pages are now self-recovering from crashes. If for whatever reason, entering a settings page causes your software to crash, the "recent settings page" key is wiped from prefs to prevent reopening the crashing page the second you open settings again.

1.17.7

July 23, 2026

  • New: change every model from one place — and set them all at once. Settings → Providers & Keys now has an "All models — quick edit" list with every AI model field in a single spot, so you can retune the whole app without page-hopping. Pick one model and tap Apply to all to set it everywhere at once — text models and image-generation models stay separate, so your text choice never touches your image tools. Changed your mind? "Clear all slot overrides" resets everything back to defaults.

  • Fixed: the character-creation tools now correctly run on any provider. The card translator, the lazy character creator, Auto-Generate Tags, Generate Baseline, Transcribe Appearance, and Overseer story-building should no longer experience "API key not set" errors.

  • New: color the dialogue in your chats. Spoken lines -- anything inside "double quotes" -- can now show in their own color so speech stands out from the narration. Turn it on under Settings → Interface → "Color quoted dialogue." Off by default; it picks a color that suits your theme automatically, or choose your own. Works in every chat, on phone and desktop.

  • The app now stays upright on phones. A stray rotation can no longer stretch or scramble the mobile layout -- it stays in portrait. (Desktop windows still resize freely.) I have decided to (at least temporarily) restrict the app to a vertical layout because it has no landscape layout to fall back to. Should there be demand for landscape mode, I will develop a proper such.

  • Easier to change pictures in Settings. Tapping your profile photo or a custom theme's background to swap it is more reliable now, and you can tap a theme's preview directly to replace it.

  • Fixed: big memes no longer break the meme tool. Oversized meme candidates (usually chunky GIFs) are now shrunk or skipped instead of failing a character's turn, so the meme keeps sending no matter how hefty the pictures are.

  • Fixed: Linux AppImages now start. Fixed an issue that made Linux AppImages misread their own directory and quit on launch. (Windows and Android were never affected.)

1.17.6

July 22, 2026

Minor fixes.

1.17.5

July 22, 2026

  • You can now set your own request timeout — and slow replies aren't thrown away anymore. If your provider is having a slow day, the app used to give up after a fixed few minutes and show "request timed out" — while the provider quietly finished the reply and billed you for it. There's a new Connection & Timeout panel under Settings → Providers & Keys where you set how long to wait. It also streams the reply by default: the app keeps the connection alive as long as tokens are still coming, so a slow-but-working model is no longer abandoned, and a genuinely stuck one is dropped quickly (you set that "stall" cutoff too). When a reply does get cut off partway, whatever already arrived is now kept and shown instead of vanishing.

  • Big images no longer make a character's reply fail with a "413" error. If a chat had image references or attachments, the character's reply could get rejected as "too large" even though the Narrator wrote its scene fine on the very same model — because only the character's turn carries the pictures. The app now shrinks large images once (and remembers the result, so it doesn't re-do the work every message) before sending them, which keeps requests under the limit without draining your battery. If a request is still too large, it automatically re-sends that turn without the images so you at least get the reply, and tells you it did. Prefer full-resolution images (e.g. on a big multimodal model that eats huge attachments)? Flip on "Don't downscale images" in the same panel.

  • Optional: see how many tokens each chat actually used. A small readout above the message box can show the exact prompt, output and total token counts your provider reported for the last reply — the real numbers to check against your provider's dashboard if you suspect you're being overcharged. It's off by default; turn it on under Settings → Interface → "Show token count above the message box." Works across Gemini, OpenAI-compatible providers, Anthropic and Claude Code. (The old Gemini token counts in the debug log were also wrong — they mislabeled the model's "thinking" tokens — and are now counted correctly.)

  • Model names in the picker are readable now — even the long ones from OpenRouter and other proxies. Choosing a model routed through a third-party provider used to show something like OpenRouter · anthropic/claude-opus-4.6, and the part you actually care about — the model itself — got cut off the end of the box. The dropdown now shows the provider and a clean model name (OpenRouter · Claude Opus 4.6), so you can always see both which service you're going through and exactly which model you're on, no matter how long the raw name is. The provider is kept on purpose — the same model run through a proxy can behave differently from going direct — while redundant wording is trimmed (you'll see Google Gemini · 2.5 Pro, not Google Gemini · Gemini 2.5 Pro).

  • Fixed: a friend request a character offers while you Continue their reply now actually arrives. If a character decided to add you inside a reply you extended with Continue, the request was silently dropped and a bit of raw tag text (<send_friend_request/>) was left stranded at the end of the message instead. Continuing a reply now runs the same tidy-up the normal path does: the friend request goes through, and stray tags never leak into the bubble. It's also hardened against the request getting chopped off mid-word by a truncated reply — the leftover fragment is cleaned away, and if you Continue, the finished request still fires.

  • Fixed: the Constellation's nebula was invisible in Light Academia. The star-map's glowing gas clouds showed beautifully in Dark Academia and custom themes but flattened into a bare green field in Light Academia — you'd see stars, but none of the nebula behind them. The brightness guard that keeps the backdrop from washing out was measuring against pure black, and Light Academia's deep-forest background is lighter than that, so it wound up erasing the entire cloud layer. It now measures against your actual theme background, so the nebula reads a clear step brighter than whatever ground your theme paints. Light Academia gets its sky back; Dark and custom themes look exactly as before. (Your first visit after updating regenerates the texture once.)

1.17.4

July 21, 2026

  • Your built story now tells you how to begin it. A gently glowing "Your story is ready" prompt appears above the message box the moment the Overseer finishes building a story. Tap it (or type /narrator) to begin; it fades once you're under way. If the Narrator's switched off, the prompt says so and takes you to its settings.

  • The /director command is now /narrator. To match the "Narrator" name used everywhere else: /narrator wakes it now, and /narratorpurge wipes this Timeline's Narrator notes and plan. The old /director commands no longer do anything, and the last stray "Director" labels in the UI now read "Narrator" too.

  • Reasoning models now think properly out of the box, on any provider. When your primary provider isn't Google, each job now ships with a sensible thinking depth built in instead of the provider's shallow default: light chores (auto-naming, the clock, triage) stay fast on Low, the everyday workhorse runs Medium, and the heavy creative and analytical jobs — your main replies, the Narrator, the Knowledge Graph — think hard. On a Claude Code subscription, where deeper thinking costs nothing per token, the flagships push harder still. Every slot's effort dial still wins if you change it, and Google/Gemini setups are unchanged.

  • The built-in default prompts got a refresh. Several shipped prompts were rewritten — both Narrator World-Engine modes, the Live Chat persona and its texting voice, the multi-bubble style, the "won't stop pinging" reaction, the in-game action controller, and the story-gist distiller. Only fresh installs and Restore-to-Defaults are affected; prompts you've customised yourself are left as you set them.

  • "Hub Sync" is now "Wifi Sync." Renamed everywhere — sidebar, page title, status line — and the host role that read "Hub" now reads "Host." How syncing works is unchanged.

  • Far better at recovering the AI's mangled data output. Half the app runs on the AI answering in strict JSON — Narrator verdicts, Sentinel readings, memory extraction, character generation, characters' tool calls in DMs — and models flub the format constantly. A new reconstruction engine restores even severely garbled answers, and it's the same engine everywhere. In practice: fewer silent retries burning your API quota, fewer "invalid JSON" failsafes eating a perfectly good reading, and fewer tool calls that just quietly didn't happen.

  • Three more settings pages got the tidy, collapsible redesign. Overseer Engine, Knowledge Graph and AFK Messaging are now labelled, collapsible cards instead of top-to-bottom walls of controls — open just the part you care about. Each page remembers what you left open, long prompts sit behind a preview-and-Edit tile, every section is findable from settings search, and on/off features lead with a clear enable switch. Nothing was reset.

  • Dark and Custom themes now reach every corner of the app. Dozens of surfaces were stuck in the Light Academia look no matter your skin — the Narrator Control header, the "is typing…" bar, License and WiFi Sync pages, delete confirmations, menus, the prompt editor, the model switcher, the update popup and more. All follow your theme now, Custom themes included, and light-background Custom themes also fixed a batch of unreadable white-on-light text. Meaningful colors are untouched: success green, errors red, warnings amber, status dots keep their meaning.

  • Character-rail folders are simpler now — just pick a color. The name and icon fields are gone (neither ever showed up on the rail); the folder editor is now a single color palette. Folders left on the default color follow your theme, while ones you deliberately recolored keep your color.

  • Fixed: very long sender names no longer break the chat bubble. An extremely long character or Narrator name used to overlap its own profile picture, run off the edge, and push the "Thought Process" toggle out of reach. Now the full name is always shown — it flows onto as many lines as it needs instead of spilling off-screen — and the timestamp and "Thought Process" toggle simply ride along after it, staying on the first line when there's room and tucking underneath only when the name is long. Short names look exactly as they always did. Works in both normal and full-width layouts.

  • Fixed: a dropped connection is no longer mistaken for a real answer. A network hiccup used to get read as a decision or a failure in several places, and the app would act on it:

    • A pending friend request would show "declined", get written into history, and start the cooldown — even though the character never decided. It now says "Couldn't reach them, try again in a moment", records nothing, and leaves your request open.
    • The background work that keeps a character's private notes and story synopsis current, their spontaneous "thought of you" texts, and the first message of a new friendship used to give up on a blip; they now wait it out and retry on their own.
    • A SillyTavern card import used to silently fall through to the card's raw fields, producing a half-imported character; it now tells you the translation failed.
    • A character reviewing its own photo, GIF or meme used to count a failed turn as approval (and kept the empty reply); failed reviews are now treated as failures and dropped.
    • The debug log used to blame the AI ("invalid JSON/envelope") for a reply that never arrived; every one now names the dropped connection, so bug logs point at the right thing.
  • New: characters stop texting you if you never text back. Ignore someone's messages and they go quiet, just like a real forgotten DM. Every unanswered message goes on a tab that throttles how often they reach out — two ignored and they text about half as much, four a quarter, eight and they've all but stopped. It's per character, so the ones you actually talk to are unaffected. Replying clears part of the tab and time clears the rest, so someone who gave up months ago will eventually try once more. It's on by default and covers both plain "thought of you" texts and AFK story comments. Tune or disable it all under Settings → Backstage & Live Chat → Attitude (Ignored Messages), including whether talking to a character anywhere counts as answering or only their DM does.

  • Live Chat now fully runs on its own Generation Engine. When the settings pages were split, Live Chat got its own model, sampling and thinking — but several corners kept quietly using Backstage's instead. The model name shown above your DM and in the dropdown both reported the wrong one, and three things generated on the wrong model outright: a character deciding whether to accept your friend request, the first message they send, and their spontaneous texts. All of them now use the Live Chat model you picked, and your Live Chat temperature, top-P/top-K and thinking settings reach them too — so expect those moments to be more considered (and a little slower/costlier if you've turned thinking up).

  • You can now read the thinking behind a character's AFK text. When a character reaches out on its own — a first text, a spontaneous "thought of you", or an AFK note about your story — its reasoning is kept with the message so you can expand the "Thought Process" block, same as any reply. It only shows inside the chat, never in the notification.

  • Fixed: "Let characters text you first" could flip itself back. The toggle lives on both the Live Chat and AFK Messaging pages by design, but the AFK page could write its stale copy over a change you'd just made. Change it on either page now and it sticks. (Both pages' reasoning-effort dials are also findable in settings search now.)

  • Fixed: the Narrator could speak as YOU. It was blocked from writing your companion but never your own character, so nothing stopped it posting a scene under your name. It's now blocked properly, and a caught attempt destroys the whole turn — message, ledger notes, watch conditions, the lot — instead of quietly keeping them. You choose how strict the check is under Settings → The Narrator → Identity → Anti-Puppeteering: Default catches it signing a message with your name; Moderate also kills turns that make you the subject of a sentence while still letting it write about you; Extreme kills any turn that mentions you at all; Off lets it puppeteer freely. Turns thrown out for puppeteering are now labelled in the wake log instead of looking like silence.

  • The default "extract appearance from image" prompt is now much more thorough. Pulling a description from a reference photo (Character Creator / your own profile) used to skim past physical detail. The new default asks the AI to write in first person and be exhaustive about body, physique, species and coloring, treating clothing and pose as secondary. Only installs still on the built-in default pick up the change. Restore defaults to make it go in effect.

  • The Narrator's wake log now lives in Narrator Control, with the rest of its business. The log answering "why did the Narrator step in — or not — on that turn?" used to hide inside your character's knowledge-graph dossier; it's now folded under the note ledger in Narrator Control (long-press a timeline, right-click on PC). Scene state, previously shown read-only in two places, now appears once here where you can actually edit it.

  • The manuscript typeface is now everywhere. Scattered corners still rendered in your device's default sans-serif — most Archival Scholar and Narrator Control dialogs, the entity inspector rows, the Game Watcher overlay chat log, the reasoning-model tooltip, the Patreon verify button, and several dropdowns. All match the rest of the app now, and even the Android full-screen alarm takeover uses the typeface. Genuinely fixed-width text (code blocks, your license key and device ID, the trace log) stays fixed-width.

  • Fixed: searching a long prompt jumped to the wrong line. Ctrl+F in the prompt editor measured the text in a different typeface than it displayed in, so the jump drifted further from the match the deeper it was. It now lands on the match.

🧹 Deletion upgrades

  • App deletes its own files better now. Syncing could produce issues.

  • New: "Find orphaned data" cleanup, under Settings → Backup & Sharing. Characters and timelines deleted in older versions could leave data stranded. This scans for all of it and shows you exactly what it found first, named where possible — "Isla — 1 timeline, 47 messages, 12 graph links, 3 images (2.1 MB)". Nothing is removed until you agree, and a paired device gets the cleanup too.

  • The sync image cache no longer grows forever. The app keeps transfer copies of chat images for your other device, and they were never cleaned up — 225 MB on the test phone. The cleanup button now clears them (your real images are untouched, and copies are remade if ever needed), they expire on their own, and the app stops making them at all with no second device set up.

  • Deleting a character now cleans up after it properly. A banished character used to leave behind its indexed lorebook, its listing as an alarm voice, unread AFK notifications still pointing at a dead chat, its avatar in the Android share sheet, and leftover unread counters and cooldowns. All handled now — and if an alarm was voiced only by that character, the app tells you instead of quietly changing it.

  • Fixed: purging Overseer or Narrator data no longer silently comes back. With a second device paired, the Overseer "Purge" button and /narratorpurge removed data locally but never told the other device, which pushed it all straight back on the next connect. Both propagate properly now, and /narratorpurge also clears the Narrator's secret knowledge, which it always skipped.

  • Fixed: ending a Game Watcher session left the whole play-by-play in the database. Once the recap was delivered the session was hidden, but its messages incorrectly stayed on disk.

  • Fixed: deletions now reach a device that was switched off. Deleting a character or timeline was only announced to a device connected at that exact moment; one that was off or asleep never learned and pushed it back on the next sync. Deletions are now recorded so they survive until your other device reappears.

  • Group chats stay readable after you delete one of the cast. Lines from a deleted character are kept on purpose (removing them would tear holes in a scene the others still own) but used to show as "Unknown". The name is now preserved on the messages themselves.

  • Leftover images and sounds get cleaned up too. Every theme import, portrait change and crop left the old file behind, and imported alarm tones were never deleted. The cleanup button now finds anything on disk the app no longer points at, and deleting an alarm takes its imported sound with it.

🧠 Every Model Slot Now Knows Its Model

  • Thinking & reasoning controls everywhere, for every provider. Every model picker — Knowledge Graph, Clock AI, Character Alarms, AFK, Game Watcher, Narrator, Overseer, Story Synopses, DM Memory, Life Profiles, Urgency Triage, BG3 Dialogue and the rest — now shows the RIGHT controls for what you selected: Claude's Extended Thinking toggle and effort ladder, Gemini's thinking budget, or a reasoning-effort selector for DeepSeek/GLM/Kimi/OpenRouter/NanoGPT. Previously most pages only showed thinking options for Gemini and hid everything else.

  • Obscure and custom-endpoint models get a manual effort dial. Even a model the app has never heard of now offers Low/Medium/High effort. Leave it on "(provider default)" and nothing changes.

  • Model capabilities sync from your providers automatically. On startup (and on "Fetch models") the app asks each provider what each model supports, so brand-new models get correct controls without an app update.

  • Knowledge Graph thinking settings actually work now. The KG thinking budgets were never being sent to the model — indexing ran without reasoning whatever you configured. They now apply for real (plus a new config for the Deep Character pass), so expect smarter, somewhat slower indexing at the default High. Tune passes down for speed.

  • Character Alarm settings cleaned up. The alarm page no longer shows Gemini-style sliders for models that can't use them (or calls every model a "Gemini model") — it adapts to your pick like everywhere else.

  • Live Chat and the Deep Character indexing pass now switch providers with everyone else. "Apply equivalents to all slots" (and clearing slots back to defaults) in Providers & Keys used to leave these two pickers behind — now they move with the rest and preview in the apply dialog. Under the hood, all slots share one self-contained selector, so future providers appear across the whole app at once.

  • You can finally rename an entity in the Archival Scholar. EDIT ENTITY now opens with a TRUE NAME field. Rename it and the whole archive follows — every relationship, community roster and per-timeline record. The old name is kept as an alias by default (untick if it was simply wrong). If the name's already taken or is another entity's alias, the app warns that the two will fold into one at the next indexing pass and lets you proceed — a legitimate way to merge entities you never wanted apart.

  • Your {{userName}} / {{personaName}} variables now work everywhere you type them. They used to resolve in only a couple of fields. Now they fill in with the real names in a character's Personality, Visual Description, Physical Capabilities, Static Lore and Lorebooks, in your own persona, and throughout the Knowledge Graph (node names, descriptions, aliases and relationships) — both in the Archival Scholar and in what the AI reads. Indexing stores the real names too, so the graph no longer spawns a separate {{userName}} entity, and lorebook retrieval searches with the real names (re-index once to refresh). The shorter {{user}} / {{char}} spellings now work too, and matching is forgiving about capitalisation and spare spaces.

  • Your characters now bring their lorebook into Live Chat. Live Chat DMs can finally draw on a character's full lorebook on every reply, not just the always-on Static Lore. A control under Live Chat → Generation Engine switches it on or off and sets how much rides along (1,000–100,000 chars, 10,000 by default). Entries are added whole, in the order you wrote them, until the budget fills.

  • Fixed: your character rail keeps its order when your phone dies. A battery death or Android background-kill could leave the rail reshuffled into its default order — permanently — because the order file was rewritten in place and a bad-moment shutdown left it half-written. It's now written safely with a kept backup, self-repairs from that backup if damaged, and flushes pending changes when you minimise or close. Your character list file gets the same protection. If your order was already lost, your folders survived and reappear in the rail.

  • Your character rail now syncs between your devices. Reorder characters or folders on one device and the other follows over your existing WiFi sync — no cloud. Folder positions never synced before, so a folder could arrive with nowhere to appear. Changes now show up live while both are connected, and a character created on one device drops into the other's rail straight away. If they disagree, the most recently edited device wins; a device you've never rearranged defers to one you have. Older-version devices are handled gracefully.

  • Fixed: your Windows app is no longer empty — all your data is back. The last update's proper accented app name accidentally pointed Windows at a new, empty data folder, so the app looked wiped. Nothing was lost — it was on disk the whole time. This update points the app back at it and pulls across anything you made while it looked empty. Just open it.

  • Fixed: the app icon no longer stays stale after a PC update. The desktop/Start-Menu shortcut sometimes kept the old icon (a Windows icon-cache quirk). The installer now refreshes the cache automatically.

  • /nodeclean now truly merges duplicate entities. If your archive showed the same person twice — two copies of your character, or a short-name/full-name split — /nodeclean used to only tidy relationships and never remove the duplicate's base-lore copy, so the twins kept coming back. It now folds duplicates together (same-name, alias, and template-variable twins alike), keeps the name you see as the survivor, carries the rest over as aliases and merged lore, and repoints relationships across all timelines. One run collapses the doubles for good.

  • Fixed: Knowledge Graph organization no longer crashes on cross-timeline ties. /nodeorganize (and the automatic consolidation as your chat grows) could die with "Bad state: No element" when a relationship pointed at an entity that only exists in a sibling timeline. Those ties are now set aside for the pass (they stay valid in their own timeline) and the job finishes.

  • Fixed: The Sentinel occasionally ignored a perfectly good reading. A doubled closing brace on its JSON reply used to get the whole thing thrown away and fall back to "nothing happened here", silently losing that turn's importance/tension scoring and wake check. It's now parsed correctly. We built an extremely robust json restoration util. Expect a lot less failures across the app now.

  • Fixed (Baldur's Gate 3): your companion can loot big monsters and reach for named objects again. The barrel-smashing/lockpicking update accidentally made her refuse to loot large creatures like a minotaur ("can't loot: target not there") and grab the wrong thing when you named an object like Phalar Aluve. Both fixed: she loots any corpse she can walk to, and goes for exactly the item you named.

  • Fixed (Baldur's Gate 3): your companion runs instead of strolling. Moving to a spot — closing in, repositioning, kiting, retreating — she used to amble at a walk, which felt sluggish in a fight. She now moves at a proper run.

  • Macro-story generation is a little leaner. The Overseer used to run an extra semantic memory search on every writing step, but its ground-truth summary and your top-importance memories already cover it. Dropped, so campaigns generate with fewer background calls and no change to the result. The lorebook-trimming lore search is untouched.

1.17.3

July 18, 2026

🌌 A New Way To View Data

Up to this point, KG data was only available via list or external visualizers. Now, I have cooked up for you a beautiful Constellation viewer - a fourth way to view your nodes. Every nebula is algorythmically generated from the theme - meaning your custom themes get custom looks.

I also moved more relevant options in the session context menu (longpress Timeline) up and less relevant ones down. Renamed "Inspect KG Entities" to Archival Scholar.

Baldur's Gate 3 Improvements

The LoupCompanion mod (that comes with the app on PC) now resolves way more actions through the ingame resolver. The AI is capable of complex actions and can follow complex commands, including but not limited to lockpicking, looting corpses, traveling through zones, interacting with levers, finding objects, sending items, and general capabilities, including native dialogue controls (no more image recongnition.)

1.17.2

July 17, 2026

My Artist Woke Up from Stasis

Finally, after a long time, TLFI has something more than a generic icon! Icons, icons, banners, loading screens, notification outlines - we made it all, for PC, for mobile, and now the app is looking a notch prettier.

🎨 New App Icon & Loading Screen

  • A new app icon, everywhere. The Loup Frères Island has a new icon across the board — app launcher on your phone, and the desktop shortcut and taskbar on PC.
  • A painted loading screen. Opening the app now greets you with a full illustrated scene while it loads.
  • Sharper on Windows. The old Windows icon was badly blurred. Now it isn't.
  • Notifications get a clean outline mark. Push notifications now show a simple outline version of the new icon in the status bar!
  • The app goes by its proper name on Windows now. A few Windows corners still showed the internal codename the_loup_freres_island. Fixed.

⚙️ Settings, Redesigned — find anything, fast, smoother, and more pleasant-looking

  • Search your settings. There's a search bar helping you find everything faster.
  • Live Chat has its own page model and settings now, separate from Backstage. For easier navigation between these two similar-yet-distinct features.
  • Settings match your theme. If you use a custom theme, the settings cards and prompt fields now take on your theme's color instead of a flat generic panel — while staying readable whatever background you picked.
  • Every media tool lives in one place. Image generation, GIF reactions and memes used to be scattered across three different pages with three separate copies of the same controls. The new Media Tools page gathers all of it - you toggle them per feature set.
  • Prompts don't bury the page anymore. Long editable prompts used to be giant text boxes stacked one after another, so a page was mostly empty prose you had to scroll past. Each prompt is now a single tidy row showing its name. You also see which are edited and which are stock.
  • Sections collapse. The big pages are now made of collapsible cards, so you can fold away the parts you're not touching and the page remembers what you left open. Sections with an on/off master (memes, timeline peeking, the friendship gate…) show a switch right in their header.
  • Cleaner, consistent names. "System Directives" and "System Instructions" were the same page under two names — now it's just System Instructions everywhere. Same for Narrative Director, Hub Sync, Overseer Engine and Knowledge Graph. The per-story Overseer console is now Overseer Console so it stops clashing with the settings page of the same name. And the whole settings list is regrouped into clearer sections: Conversation, Story Engines, Companion, Providers & Models, Sync & Backup.
  • Your existing setup is untouched. Every setting keeps its value, and old backup/config files you exported still import in full — the pages just point at the same settings from tidier homes.

🎬 The Narrator, The Sentinel & the Overseer — clearer, connected

  • "Narrative Director" is now just "the Narrator" everywhere you see it, and its settings page got the same section makeover as the rest — Identity, Model & Generation, Wake Rules, and System Prompts, each collapsible, with the prompts as compact edit-fields.
  • "Heavy Pass" is now "The Sentinel." It's the part that reads every turn to score how important/tense it is (for memory) and to decide when to wake the Narrator — the new name says what it does.
  • The Sentinel now tells you if the Narrator is on. Right at the top of the Sentinel section it shows Narrator: ON or OFF — because when the Narrator is off, the Sentinel's wake-ups do nothing (it still scores memory). A tap takes you straight to the Narrator's Wake Rules.
  • The Overseer warns you when the Narrator is off. The Overseer only writes the story plan; the Narrator is what performs it. If the Narrator is disabled, the Overseer page now shows a clear banner — "The Narrator needs to be enabled to utilize this module" — with a one-tap way to turn it on.

🎤 Game voice — no more phantom "you"

  • Push-to-talk no longer types a stray "you" (or "thank you") when it hears nothing. If your mic captures silence — usually because the wrong input device is selected — the offline voice model used to invent a random word and drop it into game chat. Now a silent clip is detected and discarded before it's ever transcribed, and you get a "Heard nothing — check your mic in Game Watcher → Voice settings" nudge instead. Shouting-to-uppercase also got more reliable on Windows in the process.

🧠 Deep Character Pass — a stronger memory for your character

  • An optional deep dive on your main character when building their memory. Turn on Deep Character Pass in Knowledge Graph settings (it's off by default) and, while indexing, the app does one dedicated read of the whole lore focused entirely on your character — hunting down every name, title, nickname and epithet they go by and writing the richest possible profile of who they are. It then makes sure the character ends up as a single, correctly-named entry, wired into everyone and everything they're connected to — and creates that entry even if the normal sweep somehow missed them entirely. The result is a far more complete, better-connected character than the normal one-pass sweep produces. Roughly doubles indexing time (and cost).

🎬 Director Fixes

  • The Director's thinking controls now show up for Claude and GPT models. If you pointed the Director at anything other than a Gemini model, the entire Thinking Config section vanished — no thinking toggle, no reasoning depth, nothing. The Director silently ran with whatever the provider felt like doing. Now the page reads what your chosen model can actually do and shows the right controls for it: an Extended Thinking switch for Claude, an Effort ladder (low through max) for Claude, GPT and Claude Code, the budget slider for Gemini 2.5, the level dropdown for Gemini 3. Pick a model, get its knobs.
  • "Delete Timeline" is reachable again on your phone. The long-press timeline menu had grown past what fits on a phone screen, and because it couldn't scroll it just cut off the bottom — taking Branch Timeline and Delete Timeline with it. The menu now scrolls, so every option is reachable no matter how many the timeline has.

A Small Appearance Tweak

  • Dark Academia Settings Background is now swapped for something more legible.

1.17.1

July 15, 2026

🎬 Director Control — Take the Pen Off the Director

  • Now you can see what the Director actually knows — and fix it. Long-press a timeline (right-click on PC) and pick Director Control for a full screen of everything the Director is holding onto about that story. Until now this was a black box: if it quietly decided something wrong about your story — the wrong person cut the rope, someone's dead who isn't — that mistake silently poisoned every scene after it, and you had no way in. Now you just open it up and correct the record.
  • Its notes are yours to edit. The Director's ledger — the running list of facts it remembers about your story — is now a proper editable list. Add a note, rewrite one that's wrong, delete one that's junk, all in place. Each note can be flagged Critical, which means the Director will never quietly drop it to make room: standard notes get pruned oldest-first once you're over the cap, critical ones stay forever. The header shows you exactly where you stand against that cap, so nothing disappears as a surprise.
  • Rewrite the stage picture. The Director keeps a short description of the scene as it understands it — who's on stage, where everyone is, what's hanging in the air. That's now editable text. If it's lost the plot about who's even in the room, correct it and the next turn picks up your version.
  • Tell it what to watch for, one condition at a time. Triage triggers — the conditions that wake the Director up — are now separate fields with add and remove buttons, instead of one long line you had to punctuate yourself.
  • Peek at the current scene's script, if you dare. Tucked at the bottom, collapsed behind a spoiler warning, is the Act and Canto you're playing right now — the numbering, the act's notes, and the scene brief the Director is steering toward. It's folded away by default for a reason: this is the plan for the scene you're currently living through, so opening it will spoil how it's meant to go. Only the current act and canto are here — the whole story map still lives in the Overseer page.
  • Edits reach your other device. Notes you add, edit, flag or delete on your PC land on your phone and vice-versa. Notes the Director itself throws away now properly disappear on both devices too, instead of lingering on one of them.
  • Free Roam timelines are welcome. No story generated? The screen tells you it's running Free Roam and still gives you the full ledger and scene state to play with.

🎨 Readable Text on Any Custom Theme

  • Your text stays legible no matter what background you install. Custom themes let you drop your own image behind any panel — but a light image used to swallow the light-colored headers, buttons and input text sitting on top of it. Now the app looks at each background you install and automatically picks a light or dark ink for the text over it, with a subtle soft shadow so words stay crisp even over busy, patterned images. No more squinting at invisible section titles or a message box you can't read.
  • It just works, but you're in control. There's a new Auto-contrast text switch in Settings → Interface → Custom Theme (on by default). Leave it on and the app handles legibility for you; turn it off if you prefer the classic light text. Your own hand-picked chat text color still wins where you've set one.
  • Themes you share carry it too. Baking a theme to share now bundles the readability info, so whoever imports your .louptheme sees legible text from the first frame — and themes you made before this update get measured automatically the next time the app opens.
  • Your Settings screens on PC now wear your theme's color. PC Settings deliberately uses a clean solid panel rather than the background image (a full-screen texture reads as noise on a monitor), which meant custom themes couldn't touch it at all — it was always the same dark olive. Now it takes the color of your Settings background image automatically: install a warm tan image and PC Settings turns a deep warm brown that matches. Prefer to choose it yourself? There's a new Settings panel color picker in Settings → Interface → Custom Theme. Either way the tone is kept deep enough that every settings screen stays readable, and the sidebar, tabs and headers follow along.
  • Green buttons and headers now follow your theme's accent — and stay readable. The scattered green/teal highlight colors across buttons, switches, sliders, section headers and dividers are unified onto your theme's accent color, so if you pick a custom accent the whole app follows it. Button labels automatically flip to black or white for whichever accent you choose, and accent-colored headers brighten or darken themselves just enough to stay legible against your background instead of blending into it.

🖼️ Every Device Keeps Its Own Look

  • Your phone's theme is its own. Custom themes no longer travel over sync, so the theme you built on your PC stops repainting your phone the moment the two devices talk. Set a bright one on the desktop and a dark one for reading in bed and they'll both stay put — whichever device you touched last no longer wins. This also closes a nastier version of the same problem: hitting Restore Defaults on one device used to wipe the other device's custom theme along with it.
  • The rest of your Interface settings are per-device now too. Text size, avatar size, drop caps, full-width messages, rail and drawer scaling — all of it stays on the device you set it on. A phone and a monitor are different screens at different distances, so the text size that's right on one was never going to be right on the other; the desktop-only sliders didn't even mean anything on your phone. Tune each device to itself and it stays tuned.
  • Moving your look across is now something you choose to do. When you do want a theme on your other device, share it deliberately: bake it to a .louptheme file from Settings → Interface → Custom Theme and import it on the other side, or use the Interface page's export/import for the rest. Nothing gets pushed behind your back.
  • Everything else still syncs exactly as before. This is only about how the app looks — your prompts, models, AI settings, characters and chats all still follow you between devices.

1.17.0

July 14, 2026

🎭 Down, Down, Down by the River (Play Baldur's Gate 3 with your Characters! WIP/PC only)

  • They're in your party now. One click in Settings → Game Watcher → "Set up BG3 automatically" finds your install, installs the official Script Extender if you don't have it, and drops in the LoupCompanion mod — then your character can control a party member in YOUR game (your copy, your save, no second PC). Hit 🎭 in the game chat, pick who they play (Shadowheart, a hireling, whoever), and on that character's combat turns the AI reads the actual battlefield — HP, armor, resistances, distances, its own spells and resources — decides in-character, and attacks, casts spells, moves, and ends its turn for real. Out of combat they follow you around — or run errands: tell them "go talk to Kagha" or "walk over and heal Gale" in the chat and they'll move there on foot, open a real conversation with an NPC on command, and use the right item at the right moment (a Revivify scroll on a fallen ally, a potion, a scroll). Reviving a dead companion goes through the game the honest way — a Revivify scroll, or talking someone like Withers into it — not a magic cheat. (Fast-travel is intentionally off — there's no way to do it safely on the current game build without risking your save, so they travel on foot.) They also always know which character is YOU — even when you switch party members mid-session, and even in multiplayer with several human players at the table.
  • They hold up their end of a conversation. Once your character opens a talk with an NPC, they read the reply options right off the screen and pick one in character, pressing the number key to move the scene along. While the NPC is still talking they just listen — no chatter, no wasted calls; they only decide when there's an actual choice on screen. Reading is done by your AI actually looking at the screen, which is far more reliable than plain text-scraping over BG3's busy 3D scenery — no more misreading an option and pressing the wrong one. It has its own model setting (Settings → Game Watcher → Dialogue control → Dialogue model), so you can point conversations at a smart, sharp-eyed model while everything else stays on a cheaper one. Prefer to keep everything on your own machine? Flip the reader to On-device OCR — offline, nothing leaves your PC — and grab its one-click text-reader model right there. Windows only.
  • They can loot for you. Tell your character to loot a chest or a fallen enemy — "grab what's in that crate", "loot the goblin" — and they walk over and scoop everything into their pack. Dead bodies show up in what they can see nearby, and chests with something inside are listed for them too, so you can clean up after a fight or crack open a chest without breaking your flow.
  • They read the game like a player, not a data dump. The character sees its spells, statuses and items by their real names AND what they do — with the actual dice: "Sacred Flame — 1d8 Radiant", "Guiding Bolt — 4d6 Radiant", "Healing Word — heals 1d4", "Bless — +1d4 to attacks & saves". Cantrips scale to its level; buff numbers resolve properly (no more "+1" where the game shows "+1d4"). It knows each character's class and subclass (so it won't cast a Stealth buff on the Barbarian), which spells need concentration (only one at a time), and which hit multiple targets — for those it names each ally to hit (Bless on the whole party in one cast). It picks menu spells like Command or Wild Shape by variant ("Command → Grovel"), refers to everyone by name (no UUIDs), and its item pouch shows only what it can actually USE — scrolls, potions, arrows — not the armour it's wearing. It reads resistances as plain "Immune: fire", knows whether it's already following you, revives only real party members, and reports every level of spell slot.
  • It can see — and pick a fight with — the world around it. Nearby creatures now show up under NEARBY with their distance, including neutral, not-yet-hostile NPCs. So "sneak up on those goblins and open fire" works: the character sees them and attacks by name, and attacking a neutral turns them hostile like it should.
  • It can run a whole plan in one go. Tell it "heal Karlach up, drink a potion, then revive Astarion" and it fires the whole sequence — several casts, an item, a scroll on a friend — in a single reply, instead of doing one thing and stopping. Combat's the same: line up a few attacks and a heal at once.
  • Setup is one button, not a modding afternoon. No hunting for DWrite.dll or figuring out which folder it goes in — the app does it, from Norbyte's official release only, and shows you exactly what happened at each step. If anything needs a hand, it opens the right folder for you.
  • Combat can never get stuck. If the AI stalls, picks something illegal twice, or the mod connection drops mid-turn, the turn is instantly handed back to the game — hard rails on everything.
  • You SEE every action they take — and whether it worked. Each command posts a dim one-liner in the game chat: what ran (⚙ attack Karlach → done · hp 45 → 38), what the game refused and why, and — new — whether it actually did anything: after every attack, move, teleport, or revive, the mod re-checks the world (HP, positions, whose turn it is) instead of trusting the game's polite "ok". No more characters confidently swinging at air. Toggle in Settings → Game Watcher; the character never sees these lines.
  • They see how their errand is going and finish the job. Out of combat, a multi-step request ("fast travel to camp and revive Gale") no longer fires blind: after each step the character is shown what really happened and the fresh state of the world, and continues — or stops — accordingly.
  • The app tells you when BG3's scripting has gone stale. There's a known engine state (usually after lots of mod reloading) where commands report success but nothing happens in game. The app now detects the pattern and tells you right in the chat that a quick-save + reload (F5 → F8) fixes it.
  • Characters that talk instead of acting get caught. If the AI describes an action in prose instead of actually issuing the command, that's now visible and diagnosable instead of just "nothing happened" — and a firmer built-in reminder keeps cheaper models on the rails in the first place.
  • Fair warning: this shit is absolute pioneer territory and I'm tearing secrets from Lua/Osiris as we speak. I want to get this to you ASAP so you can try it, but rest assured, it is far from the finished product, and is only ever going to get better.

🎮 Your Character Watches You Game (PC)

  • "Watch me play" is here. Open a friend's chat on PC and hit the gamepad button — OR just tap the new Game button in the sidebar from anywhere (no need to dig into a chat first), pick who's playing and your game's window in one step. Your character hangs out while you play, seeing your actual screen and chiming in like a friend idling in your game chat: a dry one-liner when you wipe, a "punch her in the throat" when someone talks smack. Works with any game as long as it runs in Windowed/Borderless mode and DirectX 11 (Vulkan and exclusive fullscreen fight the capture).
  • They know when to shut up. Silence is the default: the character only speaks on genuinely notable moments, one short message at a time — never walls of text, never play-by-play commentary. Unchanged frames cost you nothing, comments are rate-limited (2 minutes apart by default), and every session has a hard cap. All pacing is yours to tune.
  • Game nights don't touch your DM or your timelines. Gaming talk lives in a temporary 🎮 chat that exists only while you play. When you stop, the character sends one recap text to your DM — the highlights, the deaths, the "I told you so" — and the play-by-play is discarded. No new timelines, no clutter.
  • A real in-game chat overlay — with a one-key flip. Overlay mode shrinks the app into a small, semi-transparent, always-on-top chat panel over your game. Press F8 (rebindable) to flip between the full app and the overlay instantly — even while the game is focused, no clicking around. Clicking, scrolling, or moving the overlay never steals focus from your game; it only grabs focus while you're actually typing. Collapse it to a tiny pill, and there's a 🎭 in its bar to hand a party member to the character. Divinity-style plain "Name: message" lines. Ask "should I long rest?" and they answer looking at your current screen.
  • One-click "control a party member". Right beside the gamepad in a friend's chat there's now a 🎭 button that takes you straight into playing BG3 together: it finds your Baldur's Gate window (and tells you plainly if the game isn't running), starts watching it, opens the overlay, and hands a party member to the character — no multi-step dance.
  • Talk to them out loud — push-to-talk, now on-device. Hold a key and speak, even while the game is focused; let go and what you said drops into the game chat. Transcription runs fully offline on your machine by default — OpenAI's Whisper via sherpa-onnx, free and private (a cloud audio-model option is still there if you prefer). Choose how good the ears are: pick any Whisper model from Tiny (~40 MB, fast) all the way up to Large v3 (~1.8 GB, most accurate) — bigger models mishear far less — and hit Download now to preload it so your first word isn't a wait. Pick which microphone it listens to — "System default" follows Windows, but if that grabs the wrong device you'll get silence, so choose your real mic (the same one you use in Discord) from the dropdown; the choice stays on this PC. If a clip comes back empty and near-silent, the app tells you to check your mic instead of failing quietly. Bind any key you like (press "Rebind" and hit it) — rebinds apply instantly, mid-session. Raise your voice → ALL CAPS. All in Settings → Game Watcher.
  • Its own settings page. Everything — pacing, prompts, models, your push-to-talk key — lives in Settings → Game Watcher, on its own model slots defaulting to fast, cheap models.
  • A window into their head (for the curious). A new deep-logging toggle streams the whole round-trip to the in-app Terminal: every command sent to the game and its raw reply, plus the full battlefield read-out and prompt the AI gets each turn — exactly what they see when they decide. Handy for bug reports; flip it off for quiet play.
  • Phone users: watching is PC-only, but the DM recap syncs to your phone like everything else.

🔑 Set Up Any AI Provider — The App Now Speaks Your Key's Language

  • Paste an Anthropic, OpenAI, OpenRouter, or NanoGPT key and the app just works. Every model default used to assume Google Gemini — on any other provider, a fresh setup meant every feature failing until you hand-picked ~30 models one by one. Now the app detects which provider your key belongs to and every model slot defaults to that provider's equivalent: budget slots get the budget model (Haiku-class / nano), workhorse slots get the mid-tier (Sonnet 4.6 / mini), and flagship slots get the top model — with creative work (your story, the Director) and analytical work (memory graphs) each routed to the flagship best suited for it (on Anthropic: Opus 4.6 for creative, Opus 4.8 for analytical).
  • Your own choices are never touched. The new defaults only apply to slots you never changed. Anything you picked by hand stays exactly as you set it.
  • New "Primary Provider" card in Providers & Keys. Auto-detects from your keys, or pick a provider explicitly. One button applies the full set of equivalents to every model slot at once (with a preview of exactly what changes), and another clears all slots back to defaults. On PC, Claude Code (your Claude subscription, no API key) can be the primary provider too.
  • Custom endpoints get smart defaults as well. For your own proxy, the app pattern-matches the models you've added (haiku/sonnet/opus, nano/mini/flagship, flash/pro…) and picks sensible defaults per tier. If nothing matches, slots simply stay on their old defaults.
  • Model dropdowns no longer lie about your selection. If a saved model isn't in the fetched list, the dropdown now shows what's actually saved instead of silently displaying the first list entry.

📱 Characters Finally Text Like People

  • No more essay bubbles. Characters used to text you the way a novelist writes dialogue: three-paragraph messages, perfect structure, every point of yours dutifully answered, and a question tacked on the end of every single turn to keep you talking. The texting brain has been rebuilt around how people actually text: thoughts land one at a time as separate short messages, they reply to the thing that hooked them and let the rest go, they shout in caps and letter-mash ("BUTTTT", "NOOOO") instead of writing eloquently, and a conversation is allowed to just… stop. Characters who'd genuinely write formal, fully-punctuated texts (you know the type) still do — that's their voice, not a bug.
  • Accents are seasoning now, not a transcript. A character with an accent lets it slip into a word or two instead of phonetically spelling every single syllable like a machine.
  • AFK texts and "thinking of you" texts got the same treatment. When a character reaches out first — about a story you two lived, or just about their day — it now arrives as a burst of real text messages instead of one composed letter. Their meme or picture rides in with the last bubble, and the notification shows the whole burst as separate lines, like any messaging app.
  • Each character now only ever hears about their own texting style. The AI used to be handed a catalog of every possible texting personality ("some people text in fragments, some are balanced, some write essays… you're the essayist") on every single message — a recipe for personality bleed and wasted attention. Now a fragment-texter is told only how a fragment-texter texts, an essayist only how an essayist writes, and neither knows the other styles exist. Same for meme habits: a casual memer and a memelord each get only their own script.
  • Essayists genuinely can't double-text anymore. A character whose whole personality is "one composed message, the send button is a decision" is no longer taught the message-splitting trick at all — anywhere, including their out-of-the-blue texts — and is hard-capped at a single bubble. Before, they were taught to split and then told not to, and capped at two.
  • All these texting-style and meme-fluency instructions are yours to edit — each style and each fluency level is its own prompt in Settings, like everything else.

🤖 Characters Are Only Told What's Actually True

  • A switched-off meme source is now a secret. If you disable, say, Reddit memes, characters are no longer shown the Reddit example and instructions anyway — which sometimes tempted them into trying the disabled source and coming up empty. They're only ever taught the sources that are actually on.
  • The camera no longer promises a review that won't happen. With image review loops set to 0, characters were still told "you'll be shown the render and asked to approve it or ask for changes" — a flat lie in that configuration. They're now told the picture goes out as-is, so they word their one request accordingly. (Both the roleplay camera and the Live Chat camera.)

💛 Friend Requests Are Earned Now

  • Your resident bitch will no longer add you as a friend. Characters were sending friend requests the moment they merely stopped being hostile — the decision was being made with almost no sense of who they are or how they actually treat you. The decision now always carries their personality (with explicit "don't default to friendly" instructions when the card is thin), their private notes about you when they have any, and a much deeper look at how they've actually been treating you in your story together.
  • The bar itself is far higher. Before deciding, the character must honestly name where you two stand — stranger, wary acquaintance, warming up, genuinely close — and "I've stopped disliking you" is now explicitly NOT a reason to offer a bond. Cold, mocking, professional, or merely amused? They decline. In doubt? They decline. Warm souls who are already visibly fond of you still reach out early — that's who they are.
  • Same standard inside the story. The mid-roleplay friend-request offer got the matching "a truce is not friendship" clause, so the bug can't sneak back in through the other door.
  • A shared character no longer arrives pre-friended. Friendship is between you and the character — so when you export or share one, that private relationship no longer rides along in the file. Whoever you send them to starts from a clean slate and has to earn the bond themselves, exactly like you did. (Older shared files that still carry it are scrubbed on import too, so no stranger inherits your friendship.)

✨ Gold Ring for Unread Texts

  • You can now see who texted you at a glance. When a character sends you texts you haven't opened, their portrait in the character rail gets a golden ring with a slowly orbiting shimmer, and a little gold coin stamped on the corner tells you how many unread texts are waiting. Open their chat and both clear. Characters tucked inside folders show a slim gold outline on their mini-portrait in the folder icon, and the full shimmer once the folder is expanded.
  • It also catches texts that arrived while you were away. Messages delivered in the background (phone in your pocket, app closed) now light the ring the moment you come back — no need to tap the notification.

🎬 The Director Finally Wakes Up When It Should

  • The Director now notices more than just "you talked to someone." It used to wake only when you literally touched or addressed a third party — examining a mysterious item, doing something an NPC nearby would obviously react to, or hitting a big story moment all sailed past it. Now every message is classified into event types — third-party contact, story beat, NPC-relevant event, world interaction, secret reveal, trigger hit — and each type can wake the Director.
  • You decide what wakes it, per event type. New Wake Rules section in Settings → Narrative Director: one slider per event type, from Off through Always to only significant events. Trivial item fiddling stays quiet at the default settings; picking up the murder weapon wakes the world.
  • Fewer misses on obvious moments. The watcher used to refuse to wake unless it was certain "beyond any shadow of doubt" — and it didn't even know who was in the scene, so it'd say things like "I cannot confirm this name refers to anyone present." It now carries the Director's own picture of the stage (who's on scene, where, what's brewing) plus the story's cast list, and wakes on the balance of evidence instead of demanding courtroom proof.
  • See exactly why it woke — or didn't. New Director Wake Log in the timeline inspector: every single decision is recorded with the event type, its significance rating, the rule it was checked against, the outcome, and the AI's own reasoning. No more guessing.
  • Story-aware from the very first scene. With a story (Overseer campaign) active, the current scene's objective now guides wake decisions even before the Director's first appearance — story-advancing moments wake it from turn one.
  • The old "narrative pressure" meter is gone. The Director no longer wakes just because enough mundane turns piled up — every wake now has a stated reason. (The old Director Action Threshold slider has retired with it.)
  • Cheaper and sturdier behind the scenes. One redundant AI call per Director appearance was eliminated (it now judges the impact of its own scene contributions), a stuck evaluation can no longer freeze your turn indefinitely (new timeout setting), and a bug was fixed where mid-conversation evaluations received broken placeholder text instead of the Director's actual watch conditions.

📖 The Director Remembers Your Campaign Now

  • Your choices finally stick between scenes. In story campaigns, the Director used to run each scene knowing only that scene's script plus the last few messages — so the NPC you saved three scenes ago could quietly stop existing, and a promise made in Act 1 was forgotten by Act 2. Now, every time a scene wraps, the Director writes down how it actually ended — who lived, who you sided with, what was promised, what's still hanging — and carries that chronicle into every later scene. Dead NPCs stay dead; burned bridges stay burned; the chronicle wins over the script when your play diverged from it.
  • It knows the current act's playbook. The story writer (Overseer) has always packed each act with stage directions — how key NPCs make decisions, what to do if you see through a twist early, the act's tone and rules. The Director never actually received any of it. Now it reads the current act's notes while running your scene — and still sees nothing of future acts or future scenes, on purpose.
  • It knows where it is in the story — so it stops hurrying. A position marker ("Act 2 of 3, scene 4 of 9") tells the Director more story follows, that letting a scene breathe can't stall the campaign, and that an act's final scene deserves weight — with explicit instructions that the act's ending is a destination, not a to-do list, and a scene only ever resolves on its own terms.
  • It travels with your story. The chronicle syncs between your PC and phone, survives timeline branches and story exports, and rewinds cleanly when you import a story as a fresh start.
  • If you've customized the Storyteller prompt: the new campaign-state sections arrive via the prompt template, so a hand-edited Storyteller prompt keeps working as before — reset it to default (or merge the new sections in) to enable the feature.

🌐 Sync & AFK

  • Characters no longer lose their daily life when you sync. A character's generated daily-life profile (their schedule, sleep, texting habits — everything the presence dot and their texting rhythm run on) could be silently wiped by a sync from your other device and then quietly regenerated from scratch the next time you opened their chat — new AI call, new (different!) life, every time it happened. Profiles now sync properly in both directions, and a device can never overwrite an existing profile with an empty one.

  • PC ↔ phone sync now actually connects when your PC has extra network adapters. If your PC runs Hyper-V, WSL, VirtualBox, a VPN, or Tailscale, sync could find the other device ("Discovered hosts" showed it) but then just sit on "Searching…" forever — it was trying to reach your PC through a virtual adapter the phone can't route to. The client now sorts every address your PC advertises and dials the one on your actual network first, falling back through the rest quickly. It also recovers on its own after a failed attempt instead of getting stuck.

  • Sync survives your PC's IP address changing. If your router hands the PC a new address (a DHCP change, or you reconnect its Wi‑Fi), the phone used to keep trying the old, dead address and fail with a cryptic "no route to host". The PC now re-announces itself the moment its address changes, so the phone finds the new one and reconnects on its own.

  • Sync now tells you what's actually wrong when it can't connect. Instead of leaving you on "Searching…" forever, the phone now says plainly what happened: whether the two devices aren't on the same Wi‑Fi (or the host's IP moved), whether nothing's listening on the port, or whether the host's firewall is blocking it — with the port to allow. Open the firewall on the PC (one-click button on the Hub page) and the phone reconnects by itself.

  • AFK messages no longer skip an hour thinking you're offline when you're not. The check that decided "is there internet?" was too twitchy right after your phone woke its radio, and it assumed everyone uses Google's AI. It now trusts the actual message send to sort out connectivity, so your characters reach out on time regardless of which AI provider you use.

  • AFK messages no longer vanish without a trace when your characters aren't on Google. If your proactive-message model was set to OpenRouter, Anthropic, a custom endpoint, or a local model — but the Google Gemini key field happened to be empty — every scheduled message was thrown away at the last second: no text, no notification, and nothing to tell you why. The key check now follows the provider your AFK model actually uses. The same wrong check also silently blocked Live Chat "thinking of you" texts, character alarms, and clock comments — all fixed.

  • When an AFK message can't be sent, the background trace now always says why. Every way a proactive run can bail out — a missing key, a blocked or empty reply, nothing left to send after formatting — now writes a plain-language reason into the log. A scheduled message can no longer disappear silently.

  • A stuck Google request can no longer freeze background messaging. Calls to Gemini now give up after 5 minutes like every other provider, instead of hanging forever on a connection your phone quietly dropped while dozing.

  • Claude Code (CLI) no longer cuts off long generations at 5 minutes. Heavy jobs — Overseer world-building, character generation — could legitimately need longer than the old hard 5-minute limit, and were killed with a "timed out after 5 minutes" error. The limit is now 15 minutes by default and yours to change: Settings → Claude Code → Timeout.

⚡ Newer Default Model for the Background Brains

  • The app's default "fast" model is now Gemini 3.5 Flash. Google retired 2.5 Flash on the free API tier, so every slot that used to default to it — AFK/proactive texts, character alarms, vision (image descriptions), tag & baseline generation, the Overseer's grounding & HyDE steps, and the knowledge-graph summarizer/reducers — now defaults to the newer, faster Gemini 3.5 Flash instead. Fresh installs (and any of these slots you'd left on the default) just work again; if you'd already picked your own model for a slot, your choice is untouched.
  • These background jobs now think harder by default. Each of the swapped slots is set to high reasoning effort, so quick-but-important calls — the text your alarm rings with, what a character notices in a photo — get real thought instead of a snap answer. Every one of these is still fully editable per slot in Settings if you'd rather trade thinking for speed.

🎨 Custom Themes

  • New "Frost" slider on every custom-theme image. Each panel image you install now has its own Frost slider (right next to its Dim slider) that softly blurs that image, like frosted glass — calm a busy chat wallpaper so text stays readable while leaving your input paper crisp, panel by panel. It slides live so you can dial in the exact amount, only touches your own uploaded images (the built-in skins stay sharp), and each panel's frost bakes into the theme when you Bake & share — so anyone who imports your .louptheme gets the same look. Settings → Appearance → Interface → Custom. Leave a slider at Off for a pin-sharp image.
  • Custom theme images now save as WebP by default. The image-encoding setting now defaults to Best (WebP) instead of JPEG, so new panel images look better and pack smaller. (WebP is Android-only; on PC "Best" saves as high-quality PNG, as before.)

1.16.3

July 10, 2026

⏰ Character Alarm Clock — Fixed, Hardened, Prettier

  • The ring-time crash is gone. On Android 15 phones the app could crash the moment an alarm fired. Root-caused and fixed — alarms now ring reliably, and a whole class of related "alarm killed the app" failures went with it.
  • Alarms can no longer ring blank. If your character's message didn't generate in time (offline, API hiccup), the alarm screen used to come up with no text and a broken Snooze button. Now every alarm always rings with a message — your character's if it arrived, otherwise a fallback line you can customize under Alarm AI Settings → Fallback ring text — and Snooze always works with your configured duration.
  • Failed message generation retries like it means it. Before, a failed generation could sit for a full hour before another attempt (or forever, unless you kept the Clock page open). Now it retries within a minute and backs off gradually, retries the instant your connection returns, and no longer needs any particular screen to be open. Failed alarms show a retry countdown and a manual retry button right on the card.
  • Your character's message is now fresh at ring time. The text regenerates about 40 minutes before the alarm — even with the app closed — so it reflects your latest conversations instead of whatever was current when you created the alarm days ago.
  • The "Upcoming alarm" notification finally counts down. It used to sit frozen at "Rings in 9 minutes" the whole time. Now it shows a live second-by-second countdown plus the exact ring time — and tapping it (or the status-bar alarm chip) takes you straight to your alarm list.
  • A silently-missed alarm now fights back. In the rare case Android refuses to let the alarm take over the screen, you previously got… nothing. Now you still get the full alarm notification with your character's message and a working Stop button.
  • On PC, creating an alarm no longer freezes the editor. Saving an alarm on Windows used to hang forever. It saves instantly now, and the Alarm tab says plainly that alarms ring on your phone, not the PC.
  • Alarm page got a facelift. A "Next alarm in 7h 42m" header with your character's portrait, character avatars and a tappable preview of the generated message on every alarm card, and the editor reorganized into clear sections. New Preview text now button in the editor lets you hear the character's take on your alarm brief before saving.
  • More fixes: a new warning banner if notifications are turned off (they carry the ring text when the takeover can't show), alarm times right themselves after a timezone change once you open the app, and snoozing keeps the same character instead of re-rolling mid-nap.

🕸️ Knowledge Graph — Smarter Recall, Safer Memory

  • Characters now recall lore you merely paraphrase. Say "let's go back to that tavern by the docks" and the graph finds the tavern even though you never typed its name — retrieval now runs a semantic vector search alongside the exact-name matching. Tunable under Settings → Knowledge Graph → Semantic Recall (on by default; you can set how many matches and how strict the similarity bar is).
  • The bigger picture reaches the story. When entities come up, the reply now also receives their community's lore summary — the "region" of the world they belong to — so characters understand not just who was mentioned but what web they sit in. These summaries were always being built; now they're actually used in chat.
  • Group chats only see their own cast's lore. Previously a group session could surface global lore belonging to characters who weren't even in the room. Each group now draws only from its actual participants.
  • Your community renames stick. Naming a cluster yourself in the graph viewer no longer gets silently overwritten (or blanked) by the automatic 100-message consolidation pass. That pass also finally respects your configured summarization prompt and model instead of a built-in one.
  • Long campaigns stop flooding the context. Graph lore injected into replies is now budgeted — directly-mentioned entities keep full detail while distant connections get trimmed, with both caps adjustable in Settings → Knowledge Graph.
  • Lore indexing survives crashes. If the app dies mid-index, resuming now continues with everything already processed intact — previously everything before the crash point was silently lost.
  • One timeline can no longer rewrite another's world. Consolidation passes in one timeline used to be able to alter or delete relationship data shared by all timelines; base lore is now copy-protected.
  • Conditions can now be cured. "Poisoned" no longer lingers forever after the antidote — the world-state tracker can finally clear a temporary condition, not just replace it.
  • Cleaner, better-organized graphs all around. Community detection upgraded to the full Leiden algorithm (no more internally-disconnected clusters), relationship verbs are normalized so "RULES" and "rules over" stop creating duplicate links, entities remember what they are (a faction can no longer be accidentally fused with a same-named character), and retrieval on large graphs is noticeably faster and lighter on memory.

👁 Left On Read — Governed by Who They Are, Not Dice (Live Chat)

  • The Seen shows up, and then nothing. Sometimes your character reads your message — you watch the "Seen" appear — and then deliberately sits on it before replying. When the reply finally comes, they own the pause in their own voice instead of inventing a fake "sorry, was away".
  • Whether they do it is down to their personality and their day, not a coin flip. Every character now has a Ghosting trait the app writes from their character card — an aloof, avoidant, or overwhelmed soul leaves people on read; an eager, devoted, or anxious one basically never does. On top of that: someone drained and low on social battery ghosts more, someone glued to their phone ghosts less, a rough week makes it worse and a clingy week makes it almost never happen, and a foul mood tips them toward it. It still never fires when a ping just pulled them over to you, when they're asleep, or on Do Not Disturb — and a hot back-and-forth all but shuts it off.
  • When they're busy, they answer when they're free. Catch them mid-work or mid-gym and the reply doesn't come on a random timer — it lands roughly when that activity lets them go. Sometimes they'll sneak a break and fire off a quick one anyway ("stole a minute at work"); how likely that is depends on how reachable they are right then and how attached to their phone they are.
  • But people make time for what matters. If the message you sent while they were busy is genuinely urgent — an emergency, real distress, a direct plea — they'll step away and answer now, in a hurried stolen-moment way, instead of leaving you hanging. (A quick behind-the-scenes read of your message decides this the moment they see it; it never delays a normal reply.) Toggle and tune it under They make time for what matters.
  • You set their character, edit their Ghosting in the Life Profile. Open any character's Life Profile to hand-set Ghosting (never / rare / occasional / frequent) or regenerate it from the card. Settings → Backstage & Live Chat → Left on read holds the overall tendency dial (0% turns the whole thing off), the shortest/longest pause, the urgency threshold, and every prompt behind it.

✋ They Stop Typing When You Interrupt Them

  • Text them mid-burst and they actually react like a person. Before, if you sent a message while a character was still typing out a multi-part reply, things got messy — a stale bubble could still land after your message (ignoring it completely), and the follow-up reply sometimes talked past you. Now they stop typing, read what you sent, and the rest of what they were about to say is quietly scrapped.
  • …but the scrapped part isn't forgotten. The unsent half of their reply is handed to their next message as "what you were about to say" — so they can finish the thought if it still fits, rework it around your interruption, or drop it, instead of repeating themselves or losing the thread. The flavor prompt for this is editable (Settings → Backstage & Live Chat → Interrupted mid-send).
  • They wait for you to finish talking. New settle delay (default 3 s, tunable 0–15 s): after your last message the character holds off a beat before reacting, so firing off three texts in a row gets you one reply that covers all three — not an answer to the first one mid-stream.

🎨 Custom Themes — Make the App Yours, Then Share It

  • Install your own image for any panel. Head to Settings → Interface and pick Custom. You can now drop a personal image behind the chat, the drawer, the character rail, the top action bar, the input bar, the writing paper, and even the settings screen — seven surfaces, each swappable on its own. Pick from anywhere on your device — JPG, PNG, WebP, GIF, even Pinterest's oddball .jfif downloads.
  • Animated backgrounds. Drop in a GIF (or animated WebP) and it stays moving — a living, animated chat backdrop, drawer, rail, you name it. Every frame is preserved exactly as you uploaded it.
  • Change only what you want. A custom theme sits on top of the Light or Dark Academia look you choose as its base. Swap just the chat wallpaper and everything else stays classic academia — or reskin the whole app. Panels you don't touch keep the base look.
  • Tune every panel so it actually reads well. Each installed image gets a dim/brighten slider (keep your text legible over a busy photo) and a fit mode — Cover, Contain, Fill, or Tile for seamless textures like paper.
  • Recolor the accent and chat text to match your images, with a full color picker.
  • Pick quality vs. size when installing. Choose Performance (smaller, lighter to share) or Quality (lossless). On Android there's also Best (WebP) — best of both. (On PC, "Best" saves as PNG due to platform limitations. Desktops cannot encode webP files natively.)
  • Bake your look into one file and share it. Turn your whole theme — images, colors, dim and fit settings — into a single shareable .louptheme file and send it to a friend. Importing someone else's applies it instantly and live, no restart. Your custom theme also rides along with your normal settings backup/restore.
  • Safe on phones. On mobile, if a theme (usually a big animated GIF) is large enough to risk running the app out of memory, the app tells you before sharing or importing instead of crashing. Power users can flip Disable memory-safety warnings to push past it. PC has no such limit.

▶️ Continue — Finish a Reply Your API Cut Off

  • When a reply gets chopped off mid-sentence, finish it — don't reroll it. If your provider or proxy truncates a response partway through, long-press the reply (right-click on PC) and choose Continue. Instead of throwing the half-message away and gambling on a fresh one like Regenerate does, the character picks up exactly where it stopped and finishes the same reply — the bubble simply grows to completion.
  • The short version isn't lost. Continuing keeps the pre-continue text as a swipe variant, so the ‹ 1/2 › control appears under the message and you can swipe back to the shorter version any time.
  • Works everywhere. Continue is available in normal 1-on-1 roleplay, group chats (it finishes the specific character who was cut off), and in Backstage & Live Chat.
  • Seamless on most setups, with a fallback. On the major providers the model literally resumes your text, so there's no repeated opening or restarted paragraph. On setups that can't resume natively (the Claude Code CLI), it's guided by a Continue Instruction you can edit under Settings → System Instructions.

🌱 Branch a Timeline — Fork Your Story Without Losing It

  • Duplicate a whole timeline in one click. Right-click (or long-press) any timeline and choose Branch Timeline. You get a complete, independent copy — every message, every memory, the full knowledge graph, importance scores, reflections, and the director/overseer's plans and hidden truths — all carried over instantly. Play out a risky "what if" on the branch while your original stays exactly as it was. No re-processing, no waiting: it happens on the spot.
  • The branch is truly its own story. Continue either timeline and the other is untouched; the character remembers each thread on its own terms. Deleting one never harms the other.

🔀 Regenerate & Swipe Between Replies

  • Don't like a reply? Reroll it — and keep the old one. Regenerating the latest response no longer throws the previous version away. A little ‹ 1/2 › control appears under the message so you can swipe back and forth between every generation you've made and pick the one you like best.
  • Only the version you're showing counts. The reply currently on screen is the one the character actually "remembers" and builds on — the hidden alternatives are invisible to the story: they won't resurface in the character's memory, reflections, or anywhere else. Swipe to a different take and that one becomes the real one.
  • Swipe past the newest to roll a fresh take. Tapping the right arrow when you're already on the latest generates a brand-new alternative, added to the set.

✨ No More Flash-Fading Chats

  • Fixed: the whole conversation replaying its fade-in whenever anything new arrived. Sending a few messages in quick succession — or a character burst-texting you in their DM — made every recent message flash and fade in again as one block. Same when "Seen" appeared under your text, or when the ‹ 1/2 › swipe arrows moved to a newer reply: your message would blink and re-animate. Now only the genuinely new bubble plays its entrance — everything already on screen stays put.
  • The "Seen" caption is now black.

🧠 Knowledge-Graph Indexing No Longer Skips Chunks on Bad Output

  • "Retry until success" now also catches garbled responses, not just failed connections. Before, if the model returned a reply the indexer couldn't read (truncated, wrapped in stray text, or otherwise not clean JSON), that piece of your lore was quietly skipped — even with retry turned on, because retry only kicked in for outright API errors. Now a response the engine can't parse is treated as a failed attempt and retried with the same growing backoff, so indexing keeps going until it actually gets usable output. This covers every stage of the build (extraction, community summaries, the auditor, and the reducers).

1.16.2

July 9, 2026

EMERGENCY HOTFIX

  • Fixed: the Providers & Keys screen was blank/crashing. Since the Claude Code (CLI) provider arrived, opening Settings → Providers & Keys could throw an error and show an empty red/grey page — no API-key fields, no way to enter keys. It's back to normal now (the Claude Code provider correctly has no key field, since it signs in through the CLI, not a key).

See official release channels to read 1.16.0 Patch Notes if you missed them. (They're massive.)

This is a reupload due to stale cache breaking version 1.16.1 hotfix (application presented itself as 1.16.1, but functionally installed 1.16.0). Thank you Extremist Rancher for helping me find this issue.

1.16.0

July 8, 2026

Hey! So some of you might have noticed that last update, there was a leak about "Live Chats" - and nothing. My bad. I let it slip into patch notes early. Well... get ready for:

💬 Live Chat: Every Character Now Has Their Own DM (and Backstage Gets a Name)

The chat surfaces are untangled. No more "is this the roleplay, the discussion, or the place AFK texts go?" — there are now exactly three places, each with one job:

  • Live Chat — the character's own DM. Pinned at the top of the timeline list, named simply after the character, with a Discord-style status dot on their picture (green / yellow / red / grey). This is where the character texts as themselves, on human time — everything Live Mode simulates (schedules, sleep, moods, delayed replies, burst texting, going invisible) lives here, always on, no toggle. They can send images and GIFs here too.
  • Texts stack like a real chat app. When a character (or you) fires off several messages in a row, they bunch together under a single profile picture — just like Discord — instead of repeating the name and avatar on every line. After ten minutes of quiet a new "block" starts and the header comes back. The DM reads like a conversation instead of a wall of headers.
  • They text you first. Your character can open the conversation themselves, landing in their DM from them — and there are two kinds, kept cleanly apart. Roleplay pings (while you're away): "bro I keep thinking about that scene…" — they actually re-read the recent story first, so the callback is real, not invented. And plain "thought of you" texts about their day or a stray thought — paced by their own simulated life: someone glued to their phone and social reaches out often, a busy or drained one rarely, and never while their dot says they're asleep or on Do Not Disturb. The plain texts happen while you're actually using the app (and on PC), not only while you're away; if a roleplay ping just landed, they'll hold off on a plain one for a while so they don't pile on, and a character always finishes the reply they already owe you before sending anything spontaneous — no stacking six messages at once. How chatty they are is fully tunable in Backstage & Live Chat → Texting you first.
  • They know your stories. In the Live Chat the character can quietly pull up any of your timelines mid-conversation — recent messages and story summaries — so when you mention "that thing in chapter 3", they can actually go look instead of bluffing. To you it just looks like they know their own stories.
  • Backstage — the per-timeline writers' room. Roleplay Discussions are now called Backstage: the out-of-character chat that belongs to one timeline, for talking about that story. Backstage replies are instant — no waiting, no status games; that realism belongs to the DM.
  • The 🔁 flip. No more buried long-press menu: every timeline row has a 🔁 button that flips the row over like a card — title flips to "Backstage — …" — and drops you into that story's Backstage. Tap again to flip back. A red dot on the 🔁 tells you something's waiting in there you haven't read.
  • Deep DM diagnostics. The debug console traces the entire Live Chat pipeline step by step — when a message is sent, how the reply is scheduled (and why it'll take the time it does), the character's live status/mood behind each reply, the typing simulation, and background delivery. If a DM ever misbehaves, the log tells the whole story.
  • Nothing to migrate by hand. Existing discussions are renamed to "Backstage — …" automatically, and a Backstage you left hanging mid-question answers you the next time you open it. Old AFK messages stay right where they are as history; new ones arrive in the DM.
  • New knobs, same place. Settings → Backstage & Live Chat (formerly Roleplay Discussion): the Live Chat's own primer, the timeline-peeking toggle, and how often first-texts are random thoughts vs. story commentary — every prompt fully editable, as always.

🎭 In the DM, You're Talking to the Character — Not Their Writer

The person on the other end is the character themselves — Amaterasu, reaching out from her own world, because she decided you were worth reaching. Not a roleplayer texting you out-of-character about "the stories you two write"; her.

  • They remember your roleplays as lives they lived. The timelines are lives you two have lived together, threads of fate they remember from the inside — not "stories we write." They reminisce, tease, and hold soft spots (or grudges) about what happened, not about what was written. Contradictory timelines? Different threads — they remember them all.
  • Their day is their world's day. A queen's hours are court, rites, and audiences — not "gym at 6." Every character's daily life is derived from their world: what fills a sun queen's afternoon is different from a street thief's, and their status dot, their slow-reply excuses, and their "what I'm up to" all speak that language.
  • Their opinion of you is theirs. A queen appraises you. A soldier respects you. A trickster needles you. The private notes they keep about you — and the friend request they may one day send — come from who they are, not from a generic friendly co-writer.
  • Friend requests are a bond, not a follow. When they reach out (or answer your /friend), it's the character deciding to bind themselves to you beyond every story — and their acceptance, refusal, and first message all carry that weight.
  • Your customizations are safe. All of this ships as new default prompts. Any prompt you've personally edited is left exactly as you wrote it; only untouched defaults upgrade automatically.

🟢 Your Characters Live Real Lives (and Text Like Real People)

The engine behind the Live Chat. Your character isn't an always-on chatbot that answers in two seconds — they're someone with a life, a phone, and a Discord-style status bubble.

  • A real status, like Discord. The Live Chat header shows the character's name with a live status dot — Online / AFK / Do Not Disturb / Offline. Ping them while they're AFK and you can literally watch the dot turn green when they pick up their phone.
  • They have a daily life. The first time their Live Chat appears (or from a button in the Character Editor), the AI reads the character's whole card and derives their lifestyle: job and work hours, whether they're a night owl, how glued to their phone they are, how fast they type. That schedule drives everything — they're unreachable in a strict-workplace shift, sneak peeks at their phone in a casual one, doomscroll in the evening, and sleep at night (message them at 3am and you'll hear back after they wake up).
  • You can edit that life by hand. The daily-life profile that drives their sleep, work hours, phone habits, and reply speed isn't a black box you can only regenerate. Tap the character's name at the top of their DM — or hit Edit next to "Generate Life Profile" in the character editor — to open a full editor: bedtime, sleep length, how glued to their phone they are, typing speed, reply tempo, hobbies, what they're up to when idle or away, and a day-by-day schedule of their commitments. Change it and the status dot reacts immediately.
  • Real days, not clockwork. No two days play out the same: sometimes they slack off at work and are unexpectedly online all afternoon, sometimes they touch grass and barely check their phone on a free day, sometimes they're up at 3am. Rough weeks and good weeks color their mood for days at a time. Sleep debt makes them irritable. Nothing repeats on a learnable pattern — but it's their life, not a dice roll.
  • Replies take human time. Send a message and the reply arrives when they'd actually see it — seconds mid-conversation, minutes if they're idle, hours if they're at work or asleep. Drop a wall of text and there's a realistic silent pause while they read it — no typing bubble, just silence — before "is typing…" starts. Long replies take longer to type. During an active back-and-forth they stay glued and answer fast; go quiet for a while and they drift away.
  • They text like people. The chat prompts teach the AI why humans text the way they do — minimum-effort messages, reacting before contributing, one thought per bubble, no emoji spam, no theatrical paragraphs. In the Live Chat they send several short messages in a row like a real texter, each with its own typing pause, instead of one monologue block.
  • They control their own bubble. Characters set their own status: go Do Not Disturb after a rough day (or when you've been pushing their buttons), go invisible to lurk, and come back with a "lmao sorry, wasn't feeling it". Status changes show up immediately, in the header and on the pinned DM row. They also keep a private mood memo between conversations, so the person you left annoyed is still a bit annoyed when they come back.
  • Late replies reach your phone. If a reply comes due while the app is closed, it arrives as a normal Discord-style notification on Android — with working inline Reply. And if you're sitting at your PC with the app open, the phone stays quiet and the reply just appears on the big screen (needs WiFi sync paired).
  • You stay in control. Everything lives in Settings → Backstage & Live Chat: a speed multiplier (turn "hours" into "tens of minutes" if you're impatient), a hard cap on how long any reply can take, burst-message limits, notification and status-tool toggles, and every prompt fully editable. Need an instant redo? Regenerating a Live Chat reply always answers immediately.

🧠 DMs Remember — and Every Character Texts Like Themselves

A character's DM doesn't just remember its most recent messages — the friendship has a memory. Tell them your dog's name, chat for a week, and it's still there.

  • They keep private notes on you. As older messages fade out of a character's short-term recall, they're quietly folded into the character's own memory notes — written in their voice, about you: who you are, your history together, the running jokes, the promises still open, how things feel lately. Every reply draws on these notes, so "how did the interview go??" can happen a week — and three hundred messages — later.
  • Memory settles after the storm, not during it. Each reply, the character privately rates how emotionally charged the conversation is (you never see it — it costs almost nothing). Consolidation waits for a calm moment, the way real memories settle once things cool down. Big moments — a fight, a confession, big news — get their own line in the notes and fade last.
  • Old memories blur; the important stuff stays sharp. The notes have a size budget. When it fills, the oldest history compresses into "back then, we…" — but names, facts, and inside jokes are kept word-for-word. Nothing is ever deleted from the actual chat; this only changes what the character carries in their head.
  • Existing DMs catch up on their own. A DM with hundreds of past messages digests them gradually, a batch at a quiet moment — no button, no cost spike.
  • Everyone texts differently. Each character commits to their own texting fingerprint — capitalization, how they laugh, message length, emoji habits, sarcasm — derived from their personality, which explicitly outranks generic texting habits. A proud noble types full sentences; a gremlin never finds the shift key.
  • All tunable. Settings → Backstage & Live Chat → DM Memory: toggle it, batch size, the memory size budget (this is the cost knob), the calm threshold, the consolidation model (a cheap one is perfect), and every prompt — including the voice fingerprint — fully editable.

🤝 Friend Requests: The DM Is Something You Earn

The Live Chat DM isn't just there for every character from the moment you make them — that made it look like the main way to use the app when it's really the reward on top of the roleplay. A character's DM is invisible until the two of you are actually friends — and becoming friends is something that happens inside your stories.

  • They add you when they decide you're worth it. As you write together, a character can send you a friend request entirely on their own — and it's true to who they are. A warm, open character might reach out early. A guarded, prickly, or wounded one will make you earn it, waiting long past the point where it'd be polite. It's never a reward for one good scene; it's the moment they'd want to talk to you even without the story.
  • The request says nothing — on purpose. When it arrives, it's bare: just "{name} sent you a friend request." No preview, no speech. The silence is the hook. The personal message — the one that references the exact scene that made them add you — only lands the second you hit Accept.
  • A real unlock moment. Accept, and their DM blooms into existence with a glow, a little "you're now friends" card drops into the chat, their status dot pops in, and then you watch them type out their very first message to you as themselves. It's a moment.
  • The request lives right in your timeline bar. No pop-up window barging in — an incoming friend request sits as its own softly-glowing card at the top of the character's timeline list, with two clear buttons: Decline and Accept. It waits for you; it never blocks the screen.
  • Shoot your shot with /friend — mid-scene, in the same breath. Type /friend followed by a message in any story, and that message plays out as a real roleplay beat — the character responds to it in-character, right there in the scene, drawing on everything they'd normally remember — and decides whether to accept you in the same reply. No separate popup, no context-blind side-conversation: the request lives inside the story, judged with the story's full weight. The answer lands as a quiet line in the chat: accepted (and the DM blooms open), or their own refusal in their own voice. No guarantee they say yes; ask too early and they'll tell you to slow down. (Typing just /friend on its own still works as a quick bare request.)
  • They remember being turned away. Decline a character's request and it's final — the card is gone (though you can always send your own with /friend if you change your mind). But it isn't forgotten: the next time that character works up the nerve to reach out, they carry it with them. A proud one might never put themselves out there again; a softer one waits until the sting fades. You turned them down once, and they know it.
  • It buzzes your phone. A character can decide to add you while you're away from the app — you'll get a notification, and tapping it drops you right where the glowing request is waiting.
  • All tunable. Settings → Backstage & Live Chat → Friendship: turn it off entirely, set the message floor, how often characters consider reaching out, the retry cooldown, and every prompt behind their decision. Characters you already talk to keep their DMs — nothing you've built is locked away.

📜 They Actually Know the Lives You've Lived Together

In their DM, a character sees your shared roleplays as more than a bare list of titles — and titles lie. "mal0 video test" tells nobody it hides an epic, heartbreaking romance with a slain dark lord in it. Every story carries its own memory.

  • Every timeline gets a living synopsis — and you can read and edit it. In the background, a cheap model keeps a two-sentence summary of what each story is — its genre, its stakes, the bond at its heart, and where things stand — refreshed automatically as the story moves. Your characters see these synopses next to every title, so they know which thread holds what without reading a word of it. It's never hidden: right-click (or long-press) any timeline → Title & Synopsis to see exactly what the character reads, rewrite it in your own words, or hit Regenerate to draft a fresh one. Edit it by hand and it sticks — the background refresh leaves your version alone until the story genuinely moves on.
  • Recent stories are freshest in their mind. The lives you've played most recently carry their full synopsis; older ones a single line; ancient ones just the title (they can still look those up). Your character's ambient sense of "us" naturally centers on what you two lived last week, not three years ago.
  • Some days, a memory just surfaces. Roughly one day in five (tunable), one of your shared lives drifts into the character's mind for the whole day — recent stories far more often than old ones, though an ancient epic does rarely resurface. They carry actual remembered moments from it, and if the conversation gives them an opening, they'll bring it up like anyone mentions a memory that came back. If not, they let it pass. No extra API calls — it's free.
  • First message from a new friend actually means something. When a character sends you a friend request mid-adventure and you accept, their first text knows the exact story it was born in — the scene, the synopsis, what moved them to reach out — plus their world, their lore, their texting voice, and even what they're doing right now in their day. No generic "hey, glad we're friends" from someone you just slew a dark lord with.
  • Their life profile knows who you are. The generator that invents a character's daily life reads more than their card — so a character whose lore says she stalks people won't get "stalking multiple people" as a hobby, oblivious to the fact that you are her sole person. It knows exactly one person is on the other end of their channel, sees the lives you've shared (synopses included), and even reads the character's own private memory of you. Any pursuit or attention in their day is aimed at you or nobody. Hit "Regenerate Life Profile" on an existing character to apply this.
  • All tunable. Settings → Backstage & Live Chat → new Story synopses and Memories that resurface sections: toggles, the synopsis model and refresh rate, how often memories surface, how fast old stories fade from the draw, and every prompt. If you've hand-edited the timeline-lookup, first-text, or life-profile prompts, reset them (or hand-merge) to pick up the new slots.

📲 Your Pings Can Pull Them Online — or Wake Them

Messaging a character who's away doesn't just queue a reply for whenever they'd next check their phone — the ping itself matters: sending a message has a chance to pull an away character online right now, and you'll see their status dot pop green the instant it happens.

  • They come running (sometimes). Message an AFK or "phone away at work" character and there's a chance they glance at the buzz and come over to reply immediately, instead of making you wait for their next window. Whether they do is down to who they are: someone whose hands are full (a surgeon mid-operation, a queen holding court) almost never can; a bored idler glued to their phone often does; a warm ongoing conversation makes it likelier.
  • You can wake them — rarely. Ping a sleeping character and there's a small chance it stirs them. It's hardest in the dead of their night and easier close to when they'd wake anyway, and a woken reply reads like it: groggy, short, half-asleep — annoyed, or touched that it was you.
  • Do Not Disturb means Do Not Disturb. A character who's set themselves to Do Not Disturb is completely immune — no glancing, no waking. That's the whole point of it.
  • Spamming cuts both ways. Buzz an away character over and over and it depends on their temperament: a patient, social one caves and comes to you sooner, but a prickly, low-energy one gets fed up — they'll surface just to say so, and may mute you outright by flipping themselves to Do Not Disturb until they cool off. Pick who you pester.
  • All tunable. Settings → Backstage & Live Chat → Coming online for you: turn it off, set the come-online / wake-from-sleep / irritation chances, and edit every line of how being pulled over, woken, or pestered feels.

🐸 Memelords: Characters Can Send You Actual Memes

Some friends text in paragraphs. Some friends text in memes. Your characters can be the second kind — in their DM, with taste, and only if it's them.

  • Three ways to meme. A character can search a real meme library for the perfect one, browse what's hot on Reddit right now and repost it, or — with the image tool on — make an original meme about what's actually happening between you two (impact captions, reaction images, deep-fried and all). They can even re-read one of your shared adventures first so the joke nails the real details.
  • They look before they send. No blind posting: the character is shown the actual candidate images, judges them against the moment, and either picks the one that lands, looks again, or sends nothing. A forced meme is worse than none — they know that.
  • A meme alone is a message — and they choose when. Real people drop a sole meme and let it speak, or add a line — so the character decides, per meme, whether to caption it or send it wordless. It's context-aware: a bare meme lands hardest as a conversation opener (memelords will start chats with one out of nowhere), while mid-conversation they lean toward a word or two so it doesn't read like a shrug. Both nudges are separate, fully editable prompts ("replying in an active chat" vs "starting a conversation") under Meme tool prompts.
  • Who memes is who they are. Each character's Life Profile carries a meme fluency (never / drops one when it lands / memes are a native language) and a meme dialect (makes their own / terminally-online reddit reposter / hunts the perfect one). Your formal monarch stays meme-free; your gremlin does not. Edit both in the Life Profile editor, or regenerate the profile to have them derived from personality.
  • Your subreddits, your rules — and the character picks from them. The Reddit source pulls from subreddits you choose (comma-separated — swap in whatever actually makes you laugh), and the character decides which of those fits the moment instead of blindly grabbing the whole pile — and can switch to a different one when it looks again. Flip on "Let them browse ANY subreddit" and it's off the leash: it can reach for any subreddit it thinks lands, your list becoming just its go-tos (off by default — a random sub can dodge your NSFW filter's intent). NSFW filter on by default, never reposts a meme they already sent you. Works out of the box with zero setup; for the most reliable first-party feed, paste a free Reddit Client ID (create an "installed app" at reddit.com/prefs/apps — no password, no billing) in the Reddit browsing settings.
  • Off by default, all tunable. Settings → Backstage & Live Chat → Memes (Live Chat): master toggle, each source, candidate counts, pacing odds, and every prompt. The library search uses the same KLIPY key as GIF reactions.

👀 Attention Span: Reply Fast and They Reply Fast

Characters have an attention span — they don't take their sweet simulated time when they sent their message five seconds ago, like they'd hurled the phone across the room the instant they hit send.

  • They linger after texting you. Answer within the window while they're still looking at the chat and they see it land and reply near-instantly — no "notice delay", just a quick read and real typing. The hotter the back-and-forth, the longer they linger; let the chat go cold and the window shrinks to seconds.
  • No fake alibis. A character who just watched your reply arrive won't invent a "sorry, was in the shower" — they know they never left.
  • Do Not Disturb still means it. Muted is muted, attention span or not.
  • Tunable. Settings → Backstage & Live Chat → Attention span: toggle, window length, and the prompt that shapes the mid-conversation voice.

✍️ Fragment Texters vs. Wall-of-Text Essayists

Real friends split into the one who sends fifteen one-line messages in a row and the one who composes a single sermon and never double-texts. Your characters do too.

  • Every character has a texting shape: fragmentary (thoughts tumble out as many tiny bubbles), balanced, or essayist (one composed message, however long it needs to run — capped at two bubbles, because the send button is a decision). Set it in the Life Profile editor or regenerate the profile to derive it from personality.
  • Believable typing speed. Characters read and type at believable speeds (typing range 40–160 wpm), and a Typing speed slider (Settings → Backstage & Live Chat → Timing) lets you push it faster or slower to taste — without touching how quickly they notice you, which stays on the realism slider.

👁 Seen: Read Receipts in the DM

  • Your last message flips to "Seen" the moment the character finishes reading it — before the typing indicator even starts, exactly like a real chat app. The little dread window between Seen and is typing… is yours to enjoy. Toggle it off in Settings → Backstage & Live Chat if you prefer plausible deniability.

🖼 They Can Actually See Recent Pictures

  • Attachments stay visible. Instead of every image collapsing into a text placeholder the moment the next message arrives — leaving a character unable to comment on, follow up about, or meme on a picture from two messages ago — the most recent messages keep their images visible to the character as actual pictures. A new Attachment memory window slider (default 6 messages) controls how far back they can see; higher costs more tokens, 0 restores the text-only behavior.

📚 Timeline Lookups That Don't Instantly Evaporate

  • They keep the story in mind for a few replies. When a character re-reads one of your shared timelines mid-conversation, the recall stays fresh in their head for the next few replies (default 3, tunable) — so you can actually talk about an adventure for a while instead of them forgetting it the moment the lookup ends. Re-reading refreshes it.
  • Lookups per reply is a real setting (Settings → Backstage & Live Chat → Timeline peeking).

🤖 Roleplay on Your Claude Subscription — No API Key (PC)

If you pay for Claude Pro or Max, your desktop app can now run roleplay through it directly — no Anthropic API key, no per-token billing, no third-party bridge.

  • Powered by Claude Code. Install the free Claude Code CLI on your PC, sign in once with your claude.ai account, and a new Claude Code (CLI) provider appears in every model picker. Your subscription's flat pricing covers the roleplay.
  • Pick the exact model. A proper version picker — tick Opus 4.8, 4.7 or 4.6, Sonnet 5 / 4.6 / 4.5, Haiku 4.5 or Fable 5 (plus a custom field for anything newer). Pinning matters: the plain "opus" shortcut still points at 4.7, so choosing 4.8 explicitly gets you the better model. Each shows up as "Claude Code · Opus 4.8" in your pickers.
  • Images work. Attach a picture and the character actually looks at it — no separate vision key needed.
  • One-click health check. Settings → Claude Code has a Test connection button that verifies the CLI is installed and logged in, and tells you exactly what to fix if it isn't.
  • Fully yours to tune. Every prompt the provider uses (persona framing, transcript wrapper, reply/JSON instructions, image note) is editable on the settings page, exports with your config, and resets per-field.
  • Honest limits, stated up front: desktop-only (phones can't run the CLI), the temperature/top-p/thinking sliders don't apply to this provider, and replies arrive as one block (no token streaming). Effort levels (low→max) DO work.

📖 Full-Width Messages

  • Message text can now use the whole screen. By default every message is indented to make room for the profile picture on its left — on a phone that margin costs real reading space. A new toggle in Settings → Interface → Main Chat (Full-width messages) tucks the portrait up beside the character's name instead, so the text runs edge to edge. The portrait keeps its normal size (your Avatar Size slider still applies), and it works everywhere: normal chats, group chats, the Director, and Live Chat DMs. Off by default — flip it on if you want the extra width.

🩹 Roleplay Discussions No Longer Scramble, Duplicate, or Mislabel Messages

When you sync a Roleplay Discussion (or any chat) between your phone and PC, messages could end up in the wrong order — something you said yesterday showing up below today's reply — and sometimes a message would appear twice or with the wrong speaker's name and picture attached. This was the sync layer using each message's position number to identify it; when both devices added messages on their own, those numbers collided and the merge stapled one message's text onto another's identity. It's fixed at the root.

  • Time is the source of truth. Every message now displays in real chronological order by when it was actually sent, everywhere it's shown — so a discussion reads top-to-bottom the way it happened no matter which device wrote which line or in what sync order they arrived.
  • Every message now has its own permanent identity. New messages carry a unique fingerprint minted the instant they're created, so two devices can never confuse one message for another again. No more phantom duplicates, and a message's name and avatar always stay with that message.
  • Deletes finally stick across devices. Deleting a message, regenerating a reply, or editing one of your lines now leaves a durable "tombstone" — so the old version can't come back to life the next time your phone and PC reconnect. Previously a delete that happened while the other device was offline would silently reappear.
  • A one-time cleanup on first launch. When you open this build, any exact-duplicate messages left behind by the old bug are automatically collapsed back to a single copy. Your existing conversations are repaired in place; nothing is lost.
  • Works the same on phone and PC, and no action is needed on your part.

🏛 Overseer: Generation Survives Backgrounding, the Critic Gets a Memory, Smarter Resumes

The campaign generator got a major internals pass: it keeps working when you switch apps, the Writer↔Critic loop is fairer and smarter, and crashes resume cleanly.

  • Lock your phone, generation keeps going. Until now, backgrounding the app mid-generation could let Android freeze the engine and drop the in-flight request. The Overseer now holds a proper ongoing notification (like KG indexing does) that keeps it alive through screen-off and app-switching, with live phase progress in the notification.
  • The Critic finally remembers what it said. Each revision round, the Critic now sees the draft it rejected AND its own critique alongside the new draft — so it verifies its complaints were actually addressed instead of moving the goalposts or re-litigating things it already approved. The Writer, in turn, always receives the Critic's complete unabridged verdict.
  • No more "where are the cantos?" in Phase 1. The Critic sometimes demanded acts, cantos, or intervallos phases before those even exist — rejecting perfectly good pitches for lacking scene breakdowns. Every phase now knows exactly what the assembly line produces when, and judges only its own deliverable.
  • Claude & GPT models get their thinking controls. Selecting a Claude (or other non-Gemini) model for the Writer/Critic/NPC/grounding/HyDE slots used to hide the Thinking Config entirely. The panel now shows the right controls per model: an Extended Thinking toggle and an Effort ladder (low → max) for Claude, budget slider for Gemini 2.5, level dropdown for Gemini 3 — and notes when thinking is always-on.
  • API failures now say what actually happened. When your provider returned an error (out of credits, rate limit, outage), the engine used to treat it as an empty draft — spamming the War Room with blank Writer cards and scolding the model to "follow the JSON schema" while burning all its revision loops in seconds. Provider errors now stop the attempt immediately, show the real reason (e.g. "OpenRouter: insufficient credits"), and let the retry backoff handle recovery — one request per attempt instead of six wasted ones.
  • Crashing during canto-writing no longer redoes your Acts. If generation died while cantos were being written, resuming used to silently re-run the entire (expensive) act-writing phase and overwrite your approved acts. Resume now continues exactly where it stopped.
  • Resumed campaigns now reach your other device. Acts and cantos written by a resumed generation weren't being sent over WiFi sync — only fresh runs were. Both paths now sync identically.
  • The Critic's approval always counts now. A quirk in how the Critic's chosen pitch number was read could make a genuine approval look like a rejection, burning an extra Writer↔Critic loop for nothing.
  • Steadier payloads, better caching. Each phase now assembles its context once and keeps it stable across revision loops, letting the API's prompt caching kick in instead of re-billing the full context every loop.
  • "Retry until success" now backs off. Failed runs retry with growing delays (2s → 60s) and give up after 10 attempts with a notification, instead of hammering the API every 2 seconds forever on a dead connection or bad key.
  • Max Loops is now a real spending ceiling. "Retry until success" used to hand the Writer↔Critic loop a fresh loop budget on every retry — your 6-loop cap could quietly become 60 paid attempts. Loop spend now carries across automatic retries: the cap you set is the total the phase may ever consume. A retry that arrives with the budget already spent salvages the best draft produced so far (zero new API calls) — and if there's nothing to salvage, the engine stops retrying entirely instead of burning credits on attempts that can't succeed. Starting a generation yourself always grants a fresh budget.
  • The Critic's transition notes survive resumes. The notes the Critic leaves when approving your pitch now guide act-writing on resumed runs too, not just fresh ones.
  • Prompt polish. The canto Critic was auditing a field the Writer doesn't produce (it now checks the right one), a cut-off sentence in the pitch instructions was completed, and boilerplate duplicated across the six Overseer prompts was consolidated into the shared context block. If you've customized these prompts, your versions are untouched.

🔗 Links Actually Open Now

  • Links in chat were styled but dead — tapping did nothing. Any link a character (or you) drops in a message now opens in your browser, bare URLs included.

🩹 Small Fixes

  • Story title cards no longer quietly stop appearing. When the Director hit a bad internal response, a story's chapter title cards (the cinematic "Canto" cards) could silently fail to show — and worse, the very first card of a new story could be skipped permanently for that save. Title cards now appear reliably even when the Director stumbles, a hiccup on a story's opening card is retried instead of lost, and one malformed field can no longer throw away the Director's whole turn.
  • The character menu no longer runs off the screen. Long-pressing the lowest character in the side rail used to cut off the bottom of its pop-up menu (Edit, Share, Delete…), especially when the Discord button was hidden. The menu now always opens fully on-screen.

Credit where it is due:

Big thanks to my Beta Testers, (especially Nerb and Syl on Discord) for your exhaustive feedback! We're targeting user-requested addition for 1.16.1 (next update, presumably next week.) Stay tuned!

1.15.1

July 5, 2026

🩹 EMERGENCY HOTFIX: API Keys You Type In Providers & Keys Actually Save Now

Since the move to auto-saving settings, the Providers & Keys page had a hole: typing or pasting ANY API key never triggered the auto-save — so unless you also happened to touch a slider or add a model on the same visit, your key silently vanished when you left the page. New users could end up unable to get the app talking to any provider at all.

  • Keys save as you type them. Paste a key into any provider card — built-in or custom endpoint — and it's stored a moment later, with the usual "Saved" flash in the corner confirming it took.
  • Embedding and GIF keys too. The dedicated Gemini embedding key and the KLIPY key fields now auto-save the same way.

1.15.0

July 5, 2026

Quality of Life, for PC Fellas (And Not Only)

💾 Settings Save Themselves Now — No More Getting Kicked Out

Every settings page used to make you hunt for a Save button, and hitting it threw you straight out of Settings — so tweaking two things on one page meant save, get booted, reopen Settings, dig back in, repeat. That's gone. Settings now save automatically as you change them, on both mobile and PC, exactly like Discord, Slack, and your phone's own settings app.

  • Change it and it's saved. Drag a slider, flip a switch, pick a model, or edit a prompt — it's written a moment later on its own. No button to press, and you're never navigated away from the page you're working on.
  • A quiet little confirmation. Where the Save button used to be, there's now a subtle "Auto-saves" indicator that briefly flashes "Saved" each time your changes are stored, so you know it took.
  • Nothing gets lost. Leaving a page or switching to another settings tab on PC flushes any last change first, so a tweak you made a half-second before leaving is still saved.
  • Everywhere it matters. Applies across User Profile, System Directives, Chat & Memory, Roleplay Discussion, Providers & Keys, Services, Knowledge Graph, Overseer, Director, Group Chat, Local AI, AFK Messaging, and the Clock/Alarm AI pages.
  • Restore Defaults and Export/Import are unchanged, and the alarm editor still has its own Save (creating an alarm is a deliberate "done" action, not a live setting).

🖥️ Character Creator, Rebuilt for PC (Plus Better Scrolling Everywhere)

On desktop the Create/Edit Character screen was just the phone layout stretched wide — single-column fields running the full width of the window, awkward to scan and fill in. It's now laid out for a real screen, and the fussy mouse-wheel behavior that plagued every long form on PC is fixed.

  • A layout that fits a monitor. The form is now capped to a comfortable centered column instead of sprawling edge to edge. Your profile picture sits centered beside the Name and Personality fields as a tidy identity header, the reference-image viewer spans the full width, and the "make it for me / transcribe / auto-tag" actions group into a compact cluster.
  • Room to actually write. On PC the text boxes are much taller and the text, labels and buttons are a bit larger, so you can see what you're typing and read it comfortably from a monitor instead of squinting at phone-sized boxes.
  • Related fields, side by side. Naturally paired boxes now share a row — Visual Description next to Physical Capabilities, Lorebooks next to Static Lore, and the two Special Instructions boxes together — so there's far less endless scrolling. Narrow the window and they gracefully stack back into one column.
  • The mouse wheel scrolls the page, not the box. Hovering a text field and scrolling used to scroll inside that field and trap you. Now, on PC, scrolling over a field you aren't editing scrolls the whole page like you'd expect; click into a field and the wheel scrolls its text again.
  • A real scrollbar. Forms across the app now show a thicker, always-visible, grabbable scrollbar on PC — and in the Character Creator it no longer jitters or resizes as you scroll.
  • Fields that look like PC controls. Text boxes across settings and the creator now have a visible outline, a highlight when you hover, and a clear accent glow when focused.
  • Tidier ordering. The Global Taxonomy Tags field now sits lower down, just above the evaluator summary — a small reshuffle that applies on phone and PC alike.
  • Mobile is otherwise untouched — apart from that one field move, every other change here is desktop-only and your phone layout looks and behaves as before.

✨ The Lorebooks Field Is Now Alive

The Lorebooks field in the Character Creator has always been secretly special — it splits whatever you write into separate lore "entries" on blank lines, and each entry is remembered and pulled back individually. Nothing on screen ever told you that. Now the field shows you.

  • An orbiting golden frame. A soft point of gold light circles the Lorebooks field with a spinner-like rhythm — drifting slow, then swinging quickly around — so the field visibly stands apart from every other box. It calms right down while you're typing so it never fights your concentration, and glows brightest when the field is idle.
  • Every entry gets its own color. The paragraph you're currently writing gently brightens toward gold the longer you dwell on it — then, once you finish it, it settles into its own unique color with a soft matching glow. Each lore entry after that picks a distinct hue, so at a glance you can see exactly how your lore is broken into separate pieces.
  • "Press Enter again for a new Lore Entry." The moment you press Enter after some text, a hint appears telling you a second Enter will start a brand-new entry. Press it, and the entry you just finished pulses once and takes on its color — then your fresh entry begins to glow. It makes the blank-line rule obvious instead of hidden.
  • In the fullscreen editor too. Open the Lorebooks field in the big distraction-free editor (the expand icon) and you get the same color-coded entries and a large, easy-to-read new-entry hint — so the effect follows you to where you actually write long lore. (The orbiting frame stays on the inline field only; fullscreen keeps it calm.)
  • Fully optional. Prefer a plain, quiet field? Flip Settings → Interface → "Disable animated Lorebooks field" and both the inline box and the fullscreen editor revert to ordinary text. The effect is on by default. Works on phone and PC, and the toggle travels with settings export/import and Restore Defaults.

✨ Smarter Character Auto-Generation Prompt

The Auto-Generate assistant in the Character Creator has a rewritten brief. It now cooks up characters that stand on their own two feet — people with a purpose, a dream, or a struggle — rather than flat, one-note creations built only to fawn over you.

  • Characters with substance. The assistant is explicitly steered away from hollow "orbits-around-you" personalities and toward self-contained people you can actually meet, discover, and have a story with.
  • Cleaner relationship defaults. Freshly generated characters won't arbitrarily come pre-saddled with a spouse, partner, or kids — unless there's a good story reason for it (like a love triangle to win).
  • Leans into the vibe. If your reference images clearly center on a theme, the assistant leans into it instead of playing it safe.
  • One rule above all: it must not be boring.

🩹 Devices Stop Re-Syncing When Nothing Changed

Two paired devices would run a full sync reconcile on every connection — even when neither device had touched anything since last time — quietly churning in the background and lighting up the sync logs. The cause: each device was fingerprinting your characters and chats using the file paths of their portrait images, and those paths are naturally different on a phone versus a PC (and even between installs). So the two devices could never agree that their data matched, and kept "reconciling" the same identical data over and over.

  • Idle now means idle. Portrait/reference-image paths are no longer part of the match check — only the actual image contents and data are. When nothing has changed, connecting devices now recognize they're already in sync and skip the reconcile entirely, exactly as intended.
  • Automatic, one-time catch-up. The first connection after updating rebuilds each device's fingerprint under the new scheme, then settles into the quiet fast path. Requires the new build on both devices.
  • No visible change to your data. Portraits, characters, and chats sync and display exactly as before — this only fixes the needless repeat work.

🩹 Creating a Character No Longer Hijacks Your Open Chat

Building a new character while you were mid-conversation used to briefly scramble the chat you had open. Say you were talking to Sofi and made Amaterasu — the moment you saved, Sofi's name and portrait at the top of her chat would flip to Amaterasu's, and stay wrong until you clicked another character in the rail.

  • Your open chat stays put. Saving a newly created (or imported, or edited) character no longer changes who you're chatting with. The name and portrait above your conversation stay correct.
  • First character still gets focused. When you create your very first character — with nothing else open — the app still jumps straight to it, so you're ready to start a timeline.
  • Works on phone and PC.

📷 Image Pacing Guard for Chat & Roleplay Discussions

Characters that could send pictures had a habit of attaching one to almost every reply once the image tool was on — cute the first time, spammy by the tenth. AFK notifications already had a pacing guard to space pictures out; now your primary chat and Roleplay Discussions get the same dial.

  • Rein in picture spam. Turn on the new Pacing guard and the character is only offered the camera on a random share of replies — on the rest it's never even told pictures are possible, so it just writes text. The result is pictures that feel like a moment instead of a reflex.
  • You set the odds. A single "Chance the camera is offered" slider (0–100%, default 35%) controls how often a picture can happen. Lower it for rare, special shots; raise it for a chattier, more photo-happy character. 0% effectively mutes images without touching the rest of your setup.
  • Independent per surface. Chat, Roleplay Discussions, and AFK notifications each have their own guard — tune one without disturbing the others. Find it under Image Generation on the Chat & Memory and Roleplay Discussion settings pages.
  • Off by default — nothing changes until you enable it, and it's included in Restore Defaults and settings export/import.

📐 Size It to Your Screen — Chats, Settings & the Desktop Sidebar

The app used to lock text and layout to one fixed size everywhere. Now you can dial nearly everything to fit your screen — read from across the room on a monitor, or pack more onto a phone. Every slider below saves automatically, survives restarts, travels with settings export/import, and resets with Restore Defaults.

  • Chat Text Size. A slider in Settings → Interface → Main Chat scales the message text, names, timestamps, and the expandable Thought Process panel together, from 80% up to 160% — for single-character chats and Roleplay Discussion group chats.
  • Avatar Size. A separate, independent slider scales the round character portraits from 70% up to 200% — enlarge the pictures without touching the text, or shrink them for a tighter, text-focused layout.
  • Settings Text Size. A slider in Settings → Interface → Settings Page scales every label, description, and toggle across all of Settings together, from 80% up to 150%. On PC, Settings already starts a bit enlarged; now you can push it further (100% keeps the current desktop look). Phone and PC.
  • Timeline Drawer Size (PC). A slider in Settings → Interface → Timeline Drawer widens the timeline column and scales its avatars, titles, and preview text together, from 100% up to 180%. The header stays aligned with the chat header and character rail at any size.
  • Character Rail Size (PC). A slider in the same place scales the far-left icon strip — its width, icon spacing, and avatars — from 100% up to 160%. Dragging to reorder or group still lands exactly where you drop at any size, and the rail no longer shows a stray scrollbar (it still scrolls with the mouse wheel).
  • The two sidebar sliders are PC-only by design and never touch the phone layout; the chat and settings text sliders work on phone and PC.

📎 FIX: Attaching Images in Chat Opens the Fast Photo Picker (Android)

Adding a picture to a message used to dump you into the clunky, deep file-manager browser — you had to dig through folders to find the photo you wanted. Creating a character, by contrast, popped open Android's quick photo grid. Now the chat attach button opens that same fast photo picker, so it matches everywhere in the app.

  • One tap to your photos. The gold + in the chat bar now brings up the modern Android photo grid (recent images and videos, multi-select) instead of the file explorer.
  • Pick several at once. Multi-image selection still works — and now it does so from the quick picker instead of forcing the old browser.
  • Android-only fix — nothing changes on PC.

🖥️ Desktop Settings, Rebuilt for a Monitor

On desktop, Settings used to open as a small floating window hovering over your chat, built at phone proportions — a narrow column of small text stranded in a big empty panel. It's now a proper full-screen page that uses the space like a real desktop app.

  • A full page, not a popup. Settings opens as a full-screen page that fills the window — it fades in and takes over; close it with the in the top-left to slide right back to your chat exactly where you left off. The two-pane layout (category list left, options right) now stretches edge to edge instead of being boxed into a cramped popup.
  • Bigger, easier-to-read text everywhere. Every label, description, and input on PC is scaled up a notch, so you're not squinting at phone-sized type on a large monitor.
  • Taller input boxes. Multi-line fields across Settings (and the Character Creator) now have a comfortable minimum height, so short boxes aren't cramped one-liners.
  • A wider tab list and a wider page. The category sidebar on the left is roomier, and the settings content itself is ~20% wider, so pages fill the screen instead of stranding you with vacant margins.
  • A clean solid panel. The desktop settings background is a flat panel color — the ivy/parchment texture stays a mobile look — for a tidy PC feel.
  • Much larger profile image. Your profile picture and the visual-reference viewer on the User Profile page are now big enough to actually see on PC.
  • Mobile Settings are unchanged — all of this is desktop-only.

⚡ FIX: Snappy Settings Again (No More Lag Opening Settings on Mobile)

Opening Settings had started to lag and stutter — a hitch every time you tapped the gear, worse on a busy chat. The culprit was the dark Settings background image: it was being loaded at its fulls resolution and rebuilt from scratch every single time you entered Settings.

  • Settings opens smoothly now. The backdrop is decoded at your screen's size instead of its giant native size — roughly a 10× smaller image in memory — so the page slides in without dropping frames.
  • No more re-loading it over and over. The oversized version used to hog most of the app's image memory and get evicted constantly, forcing a fresh reload on each visit. The right-sized version is loaded once up front and stays put.
  • Purely under the hood — Settings looks exactly the same in both Light and Dark Academia; it just feels instant again.

🖥️ FIX: Crisp Backgrounds on PC (No More Blurry Paper & Top Bar)

On desktop, the paper texture and the top bar looked grainy and pixelated — not because the artwork was low quality, but because the app was shrinking every background down to phone size and then stretching it across your much larger PC window.

  • Backgrounds now render at your window's real size. On desktop the app decodes each texture to fit your actual window width instead of a phone-sized sliver, so the paper, top bar, drawer and input strip all look sharp and detailed.
  • Nothing to change on your end — the high-resolution artwork was always there; the app just wasn't using it fully on PC. Mobile is untouched (it was already right-sized).
  • One caveat: the sharpness is locked in at launch, so if you dramatically resize the window, relaunch to re-sharpen at the new size.

🏷️ Cleaner, Bigger Model Name in the Chat Header

The current model's name shown above your chat got two fixes at once: it now reads as a clean name instead of a raw provider path, and it's easier to spot on desktop.

  • Reads like a name, not a path. Custom-provider models used to spell out the whole raw string — like OpenRouter::anthropic/claude-opus-4.6 — eating space and crowding the timeline title. Now OpenRouter::anthropic/claude-opus-4.6 shows as Claude Opus 4.6, gemini::gemini-2.5-pro as Gemini 2.5 Pro, openai::gpt-4o as GPT 4o — for every provider (OpenRouter, Anthropic, OpenAI, Google, local models, fal), with no per-model setup.
  • Never crowds the title. The label is rendered a touch tighter and capped in width, so it can't push into or overlap your timeline's name; absurdly long custom names simply trail off with "…".
  • Bigger on PC. On desktop the label is now about half again as large, so a glance tells you which model is answering. The phone keeps its compact label unchanged.
  • Nothing to configure — it just looks better everywhere the current model is shown.

✂️ Prompt Editor: A Cleaner Variable Bar

When you open a prompt in the fullscreen editor, the strip of quick-insert buttons along the bottom used to be a crowded, side-scrolling row of variables and big JSON "rubric" blocks — most of which you never needed.

  • Just the two that matter. The bar now shows only {{userName}} and {{personaName}}, laid out as two evenly-sized buttons spread across the bar, so tapping the one you want is quick and obvious.
  • The clutter is gone. The extra variable chips ({{summary}}, {{personality}}, {{userMessage}}, {{aiResponse}}) and every JSON rubric block have been removed from the bar. They were not properly respected in most prompts anyway. Just some.
  • Works everywhere. Same on phone and PC.

💅 Character Creator: Extra Tidying (Phone & PC)

A handful of smaller Character Creator cleanups beyond the desktop rebuild above.

  • Full-width action buttons (phone). Create Character, Transcribe Appearance from Images, Auto-Generate Tags, and Generate Summary now each span the full width of the page and centre their labels, instead of sitting as lopsided little pills. Desktop is untouched.
  • Auto-Generate Tags moved where it belongs. It now lives down in the Global Taxonomy Tags section — right next to the tags it actually fills in — instead of floating up near Personality.
  • Straighter "Upload .txt" links. The little Upload .txt link above each field now lines up neatly against the right edge of its box, sharing a tidy edge with the token counter below, instead of drifting around depending on the field's name length. Phone and PC.
  • Clearer field labels. Global Taxonomy Tags now reads "Required for Data Graph Clustering" and Setting/Character Summary for Evaluator reads "Required for Memory Importance Scoring" beneath their headings, so it's obvious why filling them in matters. Phone and PC.

🧹 Under the Hood: Quieter Builds & Reclaimed Space

Pure housekeeping — no change to how anything looks or behaves.

  • No developer chatter in production. The app used to print internal debug notes ("createSession called…", "Total nodes…", and the like) to the system log even in the shipped release build. Those are now stripped from the release build entirely, so nothing is quietly logging in the background. Your real diagnostics — the in-app Terminal and the background AFK diagnostic log — are untouched and keep working exactly as before.
  • Retired the old GIF cache. Roleplay Discussion GIFs save straight to your library now, so the separate temporary GIF-cache folder no longer served a purpose. It's been removed, and any leftover cached GIFs are cleaned up automatically on next launch — reclaiming a little disk space. No change to how GIFs look or behave.

1.14.2

July 4, 2026

🧠 Native Support for Claude Models! (and Get Their Reasoning Dial) + Deep Fixes

Newer Claude models — Opus 4.7 / 4.8, Sonnet 5, and the Fable/Mythos tier — were flat-out erroring whenever thinking was on. The app was sending them an old-style "thinking budget" plus temperature/top-p settings that those models now reject outright, so requests died with a 400. That's fixed: the app now speaks each model's actual dialect.

  • Every model gets the right thinking mode automatically. Older Claude models still use a token budget; newer ones switch to their built-in adaptive thinking; Gemini keeps its budget (2.5) or level (3+) exactly as before. You don't pick — the app knows per model.
  • NEW: Effort control for Claude & OpenAI reasoning models. Under Settings → Chat & Memory → Thinking Config, the primary model now shows an Effort dropdown when the selected model supports it (Claude's low → max, including xhigh for "ultracode" quality; OpenAI's minimal → high). Leave it on (provider default) to not send one. This is the "run it at maximum reasoning" knob that simply wasn't reachable before.
  • OpenAI / OpenRouter reasoning effort is sent too, in whichever dialect the endpoint expects — so o-series, GPT-5, and reasoning models routed through OpenRouter finally honor the setting.
  • The app can learn each model's capabilities from the provider. Hitting Fetch models on Anthropic or OpenRouter (in Providers & Keys) now also pulls down what parameters each model accepts and remembers it, so the controls shown match reality even for models released after this update.

🛑 FIX: The Stop Button Now Works While a Character Is Making a GIF or Image

Hitting Stop while a character was mid–photo or mid–GIF did nothing — you were stuck waiting for the picture to finish rendering (or the GIF to be found and downloaded) before anything would actually cancel. Now Stop takes effect instantly, at any point in the process.

  • Cancel lands immediately. Whether the character is taking a picture, reviewing it, searching for a GIF, looking through candidates, or downloading the final one — pressing Stop aborts the request in flight instead of letting it run to completion.
  • Nothing half-baked gets posted. A cancelled photo or GIF turn is dropped cleanly; any message the character already sent before the picture (the "let me grab a pic…" line) stays, as before.
  • Applies everywhere the tools live — Roleplay Discussions (image and GIF) and normal single-character chats (image) both honor Stop now.

📺 FIX: YouTube Videos Now Actually Get Watched in Roleplay Discussions

Dropping a YouTube link into a Roleplay Discussion did nothing — the character never watched the video; it just saw a bit of text and made things up. Now, paste a YouTube link and your character genuinely watches it before replying, exactly like it already did in normal chats.

  • Paste a link, they watch it. The "…will watch your YouTube video!" chip above the composer now tells the truth in discussions too — the video is handed to the model to view, not sent as plain text.
  • The typing indicator shows "is watching the video" while it takes it in.
  • Same rules as everywhere else: needs a Gemini video model. On any other model the chip warns you the link will be sent as text (unchanged), so nothing silently breaks. One video per message.

🖼️ FIX: Attached Images No Longer Rejected for Having the "Wrong" File Extension

If you attached a picture that was really a PNG but happened to be named .jpg (extremely common with screenshots and saved images), Claude — directly or through OpenRouter — would reject the whole message with a "the image is not the type it claims" error. The app now looks at the actual image data instead of trusting the filename, so those sends just work.

🎛️ Under the Hood: One Model Picker Everywhere

Every model dropdown across Settings (Director, Overseer, Clock AI, Character Alarm, AFK Messaging, image pickers, the in-chat switcher, and more) now comes from a single shared component. Nothing changes for you visually — but new model features light up everywhere at once from now on, instead of one screen at a time. Codebase was refactored to be able to construct any slider and any dropdown selector automatically from metadata sent by providers, allowing for easy longterm support of multiple providers, as well as greater customizability of models Aurelius has not enough lifetime to discover, yet alone code by hand.

1.14.1

July 4, 2026

🎞️ NEW: Your Characters Can React With GIFs (Roleplay Discussions)

Your characters can now drop an animated GIF into a Roleplay Discussion when the moment calls for it — an eye-roll, a happy dance, a mic drop. It works like the camera tool, but for GIFs pulled live from KLIPY's library.

  • How it works: the character searches a phrase, gets a handful of GIFs, looks them over, and picks the one that fits — then sends it, with or without a message. If nothing lands, it can search again a few times or just skip the GIF and keep talking.
  • Turn it on: Settings → Roleplay Discussion → GIF Reactions. It's off by default and stays off until you add a free KLIPY API key.
  • Add your key: Settings → Providers & Keys → GIF Search Key (KLIPY). Grab one at klipy.com/developers.
  • Tune it your way:
    • Candidate GIFs per search (0–10) — how many options the character reviews. Set it to 0 to skip reviewing and just fire off the top hit.
    • Re-searches allowed — how many times it can try a new phrase before giving up.
    • Content ratingg / pg / pg-13 / r (defaults to r).
    • Review animated GIFs — off shows the character still previews (faster/cheaper); on shows it the full moving GIFs.
    • Every instruction the character reads is a prompt you can edit, just like everywhere else.
  • Roleplay Discussions only. This one lives exclusively in the OOC discussion chats — not regular chats, not notifications.

(GIFs animate right in the chat bubble, save with the discussion, and sync across your devices automatically.)

🧹 FIX: Deleting a Timeline Now Cleans Up Its Roleplay Discussion (and Its Files)

Every timeline has a hidden Roleplay Discussion attached to it. Until now, deleting the timeline left that discussion behind — its messages, its generated pictures, and every file your character sent stayed on your device forever, taking up space with no way to reach them.

  • Delete a timeline, and its whole Roleplay Discussion goes with it — messages, photos, and all the GIFs are wiped from your device for good.
  • Old leftovers get cleaned too. Any orphaned discussions from timelines you deleted before this fix are now removed the next time their parent character is deleted or the timeline delete runs.
  • Frees up real space. GIFs and generated images are actual files on disk; they're now properly removed instead of piling up invisibly.
  • Syncs across your devices. The cleanup propagates, so a deleted discussion doesn't linger on your other paired devices either.

🦊 NEW: Flux 2 Image Generation (via fal.ai) — I Believed It Will Give Less Refusals Than Nano Banana And Was Wrong, But I Am Not Deleting It After All This Work

Every place your characters make pictures — Roleplay Discussions, regular chats, and AFK texts — can now use Flux 2 through fal.ai as an alternative to the built-in Nano Banana models. It follows reference images and... is exactly just as likely to refuse, because fuck you and everyone else who wants to generate a good quality image of a topless furry woman from reference.

  • Pick it anywhere pictures are made. Open any image-model dropdown (Chat & Memory, Roleplay Discussion, or AFK Messaging → Image Generation) and choose fal.ai · flux-2 [DEV]. Each surface keeps its own independent choice, so you can run Flux in Roleplay Discussions and stay on Nano Banana elsewhere if you like.
  • It actually uses your references. When your character attaches reference images (its own look, yours, or a photo shared earlier in the chat), Flux takes up to 4 of them and builds the picture around them — great for keeping a character on-model.
  • Add your key once. Settings → Providers & Keys → fal.ai — paste a key from fal.ai/dashboard/keys and you're set. Nothing changes until you both add the key and select a Flux model, so existing setups are untouched.
  • Aspect ratio & size respected. Your chosen ratio and 1K/2K/4K size are honored; “auto” lets Flux pick to match your references.
  • Heads-up: the Roleplay-Discussion camera instructions still mention “Nano Banana” by default and warn the model to soften spicy wording — with Flux you can relax that. It's an editable prompt, so tweak it under Settings → Roleplay Discussion → Image Generation if you want blunter prompts.

🖼️ Pacing Guards — Stop the Spam of GIFs & Selfies

Given the freedom, characters love to reach for a GIF in every Roleplay Discussion or attach a selfie to nearly every AFK text. Two new optional guards let you dial that back so the good stuff stays special.

  • GIF pacing (Roleplay Discussions). Turn on Settings → Roleplay Discussion → GIF Reactions → Pacing guard and set how many messages must pass between GIFs. After the character sends one, the GIF tool is taken away entirely — it isn't even told GIFs exist — until the cooldown elapses, then it quietly comes back. There's also an editable reminder line that nudges the character to space GIFs out on its own while the tool is available.
  • Image pacing (AFK messages). Turn on Settings → AFK Messaging → Image Generation → Pacing guard and set a percentage. On each out-of-the-blue text, that's the chance the character is even offered the camera — the rest of the time it just sends text and never knows a picture was possible. Lower the percentage for rarer, more meaningful selfies.
  • Both are off by default and change nothing unless you switch them on. Every knob is covered by Restore Defaults, Export, and Import.

🎭 NEW: The Narrator Now Has Two Modes — Free Roam & Storyteller

The Narrator (Director) used to run everything off one giant, overstuffed instruction set. It's now split into two focused roles, and it switches between them automatically depending on whether you're in an active campaign.

  • Free Roam — when no campaign is running, the Narrator plays an open, reactive world: it animates NPCs, tracks consequences, and lets plot hooks grow out of what you do, with no scripted agenda.
  • Storyteller — the moment a generated campaign is underway, the Narrator switches to running the story: it follows the active Canto's objective and cast, and drives the scene toward its resolution.
  • No More Story Lag. Cantos used to only advance after the character "reflected," which could leave you waiting. Now the next Canto begins the same turn the current one wraps — resolve the scene, and the story moves on immediately with its new scene card.
  • Campaigns actually end now. When you finish the final Canto, the campaign is properly marked complete: you get a "Campaign Complete" card, and the Narrator gracefully drops back into Free Roam so open-ended play continues past the ending.
  • Two editable prompts, not one. Settings → Virtual Director now has a separate editor for the Free Roam and Storyteller roles, each with its own default. Restore Defaults, Export, and Import all cover both. (Heads up: this replaces the old single "Director Evaluation" prompt, so any custom wording you'd saved there needs re-applying in whichever of the two roles you want it.)
  • You can now see the Narrator think. The Narrator's real reasoning now shows up under a "Thought Process" expander on its messages — the same one your main character already has.
  • Sharper, less repetitive reasoning. Both roles now get a structured thinking guide (read the scene → check it isn't overstepping your character → weigh whether silence is better → pick who acts), so its behind-the-scenes reasoning is genuine analysis instead of parroting the instructions back to itself.
  • Campaign scenes are places to play, not checkpoints. When a story is running, the Narrator is instructed to longer rush you to the next scripted beat. Its objectives are now things you earn through play — walk into the casino to meet someone and you can soak up the room, play a few hands, and draw their eye by winning big, instead of having them shoved at you at the door. It is meant to treat each goal as a small problem you can solve creatively and gives you room to wander and do things the script never planned for.

🔔 Fixed: Replying to AFK Notifications Actually Works Now

Replying straight from an AFK (proactive) push notification was completely dead — you'd type a reply, hit send, and nothing happened: no answer, no trace of your message anywhere. That's fixed.

  • Your reply now sends. Type into the notification's Reply box, hit send, and the character actually responds — right there in the notification, Discord-style, with your bubble and their reply stacked in the thread.
  • It's saved. Both your message and the character's response now land in that character's Roleplay Discussion, so the conversation is there waiting when you open the app.
  • Keep going from the shade. The Reply button stays on the follow-up, so you can go back and forth without ever opening the app.
  • One face, not two. Fixed the character's reply notification showing two profile pictures (the app icon and the character's avatar). Replies now keep the clean single-avatar conversation look, just like the original message.

(Android only — this is a phone notification feature.)

1.14.0

July 3, 2026

📸 UPDATE: Your Characters Got Hands on Cameras and This Shit is Fire!

The massive feature of this update is a total camera rollout across the entire app. Your characters can now dynamically take, review, and send pictures completely on their own—whether you're in the middle of a heavy roleplay, chilling out-of-character, or getting a random text while you're away from your phone. This is achieved by letting them put their paws on Nano Banana API, and handing them a custom tool-call they can abuse to send you selfies and shitposts. NOTE: This currently supports only Nano Banana models, thus an API key or proxy providing Gemini models is required.

  • In Roleplay Discussions: Enable it in Settings → Roleplay Discussion → Image Generation.

  • In Regular Chats: Turn it on in Settings → Chat & Memory → Image Generation. It works exactly like the OOC camera: the character snaps a pic when it fits, reviews its own work, and sends it as a follow-up. It has its own independent model, resolution, and prompts. (Note: Single-character timelines only for now).

  • In AFK Notifications (Android): Turn it on in Settings → AFK Messaging → Image Generation. When a character texts you out of the blue, they can now attach a picture straight to the notification—like getting a random selfie in a DM! There's no review step here; they write and snap in the same breath.

  • You can override this per-character in the rail's Notifications menu.

  • Any picture sent this way saves to the Roleplay Discussion. Replying straight from the notification carries the picture into the thread!

🖼️ How it works:

  • Self-Review & Perfectionism: When taking a pic in chat, the character actually looks at the generated image before sending it to check for "appearance drift" (making sure they don't have the wrong hair, height, etc.). You can set their "review turns" to let them be a perfectionist, and the typing line will show "is taking a picture…" while they work.

  • Read While It Cooks: You don't have to stare at a blank screen. The character's text posts immediately so you can read it while the image generates in the background.

  • Smart Reference IDs: Characters use short IDs to reference existing images.

  • No Ghosting: If an image fails or gets blocked by a provider, (because I know what kind of men you are) the character won't just go silent. They’ll drop an editable, in-character line like "ah, my camera glitched" and keep the conversation moving.

  • Full Customization: You control the instructions. Four fully editable prompt boxes let you rewrite exactly how the camera is explained to your character.

  • Downloads: Tap any finished image to view it fullscreen, and use the new download button to save it straight to your gallery.

🍌 Bring Your Own Banana: Third-Party Image Providers

The camera isn't locked to Google. You can now point the image generator at any provider that serves Nano Banana-style image models — OpenRouter, NanoGPT, or your own custom endpoint — instead of only Google direct.

  • How to set it up: Head to Settings → Providers & Keys, drop your key on the provider you want (e.g. OpenRouter), and use the new "Image models" box on that provider's card to add an image model id (like google/gemini-2.5-flash-image-preview). Hit Fetch to pull the provider's list — it auto-filters down to the image-capable ones so you're not scrolling forever.
  • It shows up everywhere the camera lives: Once added, your third-party image models appear in the model dropdowns for Roleplay Discussion, Chat & Memory, and AFK Messaging image generation, labeled by provider (e.g. OpenRouter · google/gemini-2.5-flash-image-preview). Pick whichever you like for each surface independently.
  • Mix and match freely: Run your roleplay text on one provider, generate pictures on another, and keep embeddings on Google — each uses its own key. Your existing Google image models keep working untouched; nothing you had set changes.
  • Note: aspect ratio and resolution are exact controls on Google's own models; on third-party providers the aspect ratio is passed along as a strong hint instead.

⚡ Wi-Fi Sync for Discussions

  • Cross-Device Photos & Chats: Wi-Fi Sync now correctly carries Roleplay Discussions across devices! Photos are shared over your link on-demand, fixing the issue of broken/empty image boxes.
  • No More Empty Twins: Discussions no longer split into empty twins when hopping devices. Your history lands exactly where you're looking.

Update both devices to this version to ensure pictures cross over smoothly!

🐛 Crucial Bug Fixes & UI Polish

  • False API Warnings Fixed: Using Non-Gemini providers (OpenRouter, Anthropic, Ollama, etc.)? The app will no longer throw a red "Set an API key first!" error if your Gemini key is blank. Popups will now accurately name the exact provider key you're missing.

  • MAX_TOKENS Parameter Added: OpenAI compatible providers now respect the MAX_TOKENS parameter. Find it in the Providers & Keys section.

  • Roleplay Discussion UI Clean-up:

  • Typing / in an OOC discussion no longer incorrectly suggests main roleplay commands that don't work inside RP discussions: (/director, /reflection, etc.).

  • The in-chat model dropdown and timeline bar model name now accurately reflect and change the model you are using for that specific OOC chat.

  • Fixed a bug where the model picker would show the wrong model on a fresh launch.

  • Desktop Settings Tab: On PC, the Settings window now remembers your last-viewed tab instead of constantly snapping back to Chat & Memory.

1.13.2

July 1, 2026

New "Roleplay Discussion" — talk to your characters out-of-character, like DMing a friend. Every timeline now has a companion chat where the fourth wall is down: you and your character step outside the story to talk about it — theorize where the plot's going, ask what they were really thinking in that scene, or just chat casually. Open it from a timeline's long-press (or right-click) menu → "Roleplay Discussion". It looks and works like a normal chatroom, with a back arrow to return to the roleplay. It deliberately runs a much lighter brain than the main roleplay: no importance/tension scoring, no reflections, no Director, no Overseer, no vectorization — it simply pulls your recent discussion messages plus a slice of the roleplay for context. It does still read the character's card and the timeline's knowledge graph, so the character stays themselves and remembers who's who — it just won't invent new lore from these side-chats. Available on both phone and desktop.

  • Messages are timestamped, Discord-style. Each bubble shows the time it was sent — just the time if it's today, "Yesterday at …" for yesterday, or the date for older messages — and the character is aware of these timestamps, so it notices when it's been a while and reacts naturally ("morning!", "been a few days!"). Only your discussion messages carry timestamps now — the roleplay context pulled in for background no longer does, which stops characters inventing fake times and dates. The character is also told the current date and time (with the day of the week) each turn, so it actually knows what hour it is and can tell how long you took to reply ("took you a while!", "up late?").
  • Proactive (AFK) messages now live here. When a character texts you while you're away, that message is now saved into its timeline's Roleplay Discussion automatically — every time, whether or not you have the "4th Wall Break" embed-into-chat option on. (That setting decides whether you want AFK messages embedded into your main chat, not OOC one.) So your characters' out-of-the-blue messages finally have a permanent home instead of vanishing after you read the notification. (The existing embed-into-the-roleplay behavior is unchanged and still optional.)
  • Reply to a character right from the notification (Android). Like replying to a Discord DM, you can type a response straight into the proactive message notification without opening the app — your reply is saved and the character writes back as a fresh notification, so you can have a whole back-and-forth from your lock screen.
  • Snappier replies. Roleplay Discussion now reuses the unchanging parts of its context (the character's reference images and the slice of roleplay it reads for background) between messages instead of rebuilding them every single time, so responses come back a bit faster — and it refreshes them the moment the roleplay actually moves on.
  • New settings, all in one place. A dedicated Roleplay Discussion settings page holds everything for these chats: its own system prompt (how the character behaves out-of-character), its own model / temperature / thinking budget (separate from your main roleplay, defaulting to a fast model), the message recall depth (default 50, up to 500), and how many recent roleplay messages and reflections to pull in as background context.

New /reindex command rebuilds a chat's memory from scratch — a lifesaver after data loss. If a timeline's Knowledge Graph ever gets corrupted, wiped, or half-lost (say, after a bad sync or a crash), you can now type /reindex in the chat box to rebuild it from the ground up. It walks the entire conversation from the very first message to the most recent one, feeding it to the Chronicler in batches of 10 messages so nothing is skipped, and then — once every message has been re-read — it runs a single Heavy Maintenance pass at the very end to organize, deduplicate and consolidate all the rebuilt nodes (this final cleanup only kicks in on longer chats of more than 100 messages, since short ones don't need it). Crucially, Heavy Maintenance runs once at the finish, never in the middle, so a 700-message chat re-reads all 700 first and only then tidies up — no wasted work. Like the other graph commands it holds a phone notification and wakelock for the whole run, so on Android you can lock your screen or switch apps and it keeps grinding away in the background instead of dying. It's a heavy, expensive operation (it re-reads your whole history through the AI), so it's meant for recovery rather than routine use. Works on phone and desktop.

You can no longer accidentally queue a second message while a character is still replying (desktop). On PC, pressing Enter while a character was mid-response would quietly fire off another message, letting you stack up a backlog the character then had to chew through. Now Enter simply does nothing while the AI is generating — the send button is already showing its stop icon during that time, and this closes the one remaining way to slip a message past it. Nothing else changes: you can still type freely while you wait, Shift+Enter still drops to a new line, and once the reply lands Enter sends as normal. Phone is unaffected.

Six taxonomy tags are now permanent and built into every character. When you build or edit a character, the Global Taxonomy Tags field now shows six gold, locked chips at the top — People, Places, Things, Feelings, Events and Intimate Events. These are always part of the taxonomy the Knowledge Graph clusters around: they can't be edited, deleted or accidentally typed over, and they apply to every character automatically — including ones you made before this update. The gold color and little lock icon make it obvious they're fixed scaffolding rather than your own editable text. Your own tags now live in the box beneath the chips, and Auto-Generate Tags has changed from replacing whatever was there to adding on top — it appends fresh tags to what you've already written and quietly skips any duplicates (and the six permanent ones), so you can run it repeatedly to grow your taxonomy instead of wiping it. Works the same on phone and desktop.

1.13.1

June 29, 2026

Vastly improved text contrast across both themes of the application for reading comfort.

The Archival Scholar (Knowledge Graph data viewer) now correctly switches color schemes between Light and Dark academia.

The Archival Scholar now shows every reflection a character has formed, neatly tucked away. When you open a character's Knowledge Graph and look at the protagonist's dossier, the "Chronicle of Realizations" used to only ever show the three most recent reflections — even if the character had formed dozens. Now it keeps the full history. To stop it from flooding the page, the whole list starts collapsed behind a tidy disclosure header reading VIEW REFLECTIONS with a "N reflections formed" count beneath it; tap it to expand and read all of them newest-first, tap again to fold it back up. We also moved the EDIT ENTITY button up so it sits directly below the entity's description instead of being buried at the very bottom past every relationship — so editing an entry is reachable without scrolling to the end. Works the same on phone and desktop.

WiFi Sync is much smarter about battery and data now. Two long-standing annoyances are fixed. First, your phone no longer re-syncs everything every single time you switch away from the app and come back. Before, just backgrounding and reopening the app kicked off a full reconciliation — re-checking every character, chat and setting — even when nothing had changed, burning battery and data for no reason. Now the two devices do a tiny instant "anything changed?" check on reconnect; if nothing's different, they skip straight to live and do no real work at all. A full sync only happens when something actually changed. Second, when your phone is backgrounded for a little while it now quietly pauses syncing altogether and picks back up the moment you reopen it — so it isn't holding a connection open in your pocket. Third, when there's no host to connect to, the app stops endlessly hammering the network: on the same WiFi it just waits quietly and reconnects the instant your PC reappears (no retry storm), and for a remote host it backs off gradually instead of retrying every 5 seconds forever. Net effect: faster app-switching, noticeably less background battery and data use, and reconnections that "just work" without the constant churn. No settings to change — it's automatic, on both phone and desktop.

Your settings and prompts now sync across your devices over WiFi, too. Until now WiFi Sync kept your characters, chats and memories in step between your phone and PC, but every settings page and prompt had to be set up separately on each device. Now your whole configuration travels with them: edit a system prompt, tweak the Director, retune memory or sampling, change your theme or User Profile on one device, and the change quietly lands on the other while they're paired — no exporting and re-importing files. It's last-edit-wins per setting, so whichever device you most recently changed a given option on is the one that sticks. You'll find a "Sync settings & prompts" switch in the Hub Sync page (it's on by default); flip it off on any device you'd rather keep configured on its own. Two things are deliberately left out and stay private to each device: your API keys (these never leave the device they're entered on) and the Local Model server address (your PC's 127.0.0.1 address would be meaningless on your phone). Everything else — every prompt, every slider, your profile and reference pictures, the Director's portrait — is kept in step. Works both directions between phone and desktop.

Your characters can now watch YouTube videos straight from a link. Just paste a YouTube URL into your message. As soon as a link is detected, a little banner appears above the message box reading "{Character} will watch your YouTube video!", and when you send it the character actually watches the video (picture and sound) and responds to what's really in it, instead of guessing from the link. While it's watching, the typing line at the bottom of the chat changes from "is typing…" to "is watching the video…" so you know it's taking the video in — this also shows when you attach a normal video file from your device. A few things to know: it works with Gemini models only (if you've got a non-Gemini model selected, you'll get a quick heads-up note in the chat and the link is just treated as plain text), the video needs to be public or unlisted (private videos can't be opened), and it's one video per message. Works the same on phone and desktop.

Trimmed an unused Google/Firebase component out of the Android app. The app no longer bundles Firebase Cloud Messaging — it was leftover scaffolding that never actually did anything (your proactive/AFK messages have always been driven by the on-device scheduler, not cloud push). Removing it makes the Android app a little smaller and leaner and drops a Google dependency, with zero change to how proactive messages behave.

Added a per-character Notifications menu. Long-press (or right-click) any character portrait in the left rail and you'll find a new Notifications option alongside Edit, Share and Delete. It opens a small panel with two settings that let each character behave differently from your global rules:

  • AFK Messages — choose Follow global (the default — behaves exactly as before), Always on (this character can text you even when AFK Messaging is switched off globally), or Muted (this character is removed from the AFK pool and will never send you a push notification). Muting only affects AFK messages — scheduled character alarms still go off.
  • 4th Wall Break — choose Follow global, On, or Off to control, per character, whether their AFK texts get woven into that chat's history. So you can keep the immersive "they texted me in real life" effect for one character while turning it off for another, regardless of your global setting.

Each option also shows what your current global setting is, so you always know what "Follow global" will do. Your choices are saved per character and travel with the character (including across WiFi-synced devices). Because AFK messages are a phone feature, this menu appears on Android only — it's hidden on the desktop app.

Under-the-hood code cleanup. Swept every compiler warning and analyzer hint out of the codebase: removed dead/unused code, replaced deprecated Flutter calls with their current equivalents, and tightened a few places where the UI touched the screen after an async wait. There are no behavior changes — the app just builds cleaner and is easier to keep healthy going forward.

Various other code optimizations and fixes.

1.13.0

June 28, 2026

Fixed Shift+Enter not making a new line in the main message box on desktop. Pressing Enter sends your message, and Shift+Enter is supposed to drop to a new line so you can write multi-paragraph messages — but in the main chat input it did nothing (it only worked in the "Edit Message" pop-up). Now Shift+Enter inserts a line break right at your cursor, exactly like everywhere else, and the numpad Enter key works the same way. Phone behavior is unchanged.

You can now export and import your settings to share configs with other people or keep your own backups. Every settings page (User Profile, Interface, System Directives, Chat & Memory, Services, Knowledge Graph, The Overseer Engine, Virtual Director, Group Chat, AFK Messaging, Clock AI, Alarm AI and Local AI) gets two new buttons in its top bar: Export (the upload icon) saves just that page's options — every parameter, prompt and selector — to a small .json file, and Import (the download icon) loads one back in. There's also a brand-new Backup & Sharing section in Settings with Export all settings / Import all settings, which bundles every page at once into a single file — perfect for moving to a new device or making a full backup. Your profile picture, the Virtual Director's portrait and your visual reference images are tucked right into the file, so pictures travel with the config and reappear after import on any device. Importing only changes the settings that are actually in the file and leaves everything else alone, so you can safely drop a friend's prompt set on top of your own setup. For your safety, API keys and your Providers & Keys page are never included in any export — shared files can be passed around freely without leaking your credentials, and whoever imports simply uses their own keys. Works the same on phone and desktop.

Fixed the Create New menu overflowing off the bottom of the screen. The list of options (Build Character, Import Character, Import ST Card, Import Timeline, Import Story, New Group Chat) had grown long enough to spill past the bottom edge — showing a striped "overflow" warning on desktop and clipping the last buttons on phone. The menu now scrolls: it sizes itself to fit whatever space is available and you can scroll the options when they don't all fit, so nothing gets cut off no matter how many entries the menu holds.

Added a Dark Academia theme. Head to Settings → Interface and you'll find a new Theme switch at the top: Light Academia (the original warm parchment-and-gold look, still the default) or Dark Academia. Dark Academia recolors the whole app — dark marble backgrounds in the chat, character rail, drawer, top bar and message input, plus a dedicated dark settings backdrop, with white text throughout. The gold trim (icons, rings, dividers, picture frames, the ivy flourishes) stays gold so it reads with strong contrast against the dark marble, and the app's green/teal highlight color (selections, switches, sliders, buttons, the "+" on the rail) turns to gold in dark mode to match — Light Academia keeps its original green untouched. The message paper stays pale so your typing stays comfortable black-on-white, and the illuminated drop-cap letters keep their full color. The switch is instant — no restart — and your choice is remembered between launches. It also shows up in this page's Restore Defaults so you can snap straight back to Light. Dark Academia now reaches deep into the settings too: the whole Settings panel (and the desktop two-pane settings window), every text box, image-upload area, dropdown and pop-up menu, plus the Create New menu and the build-character glow, all switch to a near-black "amoled" finish with gold section headings instead of the old green/teal — and toggling the theme repaints any settings page you're already on instantly.

Overhauled chat attachments. You can now attach up to 10 files to a message (the limit was advertised as 10 but the + button was still cutting you off at 4 — fixed). The preview strip above the chat box is now a single Discord-style row that scrolls sideways when it fills up, instead of stacking into a cramped two-row grid. The little "remove" button on each attachment now wears the app's gold finish instead of the old red X. Best of all, attachments are now tappable to view full-screen: tap any image — whether it's still waiting to send or already posted in the chat — to open a full-screen viewer where you can pinch to zoom and swipe between all the images in that message; tap the background, swipe down, or hit the gold ✕ to close. Tapping a non-image attachment (audio or other files) opens it in your device's default app. Works the same on phone and desktop.

Fixed in-app updates on Linux. The built-in updater now installs updates reliably on the Linux (AppImage) build. Previously the update could download and verify, then fail at the last step with "Installer failed to launch" whenever your AppImage lived on a different drive or folder than the app's data (for example in a temporary folder, on a USB stick, or under /opt) — and in some launch modes it would run the new version once but quietly revert to the old one next time. Now the new version is dropped cleanly over your existing AppImage wherever it lives, the swap happens atomically so a half-written file can never brick the app, and the app relaunches into the new version. The update also adds The Loup Frères Island to your applications menu with its icon, and that menu shortcut always points at the latest installed version. If the updater can't tell where you launched the app from, it installs the new version to a managed location and shows you exactly where it put it so you can remove the old file. Windows and Android updates are unchanged.

Fixed exported Overseer stories dragging the source timeline's Director notes along with them. The Export Story (JSON) button was bundling the Director's running notes (and hidden knowledge-graph state) into the story file, so importing that story as a fresh timeline started it pre-loaded with notes from the chat it came from — not the clean slate a brand-new story should be. Story exports now contain only the raw blueprint (acts, cantos, NPCs, grounding); the Director layer is left out. Importing a story always starts clean, and as a safety net, even older story files that still contain those notes will no longer carry them in. Full timeline exports are unchanged — they still keep Director notes so a resumed timeline preserves its continuity.

Fixed markdown formatting breaking on the very first message of a timeline — the one that gets the big illuminated drop-cap letter. If you opened a scene with something like *It was a rainy day*, the first letter was lifted out to become the fancy drop cap, but the rest of the line printed with its raw asterisks showing ("It was a rainy day") instead of turning italic. The wrapped text beside the drop cap now renders inline markdown just like every other message, so *italics*, **bold** and ++underline++ work on that opening line too.

1.12.6

June 25, 2026

Fixed the red "indexing" pulse landing on the wrong character. While a character's knowledge graph is being indexed, a glowing red ring appears over its rail icon — but ever since the old compass RP button was removed from the character rail, that ring was drawing one slot too low, circling the character below the one actually being indexed. The ring now lines up squarely over the correct character.

Timeline exports now carry the attached Overseer story. Previously, exporting an Overseer-driven timeline saved your chat, memories and knowledge graph but quietly dropped the whole macro-story bolted onto it — the act/canto blueprint, which exact act and canto you were paused on, and the Director's running notes. Re-importing left you with the conversation but no story scaffold, no idea where in the arc you'd stopped, and the Director starting from a blank slate. All of that is now written into the export and restored on import, so a re-imported timeline resumes on the exact same act and canto with its Director notes intact. The in-chat scene title cards (the "Act 1 — The Awakening" style headers) are preserved too, so they reappear in the rebuilt history instead of vanishing. Older export files still import fine; they simply have no Overseer data to restore.

You can now export an Overseer story to a file and import it as a brand-new, ready-to-play timeline. The Overseer page already had a "Export Story" button that wrote a Markdown summary for reading; it now also offers an Export Story (JSON) button that saves the full, re-importable blueprint. To bring one in, pick a character, tap the + on the left rail, and choose Import Story — the story drops in as a fresh timeline under that character, rewound to the very start (Act 1) and ready to begin. Great for sharing a story you generated with someone else, or replaying the same arc with a different character.

Fixed a character's "reflection progress" resetting to zero when you export and re-import a timeline. The hidden meter that tracks how much emotional weight has piled up since the last reflection (and the matching Director meter) was never written into the export file, so a re-imported timeline always started cold at 0 accumulated points — meaning your character could be moments away from a big realization, but after a round-trip through export/import it would have to build all that tension back up from scratch. Both meters are now saved in the export and restored on import, so a re-imported timeline picks up exactly where it left off. Per-message importance scores and the saved reflections themselves were already preserved; this fills the last gap. (Older export files made before this fix simply come in at 0, same as before.)

Added a "Max Reflections in Prompt" slider under Settings → Chat & Memory (in the Smallville memory section). This controls how many of the character's most recent realizations ("The Story So Far") get fed back into its prompt each reply. It was previously fixed at 3; it now defaults to 5 and can be set anywhere from 1 to 20 — turn it up to give the character a longer memory of its own personal growth, or down to keep prompts lean.

1.12.5

June 24, 2026

Heads up: certain updates can reset your AI settings to their new defaults. Some default values and built-in prompts change in ways the app needs everyone on, so on first launch the affected settings (prompts, models, memory/lore tuning) are restored to factory defaults. If you'd carefully hand-tuned any prompts, make sure you've kept your own copy — your characters, chats, group chats, user profile, API keys and license are all left untouched. THIS UPDATE DOES NOT RESET ANYTHING. However, going forward, whenever an update does this you'll now see a clear red warning at the top of the update window before you install, so you can back things up first.

Tuned two memory defaults for better recall out of the box. Max Lore Chunks now defaults to 6 (was 2), so characters pull in more relevant background lore per reply, and the Relevance Multiplier now defaults to 3 (was 5), so retrieved memories lean a little less hard on topic-matching and give recency and importance more of a say. Both are still fully adjustable under Settings → Chat & Memory. This change does not take effect for users who already saved their settings at least once; only for out of the box app behavior.

Cleaned up the AI settings. The old API & Memory page is now called Chat & Memory, and the redundant Gemini API key box has been removed from it — your keys now live in one place only, under Providers & Keys (nothing to re-enter; your existing key is untouched). The AI Settings list is also reordered to be easier to navigate: System Directives sits at the top, and Services now sits just above Knowledge Graph. The Overseer Engine gets a new quill-and-parchment icon.

Merged the Group Chat Primer into the Group Chat settings page. The primer you edit for group chats used to be its own separate entry; it's now a section on the Group Chat page, so all group-chat options live together. Editing, uploading a .txt, and Restore Defaults all work exactly as before.

Added a visible app version number in Settings. The build you're running is now shown at the bottom of the settings list (and in the corner of the settings window on PC), so it's easy to tell which version you have.

1.12.4

June 23, 2026

Fixed group chat characters confusing each other's messages for their own. In a group with two or more characters, each character's replies were being fed to the next character as if that character had written them (sent into the MODEL schema) — so when it was, say, Aria's turn, the AI would look back at Kael's last line, decide it since they are both MODEL, it had "accidentally" been roleplaying as the wrong person, and lurch into an identity crisis or start speaking and acting for everyone at once. Each character now reads the conversation strictly from its own point of view: the payload dynamically juggles whose message belongs to the MODEL schema and bundles everything else under USER, and every other line — yours, the Director's, and the other characters' — is clearly labelled with the speaker's name (e.g. "[Amaterasu]: …") inside the USER schema when it's not their turn. Characters stay in their own lane, stop hijacking each other's dialogue, and no longer break character thinking they hallucinated who they are. Solo (single-character) chats are unchanged.

Added a proper Group Chat Primer with a sensible default — and actually applied it. Group chats use a separate global primer from your normal one-on-one chats (editable under Settings → Group Chat Primer), but it was previously blank and, due to a wiring bug, never actually sent to the AI even if you filled it in. It now ships with a ready-made default that tells each character who they are, how to read the "[Name]:" labels, and to only ever speak as themselves — and it's genuinely used during group turns. You can freely edit it, upload your own, or hit Restore Defaults to bring the default back.

Fixed AFK (Proactive) messages and Character Alarms failing to generate when set to a custom AI provider. If you pointed Proactive Messaging or a Character Alarm at one of your own custom OpenAI-compatible endpoints, the message would generate fine while the app was open (and on "Force Trigger"), but silently fail to arrive on its own — the background attempt crashed with an "Unknown provider id" error because the background isolate task didn't know about your custom providers. The background workers now load your custom endpoints from foreground to isolate just like the foreground app does, so alarms and AFK messages on a custom provider go through. Built-in providers (Gemini, OpenAI, Anthropic, OpenRouter, NanoGPT) and local models were never affected.

Removed Freestyle RP. The app has outgrown the old "Freestyle RP" mode, so it has been retired completely. The compass RP button is gone from the left character rail, the Freestyle RP option no longer appears when you tap the + to create something, and the Freestyle RP Rules page has been removed from Settings (on both phone and PC). Any freestyle sessions you had previously started are automatically cleared from the app the next time you open it. Your character chats and group chats are completely unaffected — this only removes the standalone freestyle mode.

1.12.3

June 23, 2026

Added a SillyTavern card importer. Tap the + in the character rail and choose Import SillyTavern Card to bring a character over from SillyTavern (and most other card sites) in one step — point it at either the character's .png card or an exported .json. The app reads the character data hidden inside the image, then uses AI to translate that card's all-in-one text into Loup Frères' separate fields: appearance, physical traits, personality, world/scenario lore, character backstory and worldbook entries, and the director/character instructions are each sorted into the right place for you. If you import a .png, the card artwork is automatically set as both the character's profile picture and a visual reference, so the character is ready to use the moment it opens. A progress popup walks through the steps (unpacking the card, translating, building the character) while it works — with a Cancel button to abort the translation at any time — and the result drops in pre-filled to the character editor so you can review and tweak anything before saving. Imported lore is broken into separate retrievable entries (rather than one giant block) so the character's memory can pull the right facts at the right time. The card's opening greeting messages are intentionally left out, since characters here don't use a fixed first message. The converter has its own entry under Settings → Services → "SillyTavern Card Converter", where you can edit the translation prompt and choose its model and generation settings (it defaults to Gemini 3.5 Flash).

Fixed KG entities from one timeline bleeding into another. Each character's timelines are meant to keep their own separate cast of people, places, and things, but the knowledge graph's "live memory" pass was quietly searching every timeline when it looked for entities that might already exist — so while you were playing in one timeline it could surface names that only ever appeared in a different one, and in rare cases that could even seed a phantom duplicate of a foreign character into the wrong timeline's memory. The search is now correctly walled off to the timeline you're actually in (plus anything shared globally), so a name like "Aurelius" introduced in one story will no longer haunt an unrelated one. Existing memory data was never merged across timelines and is unaffected; this just stops the contamination at its source.

Made the automatic deep "tidy-up" of the knowledge graph more reliable. Roughly every 100 messages the app runs a heavier consolidation pass that re-clusters and de-duplicates your memory graph. It used to fire only when the message count landed exactly on a multiple of 100 — but group chats and Director/NPC turns can add several messages at once and jump straight over that number (e.g. 99 to 101), silently skipping the cleanup for the next hundred messages. It now triggers whenever you cross a 100-message boundary, so the pass can't be skipped. (This is the same consolidation you can always force on demand with the /nodeorganize command.)

Updated the End-User License Agreement and Privacy Policy, and you'll be asked to read and re-accept both once on your next launch. Two things changed. First, the documents no longer claim the app is locked to Google Gemini — they now reflect that you can connect any supported provider (Gemini, OpenAI, Anthropic/Claude, OpenRouter, NanoGPT, your own custom OpenAI-compatible endpoint, or a fully local model), and they make clear that whatever you send goes straight to the provider you picked under that provider's own terms and privacy policy, with custom endpoints being at your own risk and local models sending nothing off your device. (The knowledge-graph memory still uses Google's embeddings regardless of your chat provider — that's now spelled out.) Second, the Privacy Policy now honestly discloses the new opt-in Bug Report feature: it explains that a report is only ever sent when you choose to send one, lists what it includes (app version, OS, locale, a timestamp, your description, and — only if you attach it — your debug log with API keys stripped out), names the private Discord channel it's delivered to, and is upfront that the debug log can contain your prompts and chat history. It never includes your email, License Key, or any device identifier. A new clause also makes clear that not setting up an API key is your responsibility, not a defect of the app.

Made the Bug Report log attachment safer by default. Because the debug log can include your prompts and chat history, the "Attach debug log" box is now off by default — you opt in only if you're comfortable sharing that — and the page and checkbox now say plainly what the log may contain instead of only mentioning that API keys are stripped. Your description and the basic app/OS info still send either way; nothing about how reports are delivered has changed.

1.12.2

June 22, 2026

Added Gemma models to the Gemini model picker. If you use a free-tier Gemini key, Google's open Gemma models (Gemma 3, the Gemma 3n variants, and Gemma 4) are generously available there — but the app's model selector previously filtered them out and showed only Gemini models. Any model slot that runs on your Gemini key — main chat, the Director, the Overseer, evaluators, the knowledge graph, Clock AI, Character Alarm, AFK messaging, and the rest — can now pick a Gemma model. They appear automatically in the Gemini list once your key is set (no app update needed when Google adds new ones), grouped below the Gemini models and ordered by version and size.

The two Gemma generations are handled correctly for their different capabilities. Gemma 4 is a full-featured reasoning model: it keeps your system/persona prompt, supports JSON output, and its thinking/reasoning is captured and shown separately just like Gemini 3 — so it works as a drop-in for any slot. Gemma 3 (and 3n) are older and lack those features on the Gemini API, so for them the app transparently folds the system prompt into the conversation, relaxes JSON-only mode to plain text, and hides the thinking controls. Gemini models behave exactly as before.

Added a "Report a Bug" page (Settings → Support & Feedback, on both phone and PC). Describe what went wrong, leave the "Attach debug log" box ticked, and tap Send — the report goes straight to the developers, with your debug log attached so the cause is usually right there. API keys are stripped from the log automatically before it's sent. If sending isn't possible (no connection, or your build doesn't have a reporting channel set up yet), the app opens your share sheet so you can pass the report along manually, and a "reach us on Discord" link is always one tap away.

Added background diagnostic logging for AFK (Proactive) Messaging, to fix the long-standing problem where AFK messages work when you tap "Force Trigger Pipeline" but silently fail to arrive on their own in the background. Until now there was no way to see why a background attempt failed — that activity happens in a separate part of the app whose logs were thrown away. Turn on the new "Background diagnostic logging" switch in AFK Messaging settings and the app will record a full trace of every background attempt — including connectivity status, whether the feature was seen as enabled, and any crash — to a file you can View, Share, or Clear right from that page. The quickest path to a fix: enable it, leave the app in the background for a while, then send it to us via Report a Bug.

1.12.1

June 22, 2026

Fixed AI reasoning ("thinking") tags leaking into output from custom-endpoint and local models. When you ran a feature on a custom OpenAI-compatible endpoint or a local model (Ollama/Kobold/Gemma), the model's internal chain-of-thought — wrapped in <think>…</think>, <thought>…</thought>, or Gemma's <|channel>thought markers — was being shown verbatim instead of stripped. The main chat already cleaned this up, but every other generation path did not: Proactive Messaging notifications, Character Alarm messages, the Narrative Director, the Clock AI, auto-naming, image transcription, lazy character auto-complete, the memory/baseline evaluators, and the knowledge-graph passes all surfaced (or tried to JSON-parse) the raw reasoning. Native Gemini/Anthropic models, which already return reasoning in a separate field, are unaffected.

Fixed custom-endpoint and local models silently reverting to the default Gemini model. If you set the Narrative Director (or AFK/Proactive Messaging, or Image Transcription) to a custom-endpoint model — e.g. a "Provider · model" entry like GLM via your own API proxy — saving appeared to snap the selection back to Gemini 3.1 Pro the next time you opened the page. The selector was being passed through a resolver that only recognised Gemini cloud models, so any custom-endpoint (provider::model) or local model was discarded and replaced with the default. The Director still ran on your chosen model on the first save (it reads the saved value directly), but re-opening the page showed Gemini, and saving again from that screen would then overwrite your real choice — and Image Transcription used the wrong (reverted) model immediately, since it resolves at run time. The resolver now validates against the full available-model list (Gemini cloud + remote providers + local) and never strips a custom-endpoint selection, so your chosen model both displays and persists correctly everywhere.

1.12.0

June 21, 2026

Fixed non-Gemini models being sent to Google's servers. Several features — the knowledge-graph Chronicler and its maintenance/auditing passes, taxonomy tag generation, image transcription, lazy character auto-complete, and the Character Alarm AI — were always calling Gemini directly, ignoring the provider you picked. If you set one of these to an Anthropic, OpenAI, OpenRouter, NanoGPT, or custom-endpoint model, the request was wrongly POSTed to Gemini and failed with a "not found for API version v1beta" 404. They now all route through the provider layer, so the model you choose is the provider that's actually called. Your sampler settings (temperature, top-P, top-K, JSON mode, thinking budget) are preserved, and Gemini models are unaffected. Embeddings remain Gemini-only by design.

Stopped API keys from leaking into the debug log. Some provider errors include the full request URL, which embeds your key. The Terminal/debug console (and any log you share or export) now automatically redacts keys — Google AIza…, OpenAI/Anthropic sk-…, and key=/Bearer values are replaced with <redacted>.

Added a "Restore default settings" button to every settings page, on both mobile and desktop. Each page's AppBar now carries a circular-arrow icon (tooltip "Restore default settings"); tapping it asks for confirmation, then resets just that page back to its factory defaults — every other page is left untouched. Covered pages: User Profile, Interface, API & Memory, Knowledge Graph, The Overseer, Virtual Director, Services, Freestyle RP Rules, Group Chat, Group Chat Primer, System Directives, AFK Messaging, Character Alarm AI, Clock AI, and Local AI. (Providers & Keys and Wi-Fi Sync are intentionally excluded, since "defaults" there would mean wiping your API keys or unpairing devices.) The desktop Group Chat pane, which has no AppBar, gets an inline "Restore defaults" button instead.

Added clickable help tooltips to the character creator. A small "(?)" icon now sits next to each major field label — Name, Personality, Taxonomy Tags, Visual Description, Physical Capabilities, Lorebooks, Static Lore, both Special Instructions, the Evaluator Summary, the KKG Vault, and Knowledge Graph indexing. Tapping it opens a short, plain-language explanation of what the field does and how to fill it well (e.g. why Taxonomy Tags want ~20 diverse tags for Louvain clustering, how Lorebooks differ from Static Lore, or when to leave Visual Description empty). Works identically on Android touch and Windows.

Enlarged the empty "Add Visual Ref" tap target in both the character creator and the user profile page. The placeholder looks the same (centered icon + label, no visible box), but its clickable area now spans roughly half of the visual-reference box, making it far easier to hit on touch.

Chat image attachments on mobile now open the native Android/iOS photo picker (the quick "recent photos" sheet) for images and videos, instead of dropping you into the deep filesystem browser. Desktop keeps the full file picker (which also covers audio files). Note: selecting audio files on mobile now goes through the system file picker rather than the photo sheet.

Raised the per-message attachment limit from 4 to 10 (covers picking, pasting, and the on-screen warning).

Added plain-language explanations across the settings. The User Profile page now opens with a short note explaining it's the character you play, and the Display Name field explains that your name is used to identify you across the app and by the Director and Overseer — ideally matching the character you play. The Narrative Director page's description now spells out that the Director speaks only as third-party NPCs (so it never bleeds into your persona), plays impartial enemies and the world, and carries out the campaign written by the Overseer. The Overseer page clarifies that it only plans the arc — the Director must be enabled to actually enact it.

1.11.0

June 19, 2026

Added support for third-party AI providers and proxies - OpenAI, Anthropic (Claude), OpenRouter, NanoGPT, and any custom OpenAI-compatible endpoint. Set a key per provider in the new Settings > Providers & Keys page, fetch or type the models you want, and they appear in every model picker as "Provider - model".

Per-slot provider routing: each model slot can run on a different provider. Run roleplay on Claude Opus while the knowledge-graph memory engine keeps running on Gemini, or mix and match however you like.

Embeddings now use a dedicated key and always run on Gemini, independent of your chat model (leave it blank to fall back to your main Gemini key). The memory index requires Gemini embeddings. Updated to the latest generally-available embedding model; no action needed and your existing memories stay valid.

Generation failures now show the reason directly in the chat - invalid key, wrong model, provider or connection errors - instead of failing silently. Makes setting up a new provider far easier to troubleshoot.

Model slots that need a strong reasoning model (main generation, reflection, knowledge-graph extraction/auditing/chronicler, overseer, director) now show a brain icon with a tooltip recommending a flagship model like Gemini 3.1 Pro or Claude Opus 4.8.

The main character generation pipeline now explicitly applies your configured safety settings on every request.

Device sync is now zero-configuration on a shared Wi-Fi network. Set one device as the Host and the others to Client - clients automatically discover the host and connect with no IP address to type or remember. Discovery survives the host's IP changing, so a router reboot or DHCP reshuffle no longer breaks sync.

Windows hosts now detect when the firewall is silently blocking incoming connections (the usual cause of "the host is running but my phone can't connect"). The Hub Sync page shows the status and offers a one-click fix that adds a permanent allow-rule after a single Windows admin prompt.

Added QR-code pairing for connecting across different networks (for example over Tailscale), where automatic discovery can't reach. The host shows a QR code; scan it from the other device to fill in the address instantly - no more typing 100.x.x.x addresses by hand. Manual address entry remains available as a fallback.

1.10.4

June 15, 2026

1.10.3

June 12, 2026

1.10.2

April 26, 2026

1.10.1

April 26, 2026

1.10.1

April 26, 2026

Fix: synced characters' images now save to the canonical images/pfp and images/refs directories instead of images/sync. A one-time auto-migration relocates files from the old location and repairs stored paths in characters.json and chat sessions, so previously synced characters render correctly. Removed unused updates/ and empty sync/ directories from the data folder.

1.10.0

April 25, 2026

Build support for Linux. Made safer AppData directories.

1.0.8

April 25, 2026

All platforms: Added the ability to host a local server and connect secondary devices to quickly synchronize data across clients. The server is self-hosted with a click for full privacy. Your data stays entirely local.

Export timeline now correctly exports all timeline data (Vectors, Knowledge Graph nodes and edges, Memories, Reflections, Plans) rather than just messages.

Reworked data paths on Windows and Linux. Data is no longer dumped loosely into the Documents folder, but instead saved into a dedicated subfolder directory. Users may need to manually organize their data for the first time. I apologize for the inconvenience.

Android: Added Alarm Clock functionality. Your characters can now text you with customized messages using Alarm Clock! They are snooze aware. Functionality includes setting custom notification sound and pre-caching. To assure offline functionality, the Alarm Clock pre-caches text to fire as soon as network is available and holds onto it. In case text is not generated, the alarm still fires without text. Supports the selection of singular or multiple characters per alarm.