版本0.17.0
• 用你自己的標籤把人物分組,並依標籤篩選人物書架。 • 書庫、Underfiction 與社群合併成同一個切換,社群也能依名稱與標籤搜尋。 • 質問敘述者時,它會說明文本做了什麼,並承諾一條會遵守的規則。 • 輸入時,故事會一直顯示到輸入框上方。 • 各處修正。
Underfiction的新消息
• 用你自己的標籤把人物分組,並依標籤篩選人物書架。 • 書庫、Underfiction 與社群合併成同一個切換,社群也能依名稱與標籤搜尋。 • 質問敘述者時,它會說明文本做了什麼,並承諾一條會遵守的規則。 • 輸入時,故事會一直顯示到輸入框上方。 • 各處修正。
• 圖片與短片回合現在擁有與正文相同的操作,「加入背景」就在「動畫化」旁邊。 • 較長的描述在接近上限時會顯示字數,分享時也會指出需要縮短的欄位。 • 點數用完或已登出?直接從訊息中儲值或登入。 • 在手機上為角色與世界加入的圖片,現在會同步到你的其他裝置。 • 切換回合的版本時,會保持你的閱讀位置。 • 各處修正。
• 插圖可選擇格式:直式、正方形或橫式。 • 故事、圖片與影片的切換現在一直留在輸入欄上方。 • 設定中的「顯示回合費用」會在每個回合下方顯示其費用。 • 模型價格現在依據典型回合的實際費用。 • 因長度上限而中斷的回合不再收費。 • 回覆生成時捲動更流暢。 • 各處修正。
• 寫故事的模型現在可以直接在設定表單的「開始」旁邊選擇。 • 每個模型旁的價格是平均一回合所需的點數,視故事與回覆長度而定。 • 撰寫回合時餘額保持穩定;先前會先下降再彈回。 • 沒有版本的模型不再顯示空的版本標籤。 • 各處修正。
Muse Wonder joins the model picker and tops the shortlist as best overall. It writes consensual sex and graphic violence and says no, in its own words, to coerced sex. Gemini 4 Argon joins as a family of its own rather than the next Gemini Pro: it refuses explicit sex where Pro writes it, and still writes violence. GPT 6.1 Sol and Inkling leave the picker on usage; turns already written on them keep their names in the log. The shortlist is Muse, Gemini Pro and DeepSeek.
An invite still earns you 30% of every top-up the person you invited makes, and the lifetime ceiling per invited reader is now 1,000 credits. Anyone you invited before today stays on the 5,000 they joined under. The 200 credits an invited reader starts with on top of the welcome grant are unchanged.
• 朗讀在先前無聲的地方也能播放了。 • 朗讀在所有裝置上都有同一條控制列:顯示已播放與總時長,暫停與停止並排。 • 「聆聽」會打開它的面板,重新開始朗讀也在這裡。 • 新增兩種朗讀聲音。 • 各處修正。
• 插圖或短片會出現在你按下生成的位置,不再插進你的台詞與其回覆之間。 • 離開 App 時,回合仍會繼續寫下去;因連線中斷而停下的回合會接續完成,不會重複扣款。 • 圖片與影片選單會標出每個模型的價格。 • 編輯與刪除在所有裝置上都會保留。 • 各處修正。
Flux 3 joins the models you can illustrate on, at twelve credits a picture. It keeps close to what you ask for, down to the medium: an oil painting comes back as an oil painting, an ink drawing as ink. It sits behind a filter that lets a battlefield through and turns a nude away. Seedance 2.5 joins the models you can animate on: four to fifteen seconds, up to 1080p, sound on every clip. It moves a painted or drawn picture and refuses a photographic one with a person in it, so it is the model for illustrated scenes; a clip it refuses costs nothing. Five seconds at 720p come to two hundred and eighty-eight credits, against fifty-eight on MiniMax H3 Max, which stays the default.
GPT 6.1 Sol takes the GPT slot in the model picker at a quarter of Astra's price: three credits per thousand characters, against fifteen. The 1M context is unchanged. If GPT was your model, it still is; turns already written on GPT 6 Astra keep its name in the log.
• 在較窄的螢幕上,傳送按鈕不再從輸入列消失。較長的模型名稱會改為縮短顯示。
The version beside a model's name is a number and nothing else, so DeepSeek's reads 4.1. V4 Pro leaves the versions you can keep DeepSeek on: it was a different model rather than an earlier release of the same one. If you had kept DeepSeek on V4 Pro, your next turn is written on 4.1 and the scene says so once. Turns already written on V4 Pro keep its name in the log.
• 新帳號以 200 點開始。你邀請的人以 400 點開始。 • 故事可以先寫四個回合,之後才需要帳號。
• 長場景透過每一回合留下的筆記來讀較早的回合,不再停下來濃縮。 • 引擎在寫出第一行之前思考時,回合會顯示想了多久。 • 開場範本會帶著一段簡短前提打開場景設定,開場寫出之前都能改。 • 讓模型固定在你選的版本,或跟著最新版。 • 各處修正。
Qwen Image 3 Pro is the new default for illustrations: it draws the dark scenes up close where Seedream kept its distance, and costs a little less. Muse joins at four credits a picture and GPT Image 2.5 for the finest detail, both behind a strict filter. To animate, MiniMax H3 Max is the new default: sound on every clip, and now up to 1080p. Wan 3.0 takes over from Wan 2.7 for less, and Gemini Omni Flash takes Veo's place for cinematic shots at a quarter of the price. Seedream, Kling, Veo, Krea, Nano Banana 2 Lite and MiniMax Turbo leave the pickers. If Wan was your model, it still is; pictures and clips already made keep the name they were made on.
• 只用一個世界就能開始一個故事。沒有主角時,你從場景外執導,送出的每一行都是指示。 • 回應長度現在交給敘事者決定;要讓引擎不碰你的角色,在「敘事」裡打開。 • 社群書架現在顯示全部;設定裡一個開關就能收回去。 • 各處修正。
Opus 5.5 takes the Opus slot in the model picker, and it costs a fifth less than Opus 5: six credits per thousand characters in the picker, against eight. The 1M context is unchanged. If Opus was your model, it still is; turns already written on Opus 5 keep its name in the log.
Grok 4.7 takes the Grok slot in the model picker, and it now thinks before it writes. The old setting hurried it to the first line; reading whole scenes side by side, the deliberating version holds the room better, lets feeling arrive through a gesture instead of naming it, and stops tidying its own tension away. That costs time and credits: first prose lands in under a minute on a long chapter rather than half of one, and a thousand characters costs five credits where 4.6 cost two. Grok still holds a scene's language where 4.6 would answer German prose in English, still balks at least, and is still the one-tap retry when another model refuses a passage. The 500k context is unchanged. Grok now runs straight from xAI instead of through an intermediary, which is quicker and drops a system prompt that rode every turn; xAI sees the prose and never the reader, and the model picker's privacy badge says so. Turns already written on 4.6 keep its name in the log.
• 第一次來?第一個場景只有三欄:你的名字、你遇見誰、從哪裡開始。其餘由引擎寫下去。 • 只有一位人物的場景,現在加一句情境就能開始。再選誰先開口:對方的問候語,或你自己的第一句話。兩者都留空,就由引擎開場。 • 由一句話寫成的人物,寫的是他們,不會寫到你。 • 各處修正。
DeepSeek V4.1 Flash takes the DeepSeek slot in the model picker. On the same scenes it wrote cleaner prose than V4 Pro — fewer stock phrases, half the dashes — and it costs half as much: one credit per thousand characters in the picker, against two on V4 Pro. It thinks before it writes and keeps the 1M context. If DeepSeek was your model, it still is; turns already written on V4 Pro keep its name in the log.
• 故事不再在自身內帶著角色肖像的副本,每一回合傳送的資料大幅減少,手機上尤其明顯。既有的故事會在下次儲存時瘦身。 • 刪除的故事會在三十天後如期清除。
• 從手機把世界或角色發佈到社群書架。署名與私人連結在設定裡,自己的卡片可以下架。 • 社群卡片在你熟悉的表單中開啟;書架卡片顯示圖片與名稱。 • 長章節每回合更便宜:App 更早摘要,只送出下一回合需要的內容。 • 匯入移到設定;加號只負責新建。 • 各處修正。
• 直接從社群卡片開始一段場景:世界替場景搭好舞台,角色則加入你的演員陣容。 • 書架可依最新或熱門排序,並依標籤篩選;卡片列出簡介、標籤與篇幅,世界的演員陣容則以肖像呈現。 • 不小心封鎖了誰?設定裡列出你封鎖的作者,也能在那裡解除。 • 一百五十回合以上的場景會再次生成,不再無聲失敗。 • 各處修正。
• 連線中斷或你離開應用程式,一回合仍會繼續寫下去,回來時接著先前的地方。 • 停止一回合的指令,就算網路吞掉第一次也會送達。 • 紀錄裡除了回合,也列出圖片、短片與朗讀的花費。 • 故事不再在章節中途改名,開啟時停在最新的一回合。 • 各處修正。
• 錯誤修正與穩定性改善。
Gemini 3.8 Flash takes the Flash slot and stays the default story model — the same 1M context and the same rate per token as 3.7. It does think longer before it writes: measured on the same scenes, deep in a long chapter it spends about twice the hidden reasoning 3.7 spent for the same paragraphs, so the picker prices Flash at three credits per thousand characters instead of two. Turns already written on 3.7 keep its name in the log.
MiniMax H3 Max Turbo joins the models you can animate on: the same five to fifteen seconds, the same 480p and 768p, sound on every clip, at half of H3 Max's price. Five seconds at 768p costs twelve credits, against twenty-four on H3 Max and a hundred and sixty-four on Grok. H3 Max keeps its place in the picker.
• GLM 5.2 與 Grok 4.6 加入推薦模型:最便宜的一回合,以及最少的拒絕。 • MiniMax H3 Max 以三分之一的點數,為短片配上聲音並讓它動起來。
MiniMax H3 Max joins the models you can animate on: five to fifteen seconds, 480p or 768p, sound on every clip, and well under half the price of anything else here that carries sound. HappyHorse leaves the picker in the same breath — MiniMax does its job for a third of the credits. Clips already animated on it keep its name.
• 把故事、人物或世界發佈到社群書架,也翻翻其他讀者放上去的作品。 • 說話,或 /敘述:引號讓一行成為對白,斜線負責調度場景,素白的文字仍是散文。 • 在 Roleplay 裡,對方的內心攤在頁面上;你的內心仍是你的。 • 你打好的開場,在 Story 與 Roleplay 之間切換也不會消失。 • 每筆資料都帶著建立日期,書架依最新排序。 • Android 上肖像搬出了書庫檔案:大書庫載入輕快,打字不再卡頓。
• 你書寫的欄位浮在正文之上,高度容得下一個段落。 • 圖片提示詞約一秒就到,一邊寫一邊落進欄裡。 • 要動畫化的圖片從架上挑:場景、人物、世界、你的照片。 • 在描述上方寫一行,其餘由它生成。 • 每個故事只有一種指示:寫下來、命名,到哪裡都能用。 • Grok 4.6 與 Gemini 3.7 Flash 就位,插圖改用 Grok Imagine 2。
Gemini 3.7 Flash takes the Flash slot and stays the default story model — the same 1M context and the same rate per turn as 3.6, on a model Google built to hold a longer thread. Turns already written on 3.6 keep its name in the log.
Grok 4.6 takes the Grok slot in the model picker, still set to write rather than deliberate. Illustrations get Grok Imagine 2, and Grok clips animate on Grok Imagine 1.5, which adds 1080p. Turns and images already made on the older versions keep their names in the log.
• 故事或角色扮演:在設定時選擇形式。角色扮演由一個人物開場,等你回應。 • 敘事控制會指明它的主語,第一人稱敘事者也保有自己的內心。 • 指示寫一次,任何故事都能用。儲存的指示會同步。 • 你的書庫會跟著你到每一部登入過的裝置。一個開關就能關閉同步。 • 在開場寫下之前,先為主角命名。
Grok 4.5 rejoins the model lineup, set to write rather than deliberate — it reaches the first line of prose in seconds. Kimi K3 leaves the picker; turns already written on it keep their name in the log.
• 五部經典加入書庫:《傲慢與偏見》、《簡愛》、《德古拉》、《勸服》、《福爾摩斯》。 • 書庫以世界與開場的展示開啟,並為手機重新打造。 • 挑選敘事方式,或寫下敘事者每回合都遵循的常駐指示。 • 附上圖片,敘事者就從所見之物寫起。 • 任何段落都能以你挑選的聲音朗讀。 • 單篇故事或整個書庫,都能匯出為可攜式 .underfiction 檔案。
The Library has its own shape on a phone now: a showcase that fits the width, a menu that sizes to its labels, and detail views with one clear way back. The navigation menu stays put on the pages it opens.
Credit amounts in logs, generation details, and top-ups are written in the language you are reading, on web, iOS, and Android.
A character card or archive that will not open now names the file and the reason, instead of failing with one generic line.
The Android model picker shows what each model costs per turn, matching web and iOS.
The starter browser is native now: page through the built-in worlds, their leads, and every authored opening without leaving the Library.
Narration nudges are called directions, and story setup groups them into sections instead of one long list.
Copying a character asks first and leaves the editor open, instead of dropping you back to the list.
Choose the voice before you write: First Person, Second Person, Present Tense, Inner Thoughts. The narrator holds what you pick for the rest of the scene, and scene summaries now keep that voice instead of pulling the prose back toward third person.
Give a story a direction in your own words — "keep her unreliable", "no dialogue tags" — and every turn follows it. It outlasts compression, travels inside portable archives, and comes along when someone takes the pen on a shared excerpt.
Pip, Syra, Lydia, and Lola each get an authored opening built on a shared secret or a craft rather than a stated romance. They lead their worlds in the library rail, and The Antler & Stone reaches the showcase for the first time.
Story and narration model pickers mark which models run inside Venice and which reach the model through anonymized routing. Hover a badge and it spells out what that guarantee covers.
Stories, characters, and worlds are held locally, and nothing about them leaves the device unless you move it yourself. Portable .underfiction archives are how a story or a whole library travels between web, iOS, and Android.
The prose composer uses a single compact layout from phone to desktop, and long speaker names no longer crowd out the field.
Fixed iOS navigation dismissal and zoom transitions, web header and scrollbar shifts, Android segmented-control sizing, and a setup layout that moved while an animation ran.
The starter grids are now a moving showcase on the landing page and in every Library. Lead characters frame each world, the openings read like a table of contents, and the stage advances on its own until you touch it.
Pick a world or a character and you land in story setup. The onboarding walkthrough and the separate persona step are gone.
Export everything — stories, characters, worlds, images, videos — as one portable .underfiction file, and import it on any other device. Merging keeps whichever copy of a story you edited last.
If you have not written anything yet, your shelf opens on the built-in worlds and characters instead of a blank screen.
The complete classics collection — worlds, canon leads, and openings — is now localized in all eight supported languages.
Rebuilt around the showcase, with starting in the browser as the first move and the native apps a quieter link below it.
Pride and Prejudice, Jane Eyre, Dracula, Persuasion, and Sherlock Holmes joined the built-in library on web, iOS, and Android — eight canon leads, new cover art, fifteen authored openings. You are not the protagonist by default: you take the governess's chair in Jane Eyre, Anne's position in Persuasion, and elsewhere you arrive beside canon as a confidante or a client.
The story model picker opens on a clear first group of recommended models, with ratings and prices lined up down the list. Kimi K3 is back in the lineup.
Any illustration already attached to the story can be the source when you animate a scene, not just the most recent one.
Media actions use the same labels and sit in the same place on web, iOS, and Android.
The prose language follows what you write, independent of the interface language. Switch mid-story and the narrator switches with you; keep going and it stays in the scene's language. The per-story language setting is gone, and interface language moved into Preferences.
Story cards show the artwork of the world they belong to again.
Rerun, edit, share, and the rest stay quiet until you reach the passage they belong to.
Tuned story setup, character editing, settings, navigation, and the input bar so web and iOS read as the same product at the same rhythm.
Attach an image to your next turn and the narrator writes from what it sees — a face, a room, a photograph you want in the scene. On web, iOS, and Android.
Have any passage narrated in the model and voice you choose. Narration is cached on your device, so replaying a passage is free.
Take a story whole, or stopped at any earlier turn, as readable Markdown or as a portable .underfiction archive carrying its characters, world, images, and videos.
Import, export, and the rest of the library actions moved out of the page body and into the toolbar.
Credit spend rounds the way you would read it, and model pricing labels in story setup say what they mean.
Fixed menu labels that fell back to English and a language switch that did not always take.
Upgraded Claude Opus from 4.8 to Opus 5 — a step up in long-scene coherence and prose control at the same price. Context window and credits-per-turn are unchanged; existing stories pick it up automatically.
New starter stories on the landing page and in Library — curated openings you can step into with one tap, now on web, iOS, and Android. The library gained a Mine/Library switch so built-in material and your own work stay cleanly separated. Gemini 3.6 Flash joined the model picker and became the default story model.
• 重新生成一個回合時,你的其他版本會保留——取消、失敗或離開後都不會消失。 • 長場景續寫的花費更低、銜接更順,背景壓縮更聰明了。 • Kimi 重新加入陣容。 • 此外,還修正了一系列同步與生成的穩定性問題。
Share a moment from any story as an unlisted link — a directive and the prose it produced, in a clean reader view. Readers can take the pen: one tap copies the full setup into their own library so they can continue the scene their way. Links are unlisted and never indexed; only you can share them.
• 從空白場景開始的故事,現在會直接寫出開場,不再失敗。 • 生成失敗後重試,不會再出現段落重複或遺失。 • 當模型拒絕某個場景時,會顯示實際原因,而非籠統的錯誤訊息。 • 同步更輕量、更可靠,錯誤提示也更少。
• 角色書現在會影響故事:隨著場景推進,條目會依關鍵字觸發。 • Tavern 卡片匯入不再遺失內容——情境、開場白與角色書來回匯出入都完整保留。 • 角色卡依照真正影響行文的要素重新排序,並新增詳細資料區塊。 • 生成失敗時的訊息更清楚;空白生成會自動退款。 • 起始世界的角色更精簡,點數流程修正,以及一如既往的打磨。
• 插圖:直接從故事生成角色與場景的圖片。 • 動畫化:把插圖或背景變成短影片。 • 新模型:GPT 5.6 Terra、Kimi 與 DeepSeek——圖片生成預設改為 Seedream 5 Pro。 • 更清爽的輸入列:設定、插圖與動畫化整合到加號選單。 • 一鍵跳回場景底部,資料庫更快,還有一如既往的修正與打磨。
• 場景背景:用背景圖營造氛圍,可在輸入列快速切換。 • 全新場景導覽:從故事標題在章節間跳轉。 • 支援匯入 Tavern 角色卡(V2 與 V3)與世界書,全平台適用。 • 更清爽的書庫、更簡單的設定、更快的圖片上傳,以及慣例的修正與打磨。
• 新增故事開場模式:改編、逐字、人物。人物問候語現在可儲存、同步,並透過 TavernCard first_mes 匯入/匯出。
• 一如往常的錯誤修正與打磨。
• Underfiction 現在支援日文、韓文與繁體中文。 • 以及一如往常的修正與打磨。
Prepared the Android build for Play Store review with Spanish localization, smoother story-screen keyboard behavior, and final reader input polish.
Upgraded Opus from 4.6 to 4.7. Bumped the freedom rating on GPT and the quality rating on Gemini to reflect recent provider improvements. Fixed a credit-purchase webhook bug where some Stripe deliveries silently retried instead of posting credits cleanly on the first try.
Overhauled the credits experience with cleaner controls, a smarter default amount, and instant rendering of saved cards and auto top-up. Redesigned the landing page with a full-screen hero, prose sections, and a simplified world showcase. Fixed missing tab bars when navigating directly to /characters or /stories, and resolved a handful of hydration errors. Loading skeletons now match the actual content they replace.
Removed the mood system entirely — presets, prompts, and UI — to simplify story setup and let your prompts shape tone directly. Stabilized paragraph reveal during streaming so text lands smoothly. Improved the main menu, fixed a hero image flash on world open, an edit-last-turn bug, and assorted mobile polish issues.
Normalized spacing across galleries, modals, and page shells, and tightened touch targets on mobile. Switched to new generative cover art across the worlds.
Introduced shared typography, control, surface, and spacing token systems across the app for consistent rhythm and visual language. Refreshed the logo, favicons, and promo video, and polished the navigation icons.
Built-in worlds and characters are now immutable templates — editing one transparently clones it to your personal library on first edit, so the originals stay clean. Added a dedicated My Worlds section, made the Core sections collapsible, and refined character card defaults. Added a Sentry alert for missing Venice pricing so model gaps get caught before users hit them.
New fast-track flow lets you start a story in seconds — pick a world, drop in a character or persona, and you're writing. Refined the mobile bottom navigation, polished modal interactions, and added new crosspost articles to the blog.
Image previews now appear instantly, with no shimmer flicker when changing sources. Embedded a promo video on the landing page and refreshed the model picker.
Export a world and all its characters as a portable book file, and import books from other users with their images included. Added comprehensive SEO infrastructure with structured data, blog posts, homepage FAQ, and an accessibility pass that brought the PageSpeed score to 100.
Stabilized text reveal streaming so paragraphs land without jumping. Fixed shimmer flicker on cached character images, resolved leaked body scroll locks, and improved overall scroll performance on long stories.
Rewrote scene summary prompts to better preserve character dynamics and relationship arcs across transitions. Unified the scene opening flow so new scenes, forks, and regenerations all start consistently. Added user-friendly provider error messages that name the model and offer a one-tap retry.
Rebuilt the core story runtime for reliability and lower token cost. Menu pages now open as overlays inside the story view so you never lose your place. Added mid-scene history compression to keep long conversations affordable, and introduced a free-tier framing for new users.
Fixed race conditions in the billing pipeline and library reconciliation. Patched a cross-user data leak, closed an auth bypass on system-generated content, and added missing database indexes. Improved cursor stability during streaming.
Introduced Patronage loyalty tiers with bonus credits on every purchase, and a configurable auto top-up so you never run dry mid-scene.
Import and export characters as TavernCard V2 PNG files — fully compatible with SillyTavern, ChubAI, and other platforms. Added smooth expand/collapse on the advanced character fields.
New bottom navigation bar with thematic icons. Scene list and menus now open as swipe-to-dismiss bottom sheets. Replaced the input modal with an inline expanding input bar. Scene suggestions are now free for everyone. Fixed a handful of tap-target and zoom issues on iOS.
Launched the referral program: invite a friend and you both get 1,000 credits when they make their first purchase.
Restructured the character model as a TavernCard V2 superset — personality PLists, example dialogue, post-history instructions, and full compatibility with the broader roleplay ecosystem. Replaced dollar-based billing with credits, a purpose-built currency with clearer pricing.
Worlds and characters now load from markdown content files — a single source of truth that's easy to author and version. Redesigned the landing page around worlds, characters, and creative freedom. Added per-world hero images and a mood system that shapes the AI's tone.
Dedicated Characters tab with portrait cards organized by world. Full-bleed character portraits in the edit modal. Separated built-in characters from your personal library so edits to one don't affect the other. Fixed hero image flicker on first world open.
Introducing Worlds — curated world settings with their own characters, lore, and narrative hooks. Four starter worlds ship out of the box: Ashworth End, Linden Park, Antler Lodge, and Marabou Syra. Each world generates dynamic scene suggestions via the LLM so every playthrough starts differently.
The platform has a new name and identity. What started as Fablis, then became Unreliable, is now Underfiction — a name that better captures what we're building. Added Sentry error tracking with full content redaction, and a pre-flight context window check to catch token overflows before they time out.
Published three launch-day posts covering why we built this, the case for local-first privacy, and what literary AI prose should actually read like. Enabled anonymous free tries so new visitors can start a story before signing up.
Generation now falls back to Grok when Venice hits rate limits, so you're never stuck waiting. Defaulted everyone to Opus with an 8k response length. Added loading skeletons, API caching, and entrance animations across the app.
New public landing page that showcases the platform to visitors. Unified all page headers into a shared PageHeader component and reworked logo routing. Replaced anonymous usage stats with per-user credit and usage data.
Underfiction is live. Five preset story scenarios to get new users started, a welcome credits bonus on signup, and the password gate is gone. Extensive mobile polish: 44px tap targets, proper iOS keyboard handling, fixed content overlap with the floating header.
Five curated story presets — mainstream genres with pre-built characters and prose samples — appear on the dashboard for new users. Added an advanced settings section with editable system prompts for full control over the AI's behavior. Fixed a bug where the scene auto-generation never triggered.
Switched to full turn history instead of a truncated prose blob, giving the AI much richer context. Added optional example dialogue and style reference prose to character cards. Two-tier scene summaries: short for the sidebar, detailed for context injection.
Paper texture, upgraded drop caps, and scene ornaments give the reading view a tactile, book-like feel. Card hover animations, a streaming cursor, and prose reveal fades round out the mood. Also fixed the most persistent scroll-jump bugs during text reveal.
Full mobile-responsive pass with touch-optimized interactions and viewport fixes. Added SEO infrastructure: OpenGraph images, JSON-LD, sitemap, and robots.txt. New settings page with model picker, temperature slider, and max response length control.
Choose between roleplay, balanced, and novel prose styles — each shapes how the AI writes and responds. Mixed narration and dialogue input with distinct visual styling. Adaptive narration so the AI matches your writing cadence. Also added an in-memory story cache for instant page transitions.
Fork any conversation from any turn to explore alternate paths. New slash command menu: /as to switch character voice, /tone to shift mood, /newScene, and /narrate. Warmed up the color palette and added a subtle prose surface background.
Pay-per-use credit system powered by Stripe with reserve-then-settle billing. Usage logs page with model breakdown and provider cost. Transaction history with Stripe receipt links. Custom amount top-ups and an auto top-up toggle.
Sign in with Google or GitHub, or create an email/password account. Password reset via email. Automatic OAuth account linking when emails match. Migrated from SQLite to PostgreSQL for production reliability.
Stories can now span multiple scenes with automatic async summarization to keep context manageable. Migrated local storage from localStorage to IndexedDB, which handles much larger content without hitting size limits.
Added a light/dark theme toggle that respects system preference, with smooth 150ms color transitions. Switched the reading typeface to Literata for a warmer, more bookish feel. Fixed dark mode hover states across the UI.
The first working build of what would become Underfiction. Core story engine with AI-powered prose generation via Venice.ai, a reading view, character creation, and scene setup. Stories saved locally in the browser. Everything starts somewhere.