Patch notes

Every release of The Loup Frères Island, newest first. The version you download from the download page is the top one. To hear about new releases in a feed reader, follow the patch notes feed.

1.25.1

October 22, 2026

Local embedding models

  • Local models can now embed your memories. Settings → Providers & Keys → Embeddings offers your local AI server next to the cloud providers. Pull an embedding model there (EmbeddingGemma 2 on Ollama is the one to start with: ollama pull embeddinggemma-2), press Fetch, pick it, and memory, lore search and the knowledge graph embed on your own machine with no key. Ollama, LM Studio and KoboldCpp all work. You can chat on one server and embed on another, or point a phone at the PC's server over Wi-Fi so both devices share one model. For models that want their own wording, the document and query prefixes are editable under Settings → Services. The EULA's embeddings clause changed to match, so it asks for your acceptance once. If you keep Gemini, nothing changes for you.
  • Switching models asks first. Gemini Embedding 2 stays the standard; every other model is a different vector space, and memories embedded by one model cannot be recalled by another. So every stored memory, lore passage and graph entry now remembers which model made it, only the ones made by your current model are recalled, and picking a model in a different space asks before anything happens: it tells you how many stored memories would need re-indexing and lets you switch and re-index now, switch and re-index later, or keep what you have. Nothing is ever re-embedded without your tap.
  • A red warning where it matters, with the fix one tap away. When a chat, a lorebook or a knowledge graph holds memories from a different embedding model than the one your device uses, a pulsing red banner says so in plain words, names both models, and re-indexes them when you tap it. Re-indexing runs in the background while you keep playing, shows its progress, pauses itself if the provider keeps failing, and picks up where it left off if the app is closed. The Embeddings card always states which model this device embeds with and whether every stored memory matches it.
  • Shared characters and worlds say which model embedded them. Characters, worlds and exported timelines name the embedding model their vectors came from. Importing one made with a different model than yours brings a note that names both models, counts what it would re-index, and offers to do it now; "Later" leaves the red banner on that character to remind you. Character Kitchen pages show "Matching vector space" in green when a character's memories were embedded with your model, and name the model with a re-index note when they were not. A chef publishing with a non-standard model is told the page will say so.
  • Two devices on different embedding models still sync cleanly. They no longer trade memories they cannot use, and no longer re-send every message on every connection because their vectors differ. Each keeps its own memories, text and everything else still syncs, and the Wi-Fi Sync page names both models and suggests pointing the phone at the PC's local AI server so the household shares one. Devices on the same model sync exactly as before.
  • Picture captions for memory (off by default). Turn it on under Settings → Services → Image Transcription and your Vision model writes a short caption of every picture a message carries, one you attach or one a character generates. The caption is embedded with the message, so a picture can be recalled by meaning on any embedding model, local text-only ones included, and it survives a re-index. The caption is never shown as the message; it costs one Vision call per picture-bearing message.
  • Your embedding model choice survives a settings reset.

1.25.0

October 22, 2026

Worlds

  • Run a campaign from one world. Turn on Campaign folder in a world's new Play settings, and all of its characters gather into one icon in your character list. Tap it to open the world's Starting Character. Hold it, or right-click it on PC, to jump to anyone else, edit them, or edit the world. Turn it off and everyone is back where they were. Sharing or publishing the world with its characters keeps its Starting Character.
  • Worlds can ask for the Narrator. When you publish a world to the Character Kitchen, tick Require Narrator. When someone opens a chat with one of its characters while their Narrator is off, a note offers to turn it on with one tap. It leaves by itself after a few seconds, or swipe it away. Their Narrator is never turned on for them.
  • World lore gets its own budget. World Lore Chunks sets how many passages come from a character's world, apart from Max Lore Chunks for the character's own lorebook (Settings → Chat & Memory → Lorebook). The Narrator and the Overseer each have their own pair too. Each starts at 6 world passages, so characters who live in a world now get more of it. If you set a lore count to 0 to turn lore search off, set its World Lore Chunks to 0 too.
  • The Narrator knows more of your world. It now reads the world's Static Lore, keeps searching the lorebook while Full Lorebook Injection is on, and reads 6 passages of the character's own lore by default instead of 2.
  • The Overseer writes stories with your world in mind. It now reads the world's Static Lore and lorebook, not only the character's.
  • Make a world's lorebook searchable without rebuilding its graph. Worlds have a Vectorize Lore button now, like characters.
  • Character Kitchen: world pages show whether the world recommends the Narrator, uses a campaign folder, and who its Starting Character is.

Character Kitchen

  • Downloaded lore is searchable right away. Characters and worlds now carry their vectorized lorebook in the file, whether you publish them to the Kitchen or share them yourself. Whoever downloads or imports them can search the lore at once, without pressing Vectorize Lore or spending their own embedding quota. Press Vectorize Lore before you publish: a lorebook you edited since its last Vectorize goes out without it.
  • Pages say how their lore can be searched. Beside the title, every character and world page now shows one of three lines: "Comes with a Knowledge Graph!", a yellow "No Knowledge Graph. Lore Vectorized and searchable.", or a red "No Knowledge Graph. Not Vectorized." Pages also say Requires Narrator when their world asks for the Narrator. The publish pages tell you which line you'll get before you publish. A page published before this update without a Knowledge Graph shows "Not Vectorized" until you publish it again.
  • See your page before it goes up. Publishing to the Character Kitchen now opens a preview first. It shows your page exactly as players will see it, your card as it appears in Browse, and your world's page when it goes up with the character. Nothing is sent until you choose Publish now. Keep editing takes you back with everything you typed. Updates and worlds published on their own get the preview too.

Knowledge Graph

  • Communities in the Constellation now stand apart as nebulae. Each community of two or more entries gathers into its own cloud of color, with open sky between it and the next, on PC and on phones. Entries that belong to no community drift in the space between. Community names no longer pile on top of each other: the bigger community keeps its name, and a smaller one shows its name as you zoom in.
  • Tap a nebula to zoom into it. The sky frames it so every entry in it is named, and dims the rest. While a nebula is too small on screen to pick out one entry, a tap anywhere on it zooms in; once you're in, taps pick entries again. Pan away, pinch out, tap the open sky or press RECENTER to leave, or close the nebula's label in the corner to go back to where you were. If an entry's card is open, the first tap only closes it.
  • Go straight from an entry or a community to its nebula. On an entry's card, tap the name of its community. In the Communities list, open a community and choose See it in the sky.
  • Entries from an attached World form their own nebulae instead of joining your community with the same number, and their card names the World's community.
  • The Constellation is lighter on your battery and smoother on big archives, especially on phones with fast screens. Zoomed all the way out, the threads between nebulae and the World marks step back so each nebula reads clearly.
  • If your device is set to remove animations, the Constellation now jumps straight to a star or nebula instead of gliding there. Touching the sky during a glide stops it where it is.

Roleplay

  • Steer the next reply with /guide. Type /guide followed by how you want the next reply to go, for example "/guide she finally loses her temper". Nothing is sent yet: a Guide chip appears above the message box, and your next reply follows it without the direction showing up in your own message. It works whether you send a message, regenerate, or continue, and regenerating that reply keeps the same guide. Tap the chip to change it, or × to drop it. /guide on its own clears it. In a group chat, add @Name to aim part of it at one character: "/guide keep it tense @Mira be cold @Tom be into it". Replies written under a guide get a small compass mark; hover it on PC, or hold the message on your phone, to see the guide. You can reword how the guide is put to the character in Settings → System Instructions → Guide Note.
  • Ask the Narrator for something privately. Type /narrator followed by your request, for example "/narrator a storm rolls in". It waits in a Narrator chip above the message box, and goes to the Narrator with your next message. The Narrator wakes up for it, decides how the world answers, and your own message is sent as usual. If a world character is holding the scene, they step back so the Narrator can answer (it may bring them right back). If your Narrator is off, the request waits until you turn it on. /narrator on its own still wakes the Narrator right away.
  • Leave the Narrator a note from the chat. Type /narratornote followed by your note, and it goes straight into the Narrator's notes for that timeline. Your note is kept until you or the Narrator remove it. You can see and edit it in Narrator Control.
  • Characters come with roleplay instructions out of the box. The Global Primer (Settings → System Instructions) used to start empty. Now it starts with a full set of directives: your character speaks in the first person, stays in character, never decides what you feel or do, stops just before the outcome of an action so you decide it, lets trust and romance grow at a believable pace, and thinks each scene through before replying. It also allows explicit adult content when a scene calls for it. Start a message with // to talk out of character. If your Global Primer is still empty, open it and choose Restore default. You can edit or clear it any time.
  • Group chats start from the same directives. The Group Chat Primer (Settings → Group Chat) now opens with the Global Primer's text, followed by the group rules it had before. If you've changed yours, choose Restore default to get the new one. This replaces your edits.

Group Chats

  • Spend time alone with one character in a group chat. Type /disable and pick a character from the list that pops up to send them out of the scene. They stop replying, and the others know they've stepped away. /enable lists whoever is away, so you can bring them back the same way. You can reword what the others are told in Settings → Group Chat.
  • Group chats keep going when you leave the app. On Android, switching apps or locking your phone during a group reply no longer makes every character after the first fail. They all answer, one after another, while the app is in the background.
  • Regenerate in a group chat redoes only that reply. The other characters' replies stay as they are, and you can swipe back to the old version the way you can in a one-on-one chat. Before, it threw away the whole round and asked everyone again.
  • Retry after a failed reply only asks the characters who didn't answer. The replies that did come through are kept.

Interface

  • Your own Character Library. The first entry in the Main Menu shows all your characters as cards, grouped the way your character list is: your folders, your campaign worlds, and the rest. Each card shows your tags, how many timelines you have with that character, when you last played, and whether it's your favorite, lives in a world, or is published in the Character Kitchen. Search by name, tag, world or folder. Click a character to see it large, with everything you can do from the character list (edit, favorite, share, publish, delete) and all of its timelines, newest first, including group chats it's in and your Live Chat. Click a timeline to jump straight into it, or start a new one. On phones, a character opens on its own page.
  • Click a portrait in the chat to see that character large, with all of their pictures: the portrait and every visual reference. Pick one from the strip along the bottom, or use the arrow keys. It works for you, group members and world characters too.
  • Pin a character's pictures beside the chat on PC. Press the pin in the big view, and a panel stays on the right of the chat with the picture you chose. Switch between the characters in the scene with the faces along its top, drag its gold edge to make it wider, and click the picture to see it full size. While it's pinned, clicking a portrait in the chat shows that character in the panel. It works with or without focus mode.
  • Focus mode on PC. The new button at the left of the chat's title bar, or Ctrl+Shift+F, hides your characters and timelines so the chat gets the whole window. Press it again to bring them back. The app remembers your choice.
  • Settings has a new hand-drawn vine background in the light theme, drawn for PC screens up to 4K with its own cut for phones.
  • On PC, double-click a message to edit it, the same as pressing its pencil.
  • Look up every chat command in Settings → Command Reference. It lists all the slash commands in alphabetical order, with what each one does and how to type it.
  • On PC, the round gold buttons in the chat's title bar (Settings and the others) are round again instead of stretched sideways.
  • The + menu is now the Main Menu, and it opens Settings and the Terminal from its last two entries.
  • On Android the app now fills your whole screen. The status bar and navigation bar stay hidden. Swipe in from the top or bottom edge to see them for a moment. If you'd rather keep them visible, turn off Full screen in Settings → Interface.

AI Models

  • Continue works on Gemini 4 and the newest Gemini models. On Gemini 3.6 Flash, 3.5 Flash-Lite, Gemini 4 (Argon included) and later, Continue used to fail with "Requests ending with a model turn are not supported", whether you used them through Google or a service like OpenRouter. It now finishes the reply. You can change how it's asked to continue with Continue Instruction in Settings → System Instructions.
  • A long think on Lazy Creator that fails is no longer paid for three times. When a thinking model spends its whole output budget thinking, or its connection drops after minutes of thinking, you now see the error right away. Before, the Lazy Creator quietly sent the same request up to two more times, and each attempt was charged and took just as long.
  • When the connection to a model drops partway through, the error now says how long it ran and whether the model was still thinking or already writing its answer.

Characters

  • Research lore from your own files. "Research lore for me" can now read documents you attach instead of searching the web: text, Markdown, Word, EPUB, and SillyTavern cards and lorebooks. Pick My files in the research window, on a character card or a world. Large sets are read in parts, and everything it writes goes into the Lorebooks field.
  • Bring a SillyTavern lorebook in exactly as written. When you import a card, you now choose how its lorebook comes in: word for word, or with the AI merging short entries into fuller passages. Entries that are always on in SillyTavern go to Static Lore. If most entries are only a line or two long, the import tells you and recommends merging, because in chat the character only gets the few passages closest to what's being said.
  • Import SillyTavern lorebooks on their own. A World Info .json file becomes a new world: use Import on the Worlds page, the + menu, or open the file. Upload lore on a Lorebooks field also takes lorebooks and cards now, and adds their entries to that character or world.
  • Import a card without AI. If you have no AI key set up, or want a card exactly as written, you can copy it as is. Its text isn't sorted into appearance, abilities and lore, so sorting it with AI is still recommended. And if the AI can't sort a card, you can now bring it in as written instead of starting over.
  • Large character cards imported with a Claude model no longer come in cut off.
  • A Deep Research run that fails now tells you why. The character or world page shows the reason when the run ends, or the next time you open the page. Before, the "Researching…" line just disappeared, and on Windows nothing said what happened.
  • When Google finishes a Deep Research run without writing a report, the error now says so and includes the agent's last note, instead of a generic "no readable report".

