What's new in Underfiction

Opus 4.8

Upgraded the default model from Opus 4.7 to Opus 4.8 for sharper prose and stronger scene continuity. No change to ratings, context window, or pricing structure.

Traditional Chinese and Android release polish

Completed Traditional Chinese localization across the mobile UI, built-in characters, worlds, prompts, scene summaries, and store metadata. Tightened Android release automation so Play metadata follows the release tag and the uploaded AAB's versionCode, and pointed the Android landing CTA at the live Play Store listing.

Android review build

Prepared the Android build for Play Store review with Spanish localization, smoother story-screen keyboard behavior, and final reader input polish.

Model bumps and webhook reliability

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.

Credits UX and landing redesign

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.

Mood removal and reveal stability

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.

Spacing pass and new art

Normalized spacing across galleries, modals, and page shells, and tightened touch targets on mobile. Switched to new generative cover art across the worlds.

Design system foundation

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.

Core templates and My Worlds

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.

Fast-track story creation

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 polish and promo video

Image previews now appear instantly while uploads complete in the background, with no shimmer flicker when swapping sources. Embedded a promo video on the landing page and refreshed the model picker.

World books and SEO

Export a world and all its characters as a portable book file, and import books from other users — images sync automatically. Added comprehensive SEO infrastructure with structured data, blog posts, homepage FAQ, and an accessibility pass that brought the PageSpeed score to 100.

Streaming and scroll performance

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.

Scene intelligence

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.

Story runtime refactor

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.

Stability and security sweep

Fixed race conditions in the billing pipeline and sync layer. Patched a cross-user data leak in reconciliation, closed an auth bypass on system-generated content, and added missing database indexes. Improved cursor stability during streaming.

Story sync and Patronage

Stories can now sync across devices with optional server-side encryption at rest for synced copies. Also introduced Patronage loyalty tiers with bonus credits on every purchase, and a configurable auto top-up so you never run dry mid-scene.

Character import and export

Import and export characters as TavernCard V2 PNG files — fully compatible with SillyTavern, ChubAI, and other platforms. Character portrait images upload to Cloudflare R2. Added smooth expand/collapse on the advanced character fields.

Mobile overhaul

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.

Cloud sync and referrals

Characters, worlds, and settings now sync across all your devices in real time. Conflict resolution uses last-write-wins with tombstones — no merge surprises. Also launched the referral program: invite a friend and you both get 1,000 credits when they make their first purchase.

TavernCard V2 and credits

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.

Content-driven worlds

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.

Characters gallery

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.

Worlds

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.

Underfiction

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.

Launch blog and anonymous mode

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.

Multi-provider fallback

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.

Landing page and unified navigation

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.

Public launch

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.

Story presets and advanced settings

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.

Prompt engine improvements

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.

Atmosphere update

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.

Mobile, SEO, and settings

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.

Prose style engine

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.

Story forking and slash commands

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.

Credits and billing

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.

Accounts and authentication

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.

Multi-scene stories and IndexedDB

Stories can now span multiple scenes with automatic async summarization to keep context manageable. Migrated local storage from localStorage to IndexedDB — stories survive browser cleanup and handle much larger content without hitting size limits.

Theme and typography

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.

First light

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.