Marinara Engine 2.5.2
2026-11-04
Before you update
- Make a full backup before you update. This version saves your data in a newer storage format, for connection accounts and for MMD, GLB and FBX avatars, and once it has opened your data folder, 2.5.1 and older versions can't open it. The launcher and the in-app updater won't move you back to such a version: to go back, stop Marinara and restore the backup you made before updating. The chat-file conversion command from the Troubleshooting guide can't convert it, and the format number must not be changed by hand (#8456, #8481, #8656).
- More proxy and tunnel setups now count as remote visitors, so their visitors see the setup page until you set a login: nginx on the same computer with its default settings, a proxy that passes on the visitor's domain or network address without forwarding headers, a proxy in front of Docker, and Tailscale Serve or Funnel. Opening Marinara on its own computer at
localhost,127.0.0.1or the computer's own name, or straight over Tailscale, stays passwordless; a custom name for this computer in/etc/hostsnow counts as a proxy too, so use a*.localhostname instead. Another container that reaches Marinara by its container name, such ashttp://marinara:7860, now needs the login too. If you can't get in after updating, open Marinara on the computer that runs it and follow Locked out after updating in the Remote Access guide (#7920, #7938, #7987).
- Marinara skips the login for a Tailscale device only when the connection really arrives on a Tailscale network interface, not just from an address in Tailscale's range. On Linux with a renamed tunnel interface, set a login or
BYPASS_AUTH_TAILSCALE=true.ALLOW_UNAUTHENTICATED_PRIVATE_NETWORK=trueno longer lets in100.64.0.0/10addresses, which some internet providers give their customers; to trust that range anyway, add it toTRUSTED_PRIVATE_NETWORKS(#8003, #8046).
- Long-Term Memory 1.5.0 and newer need this version of Marinara, which no longer runs its own memory recall in chats where Long-Term Memory is on. Such a chat now recalls only what Long-Term Memory has imported, so a chat with Long-Term Memory on and nothing imported in Sources has no memories until you import its messages or summaries there. Long-Term Memory also no longer switches itself on in chats that used Marinara's old built-in memory: to keep it there, turn it on in Chat Settings → Agents. An older Marinara keeps the 1.4 version you have (#8361, Marinara-Agents#1747).
- Update Slurp to 0.4.9 or newer along with Marinara. This version of Marinara checks package settings with a newer library, and Slurp versions before 0.4.3 stop while loading on it; once Long-Term Memory is updated too, Slurp 0.4.8 and earlier also stop adding memories to Creator posts. From 0.4.3 Slurp starts, and saving part of its settings, a Garnish ad or a Creator's account no longer resets the fields you didn't change to their defaults (Marinara-Agents#1721, Marinara-Agents#1727, Marinara-Agents#1852).
Works differently now
- Picking a model in a chat now changes only that chat. Before, the model you chose from the chat input or Chat Settings → Connection was saved to the connection, so every chat and agent using it switched too. Both now open Model for this chat, which shows whether the chat follows Main or has its own pick. After a pick, a message offers Make it my Main model and Undo, and Use default in the picker, or Follow Main again in Chat Settings → Connection, goes back to your Main model. Random is now Shuffle (#8456).
- Presets no longer set context or output token limits. Set them on the connection (Max context window and Max output tokens override) or in the chat's Advanced Parameters. Older presets still load, but their limits are ignored, and with no other setting a reply gets up to 4,096 output tokens, where the bundled preset used to ask for 8,192. Editing one chat parameter no longer saves every inherited Send switch as a chat override, so reasoning and the other switches follow the connection you pick. Games made earlier may already hold such overrides: use Reset to Defaults in Advanced Parameters, then set again what you meant to change (#7940).
- The built-in Marinara's Universal Preset now supplies only prompt text. Its saved sampling, reasoning, formatting and token settings, such as maximum reasoning effort, no longer apply, so chats on it use your connection's and chat's settings, with Marinara's defaults for the rest. To keep parameters in a preset, make an editable copy (#8021).
- The Assistant Prefill now always ends the request, after everything else: depth 0 prompts, post-history instructions, the generation guide,
@mention and regeneration instructions, the turn hints in Individual group chats, notes and whispers. Before, these could land after it. Models that refuse a request ending on an AI turn, such as Claude Opus 5.5 and Sonnet 5.5, Gemini 4 Argon, Gemini 3.5 Flash-Lite and Gemini 3.6 to 3.8 Flash on any service, and every model on Claude (Subscription), get the prefill at the start of the last AI reply in the history instead, with no extra turn added after it. When the chat has no AI reply yet, the prefill is sent as a user message. In Game Mode, dice and tool results stay before the prefill. Peek prompt shows the new order (#8703, #8710).
- With a login set, browsers now sign in on Marinara's own sign-in page, once per device, instead of the browser's password box, and Sign out works. Scripts and API clients can still send Basic Auth (#8102).
- Generated Game music and sound effects now have their own connection type. When you update, each Audio connection with Game sound effects or Game music on gets a separate Music & Sound Effects connection, and older ElevenLabs Game settings can get one too, so you may see more than one. Speech connections, character voices, the connections your games saved and audio you already have stay as they are. Audio connections now handle only speech and voices, and the Connections Jobs box lists speech and Music & Sound Effects as separate jobs, so check the Music & Sound Effects job and its fallback there if several were made. A migrated connection you delete doesn't come back on restart (#8167).
- Image generation now sends the whole prompt. Marinara no longer cuts image prompts to its own length limits or trims tag-style portrait and sprite prompts to 75 tokens, so a Character Tracker's full appearance and outfit, your whole style text and tags, Game image instructions and the Illustrator's prompts reach the image model as written, instead of losing details such as hair color or ears. A provider with a shorter limit of its own can now refuse a long prompt with an error (#8397).
- GPT Image 2.5 (Flare and Sunburst) requests smaller than 1024×1536 pixels are now scaled up in their own shape, for example 768×1344 to 960×1664 and 1024×1024 to 1264×1264, so small figures in group scenes no longer come out with broken hands and limbs. These pictures cost about 1.5 times as much as before. Requests that are already that large are sent unchanged, and 2D Avatars blink and talk pictures still line up with the sprite (#8759).
- Creator notes are never sent to a model. A preset whose Characters section names creator notes now leaves them out, and cards pulled in with
{{<id>}}macros, agents such as Card Evolution Auditor, downloadable agents and Advanced Memory summaries no longer receive them. An ID macro written only in a card's creator notes no longer pulls another card into the prompt, and Card Evolution Auditor no longer offers to edit creator notes. Professor Mari still reads them when you ask her to read or edit a card (#8596, Marinara-Agents#1969).
{{characters}}now lists every character in the chat, including ones you turned off, so a scenario such as "The crew consists of {{characters}}" keeps its whole cast when someone is off-scene. A preset that used it for the active characters only should use{{char}}with{{group}}, which still lists only the other active characters. The macro adds names only, and renaming or removing a chat member updates it without editing your prompts (#8444).
- Messages now fill in chat variables when shown, as the prompt already did.
{{getvar::name}}in a message reads the chat's variables when the chat has any, so a name that exists only as a preset variable shows empty there instead of the preset's value (#8509).
- With Long-Term Memory on, its notes go in the preset's memories slot in a Conversation chat whose preset has one. A regenerated reply still reuses the notes of the reply it replaces, and Marinara's own recall no longer adds to them, so it gets no memories when the original got none, for example when recall timed out or the turn is from before Long-Term Memory was installed (#8361).
- Other packages now read Long-Term Memory only through its recall service, which keeps its sharing, mode, persona and chat limits, and with this version of Marinara they can no longer reach the internal service that only Marinara uses (Marinara-Agents#1852, Marinara-Agents#1935).
- When a chat adds to a Long-Term Memory memory you shared with a character or persona, Review Queue now offers the change on that memory, with a note that accepting adds it everywhere the memory is shared. Before, extraction quietly made a private copy for that chat, so the chat recalled two versions and the character's other chats never saw the update. These changes are never applied automatically, and accepting writes only the rows you select plus the link and event they need. A chat that already has its own copy keeps updating it; delete the copy to get suggestions on the shared memory instead. Memories from other chats and global memories still get a private copy (Marinara-Agents#1537).
- An agent call, including one from a downloadable agent, now times out only after
AGENT_CALL_TIMEOUT_MS(5 minutes by default) passes with nothing arriving from the provider, instead of after 5 minutes in total. Text, thinking and keep-alive data all restart the count, so a long Gacha Forge chapter that is still streaming can finish. Quiet agent calls now ask the provider to stream too. An endpoint that refuses streaming is asked once more without it, and a reply is never generated twice. The Illustrator keeps at least its 30-minute allowance (#8249).
- In Game chats, Finish rolled turns in one request in Chat Settings → Function Calling is now on by default, including chats that never set it, so a turn that rolls dice costs one request instead of two. A chat where you turned it off keeps having each rolled turn rewritten with the real numbers (#8278).
- Professor Mari can no longer change models, connections or the Text to Speech and speech-to-text server settings with her database commands, and can no longer set a chat's Discord Mirror webhook, DeepLX URL, DeepL API Key or Intiface URL, also in settings profiles and the translation defaults for new chats. She points you to Connections, Settings or Chat Settings instead. This also stops small edits she could make before, such as a connection's prompt preset override. She can still clear those chat values, and her other chat settings edits work as before. On macOS her shell commands can no longer change, create, rename or delete
.envfiles, the encryption key or Git's internal files in her workspace, or rename the workspace folder (#8770). Hermaricommands read payload files only from her workspace, and amari imagessource outside it, such as a picture in Downloads, is refused: upload the picture in the app or copy it into the workspace first (#8771, #8798).
- Ask Professor Mari from Search is gone. The Professor button, the pull-down and Ctrl/Cmd+J always open Professor Mari. With that setting off, they used to open the plain search list, and Professor Mari couldn't be reached at all; installs that had it off get her back (#8379).
- Characters and personas with only expression sprites no longer show as avatars in chats by themselves. To show one, turn on Show this avatar in chats on the 2D Avatars page, which saves its PNGTuber setup in the same step; without a usable setup the switch stays off (#7916).
- A character's Sprites tab no longer uploads a whole folder, and its Upload Folder button is gone. Click Add sprites, then Upload images, and select the images inside your folder; selected or dropped images are added once you confirm their count with Import in Import images. Images in subfolders aren't included. A persona's Upload Folder still uploads a whole folder (#8851; thanks @DSBwizzard).
- In Roleplay, the Gallery's Video button now makes a clip of the latest reply, as
/videodoes, instead of animating the newest picture, which could be several messages old. To animate a particular picture, use Animate illustration on it. Thanks to @JamesMowery (#8001).
- Coloring character names inside Roleplay messages is now set per chat, with Color Character Names in Text in Chat Settings → Characters. The global switch in Settings → General → Text Rules is gone: a chat you haven't changed follows what it was set to, so names look the same until you change a chat. Force Solid Colors for Inline Names stays global, and settings profiles carry the new switch. The Card Theming controls, with the Card CSS mode buttons (Disabled, Exclusive and Chat), moved into Chat Settings → Characters, or Party in Game, and show in every Roleplay chat, not only when a card has its own CSS (#8119, #8302).
- Roleplay Messages Background Opacity in Settings → Appearance → Roleplay now decides how see-through every Roleplay message box is. Before, a character's or persona's partly transparent message box color, such as one taken from their avatar, and an applied preset's background kept their own transparency, so the slider couldn't make those messages readable over a scene. Preset gradients and cut corners follow the slider too. Saved colors are unchanged, and custom themes and card CSS that set the background still win (#8424).
- Home bookmarks now show only on the Home tab, and the Other-tab bookmarks (desktop) and Other-tab bookmarks (mobile) switches are gone from Home Widgets → Browser chrome. On phones and tablets in either orientation, and in browser windows under 768 px wide, Home never shows the URL bar or the bookmarks strip; bookmarks open from the bookmark button left of the tabs (#8069).
- Official agents, including downloadable agents you installed, no longer have Copy in the Agents list or its folders. A copy could only be a prompt-based custom agent without the official agent's built-in functions. Custom agents can still be copied. When you create a custom agent, a notice above Description explains that custom agents can have fewer features than official ones; its X closes it without losing your draft (#8150).
- Reimport Embedded Lorebook no longer renames the linked lorebook or resets its category or max recursion depth. It replaces the entries, applies the card book's own settings and keeps everything else. Importing and reimporting an embedded lorebook now use the card book's own token budget, so a book that only carries the default of 512, such as one made in Marinara without a budget, imports at 512 instead of 2048 and fits fewer entries. A Marinara lorebook from another install that was global but limited to chats that don't exist here now imports as not global, for all chats, so it no longer joins every chat: add it to the chats you want (#8786).
- Deleting an Advanced Memory summary saved before v2.0.3 no longer unhides the messages it covered. They stay hidden, as they were before v2.0.3, and you can unhide them by hand. Summaries saved since then still unhide exactly the messages they hid (#8794).
- When the server runs in a terminal, such as from
start.sh,start.bat, the Windows launcher window, Termux orpnpm dev, its console now prints readable lines instead of one JSON object per line, and debug prompts and replies keep their real line breaks instead of showing\n. Request bodies in Decision diagnostics keep their line breaks too. Output sent to a file, a pipe ordocker logsstays JSON. To choose the format yourself, setLOG_FORMAT=jsonto get JSON in a terminal again, orLOG_FORMAT=prettyfor readable lines everywhere, and restart Marinara (#8704).
- In Gacha Forge, the elements now go the other way: Water beats Fire, Fire beats Earth, Earth beats Wind and Wind beats Water, in both kinds of combat, on the Home chart and in the help. Combat Power (CP) is now called Battle Power (BP) everywhere, including sort menus and Recommended BP; saved values don't change. In character chats, Enter adds a new line and only Send sends your message, so a stray Enter can't send a draft early (Marinara-Agents#1719, Marinara-Agents#1735, Marinara-Agents#1754).
- Gacha Forge asks for at least 8,192 output tokens for everything it writes, including character messages and Formation kits, and for 16,384 plus room for reasoning for chapter plans, Character Story plans, story scenes and event chapters, so its writing is cut off less often. A connection whose context window or Max output tokens override leaves less than 8,192 now gets a clear error before any request is made, instead of quietly writing with a smaller limit (Marinara-Agents#1700, Marinara-Agents#1723).
- Gacha Forge's pre-forge setting Story and key images is now Story and images. With Backgrounds on and an image connection, it also paints the places each pre-forged scene visits, in main chapters and Character Stories, so a scene no longer waits for its background. Worlds already on this setting with Backgrounds on start painting places ahead after updating, which uses more image requests; choose Story only or Off, or turn Backgrounds off, to stop that. The art paints alongside the text, so the chapter menu opens as soon as the text is written, and it stops before its next paid picture when you cancel, switch the setting or delete the world (Marinara-Agents#1725).
- Quartermaster bag cards no longer have a × on their image. To remove an image, use the × in the item editor: Delete file removes the picture from every item that uses it, in any chat, and Unlink only detaches it from this chat's item. Image-pack files can't be deleted from Quartermaster (Marinara-Agents#2034; thanks @newfiesledneck).
- A remote AI, image, voice, speech-to-text or RunPod service can no longer redirect Marinara's requests to your own computer or home network, even with local addresses allowed, as they are on Android. Requests sent straight to a local server you set up, and redirects between your own local servers or between remote services, work as before. The DataCat and JannyAI searches in the Card Browser now stay on their own sites and limit the size of their replies (#8772).
Otome Hearth
- New Otome Hearth agent: a single-player otome game made from your own characters, in its own Home → Otome Hearth tab. Its love interests remember what you chose and change because of it, wait for you on Home, message you and go on dates with you, and Wish brings their side stories and looks, paid for only with Starlight you earn by playing: there is no real money, banners never expire and nothing runs on stamina. Install it from the Agent Organizer and restart Marinara when it asks. It needs this version of Marinara and one text connection; images, generated music and voices are optional. It installs and plays without Gacha Forge and never touches its saves. On the computer that runs Marinara it works as it is. A phone, a tablet or another computer that signed in with Marinara's login can play it too; installing or updating it there still needs the admin secret (Marinara-Agents#1790, Marinara-Agents#1812, Marinara-Agents#1844, #8829).
- Setting up an Otome Hearth story takes six steps: a premise, or Surprise me, with the language and how it's written; the persona you play, with pronouns, traits and a goal of your own; two to five love interests of any gender, from your character cards or six original archetypes; content settings; connections; and a review of what forging will cost before Forge our story. Forging writes the world's central mystery and a hidden bible for each love interest, always 18 or over, with their wound, mask, flaws, red lines, voice and secrets that come out stage by stage. A card stays canon, and the bibles sit behind Show spoilers, where you can edit them. The world, and every arc and chapter planned in it, keeps your premise's genre, era and technology; only a mini AU extra story leaves them, on purpose. Each story has its own Heat (SFW by default, NSFW: Fade or NSFW: Explicit), Darkness (Gentle, Angst by default, or Dark romance), Lines & Veils and image rating, and NSFW Heat, Dark romance and image ratings above SFW unlock after a one-time 18+ confirmation (Marinara-Agents#1793, Marinara-Agents#2115).
- Each Otome Hearth main chapter is led by one love interest, picked from two, and builds through six to nine scenes, each written when you reach it, to one climax: a Confrontation or a warm Closer. In a Closer, over three rounds the love interest offers something of themselves and you answer with Reassure, Tease, Mirror (share something of your own) or Ask. It ends with them letting you in (the first time is a first on your Love Timeline), Almost (nothing changes) or with them shutting you out, and after two main chapters end the same way, the next ends with the other. Your first choice in a scene is canon, and replaying shows the other branches without changing anything; Rewrite writes a scene again before you choose, and Ease off ends one at once, with no model call. Each love interest moves through six stages from Mask to Bond, and a free route chapter opens at set affection levels. A walkout can leave a rift that shuts their route until Make it right repairs it. Reading pays Starlight (Marinara-Agents#1800, Marinara-Agents#1808, Marinara-Agents#1943).
- In Otome Hearth, Begin plays a prologue before chapter 1: one short scene of your protagonist's own life just before the story opens, with no love interest in it, and Skip goes straight Home. The story is then told in arcs. Each arc plans 8 to 12 chapters with a goal, a big event at its end and the mystery's reveals set in particular chapters, so the question the story opens with gets answered. The Story screen shows where you are, such as "Arc The drowned bell · chapter 4 of 10", and the chapter list groups chapters under their arc. When an arc closes you choose how the story goes on: Take a breath for a few quiet chapters away from the plot, marked A quiet stretch; Go on with the story for a new arc with a new threat and a new question; or Meet someone new, which brings one of your character cards, or someone invented for the story, into the cast, up to five love interests. Some chapters close on a judgment you may get wrong, such as solving the mystery, naming a traitor or deciding whom to believe: the true answer is always among the options, and what you pick is what happens (Marinara-Agents#1846, Marinara-Agents#1985, Marinara-Agents#1991, Marinara-Agents#2053).
- Otome Hearth chapters vary how they are built and how they end, and make room for other people, scenes without a love interest, ordinary moments and rest after a long day. Your protagonist knows only what the story has shown them, so love interests don't talk as if you already know their past, their habits or the words of their world, and a story set in an existing world, such as Teyvat from Genshin Impact, keeps that world's canon. After something that matters, such as a first kiss or a quarrel, your protagonist sits with it in their own thoughts before the story moves on, and scenes write what they feel in their body, not only what happens. Romance is a slow burn: no one says what they feel before relationship stage 5, and at stage 6 they say it at the first moment a scene allows. Love interests can be genuinely evil, monsters or villains as dark as the story's Darkness allows, and taming them is the point: falling for you doesn't make them good at once, and with the default Angst a love interest can be ruthless with everyone else but never threatens or harms you. With two or more love interests from stage 3 on, they can share an intimate scene with you where the story fits, as far as Heat allows (Marinara-Agents#1924, Marinara-Agents#1950, Marinara-Agents#1956, Marinara-Agents#1959, Marinara-Agents#1961, Marinara-Agents#1979, Marinara-Agents#2055, Marinara-Agents#2090, Marinara-Agents#2098).
- Your persona's whole Description, Personality, Backstory and Appearance reach every Otome Hearth prompt that writes the story or a character's words, and are read again when you open a story and before each chapter, scene, route and date, so changes to the persona carry over. Your protagonist's dialogue, thoughts and choices follow that persona; its scenario, greetings and example dialogue stay out. How it's written, in setup and Settings → Content, holds your own instructions, such as tense, point of view and pacing, for every scene, message and note, and Banned phrases there lists words and phrases you never want to read, so the world and every love interest are written without them from the start (Marinara-Agents#1846, Marinara-Agents#1880, Marinara-Agents#1902, Marinara-Agents#1959, Marinara-Agents#1979).
- Affection in Otome Hearth never falls below the start of the highest level you have reached, so an unlocked level is never lost. A hostile choice the first time you play a scene or date, a Confrontation walkout or being shut out of a Closer costs 15 affection with each love interest it hurts, and replaying never takes affection again. From chapter 4 on, when two to four love interests in a chapter really disagree, Side with one of them gives +30 affection with the one you back and −10 with each of the others, at most once every four main chapters. Level 2 takes 200 affection and each level after it 50 more, up to 600 for level 10, and Story → Between you shows the points toward the next one. Past level 10, every 300 more affection earns a prestige point, shown with three pips under Prestige, and three points unlock an extra story with that love interest through A new story with {name}: a what-if such as a wedding, a family or a honeymoon, a mini AU such as a vampire or modern-day story, or new kinks when NSFW is on. Choices in them change nothing, they never become part of the main story, and losing affection never takes back a story you unlocked (Marinara-Agents#1897, Marinara-Agents#1924, Marinara-Agents#2033, Marinara-Agents#2055, Marinara-Agents#2106).
- Otome Hearth's NSFW modes (NSFW Heat or Dark romance, behind the 18+ confirmation) write romance without stopping to ask: love interests may make the first move and never pause to check in or offer to stop, sex included, and Ease off stays your stop. Crude words, swearing and dirty talk are fine wherever they fit a character's voice. NSFW: Explicit writes sex on the page in full and unhurried, from the build-up to the aftermath, with the characters talking through it, and such a scene may run longer than others. Each new love interest's bible gets their own tastes, kinks included, listed as Into and Drawn to in the spoiler-gated bible where you can edit them, and a love interest from an older cast gets Add intimacy preferences in Your cast (1 Planning call). An optional Sub, Dom or Switch role for your protagonist sits beside Heat in setup and Settings → Content. Your Lines and Veils always win, and story memory keeps an NSFW story as it was written, recording a Veil only as having happened off the page. SFW stories never write or send any of it, though characters may still swear when it fits (Marinara-Agents#1827, Marinara-Agents#1937, Marinara-Agents#1942, Marinara-Agents#1959).
- Otome Hearth remembers the whole story. Each chapter is summarized once, in up to 1,000 words with its key lines and every choice you made, and every story prompt carries the timeline of those summaries, retold in about 5,000 words once it grows past about 14,000 tokens, along with the previous chapter in full as you played it and a few recent small memories such as messages, Snapshots, Read Me and dates. A love interest's route chapters and Character Stories are in the timeline as private, so they remember them and the others act only on what they saw; a date reaches only its own love interest. Another love interest may appear in a Character Story when it truly calls for it, as themselves; one who speaks in it remembers it too, and its summary says which parts they were there for. A summary that fails shows a banner on every screen of the story with what the connection said, Retry the summary and Change connection, instead of failing silently. Retry the summary tries again at once, and the banner comes back only if the summary fails again. A model that reports no context size, such as Marinara's Local Model, can write the summaries, and one too small for them says so. Retelling the timeline leaves thinking models such as Claude Opus 5.5 enough room for their reasoning (Marinara-Agents#2042, Marinara-Agents#2072, Marinara-Agents#2076, Marinara-Agents#2079, Marinara-Agents#2083, Marinara-Agents#2100, Marinara-Agents#2102, Marinara-Agents#2115).
- Otome Hearth shows the cost of every paid image, voice and music action before it spends anything, its guide has a table of what each action costs, and images, music and voices never retry without a tap. It costs less on providers with prompt caching: a chapter's plan, scenes and climax share one story context, made of the rules, the world, the protagonist, the arc, the timeline and the previous chapter, which stays cached for an hour with this version of Marinara, so reading slowly doesn't mean paying to cache it again. Story prompts don't grow with the model's context window: the timeline and recalled memories together stay within about 20,000 tokens. Otome Hearth sends only the reply length, so your connection's own temperature, reasoning effort and other settings apply, and setup and Settings → Connections warn when a story connection has a context window under 32,000 tokens (Marinara-Agents#1844, Marinara-Agents#2072, Marinara-Agents#2076, Marinara-Agents#2092, Marinara-Agents#2093).
- Otome Hearth's Home shows the love interest you pick, or you with Me, cut out over your newest key moment with them or a painted place and tinted by your time of day. Each love interest leaves a handwritten message of the day, curt during a rift, and Reply opens their thread with the note quoted. Tapping their head, hand or heart plays a line written ahead in their own voice, and Rough day? offers comfort, both with no model call. In Messages, each love interest has a private thread, written in whatever carries messages in your world, and Close and remember saves the conversation as a memory only they recall, shows "Remembered by {name}" with the line they keep, and earns 5 affection. With images on, your protagonist has five chibi stickers painted from their look and each love interest has nine, one unlocked at each affection level from 2 to 10; love interests send stickers too, and the Album's Stickers tab shows them all. Love interests who message you each day in Settings → Connections, from 0 to 24 and off by default, sets how many of the love interests you've met may write to you first each day (Marinara-Agents#1812, Marinara-Agents#1846, Marinara-Agents#2059, Marinara-Agents#2076, Marinara-Agents#2079).
- Dates in Otome Hearth is where you spend time with one love interest at a time. Read Them has you pick what they really feel behind five lines and faces, and the tells you learn reach later scenes. Read Me turns it around: they make four guesses about you, from what you want right now to your likes, fears and memories, you answer Spot on, Close or Not at all, and every answer goes into that love interest's notebook of what they know about you, which reaches only their own scenes, notes, messages and dates; you can read it, rewrite your words or delete an entry from Read Me, and guesses never touch your health, medication or cycle. Date Night lets you pick a place, including ones your story painted, and what you both wear, from any look you own and have painted in the Wardrobe, then plays three scenes of choices judged by what they like, with an optional keepsake picture; during a rift it becomes Make it right. Photo Shoot paints one photo of you two from a place, outfits, an expression and a pose for each of you, including shared poses such as a kiss, a hug or a piggyback ride, with no model call; photos go to the Album's Photos tab, and the newest is taped to that love interest's note on Home. The Claw Machine makes no model or image call: take turns at a swinging claw, cheer until they cheat in their own way, and fill a shelf with six series plushies and one of each love interest, as the animal that fits them, in their colours. Every activity pays even when it goes badly, and only the day's rewards are capped (400 Starlight from activities and 300 affection per love interest), never play (Marinara-Agents#1828, Marinara-Agents#1946, Marinara-Agents#1957, Marinara-Agents#1966, Marinara-Agents#2088, Marinara-Agents#2096).
- A Wish in Otome Hearth costs 100 Starlight, or 1,000 for ten, and a new story starts with 2,000. Every 14 days, opening Wish makes three banners: Memories, a love interest's wardrobe and yours. The first rotation each month is seasonal, such as Halloween in October and Christmas in December, in a version that fits your world. Past banners wait in Echoes on the same pity. A Memory (5★) is a key image, a short Character Story and a voiced line, a Moment (4★) is one playable scene with its own illustration, a look is a complete outfit, and a Snapshot (3★) is a short illustrated vignette that only its love interest remembers. The pity count is exact and shown, such as "5★ in 23": a 5★ starts at 1.5% a wish, rises from the 46th wish without one and is certain on the 60th, every 10th wish is at least a 4★, and the 5★ is always the featured item. A wish never calls a model, a duplicate refunds Starlight, and each item's picture is painted the first time you open it. Memories banners follow the story's Heat; looks and the pictures of Moments and Snapshots always stay clothed, and a Memory's art is explicit only under NSFW: Explicit with the Explicit image rating. At affection 10 each love interest gives you a Memory Selector to claim one of their past Memories for free (Marinara-Agents#1827, Marinara-Agents#1894, Marinara-Agents#1932, Marinara-Agents#1952, Marinara-Agents#1973).
- Otome Hearth's Wardrobe keeps your looks and your love interests', shown without their painted backdrop while the original paintings stay saved. Wear at home puts a look on Home, Show off shows a love interest one of your looks and earns 5 affection, the love interest on Home notices when you wear something new, and your featured look and theirs from the same fortnight make a couple set with an optional pair portrait. The story knows the look you wear, from Wear at home or a date, as it knows a love interest's. Each 5★ look comes with a first-wear scene under Read the first-wear scene, and yours is played with the love interest of its couple set, the only one who remembers it. The Album keeps the CGs you have seen, newest first, your Memories (filtered by All, 3★, 4★ or 5★, with unplayed ones first), the Love Timeline, the tells you have learned, your favourite lines and the Soundtrack, which lists each begun chapter's theme after the six mood tracks, and saves pictures through Marinara's own download. The Love Timeline lists each stage and first with a love interest and every Snapshot, Moment and Memory on the day you won it, and each opens from there (Marinara-Agents#1827, Marinara-Agents#1891, Marinara-Agents#1894, Marinara-Agents#1948, Marinara-Agents#2074, Marinara-Agents#2096, Marinara-Agents#2115).
- With an image connection, Otome Hearth paints the cast's looks when you tap Paint the cast, each place once, key moments that join the Album once you've seen them, and five faces per love interest (tender, flustered, cold, hurt and angry) that follow each line. Characters are painted on a bright backdrop that Marinara's free sprite cleanup removes, so they stand on every screen without one. Image style puts your own style words at the front of every image prompt, and Image prompt style picks which Marinara image style profile the pictures follow, each listed with whether it writes sentences or tags. Pictures of two or more people send one labelled picture of each person and say how many people to draw, for fewer extra arms, legs and fingers. A place's background is prepared before its lines begin, with Continue without background to read while it paints, a place you return to reuses its saved picture, and a scene written ahead paints its key image straight away. Nothing is repainted without a tap, Ask before painting and Marinara's prompt review apply to every picture, and the Suggestive image rating is a ceiling, not an instruction: neutral portraits and face edits stay neutral (Marinara-Agents#1808, Marinara-Agents#1844, Marinara-Agents#1849, Marinara-Agents#1873, Marinara-Agents#1891, Marinara-Agents#1902, Marinara-Agents#1924, Marinara-Agents#1966, Marinara-Agents#2001, Marinara-Agents#2005, Marinara-Agents#2096).
- In Otome Hearth's Your cast (Settings → Stories → Open your cast), Repaint paints a love interest's look again, and Repaint expressions replaces the five faces for the look they wear, after one review of all five prompts when prompt review is on; the current faces stay until the new ones are ready. Image appearance, above each love interest's spoiler bible, changes how they look in future pictures and scenes without repainting anything, and clearing it goes back to the bible's description. Character card links a love interest to one of your character cards, so its voice and pictures are used, its Full Body → Neutral sprite first, while their story, progress and pictures stay; No linked card removes the link. Each love interest's name plate and glow take a colour from their look, and no two in a cast match. Pictures of your persona always use its current Appearance, or its Image Appearance Override when that is on. Open your stories switches, starts or deletes a story (Marinara-Agents#1849, Marinara-Agents#1862, Marinara-Agents#1867, Marinara-Agents#1877, Marinara-Agents#1924, Marinara-Agents#1966, Marinara-Agents#1971).
- Otome Hearth plays fully without an image connection. Image description in Your cast, Who's home and owned Wardrobe looks shows how a character or look is meant to appear without opening bible spoilers, and the story header shows the place's description, or a key moment's brief, while that picture is missing. When you add an image connection later in Settings → Images, saving paints nothing, and a place or key moment you have reached without a picture offers Paint with its cost and the usual prompt review. When someone outside your love interests speaks, the previous character leaves the stage, and if exactly one of your character cards has that name, its Full Body sprite stands in once it passes a background check or Marinara's free cleanup; otherwise the stage stays empty (Marinara-Agents#1882, Marinara-Agents#1897, Marinara-Agents#1911, Marinara-Agents#1932, Marinara-Agents#1942).
- Music in Otome Hearth follows each scene's mood, from Marinara's own library or tracks written for the world, and dialogue is voiced with each card's assigned voice or a default one, while narration and thoughts stay silent. With Generate music on, Settings → Audio → Generate a theme for each chapter (off by default) gives every chapter its own instrumental theme, made after you start reading and reused on replay. With Generate music off, Music folder plays the tracks of one of your Assets music folders instead of the mood library (Marinara-Agents#1808, Marinara-Agents#1878, Marinara-Agents#1924).
- Remind Me, on Otome Hearth's Home, shows a month at a time: each love interest's birthday, the day your story began, the firsts on your Love Timeline, the last day of each running banner, and your own birthday if you add it, which stays on this device. Settings → Tracker has an optional period tracker, for anyone who has periods. It is off by default and kept only in this browser: logged days show as filled hearts, predicted ones as outlined hearts, and it never calls a period late. An export moves it to another device, and Delete all cycle data removes it in one click. On a tracked day, Caring message has the love interest on Home write you a note from one line about today; the history never reaches a prompt. With Keep it off the model, or while any debug logging is on, a comfort line written ahead answers instead and nothing is sent. Love interests comfort you and never diagnose (Marinara-Agents#1829).
- While Otome Hearth plans a chapter, What happened so far… shows the story so far to scroll through, told as a recollection of the timeline. While a scene is being written, Play Who said what? starts a small game: match lines from the story to the love interest who said them, with a running tally. It makes no model calls and goes away when the scene is ready (Marinara-Agents#2043, Marinara-Agents#2050).
- In Otome Hearth's reader, a love interest's sprite leaves the stage when they leave the scene, a 5★ look's first-wear scene shows them in that look, and on a wide screen scene art shows whole, framed by a blurred copy of itself. On desktop, Full screen fills the Home panel across every screen, the reader and Wish included, keeping your draft and reading position. On phones, chapter cut-outs continue behind the dialogue panel, the three-dot button opens Auto, Skip, Hide, Backlog, Rewrite and Ease off beside the mute and fullscreen buttons, and Settings' categories scroll in one row. It plays by keyboard with visible focus and follows Marinara's Reduce Ambient Animations & Effects: stars, parallax, typing text and frosted glass stop, while the Claw Machine's game feedback still plays (Marinara-Agents#1844, Marinara-Agents#1858, Marinara-Agents#1865, Marinara-Agents#1869, Marinara-Agents#1888, Marinara-Agents#1924, Marinara-Agents#1928, Marinara-Agents#1942, Marinara-Agents#2023, Marinara-Agents#2027, Marinara-Agents#2037, Marinara-Agents#2052, Marinara-Agents#2098).
Connections
- The Connections panel is organized by account. An account is one key, sign-in or address for a provider, and the models you save from it sit under it, with badges for their job, Custom settings, price or Plan. Add opens Add account, with providers grouped by kind (Chat, Decisions, Images & video and Voice) and a search box: paste the key and select Connect, and Marinara tests it, says why when it fails and offers Continue anyway for servers on your computer. Adding your first account goes on to picking a model, with Make … my Main model. The Jobs box (formerly Defaults) shows which model does each job, such as Main for chat replies or Images, and each job's row opens its model, fallback and settings. An account's ⋯ menu has Edit account, Replace key, Test, Add model, Select models, Duplicate, Turn off and Delete account, which first lists the jobs, chats and agents still using it, and a model's menu adds Move to account…, Folder, Add to Shuffle and Change picture. Accounts fold, Show only Off or Needs key finds the ones to fix, and exports still never include keys (#8456).
- Every model picker now has two panes: Starred and your accounts on the left, the models of the one you pick on the right. That covers the link button in the chat's message box, the phone Quick Switcher, Chat Settings, Professor Mari's message box and every job field in Connections. A strip at the top shows the current model, whether it is for this chat only or follows Main, and Use default. One search box searches the chosen account, or every account from Starred, with a link to widen the search to all accounts. An account lists its starred models first, then All models with a refresh button. The picker opens on Starred; a job picker with nothing starred for that job opens on the current pick's account and lists only accounts the job can use. On a phone it shows one pane at a time, and All connections goes back to the account list (#8677, #8684, #8840).
- In the Connections Jobs list, a job whose account is off or needs a key shows one small fix button, ⚠ Turn on or ⚠ Add key, so the job name stays readable in a narrow sidebar, and amber is kept for real problems such as ⚠ No model. The optional built-in model shows a grey Set up and Not downloaded instead of a warning, and the Built-in model row below the Jobs box offers Download until the model is on your device. A plan multiplier such as ×2 is grey like Paid. Cloud voices such as ElevenLabs stay on the Voice job instead of showing under On this device, which lists only PocketTTS, a voice job that shows Off has its Turn on button, and Add models on an ElevenLabs account opens its model picker and default voice (#8666, #8678, #8683, #8686, #8845).
- When you add or edit an account, the address and key fields check themselves a moment after you stop typing or paste, and show a spinner, a green check, a warning or an error, with Check again when a check fails. A wrong address or a mistyped key shows up before you save, and a check saves nothing. A changed address is checked without your saved key, so a half-typed address never receives it, and a server that doesn't answer is reported as not answering instead of as an error code. The Add and Edit windows share one layout: one header, the key first for cloud services, with their address under More options, which opens when the address check warns, and the address first for a local server. Edit lists access, models, Usage and balance and More options in that order, with Delete, Cancel and Save always visible at the bottom. Accounts without a live check, such as image, voice and subscription sign-ins, keep the Test row (#8764).
- When you update, NanoGPT connections whose embedding address is on
api.nano-gpt.comjoin their NanoGPT account like the others, so the account lists their models in the model picker; an embedding address on another site still keeps a connection out of its account, so its key isn't sent to another host. Deleting a model, unstarring it or moving it to another service waits for chat settings that are still saving, so a chat keeps its model pick. A chat whose pick was the deleted model keeps that model through another entry of the same connection when there is one, and otherwise shows the notice that its model was deleted. A copy of a connection that is still waiting for import review, including one made by splitting models off it, stays under review, and its models can't send chat text until its address or key is saved on this install (#8674, #8780).
- New Music & Sound Effects connections make instrumental music and sound effects, separately from character voices, with ElevenLabs, SunoAPI or a Custom compatible server, such as an OpenAI-compatible audio server that answers in Prompt JSON → MP3 audio or Chat Completions → inline audio (ACE-Step compatible) format. Each has its own Music model and Sound-effect model, Music generation and Sound-effect generation switches, and its own job and fallback in the Connections Jobs box. Game Mode uses one for generated scene music and sounds, Roleplay's
[sound: description]command uses one once Sound effects is on in its command settings, and downloadable agents such as Gacha Forge can use them too. ElevenLabs offers Eleven Music v2.5, and its sound effects get a length that fits each cue instead of always 5 seconds. Generate test music on a saved connection makes and plays one short instrumental track, a paid request Marinara never repeats on its own, explains a wrong key or a missing permission, and no longer leaves its sample in the Music DJ's library. SunoAPI music needs a public HTTPS callback address that you provide, and bundled Game audio still plays with generation off. Add account has no tile for these connections yet: you get one when you update from an Audio connection that made Game music or sound effects, when you turn on Game music or Game sound effects on an ElevenLabs voice connection and save it, or by importing one with Import a backup in Connections (#8027, #8167, #8214, #8223, #8227, #8754, #8790).
- Claude (Subscription) connections with Extended token caching (1 hour) on work again. In 2.5.1 every request failed with "A maximum of 4 blocks with cache_control may be provided. Found 5." Claude now reads the earlier chat history from its cache with the setting on or off. Thanks to @stonebystone (#7926).
- When a connection with an If it fails fallback breaks off partway through a streamed reply, tool rounds, Professor Mari, agents and packages now get the first connection's error instead of its partial text with the fallback's whole reply added after it. Steps that stream only to show progress, such as Game setup, session conclusions, campaign progression and Lorebook Keeper, still switch to the fallback. Packages such as Otome Hearth, Gacha Forge and Long-Term Memory get an error when the stream breaks, so they no longer save a cut-off scene or memory as finished. Replies from OpenAI-compatible servers that ignore streaming and answer all at once no longer come back empty (#8778).
- Models that aren't on Marinara's model list, such as ones behind a proxy or gateway, now receive the tools that Professor Mari, Game Mode and agents ask for, instead of answering in plain text, and an endpoint that refuses tools says so. Endpoints that refuse tool results in the history, such as LinkAPI serving Claude through an OpenAI connection, get the earlier tool rounds retold as text, so the second tool round no longer fails with
Unexpected role "tool". Marinara remembers this for that endpoint and model for an hour (#8576, #8585).
- A Claude model with thinking on, reached through an OpenAI-compatible endpoint or proxy, no longer fails with a 400 error on the round after a tool call, such as a Game Mode dice roll. Marinara now sends back only Claude's signed thinking, retells a tool round that has no text as plain text, and drops empty replies from the history. If such an endpoint still refuses with an Anthropic error, Marinara retries once in that shape, even when the model's name doesn't say Claude. A 400 from a Chat Completions endpoint now logs the provider's answer and the shape of the request, without its text, and debug mode shows the retried prompt (#8165, #8172, #8188).
- Gemini 3 models no longer fail with a 400 about a missing thought signature on the round after a tool call, on a Google connection or an OpenAI-compatible one. Marinara sends each call's thought signature back, and when a gateway drops it, sends Google's documented placeholder instead. If Gemini still refuses, the error shows the provider's message and no longer tells you to turn on a setting that doesn't exist (#8262, #8270).
- Custom OpenAI-compatible connections, such as LiteLLM, new-api or one-api, now send the reasoning effort you pick for Claude, Gemini, DeepSeek, Qwen and similar reasoning models; outside OpenAI's models, xhigh and max are sent as high. If the gateway refuses the setting, the request is sent once more without it, and an effort you set in Custom Parameters is left alone (#8389).
- Requests from a chat to OpenAI's own API and to OpenAI (ChatGPT) now carry a cache key for that chat, so turns that start the same way reuse OpenAI's prompt cache and cost less input. The key is a hash, so the chat's ID never leaves your server, and other OpenAI-compatible endpoints don't get one. Debug mode also logs the provider's token usage (#8276).
- Test embedding in a connection's Semantic search (embeddings) section checks the embedding model before you vectorize a lorebook. It saves your edits first and shows the result in place, such as "Success · 1536 dimensions · 210 ms", or the provider's error. The embeddings job's test now uses the connection's Embedding endpoint URL and Embedding provider, as semantic search does, so it no longer passes while search fails or the other way round, and a connection with no embedding model says so (#8667).
- If one GPU runs both your local text model and your local image or video backend, such as llama-swap with llama.cpp and ComfyUI, list that server in
MARINARA_SHARED_GPU_HOSTS(comma-separatedhost:port) and text and media requests take turns instead of fighting over it. Requests of one kind run together, neither kind can hold the other back forever, and the GPU swaps once per turn. A picture or clip waits at mostMARINARA_MEDIA_GENERATION_WAIT_TIMEOUT_MSfor its turn, 10 minutes by default, and changes in.envapply without a restart. A ComfyUI video that waits behind a render queue no longer fails after five minutes; it gets theVIDEO_GEN_TIMEOUTlimit. A selfie whose prompt comes back empty now says so instead of ending without a word. Thanks to @JamesMowery (#8018).
- ToAPIs works for pictures and video through the existing connection types: choose Image Generation → OpenAI (DALL-E) or Video Generation → Seedance 2.0 with
https://toapis.com/v1orhttps://toapis.cn/v1, your API key and a model ID you type, such asgpt-image-2orseedance-2-mini. Text keeps working through Custom (OAI-Compatible). Pictures are one 1k image with at most one reference, at 1:1, 16:9, 9:16, 3:2 or 2:3; videos are 4 seconds at 480p and 16:9, without sound, from text or one first frame. Settings it can't do are refused before you pay for a task, and once a paid task may exist, a failure never buys a replacement through a fallback connection. Noodle and Slurp follow this from Noodle 1.5.9 and Slurp 0.3.53 (#7941).
- Featherless works on a Custom (OpenAI-compatible) connection: Fetch Models, the connection test and chat replies no longer fail with
404: Gone. Marinara now names itself asMarinaraEngine/<version>on requests to AI providers that don't set their own User-Agent (#8357, #8358).
- On Apple Silicon Macs, the Local Model's MLX runtime is updated to MLX 0.32.4 and mlx-lm 0.32.2. An existing MLX setup now updates in place instead of failing, and your downloaded models stay. Test no longer reports an empty reply when the model spends its short test on hidden thinking (#8139).
- Reopening a saved Seedance video connection keeps its video defaults and Upload Seedance reference frames temporarily as you saved them, instead of showing them cleared. With that upload off, an original PNG or JPEG picture from the Global Gallery is sent to Seedance as a link on your public HTTPS address when one is set (#8257).
- Reopening a saved NovelAI, ComfyUI or Automatic1111 image connection keeps its generation setup, such as its seed, as you saved it, instead of showing the defaults (#8869).
- A text-only llama.cpp server that answers a lorebook's reference images with an "image input is not supported" server error now gets the reply asked again without the images, as other providers already did, instead of the whole reply failing. The lorebook text and captions still go along, with the usual skipped-image notice (#8484).
- Refreshing the model list of an Arli AI image account lists its image models instead of its chat models (#8364).
- In Connections, drag a model row onto an account card, or long-press it on a touch screen, to move it. On an account of the same service it moves at once; on another service it opens Move to account with that account chosen. Move to account… is greyed out in a model's menu, with the reason, when the model has nowhere to go, such as a model that uses another account's key, or an image, video or subscription model that is alone on its account and has no other account of its service to move to. The Starred tab of the model picker has Edit order to put your starred models in the order you like (#8822).
- On desktop, the model menu you open from the chat's message box has a solid background, so a busy chat background no longer shows through its text in dark or light theme. With Apply preset colors on, the chat's color still tints it (#8833, #8842).
- In Add account and the connection editor, picking a model that its service lists without a context size, such as Claude Opus 5.5 on Claude (Subscription), now sets the context Marinara knows for that model, 1M for Opus 5.5, instead of leaving Max context window at its earlier value, such as 128K. Custom connections don't get this. The connection editor also no longer shows Max output: 0 for a model whose output limit isn't known (#8846).
Saucelings
- New Saucelings agent: a Tamagotchi-style pet in Home → Saucelings and on the Home widget grid. Install it from the Agent Organizer, restart Marinara when asked, and pick one of your characters to look after an egg. The caretaker brings an egg that suits their personality, then feeds, plays with and cuddles the sauceling on their own schedule, guided by a care profile read from their card, and when you open Home they tell you in their own words what they did. You cover the gaps they missed, and a hungry sauceling stops growing. Saucelings has five tabs: Nook, Journal, Album, Menagerie and Settings, and every text and image request goes through your own connections (Marinara-Agents#1756, Marinara-Agents#1764, Marinara-Agents#1775, Marinara-Agents#1908).
- In Saucelings, how you and the caretaker look after a pasta sauceling shifts its sauce temperament from Marinara to one of six others, and other kinds take after whoever found their egg. Some eggs turn up only at certain times of year, special eggs are earned by caring well over time, and a happy sauceling close to its caretaker may be offered a new look in Evolve…. The Nook is a pixel-art stage where the sauceling walks, hops and naps and comes over when you tap; the caretaker stands beside it with their sprites or, with image generation on, a painted pixel figure, and you can upload or generate backgrounds. The large Home widget shows the Nook's stage with Feed and Play buttons. Elders retire to the Menagerie and can come back later, the Album keeps optional paintings, and with Egg hunting on, the default, a character replying to you in a chat may find an egg invented from their card, at most once a day. You can take one new egg a day (Marinara-Agents#1756, Marinara-Agents#1764, Marinara-Agents#1775, Marinara-Agents#1908).
Story Writer
- New Story Writer agent: a co-writing book for long stories and fanfiction. Install it from the Agent Organizer, restart Marinara when asked, and open Home → Story Writer. Pick a connection and the characters, personas and lorebooks, describe the story, and Write next chapter writes it onto the page, streaming or all at once. The book is an open antique book on a wooden desk that turns its pages, or an e-book reader, in light or dark mode with your choice of font, color and size, and it shows Markdown such as italics, bold and
scene breaks. Click anywhere on the page to edit, including an empty page to start the story or a chapter yourself, and Write carries on from there. A sticky Author's note* in a top corner holds your instructions for the next chapter and, like Roleplay's Author's Notes, goes in at a depth you choose. It needs this version of Marinara (Marinara-Agents#1704).
- Story Writer's sidebar opens from the arrow tab at the left or right edge. It holds your stories; the story's details, such as overview, fandom, genre, rating, relationships, warnings, tags, author and narration style, language and notes; cast and world; writing settings, with the connection, chapter length, a story length target, chapter titles, the continue message, the prompt and banned phrases; and author tools: chapter summaries, keeping the last chapters in full, auto-summarize, and a timeline the model follows and can update after each chapter. Edit connection opens the connection editor, and closing it brings you back to Story Writer. Stories save on the server, and you can duplicate or delete them or download them as Markdown or plain text; Save now or Ctrl/Cmd+S saves at once. Buttons stop, continue, rewrite after a confirm or finish the last chapter, and a word count shows progress toward your target. Leaving while a chapter is being written, for example by reloading or closing the tab, stops the generation, so the provider doesn't keep writing, and billing, for nobody. With Debug mode on, its prompts and replies are logged like other generations. A phone shows one page upright and the two-page spread sideways (#8341, Marinara-Agents#1704, Marinara-Agents#1716).
Agent Organizer and agents
- Download Agents is now the Agent Organizer, a store for agents. Home shows featured agents, such as Otome Hearth, Long-Term Memory and 2D Avatars, starter kits that bring together agents for one kind of play, and a shelf for each section, such as Apps, Chat games, Writing help and Trackers. Updates lists installed agents with a newer version, Installed lists everything you have with its version and size, and Not installed lists every agent you don't have yet, for the chat mode you filter by. Every agent has its own page with its logo, banner, tagline, screenshots and How to use it steps. Get installs it, Uninstall is in its ⋯ menu, and the ⋯ menu by the title has Update all, Install all, Refresh catalog and Uninstall all. In the update window, clear the box of an update to skip it; each row then shows Updated or Failed with Retry, and Restart now when one needs it. Downloaded agents show their store logo in Agents, and an agent's settings page uses its banner as the header (#8494, #8862, Marinara-Agents#1921, Marinara-Agents#1926).
- The agent update dialog keeps What's new closed until you open it, even with only one update. Update all in the Agent Organizer opens its Updates page and updates agents one at a time, with Waiting, Updating…, Updated or Failed on each row, like the update dialog. A failed row shows its error and Retry, and updated rows stay listed until you leave the page. When an agent has an update, its Update button sits in the agent page's header beside Refresh, on phones too (#8249, #8517, #8522).
- Agent settings pages share one header with the store banner, logo, name, author and version, and the page's buttons. On a phone it shrinks to one row once you scroll down and grows back at the top, and on wide screens the banner sits centered over the form with soft edges. Downloaded agents without their own settings page get the same header, with an Active switch for the open chat and Manage package, and packages can ask the Engine to draw it and add their own buttons (Capability API 1.390). Get and Update are filled buttons, and the store page drops its menu, which only offered the page you were on. The Agent Organizer and agent pages fit a phone's width without sideways scrolling (#8501, #8549, #8575, #8594).
- With no chat open, the Agents sidebar groups agents into the Agent Organizer's sections, such as Memory & lore, Writing help, Trackers and Pictures & sound, each with a small icon, instead of Writing, Tracker and Misc agents. In a Roleplay chat, each agent in the Agents panel's In this chat list has a sliders button beside its check mark that opens Chat Settings at that agent's options for this chat; custom agents open the shared custom agents options, and agents without options of their own open the Agents section (#8540, #8546).
- The Conversation, Roleplay and Game filters in the Agents list now show only agents that work in that mode, so Roleplay-only agents no longer appear under Conversation or Game. Agents for several modes show under each of them, standalone apps show only under All, and the filters work together with search and inside folders (#8150, #8218).
- A writing, tracking or custom agent can have its own reference lorebook in a chat. In Chat Settings → Agents, open the agent's settings, turn on Attach lorebook for the specific agent and choose a book under Reference lorebook. Its entries trigger by the usual rules and budgets and go only to that agent in this chat, retries included, not to the main reply or to other agents, though agents running together may see them too. The choice doesn't change the agent anywhere else. World Maps has the same choice in Roleplay and Game chats: its triggered entries reach map creation, replacement, expansion and prompt previews, alongside the lore sources you pick in the map builder, and it stops before calling the model when the lorebook makes a map request too long. That World Maps version needs this version of Marinara; an older Marinara keeps the version you have (#8153, Marinara-Agents#1604, Marinara-Agents#1614).
- Duplicating an installed agent now makes a custom agent with all its current settings, default tools and prompts, including ones you never changed, and Music DJ's chosen provider prompt (#8097).
- Home packages such as Gacha Forge can now expand to fill Marinara's content area. Gacha Forge's fullscreen button beside Settings does this: Home's tabs, address and bookmarks hide while Marinara's top bar stays, and they come back when you close or leave the package, switch to another browser tab or the package fails. It works on iPhone Safari, which can't use browser fullscreen. In Gacha Forge, every screen then fills the available width and height instead of a fixed 16:9 frame, and an unfinished world draft is kept while you switch (Capability API 1.376) (#8123, Marinara-Agents#1592).
- Noodle, Conversation Calls and Slurp no longer log "Could not auto-create .env file" at startup or leave an empty
.envfile in Marinara'spackagesfolder. Downloadable agents now read the same.envas Marinara, with no agent update needed (#8669).
- Downloaded agents such as World Maps and Slurp no longer fail to turn on with an
innerTypeerror on installs that keep their dependencies in a shared folder or use a data folder outside the Marinara folder. An agent turned off by that error starts again after updating, with its version, settings and data kept, and when part of Marinara itself is missing, the error says so instead of blaming the agent or rolling it back (#8394).
- Agent package screens can no longer be broken by HTML in a chat message or card that is on screen when they load. Before, such HTML could stop them working until a reload (#8788).
- Typing
?in an agent's text field, such as a Gacha Forge message, no longer opens Marinara's keyboard shortcuts and loses the character (#8315).
- When an agent that picks which characters take part before a reply fails, its prompt now goes to each connection once. Before, the fallback connection got the same request twice, and a rate-limited request was retried inside another retry, up to 49 times on the main connection and 56 on the fallback instead of 7 each (#8702).
- The agent catalog lists rulesets and Experiences published as
.ruleset.jsonand.experience.jsonfiles. Before, one such entry stopped the whole catalog from showing (#8390).
- On Claude connections that use an Anthropic API key, agent packages such as Otome Hearth can mark the part of their prompts that stays the same, such as instructions, cast and story memory, for Claude's prompt cache. Later calls in a chapter then read it from the cache at a fraction of the input price instead of paying for it in full again. Marked calls are cached even when caching is off on the connection, and a package can ask for the 1-hour cache so the context lasts between scenes. Package calls without marks are sent exactly as before. OpenAI, Gemini, xAI and DeepSeek cache repeated prompts on their own, and Claude (Subscription) caches by itself; Claude through OpenRouter or another OpenAI-compatible address isn't cached this way yet. For package developers: Capability API 1.814 adds
cacheBreakpointto language model messages and reports cached and cache-write prompt tokens in usage, and 1.815 adds thecacheTtloption. Older Marinara versions ignore both (#8698, #8748).
- Downloadable agents can now animate a picture saved in your Global Gallery with one of your video connections (Capability API 1.384). Gacha Forge uses this for animated banners, and a looping clip asks for matching first and last frames where the video service supports it (#8249, #8257).
- For agent authors, Capability API 1.385 to 1.391 adds:
services.imageDownloads, Marinara's gallery picture saving with the iPhone share sheet, which Gacha Forge uses to save backgrounds;openConnection, to open a saved connection from a Home tab and come back to it;persistence.listChatSummaries, to read a chat's summaries;registerService(key, service, { hostOnly: true }), for a service only Marinara itself can read, which other agents can't reach;setMessagesHiddenFromAI, to hide or show chat messages from the AI, which never changes a message you hid or showed by hand; and reading a chat's Advanced Memory scene summaries, with one optional instruction a package can add to the scene summary request to store its own notes for that scene from the same call. Without a package that asks, the summary request is unchanged. On older versions of Marinara,hostOnlyis ignored and the service stays readable. The package developer guide covers them, and how browser agents use/api/generate/rawwithdebugMode(#8334, #8341, #8361, #8413, #8496, #8592).
- For agent authors, Capability API 1.377 adds a
motion/reacthost module with Motion 14, which Marinara itself now uses. Installed packages that importframer-motionkeep getting Motion 13 and need no rebuild. A package that importsmotion/reactmust declare Capability API 1.377 or newer, and older versions of Marinara refuse it rather than handing it Motion 13. The two versions don't share presence,MotionConfig, layout groups or motion values, so keep each animation tree on one of them; the package developer guide covers this (#8134).
Sign-in and remote access
- You can set Marinara's login from the browser instead of
.env. While no login exists and Marinara listens beyond this computer, the server log prints a one-time setup code (docker logsfor Docker): type it on the setup page from any device, or set the login under Remote login in Settings → Advanced → Access on the computer that runs Marinara. The same page changes or removes the login, lists Signed-in devices and signs them out, and Add a device makes a one-time pairing code, valid for 5 minutes, to sign in a new device without the password. A login in.envstill wins. If you forget the password, runnode scripts/reset-login.mjsin the Marinara folder, or throughdocker execfor Docker. Behind a login proxy such as Authelia, Authentik or tinyauth, setTRUSTED_AUTH_PROXYto the proxy's address to skip the second login for requests from that proxy only (#8102).
- Settings → Advanced → Access shows who can open Marinara without a password, such as devices on your local network, on Tailscale, through Docker or through a proxy, or anyone who can reach the computer, and how to stop each. Only the owner sees it. When that list isn't empty, a banner says Others can open Marinara without a password with Review access, and the server log warns at startup. An
IP_ALLOWLISTentry as broad as0.0.0.0/0or::/0counts as open to the internet. When Marinara runs in Docker without a login and trusts the container gateway, it warns at startup that on Docker Desktop, OrbStack and rootless Docker every device reaching a published port arrives from that gateway: keep the port on 127.0.0.1, as the default Compose file does, or set a login before you publish it to your network (#7955, #7988, #8553).
- With a login set, every password or code the server checks now counts toward the lockout after 10 wrong tries, and a locked-out address stays locked for the full 15 minutes, however many other addresses are signing in. When the server is already counting 4,096 addresses, a new one is asked to wait ("Too many sign-ins at once. Try again in a moment.") until room frees up. Browsers that are signed in, this computer,
IP_ALLOWLISTand trusted Tailscale or Docker peers aren't affected. A Basic Auth header doesn't skip the sign-in page's form; scripts and API clients can still send one everywhere else (#8775).
- The setup page that blocks other devices, and the matching error replies and log line, now point only to setting a login, or the IP allowlist for devices that connect directly, with a link to the Remote Access guide for other options.
/api/healthtells visitors who aren't allowed in only that Marinara is up, still with status 200 so uptime monitors keep working. The server warns at startup when only one ofBASIC_AUTH_USERandBASIC_AUTH_PASSis set, since a half-set login does nothing (#7936, #8003).
- Every page Marinara serves now asks search engines not to index it. This doesn't protect an install or remove pages already listed; a login does the protecting (#7924).
- The admin secret can be made in the app. In Settings → Advanced → Admin Access on the computer that runs Marinara, Make admin secret shows a new secret once and saves it in that browser; type it on each other device in the same place. Replace admin secret and Remove admin secret change it. Only that computer, or a device that already has the secret, can make or change it, and an
ADMIN_SECRETin.envstill wins. With Docker, Marinara doesn't count your browser as that computer, so set the first secret asADMIN_SECRETin.env. A browser signed in with your login can now use installed agents, such as Otome Hearth, without the secret; installing, updating and removing agents still needs it (#8829).
2D and 3D Avatars
- 3D Avatars can show rigged characters from a plain
.glbor.fbxfile, such as Mixamo, Ready Player Me, VRoid FBX, Unity, Unreal or Blender exports, which were refused before as not being a VRM. Choose GLB or FBX model and Import GLB or FBX: bones named the usual ways are matched to the body by themselves, and setup shows how many of the 22 body bones matched and which blend shapes are used for each face, mouth shape and blink, which you can change. The avatar breathes, blinks, changes faces and talks like a VRM, and a model without blend shapes still moves its body and talks. Models in an A-pose, facing away or measured in centimetres are straightened, turned and scaled. A file that can't be used is refused with a plain reason, such as a VRM saved as.glb, a rig missing the bones it names or an FBX older than 7.0, and an FBX without embedded textures gets a warning. The agent's store description now lists every file type it takes (#8656, Marinara-Agents#2038).
- 3D Avatars can show MMD models. Choose MMD PMX model under Avatar type and select Import PMX or ZIP with a ZIP holding one PMX model and its pictures, folders and file names kept, Japanese ones included, also from ZIPs made on Japanese Windows; a model that needs no pictures can be a
.pmxon its own. Textures whose names differ from the model's in letter case or Unicode form are found, and missing textures are refused. Under Faces and mouth shapes, pick the model's face for each feeling, its mouth shapes and its blink, with common English and Japanese names matched for you. An optional.vmdunder VMD motion plays while Idle motion is on, and without one the model sways gently. PMX 2.0 and compatible 2.1 models work. PMD models, VPD poses, camera and light motion and physics are not supported, so hair and clothes may hang differently than in MikuMikuDance. It needs WebGL2, and importing or playing a model sends nothing to an AI provider. Other ZIP imports read Japanese file names correctly too (#8481, #8790).
- In group chats, every participant with an avatar now shows, with no limit of two on a phone and four on a computer. Each reply moves the face and mouth of whoever is speaking: the character who answers in Individual replies, and the speaker named by speaker tags or dialogue in Merged replies, while an unknown speaker stays still. When a voice starts, only that voice's owner moves their mouth (#7916).
- Blink and talk pictures in 2D Avatars work on dark skin. Talk pictures for dark-skinned characters were refused almost every time with "The image model didn't open the mouth in this picture"; a dark mouth on dark skin now counts like any other. A blink over pale skin and light eyes no longer leaves the open iris showing under the lid, because the whole eye or mouth now comes from the new picture, while the rest of the sprite stays exactly as it was (#7974).
Video and images
- Characters and the Illustrator can make video clips on their own. Thanks to @JamesMowery (#7993).
- In Conversation, turn on Generated Videos under Video messages in the chat's Illustrator settings (it also shows as Videos in the Commands list of chat setup and Chat Settings), and a character sends a clip when it fits, as it does with selfies. It is off by default and needs a working video connection. A clip that names you shows your persona and is listed in your persona's gallery.
- In Roleplay, Illustrator makes offers Pictures (the default), Pictures and clips, where Illustrator may animate the picture it just drew when the moment is about motion, and Clips only, where each picture becomes a clip's first frame and is shown instead if the clip fails. First frame now shows in Roleplay too, and a clip without a picture is written by the new Roleplay Clip Director prompt under Settings → Generations → Video Generation Prompt Overrides. A reply's Illustrate button follows these choices, and without a working video connection Illustrator makes pictures.
- Video Run Interval sets how many messages must pass after an automatic clip before the next one (5 by default, 0 stops them), and Videos per reply in Settings → Generations → Video Generation allows 1 to 10 clips per reply (3 by default). Clips you ask for with
/video, Video, Animate or Illustrate are never limited, and Stop stops a clip in progress. The interval Illustrator already had is now called Image Run Interval and works as before.
- Roleplay has
/video: on its own, or followed by a description, it makes a clip of the latest reply or of what you describe, under the newest reply, following the chat's First frame. The new Video clips Roleplay Command (off by default; needs Illustrator in the chat and a video connection) lets the storyteller ask for a clip with[video: …]when a moment is about motion, within the Video Run Interval and Videos per reply. Expose media prompts before sending covers both. Thanks to @JamesMowery (#8001).
- In Conversation, the note that a character sent a video message now keeps only the words of the clip's prompt, so characters no longer copy a technical prompt format into their own
[video: …]and break it. Peek prompt now shows the photo, selfie and video notes the model gets, and asking for a "group video" starts from a group selfie instead of one with only the sender. Thanks to @JamesMowery (#8010).
- GPT Image 2.6 Flare and Sunburst are in the image model list for OpenAI (DALL-E). For still pictures they work like GPT Image 2.5, with the same sizes, small requests scaled up, Image quality up to Max and transparent backgrounds. For agent authors, Capability API 1.816 lets a downloadable agent ask GPT Image 2.6 on an OpenAI (DALL-E) connection for a short looping GIF through
images.generate; any other model or service, and a request that sends a picture, is refused before anything is paid for (#8872).
- Save generated images as WebP in Settings → Generations → Overall Generations, off by default, saves new generated images as WebP to use less disk space, with a WebP quality from 1 to 100 (95 by default). It covers Game backgrounds, Roleplay Background agent images and scene illustrations too, and regenerating a background after changing the setting replaces the old file and keeps its folder and star. Transparency is kept, animated pictures and images you already have stay as they are, and if a conversion fails, the original image is kept, so you never pay for it twice. Game scene and Storyboard animations can start from WebP pictures too; a direct Seedance connection needs Upload Seedance reference frames temporarily on for that (#8300, #8790).
- Pictures from a narrator's
[illustrate: ...]command or the Gallery's Illustrate button now draw on the chat's active lorebook entries, chat summary and author's notes, following the Illustrator's Context Sources, so places, outfits and items known only from lore reach the picture. In Roleplay chats with World Maps, the Illustrator's image prompts also get the current place's path and public description when its Tracker data source is on. They read the place after the narrator's move in that reply, so the picture and its location reference image show the new room instead of the previous one (#8247, #8252).
- Grok (xAI) images made without a reference picture, such as an avatar for a character who has none, now save correctly instead of failing or coming out broken after xAI made and charged for them. JPEG and other images from OpenAI-compatible providers and Together AI are saved with their real type (#8423).
- OpenRouter video connections offer MiniMax: H3 Max and ByteDance: Seedance 2.5, in the model list and from Fetch Models, each limited to the lengths and resolutions it supports, including H3 Max's 768p. OpenRouter video jobs no longer fail after they are sent when OpenRouter answers with a short relative link to check on them, and your OpenRouter key now goes only to OpenRouter, not to the public site a finished video downloads from (#8300, #8338).
- NanoBanana 2.1 on NanoGPT no longer refuses avatar and picture sizes: Marinara sends it the 1k or 2k size and the aspect ratio it supports (#8027).
- Sprite background removal keeps thin blue, gold and teal details such as ribbons, and no longer fades solid shades near the edge, while still cleaning up green halos (#8448).
Search and Professor Mari
- Professor Mari can work beside the Character, Persona, Lorebook, Preset and Agent editors (#8418, #8524, #8541, #8548, #8552, #8559, #8561, #8563, #8570, #8571, #8572, #8573).
- With an editor open on a screen at least 1024 pixels wide, she floats in a resizable panel at the left of the fields instead of a window over them, and she docks beside it in narrower windows too, such as 1440 pixels wide with both sidebars open. On phones and tablets she is a sheet below the editor that you set to Title only, Half height or Full height, and its collapsed line says how many changes are waiting.
- She knows which field you are in, and clicking another field moves her attention to it. Opening her with Cmd/Ctrl+K or Cmd/Ctrl+J from a field sends its unsaved text and selection with your question. The field she is working on glows, and on the classic runtime her new text for a character field streams into it under Prof. Mari is writing….
- When a change waits for you, each changed field shows it in place with Keep, Not this one, Edit and Next (Ctrl/Cmd+Enter, Esc and Tab), and her change cards have Open at this field. Not this one declines only that field, and Keep saves your own unsaved text first. The Edited by Prof. Mari line under a kept field has Undo as a real button. In the Lorebook editor this covers the book's description and each entry's content, in the Preset editor the name, description, author, conversation prompt and game prompt, and in the Agent editor the name, description and prompt template.
- These editors now save only what you changed, so a save no longer overwrites a change she just made; where you both changed the same field, your unsaved version is kept and the editor says so. In Bypass permissions and Accept edits modes, sending her a message first saves the open editor, and if that save fails, your message stays in the box. Her changes to a preset's conversation or game prompt and an agent's prompt template now apply instead of being dropped, and asking her about the preset open in the editor no longer fails with "The selected preset is no longer available".
- Professor Mari's message box stays open while she works. Messages you send then wait in a list, up to 20 per chat with their files and
@links, are kept through a reload, and go out one by one when she finishes; Stop puts them back in the box. When she asks a question, waits for your OK, fails or the app restarts, waiting messages are held, each with Send and a remove button. While she works, the box shows a single Stop button, and when you type it turns into Send, which asks whether to Send now, so your message goes in at her next step without stopping her, or Send after her answer. Files, links, a field, a new subject or a changed permissions mode wait until she finishes, and a message sent this way never skips an approval she would ask for. With Enter sends to Professor Mari on, Enter sends now and Ctrl/Cmd+Enter waits for her answer; with it off, Ctrl/Cmd+Enter sends now and Ctrl/Cmd+Shift+Enter waits. Retry after a reply that failed partway works again instead of being refused (#8557, #8567, #8760).
- In Professor Mari's composer, type
@to link a character, persona, lorebook or lorebook entry, preset, skill, memory, chat, agent or guide. She gets what she would have looked up herself with your message, so she works on that exact record instead of guessing which "Alice" you meant. Linked names show as pills in the composer and in your sent message, and on a lorebook ArrowRight lists its entries. Beside an editor, Open beside me links what is open, and its › lists the editor's fields so you can switch the field she works on. Up to 8 links go with a message. In ordinary text, the first Tab completes a name and a second Tab links it, with a Tab to link pill, or Tap to link on touch screens. Type/at the start of a line for her commands:/new,/history,/skills,/memories,/context,/attach,/model,/permissionsand, while a review waits,/approvals, with aliases such as/clearand/connection. The paperclip opens a menu with Attach, Reference (Link with @) and Mari sections, and while you type with an input method (IME), Enter no longer sends the message before you finish (#8415, #8454).
- Professor Mari has nine built-in skills: handbooks for characters, lorebooks, presets, themes, extensions, decisions, Home widgets, onboarding and reply repair, with worked examples and checks. She opens the matching one when she starts on that kind of item instead of carrying every procedure in her instructions all the time, so smaller and local models make fewer mistakes and each question costs fewer tokens. Her Skills list shows them as Built-in, apart from your own; they are always on and can't be edited, but you can copy one into a new skill. Read the handbook before the first write in Search and Professor Mari settings, on by default, turns back her first change of each kind in a chat until she has read its handbook. When one of her actions fails, the error tells her what was wrong, what she sent and where the value goes, so she fixes the call instead of repeating it. A change she only previewed shows as Previewed · not saved, and she can't save text with an unclosed
{{into a card or lorebook entry, or a macro into a field that never fills one in (#7908).
- Professor Mari on Home can ask you questions on a card and wait for your answer. It shows one question at a time with two to four choices, sometimes a Recommended one or several to pick, and Or type your own answer, with Back, Next and Submit. Your answers become your next message, and the card is still there after a reload. She makes no change in the same turn as a question, so nothing happens before you answer, and if you type a reply instead, she still knows what she asked (#8545).
- Professor Mari keeps a to-do list for longer jobs, pinned under her latest message with a count such as "2 of 3" and each step marked Not started, In progress or Done. It updates while she works and is still there after a reload. Once you write after it, it dims under Plan from before your last message, and she keeps an unfinished list in mind for her next replies (#8577).
- A handbook Professor Mari reads, such as the one on characters, now stays in her prompt while she keeps working on that part of the app, so follow-ups such as "now shorten her greeting" use the handbook instead of her memory of it. At most two stay at a time, and one drops after three turns without use; she reads it again when she needs it. While they stay, they add up to about 9,000 tokens to each request (#8392).
- Professor Mari uses less of the model's context for each step, so she gets further on small-context models: a change's result no longer repeats what she sent, an update shows only the fields that changed, and her standing instructions are about 1,100 characters shorter. The start of her system prompt also stays the same from turn to turn, so providers with prompt caching can reuse it on your next message (#8376, #8386).
- When a reply hits the connection's output limit, Professor Mari on the Pi runtime redoes the cut step in smaller pieces, up to twice per question and with a line saying so, instead of stopping until you type "continue". If it keeps happening, she stops and suggests raising the connection's Max output tokens override or asking for a smaller piece. On connections with an output limit of 4,096 tokens or less, she splits big writes, such as a new character or lorebook, into several steps from the start, on both runtimes. A tool call that OpenAI, Anthropic or Google cut off is now recognized as cut instead of running with empty arguments (#8090, #8100).
- With no connection chosen, Professor Mari's start screen explains what suits her: a strong model with a large context, at least 32k tokens and preferably 64k, and what 16k to 128k each allow. Her connection picker shows the same advice. These are recommendations only, with no new limit (#7947).
- Screenshots and other images pasted into Professor Mari's message box are attached like files from the paperclip. When the clipboard also holds text, as copies from Word or Excel do, the text is pasted instead. A finished turn keeps what she wrote between her steps as captions under each step, instead of hiding it, so a question she asked midway can still be read (#8528, #8532).
- Swipe an open Professor Mari change card left to close its Undo offer and keep the change, or right to undo it, with a finger or a mouse drag. A short swipe springs back, scrolling past the card works as before and the buttons stay (#8400).
- Professor Mari reports her changes more accurately. She no longer tells you a change that was saved is still waiting for you to accept it, and no longer offers to redo a change from earlier in the chat as if it hadn't happened. She can now clear a persona's text fields, which she used to report as cleared without changing anything, and after reading only her onboarding handbook she can save the card changes that go with an onboarding block (#8366, #8371).
- Professor Mari keeps answers that only explain or draft something, even when their wording sounds like she made a change, such as a draft list, a quoted example, a code block or an explanation of change cards. Before, such an answer could be thrown away and replaced with "I did not make or hold any change." When a run changed nothing, a short note under her answer now says so instead. Runs that tried a change are checked as before (#8725).
- When Professor Mari writes a plan or an answer and then goes on checking, her final message now gives it in full, instead of saying the plan she made is still there when you never saw it. The same goes for a reply of hers that was held back for checking, on both runtimes (#8865; thanks @mayhair).
- Professor Mari no longer fails with OpenRouter's 402 "This request requires more credits, or fewer max_tokens" on models whose Max output tokens override was filled in with the whole context window, such as Kimi K3.1 Pro and Gemini 4 Argon. She now asks OpenRouter for at most 32,768 output tokens, and on other services she lowers such a whole-window value to the model's known output limit. When OpenRouter says your credits cover fewer, she retries with fewer. When a model's real context window is smaller than the connection's, she retries within it, dropping older steps, instead of stopping (#8865; thanks @mayhair).
- Professor Mari on Home copes better with weaker models. Quick replies that a model such as Gemma writes as text after her answer show as buttons, with readable labels, instead of staying in the chat as XML. When a model prints a lorebook lookup instead of running it, as GLM 5.3 on NanoGPT did, she asks the model once more to answer or make the lookup properly, and if it prints it again, she tells you the lookup didn't run (#8805, #8807).
- Professor Mari can no longer break a preset by editing one of its sections, which used to drop every other section from the prompt while the editor still listed them. She now changes sections one at a time, and a section id with stray quotes is refused. When she deletes a preset or lorebook, it also leaves its library folders, and undoing the delete puts it back (#8091).
- Professor Mari can read and change a character's or persona's Game Mode ruleset sheet for any installed ruleset. She checks every value against the ruleset's limits, lists every problem at once, and changes only that ruleset's sheet, never current health or spent slots (#8063).
- Professor Mari's quick reply cards that point at a chat she can't open, such as her own conversation or a chat that doesn't exist, no longer close her window and drop you on Home. Such a card now sends its text as your message like a normal reply card, and its tooltip says so. This also fixes cards saved under her earlier answers. Cards that open a real chat still open it (#8672).
- Professor Mari now refuses to give a Personal Extension she drafts full page access, which only External Extensions can have, and says so instead of saving it. Before, such a draft was saved, so approving it in Settings was undone at the next restart and the extension switched itself off. Ask Mari to resend an older draft without it to fix one (#8113).
- Professor Mari's built-in personality no longer tells her to keep saying "lmao" and "kek". Her dark humor stays (#8482).
- In Chrome, Edge and other Chromium browsers, Professor Mari's sprite no longer covers the first paragraph of her reply, and a few dividers and rounded corners that these browsers had dropped are back. In right-to-left languages, the gap beside her sprite is now on the text side (#8716).
- On macOS with Node.js from MacPorts, Professor Mari's workspace commands, including
mari db transform, start again: her sandbox can now read MacPorts' files in/opt/local, as it already could Homebrew's (#8419).
- When Professor Mari rewrites part of a field, her change card, the in-place field review, the Easy Viewer and the diff show each changed stretch as the whole old wording struck through and then the whole new wording, instead of alternating word by word, so an edit reads as one change (#8815).
Characters and personas
- One picker now chooses characters and personas everywhere: the persona button by the chat input and the phone Quick Switcher, Chat Settings, the chat and Game setup wizards, multiplayer, avatars, lorebook links and regex character scopes. It opens beside its button on a computer and as a sheet on a phone, searches as you type, and works with the arrow keys, Enter and Esc. Folders are rows you can open and close, each with Add all (N), and characters without a folder sit under Ungrouped. When you pick several, each tap applies at once and the pills at the top remove a pick. In Chat Settings, clicking a character row or the persona card opens the picker, the pencil still edits, and the separate Add from Folder menu is gone (#8763, #8796, #8826, #8827).
- The Character and Persona editors have a wand on Summary, Description, Personality, Backstory, Appearance, Scenario and Example Dialogue, and the character editor has one on the first and alternate greetings. It writes that section in 100 to 300 words from what you already typed there, with the rest of your unsaved card as reference, using the same connection as summary generation. It never saves the card for you, and if you edit that field meanwhile, your text is kept. Personas now have a Summary for the library and Example Dialogue that reaches the prompt, and a character's summary is no longer limited to 500 characters (#7972, #8021).
- Add Alternative Field under each of those seven fields gives a character or persona a different version of that field for the chats you choose, without copying the whole card. Each alternative starts as a copy, has its own wand, and replaces the field only in its selected chats once you save. A chat uses one alternative per field, and an empty alternative clears that field there. Card exports, conversions and duplicates keep the alternative text but not the chat choices; full backups keep both (#7973).
- Split description into fields sorts a description that holds everything, such as personality, appearance, backstory, scenario, instructions and example dialogue, into the card's own fields. It recognizes labelled sections, Markdown headings, W++ and PList lists, interview-style questions and answers and
<START>dialogue blocks, and moves the text word for word, so no line is lost or rewritten. Tick it in the character import window or the Bot Browser's download dialog for characters and personas, or use the button in the Character Editor, which shows the split before you Apply it. Narrator cards, cards with several characters and empty descriptions are left alone unless you choose Split anyway, and the summary warns when text without labels had to be sorted by its wording. Each split is saved as a new card version, so the original stays in the version history, and Ask Professor Mari lets her sort the card with an AI call instead (#8543).
- Sprites can go in folders. New folder adds collapsible folders above Loose sprites, separately for Facial Expressions and Full-body, which you can rename and reorder; drag sprites into them, use Move sprite, or hold a sprite to drag it on a phone. Removing a folder keeps its images. Folders only sort: every sprite stays available to chats, the Expression Engine, Game Mode and avatars, and renamed sprites keep working everywhere. Personas get folders too, and folders are kept in exports, transfers and profiles. The character sprite editor is simpler, with search, Add sprites, Export this view or Export selected, and the framing, cleanup and delete tools shown once you select sprites. Imports that are refused or only partly work now say so (#8580; thanks @DSBwizzard).
- Sprite names can describe an outfit or condition after the expression, such as
happy_pajamasorangry_formalwear_soaked. The Expression Engine and the Game Master now see these names, so they pick the sprite that fits what the character wears or how they are, instead of any sprite of that expression at random, and keep the outfit and condition until the scene changes them. A name with no exact match falls back a word at a time, fromhappy_pajamas_woundedtohappy_pajamastohappy, with the expression first. Numbered variants such ashappy_pajamas_02work as before, and libraries without such names are unchanged (#8653, Marinara-Agents#2029).
- Lorebooks embedded in character cards keep their settings. Saving a card in the character editor keeps Outlet entries as Outlet entries with their outlet name. SillyTavern and Chub cards import each entry's real placement and depth, role, probability, selective logic, group and weight, sticky, cooldown and delay, scan depth, matching and recursion options instead of defaults, and Import Embedded Lorebook uses the book's description, scan depth and recursion setting. Compatible exports write these settings back in SillyTavern's format, so they survive the trip to SillyTavern. A Marinara lorebook from another install keeps only the character, persona and chat links that exist here. JSON cards and
.charxfiles saved with a byte order mark now import instead of failing with "Invalid file format" (#8786).
- Adding a card with character questions to a running Roleplay chat, from Chat Settings or by dragging it in, now asks its questions first, then opens the greeting picker if the card has greetings. Greetings can use the answers: a chat variable such as
{{relationshipToUser}}shows its value, and the greeting picker's preview highlights the filled-in answers. When you create a persona in the new chat wizard, a greeting that names one of its questions, such asAh, so you are a {{class}}, is saved with your answer; with an existing persona or Quick Start, the tag shows as written, and the Character Editor says so. Available variables under First Message and alternate greetings lists both the card's and the persona's questions (#8509).
- Cards with interactive onboarding have a small badge on their avatar in the Characters panel, with the tooltip Has interactive onboarding, as they already did in Chat Settings (#8514).
- An applied character sheet opens in the same full-size viewer as the avatar's Full button, from its thumbnail or the expanded picture, and closes with Escape, the close button, a click outside or the back button. Uploading, generating, replacing or removing a sheet, and the Use character sheet switch, now save at once, like avatar and sprite uploads, so a refresh keeps them without pressing Save and without a leave-page warning. Other unsaved edits stay unsaved. Remove character sheet clears the sheet and keeps the picture in the Gallery. The same labels apply to persona sheets (#8707; thanks @DSBwizzard).
- In the Character Editor, First Message and Example Dialogue sit in the same bordered panel as the other card fields, with their title, wand and field. Alternate greetings are cards inside the First Message panel, numbered from the second greeting on, with token counts, larger buttons for touch and Add Alternate Greeting below them. They still become swipes in new chats (#8535).
- A persona's avatar can now be removed with Remove in the avatar crop control. On phones, editor controls no longer wrap or mismatch, the six editors' backgrounds match the sidebar in the default dark theme, and delete and remove buttons use your accent color. The avatar crop's Reset button no longer has an icon (#8021, #8067, #8097).
- After Restore web links, pressing Save images locally again reuses the copies already in the character's Gallery instead of downloading every greeting image again (#8097).
- Import character as persona now also copies the character's Phonetic name, Image Appearance Override and Conversation profile (Convo Display Name, About Me and Convo Behavior), as Add persona as character already did the other way. Copies made either way now also keep the card's Game Mode Ruleset sheets (#8689).
Trackers and the State Editor
- Inventory Tracker no longer loses purchases, drops and removals. Its prompt now shows each change nested under its group, currencies, equipped or inventory, and a result that comes back without a group goes to the group that already tracks the item. A result that can't be placed, such as a new name that could be a currency or an item, is retried like a broken reply, and if the retry fails too, the run fails with a clear reason instead of counting as a success that changed nothing. In the chat that reported it, 30 of 54 runs had lost real changes (#8717, Marinara-Agents#2084).
- Prompts, conditionals and agent templates can use the World State tracker's story clock with
{{date.world_state}},{{time.world_state}}and{{weekday.world_state}}. They follow the reply you are on, so swiping or regenerating keeps the story's date, and the weekday comes from a Weekday field, a written weekday or a date. They are empty when nothing is tracked, and the real-world date and time macros work as before (#8301).
Advanced Memory and summaries
- Game chats can now use Advanced Memory Recall, off by default, from Chat Settings → Memory Recall. The current scene stays as messages and earlier scenes reach the Game Master as recaps with the excerpts recall picks, so a long session stays under its context limit instead of resending the whole history every turn. The Game Master reads the memory as narrator, so the per-character settings are hidden in Game. A new session keeps the settings but starts its memory fresh, while summaries you or a Chat Summary agent wrote carry over as before. The optional Decision model works here too (#8254).
- Deleting an Advanced Memory summary that hid nothing, such as one written with Hide summarised messages off, no longer shows the messages you hid yourself to the model again, and branching a chat inside such a summary keeps your own hides on the copied messages. Advanced Memory also keeps cached message details for only the four most recently read chats instead of every chat opened since the server started, which lowers memory use in long sessions, mostly on SteamOS and Termux (#8794).
- Large Roleplay and Game chats with Advanced Memory start generating sooner: each message's stored details are read once and reused until the message changes, instead of on every memory step (#8607; thanks @gcyrus).
- New Roleplay chat setup no longer offers Prepare existing history, since a new chat has none; existing chats keep it in Chat Settings → Memory Recall. The setup's Automatic context and memory handling text now names Advanced Memory Recall, and Maximum messages per excerpt now starts at 5 instead of 10. Limits you saved, including 10 and 0, stay as they are (#8175).
- An Advanced Memory scene-repair notification, and its Fix button, now open Memory Recall in that chat even when the section is popped out or minimized or the notice came while you were in another chat, and expand the section if it was collapsed (#8203).
- With Hide summarised messages on and Advanced Memory off, the Recent message tail is now a strict limit in Roleplay: a summarized message older than the tail is left out of the prompt right away, instead of staying until the next summary hid it. Older messages that no summary covers yet are still sent, and Chat Summary shows how many under Recent message tail, so Backfill Summary can summarize them (#8831, #8841).
- Peek prompt on a reply now says that it shows the request as sent for that reply, saved before any later summary or hiding, so it can hold messages that are left out now. Show current context switches to what the next request would send now, and Show sent request goes back (#8831, #8841).
- Advanced Memory's Updating continuity now combines the summaries one character reads into one about half their size, and halves it again on the next update if it is still over that character's share. Each request holds only your Combine prompt, one line asking for about half the length, and the summary text, instead of the much larger scene-summary request, so compaction no longer produces repeated oversized replies or long waits. Private parts are shortened separately and stay readable only by the characters who knew them. A reply that comes back cut off, empty or no shorter leaves the summaries as they were, and the same summaries are not sent again until one of them, the helper model or the Combine prompt changes (#8820, #8837).
Voice and Calls
- Personas can have their own voice. In a text-to-speech connection's Character and persona voices, pick a persona the same way as a character; personas are marked (Persona). With that chat mode's auto-play on, Conversation, Roleplay and Game read the messages you send in that voice, before the reply, and your persona's dialogue in the story, such as in Roleplay or Game narration, uses it too. Opening or refreshing a chat doesn't read old messages again, and All Characters Voice is now Shared voice (#8370).
- With the speaker extractor on, a line credited to part of a character's name, such as "Junpei" for a card named "Junpei Iori", now uses that card's voice even when the card isn't in the chat, instead of the default voice, or no sound on ElevenLabs without a default voice. Every word of the name has to fit, titles such as Mr. and Mrs. are told apart, and a name that could mean more than one card isn't guessed. This also applies to Game narration and combat, so a Game NPC called by part of a voiced card's name, or a title it contains such as "Professor", now uses that card's voice instead of a random one (#8650).
- ElevenLabs connections offer Eleven v4 (
eleven_v4), first in the model list. Like Eleven v3, it has no speed setting, so the Speed slider is now greyed out for both, with a note, instead of looking active while its value was ignored (#8373, #8374).
- In Game Mode with ElevenLabs, voices no longer read a line's sprite emotion aloud before it, such as "neutral. Four thirty-one…". The emotion goes only to models that perform audio tags,
eleven_v3andeleven_v4, and only as a tag ElevenLabs knows, such as thoughtful for thinking; emotions like neutral or sleepy send none. Combat dialogue works the same way (#8641).
- In Roleplay, text to speech starts reading a reply sooner when no agent rewrites it, instead of waiting for unrelated agents to finish. With a rewriting agent on, speech still waits for the final text (#8027).
Install, updates and security
- Marinara can now show its owner a notice from the Marinara team when something needs action, such as a security update or a manual step for Docker users. It checks a small file on GitHub at startup and every hour, shows at most one notice as a banner, and never shows it to visitors who aren't signed in. Set
MARINARA_NOTICES_ENABLED=falseto turn this off (#7952).
- Marinara now uses pnpm 12.15.0. The launchers (
start.bat,start.sh,start-termux.sh) and the in-app updater fetch it for you, so an older pnpm installed on your computer doesn't need replacing first. If the launcher still can't get it, runnpm install -g pnpm@12.15.0and start again; Troubleshooting has the steps under pnpm version error. After updating, Marinara deletes the old pnpm 10 dependency store (.pnpm-store/v10, 2 to 3 GB) that the move leaves in every install and that pnpm's own cleanup can't see. On Android/Termux, the launcher removes it before installing, so an update that ran out of space works on the next start, and if the folder can't be removed, startup warns and carries on (#8131, #8792, #8801).
- On Android, when a Termux update leaves Node.js unable to start (
CANNOT LINK EXECUTABLE "node"), the app andstart-termux.shnow run a fullpkg upgradeand try again, instead of stopping with a message that told you to install a newer APK. If Node.js still can't start, they tell you to runpkg upgradein Termux. A working install only pays for one quick check. The Termux setup commands in the install guides now start withpkg upgrade -y, and Troubleshooting has a section for this error (#8680).
- On Windows, the installer no longer stops with
The string is missing the terminator: "when it upgrades an older Node.js, and the same fix covers its Git download and file checks, also when the temporary folder's path has spaces or apostrophes. The Node.js it installs is now 24.22.1, with the October 2026 security fixes (#7942, #8088).
- The launchers open your browser once the server reports it is ready, instead of after a fixed wait, so the page no longer opens before Marinara has started (#8027).
- A Marinara update is ready. no longer appears after every server restart. Before offering Refresh, the page asks the server which build it serves, and when the page already runs that build, it updates quietly (#8212).
- Professor Mari's sandbox protects more of Marinara's settings and secrets from her shell commands. On Linux, a
.gitor.enva command creates at the top of the workspace is renamed when the command ends, and the output says so.mari code checkalways runs inside the sandbox. When the data folder sits inside her workspace, her shell can read media folders such as avatars, backgrounds, sprites and galleries but not change them, andmari imagesreads, writes and deletes a file in Marinara's media folders only while its real path stays inside that folder. An app image whose file is a link pointing outside its folder is no longer used, by Mari or your ownmaricommands; replace the link with the real file (#8770, #8798, #8802).
- Sandboxed browser extensions stay cut off from Marinara however their page is opened, and an extension's dice text in a
/rollmessage always shows as plain text, with<,>and&shown as look-alike characters (#8773).
- Regex scripts from imported character cards are checked more strictly, so a pattern can't stall the server or the page while it is checked or run (#8055).
- Creating a chat or changing its characters now refuses a request over 1 MiB, or one with a malformed character list, before checking it in detail, and validation errors list at most 50 details. Imports, uploads, backups and profiles keep their limits (#8216).
- Each server route now keeps to its own request rate limit however the request address is written, including routes added in this release such as sign-in sessions, pairing codes and notices. A client that sends more than a route allows gets a "too many requests" reply instead of falling under the shared default (#8792).
- Moving the computer's clock back, for example by an automatic time correction or by resuming a virtual machine, no longer makes Marinara refuse every request as rate-limited for hours (#8389).
- Updated body-parser, serialize-javascript, Undici, glob and minimatch, and patched the bundled Zod validation library, the deepmerge library and the developer MCP tool, for published security advisories. The MCP SDK is now 1.32.2 and the Pi agent runtime Professor Mari uses is 1.4.0, and i18next, dotenv and the Android build tools are updated too. Installed agents keep the same validation library interface (#8231, #8451, #8776).
- Game assets, image previews and avatar clean-up now stay inside their own folders in the data folder. Marinara keeps starting when something in
game-assetsis a broken link or sits on a disk that isn't connected, logging a warning instead, and agame-assetsfolder moved to another disk and linked back keeps its files listed and its music and sounds playing. Deleting a top-level Game Assets folder, such as sprites or music, is always refused (#8819).
Chats and messages
- Chat branches are easier to find and follow (#8114, #8160, #8192, #8209, #8565).
- In the chat list, a chat's branch-count badge opens its branches as a tree under its row, each nested under the branch it was made from, with its name, when it was last active, its unread or busy state and a delete button. Search also finds a branch by its own name, and the branch you open is highlighted. Deleting a branch that other branches were made from no longer hides them: the orphaned branch hangs under the top chat, and its own branches stay below it.
- Branch graph in Chat Branches opens a window that draws all of a chat's branches as lanes on one message timeline, with a dot for each message colored by who wrote it, and each branch joined to its parent at the message it split off from. Long stretches fold into a
··· N ···marker you can open, or use Expand all. Hover or tap a fork or a latest message to see its number, speaker and the start of its text, and click a lane to switch to that chat. The window can be moved and resized and is a sheet on phones. - Branches made before Marinara recorded where they came from hang from the first chat with a dashed line marked Fork not recorded, and Game sessions keep the single row with a count.
- Settings profiles can be built and edited directly. New and Edit next to the profile in Chat Settings, and New profile… and Edit in the new chat wizard's Use a Profile step, open a builder with a field for each slot: connection, prompt preset, agents, tools, persona, background, lorebooks and image style. Fill a field from its picker or by dragging an item from the sidebars, which stay usable while the builder is open, or leave it empty; tools are checkboxes, and parameters, memory and translation show a summary. After saving, tick chats and Apply to N chats, and choose Make this the default if you like. A profile's persona, lorebooks and background are starting picks: applying the profile by hand copies them into the chat when they still exist, adding the lorebooks to the chat's own, while chats that follow the profile never get them. In a chat that already has messages, applying a profile whose persona differs adds a "You are now playing as …" turn, as switching the persona in Chat Settings does. A persona you pick in the wizard wins over the profile's, applying a profile without a model, including Default, keeps the chat following your Main model, and exported profiles leave out the persona and lorebooks. New replaces the button that saved the current chat settings as a new profile (#8555, #8646, #8780).
- A chat no longer stays on Generating... with no way out. A message you send right after Stop waits for the stopped reply to end instead of being refused and lost, a reply stopped elsewhere ends with an error, and when a reply goes quiet for a minute Marinara asks the server and shows what was saved, or the error with Retry. In Game Mode, a turn that ends without a Game Master message shows an error with Retry, which also sends again a turn you typed that was never saved (#8389).
- A streamed reply is no longer saved shorter than it was shown. When Prose Guardian, Continuity, Immersive HTML or a custom rewrite agent runs out of tokens partway, its cut-off rewrite is dropped and your reply stays whole. With Trim incomplete sentences from the response on, finished replies that end in emphasis, an HTML closing tag or a CJK closing bracket, such as
She smiles softly., are no longer cut, and a message tells you when the setting does trim a reply (#8652).
- Dice rolls can keep or drop dice:
4d6kh3keeps the highest three,2d20kl1the lowest one,4d6dl1drops the lowest anddhdrops the highest, with an optional modifier such as4d6kh3+2. This works in/roll, the composer's dice, the Game Master's dice tool, multiplayer/rolland Roleplay[roll:]commands. Every die still shows as it fell: the dice card dims the dropped ones, text results strike them through, and only the kept dice count. These rolls, plus encounters, older combat and skill checks, now all use the same secure random die, and a seeded chat still rolls the same faces as before.{{roll:d20}}and{{roll:1d8+3}}now roll instead of staying as text. Browser Extensions can add their own dice notation to/roll, such as narrative dice, withmarinara.dice.registerFormat(Browser Extension API 6); Marinara still throws the dice itself, checks everything the extension sends back and posts its text as plain text, and built-in notation never reaches an extension (#8495, #8497, #8500).
- Export a range in Chat Branches (Chat Settings) exports only part of a chat. Pick the first and last message and press Export selected; the window says how many messages that is and quotes both ends, then offers Text, Markdown, JSONL or Story. Each message exports its selected swipe,
{{input}}is filled in only from inside the range, and a JSONL excerpt leaves out chat-wide state such as summaries, the journal and memory records. The file is named after the chat with "excerpt", nothing in the chat changes, and Game chats don't have the button (#8598).
- The Assembled Prompt viewer you open with Peek prompt has a Find field. It highlights every match, ignoring case, shows which match you're on out of how many, and moves between them with its arrows, Enter and Shift+Enter; Ctrl/Cmd+F jumps to it. It searches every message, closed sections included, and shows them in full while you search (#8441).
- System messages in Conversation and Roleplay now show as readable message blocks across the chat's width, with Markdown, safe HTML, line breaks and the chat's font size, instead of a squeezed pill of plain text. They have the usual message actions too: copy, edit, bookmark, pin, private note, branch, AI visibility and delete. Conversation's call cards are unchanged. HTML written inside backticks or a code block, in messages and in Bot Browser creator notes, now shows as text, so it can no longer recolor the text after it or load a picture (#8107).
- A model's thoughts on a message have a Copy model thoughts button, in the Conversation thoughts window and beside the Roleplay thinking toggle even while it is collapsed, so you can copy the whole reasoning in one tap, also on a phone (#8507).
- Chat button layout in Chat Settings can line the chat's buttons up in Horizontal rows or Vertical columns, which stay aligned as the window resizes and are saved with the chat; Free positioning brings back your dragged positions. Chat Tools on phones keep their layout. Dragging chat buttons no longer stalls the app (#7943).
- The chat setup wizard for Roleplay, Conversation and Game labels the model choice Model in all three, instead of Provider or Connection, with matching text for saved generation defaults and warnings. It stays open when you open a model's settings or another editor from it, or click the dimmed area around it, and comes back when the editor closes, so setup finishes and the card's first message appears; it starts again at its first step, and picks already saved to the chat are kept. The X and Skip still close it (#8648, #8696).
- A new chat's setup wizard now waits until your starred settings profile is applied, so finishing it no longer overwrites the profile's Conversation command choices and Commands switch. Wizard defaults you saved with Save as default still apply on top. Chat Settings sections popped out in the profile no longer float over the wizard. Thanks to @JamesMowery (#8012).
- Use this layout for new roleplay chats (the star in Chat Settings) now also keeps the chat's Scoped Regex Scripts choice, so new chats of that mode start with it. Before, new chats always took the preset's default, and on an upgraded install, pressing the star after changing the choice could clear the favourite layout instead of saving it. With Use preset default, nothing extra is saved, and a starred settings profile still wins (#8679).
- Tapping Conversation, Roleplay or Game on Home and then closing or skipping setup without changing anything no longer leaves an empty chat behind. A chat you changed, gave a character or persona, or wrote in is kept (#8151).
- Post History Instructions are worked out once per turn. A card with random macros there, such as one that reveals one memory and marks another as used, no longer shows the model one result while saving another, and macros inside card fields your prompt doesn't use no longer run (#8323).
- Long lines in fenced code blocks now wrap inside the message on every screen size. On a computer they used to run past the message. Indentation, blank lines and the code itself stay as written (#8104).
- The chat list loads faster with many chats, especially on a phone or over your home network: it no longer carries internal search data, and large lists are compressed (#8486).
- In Chat Settings, the translator's Incoming Response Prompt and Outgoing Message Prompt boxes keep your typing: text typed in the middle no longer loses a character or jumps to the end, and clearing a box no longer brings the default straight back. Your edit saves when you leave the box, Save translator defaults waits for it, and a save that fails keeps your text with a Save button to try again (#8485).
- The
/guidedhint now reads/guided respond as [name] [direction (optional)]and says you can add "respond as" or "reply as" and a character's name to steer one character (#8384).
- If hiding or showing many messages at once fails partway, every message and its swipes go back to how they were instead of staying half changed. Thanks to @minikkeuen (#7979).
- To reorder a chat's characters in Chat Settings, drag a row with the mouse or long-press it on a touch screen, as in the other sidebars. The grip icon is gone, and a short tap opens the character picker (#8825).
Settings, appearance and library
- Character and persona searches can match several tags at once:
male genshinfinds cards tagged with both, and a tag with spaces or commas goes in quotes, such asmale "Modern AU". Ordinary name and text search keep working alongside it, in the sidebars and the full-page libraries. The sidebar boxes now read Search characters/tags and Search personas/tags (#8427, #8442).
- The Background section in Chat Settings, the chat setup wizard and the Settings panel shows the current background as a wide preview with its name: tap it to open the library, or use its ✕ to remove the background. Below it, your last three backgrounds apply with one tap, and Browse library opens the whole library. Recent backgrounds are remembered in this browser only (#8719).
- The Preset Editor shows each section's estimated tokens on its row, and Enabled static preset: ~N tokens beside Add Section adds up the enabled sections with fixed text. Sections filled in from the chat, such as character info, lorebooks and chat history, show Dynamic and aren't counted, and a disabled section shows its estimate struck through (#8625).
- A lorebook's Keyword test has Include other lorebooks, off by default. It lists the entries in your other lorebooks, switched-off ones included, that the same text would trigger, with their lorebook's name and keys, so you can find keywords two books share. The list waits until every lorebook is checked, with Retry other lorebooks if one can't be read (#8354).
- The interface language in Settings, and the documentation language in Settings and onboarding, use one searchable picker with a globe. It lists each language by its own name with the English name under it, finds it by either name or its code, marks the selected one and works with the keyboard (#7964).
- Two more seasonal themes switch on by themselves: a New Year's Eve look from December 31 until 4 AM on January 1, then a quieter New Year's Day look until noon on January 2. Each has its own Home decorations, a greeting with Keep it and Turn it off, and a dated Professor Mari appearance pack. Disable seasonal ME themes in Settings → General turns them all off (#8562).
- Settings → Addons → Extension revision history sets how many earlier code versions Marinara keeps for each Personal and External Extension, from 0 (no history) to 10, the default. Lowering it asks before older revisions are removed for good. Current code, approvals, the on or off state and saved extension data stay (#8302).
- When the Home tabs don't fit, for example on a phone with many experiences installed or in a narrow window, the row no longer scrolls sideways. Home and the experience you have open stay as tabs, and the rest fold into a three-dot button that lists every experience, Professor Mari included, with its icon. While folded, Noodle's unread badge shows on the button and on Noodle's row (#8356).
- On a phone turned sideways, the top bar and Home's tabs are shorter and the wordmark and version next to the tabs are hidden. While you type in a package tab such as Gacha Forge, Life Sim, Noodle or Slurp, both bars step aside until the keyboard closes. Text fields stay at least 16 px on touch screens even with a small Font Size, so iPhone no longer zooms in when you tap one. Professor Mari's window, her full-screen page on phones and her message box on Home use the Home page's background, in dark and light themes and with a custom app background, instead of a purple or dark blue tint (#8069, #8082, #8086).
- On a phone turned sideways, Home keeps its compact tabs: as in portrait, only the selected tab shows its name, for Home, Professor Mari and installed package tabs alike (#8118).
- On an iPhone turned sideways, Marinara no longer runs under the camera. A strip in the page background color keeps the app clear of the notch or Dynamic Island on the camera's side only, following which way you turn the phone, and the other edge uses the full width, fullscreen Gacha Forge included. The chat list, settings, editors, dialogs, Search and Professor Mari, the full-screen text editor and the close buttons of image viewers stay clear of the camera too, and phone sheets slide fully off screen. Portrait, iPad, computers and the Android app are unchanged (#8105, #8128).
- On phones, the connection editor's Save button no longer jumps while the save status comes and goes, and the field you are typing in stays in view while the keyboard is open. Professor Mari fills the screen in landscape too, with her quick options reachable above her composer. The full-screen text editor fits the space the keyboard leaves and scrolls to its header and footer when a landscape screen is short. On iPhone and iPad, confirmation dialogs stay opaque with gradient accent themes (#8302, #8313).
- On phones, the top bar and Home's tab strip drop a background blur that didn't show, which made Otome Hearth's Home flicker in Samsung Internet. Desktop keeps its frosted bars (#8659).
- Saving a custom tool sends and checks only what you changed, so a value the editor wouldn't accept, such as an over-long description from an import or from Professor Mari, no longer blocks every later save, even of a toggle. Errors now name the field, such as "description: Too big…", also in the persona editor and persona import, and Professor Mari can no longer give a tool a name or description over the editor's limits (#8595).
- A full-profile backup with a very large number of files can be made and restored. Before, making it failed after collecting everything, and such a backup couldn't be restored (#8094).
- Cleaning up unused avatar files, in Storage Optimization or when a picture loses its last character or persona, no longer deletes a persona picture that saved messages still show, including in a message's other swipes and in deleted messages that can still be restored from the Trash. Pictures nothing uses are still removed (#8130).
- Preset folders in the library count only presets that still exist, and deleting a preset takes it out of its folders, including presets deleted earlier. Thanks to @minikkeuen (#7977).
- If moving lorebook entries to another lorebook fails partway, the entries are put back where they were instead of going missing from both. When syncing a character's embedded lorebook fails, the save or import now says so instead of looking successful. Thanks to @minikkeuen (#7981).
- Settings → Addons → Personal Extensions loads faster when your extensions have a long revision history: the list no longer downloads the code of every older revision, only what the history shows. Rolling back works as before (#8229; thanks @minikkeuen).
- Editors that are still loading, and an agent's page in the Agent Organizer, now use your editor background color, so dark, light and custom editor colors show there instead of the old dark background (#8151, #8162).
- With Marinara's custom cursor on, as it is by default, sidebar edges and other resize handles, such as floating windows and Professor Mari's companion panel, show a resize cursor again and keep it for the whole drag, so you can tell they can be resized (#8639).
- In Browse character cards online, closing and reopening the tag panel keeps its scroll position as well as your selected tags (#8345).
- The Prompt Preset section in Chat Settings now uses the same icon as Presets in the top bar, in Roleplay, Conversation and Game (#8718).
- Clicking the ⋯ button of a menu that is already open, such as in the Connections sidebar, now closes the menu instead of opening it again (#8708).
- In the Preset Editor, closing a section's expanded editor right after typing saves what you typed, instead of sometimes keeping the section's earlier text (#8869).
- On an iPhone or iPad, chat windows such as Model Thoughts are no longer see-through when the chat widget Shape is Cut corners, with Apply preset shape on and Apply preset colors off (#8869).
- The Background Blur tooltip says it applies in Conversation too, and more labels in the card import, custom emoji, expression sprite, Game widget and regex script editors can now be translated (#8754).
Roleplay
- Roleplay group chats set to Merged (Narrator) have Automate active characters in the Group Chat box, with Off, Decision model and Character Tracker. Decision model asks your Decision model before each reply whether each character is in the scene and turns their card on or off, like Smart response order does for who speaks. Character Tracker uses the tracker's present characters from the last reply, so it runs one turn behind. While it is on, each character has a pin next to its eye: pin one, or flip its eye by hand, and automation leaves it as it is; turning automation off clears every pin. The narrator stays active, and a turn with no answer, or one that would leave nobody active, keeps the list as it was. A hosted Decision model receives each character's name and a short part of their description. Group Chats and Group Conversations in the guides has the details (#8462, #8466).
- Roleplay narrators can ask for a one-off in-world HTML piece, such as a spellbook page, a sign or a terminal readout. Turn on HTML Artifacts in Chat Settings → Agents → Commands, and the narrator's
[html: prompt="…"]is made with one model call after the reply is saved, up to three per reply, using the Immersive HTML agent's connection if it has one, else your default agent connection, else the chat's. No agent needs to be in the chat. The piece appears where the command was written, in a compact centered box, with simple drawings allowed (a marker in Visual Novel). In later turns the narrator remembers its text and look instead of its markup, and the marker lets you read or edit that memory or delete the piece./html <prompt>adds one to the latest reply yourself, even with the switch off. Narrators in multiplayer rooms don't use it (#8587).
- New Narrator's Avatar Borders setting (off by default), next to Narrator's Cycling Avatars, outlines each character's avatar on merged group Roleplay Narrator messages in that character's name colour. With Glued Side Panel each avatar gets its own outline, with Small Circles and Small Rectangles the round frame's ring splits into one arc per character, and a cycling or single avatar gets one outline. A gradient name colour uses its first colour, and a character without a name colour gets the colour of their part of the Narrator label (#8720).
- Settings → Appearance → Roleplay has Custom chat width, with a 40–100% Chat area width slider, so Roleplay messages, the composer and Visual Novel history can be wider or narrower. It leaves room for avatars and a docked Tracker Panel, and turning it off goes back to the automatic width (#8346).
- Roleplay dice cards for a roll against a DC are now tinted by the outcome, like skill-check cards, so a miss no longer looks like a success. Roll result colors under Who can roll dice in Chat Settings → Agents → Commands → Rolls offers Off, Success and failure (the default, existing chats included) and Success, failure and criticals, which marks a natural highest roll in gold and a natural 1 in deep red on a single die. Rolls without a DC keep the accent color (#8258).
- A new Scene now starts from your starred Roleplay settings profile, as other new Roleplay chats do, and with Prompt preset left on None its opening follows that profile's preset. Plan Scene no longer fails with "Model didn't return valid JSON" over small slips the rest of the app already repairs. The opening is written in the starting character's voice, or by one narrator in a merged group scene, with spoken words in double quotes, and the scene description is its own narrator message instead of being glued to the opening. Thanks to @JamesMowery (#8007).
- In merged Roleplay group chats, each reply shows the Narrator avatars of only the characters in its own scene: a reply keeps the characters it was written with, and a reply saved before this version takes the characters its expressions name, plus active characters its expressions can't name, such as ones without sprites. Before, every earlier reply showed the characters active now, so characters who weren't in its scene appeared on it, and when the scene narrowed to one character the others' avatars vanished from every earlier reply. A reply that recorded nothing about who was in it still shows the current cast. Continue keeps a reply's own avatars and adds the current ones, and a character who left the chat stays hidden until they rejoin (#8800, #8823, #8836).
- In Visual Novel mode with streaming on, the text box stays on the paragraph you are reading while a reply streams in, instead of following the newest paragraph and then jumping back to the first when the reply saves. The paragraph buttons show during the stream with a counter such as "1 / 3+", each character's turn in a group starts at its own first paragraph, and a Continue opens on the paragraph it extends. While a rewrite agent holds a regenerated reply, that message's swipe arrows are hidden, so switching swipes can no longer leave both swipes with the same text (#8655).
- An impersonated message keeps its reasoning: once it is saved, View model thoughts opens it, or with Show Thinking In Messages on it shows in the collapsed thinking box, as on a reply. Regenerating your persona's message in an Individual group chat no longer fails with "Regenerated message is missing character": an impersonation is redone with its original direction, and other persona messages get the normal rewrite (#8687).
- In a Roleplay chat connected to a Conversation, a reply that is only OOC now stays in the Roleplay chat without its OOC tags, instead of being thrown away with a notice that the model returned nothing. This includes a group member's reply such as
Dottore: <OOC>…</OOC>(#8383).
- Switching between Roleplay swipes whose dialogue is tagged by speaker no longer leaves the previous swipe's narration on screen until you reload (#8632; thanks @DSBwizzard).
Game Mode
- Long games respond faster, especially on phones. Skipping, revealing, sending, jumping from the Session Log and changing chat settings no longer reprocess every earlier message, and display regex scripts are prepared once per pattern instead of once per line. The Session Log opens faster, and with Messages per page at 0 it opens on its newest 20 entries, while Older, All and scrolling up load the rest (#8031, #8052).
- Game turns cost less with prompt caching. The Game Master's standing instructions, such as the output format, party rules, commands and ruleset guidance, now go in the system prompt, which no longer changes from turn to turn: weather, morale, player notes, map state, tracked NPCs and the tactical board come in the turn reminder after the history, every turn as before. Providers with prompt caching can then reuse a long session's history, especially Claude with caching on. Speaker lines the model writes slightly wrong, such as with two type tags or a dash instead of a colon, show with the right speaker instead of as raw brackets, and a
[whisper:Name]line shows as a whisper again (#8254, #8310).
- Game Mode no longer shows the Game Master's planning as narration. The GM is asked to plan privately, and a plan it writes anyway, such as a
Plan:orOpening scene:paragraph, goes with the turn's thinking, also when the turn is rewritten with real dice results. A reply that is only a plan shows the usual empty-reply error instead of becoming the scene, and normal prose and answers addressed to you stay visible. In non-English games, the language rule now applies to the scene itself. When a reasoning model uses up its output before writing anything, you see the empty-reply message, which suggests raising Max Tokens or lowering Reasoning Effort, instead of the model's thinking (#7932, #8172, #8187).
- A Game reply now shows as soon as it is saved, instead of up to minutes later, and a failed turn no longer saves what streamed before the failure as a stray reply. Dice and check cards and the roll badges in Game narration say who rolled. In a game without a persona, the Game Master directs the whole party and treats "you" as the party rather than one member, and it no longer skips a check that an uncertain attempt calls for, for each character who tries. Choice cards ignore clicks for their first moment, so a quick click on Next no longer sends the first choice. When the Game Master rolls with the dice tool mid-reply, the text after it starts a new paragraph, and a line such as "let me get the number" is cut (#8165, #8194).
- Game Mode fights start more reliably. A setup that was cut off part way says so and is asked once more without thinking, only one setup runs per chat at a time, and a failed setup waits for Retry Combat instead of starting again each time you open the chat. The failure banner now gives the reason, and reloading the page during setup no longer counts as a failure. Small mistakes in the model's setup, such as a range of 0 for an ability used on oneself, an interval or duration of 0, an ability word Marinara doesn't know or an attack kind written another way, are corrected or left out instead of refusing the fight. The map panel starts folded during a fight and remembers whether you folded it (#8202, #8212, #8266, #8268, #8278).
- A fight now starts when the party carries an item whose effect lasts longer than 100 rounds, such as a potion that lasts an hour, or brings in a long status, cooldown or boss timer. The fight used to be refused with a
Number must be less than or equal to 100error; now such an effect lasts the rest of the fight (#8280).
- Characters and personas have a Game Mode Icon block on their Stats tab that sets the picture on their fight token: Avatar (as before), Custom image, chosen from the card's own gallery or uploaded into it, or Initials. It works in every fight style. A token whose picture can't load, for example after its gallery picture was deleted, shows the initials instead. Character and persona gallery uploads now refuse a file that isn't the kind of picture its name says (#8362).
- Party members keep their combat temperament for the whole game instead of getting a new one at every fight, so a companion who fights supportively doesn't turn reckless in the next battle. It is read from the character's description and personality when the game is set up or someone joins, and changes only when a session clearly changes how they fight. Members of older games get theirs at their next fight. Enemies still get a new one each fight (#8622).
- When the party shares one bag, the Game Master is told it is the party's only pack and only money, and that an item it doesn't list isn't there, so it says so in the story instead of pulling the item out of a companion's pack that doesn't exist. With sheets shown, it is also told that nobody makes light, fire or an item with an ability their sheet doesn't give them. In ruleset games, when your message names an item from the ruleset's item book that nobody in the party carries, the Game Master is told so, and a reply that adds an item to a bag only to hand it on is refused unless it says where the item came from (#8331, #8349).
- The Game Master offers choices that fit where the story is now, instead of offering again ones you passed over or the same set turn after turn (#8328).
- In the New Game wizard, Player Goals and Additional Preferences that still hold your last game's text say From your last game. with a Clear button. The wizard's last button now reads Create world, and Start Game on the start screen starts the game in one press, with Review starting widgets as an optional button below it. When the model writes one line of the campaign plan too long, setup shortens that line at a word instead of dropping the whole plan, and the connection you chose for setup becomes the game's own. With no lorebooks at all, Game and Roleplay setup say No lorebooks yet instead of All lorebooks already added. (#8206, #8260).
- After a fight's Continue story, the host's Game screen no longer goes black with only Skip effects showing. The game's intro sequence now plays only before anyone has spoken in the game, and stage directions that have played don't play again (#8526).
- In fights the Game Master directs (GM directs bosses), a command that fails no longer sends autoplay and queued switches out of step while a newer command is still running. That had caused "fight had moved on" notices, lost switches and boss decisions replaced by the fallback (#8782).
- Game storyboard and scene illustrations fill in macros in a character's or persona's appearance, such as
{{getvar::...}}, as chat replies already did, instead of sending the macro text to the image model (#8404).
- In Game Mode, Escape closes the inventory window, and its close button is named Close inventory for screen readers. A picker open on top of it still closes first (#7989).
- Multiplayer (work in progress): in a shared Game, a player the host removed can rejoin as their own hero: Approve moves the hero's card, sheet and bag to the new seat. When Approve is refused because the name is still in use, the guest hears so at once instead of waiting forever, and the host is told how to free the name. Leave asks "Leave this shared chat?" first. A fight that starts right after a guest rejoins no longer fails with "Invalid combat sides or duplicate units", and each party member wears their own art. The Game Master no longer writes dialogue or actions for a seated player's character, in the opening or after a fight, and the host's game setup wizard shows character names again without crashing when you search (#8381, #8523, #8525).
- Multiplayer (work in progress): in a Room Game, a skill check the Game Master whispers to a player now shows in that player's own check results and stays out of everyone else's and the public rolls. When the room has used its last AI generation, Retry keeps the round paused with everyone's actions and tells the host to raise Maximum AI generations this session in Chat Settings → Multiplayer; before, Retry seemed to work and left the room stuck. Guests on IPv6 from the same home network now share one request budget, as they already shared the connection limit (#8784, #8801).
Long-Term Memory
- Long-Term Memory can keep up with your chats by itself. Memory Settings has one Memories from chats choice, also offered in Chat Settings and the setup guide. I add them myself, the default, works as before. Collect them, I'll review imports each chat's new summaries and finished stretches of messages in the background shortly after a reply, and leaves what they propose in Review Queue. Save them for me also accepts safe memories automatically, while anything risky waits for you; a memory worded like a scene event waits on its own, and the rest of its batch is still saved. Each chat can override the choice under Memories from this chat, which comes first in Chat Settings and shows what was saved today and what is waiting for you. Chat Settings and Extraction warn, with Choose, when no extraction connection is set. Background imports show in Activity, and Hide remembered messages from the AI waits until a message's memories are saved (Marinara-Agents#1963, Marinara-Agents#1986, Marinara-Agents#2013, Marinara-Agents#2019).
- Long-Term Memory can learn from a chat's own messages, so a chat without summaries can have memories too. Sources has a Chat Messages tab that imports a chat's messages in pieces, and it warns when the chat also has summaries, since importing both can repeat memories in review. Whispers, and messages hidden from the AI or from some characters, are left out, because a memory can reach every character. For a chat with branches, a Branch menu starts on the branch you're in, so other endings no longer mix into the list; choose another branch or All branches, and importing still goes to the whole chat. A long chat is read in order, and each piece sees the end of the one before it with its events and open threads, so a memory can say what caused an event or carry a thread across the cut. Rows in Chat Messages and Chat Summaries keep their message range, day, week or game session in view, even when the chat's name is long (Marinara-Agents#1747, Marinara-Agents#1766, Marinara-Agents#1798, Marinara-Agents#1804, Marinara-Agents#1913).
- Long-Term Memory's Memory Settings → Extraction → Hide remembered messages from the AI (off by default) stops sending a chat's messages to the AI once Long-Term Memory has imported and extracted them, as Hide summarised messages does for summaries, so a long chat no longer sends the same history twice. Your latest messages always stay. Turning it off, or deleting a piece's source note, shows exactly the messages it hid, and messages you hid or showed by hand stay as you set them. It needs this version of Marinara (Marinara-Agents#1929).
- Other Agents can ask Long-Term Memory for memories about the characters they write as, ranked against what they are about to write. They get only memories available to that character everywhere, never memories limited to a chat or group, archived or game-only memories, imported sources or suggestions, and they can't change anything. Other Agents can read memories in Memory Settings → Recall → Sharing, on by default, turns these reads off, and its table shows each Agent that has read memories, with Last read, Reads this week and Memories returned this week. Each read shows in Activity as "Read by another Agent" (Marinara-Agents#1566, Marinara-Agents#1568, Marinara-Agents#1815).
- Slurp and Noodle can now use what Long-Term Memory remembers. Slurp Creators' posts and DM replies draw on their memories while What your other Agents know is on, and Backstage → Engine link → Memories in posts and messages chooses Whole memories or Only the parts that fit the post (the default). People named in those memories stay out of collabs, tags and guests unless the post's brief names them, a memory about you is never posted publicly, and a DM brings in your persona's memories only when that persona's Slurp page uses a linked identity. In Noodle, Advanced → Use memories from Long-Term Memory (off by default, and it asks first) lets timeline posts draw on each account's character's memories. Turning either on offers to turn on Long-Term Memory's Other Agents can read memories when it is off, and Turn it on changes only that one switch. Neither ever uses memories limited to one chat (Marinara-Agents#1843, Marinara-Agents#1845, Marinara-Agents#1851, Marinara-Agents#1855, Marinara-Agents#1859, Marinara-Agents#1863, Marinara-Agents#1906, Marinara-Agents#1920).
- Slurp can tell Long-Term Memory about your Creators, so your chats know them too. Facts you write or promote, couples and friendships between Creators, and how storylines end become memories of the Creators involved, and retracting a fact removes it; nothing from fans or DM threads is shared. Both sides are off by default: turn on Tell Long-Term Memory about your Creators in Slurp and Other Agents can add memories in Long-Term Memory's Memory Settings → Sharing, and each offers to turn on the other. Memories Slurp added show a Slurp chip in the Memory Vault, the Sharing table shows Memories added this week for each agent, and Slurp doesn't get its own memories back as new when it recalls (Marinara-Agents#1992, Marinara-Agents#1999, Marinara-Agents#2011, Marinara-Agents#2015, Marinara-Agents#2017).
- Long-Term Memory's Memory Settings → Extraction → Chat import detail sets how finely it cuts a chat it imports: Standard (24,000-character pieces, as before) or Detailed (12,000), for finer memories at about twice the extraction cost. It applies to chats imported from now on, and a chat keeps the size of its first import (Marinara-Agents#1918).
- Long-Term Memory's Memory Settings have Finish cut-off answers beside Maximum output tokens, off by default. With it on, when an extraction answer stops at the output limit, Long-Term Memory asks the model for the rest, with up to 3 extra requests for that source, each sending the source again. With it off, a source cut off this way now says that Retry will stop at the same place and names the setting (Marinara-Agents#1558).
- Long-Term Memory's Sources lists imported memories whose character, lorebook entry, chat summary or chat message was deleted under Source gone, so you can remove them along with their source or leave them as they are (Marinara-Agents#1762).
- The built-in Long-Term Memory chat summary prompt asks for each person's full name, spelled the same way every time, and for seven plain sections (What happened, People, Between people, The world, Still open, Recurring and Overall tone) instead of made-up IDs, tags and field lines. Long-Term Memory recognizes characters more reliably, and the summaries are easier to read in the Chat Summary panel. Existing summaries and templates you copied stay as they are (#8352).
- Long-Term Memory extraction requests are about 775 tokens shorter. The rules are sent once and the model no longer copies the source's hash and evidence back, so its answers are shorter too and fewer of them hit the output limit. A suggested memory with an empty evidence list, a blank title or an empty optional field is no longer left out. An imported character card is read as the character's sheet: its backstory becomes facts about the character instead of timeline events, and its scenario no longer becomes an open thread. The model is told to name known characters exactly as the Memory Vault lists them, so fewer facts are dropped as an unknown character. Prose summaries, such as those from a custom summary prompt, another app or a transcript recap, now keep each narrated beat as its own event, keep memorable quotes with their event and record recurring motifs; before, they kept about a third fewer events than summaries with headings (Marinara-Agents#1517, Marinara-Agents#1520).
- Long-Term Memory extraction keeps memories it used to drop. A character fact from a structured chat summary whose cause is written in words, such as
caused_by: the night lesson, is kept, and so are a memory that cites the summary or import it came from and one whose score the model writes in quotes, such as "0.5". A short event name inside a longer word no longer links a change to the wrong event. Facts about a character whose name starts with "Char", such as "Char Aznable", or a pair whose first name starts with "Rel", go to their own memory instead of being dropped or saved under a shorter id, and when a chat calls one of Long-Term Memory's own characters by part of their name, such as "Preston" for "Preston Farraday", the memory joins that character's note instead of starting a second one. A source no longer fails as a whole over a memory about a character whose name starts with a digit, such as "2B", and a chat piece whose every memory is malformed fails with Retry instead of reporting success with nothing kept. Accepting a later chat piece's draft applies its thread and relationship updates together with the rest (Marinara-Agents#1511, Marinara-Agents#1516, Marinara-Agents#1528, Marinara-Agents#1540, Marinara-Agents#1548, Marinara-Agents#1552, Marinara-Agents#1884, Marinara-Agents#1909, Marinara-Agents#1933).
- Long-Term Memory is faster on large vaults. A batch of imported or re-extracted sources reads the vault once instead of once per source, so recall and other memory actions wait less meanwhile: on an 8,000-memory vault, a 10-source batch held them up for 1.3 seconds instead of 24. The Memory Vault draws the first 100 memories of each type with a button for the next 100, and each letter you type in its search appears at once; counts, search, filters and Select visible still cover every memory. Applying several Review suggestions, or an extraction that applies memories, runs one recall index rebuild in the background instead of one per change, and after you switch the embedding source, recall answers from keyword matching straight away while the vault is embedded again. A full debug log is trimmed to its newest 1.5 MB, so saves and recalls no longer wait for a 2 MB rewrite with every new line (Marinara-Agents#1519, Marinara-Agents#1521, Marinara-Agents#1526, Marinara-Agents#1557).
- Long-Term Memory's Memory Vault shows your memories sooner. Rarer filters sit under Refine, which opens by itself while one of them is in use, and changing several memories happens in one Edit selected… sheet, with Archive and Delete kept apart. The sheet says how many memories will change, stay the same or be blocked, explains why Apply is off and repeats Apply under the list. Save confirms beside the button, and a save that waits on a recall rebuild shows a warning instead of an error. The memory you have open is marked with an edge bar, not only a tint, and its side panel is called Memory info wherever you open it (Marinara-Agents#1637).
- Long-Term Memory's Memory Vault finishes its actions when you open another memory meanwhile. After a bulk change, the list reloads, the bulk buttons work again and an open memory shows its new availability and status, so saving it no longer puts back removed places or an old status. Undo after an archive, Save, permanent delete and Rename detail no longer stop half-way: an Undo that could only restore some memories archives them again, a memory reopened during its own save shows what was saved, and deleted memories leave the list and the selection. Escape no longer closes Rename detail while the rename runs, and the Undo banner after an archive keeps saying how many memories it will restore when you save another memory (Marinara-Agents#1538, Marinara-Agents#1546, Marinara-Agents#1639).
- Long-Term Memory's setup guide shows in full only on the Memory Vault and shrinks to a one-line bar with Resume and Dismiss elsewhere. It steps aside when one of its buttons opens another screen, offers Not now, Don't show again and Done, and its later steps follow the source type you picked. The lexical-recall warning has its own Reindex recall button you can reach by keyboard, and a failed status load offers Retry instead of a dead end. The unsaved-changes prompt says where you are going, and Long-Term Memory's part of Chat Settings is shorter, lists the five recall styles with the current one marked, has an Open Long-Term Memory button and no longer shows made-up defaults while loading (Marinara-Agents#1612, Marinara-Agents#1632).
- Long-Term Memory's page uses the same header as the other agent pages, with the store banner, logo, name, the Active switch for the open chat and Manage package. Add memories and the setup guide stay in that header (Marinara-Agents#1939).
- Long-Term Memory's Review Queue, Sources and Memory Settings read more clearly. Review rows say what each button does, Check and then Apply, with a Ready or Blocked chip on narrow panels; terms such as "preflight" and
source_deletedread as plain sentences; and reviewing who a memory is about offers Skip this memory and names each person with a detail that tells them apart instead of a raw key. Sources tells Re-import from source apart from Reload list, one lorebook entry no longer reads "1 entries", and a blocked import offers Choose destination. Maintenance groups its actions under Backup, Repair and Delete or reset and offers a backup export before Delete all data. Recall settings are grouped under Budget, Ranking, Text filters and Sharing and show when your edits make the style Custom, unsaved Memory Settings tabs show a dot, success messages are readable in the light theme, and an identity repair names the backup it made (Marinara-Agents#1656, Marinara-Agents#1670).
- Long-Term Memory works better with a keyboard, a screen reader and a touch screen. In Sources, Tab reaches each chat or character source and Enter opens it. Buttons that start work, and controls locked while something runs or while edits are unsaved, keep keyboard focus and say why they are waiting, results show beside the action that made them and are announced to screen readers, and field errors sit under their fields. Tabs, filters, checkboxes and small buttons are large enough to tap, the layout follows the width of Long-Term Memory's own panel instead of the window's, batch bars stay in view while you scroll, and the Vault and Debug lists fit a zoomed or short screen. Long lists stay responsive (place pickers show 100 places at a time), typing in Review, the Vault and Debug search stays smooth, warnings show an icon and a stronger border instead of relying on colour, and spinners hold still with reduced motion on (Marinara-Agents#1587, Marinara-Agents#1595, Marinara-Agents#1632, Marinara-Agents#1687, Marinara-Agents#1715, Marinara-Agents#1789).
- When something unexpected goes wrong, Long-Term Memory now says what you were doing, such as "Could not reset memory settings.", instead of "Internal Server Error" or the raw error, which could include file paths on the server. This also covers the integrity check in Maintenance and the package status after a failed recall index rebuild, note files that can't be read, identity repair, sources that fail to save or extract in Sources, changes Review Queue can't check, and loading the memory model when you import or re-extract a source. Messages written for you, such as "Choose a language model connection before generating content.", show as before, and the full error goes to the server log. Warnings in the server log now include the error that caused them, and a warning that names a chat, draft or file shows that name instead of the error (Marinara-Agents#1509, Marinara-Agents#1510, Marinara-Agents#1545, Marinara-Agents#1547, Marinara-Agents#1551).
- Long-Term Memory starts after you roll back to an older Marinara or an older version of the package even when a newer one saved a setting it can't use, such as a new choice or a value above its limit. It sets aside only what it doesn't know: that setting uses its default, the server log names it once, and the newer value stays in the file unless you change it. While the retention settings hold such a value, automatic cleanup of old receipts, logs and drafts pauses, so a limit you didn't choose deletes nothing. When the settings fail to reload after Reset settings or a backup import, Memory Settings waits for the new settings instead of showing the old ones, so the next Save no longer writes them back (Marinara-Agents#1518, Marinara-Agents#1531, Marinara-Agents#1709).
- Long-Term Memory's whole-number settings, such as the memory budget, maximum memories and the extraction limits, round a typed decimal like
2.5instead of failing to save, and per-chat settings no longer ignore it (Marinara-Agents#1975).
- Long-Term Memory has a Korean interface. It follows Marinara's language setting and shows English for any text without a Korean version. The translation is machine-made and still waits for review by a Korean speaker (Marinara-Agents#1770).
Gacha Forge
- Gacha Forge has a second kind of combat, Formation, chosen when you create a world. Classic stays the default, and an existing world can switch in Story Continuity after a confirmation, which writes a Formation kit for each character with your connection; a kit already paid for is never made again after a cancel or a failure, and characters, progress, gear and Classic skills are kept. A team seats up to six: one to three fighters in the Front Row and up to three supports in the Back Row, who can't act or be attacked but make one energy of their element each turn. Tap a Front Row fighter, pick its Normal skill, Ultimate, Move/Swap or Hold, then its target; the plan shows the order and the energy each step spends, Fight plays it out, and Auto still plays whole turns. Ultimates need their own element, with Light and Dark as wildcards. When a Front Row unit falls, a Back Row unit on its side steps up, so a fight ends only when one side has nobody left. A unit's Skills tab shows its Formation kit, every skill shows what it does and costs, and bosses can bring their own rules, such as only Fire hurting them or an order to defeat enemies in (Marinara-Agents#1696, Marinara-Agents#1700, Marinara-Agents#1719, Marinara-Agents#1723, Marinara-Agents#1729, Marinara-Agents#1733, Marinara-Agents#1735, Marinara-Agents#1741, Marinara-Agents#1754, Marinara-Agents#1778).
- Gacha Forge lets you choose what your protagonist says or does. Two to four options show above the dialogue box, labelled by intent, such as "Apologize" or "Say that you trust them"; an action plays as narration and a spoken choice as the protagonist's line. A small choice's alternatives are written together and rejoin the shared story, your first-play choices become canon, and replaying a scene lets you try another option without rewriting it. A chapter or Character Story can end with one optional big choice: it is permanent, and later chapters wait for it and follow the outcome you picked. Choices are on by default under Settings → Story → Continuity → Allow choices, and existing chapters play as before. Background pre-forging carries on past small choices, and Auto keeps playing after you pick one (Marinara-Agents#1598, Marinara-Agents#1616, Marinara-Agents#1633, Marinara-Agents#1641).
- Gacha Forge remembers your story on its own. Finished chapters, Character Stories and saved character conversations are summarized in the background, and each prompt gets a short overview of the whole story, kept within a tenth of the model's context, up to three earlier chapters and three side memories that match what was just played or said, the previous chapter in full and the current chapter so far. With an embedding model set, recall matches by meaning as well as by words, and only clearly relevant memories come back. Writing a plan, scene, fight or chat never waits for memory to catch up, summaries get at least 10k tokens of output room so long chapters can be summarized, and on a small model the oldest summaries are left out only when the reply wouldn't fit otherwise. Settings → Story → Continuity shows the memory's status, with Retry (Marinara-Agents#1658, Marinara-Agents#1760, Marinara-Agents#1771, Marinara-Agents#1778).
- Gacha Forge characters know only what they saw, took part in or were told in the story, and nothing outside it. A unit's chats stay private: they reach that unit's own chats, its Character Story and the scenes and events it is in, but never another unit's chats or a fight. Scenes that pre-forge wrote ahead but you haven't played never reach a chat, a character message or a Character Story. Your first play stays canon: replaying can't rewrite what memory saved, and memory carries on when an earlier chapter later reads differently (Marinara-Agents#1771, Marinara-Agents#1778, Marinara-Agents#1788).
- Gacha Forge chapters are ready much sooner. A new chapter opens as soon as its plan is written, and each fight is designed in the background right after the scene before it, so forging no longer takes 15 to 20 minutes. On a main chapter's forge screen, Keep playing lets you leave while it forges: the busy pill shows its progress, and a notice says when it is ready, couldn't be forged or was interrupted. With pre-forge on, scenes already written can be played while the rest of the chapter is written. Cancel on a chapter or story loading screen takes you back Home without losing your world or progress (Marinara-Agents#1663, Marinara-Agents#1725, Marinara-Agents#1760, Marinara-Agents#1776).
- Gacha Forge has optional seasonal story events. Turn on Seasonal events when you create a world or in Story Continuity; existing worlds stay opted out. Every three weeks a world gets an event of its own, with its theme, cast, banner, soundtrack and optional animation, and a ten-part story and combat chapter written against your current canon when you choose to play it. Missed events are skipped, never made up with paid requests. Rewards such as Funds, Insight, Aether, four-star characters or themed outfits are granted once. When the next chapter isn't forged yet, Chapters → What happens next offers the event beside the next chapter and any Character Story; otherwise Events → Story events starts it. Pre-forge writes event scenes ahead too, at no Vigor cost. While an event is open the main story waits for it, and a played event sits in Chapters after the chapter it followed, marked Done, Ended or Paused, to read again. A finished event's fights then open on Hard and Very Hard while it runs, at 5 Vigor each, paying what a main chapter's Hard or Very Hard fight pays on each first win (Marinara-Agents#1695, Marinara-Agents#1768, Marinara-Agents#1778, Marinara-Agents#1787, Marinara-Agents#1788, Marinara-Agents#1814, Marinara-Agents#1823).
- Gacha Forge has sound. Each world can voice its dialogue with the voices you assigned to your characters in Marinara, play stock music and sound effects, or generate its own with a Music & Sound Effects connection. A mute button sits between Settings and fullscreen, three sliders set the volume of each channel, and Auto waits for a line's voice to finish plus a pause you choose (three seconds by default). Generated characters, narration and characters without an assigned voice stay silent. Generated music follows a soundtrack brief your narration connection writes for Home, battles, bosses, three story moods and Character Stories, saved with the world, so chapters get their own music instead of the Home song. When audio fails, the game shows the HTTP status and, where available, the provider's reason, and keeps playing stock music (Marinara-Agents#1610, Marinara-Agents#1626, Marinara-Agents#1630, Marinara-Agents#1633, Marinara-Agents#1641).
- Gacha Forge voices more of the story. Your persona reads its story dialogue in the voice assigned to it under Connections → Text to Speech, while the messages you send in character chats stay silent. Voice other characters, next to Read character dialogue in World → Sources → Audio and off by default, gives NPCs and units without an assigned voice one from Marinara's Random NPC Voices lists, matched to male or female when known, and each name keeps its voice. Combat voice lines play in Classic and Formation fights: each voiced character, your persona included, gets four saved lines for falling, defeating an enemy and their Ultimate, prepared when the battle screen opens, and a notice says when nobody in the team can be voiced. Dialogue audio that matches is reused instead of being made again (Marinara-Agents#1674, Marinara-Agents#1696, Marinara-Agents#1731, Marinara-Agents#1739, Marinara-Agents#1746, Marinara-Agents#1748).
- Gacha Forge banners have their own music and can move. Each summon banner gets its own generated soundtrack, and pulling any 5-star from it collects that song; choose the Home music with Home page menu music in Settings → Look → Visual, and saved songs keep playing with music generation off. Generated music carries more of the world's own motifs. With an Animations video connection chosen in Sources, banners play as muted looping clips with Pause and Play, keeping the still picture while a clip loads or fails and with reduced motion on, and saved clips also play on a phone that reaches Marinara over your network or Tailscale. A failed animation says why, such as the provider with its HTTP status, Seedance setup, a timeout or storage, without showing the provider's own text. A dropped connection or a temporary server error is asked again for free, and a paid Retry waits for you to press it (Marinara-Agents#1661, Marinara-Agents#1665, Marinara-Agents#1674, Marinara-Agents#1682, Marinara-Agents#1710, Marinara-Agents#1719).
- Gacha Forge units can message you first. Set how many messages a day you want in setup or under Settings → Story → Continuity → Daily unit messages, 0 (off) by default, and a random unit you can talk to writes to you now and then while the world is open, with no catch-up for time away. New messages arrive as a card on Home with the channel, the sender and the opening lines. Letters fills the screen with a one-line reply box and lists your bonded units. Character chats answer your first message again, and earlier messages stay scrollable in the same chat (Marinara-Agents#1682, Marinara-Agents#1700, Marinara-Agents#1719).
- Gacha Forge story portraits can show feelings. Turn on Expression portraits in World → Sources → Images, shown with an image connection and off by default, and each line of dialogue shows anger, fear, sadness or joy, marked in the same request that writes the scene, with the usual portrait as neutral. Four faces per look are painted in the background as edits of the current portrait, only for characters who speak, and they never hold up a scene. A failed set isn't retried on its own: turn the setting off and on to try once more (Marinara-Agents#1746, Marinara-Agents#1748).
- Gacha Forge fights have Soldier, Elite and Boss enemies, shown on formation cards and in enemy details, and the last fight of each newly planned chapter is a boss before the closing scene. Important enemies speak during the fight, with an introduction, lines as they attack and lose health, and words for your win or loss. Their lines are written with the encounter, so no request is made per turn, and they use the assigned voice, mute and dialogue volume and work with Continue, Auto and the keyboard. Existing chapters, Tower bosses and saved fights play as before, and older enemies without a tier show as Soldier (Marinara-Agents#1646, Marinara-Agents#1649).
- Gacha Forge can start an ongoing chapter over. Regenerate chapter at the bottom of an ongoing main chapter or open Character Story asks first, then discards only that chapter's story, choices and reading progress and writes a fresh plan with your current settings and character cards. Finished chapters can't be reset, other chapters, conversations, characters, inventory and earned rewards stay, and replaying cleared parts doesn't pay first-clear rewards again (Marinara-Agents#1691).
- Gacha Forge pictures send each character's face as a reference (their card's avatar, your persona's or their saved portrait) and, when the picture paints them in the outfit they have on, that outfit's picture too, at most four images. A new portrait or outfit is painted from the face alone, so the outfit a unit wears no longer leaks into its new look. Banners and Bond backgrounds paint a unit in the outfit it has on while Outfits is on, as chat photos do; scenes and key images do so only when The story uses worn outfits is on (off by default). Banner art already painted isn't repainted (Marinara-Agents#1833).
- Gacha Forge Story and Home backgrounds keep the top of the picture below the game header, and portrait frames show their bottom edge. Home has a small diagram of which elements beat which beneath the communication button, and Units explains what the dot on Home suggests, such as levelling up or ascending a unit. Level achievements now count every level your units and relics gain, and existing worlds recover the progress they can prove from what you own, without changing rewards you claimed or pass progress (Marinara-Agents#1610, Marinara-Agents#1630, Marinara-Agents#1641, Marinara-Agents#1649).
- Gacha Forge story backgrounds and key images join Home's background picker only once you've seen their scene, with a short "New background unlocked" notice, so the picker no longer spoils scenes to come. Every picture in Home → Background → Change has a download button that saves it without choosing it, with sharing on iPhone and saving on Android (Marinara-Agents#1708).
- Gacha Forge sends a linked character card's whole Description, Personality, Backstory and Appearance when it forges a world and writes chapters, scenes and Character Stories, and leaves out the card's Scenario, greetings, example dialogue and tags (Marinara-Agents#1682).
- Gacha Forge upgrades take fewer steps. Upgrading a character, weapon, relic or skill fills in the materials you can afford before you confirm, auto-equip picks the best free gear, upgrade materials open the place to farm them with its next rotation, and Mandates open their Login Event. Daily resets and new banner periods follow your current time zone, including clock changes (Marinara-Agents#1674).
- Gacha Forge characters can equip their designated weapons even when the saved weapon's type differs from their role, without regenerating the weapon; other characters keep the normal type rules. On short landscape screens, Gear details keep their full height and the panel scrolls, so Choose and Change stay clickable (Marinara-Agents#1838).
- Gacha Forge's narrator, chapter planners and characters writing messages are asked to read every character's mind more carefully: what each one knows, wants and feels (Marinara-Agents#1837).
- Gacha Forge is easier to play on a phone. Turned sideways, world creation uses the whole width and scrolls as one page, with a slim Back and Next row at the bottom until you start typing. Tapping a text field no longer makes iPhone zoom in, and on iPhone and Safari, ticking a cast member or an outfit theme no longer jumps the list back to the top. The Welcome Gift's rewards no longer cover Claim on a short screen. With the keyboard open, character communication keeps your draft and Send in view, and editors fit the space left with Close in reach (Marinara-Agents#1585, Marinara-Agents#1590, Marinara-Agents#1608, Marinara-Agents#1641, Marinara-Agents#1649).
- Gacha Forge fixes. Auto in story scenes no longer turns itself off when background work starts or ends, and Formation changes stick while a story is written in the background, which no longer slows other screens down. Story choices show on the first play, the Vigor countdown no longer flickers, unit portraits stay put when you switch tabs, and opening a weapon or relic upgrade no longer cuts to an empty screen. Backing out of a loading fight and entering another loads the new one, a fight that can't start says why with Retry and Back, and the right speaker portrait shows. On phones, Writing help opens above Settings, daily rewards no longer cover Claim, and fullscreen and mute no longer advance the story (Marinara-Agents#1674, Marinara-Agents#1682, Marinara-Agents#1700, Marinara-Agents#1711, Marinara-Agents#1719, Marinara-Agents#1754, Marinara-Agents#1776, Marinara-Agents#1778, Marinara-Agents#1814).
Slurp
- Slurp Live shows are rebuilt. A show runs minute by minute, with fans, tips, menu orders and goals, while the model writes the host's and the chat's lines, and the host answers you by name. What the webcam shows is told in words on the stage, so a show works without an image connection; with one, a picture follows about once a minute, upright like a Story. Go live yourself as your persona's Creator, or as any Creator, from Go live in Stir, and the room reacts and suggests your next move. A live Creator's Moments tile opens the show, "X is live" notices and a thank-you post come with each show, and Backstage → Live shows holds the settings. Under Tip goals there, Goal size makes the room's goals and menu prices smaller or bigger, and Own goals sets up to three goals of your own for one Creator, each an amount and what happens when the room reaches it, in place of the made goals in that Creator's next shows. On an install that already had Slurp, Live stays off until you switch it on (Marinara-Agents#1737, Marinara-Agents#2111).
- In Slurp DMs, your rapport with a Creator climbs through tiers from Stranger to Whale, and each tier opens more, such as spicier chats without a subscription, a free spicy picture now and then, or custom requests that cost 15% less; the highest tier you reached is kept. Creators offer paid sexting sessions (Sext with me – 20 min). Stir opens as a sheet that slides up over the page you are on, and Stories open in Slurp's own viewer (Marinara-Agents#1606, Marinara-Agents#1653).
- Slurp's feed has more variety. Each Creator's page has a niche read from their card, a main one and up to two on the side, and each ordinary post has a kind, such as a try-on haul, a gym set, a finished commission, a fan request or a teaser, so pages differ from each other and one page doesn't repeat itself; your spice level still decides how much is shown. A Creator without a wardrobe gets one filled from their card once, so pictures stop showing the same clothes, a painted image style is no longer described as a personal photo, automatic captions are short lines of about 40 to 160 characters, live recaps describe the show they came from, and daily trends no longer repeat. In October, a Halloween costume contest under Stir → Drama has three Creators post costumes and lets you pick the winner. Every Creator's card is read once more after updating, one background request each (Marinara-Agents#1802, Marinara-Agents#1811).
- Slurp Creators from fantasy, science-fiction, historical or other worlds keep their world. Slurp reads it from the card, and their posts, DMs, comment replies and scenes use that world's words for devices, money and festivals, their pictures show no phones, mirrors or screens, seasonal events become their world's nearest festival, and about one fan comment in four reacts to the culture shock. Life details shows the World it read, for you to fix. Modern Creators are unchanged, and each card is read once more in the background (Marinara-Agents#1831).
- Slurp runs arcs, dramas and situations on one storyline engine. Story Packs import version 2 files, and every pack sits in one Packs list, where you switch it on or off, switch its topics one by one or take it out with Remove. New packs, all off by default: a Family pack and five kink packs (Lingerie, Cosplay, Feet, Dom/sub and Exhibition) (Marinara-Agents#1606).
- Slurp fans talk about the post: some questions and reactions quote its title, there are 16 more fan questions, and a fan line already under a post isn't repeated. A Creator may answer a fan's question from one of their recent posts in a later post. Storylines gain five business arcs: a sale week, burnout and comeback, new gear, a leak scare and a page anniversary (Marinara-Agents#1818).
- Slurp wardrobes move between Creators without a model call: Export JSON saves a whole wardrobe, Export look as JSON saves one look, and Import JSON takes a whole export, a list of looks or a single look into the review list, keeping
{{random}}as written. The model-based wardrobe import accepts untidy replies and has room for long answers and thinking models, so it finds looks, from pasted text too, and Legacy wardrobe note says "(empty)" when a Creator has no old note. Rewritten commission requests can run to 1,000 characters instead of being cut off at 400, and scene descriptions to 1,500, so Post now on a collab with a long visual direction no longer fails (Marinara-Agents#1920, Marinara-Agents#1988).
- Slurp DM replies know your latest public posts, Creators tagged in a post appear in its picture, a look written as a Danbooru tag list reaches the picture prompt whole, the picture prompt rewrite gets at least 8,192 tokens, and commas work in wardrobe tags. Keep original picture files in Settings → Images → Advanced, off by default, stores each picture as the provider sent it, so ComfyUI pictures keep their prompt and workflow, at several times the file size. The onboarding window keeps one size and shows one header (Marinara-Agents#1606).
- Slurp fixes. Nude and explicit pictures no longer dress the Creator in everyday clothes: at those levels only intimate looks are offered, and an outfit of nothing adds no clothing to the prompt. Pulse marks a new Creator's first post as done once it is posted, instead of showing it as running for up to a day. With two Creators in one picture, the second keeps their own reference picture and no longer comes out as a copy of the first. Professor Mari's page no longer says it needs attention when Marinara updates her built-in card. Refreshing a Creator's schedule reads the scenario and backstory of a card whose description is split into fields (Marinara-Agents#2002, Marinara-Agents#2049, Marinara-Agents#2063).
Other agents
- Quartermaster can keep items and outfits secret from the agent, such as a surprise gift, a disguise or a hidden stash. Hide one from its ⋯ menu: you still see it, dimmed, marked Hidden and listed in the Bag's new Hidden tab, but unless it is worn the agent doesn't, and it stays out of the narrator text and the appearance feed, which also saves prompt tokens. Hiding a worn item takes it off. New Hidden Items chat settings decide what happens when the agent tries to change one: Ask before agent changes to hidden items, on by default, shows the change next to the current item for you to accept, or keeps it under Pending Item Changes in the dock, and Hidden item access sets the rule while Ask is off; Build Wardrobe can use hidden items is off by default. You can also lock an item's description from its editor, so the agent can never change it while your own edits still go through (Marinara-Agents#1712; thanks @newfiesledneck).
- Quartermaster's appearance feed has seven modes: Off, Outfit Name, Outfit Description, Outfit Name + Description, Equipped Item Names, Equipped Item Descriptions and Equipped Item Names + Descriptions, so image prompts, such as the Illustrator's and outfit portraits, can get the items' descriptions too. When no outfit matches, or the matching outfit is hidden, an outfit mode uses the matching equipped-item mode. An optional Quick delete button on item and outfit cards, under Settings → Display and saved per device, deletes after one confirmation. Settings are grouped as Appearance, Hidden Items, Display, Image Generation and Data, and Recent Agent Update is now Recent Item Updates. Re-equipping an outfit or reverting an agent's removal brings a deleted item back with its default slot, hidden state and lock (Marinara-Agents#1712; thanks @newfiesledneck).
- Quartermaster item images stay with their item. An uploaded or generated image is saved on the item, so renaming it, for example from "Sword" to "Rusty Sword", keeps the picture, and it travels with the item through outfit snapshots, Revert and export and import; an image uploaded before this update is saved to its item the first time the item is renamed. An [i] on a bag card's image and a line in the item editor say where the image came from, and Unlink sends that chat's item back to matching by name. A new image named like an existing file is saved as
apple (1).pnginstead of replacing another item's picture, and a dropped connection or a server restart no longer hides images until you reload (Marinara-Agents#2034; thanks @newfiesledneck).
- When the Game Master's reply takes the party somewhere more than one step away on the map, such as by boat to the next town, World Maps now follows the route there instead of leaving the map where it was, so the map and the story no longer drift apart. Places with no route are still refused, and one-step moves work as before (Marinara-Agents#1602).
- World Maps' Story Location bar always shows where the story is now. On a deep map or a narrow window it leaves out whole levels from the top, starting with "…", instead of cutting off the current place. Its options panel picks As much as fits (the default), Current place only, Current and two above or Full path, kept on this device, and spells out the full path, which also stays in the bar's tooltip (Marinara-Agents#2026).
- Relationship Tracker understands Korean, Japanese and Chinese names. A name followed by a Korean particle, such as
김민수는, or written in Japanese or Chinese text without spaces now counts as that name, so Update from History saves the model's suggestions instead of failing, and you no longer have to write김민수 는. Relationship perspectives and Scene-only presence recognise these names too, and so do Latin names written in these languages, such asAlice는. A one-character Chinese or Japanese name still needs a space or punctuation, a one-syllable Korean name matches only before a particle, and English matching is unchanged. Persona errors now say which name was expected (Marinara-Agents#1622; thanks @NoblezDomain).
- On phones, the Relationship Tracker button in the Roleplay toolbar opens the relationship web in a sheet; before, tapping it did nothing. Close it with its close button, Escape or a tap outside. Desktop keeps its Trackers drawer, and opening the web runs no model (Marinara-Agents#1912; thanks @stclaire for the report).
- In the Music DJ's custom music player, a scene mood too long for its line opens in full when you focus or tap it, and screen readers hear the whole mood. The player no longer shows "The play() request was interrupted…" and Playback needs attention while music is playing after the DJ changes tracks during a resume. Real failures, such as a missing file or blocked autoplay, still show (#8611, #8640).
- When an image service accepts a picture request and then fails it in a way Marinara marks as not worth retrying, Noodle and Slurp no longer request a replacement on their own, so a paid failure no longer buys a second picture. Slurp also stops retrying those posts and Creator avatars and banners in the background, and keeps the post's prompt so you can retry it yourself. Other failures are retried as before (Marinara-Agents#1530).
- Noodle on a phone turned sideways hides its top and bottom bars while the keyboard is open, so posts, replies and what you're typing stay in view, and its expanded prompt editors no longer squeeze their text between the header and the footer. On Android it follows the visible part of the screen as the keyboard opens (Marinara-Agents#1679).
Game mode (work in progress)
These parts of Game Mode are still being built and may not work fully yet. Overworld games stay off unless the server sets MARINARA_OVERWORLD_GAMES=true.
- Rulesets can now describe much more of a game such as 5e (SRD 5.1) (Capability API 1.392 to 1.812). Ruleset fights on the tactical board handle actions, spells and spell slots, concentration, reactions, legendary and lair actions, summons, zones, cover, ammunition and items, with end-of-fight cards, and a combat AI plays them for foes and AI-controlled party members with a short reason for each choice. Encounters are held to the party's level: foes the Game Master makes up are rated by what they really do, a boss gets no more legendary actions than its tier allows, and a creature far beyond the party sends weaker ones of its kind. Group checks pass when at least half the party passes, and each player sees their own roll, solo and in rooms. Rulesets can ship language packs, so the store, the sheet and the layer choices in Game setup's Rules step show their names in your language (#8600, #8629).
- Ruleset fights on a board get their own fight screen in the chat area (Capability API 1.375) (#8049, #8138, #8202, #8212, #8274).
- The board sits with the log under it, and a side pane shows whose turn it is, their budgets, movement and pools, the options grouped by kind with cost, reach and forecast, reaction questions, the turn order and zones. The chat list, map, party bar and Game toolbar step aside until the fight ends, and the end shows a result card with the rounds, each foe's fate, how each party member stands and what they spent, loot and Continue story.
- Options show the defense an attack is really rolled against, each target's odds, the save and expected damage for areas, and what a reaction changes, such as "Armor Class 13 → 18, the hit misses", with condition badges and a board legend. Ready an action is one row per action, and options with nobody in reach fold into one line. An area spell aimed at one square shows who it catches and casts on a second click, tap or Enter.
- On phones a fight has Board, Actions, Turn order and Log tabs, and a move takes a preview tap and a confirm tap. With Debug on, the log adds a short aside after each AI step saying why the opponent or companion did that, from the Engine's own scoring, and enemy AI personas are no longer shown to players. Ruleset authors can set budget letters, colors, the defense label and which pools show.
- Overworld games (off by default): Experiences, the ready-made adventures you pick when creating a game, can bring much more of their own: story clocks you watch fill in the HUD and World tab, people with portraits and their own way of speaking who know things, companions who join with a sheet, creatures (flying ones too), music by place and in fights, seasons, fights that scale to the party's size and level, exposures such as cold or hunger that wear the party down, and additions to the game's ruleset. Their stories can give items, start fights, move the party, end the game with one of their endings, and react to rests, travel and idle time. Picking an Experience fills in the Game wizard with its name, setting, tone, intro and more, which you can change unless the author locked the intro. An Experience that holds only pictures, music and data travels as one
.experience.jsonfile: Import an Experience file in the wizard's Experiences section shows its name, version, size and contents for review before anything is sent, and refuses a file whose contents don't match. Catalog rulesets are now.ruleset.jsonfiles, like imported ones, and installed packages keep working. For package developers, these need Capability API 1.342 to 1.374, and a whole map pack can be checked before export (#8004, #8034, #8039, #8044).
- A player's ruleset sheet in a game now opens on an Overview with the summary, ability scores and modifiers, pools, attacks with to-hit and damage, and active conditions, with more under Add condition…, plus a tab for each list the ruleset asks for. During a fight it can't be changed, except health and pools. The guided builder marks entries the sheet already has as Already known, offers one pick at a time with Add another, waits for earlier steps before ticking one off, can Start over with the builder, and keeps its picks when a card is copied into a game. Ruleset authors: the new display keys need Capability API 1.378 (#8138).
- In ruleset games, the Game Master's sheet changes land more reliably. Harm, healing and spent resources it narrates come with their sheet commands, rolled damage reaches the sheet in one-request turns with the same roll the narration shows, a command goes to the character the narration names, and one without a pool goes to health. When a turn is rewritten after the dice, the draft's spends, uses, buys, sales, payments and gifts are kept and paid once, in games without a ruleset too, and a cost the check already paid isn't paid again. Item names with commas, such as "Rope, hempen (50 feet)", stay one item, pools written as
hit_pointsor "HP" are found, and the Game Master is told to name a place before buying or selling there (#8165, #8172, #8184, #8194, #8264, #8272, #8274, #8278).
- Rulesets that roll symbol dice, such as Genesys-style pools, can have fights run by the Engine instead of the model (Capability API 1.382), with leftover symbols buying extra damage, criticals, conditions and more. Choose my own symbol spends on the fight screen lets you pick your party's spends, with Let the Engine choose and Spend nothing more; it is off by default and remembered in this browser. Fight health can also be a track that fills up to a threshold, such as Genesys Wounds (Capability API 1.383). You and the Game Master can throw the ruleset's own dice by name, such as
2 ability 1 proficiency vs 2 difficulty, in the composer's dice field and with the Game Master's dice roll, and the result shows each die's symbols, the net symbols and whether it succeeded (#8220, #8233, #8235, #8503).
- A ruleset can name which combat styles its fights allow, such as Tactical only for rules that need a board (Capability API 1.379). The New Game wizard and the game's Combat Style setting then offer only those, with a note saying why, and changing a game's ruleset refuses a combat style the new ruleset doesn't allow (#8170, #8182).
- When a newer version of a game's imported ruleset is stored, the Journal and the setup wizard's World step show both versions with Update this game. After you confirm, the game plays by the newer rules from then on, and its later sessions do too. The wizard always names an existing game's rules and version (#8260).
- A ruleset layer can keep items out of shops or change what drops without removing them from the game, as a low-magic setting does with magic items: it can take sellers out of a market, name items no seller has and replace loot tables. A ruleset's market can also name items that are never sold, which sellers still buy back (Capability API 1.813) (#8623).
- In ruleset games, an enemy that fled a fight comes back the next time as the same creature, with the same tier, sheet and health, and the fight says it is the one that got away, instead of being made again and possibly stronger. The Game Master also no longer narrates shops or wares the market doesn't list as for sale (#8328).
- In ruleset games, party checks, story exposure saves and Held Ground rolls no longer roll for, count or mark the sheets of party members who were removed or are dead, so the "X of N passed" line can show fewer members. A shade item such as a Lantern of Dusk protects the party only while its carrier is still in the party and alive, and the fight setup plans enemies for the members who will really fight. With every member removed or dead, a party check isn't rolled. Your own card always counts, also when your persona uses a shorter name than the card or was renamed, and whole-party commands such as a long rest now include it in those cases too (#8782).
- In ruleset games with markets, buys kept from a rolled turn are made at the place the turn's draft named, instead of all being refused because no place was set yet. A buy refused on a later turn, such as one the purse can't pay for, is now told to you as well (#8305, #8322).
- An invented creature's health now lands inside its tier's range. It could end up far below it, such as 5 instead of 32, or stay put when the sheet picked a way of counting health that ignores the typed number, such as 5e's average hit points; that choice now goes back to the ruleset's default, and the fight's adjustments say so (#8320, #8326).
- Creatures called into a ruleset fight, such as a Large horse from Conjure Animals, are set down where their whole size fits, clear of everyone, instead of on top of the foe or the party (#8320).
- A ruleset fight on a board no longer fails to start with "Battlefield features overlap with different terrain." when the Game Master places two kinds of terrain in the same spot. The board keeps the features that fit, the first one named winning, and leaves out the one that clashes (#8317).
- In ruleset games, a party health row in the HUD widgets, such as "Ulfgar HP", now follows the character's sheet instead of keeping the Game Master's last value, in the shape it was written, such as "36/36" (#8322).
- Ruleset fight turns respond faster: within one command, each character sheet is worked out once instead of thousands of times. Results are unchanged (#8045).
Docs
- The user guides were rewritten to match this version and to be easier to follow, also on a phone: install and updates, Home, FAQ, Troubleshooting and Configuration, chats, Conversation, Roleplay, Game Mode, characters and personas, connections around Add account, backups, data and Settings, lorebooks, presets, appearance, extending, agents, media and integrations. Each guide starts with the first task, such as where to click to start a chat, names the buttons the app really shows, and drops or fixes claims that no longer matched the app. Remote Access has a new Tailscale quick start for reaching Marinara from your phone or away from home, and the remote access, upgrade, Android, Termux and iPhone home-screen guides describe the sign-in page and how to get back in after a lockout. The Noodle guides moved into the Agents category (#8510, #8723, #8726, #8727, #8728, #8732, #8733, #8735, #8736, #8739, #8742, #8743, #8744, #8753, #8755, #8765, #8767).
- Game Mode's guide gathers ruleset play into two pages, Playing with a Ruleset and Fights on a Ruleset, and Choosing a model names the cheapest models tested in play, DeepSeek V4 Flash and Claude Haiku 5.5. The ruleset author guide is split into nine pages (#8609, #8612, #8616).