1.24.0

October 12, 2026

Characters

  • Imported and downloaded characters go straight into your character list. Import a character file or a SillyTavern card, open one from your files, or download one from the Character Kitchen, and they join your list right away, with no editor to save them from first. A note at the bottom of the screen names who arrived, with an Edit button if you want to look them over. Downloading from the Kitchen now leaves you in the Kitchen, characters and worlds alike, so you can keep browsing and pick up the next one.
  • Imported characters and worlds keep the lore you index for them. Indexing an imported character's or world's lore and then editing them before the app restarted could put their Knowledge Graph back the way it came in the file. What you build now stays. A Knowledge Graph that comes with a character also arrives whole: its entity types, pinned communities and search data used to be dropped the first time you saved them.
  • SillyTavern cards whose lore comes back from the converter as a list now import instead of failing.
  • The Narrator can no longer delete a note from, or reveal a secret in, a different timeline when it mixes up an id.
  • Banishing the character whose chat is open now closes that chat. Before, it stayed on screen and you could keep typing into a conversation that had already been deleted.
  • Banishing a character while one of their Deep Research runs is still going now warns you that its report will be lost. When the run finishes you no longer get a "Research finished" notification for a character who is gone.
  • Deleting a persona now reliably unpins every chat that was set to play as it. Before, those chats could quietly pick the deleted persona back up after the next message.
  • Dragging a character on the rail while a sync arrives no longer snaps it back to where it was.
  • Claude Haiku 4.5, Sonnet 4.5 and Opus 4.5 from Anthropic now work with thinking on. They no longer fail every turn at the default thinking budget, and new chats on Anthropic-only setups now get automatic titles.
  • Continue now works on Anthropic's newer Claude models (Opus and Sonnet 4.6 and newer), and on any Claude model with thinking turned on.
  • Deep Research no longer loses a run you paid for. A run that took longer than an hour, or finished while your phone was locked or your PC was asleep, could be written off and its report never collected. A busy Google server or a rate limit during the wait did the same. The app now keeps the run and collects the report once it is ready.
  • When Google stops a Deep Research run early, you now get what it found as a partial report, and the notification says it is partial. A cancelled run is now reported as cancelled right away, instead of as a timeout an hour later.
  • If a finished Deep Research report can't be saved to the lorebook, the notification now says so and the app tries again the next time it opens. It no longer says the report was added.
  • Researching a new subject for a character or world you last researched about two months ago or more no longer fails with a misleading error about your Google key.
  • When a character you banished from this device only comes back from another device, they rejoin their group chats. If another device you sync with still has the character, they return on the next sync together with their place in every group chat they were in, on both devices. On a device that doesn't sync, they leave those group chats along with everything else.
  • Deep Research reports no longer go missing. A report that finished while you had a new character or world open, or after you visited Manage worlds from a character card, could be wiped out by your next save. It now lands in the open lorebook field.
  • "Show me the research plan first" now works on worlds. Deep Research on a world shows its plan and waits for your approval before the full run is charged, the same as on a character.
  • The "Researching…" status on a character or world now clears when a Deep Research run fails.
  • Starting a second Deep Research run on a character or world that already has one going is now refused before anything is charged. Before, one of the two paid reports could be lost.
  • Indexing or vectorizing lore now uses only the text you had saved. Edits you type while it runs, and then discard, no longer end up in the knowledge graph.
  • Index and Vectorize on an imported card that hasn't been saved yet now save it first, and ask for a name if it has none.
  • Fixed a rare case where characters or worlds could disappear after the app failed to read its save file for a moment (for example while another program had it open on Windows). The app now reads the file again, and if it still can't, it saves nothing rather than write a shorter list over it.
  • Banishing a character now tells you when it fails and closes the dialog instead of spinning forever. If the character was already removed when the error happened, it no longer comes back the next time you edit.
  • If the app closed just as a Deep Research report was being saved, reopening the character or world page no longer adds the report to the lorebook a second time.
  • The message that approves a Deep Research plan is now editable. You'll find it as "Plan Approval Message" under Services → Lore Research, next to the other research prompts.
  • Reflections know who your character is. When a character reflects on what happened, it now sees its own name and Personality instead of a generic placeholder. This applies whether or not you edited the reflection prompts. The Reflection Prompt (Standard) and Overwhelmed Prompt (High-Tension) also gained a "Your current plan" line, so the character can see its plan before keeping or changing it. If either prompt in Settings doesn't show the new "Your current plan" line, press Reset on that prompt to get it.
  • Overwhelmed reflections that build up naturally now get the overwhelmed badge.
  • Reflections now use your reflection thinking settings. Most reflections, in single-character and group chats, were running with thinking off.
  • The reply that comes right after a reflection is now included in the next reflection.
  • Night shifts in life profiles: schedule blocks that run past midnight, like a 22:00–06:00 watch, are now kept when a profile is generated or edited (saved as two blocks, one on each day), so night-working characters are busy through their shift.
  • Life profiles for characters attached to a World are now built from that World's setting, so their jobs, routines and pastimes fit their world.
  • Removing a schedule block in the life profile editor no longer leaves the next block labeled with the removed block's activity.
  • Imported cards that use {{user}} or {{char}} now show the real names in texts the character starts, friend requests, alarm and clock messages, Game Watcher, story planning and the scoring of your chat messages, instead of the raw placeholder.
  • Messages that start with a slash now keep your character's full context. A line like "/me draws her sword" used to make the character forget their lorebook and memories for that reply, and the message could never be recalled later.
  • When a web lookup succeeds but the follow-up reply fails, your character now delivers their first draft instead of the whole turn failing.
  • After a message has to be re-sent without images because it was too large, the rest of that turn (search follow-ups, photo review and caption) also goes without images, so a photo no longer arrives with an empty caption.
  • If your character's reply wakes the Narrator and then sends a photo, the Narrator now still steps in instead of being stood down by the photo's caption.
  • Turning the Narrator off now also sends any cast member who is holding the scene off stage, instead of letting them keep talking until their turn limit.
  • In group chats, your own appearance photos are now downscaled before sending, like the cast's photos, so a large phone picture is much less likely to make the request too large.
  • The character Notifications menu now points to the right setting: "Characters can text you first" on the Reaching Out page.
  • On Windows and Linux, you can now frame a world cover at any shape you like, the same as on phones. Before, it was forced into a square.
  • Editing an older message and regenerating it, then swiping back to a newer version, no longer hides that version and every reply after it.
  • While a reply is still being written, you can no longer delete a message or swipe between versions, which used to scramble the conversation.
  • Branch Timeline now keeps who spoke each line, web search results and reach-out messages in the copied timeline.
  • Fixed chats on Claude models failing every turn when a character or profile reference picture was a PNG or WebP image.
  • Nostalgic callbacks no longer pick moments out of story order.
  • Lazy Mode concepts now fit your world and persona. When a world is attached, the four concepts you pick from are now told to belong to that world. With your persona ticked, they are told not to invent a shared history with you. If the Lazy Character Creator's "Brief Prompt (step 1)" or the Lazy World Creator's "World Brief Prompt (step 1)" shows as Edited, press Reset on it to get the corrected default.
  • The dialog shown when you share a character who belongs to a world now names that world in its title.
  • Reordering characters inside a folder now drops them exactly where the gap shows. Dropping a character back in place leaves the folder unchanged, and the last character in a folder no longer jumps out of it.
  • When a character accepts your friend request after you've moved to someone else, their new DM opens under their own name and portrait.
  • On Android, saving a character's Notifications settings from the rail no longer closes a character you're editing or throws away its unsaved changes.
  • /friend now works when a tab or another kind of space follows it, instead of silently clearing your message.
  • The illuminated first message of a timeline now styles dialogue the same as every other bubble: italic narration stays italic around quotes, and quote coloring no longer flips after the lines beside the drop cap.
  • Large lorebooks open in the full-screen editor use much less battery while the editor is open.
  • Switching straight from one character's editor to another's keeps the lorebook entry glow working on the new card.
  • "Try again" and "Retry" now work in the concept picker. After a concept failed to generate (rate limit, timeout or safety block), the picker used to get stuck on endless spinners with every button greyed out. Lazy Mode and "Build it for me" both use this picker.
  • Clearing a world's Lorebooks and indexing it again now removes the old lore from chats. Before, the deleted paragraphs could still surface for every character using that world.
  • Generating a life profile no longer fails when the AI's reply has small formatting slips, such as a stray comma. Before, the character was left on the generic daily rhythm.
  • Transcribe Appearance from Images now always uses the Vision model you picked. On the persona page it used to quietly switch to a different model when your choice was missing from the model list. Now, on the persona page, in the character card and in the cast editor alike, if the model you picked is no longer available you get a message naming it so you can pick another.
  • The Character Creator's help text now matches how things work: Knowledge Graph indexing no longer tells you to save first, reference pictures are described as going out only when your model can see images, and lorebook paragraphs are described as pulled in when relevant rather than only when mentioned.

AI Models

  • Thinking models like Kimi K3 now work everywhere, including the Lazy Creator. A model that thinks for minutes before it answers is no longer cut off mid-thought. As long as it keeps working, the app waits for it to finish. The request timeout now only limits how long the app waits for a model to start answering.
  • "Give it more time" when a model times out. The error now has a button that gives that one model a longer time limit (and tries again where it can), in the chat, the Lazy Creator and the world and cast creators. Models with their own limit are listed under Providers & Keys → Per-model timeouts, where you can change them, add one by hand or set one back to normal.
  • Cancel in the Lazy Creator now actually stops the request. Closing the concept picker, or pressing the new Cancel button while a character, world or cast member is being built, stops the model, so you're no longer charged for an answer nobody will see.
  • A request that timed out is no longer quietly sent again. It used to be retried up to three times, each attempt charged and waiting out the full limit, so the Lazy Creator could spin for 15 minutes before showing an error.
  • The Lazy Creator, world creator and cast creator show how long the model has been thinking, so a long think no longer looks frozen.
  • Your timeout settings now also apply to messages your characters send while the app is in the background.

Character Rail

  • New characters can go to the top of your rail. Turn on New characters go to the top of the Character Rail in Settings → Interface, and every character you create, import, download from the Character Kitchen or receive from your other devices lands at the top instead of the bottom, so you never have to scroll to find the one you just made. Characters already on your rail stay exactly where you put them. Each device keeps its own choice.

Pictures

  • .jfif pictures work now, everywhere a picture does. That is the format Chrome saves a great deal of the web in, Pinterest above all, and until now one was either greyed out in the picker or arrived as a grey chip you could not open. Attach one to a chat, give it to a character as a portrait or a visual reference, use one for your own persona, a world's cover, a cast member, or a reference in Image Studio: all of it takes a .jfif now, exactly as it takes a .jpg. Nothing is converted or re-saved on the way in, because a .jfif already is a JPEG, just under another name.

Security

  • Your Gemini key no longer shows up in error messages. When a Gemini request failed (overloaded server, wrong model name, dropped connection), the error bubble in the chat could contain your Gemini key, and the next message could pass it on to the model you were talking to. Errors now leave the key out.
  • A GIF or meme search that fails while you're offline no longer writes your KLIPY key into the debug log or into bug reports.
  • A crafted settings file or older theme file can no longer write files outside the app's folders. On Windows, importing such a file could put a file anywhere your account can write, including a place that starts a program when you sign in.
  • A device you sync with can no longer read your files or save pictures outside the app's folders. It could ask this one for any file the app could read, or save a picture where it didn't belong. Both requests are refused now.
  • Shared settings files can no longer run commands on your PC. Importing a settings file no longer changes your Local AI startup command, server addresses, backend choice or network sharing, and can't slip commands into Claude Code. If you move to a new PC with Export all settings, set those Local AI fields once there.
  • Images linked inside messages, character greetings and patch notes no longer load. A picture link in text used to be fetched as soon as it appeared on screen, which told that website your IP address.
  • Shared and published worlds no longer include where the cast's pictures are stored on your device. On Windows that location includes your account name. The pictures themselves still travel with the world.
  • A booby-trapped file can no longer freeze or crash the app. A character or world from the Character Kitchen, a shared theme, a SillyTavern card or a font .zip could be made to unpack into gigabytes the moment you opened it. The app now refuses such a file.
  • A device you sync with can no longer pull other files off this one through a chat message. Sync now sends only the app's own pictures and the photos, clips and sounds you attach. A picture you attached from a network share (a \servershare path) now stays on the device it was attached on.
  • Your Kitchen cook profile is now tied to your copy of the app. If you publish without a license key or a Patreon sign-in, your cook profile is tied to this copy of the app the next time you open the Kitchen. From then on, someone who learned your device's ID on a shared network can't rename your profile, unlist or delete what you published, or publish under your name. If another copy of the app holds your cook profile, the Kitchen now says so and tells you how to get back in: sign in with Patreon to manage it if you moved it to a Patreon sign-in, otherwise ask support to reset it.

