-
Notifications
You must be signed in to change notification settings - Fork 1
Releases: Starkka15/PocketTavern
PocketTavern v2.2.5
What's New in v2.2.5
Bug Fixes
- Fixed: Deleting a character now deletes their chat history — Previously, removing a character only deleted the character card PNG and its database entry. All associated chat
.jsonlfiles and Room chat records were left behind, accumulating as orphaned data. This is now fully cleaned up on deletion. - Fixed: Card extension auto-enable/disable — Extensions on character cards now correctly enable and disable when switching between characters.
- Fixed: Narrator message handling — Narrator/system messages in chat are handled more consistently.
- Fixed: Card extension actions bleeding across character switches — Extension-driven actions from one card no longer leak into sessions for other characters.
New Features
- Character Storage Browser (
Settings → Utilities → Character Storage) — Browse all character PNG files stored on device. Shows each character's file size, flags entries that are on disk but not indexed (or in the DB but missing from disk), and lets you delete individual characters with a confirmation prompt. A Rescan button rebuilds the character index from disk, fixing any sync drift between the database and actual files. - Group Chat improvements — Message actions (edit, delete), edit group name and members after creation, image generation support within group chats, world info/lorebook injection in group chat context.
Internal
GroupChatMessagenow carries animagePathfield for generated images in group chats.- Character deletion now correctly cascades: PNG removed → character DB entry removed → all chat files removed → all chat DB entries removed.
A Note on Future Development
I've done what I can to get PocketTavern to a solid, stable state. From here, future releases will be driven by bug reports filed as GitHub Issues / feature requests and pull requests from contributors.
If you run into something broken, open an Issue — I'll review it. If you want to add a feature or fix something yourself, PRs are very welcome. All pull requests will be tested before merging.
Performance optimizations and new features are especially welcome. This app started as a personal project, I've built what I needed for my own use cases, but there's a lot of room to grow — if you have the skills and the interest, jump in or submit a request. I'll see what I can do.
Thank you to everyone who's using it, reporting bugs, and giving feedback. I hope to continue perfecting it in time.
Assets 3
v2.2.4
What's New
Card Extensions
Character cards can now embed JavaScript directly in the PNG file. The script loads automatically when the character is selected — no separate installation needed. Anyone who receives the card gets the full interactive experience.
Cards with embedded scripts appear in Settings → Extensions → Card Extensions with an enable/disable toggle.
PT.vars — Per-Chat Variable Store
A persistent key/value store scoped to each individual chat. Variables survive app restarts and are isolated per character per chat file. Accessible from card scripts and JS extensions via PT.vars.get/set/delete/increment/decrement. Optionally auto-injects all stored variables into the system prompt as a [Current World State] block.
Streaming Scroll Fix
Auto-follow during streaming now tracks user intent instead of raw scroll position. Scrolling up pauses auto-follow; scrolling back to the bottom resumes it. Previously the view would force-jump to the bottom on every streaming token regardless of reading position.
Swipe Fix
Horizontal message swipe now resolves on pointer release only, and requires a clearly horizontal drag. Vertical scrolling no longer accidentally triggers swipe, and counteracting streaming drift can no longer flip the visible message.
Export Chat
New Export Chat option in the chat overflow menu. Opens a file picker and saves the current chat as a .jsonl file to any location on your device.
Duplicate Character Names
Importing two cards with the same character name now produces Alice.png and Alice_2.png instead of overwriting the existing card.
Cleanup on Delete
Deleting a character now removes all associated per-chat variable files (.vars.json sidecars) in addition to the card itself.
Delete Character Confirmation
The delete character dialog now warns that the action cannot be undone before proceeding.
Bug Fixes
- Card script
init()andPT.registerMessageActions()now fire correctly on character load CHAT_STARTEDevent dispatches when a new chat is createdCHARACTER_LOADEDevent dispatches after the card script finishes evaluating
Documentation
- README updated with full
PT.varsAPI reference PT.cardExtensionId,CHAT_STARTED, andCHARACTER_LOADEDdocumented- New Built-in Character Card Extensions section with JSON structure and example script
Assets 3
v2.2.3 — World Book, Lore Tracking, Group Chat Fix
What's New
Shared World Book (beta)
Groups now have a persistent lore log that follows characters everywhere. It's injected into every generation — both group chat turns and solo chats with any member of the group.
- Edit it directly: overflow menu → World Book in any group chat
- Grow it mid-scene: use
/addlore <text>in solo or group chat to append a timestamped entry - Let the AI fill it: use
/scanlore [N]to extract notable events from the last N messages — results appear in a review dialog where you can check, edit, or uncheck each entry before adding
Lore Tracking (character editor)
A new PocketTavern-only field in the character editor. Write what /scanlore should watch for — relationship milestones, stat changes, named events. Stored in the card's extensions map, invisible to SillyTavern and other tools.
New Slash Commands
| Command | Where | What it does |
|---|---|---|
/addlore <text> |
Solo + Group | Append a timestamped entry to the linked group's World Book |
/scanlore [N] |
Solo + Group | AI-assisted lore extraction from the last N messages (default 30) |
/sysauto [hint] |
Group | Generate a narrator scene description mid-conversation. With a hint it writes that scene; without one it invents something. |
Group Chat: OAI fix
Chat completion models (DeepSeek, GPT, Claude, etc.) were receiving the entire system prompt as a single user message, causing them to echo the instructions back instead of staying in character. Group chat now sends proper system + user message pairs, matching how solo chat works.
Group chat also now respects your active OAI preset — temperature, max tokens, top_p, penalties — all previously ignored.
Group Chat: full character card content
Card content truncation in group chat prompts was very aggressive (description capped at 600 chars, personality at 300). Limits raised to match the actual card sizes: 3000 / 1200 / 800 chars for description / personality / scenario.
Bug Fixes
- SPRITE_REGEX: capture groups 4–6 were silently ignored; expression sprite name lookup now falls through all six groups
- Macro substitution in user messages: all
{{macros}}now resolve in outgoing messages, not just{{char}}and{{user}}
Notes
- DB migration: this release adds a
loreHintscolumn to the characters table. The migration runs automatically on first launch. - World Book is beta: the feature works but hasn't been stress-tested with large lore logs or many simultaneous members. Feedback welcome.
Installation
Download PocketTavern-release.apk below, enable Install from unknown sources, and install.
Assets 3
v2.2.2 — Custom Theme Builder, BotBooru, Inline Images
What's New
Custom Theme Builder
- New Create Theme screen under Theme Settings with HSV color wheel pickers for every color
- Live split preview: main menu card, avatar shape chips, and chat example update in real time
- Background image support for the main menu (fill / fit / stretch, adjustable opacity)
- Avatar shape selector: Circle, Rounded Square, Square
- Saves themes as SillyTavern-compatible JSON
BotBooru
- BotBooru added as a third option in the Search Cards dropdown (alongside CharaVault and RisuRealm)
- Full embedded browser — browse, log in, and tap Download PNG to import directly
- Fixed blob URL downloads: hooks into the page's JS before
revokeObjectURLfires so the card is captured correctly
Inline Images in Chat
- Markdown images
now render as actual images inside chat bubbles - HTML
<img src="...">tags (including common malformed variants) also rendered inline - Streaming preview strips image syntax cleanly
"Don't Speak for User" — Stronger Enforcement
- Constraint now injected at both system-prompt and post-history levels
- Stronger wording with explicit prohibition
Image Generation
- Model switching implemented for SD WebUI / Forge backend
Assets 3
v2.2.1 - Persona fixes and Don't speak for me switch
What's new
- Persona avatar optional — no longer required to create a persona; avatars are saved locally and displayed from device storage
- Don't speak or act for user toggle in Context Settings — instructs the AI to never write dialogue or actions on behalf of your character; injects into the system prompt automatically
- Persona description hints — placeholder text in persona create/edit dialogs so you know what to write
Assets 3
v2.2.0 — .charx Import, Sprites, Long-Term Memory & Macros
What's New in v2.2.0
.charx Card Import (RisuAI Format)
- Import
.charxcharacter cards directly — no conversion needed - Character expression sprites embedded in the card are automatically extracted and stored
- Browse and download cards from RisuRealm (realm.risuai.net) in-app — downloads intercept automatically
Auto-Translation
- After importing a non-English card, a dialog lets you choose which fields to translate using your active LLM
- Translation preserves
{{user}},{{char}}, sprite tags, and markdown markers verbatim - Failed translations leave the original card untouched
Expression Sprites
- Characters using RisuAI sprite tags (
<img src=(name)>) display expression images in a portrait panel above the chat input - Panel animates on sprite change, tap to dismiss
- Sprite lookup is case-insensitive
Long-Term Memory
- When unsummarized chat history exceeds ~3,000 tokens, the oldest turns are automatically summarized by your LLM into a bullet-point memory block
- Memory block is injected at the top of every subsequent prompt — the AI remembers facts across sessions
- Runs in the background after each AI response, never blocks the chat
- Toggle on/off in Settings → Context Settings
ST-Compatible Macro System
- Full macro substitution in all prompt fields and user messages
- New macros:
{{isotime}},{{isodate}},{{time_UTC±N}},{{idle_duration}},{{roll:NdN}},{{lastMessage}},{{lastUserMessage}},{{lastCharMessage}},{{charDescription}},{{charPrompt}}, and more {{char}}and{{user}}now also substitute in the displayed chat bubble (not just the LLM prompt)
Bug Fixes
- Summarization prompt: ensure user turn precedes first assistant message to satisfy strict API ordering requirements
Full changelog: README
Assets 3
v2.1.5.2 — Security Hardening
Security Hardening
- API keys, auth tokens, and TTS keys now stored encrypted via Android Keystore (EncryptedSharedPreferences)
- Connection profiles JSON encrypted at rest via EncryptedFile; existing plaintext files migrated automatically
- Zip Slip vulnerability fixed in backup import
- SSRF blocked in extension proxy (scheme + loopback validation)
- JavaScript injection via extension ID fixed
- Network security config added — TLS enforced for all public endpoints (charavault.net, openai.com, etc.)
- HTTP logging disabled in release builds
- Debug file logging disabled in release builds
- Backup extraction disabled (allowBackup=false)
Assets 3
v2.1.5.1
Fix
- First message no longer shows raw
{{user}}— persona name is substituted when a new chat is created
Assets 3
v2.1.5
What's New
- nano-gpt image generation — new backend in Image Generation settings; pick any model, list loads automatically from the nano-gpt API
Assets 3
PocketTavern v2.1.4
What's New
Group Chats (major overhaul)
- Multi-session chat history — create/switch/delete chat sessions per group
- Chat style toggle: Dialogue (speech only) vs RP (speech + actions)
- Per-group editable system prompt
- Narrator on first message — sets the scene, establishes character presence
- Characters now respond in first person and never speak for the user
- Stop sequences prevent characters from writing other speakers' dialogue
- Name detection: if you address a character by name, they respond first
- Streaming scroll follows the bottom of the chat as text generates
UI
- Main screen: "Card Search" renamed to "Browse CharaVault"
- CharaVault screen now shows "Browse CharaVault" caption in header
Bug Fixes
- Fixed HTTP 404 errors when custom API URL already includes
/v1suffix - Improved API error messages (parses JSON error body instead of showing raw JSON)