Sync

  • Sync only talks to your own host. A phone or PC now shares nothing with a host on the network until that host proves it has your pairing code, and it skips a neighbor's host instead of getting stuck on it.
  • Keep every device on the latest version: an updated phone or PC no longer syncs with a host from before pairing (1.23.0 or older), because such a host cannot prove it has your pairing code.
  • New code cuts off connected devices right away. A device that is syncing when you press New code on the host stops at once, instead of carrying on until it next reconnects.
  • Stopping the host, switching it to Solo or changing its port now disconnects the devices that were connected, instead of leaving them half-connected.
  • A host PC that moves to a network Windows calls Public (for example after waking up in a café) now pauses hosting by itself, including when Windows labels a network Public a few seconds after you connect, and picks up again once the network is Private.
  • Regenerated stories stay replaced. When you generate a new story for a timeline, scenes, acts and logs from the old story no longer come back from your other device and mix into the new campaign.
  • "Only this device" really means only this device. Banishing a character without deleting it from synced devices no longer wipes its timelines on your other device. The character and its timelines come back from that device on the next sync, as the dialog says.
  • Purging a story now also clears its Overseer logs on your other device, and notes the Narrator prunes or purges stay deleted on every device.
  • Notes the Narrator writes in the same turn no longer merge into one note or vanish together on your other device.
  • Renaming a timeline sticks on every device. A new name or synopsis, a persona you pin to a timeline, or an NPC you send away with /dismiss could be undone by your other device on the next sync, about half the time, if you made the change while the two weren't connected. The newer change now wins.
  • Story progress holds across devices. Your other device's older copy could roll back several things on the next sync: playing the first turn of a Ready story, finishing a canto, a story stopping on an error, and the plan the Narrator updates after a reflection. A story you had started could fall back to Ready.
  • An edited message stays edited on your other device. Rewriting one of your messages in a group chat or Backstage could be undone by your other device's copy, which left the old message sitting above a reply to the new one.
  • Settings you change while settings sync is off now carry over when you turn it back on. This applies once a device has synced its settings. A prompt or setting you change there while settings sync is off or the device is set to Solo, or just before you close the app, now counts as your newest change. It no longer loses to your other device's older copy.
  • Banishing a character from all your devices also takes it out of your group chats there. On your other device the character now leaves the cast of the group chats it was in, and the lines it spoke keep its name instead of turning into "Unknown". On the device you banished it from, it no longer creeps back into a group's cast.
  • Tags the Chronicler gives a timeline now reach your other device, and they show up in the timeline list right away.
  • Finding orphaned data no longer overwrites persona changes you made on your other device.
  • After /migraterag, your other device picks up the re-indexed messages on the next sync.
  • Worlds you delete and then download again keep their Knowledge Graph. Deleting a world and then downloading it again from the Character Kitchen, or importing the same world file, no longer wipes the world's entities from both of your devices the next time they sync.
  • Changes from your other device stay put. A character's Live Chat memory, a reply they owe you, a video still rendering, and "Seen" marks could be undone by the next message you sent on the other device.
  • Worlds and your rail order arrive intact when the app opens. A world you created, or a rail you rearranged, on your other device while this one was closed could vanish again right after opening. A world lost that way could then be deleted for good by your next world edit.
  • Sending a message no longer re-sends every timeline you have to your other device, only what changed, so sync stays quick with a large library.
  • Chat pictures with the same file name no longer replace each other on your other device. Two different pictures that were both called image.png, for example, used to overwrite each other there, so an older message showed the wrong picture.
  • A message with both a picture and a video keeps its video. With Send clips to paired devices off, syncing such a message could drop the video from it, even on the device that sent it.
  • With one device hosting and two others connected, a picture made on one of them now shows up on the third right away. Before, it could stay broken there until that device reconnected.
  • If the Narrator's portrait file goes missing on one device, sync no longer deletes the portrait on your other device. The missing portrait is copied back from the other device instead.
  • Turning Send clips to paired devices on or off now also takes effect on your other devices without restarting the app.
  • Pairing a device with a large character list now brings every character across. With 100 or more characters, the first sync could leave some behind until a later sync filled them in.
  • A character you create or edit while a sync is bringing in pictures is no longer undone when that sync finishes.
  • Pictures and clips that never reached your other device now arrive. A picture whose transfer was cut off, for example because the phone locked or the app closed in the middle of a sync, used to stay broken on that device. Now it is fetched the next time your devices sync, once both are updated. Pictures that were already broken are fetched too. A clip held back while Send clips to paired devices was off also comes through after you turn that setting on.
  • Your changes reach your other device right away, even while it is busy sending you updates. A message you sent, a character you edited or something you deleted while the other device was syncing to you could wait until the next reconnect.
  • Texts your characters send while your phone is closed now reach your PC as soon as you open the app.
  • Editing or swiping a message is no longer undone by your other device when a timeline is deleted while the two are syncing.
  • A PC that wakes from sleep now notices a dead connection instead of saying it is syncing while nothing arrives.
  • Reopening the app on your phone just as sync was pausing no longer leaves it disconnected.
  • Pairing a new device, or syncing after a long time apart, is much faster with a large library. Messages now come across in batches, the phone holds far less in memory during the transfer (pictures included, which now travel a few at a time), and reconnecting no longer reads through every chat picture first.
  • With three devices, what one brings back reaches the others right away. When a phone reconnects after being offline, its new messages, edits and deletions now reach your other connected device at once instead of at its next reconnect, so a message you deleted on the phone no longer comes back. Changes made while a device is still catching up after connecting now reach it too.
  • Turning off Sync settings & prompts on one device no longer makes every reconnect run a full sync. When nothing else changed, your devices go straight back to syncing live.
  • Wifi Sync no longer gets stuck on "Connecting". A device whose connection attempt failed used to stay on "Connecting" for good. It now tries the host's other network addresses, then says what went wrong, and retries a typed address on its own.
  • Wifi Sync reconnects on its own after a short drop. If the connection to your host broke for a moment, for example after a Wi-Fi hiccup or a PC waking from a short sleep, a device could stay on "Searching for host on LAN" instead of reconnecting. It now tries the host again a few times first.
  • Deleting the open timeline on your other device now closes it on this one too, instead of switching the chat to a different conversation, so your next message can't land in the wrong chat.
  • Scanning a PC's pairing QR now connects on the same Wi-Fi even when the PC also runs Tailscale. Before, the phone could get stuck reconnecting to an address it couldn't reach.
  • On a computer, typing a host's pairing code and then tapping the host in the discovered list now pairs right away. Before, the code was forgotten.
  • After you change the host's port, the Wifi Sync page shows the new port in the pairing QR and the address list. The Windows firewall check now looks at that port too, so it offers to open it when needed.
  • The sync status now shows how many changes this device has sent. Received changes are no longer counted twice.
  • Phones no longer offer the Host role, which never worked on a phone. Only a computer can host.
  • On Linux, the Wifi Sync page now tells you to pair with the QR code or type the host's address and code, instead of searching the network forever.
  • Open persona and world pages now pick up edits from your other device. If you change a persona or a world on one device while its page is open on the other, the open page now shows the new version, and saving there keeps the other device's changes to fields you didn't touch. Anything you were editing at that moment is kept: on the persona page your own edit wins when both devices changed the same field, and the world page tells you when that happens.
  • If a startup step fails before sync can start, the Wifi Sync page now says that sync didn't start this session. Restarting the app starts it.

Claude Code

  • Stop and the time limit now fully end a Claude Code reply. Before, Claude Code could keep running in the background, using your subscription, and the app could wait long past the time limit you set.

Local AI

  • Launch KoboldCpp now works on Linux.
  • The pre-filled KoboldCpp startup command now keeps the server on this computer.
  • Ollama now uses your Context Size. The Context Size you set on the Local AI page now applies on Ollama, instead of Ollama's own setting. With Context Size off, the app picks a size of up to 32,768 tokens; set it yourself for a larger window. Min P, Repeat Penalty, Mirostat, GPU Layers and every Top-K slider now take effect on Ollama too.
  • The Enable Thinking switch now works both ways on Ollama. With it off, reasoning models answer directly instead of thinking first. With it on, models without reasoning still answer normally.
  • The KV cache setting for Ollama now applies when you start Ollama with the Start Ollama Server button.
  • Detect from backend now works for Gemma, Qwen and other non-Llama models on Ollama, and caps the result at 32,768 tokens instead of the model's maximum. Type a larger size if your GPU has room.
  • LM Studio's Keep Model Loaded setting is now respected.
  • Choosing the wrong server type no longer shows a server as Connected or stuck on Loading model; it shows Not connected.
  • If you used Detect from backend on Ollama before, check Context Size on the Local AI page. A size above 32,768 now takes effect and needs a lot of GPU memory.
  • Pictures stop going to local models that cannot see them, even if you never opened the Local AI settings page: the app now asks your local backend which models can see images at startup and before it sends the first picture, starting with the model you are using.

Baldur's Gate 3

  • One-click BG3 setup now installs Script Extender on PCs whose Windows user name contains an apostrophe.
  • When you stop a game-watching session, the end-of-session recap now tries again after a brief network hiccup or a busy server, so the session is still remembered.
  • Skill-check choices no longer stop your companion mid-conversation. When the AI talks to an NPC and a choice screen includes a Persuasion or other skill check, it now picks a reply instead of going silent.
  • The first push-to-talk no longer floods the game chat. While the voice model downloads you see a few progress lines instead of thousands, and a download that stalls gives up and falls back to the cloud model instead of leaving push-to-talk dead until you restart the app.
  • Push-to-talk keeps up with you. Pressing the key while your companion is still answering now records your next line, and a quick accidental tap no longer leaves the mic recording.
  • If the companion mod in your game is older than the app expects, the game chat now tells you to run the BG3 setup again.
  • Your companion keeps more of your conversation in mind during combat, and "move toward/away from" orders no longer end up aimed at the wrong creature.
  • The "Delay between actions" setting now also spaces out tactical moves, lockpicking, trap disarming and retreats, and stopping the watch gives your companion back to the game.
  • Clicking to cancel a hotkey rebind no longer binds your left mouse button. Left and right click can no longer be chosen as hotkeys.
  • Using a scroll (Fireball and the like) now casts the spell and uses up one scroll. Before, the scroll often did nothing and stayed in the bag.
  • In a fight, walking over to loot a body, pull a lever, pick a lock, disarm a trap or talk to someone now costs movement. If the target is too far for the movement she has left, she says so instead of crossing the battlefield for free. Reading a scroll in a fight now uses her action.
  • When a fight starts, or you give her a new order, she drops the errand she was on instead of walking back toward an old lever or corpse in the middle of her turn.
  • Dialogue choices now match the numbers on screen, so she no longer picks the wrong line when a conversation has repeated or linked options.
  • Talking to someone while other characters chatter nearby: she now reads the real conversation and its reply options instead of a nearby bark.
  • The offer to sweep the battlefield for loot no longer appears during the next fight, and a sweep can't lock up her turn in combat.
  • Shield, Counterspell and other reaction prompts are no longer switched to automatic when you play without the app attached.
  • Locked chests and doors: she now sees the lock difficulty her lockpicking rolls against instead of DC 0.
  • Upcast and innate spells cast while she is still finishing her previous action now go off instead of silently doing nothing.
  • Attacking large monsters like minotaurs now works as a normal attack.
  • Smoother frame rate when you explore busy areas with the mod installed but the app not attached.
  • Smoother play while the Game Watcher runs: screenshots and on-device voice transcription now run in the background. The app and the game overlay no longer stutter on each screenshot, and no longer freeze for seconds when you use push-to-talk with a medium or large voice model.
  • The Game Watcher no longer takes screenshots once it has reached its comment limit for the session, or while it is already busy with a turn.
  • The companion's view of the battlefield now labels your spells, menu spells, multi-target spells and opportunity-attack warnings with the same names its instructions use.
  • In a fight, your companion now reads correctly whether its action or bonus action is still free before it casts a spell.
  • Lever pulls, jumps and battlefield loot sweeps are now refused while your companion is downed or incapacitated, like every other action.
  • The Game Control Prompt example now names the real command for walking over to something. If your Game Control Prompt still says move_to, change it to move_to_entity.

Character Kitchen

  • Shared characters no longer carry your notification settings for them, and changing those settings on a published character no longer counts as a change to its file. The next update of a published world with cast pictures (or of a character published together with such a world), or of a character whose notification settings you changed, uploads the whole file once.
  • Removing your Kitchen profile now has to wait until 24 hours after your last publish.
  • If you moved your cook profile to a Patreon sign-in before this update and have signed out since, sign in again to change your profile or what you published.
  • Edited character pages now show their latest text. If a chef changed a character's About after you had already opened the page, you saw the old version; now you see the edit. Chefs editing their own character again start from their latest words.
  • Leaving a page mid-download no longer loses the character. Press Back while a character or world downloads and keep browsing: it still lands in your list, and you can heart it.
  • Tapping a character on the welcome screen before the Kitchen has loaded now shows a loading spinner, or the reason the Kitchen can't be reached, instead of saying the character is gone.
  • World cover art and cast portraits now try loading again after a hiccup instead of staying blank on the first failure.
  • Download and heart counts no longer jump backward, and a character you just hid or deleted no longer pops back into Browse for a moment.
  • Updating a character now finishes linking its world's page. If the world's page didn't go up the first time, publishing the character again publishes the world's page and links the two as a new version, even when nothing else changed. If the world's page still can't go up, your other changes are saved, the version stays the same, and you are told why. The same goes when the character's own upload is turned away, for example by the daily publish limit: your new tags, tagline and page text are still saved, and you are told the world link isn't made yet.
  • Publishing a character you had already published (for example from another device) now switches to an update after the first try, instead of failing the same way every time.
  • The "Character Kitchen" link at the top of a publish page now asks before discarding unsaved changes, waits while a publish is still sending, and after you leave takes you all the way back to the Kitchen.
  • A character hidden by moderators now says up front that it can't be updated instead of uploading first, and an unlisted character no longer reads as live.
  • Tag and reference limits now show right under the picker you're using and go away when you change your pick. Text you type while an update is loading is no longer replaced by the published text.
  • Character and world pages now call a Cook a Cook in the publisher card, not a Chef, and a single heart now reads "1 heart".
  • Publish to Kitchen from the character rail now opens the publish page even if the Kitchen couldn't be reached earlier in the session.
  • Chefs only no longer hides things silently: the Filters button lights up while it is on. When Browse or Worlds comes up empty, the message says what emptied it (your search, Hide 18+ or Chefs only), with a button to clear the search or turn off Chefs only.
  • Signing in with Patreon works without a browser that opens by itself: if the browser does not open, the sign-in panel moves on anyway and shows the address to copy into a browser by hand. A Copy sign-in address button is always there.
  • When a moderator bans a cook, or hides an entry in a way that bans them, all of that cook's pages leave the lists right away. Unlisting one of your own pages also takes it out of Browse right away.
  • A cook's entry that was already looked at shows up again in New from cooks after the cook edits it.
  • Remove my profile no longer asks you to delete a page that moderators have hidden. It tells you the page stays until they review it.
  • Signing in to an account that is banned now shows the ban instead of saying you can publish.
  • The Kitchen rules and the Remove profile confirmation now have a solid background, so they are easy to read.
  • Adding a license key keeps your cook profile. If you published from your device without a key and then add your license key, the Kitchen moves your name, your uploads and everything under them to the key the next time you open it. Before, My uploads went empty and you couldn't edit or delete what you had published.
  • Your published-character limit and storage limit now hold even if you publish several new characters at the same moment.
  • A newly published character no longer stays missing from Browse (or a removed one stays listed), and download and heart counts keep updating.
  • A character whose opening scene is a single word now reads "1 word" above it instead of "1 words".
  • On Linux, if Ask on Discord on the Becoming a chef panel can't open your browser, the app now shows the invite link with a Copy button. Before, nothing happened.
  • Moderation keeps up with hides made on a page. Hiding or deleting a character or world from its own page now updates the Moderation tab right away. The report shows the page as hidden and the New from cooks list drops it, with no pull to refresh.
  • When moderators hide one of your characters, Publish a character now shows their reason under it, as Publish a world already did. A page hidden along with a ban now reads in plain words in both lists instead of showing a code.
  • The publish page of a character or world hidden along with a ban now gives the reason in words, as the picker already does, instead of an internal code.
  • Moderators now see why a reported page was hidden in plain words, such as "Hidden with the ban on this profile.", instead of an internal code.

Alarms

  • Timers ring again on Android 15. A finished timer now plays its tone and shows the timer screen instead of closing the app.
  • After a timer rings, the app no longer stays open over your lock screen. Once the timer is dismissed, pressing the power button shows your lock screen again, and the screen goes to sleep normally.
  • With "Display over other apps" turned on, alarms and timers that ring while your phone is locked now show their full alarm screen over the lock screen instead of only a silent notification.
  • The "Open Clock" shortcut, the upcoming-alarm notification and the status-bar alarm icon now open the Clock page even when the app wasn't running, and a timer that finishes while the app is closed shows its timer screen.
  • The stopwatch shows the right time when you reopen the app while it's running, and a paused stopwatch no longer keeps your phone awake.
  • On Android 12, the Alarm tab now warns you when "Alarms & reminders" is turned off, since alarms can't ring without it. Timers still finish when it's off.
  • Daily and weekly alarms keep ringing after you stop them from the lock screen: the next day's alarm is now set even if you never open the app in between.
  • Snooze works every time: snoozing twice in a row, or unlocking and opening the app while an alarm is snoozed, no longer cancels the snoozed alarm or loses its message and Snooze button.
  • Alarms ring at the right time around the daylight saving changes; before, they could go off an hour early or late.
  • Changing the time of a one-time alarm now actually moves it. Picking "Once" without a date sets it for the next time that time comes around (today or tomorrow), and you get a warning before saving an alarm that would never ring.
  • One-time alarms switch themselves off after they ring, so the app no longer keeps waking up in the background for them.
  • Switching an alarm off or deleting it while its message is being written no longer brings it back.
  • A running stopwatch shows the right time after a phone restart instead of dropping to zero.
  • Reopening the app from the recent-apps screen no longer jumps to the Clock page because of an old shortcut or alarm-chip tap.
  • One-time alarms ring when you set them. When you pick "Once" and then scroll the time, the alarm now rings at the next occurrence of that time. It used to land a full day late or in the past.
  • Deleting an alarm while it is ringing deletes it for good. Before, it could ring one more time.
  • Turning on a one-time alarm whose date has passed now tells you to pick a new date, with a shortcut to the editor. Before, the switch just flipped back off.
  • Changing the time of a one-time alarm you switched off no longer turns it back on.
  • A running timer keeps counting down while your phone restarts. Once you unlock the phone it rings on time, even if you don't open the app. A timer that ran out before you unlocked the phone is cleared instead of ringing late.
  • After a phone restart, pausing or adding a lap to a running stopwatch now works. Before, the stopwatch kept running and showed as running again the next time you opened the app.
  • After a phone restart, pausing and resuming a timer works again. Before, the timer could get stuck at zero or never ring.
  • Alarms keep ringing out loud when the custom tone isn't on this phone. If the alarm tone you picked was set on another device, or its file is gone, the alarm now plays your phone's default alarm sound instead of only vibrating.
  • Opening the Clock from its home-screen shortcut works on a cold start. It no longer shows a blank gray screen when the app wasn't already running.
  • Backing out of the alarm editor without saving no longer leaves the unsaved time or name showing on the alarm's card.
  • World Clock character comments stay visible when you leave the Clock page and come back within the hour, and the World tab opens faster.
  • A running stopwatch does less work in the background while the Clock page is closed or the phone is in your pocket.
  • If you never renamed your persona from the default "You", alarm messages now call you "User", like the rest of the app, instead of "You".

Settings

  • Removed the "Reaching out on their own (background)" prompt from Live Chat settings. Nothing had used it since characters' reach-outs were merged into one system.
  • You can now take words back out of your dictionary. Settings → Interface has a Your dictionary list, under the spell-check switches, with every word you added using Add to dictionary. Remove any one of them, or clear them all. A removed word is marked as a misspelling again, and on Windows that goes for your other apps too, so a mis-tapped typo is no longer accepted forever. On Windows, a word you added before this update is taken out of Windows' dictionary only if you added it all in lowercase. Otherwise Windows, and so the app, keeps accepting it.
  • Deleting a world now tells you its cast goes with it. The confirmation says how many cast members are deleted along with the world.
  • The Live Chat video setting now reads "Let characters send clips unprompted" instead of assuming every character is a woman.
  • A few default prompts now use American spelling (for example "meters" and "armor" in the Baldur's Gate 3 action prompt). If you want the new wording, press Reset on those prompts.
  • The orphaned-data cleanup report and the Narrator Control page now say Narrator (for example "Narrator notes" and "Narrator's Ledger") instead of the old Director name.
  • A newer Claude model you type into your Anthropic model list (such as Claude Opus 5.5) works right away, with its Effort control showing, before you fetch the model list. The Top-P slider is no longer shown for Anthropic models, because Anthropic doesn't accept it alongside Temperature.
  • On a custom provider that offers both Gemini Flash and Gemini Pro, the cheaper Gemini models are now picked for the everyday background features instead of Pro.
  • Dragging sliders and typing on the Local AI and Claude Code settings pages no longer stutters on Windows.
  • Find orphaned data no longer offers to delete your characters' data when their save file can't be read. It now stops and says so, instead of listing every character or world as leftover data.
  • Providers & Keys no longer saves over and over. After you typed a key or flipped a switch, the page kept re-saving every key and setting about twice a second until you left it, which could make the app stutter on Windows and spend battery on phones. It now saves once per change.
  • Settings pages show your saved values right away instead of briefly showing defaults while the model list loads, and a change you make in that moment is no longer undone.
  • A change made just before closing Settings (for example, turning on the Narrator and backing out right away) now takes effect immediately instead of after your next visit to Settings or a restart.
  • Prompts you never changed no longer show as "Edited" after you visit their settings page.
  • Edits to the World Brief, World Build and Lazy NPC prompts on the Services page are now always saved, including when you use Restore default.
  • Turning Extended thinking off now works on Claude Opus 5 and Sonnet 5 when connected directly to Anthropic. Before, those models kept thinking anyway. On Opus 5 at the Extra High or Max effort level the model still thinks, because Claude can't turn thinking off at those levels.
  • Claude Opus 4.5 now lists only the effort levels it accepts (Low, Medium, High).
  • With thinking on, non-Claude models reached through a custom Anthropic-style endpoint keep their usual reply length limit, so those endpoints no longer reject the request.
  • Turning Extended thinking off now works for Claude Opus 5 and Sonnet 5 through OpenRouter and NanoGPT. Before, they kept thinking anyway. On OpenRouter the Extended thinking switch now shows for these two models. On Opus 5 at the Extra High or Max effort level the model still thinks, because Claude can't turn thinking off at those levels.
  • If your Lazy Creator, SillyTavern card converter or Live Chat settings show thinking off because you picked None as the thinking level in version 1.17.3 or earlier, those calls now really run without thinking on Claude, including Claude through OpenRouter or NanoGPT. Before, they still thought, which cost more and took longer.
  • Choosing gemini-embedding-001 as your embedding model now actually uses it. Until now the app used gemini-embedding-2 whichever one you picked. If you had -001 selected, everything you've already saved was embedded with -2, and searches made with -001 won't find it. To keep your existing memories easy to find, switch back to gemini-embedding-2. Re-indexing a character or world rebuilds its lore and knowledge graph on -001, but your past chat messages stay on -2.
  • Settings that arrive from another device, from an import or from Restore Defaults now take effect right away, with no restart. This covers connection timeouts, streaming, the Drop images for models that cannot see switch and the per-model Image support choices. Setting an Image support choice on one device no longer erases the choices made on your other devices.
  • OpenAI's GPT-5 and o-series models (o1, o3, o4) now work when Max response tokens is set.
  • A local model that silently ignores pictures no longer overrules the model list: once the list says it can't see images, the app stops sending them, even if the model accepted one earlier. The Image support list now shows the verdict the app actually uses.
  • Gemini 2.5 Flash-Lite's thinking can now be switched off: set the thinking budget to 0. A budget between 1 and 511 is raised to 512, the smallest the model accepts.
  • The Reaching Out preview of what happens if you stop replying now matches how characters actually behave over weeks of silence.
  • The Live Chat video cost estimate now matches the resolution you pick. Before, it always showed the cheapest rate, so a 1080p clip on Imagine Video 1.5 looked about a third of its real price.
  • The video Resolution list now offers 1080p only for the model that can film it. Switching to a model without 1080p moves the setting to 720p.
  • The image and video model pickers in Media Tools now show the model you actually saved, even when it isn't available on this device, with a note saying its provider or key isn't set up here. Before, the picker showed a different model than the one in use.
  • The image Quality help text no longer shows a stray "2014" where a dash belongs.
  • Image Reaction Nudge now works: whatever you write in System Instructions → Image Reaction Nudge is added to your message when you attach a picture in your chats (not Backstage or Live Chat). It stays empty, and does nothing, until you fill it in.
  • The Overseer settings now show the values your stories actually use (Writer 0.9, Critic 0.4, thinking off), and moving one slider no longer quietly switches on expensive extended thinking.
  • Background model slots such as Urgency Triage, Story Synopsis, DM Memory, Life Profile, Game Dialogue, the image refiner, the Studio enhancer, the web-search model and Lore Research no longer show sliders that had no effect.
  • Resetting a Claude Code prompt now asks before it overwrites your edits, and those prompts open in the full-screen editor like every other prompt.
  • On Android, pressing Back while Providers & Keys is fetching a model list no longer closes the page, and the model slots on Chat & Memory update right away after you change them on Providers & Keys.
  • Image Transcription now sends the Top-K value its settings show.
  • Find orphaned data now updates open screens right away when it repairs broken picture links, for characters, chats, personas and worlds, so the next save no longer puts the old links back. It also repairs picture links for world NPCs.
  • Find orphaned data no longer deletes the Constellation's background, so it no longer has to be rebuilt the next time you open it.
  • Theme pictures and fonts restored from a settings file are no longer left behind on disk after you change them.
  • Importing a theme now also matches the Constellation's background colors to the new theme.
  • The "Auto-Namer Prompt" no longer asks the AI about a reply it never sees (titles have always come from your opening message). If it shows as Edited, press Reset on it to get the corrected default.
  • Fixed typos in the "Narrative Analysis Base Prompt", the "Sentinel Prompt" (which now also points to its baseline in the right place), the "Real-World Context Prompt" and the SillyTavern "Converter Prompt". If any of these shows as Edited, press Reset on it to get the corrected default.
  • A model you deliberately set back to Gemini 3.5 Flash is no longer switched to 3.7 Flash on the next launch.
  • The first time you open Settings with the light theme, the page now opens smoothly.
  • Help text stays readable on light custom themes. The explanations under settings on Live Chat, Media Tools, Services, Backstage, Chat API, Narrator, Group Chat, System Instructions and Game Watcher now switch to dark ink on a light settings background instead of fading out.
  • A custom font that comes in with an imported settings backup now shows right away, without restarting the app.
  • On Windows, changing your custom theme's settings image or switching its base between light and dark now updates the window's background tint right away.
  • Uploading a group chat primer or system instruction from a file saved in an older text encoding now loads it instead of doing nothing; characters the app can't read show as a placeholder mark.
  • Exporting or importing from the Reaching Out page now says "Reaching Out" instead of the old "AFK Messaging" name.
  • The voice settings now point you to the size listed next to each model instead of always saying about 40 MB. On Linux, the voice model download button is turned off, because push-to-talk only works on Windows.
  • Custom settings backgrounds set to Contain, or with transparent areas, no longer show green bands around the image.
  • Animated GIF backgrounds with transparent areas now stay transparent when they are installed into a custom theme, so the base skin still shows through them. Still GIFs with transparency keep it too.
  • Changing a setting no longer saves that page's untouched prompts as your own text, so future improvements to those built-in prompts reach you. Prompts saved that way before this update still show as Edited once their default changes; press Reset on them to get the new default.
  • The Chronicler Prompt now has a Reset button. If it shows as Edited, press Reset on it to get the corrected default.
  • On Linux, the Game Watcher settings page is gone. Its features only work on Windows, so its switches did nothing there.
  • Prompts in Settings that support {{userName}} and {{personaName}} now also accept {{user}} and {{char}}, in any capitalization and with spaces inside the braces.
  • More of the hidden instructions are now yours to edit. New fields with Restore default: the Sentinel's secrets header, no-secrets and no-scene lines (Chat & Memory); the Persona Preamble (plus a Backstage & Live Chat version), the Phantom Turn Opener (plus a Group Chat version), the Memories Acknowledgement and the 4th Wall Reply Note (System Instructions); "When a search finds nothing" and the "After a search" instructions for chat and the Narrator (Services > Web Search); and the "After a lookup", "When no timeline matches" and "When a timeline is empty" lines (Live Chat > Timeline Peeking). Every default is exactly the text the app already used.
  • More of the AI's instructions are now editable. The Game Watcher page has a new Battlefield Hints group. It holds the advice your Baldur's Gate 3 companion gets with each turn: the Your Turn and Not Your Turn banners, the Loot Sweep Offer, New Pickups, Opportunity Attack, Nearby Objects, Downed Ally, Dead Ally, Dead Party Members, Crime To Loot, Following Result, No-Effect Result and Not Following, plus the advice on trapped objects, explosives, locked containers' contents and enemies out of line of sight. You can tone down "You are playing to WIN" or empty a hint to remove it. Knowledge Graph settings add a Known-Entity Pre-Brief section (Known Entities Header, No Known Entities), the Chronicler's Potential Matches Header, and the Entity Indexer's New Record and Existing Record Advice. Knowledge Extraction and the Chronicler now use the same known-entity wording as the Entity Indexer.
  • The Narrator's fill-in lines are now editable. A new Fill-In Lines section on the Narrator page lets you rewrite or reset each one: No Campaign Line, Cast Switched Off Line, No Named Cast Line, Campaign Cast Intro, No Story Objective, Story Ended Objective, Player Character Note, World Lore Note, Scene Lore Note, Timeline Events Note, No Scene Notes Line (shared by the NPC Actor and the Narrator Voice) and No Reason Given Line.
  • More of what characters are told is now yours to edit: Live Chat gains Current-time note, Memory notes opener and acknowledgement, Before the first notes, Tension read line, the /friend and First DM lines, the relationship history lines, the life profile's relationship lines and the "What they are doing" lines. Backstage gains Context opener and Context acknowledgement. System Instructions gains Phantom Turn Opener and Picture ID Note for Backstage & Live Chat. Media Tools gains When the character gave no explanation. Reaching Out gains a new Real-World Context Lines section, where seasons go by month, so if your winter falls in July you can swap the texts.
  • More of the AI's behind-the-scenes text is now yours to edit, each with a Reset: the Character Identity Header that opens alarm texts, clock comments, DM memory, reach-out texts and the character's answer to /friend; the JSON-Mode Instruction (Anthropic); the Claude Code System instruction pointer and Web search note; the Aspect ratio hint and Reference pictures line for image and video requests; and the Overseer's Writer/Critic Loop Framing (Revision Request, Invalid JSON Feedback, Salvage Note, Phase 1 Transition Notes, Your Note to the Critic).
  • A few sliders on the Narrator, Group Chat, story generation and alarm pages no longer draw their handle off the end of the track when an imported or synced value is outside their range (for example a Narrator cast size of 0). The handle now sits at the nearest end.
  • AFK text pictures can use every Grok Imagine aspect ratio, including the tall phone-screen and wide ratios.
  • The microphone, speech-engine and model pickers on the Game Watcher page, and the provider pickers on Providers & Keys, now stay readable on light custom settings themes.
  • Restore a single prompt to its default on the Knowledge Graph, Game Watcher, Character Alarm AI and Group Chat pages: open the prompt in the full-screen editor and use Restore default. You no longer have to reset the whole page.
  • Clock AI prompts now open in the full-screen prompt editor, with an edited marker, a token estimate and a one-prompt Restore default.
  • On Windows, the Group Chat settings page now has the import/export buttons and the auto-save indicator, like the other settings pages.
  • You can now edit the lines the search model gets with each lookup. Under Services > Web Search > Search framing you'll find the Search line, Recent results line, One-site line and Never-read-from line. On desktop there are also two Sources requests, one for the Claude Code search model and one for the Claude Code chat model. Each has a Reset button. Leave a filter or Sources line blank to stop sending it; a blank Search line sends the default.

App

  • The Terminal log always records full request and reply details again, even if you picked a shorter log level in an older version.
  • Developer-only chat commands (/canto, /migraterag, /reflection, /overwhelm) are no longer offered in the command list and no longer run when typed.
  • The app download is about 2.7 MB smaller, because design source files that were packed into every install have been removed.
  • Cleaned up wording across the app: consistent American spelling, the Narrator instructions hint has its typos fixed, and the Open Beta welcome no longer repeats its own heading.
  • On Windows, a persona you save just before closing the window is now kept.
  • Character cards, timelines, stories, worlds and themes saved as "UTF-8 with BOM" (Notepad offers this) now import instead of being rejected as an unknown file.
  • The app wakes your phone in the background less often when there is nothing to do.
  • Claude Code models now work in timelines: sending, regenerating and editing messages on a Claude Code model now get a reply instead of nothing happening.
  • Custom endpoints that need no API key, such as a server on your own network, now generate replies instead of being refused for a missing key.
  • Regenerating or editing a message on a model with no API key set now shows an error right away, instead of leaving a spinner that would not stop.
  • On Android, a timeline that is still replying in the background keeps its messages loaded when your phone is low on memory, so the reply no longer lands in an empty chat.
  • Reasoning models no longer leave blank replies. When a thinking model spends its whole token allowance on reasoning and never writes an answer, you now get a clear message saying it ran out of room for its answer, instead of an empty chat bubble.
  • When a Grok reply is cut off by a dropped or stalled connection, the app now shows what arrived with a note that it was cut off, instead of saving half a sentence as a finished reply.
  • Gemini image generation and memory indexing no longer hang forever on a dead connection. They now give up after your timeout settings and report the error.
  • A Gemini quota or rate-limit error now shows up right away, instead of after several seconds of hidden automatic retries.
  • Video thumbnails load again. Video messages and Image Studio clips no longer get stuck loading, and fullscreen video opens right away instead of waiting behind other thumbnails.
  • Videos that finish rendering while the app is closed now arrive when you reopen it. A brief server hiccup or a failed download no longer throws away a finished clip.
  • Tapping play on one video and then quickly on another no longer shows "Clip unavailable" on a clip that plays fine.
  • Links now open on Android 11 and newer. The Patreon banner and page, the 'Download Android version' button in What's New and the Credits links did nothing when tapped. If no browser opens a What's New or Credits link, you now get its address with a Copy button.
  • The update window no longer gets stuck. If you cancel Android's install prompt, you get the Install now and Not now buttons back, and trying again goes straight to the installer without downloading the update again. A download that stops because the connection dropped now ends with a message you can close, and picks up where it stopped next time.
  • Check for Updates now tells you when it can't reach the update server, and the License & Updates page stays usable afterward.
  • An update found while the app was still loading now shows its prompt once the app opens.
  • On a phone running an experimental build that a normal update can't replace, the app now tells you to uninstall and reinstall instead of showing nothing.
  • Old update installers are removed from your device after you update, so they no longer take up storage.
  • Faster deletes, regenerations and syncs on large libraries: deleting a message, regenerating a picture reply, banishing a character and the first sync after your devices have been apart a while no longer load your entire message library. The first launch after this update may take a few extra seconds once while the app indexes your messages.
  • Replies cut off in the middle of a picture, GIF, meme or video request no longer show raw code in the chat bubble. Messages sent with a photo no longer show leftover GIF or meme tags either.
  • Continuing a reply in a timeline keeps its web search globe and notes and no longer shows raw search tags.
  • Stopping a reply while the character is captioning a photo no longer leaves the unused picture taking up storage.
  • When a world file can't be opened, the app now shows a plain explanation instead of starting it with "Failed to import world:".
  • A local AI model that returns only reasoning followed by blank space now shows an error explaining what to change, instead of an empty message.
  • Stop now fully cancels a regenerate or an edited message's redo, even when pressed in the first moments before the new reply starts. Before, the reply could start again on its own.
  • With two timelines generating at once, each chat now shows its own character as typing. A chat no longer shows the other timeline's character after that timeline finishes first.
  • Pressing Stop no longer leaves a stuck typing status such as "is taking a picture" in the chat.
  • Stop now really stops Claude Code on desktop: cancelling the Narrator's scene decision, a memory, image or Backstage/Live Chat step, or an Overseer run (Cancel or Interject), ends the Claude Code CLI right away. It no longer keeps running and using your subscription until it finishes.
  • Web search on Windows and Linux no longer tries Claude Code when the Claude Code CLI isn't installed. It uses another search-capable provider if you have one set up, and otherwise leaves web search off.
  • When the Claude Code CLI rejects a request, for example after a CLI update, the error now shows the CLI's own message instead of a vague "pipe is being closed" error.
  • The token-usage chip now counts the full prompt for Claude Code replies, including the cached part.
  • The per-chat token counter now adds up every request behind your character's reply, including web-search follow-ups and photo review and caption calls, not just the last one.
  • Message times no longer mislabel yesterday's messages as today's on the day after the clocks spring forward.
  • The app can store much more. The storage limit is much larger on PC and on 64-bit phones. If storage fills up, a "Storage is full" notice tells you how to free space, and the message you were sending goes back into the text box. If deleting something fails because storage is full, nothing is removed, pictures included: restart the app and try again.
  • Pasting files copied in File Explorer is faster and lighter on Windows: large videos and photos are attached in place instead of being loaded into memory and copied, and copy and paste in other apps no longer stalls while you paste.
  • Copying cells from Excel and similar apps and pressing Ctrl+V in the chat now pastes the text instead of attaching a picture of them.
  • Saving a video or picture to a folder on Windows and Linux is quicker and uses much less memory for large clips.
  • A first launch no longer moves your own files out of your Documents folder, such as pictures named ref_ or pfp_, a characters.json or a blobs folder. Files are only moved when your Documents folder holds this app's old data, and then only the pictures your old characters use.
  • Updating from a very old version no longer opens without your chats: timelines and messages left in the old Documents location are now moved over too.
  • A sentence written entirely in bold in a lore research report, such as a dramatic closing line, is now kept in the lorebook instead of being mistaken for a heading and dropped.
  • Exporting and importing long timelines, and sharing or publishing characters and worlds with large knowledge graphs, no longer lock up the app for long while the file is written.
  • New timelines that open with a character's First Message show their name right away, and the pulsing "● ● ●" title now appears only while the timeline is actually being named, so it can no longer pulse forever.
  • On desktop, clicking Send keeps your cursor in the message box so you can keep typing.
  • Slash-command suggestions no longer appear in game chats, and an open suggestion list now closes when you switch to Backstage or a Live Chat.
  • The app no longer hangs on launch when it can't open its data. You now get a screen that shows what went wrong, with buttons to copy the details and close the app. On Windows, the app no longer stays stuck running invisibly in the background, where double-clicking it again did nothing.
  • On a large monitor, backgrounds and textures on PC now stay sharp after you maximize the window. Before, they stayed at the resolution of the smaller window the app opened in.
  • On Android, opening a character with typos in several fields now marks them in every field.
  • Contractions written with a curly apostrophe, like don’t, I’m and can’t, are no longer marked as misspellings on devices that use the app's own dictionary.
  • Adding a word to your dictionary right after importing settings no longer replaces the imported dictionary with your old list, and adding a word after Restore Defaults no longer brings the cleared words back.
  • Deleting a Knowledge Vault secret no longer leaves its typo marks on the row below it.
  • Turning spell check off and back on now marks typos right away, instead of waiting until you edit the text.
  • On Windows, a word you typed twice in a row ("the the") is no longer marked as a misspelling.
  • The Ember scorch sparks no longer flicker when misspelled words are burning in three or more fields at once.
  • A typo mark on a word pasted from a Mac now covers the whole word instead of only part of it.
  • Spelling suggestions appear faster on devices that use the app's own dictionary, and spell check uses less memory over long sessions.
  • Story evaluations and memory updates now read slightly malformed AI replies more reliably: a missing comma after a text value no longer swallows the next field, a ... placeholder is no longer read as zero, and a code snippet (such as a shell command) in the reply no longer hides the real answer.
  • Replace All in the full-screen editor now replaces exactly what you searched for. Searching for text with brackets, dots or parentheses, such as "[Scene]" or "Mr.", no longer rewrites unrelated letters across the whole prompt.
  • Search & Replace in the full-screen editor keeps its place while you edit the text, and pressing Replace moves on to the next match instead of replacing inside the text it just inserted.
  • Text you are still composing with a Japanese, Chinese or similar keyboard (or the word Gboard is suggesting) is underlined again in prompt and lorebook fields.
  • Inserting a {{userName}} or {{personaName}} snippet over text you selected right-to-left now leaves the cursor right after the snippet.
  • In Report a Bug, the log viewer now shows accented letters, symbols and emoji correctly in large logs. The debug log you preview is the exact file that gets sent, and leftover copies of it are cleaned up.
  • Less battery drain when idle: decorative animations (the star-map twinkle, shimmering names, the unread ring, scrolling titles and selection embers) now pause under Battery Saver and while the app is minimized or in the background.
  • Character portraits in the side rail and chat list load at the size they are shown, so scrolling feels smoother and uses less memory.
  • Linux: opening the app twice brings back the window you already have. It no longer starts a second copy that never appears. Opening a character, world or theme file with the app while it is running imports it into the open window.
  • Linux: the window title now reads "The Loup Frères Island", and the running app lights up its own menu launcher in the dock instead of showing a separate generic icon.
  • Download links keep working while a new version is being published. The website, Discord and in-app download links now keep serving the previous build until the new one is fully in place, instead of breaking for the length of the upload.
  • Patch notes added while a release is being published now wait for the next version instead of being listed under the one going out.
  • The "Open the Getting started guide" box at the end of the Windows installer now starts unchecked, so updating by hand no longer opens your browser every time.
  • If your characters and chats fail to load at startup, the loading screen now shows the error with a Try again button instead of spinning forever.
  • Stop now also stops the Narrator and supporting characters mid-reply, including when they run on Claude Code.
  • A GIF used as the starting frame or a reference for a generated video is now sent as a GIF instead of being labeled as a PNG.
  • Picking a portrait, a world cover or your chef picture no longer fails silently when the crop screen runs into a problem. You now get a short message and can try another image.
  • The Apply Crop and Save buttons stay readable with light accent colors.
  • Updated Privacy Policy: you'll be asked to accept it again. It now explains how device slots are freed, the install token the Character Kitchen uses, what happens to your cook profile when you add a license key, and which crash records are attached as captured.
  • Report a Bug switches now cover the attached logs too: with device specs or memory usage turned off, they are also left out of the logs you attach, and the memory capture button stays off while memory reporting is off.
  • Crash reports keep their automatic summary when you type a note, and bug reports now include the full background-messaging trace.

Knowledge Graph

  • An open Knowledge Graph page now updates by itself when changes from your other device sync in, so you no longer need to close and reopen it.
  • /nodeclean keeps the entity it folds into on all your devices. Folding two entries with the same name, for example after renaming one onto a name that already existed, used to delete the surviving entity from your other device too at the next sync.
  • Renamed entities stay renamed. An entity you renamed while your other device was off no longer comes back under its old name as a second entry the next time the devices sync.
  • Automatic graph upkeep stays in step with your other device. Its merges and cleanups reach a connected device right away, it no longer undoes an edit you made to an entity on the other device, and ties it merges or renames no longer return as stale duplicates.
  • Automatic graph upkeep now reworks only what changed since its last run, so it makes fewer model calls and finishes faster in long stories.
  • New facts from the latest messages no longer get overwritten when automatic graph upkeep or /nodeclean runs at the same time.
  • Entries you wrote by hand survive re-indexing even after they were merged. When a merge combines your hand-written entry with one taken from the lore, the entity keeps your name, and a manual community placement carries over. Before, pressing Index Lore as Graph again could erase it.
  • Imported timelines keep their Knowledge Graph. If you export a timeline on one device and import it under a character on another, its Knowledge Graph now comes along with the messages. Before, the chat and the star map could not see it.
  • Relationships from entities whose names contain a colon (such as "Mission: Nightfall") no longer pile up as duplicates on your other device, and deleting one now deletes it there too.
  • Editing a world's lore from a character no longer changes the world. Renaming or editing an entity that comes from an attached world, or editing one of its relations, now saves as that character's own version. The world and every other character attached to it keep the original. A world's relations can no longer be erased from inside a character.
  • In a character's Archival Scholar, entities from an attached world no longer show up as members of that character's unrelated communities, and community actions there no longer move them.
  • What the entry indexer (FILL IN or /index) finds is now filed in this timeline by default, even when you are editing an entry that is shared by all timelines. You can switch it to all timelines before saving, and /index keeps the scope you picked in its request sheet.
  • When a world and a character name the same thing with different capitalization, indexing now merges them into one entry instead of showing it twice.
  • Background graph upkeep no longer rewrites a character's community summaries over and over when a world is attached. It also no longer mixes the world's entities into those summaries.
  • Timeline versions of world-lore relations no longer grow on their own. Background graph upkeep was pasting the world-lore text back into a timeline's version of a relation every time it ran, so the same sentence piled up again and again. Your own rewrites of world-lore relations no longer get the world-lore text pasted back in.
  • Changing the relation word of a world-lore relation from inside a chat now adds that chat's own relation and keeps the original for every other timeline. It no longer erases it everywhere.
  • New relations recorded in the Archival Scholar now default to this timeline only, like new entries. The reverse relation keeps whatever scope you chose for the first one.
  • The relation editor now opens on the relation's real saved text, so saving no longer writes the merged "[Timeline Event]" view into the record.
  • An entity that has its own version in this timeline now offers "Revert to world lore" instead of "Erase", and it can still be linked by world-lore relations.
  • If your embeddings come from a provider other than Gemini and you have no Gemini key, the Entity Indexer now searches by meaning as well as by name, and imported timelines are now embedded for memory search.
  • The star map keeps its nebula when you come back to the app. On Android, leaving the app with the Constellation open and then returning could leave the sky with only a flat background and make it stutter until you closed the map.
  • The Star Chart key now shows the marks you actually see on the map: the double ring around stars changed in this timeline, and the teal ring around lore that comes from an attached World.
  • Changing the app font now updates the star map's names, key and titles right away.
  • Custom themes in red tones no longer spend both of the nebula's color families on near-identical reds, so a second color from the theme now shows up. Every theme's nebula is generated again once, the next time you open the star map.
  • A custom community summarization prompt is no longer silently replaced by the default. If it leaves out the community name, the page shows a warning instead.
  • Renaming a world entry you had only edited inside one timeline no longer leaves your other timelines with a relation pointing at an entry they don't have; the world's relations stay with the renamed entry in that timeline.
  • When you change a relation to a verb that already exists, the old relation is now removed (shared world-lore ties stay as they are) and your chosen tie strength is kept.
  • Graph indexing no longer retries forever when its model points at a removed custom endpoint or an image-only provider. It now stops right away so you can pick another model.
  • Indexing lore no longer wipes your graph when it can't read anything. If the extraction model has no API key, or the provider no longer offers that model, Index Lore as Graph now shows a red error with the reason and leaves your existing graph as it was, instead of erasing it and reporting success.
  • You can now stop a lore index. While a character or world is being indexed, a progress line under the index button shows what it is doing, including retries, along with a Stop button.
  • A model the provider no longer serves now stops indexing right away instead of retrying every minute until the app is closed. Turning off Retry Until Success now also ends a retry loop that is already running.
  • If indexing is interrupted (the app is closed or killed) and you change the lore before indexing again, the index starts over cleanly instead of skipping part of the new lore.
  • Entities whose names start with "The" are no longer flagged as possible matches for each other, so live updates attach facts to the right entity more often and graph cleanup makes fewer wasted model calls.
  • One malformed entry in the model's answer no longer throws away the rest of that live graph update.
  • Your Entity Reducer settings now apply everywhere. Automatic graph cleanup and /nodeclean now use the Entity Reducer prompt and model you chose in Knowledge Graph settings. Before, they ignored your edits and ran on the extraction model.
  • The temperature and top-p sliders in the Missing Links & Merging, Strategic Summarization, Entity Consolidation and Chronicler sections now change how those steps run, and they start at the values the app actually uses. If you changed any setting in one of these sections before, its temperature and top-p sliders now take effect, so check them.
  • Knowledge Graph settings unlock as soon as a lore index finishes. You no longer have to reopen the page.
  • The memory meter in the Archival Scholar no longer shows "Approaching Breakdown" before your character's first reflection is even due.
  • Smarter community grouping: knowledge graph communities now group entries that really belong together, instead of growing into large catch-all groups. Existing communities re-group as maintenance revisits them after new story events (a full re-index re-groups everything at once), and each re-grouped community gets a fresh summary, which uses one AI call.
  • Entries with no ties to anything stay unsorted until they gain connections, as the entity editor says. They are no longer lumped into one shared community.
  • Story events that end exactly on a Narrator line now reach the Knowledge Graph instead of being skipped.
  • Clicking outside an Archival Scholar editor no longer throws your work away. If you have typed something, or the indexer has found something for you to review, you are now asked before it is discarded, and the editor can no longer be closed while it is still saving. On Android the back gesture asks too.
  • Save & Add Relations now does what it says. After saving a new entry, the relation editor opens with that entry already chosen, and the Archival Scholar shows the entry you just wrote.
  • After /index, saving an entry no longer brings up a "Nothing was written." notice in the chat.
  • The Archival Scholar stays smooth with big archives: entries with hundreds of relationships, and tags or communities with many members, open without a long pause, and typing in the search box or in an entry's description no longer stutters.
  • Searching the Archival Scholar now finds an entry by the name it is listed under, for example your persona's name.
  • Background knowledge-graph upkeep no longer makes the chat stutter while it sorts entries into communities.
  • On desktop, the star-map hover card now stays attached to its star while you zoom or pan.
  • When indexing finishes but the entities could not be vectorized (for example, no embedding key), the done message turns orange and tells you how to fix it. Before, it showed a plain "indexed!" and chat silently could not find those entities by meaning.
  • On Linux systems without a working keyring, saving a hand-written entry in the archive editor no longer hangs on "Saving...". The entry is now saved, and it can be indexed later once an embedding key is available.
  • Group chats remember who did what: rebuilding or reorganizing a group chat's memory now credits each character with their own words and actions, instead of filing everything under the first character in the group.

Narrator

  • Saving in Narrator Control no longer undoes the Narrator's newer work. If the Narrator updated the story's plan, scene or triggers while the page was open, your save used to put the old version back, on this device and your other one. The page now saves only what you changed. Saving it for a timeline whose plan appeared while the page was open no longer fails.
  • The Overseer no longer gets stuck waiting for a review you can't see. If a story asks for your review or note while you're away from the Overseer Console, or you close the review without choosing, coming back shows it again. A button lets you reopen it at any time, and the status line and Android notification tell you the story is waiting on you.
  • Force Resume no longer restarts a story you're already playing. A campaign in progress keeps its current scene, and a finished one stays finished.
  • Interjecting while the Overseer writes the story summary or the cast of characters now pauses for your note and then finishes that step, instead of skipping it.
  • Resuming a story after an interruption no longer mixes up acts or redoes work that was already approved. New stories also start at their real first scene, even when it isn't numbered 1.1.
  • Stories built from characters with very large lorebooks now pick the lore that fits the story better.
  • The Purge button is disabled while a story is generating. Purging also stops automatic retries, so a deleted story can't come back.
  • A reflection that can't run no longer silences the Narrator. If the reflection model has no key or its prompt is blank, the Narrator keeps taking its turns. If a reflection fails or has nothing to say, it tries again a little later instead of on every message.
  • The "your story is ready" banner now appears as soon as a story finishes building, even when you stay on that timeline. Before, it only showed up after you sent a message or switched timelines.
  • Tapping the story-ready banner no longer erases a message you were typing, and no longer sends an attached picture along with the story start.
  • The Overseer Console and Narrator Control's campaign position now update when your story changes on another device. You no longer need to reopen them.

Live Chat

  • Characters remember your DMs again. A character's long-term memory of your Live Chat now keeps growing. Your next message used to quietly undo the memory they had just formed, so they re-read the same old messages after every reply and never remembered more.
  • A message you send while a character is busy now gets an answer. If you wrote while they were typing a reply, while a reply was arriving in the background on your phone, or just as they were texting you first, they could end up never answering it.
  • Live Chat, Backstage and other background features no longer fail on Claude Sonnet 4.6 and Haiku 4.5 when thinking is off.
  • Characters who text you while the app is closed now call you by your persona's name and remember the world your chat is set in.
  • Tapping a notification opens the right chat again. Before, it stopped working once the app had posted a reply notification.
  • Two quick replies from a notification now both get an answer, in order.
  • Your Favorite's good morning lands near their wake-up time even after the phone sat idle overnight, and your phone no longer sends it twice.
  • A Live Chat reply the phone cut off in the background gets answered later. Before, the message was left unanswered.
  • Characters no longer promise a video in a notification text and then never send it.
  • Characters keep texting in the background after the app closed unexpectedly. Before, they stayed silent until you opened it again.
  • A Live Chat reply owed while the app is closed still arrives with Reaching Out turned off, and a failed reply is retried within about 15 minutes.
  • Your Favorite's good morning and goodnight are no longer held back because another character texted recently.
  • With your phone and PC both open, a Live Chat character now answers each message once. Before, both devices could write a reply to the same text, so you paid for two answers and saw both. The device you texted from now answers. If that was your PC and it gets closed before replying, your phone answers instead a few minutes after you open the app there.
  • A Live Chat reply no longer goes missing when the app closes while the character is typing. Swipe the app away on your phone or close it on your PC mid-reply, and the reply still arrives later. A reply that hits an error, or that was being typed when the app closed, is tried again instead of being dropped. That includes one you sent with a notification's Reply button.
  • On your phone, a Live Chat reply that arrives while the app is in the background now comes with a notification. Before, it showed up in the chat without one.
  • Answering a Live Chat character from a notification now stops the reply they were already typing, so an older reply no longer lands after your new message.
  • A text a character sends you on their own, or a clip that finishes rendering, right after your message no longer counts as their answer to it. They still reply to what you said.
  • A clip a character is filming is now delivered once, by the device that started it. Before, your other device could post it a second time or post a failure message while it rendered.
  • Characters no longer text you out of the blue while they are still typing a reply to you.
  • A character who sets themselves to Do Not Disturb instead of answering now stays quiet. Before, they were asked to answer again every few minutes, and each try was a paid request.
  • Continue no longer leaves tool markup in the message. When you continue a cut-off Live Chat or Backstage reply, stray web-search, picture, GIF, meme, video or status tags are now removed before the longer reply is saved.
  • One texting pace across your devices: with the app open on both your PC and your phone, characters no longer text you first about twice as often as your settings say, and while your devices are syncing your favorite character sends one good morning and one goodnight, not one from each device.
  • Photos, GIFs, memes and videos arrive like texts: the character finishes reading and shows the typing indicator first, with a status such as "is taking a picture" or "is looking for a GIF" while they pick one, instead of the media popping in mid-read.
  • Characters who go to bed before midnight are now as hard to wake in their first hours of sleep as intended, instead of waking almost as easily as near their alarm.
  • Long-term DM memory no longer summarizes messages that are still part of the recent conversation, which also cuts some background calls with chatty characters.
  • An error from a Live Chat reply no longer shows up in a Backstage chat that was generating at the same time.
  • Characters only offer to mute you when they actually can. A character fed up with repeated pings now mentions Do Not Disturb only while the Status & Mood tool is on. The offer itself is a new editable setting, "Ping-annoyed mute offer". If the "Ping-annoyed prompt" shows as Edited, press Reset on it to get the corrected default.
  • Characters are now told to look up a past story only when Timeline Peeking is on. The two nudges are new editable settings: "Resurfacing memory fetch hint" and "Original meme fetch hint". If the "Resurfacing memory prompt" (Live Chat) or the "Original meme prompt" (Media Tools) shows as Edited, press Reset on it to get the corrected default.
  • The "Live Chat Primer" and "Texting fingerprint (voice)" prompts no longer have stray commas, and the voice prompt's emoji example has its 💀 back. If either one shows as Edited, press Reset on it to get the corrected default.

Timelines

  • Story synopses stick. A timeline's synopsis, whether written for you or edited by hand in Timeline Details, is no longer undone by your next message, so it no longer has to be written again and again.
  • The greeting you pick stays picked. Swiping to an alternate greeting right after starting a new timeline could flip back to the original after a restart and on your other device.
  • Stop no longer finishes the reply in the background. After you press Stop, the part of the reply not yet shown is dropped: it is not saved, scored or sent to the character's memory, the background memory pass is skipped, and a friend tag in it has no effect. A Stop during a video or audio upload means the reply is never sent or billed. Whatever already appeared in the chat, including a picture, stays.
  • When two timelines are replying at once, stopping, regenerating or finishing one no longer stops or unlocks the other. Each timeline has its own Stop button and its own locked typing box.
  • Importing a timeline no longer locks the chat you have open or unlocks a reply that is still being written. A small 'Importing timeline…' notice shows while it runs, then closes when the import finishes, also when you import several files at once.
  • If the typing box stays locked after a failed regenerate or edit, Stop now unlocks it.
  • Failed replies no longer leak into the story. When a reply fails, the error now shows as a line at the bottom of the chat, with a Retry button when retrying is possible. The character never sees it as something it said, and the next speaker in a group chat no longer answers it.
  • Narrator and NPC lines stay theirs. Once a guard's or the Narrator's line scrolls back in the conversation, characters, memories and reflections no longer treat it as something you said.
  • Each character's actions are remembered as theirs. In group chats, the story memory and the knowledge graph no longer credit one character with what another one did or said.
  • NPCs now read the conversation from their own point of view, so they are less likely to slip into the main character's voice.
  • Regenerating a reply several times, or a string of failed replies, no longer makes the character's reflections trigger early.
  • Remembered moments now keep what the character looked up at the time, and are attributed to the character by name.
  • The Group Chat memory fetch count (and a timeline's own override) now changes how many memories group characters recall.
  • Group timelines now come back as groups. Exporting a group timeline saves its whole cast, so re-importing it on the same device, or one synced with it, where those characters live restores the group with every member speaking as themselves. Files from older versions, or files whose characters aren't there, import as a normal timeline.

Worlds

  • Deleting a world while it is being indexed now stops the indexing, also when you delete it on your other device, and removes what it had already built. You no longer get an "Indexing Complete" notification for a world that no longer exists, and the delete warning says what will be stopped.
  • If you delete a character's world from "Manage worlds" while editing that character, the card now drops the link, and saving no longer re-attaches the deleted world.
  • The quick world creator now uses the API key for the model you picked, instead of your embedding key.

Web Search

  • Local models can use web search now. With an Ollama, KoboldCPP or LM Studio model and web search turned on, the character asks your search model to look things up for real instead of pretending it checked.
  • Pressing Stop, or sending a new message while a Live Chat character is mid-search, now stops the search right away. The character no longer stays stuck waiting for the old lookup.
  • Notes a character keeps from a search no longer contain a stray "$1" or lose punctuation. A search limited to one site through OpenRouter now asks for that site.

Image Studio

  • A video that is waiting to retry its download or check-in now says so on its card, instead of showing 'Filming…' with a clock that keeps counting.
  • Animating a portrait photo now keeps its shape: the finished clip shows in a tall frame instead of being cropped into a wide box, and its details list the right aspect ratio.
  • Retrying a failed video uses your enhanced prompt again, so the new render matches what the first one was going for.
  • A crash while saving an Image Studio result no longer empties your library history or loses results saved afterward.
  • Cost estimates for FLUX.2 images now match fal's per-megapixel price, including the reference pictures you attach. 2K and 4K estimates had been about two to four times too high. With references on Auto size, fal picks the picture size, so no estimate is shown.
  • Switching from video to images (or to a video model that takes fewer references) now keeps only as many reference pictures as the mode accepts, so the tray, the price and the saved details match what is sent.
  • The rendering timer starts over when you retry, and a video still rendering after a restart shows how long it has really been going.
  • The "720p max" note no longer appears when you animate a still, which renders at 1080p on Imagine Video 1.5.
  • Generating several images from large reference pictures uses less memory.
  • Favoriting a fresh result now sticks: the star lights up right away on the Create tab, and a second press no longer quietly undoes it.
  • Deleting several results from the Library now also removes them from the Create feed and from your reference tray, and large deletions finish in one quick pass.
  • Deleting a picture you were about to animate now removes it from the first-frame slot too, and retrying a clip whose first frame is gone shows a "first frame is missing" card instead of sending the request without it.
  • An expanded prompt in the feed stays open on its own row when a new generation arrives, and an enhancement-prompt edit is saved even if you leave the page right after typing it.
  • Wide or tall fal.ai images at the largest sizes are now requested at no more than 2048 pixels on the long side, the most fal accepts, and the cost estimate matches that size.

1.23.1

September 19, 2026

Character Kitchen

  • Anyone can publish to the Kitchen now. Open the Kitchen and go to Publish: read the rules, tick two boxes, pick a name, and you are a cook. What you publish goes up the moment you publish it. No account is needed: you publish from your device. If you have a license key you publish under it. Sign in with a Patreon account if you want your name to follow you through a reinstall or onto another device, from Publish or later from My uploads; any account works, and you don't need to pledge. Should the Kitchen ever start asking cooks to sign in, My uploads will say so, and signing in from the same device keeps your name and everything under it.
  • The welcome screen shows what's fresh in the Kitchen. On a desktop window it is a board: one chef character in the spotlight, a row from chefs, a row from cooks, and a row from the shelves that changes every day, all ranked by how new they are and how many hearts they hold. On a phone, the two rows, sized so the whole welcome screen fits without scrolling. Tap any character and its Kitchen page opens; Open the Kitchen and Publish a character sit right there. The app icon that used to sit above the welcome is gone, to make room, and the welcome text now reads on the light theme too.
  • Publish to Kitchen from the rail. Hold a character in the rail and choose Publish to Kitchen: the Kitchen opens on your publishing tab with that character ready to publish, or, if you are not a cook yet, on the page where you become one.
  • Chefs are listed first and wear the toque. Chefs are cooks our staff picked for the depth and feeling of their writing. Their characters and worlds come before everyone else's under every sort and carry a gold chef's hat on the card, beside the name, and on the chef's picture; the Chefs tab lists chefs, then cooks. A new Chefs only choice on the Filters page leaves everyone else out.
  • A cook can publish 3 times a day and keep up to 20 characters and worlds in the Kitchen.
  • Becoming a chef is spelled out. The Publish tab, a cook's My uploads and the foot of the Chefs tab show what a chef gets over a cook, side by side: listed first under every sort, the toque on cards and bylines, the welcome screen's spotlight, 20 publishes a day, 100 characters and worlds, 250 MB of storage. And how to ask: publish as a cook first, then write in on Discord or by email with your cook name.
  • Every publish now asks you to confirm that it follows the Kitchen rules, with the rules one tap away.
  • If a moderator removes something you published, My uploads says why and how many removals count against you. The third ends your right to publish, and a removal for sexual content involving minors or for illegal content ends it at once. If that happens, My uploads says why and where to write if you think it's a mistake.
  • You can remove your Kitchen profile from My uploads, once you have deleted what you published.
  • The EULA and Privacy Policy changed to cover all of this, so the app asks for your consent once more.

Characters

  • You can index a character the moment you've finished writing them. Index Lore as Graph works on a brand-new card now: pressing it saves the character and starts the indexing, in one press. Until now the button sat greyed out reading "Save character first!", and since saving closes the card, reaching it meant saving, finding the character in your list, opening them again and scrolling back down. All you need is a name.
  • Lazy Mode saves the character it writes for you. The moment it finishes filling the card, that character is in your list — so you can index them straight away, and backing out of the card can no longer lose a character the AI just spent two rounds writing.
  • Added a Vectorize Lore button under the Lorebooks field. It makes the lorebook searchable in chat without building the whole Knowledge Graph. Saving a character doesn't do this, so press it after you edit the lorebook. A line under the button tells you when the lorebook has changed since it was last vectorized. Like indexing, it works on a character you haven't saved yet, and saves them for you.

App

  • We can now post short notices in the app, like a new Discord link or a known problem, without waiting for an update. Each one shows at the top until you close it.
  • The welcome screen, the Open Beta window and License & Updates now link to loupfreres.com, home of the Getting started guide and the only place official downloads come from.
  • On Android, the app now tells you if your copy wasn't published by us, with a link to the official download.
  • Links inside chat messages open only web pages and mail addresses now. Any other kind of link does nothing when tapped.
  • Report a Bug lists the log files it would attach, with a View button for each, before you send anything.
  • Bug reports now travel through our own server on the way to us. The privacy policy says so, so it asks for your consent once more.
  • On Android, the app's data is no longer part of Android's cloud backup or phone-to-phone transfer. Wifi Sync is the way to move to a new phone.
  • Wifi Sync now needs a one-time pairing. Each host shows a pairing code under its QR on the Wifi Sync page; a device syncs with that host only after scanning the QR again or typing the code. Devices that were syncing before this update have to pair once. On Windows, a host pauses while the network is one Windows calls Public, unless you allow that in the host settings.
  • The privacy policy's contact address is now contact@loupfreres.com.

1.23.0

September 14, 2026

New Feature: Character Kitchen

We at Loup Frères are excited to announce the Character Kitchen! The Character Kitchen is a repository of characters and worlds submitted by trusted community members. You will find it under the + menu.

Our goal with the Character Kitchen is to create a source where quality writers can upload their creations. To combat low effort uploads and ensure that the Character Kitchen, with your help, grows to become a renowned space, we've decided to restrict uploads to Chefs. Chefs are community members approved by the TLFI staff, evaluated for highly emotional writing and creation depth. Anyone may apply to become a chef.

Browsing

  • Search characters by name. Open Filters to sort by newest, downloads, or hearts, hide 18+ characters, and narrow by tag.
  • 109 tags across seven headings: genre, setting, kinds, art style, role, gender, and temperament.
  • A bar along the bottom of Filters counts how many characters your picks leave. Picked tags stay above the grid.
  • Hearts and download counts refresh every hour.

Character Pages

  • Every character has a full page: portrait, personality, appearance and abilities, reference art in a large viewer, how much lore they carry with a star map of their Knowledge Graph, their opening scene, the creator, the world, and what's in the file.
  • On PC, pages spread across the window in three columns. Long sections fold.
  • The top of each page shows whether the download includes the character's Knowledge Graph, and whether it comes with a World.
  • Every page shows its downloads and hearts.

Worlds

  • Added a Worlds tab with the same search, sorts, and Hide 18+ switch as characters. Worlds are tagged by genre and setting.
  • A world's page shows its cover, description, static lore, every lorebook entry in full, its Knowledge Graph, its cast with portraits and cards, and every Kitchen character who lives there.
  • Worlds can be downloaded on their own and hearted.

Downloading

  • Downloaded characters open straight in the editor, with their world attached when they come with one.
  • Downloaded characters use your own notification settings, not their creator's.
  • Hearts can be left once you've downloaded.
  • Added a Report button to every page, for anything that doesn't belong in the Kitchen.
  • Kitchen images stored on your device are capped at 32 MB. The least recently viewed are cleared first.

Publishing

  • Publishing is invite-only for now.
  • Invited chefs publish, update, and delete their characters and worlds from the My uploads tab. Any page of yours has an Edit button.
  • Chefs pick up to 8 tags per character. On PC, the publish page shows a live preview of the card.
  • Changes to tags, the tagline, the 18+ mark, About, Personality, Appearance, and Abilities go live immediately and keep the character at its current version.
  • Changes to the character's card, pictures, lore, or world publish a new version with a version note.
  • Worlds can be published on their own. Publishing a character with an unpublished world publishes the world's page too. Both require at least one genre or setting tag for the world.
  • If the world is already on your account, the publish page says so before sending, and the character links to it instead of uploading it again.
  • Character pages can show up to 12 reference images.

EULA & Privacy Policy

  • You will be asked to accept the updated EULA and Privacy Policy once.
  • Both now cover the Character Kitchen: what browsing, downloading, hearting, and reporting send (a hashed per-device id, nothing about your own characters), what chefs publish and the license they grant for it, the content rules for published files, and how reports are handled.

Narrator Rebuild

The Narrator now directs scenes instead of writing them. Each turn it makes one decision — stay silent, let the world respond, put a cast member on stage, or invent someone the scene needs — and hands a short note to a dedicated performer who writes the prose.

Check your Narrator model. The Narrator's model setting now picks a deciding model, and has moved to a new setting with a fast default. Your old choice is still saved, but no longer used. Flagship models are best spent on the Narrator Voice and NPC Actor, which write what you read.

Narration

  • The world only speaks when the Narrator can point to a reason: a condition it was watching for just happened, the current story scene calls for it, or a consequence it wrote down earlier has come due. Silence is the default.
  • Unprompted scenery is largely gone. Wake Rules remain the volume knob.
  • Added a Narrator Voice section to Settings → Narrator, with its own model and prompt. It voices the world — weather, a room reacting, what the cursed thing does when someone touches it — and never a named character.
  • Merged the Free Roam and Storyteller Narrator prompts into one prompt, with a campaign section that appears only while a story is running. Customized versions of the old prompts are kept, but no longer used.

NPCs

  • Campaign NPCs written by the Overseer now get full character cards — personality, appearance, and private lore — and can hold a scene like a cast member. Campaigns generated before this update still work.
  • NPCs the Narrator invents on the spot can now stay for several turns instead of a single line. Defaults to 3, adjustable in Settings → Narrator → World Cast.

New Feature: World Cast

Added named cast members to world cards. Every character in that world inherits the whole cast, and the Narrator can put any of them on stage.

Writing a Cast

  • Cast members are written like characters: portrait, personality, appearance, physical traits, and private lore only they know.
  • Everything except the one-line public blurb reaches the model only while that cast member is speaking.
  • Added Write This Cast Member For Me. It writes with your world's lore and existing cast in front of it, and only fills empty fields. Direction is optional: "a harbor official who hates the Guild", or nothing at all.
  • Added Transcribe Appearance from Images to the cast editor.

In Play

  • Cast members appear with their own portrait and accent color, and speak from their own card, including private lore your character has no way of knowing.
  • While a cast member holds the scene, the Narrator steps back entirely and a smaller, sharper model plays them. Long NPC conversations stay cheap, and hold up better on older and smaller models.
  • Cast members leave on their own when their business is done. Type /dismiss to hand the scene back to the Narrator immediately.
  • The turn limit, model, and prompt for cast members are in Settings → Narrator → World Cast.

Worlds & Lore

  • Fixed an issue where world lorebook paragraphs that mentioned the character by name were rarely recalled in chat, losing out to the character's own lore.
    • Re-index your worlds (open the world and press Index) to apply the fix. Attached characters need no changes.
  • Fixed an issue where a world's static lore was never sent to the model. It is now included on every turn, ahead of the character's own, so the character card can still override it.
  • Fixed an issue where Inject Full Lore and rubber-band history left out the attached world's lorebook. Both lorebooks are now included, world first.

Files & Sharing

Opening Files

  • On PC, .loupchar, .loupworld, and .louptheme files are now registered with Windows on install and show the app's icon. Double-clicking one launches the app, or brings it to the front, and imports the file.
  • On Android, tap a Loup file anywhere — the Downloads notification, the Files app, a chat — and choose the app, or share the file to it from another app's share sheet.
  • Characters open in the editor, worlds land on your Worlds page, and themes ask before importing.
  • Fixed an issue on PC where launching the app a second time misfired. A second launch now hands its file to the running window.

Import

  • Merged Import Character, Import ST Card, Import Timeline, and Import Story into a single Import button. The app detects what the file is: a character, a SillyTavern card (PNG or JSON), a timeline, a story, a world, or a theme.
  • On PC, the file dialog only shows files the app can open.
  • Renamed Create World to Worlds. It opens your world gallery, with Create and Import inside.
  • Reordered the + menu: Build Character, Import, Worlds, Character Kitchen, Image Studio, New Group Chat.

File Formats

  • Characters now share as a single .loupchar file containing the portrait, reference art, memory, and — with "Also send the world" ticked — the entire world. One save on PC, one share on mobile.
  • Importing a character whose world you already have links it to your copy instead of importing a duplicate.
  • Worlds now share as a .loupworld container instead of JSON. Files are meaningfully smaller, and the import prompt appears without loading any images.
  • Themes now share as a packed .louptheme container, about a third smaller for image-heavy themes. Imports read one panel at a time.
  • Themes exported from this version require this version or newer to open.
  • Character, world, and theme files from older versions still import.
  • Fixed an issue on PC where importing a character deleted the file you picked, even when the import succeeded.
  • Fixed an issue where imported PNG portraits were renamed to .jpg.

License & Devices

Device Slots

  • Added Remove other devices to Settings → License & Updates for permanent keys, including free Open Beta keys. It signs every other device out of your key and keeps the current one. Available once every 30 days.
  • Devices you still use sign back in on their own at their next update check, as long as a slot is free.
  • A device turned away by the three-device limit now shows Device limit reached, lists the devices using your key, and can clear them from there.
  • Patreon keys can now run Patreon verification from a blocked device.
  • Signing a device out no longer frees its slot. A slot now stays with its device for 30 days after it last used the key, and every device in the list shows when its slot frees.
  • Merged Remove and the ⊖ next to this device into a single Sign out, which removes the key from the device and clears the page.
  • A device that hasn't used your key in over 30 days now needs a free slot when it returns, like any new device.
  • Fixed an issue where the reset countdown showed "0 days" during its final hour.

Patreon

  • Fixed an issue where Patreon verification always failed with "does not match the license key". Existing Patreon keys are corrected the next time Patreon reports on the membership.
  • Keys now follow the Patreon membership: a lapsed or declined pledge pauses updates, and a renewed one resumes them.

Pictures & Media

Deleting

  • Fixed an issue on PC where deleting a message or timeline could delete the original picture or clip from your computer. Only the app's own copies are deleted now.
  • Fixed an issue on Android where attached pictures could vanish from old messages. They are now kept in app storage instead of a cache Android may clear.
  • Deleting a message, timeline, or Image Studio result now removes its picture or clip from your device right away, including a video's preview frame.
  • Pictures you remove or replace — character portraits and references, world covers, cast member pictures, removed cast members, theme panels, and alarm tones — are now deleted from the cache when you confirm. Discard changes keeps them.
  • Pictures picked but never saved are cleaned up. Closing an imported character without saving deletes the pictures it brought from the cache.
  • Fixed an issue where deleting one alarm blanked the character picture on another alarm voiced by the same character.

Replacing

  • Fixed an issue where removing a profile visual reference and adding a new one kept showing the old picture, and on PC could send the old picture to the AI.
  • Fixed an issue where removing a profile reference from the middle of the list and then adding one could overwrite a picture you kept.
  • A new profile picture now shows in your chats right away instead of after a restart.
  • Pictures removed or replaced on your profile are now deleted instead of piling up on your device.
  • Find Orphaned Data now clears replaced cast portraits, removed references, and old copies left behind by changes on a paired device.

Sync

  • Removing a character's portrait or last reference picture, a world's cover, a cast member's portrait or pictures, or your persona's last reference picture now removes it on paired devices too.
  • When a paired device replaces a picture or deletes a world, cast member, or persona, this device deletes its own copy of the old picture.
  • A portrait changed on a paired device now shows without restarting.

Narrator Picture

  • Added a Remove picture button under the avatar in Settings → Narrator → Identity. The Narrator returns to its default icon.
  • Fixed an issue on PC where setting a Narrator picture left a copy in your Documents folder. Replaced or removed Narrator pictures are now deleted from your device.

Campaigns

  • Fixed an issue where a campaign could get stuck one scene short of the end when the Narrator wrote a scene number in an unexpected format.
  • Fixed an issue where a campaign could never advance if the scene it pointed at had been deleted.

Chat & Appearance

  • New chat backgrounds for both built-in themes: hand-painted sepia clouds with gold stars in Light Academia, and a storm of dark clouds, rain and lightning in Dark Academia. PC and phone each get their own version, a wide one for the PC window and a tall one for the phone, so neither is cropped down to a sliver.
  • With Color quoted dialogue on and no custom color picked, dialogue now takes its color from the chat background instead of the theme accent, kept readable and distinct from narration.
  • Added a Use contrasted button to the dialogue and chat text color pickers. It moves your pick to the nearest version of that color that stays readable on your chat background. Nothing changes until you press Apply.

Mobile

  • Fixed an issue on Android where tapping inside text you had typed highlighted everything between the cursor and your finger instead of moving the cursor. Applies to every text box, including the message composer, the fullscreen editor, prompt fields, and the Image Studio prompt bar.

Miscellaneous

  • The forced-text test in Settings → Reaching Out → Diagnostics & Debug now only picks characters you're friends with, and says so when nobody is.
  • The Favorite's Try one now buttons are disabled until you're friends.
  • Lore retrieval now reports in the debug console how many paragraphs were in the running and which owner each came from.

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 rating — g / 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.