Skip to content

2.5.0

Choose a tag to compare

@csebold csebold released this 01 Apr 06:51
· 2566 commits to main since this release
2.5.0

Quilltap v2.5.0 Release Notes

Highlights

Multi-Instance Sync - Bidirectional synchronization between Quilltap instances with API key authentication, real-time progress tracking, and conflict resolution.

AI Character Wizard - Multi-step wizard for AI-assisted character creation and editing with vision support for physical description generation.

Native Export/Import - Full-featured .qtap export/import system with selective entity export, conflict detection, and resolution strategies.

Replaced NextAuth - Migrated from NextAuth to Arctic + custom JWT session management for lighter, more flexible authentication.


Major Features

Bidirectional Sync API

  • Sync characters, personas, chats, memories, tags, and templates between Quilltap instances
  • API key authentication for secure cross-instance sync through firewalls
  • Real-time progress bar showing current phase, item being synced, and running counts
  • Sync direction control: bidirectional, push-only, or pull-only
  • Force Full Sync option to pull/push all data regardless of timestamps
  • Automatic entity order enforcement to ensure dependencies exist before dependents
  • File and message content included in sync with streaming for large files
  • Reset Sync State button for troubleshooting

AI Wizard for Character Creation

  • Multi-step wizard modal on New/Edit Character pages
  • Profile selection with vision-capable detection for image analysis
  • Physical description source options: existing data, upload image, gallery, or skip
  • Generates: title, description, personality, scenario, example dialogues, system prompt
  • Physical descriptions saved with all prompt levels (short/medium/long/complete/full)

Native Quilltap Export/Import

  • Export wizard: select entity type → choose scope → optional memory inclusion → download .qtap
  • Import wizard: preview entities with conflict detection → choose strategy → import
  • Three conflict strategies: skip, overwrite, or duplicate
  • Post-import reconciliation updates all foreign key relationships
  • Supports: Characters, Personas, Chats, Roleplay Templates, Connection/Image/Embedding Profiles, Tags

API Key Import/Export

  • AES-256-GCM encryption with user passphrase

  • HMAC signature for integrity verification

  • Preview keys before importing

  • Duplicate handling: skip, replace, or rename


Authentication & Security

Replaced NextAuth with Arctic + Custom JWT

  • Removed next-auth dependency entirely
  • Added Arctic library for OAuth 2.0 flows with PKCE support
  • Custom JWT session management using jose library
  • Session tokens derived from ENCRYPTION_MASTER_PEPPER
  • Removed NEXTAUTH_URL and NEXTAUTH_SECRET environment variables
  • Added optional BASE_URL environment variable

Auth Environment Variable Clarification

  • AUTH_DISABLED=true completely bypasses auth and auto-logs in

  • New OAUTH_DISABLED env var hides OAuth buttons but keeps credentials login

  • New AUTH_UNAUTHENTICATED_USER_NAME env var configures display name


User Experience

New Profile Page (/profile)

  • Edit display name, email, and profile avatar
  • View read-only account details (user ID, creation date, etc.)
  • Manage 2FA and trusted devices
  • Accessible from user menu dropdown

Manual Chat Rename

  • "Rename" button in tool palette (desktop and mobile)
  • ChatRenameModal for custom titles or re-enabling auto-naming
  • Dynamic browser tab title shows chat name

Multi-Character Chat Pause

  • Pause button in participant sidebar (desktop) and message header (mobile)
  • Pressing stop while streaming also pauses auto-responses
  • Pause state survives page reload

Auto-Associate API Keys

  • When importing/creating keys, automatically links profiles that need them
  • Background association check on settings tab navigation
  • Toast notifications show which profiles were linked

Visual Warnings for Missing API Keys

  • Connection, image, and embedding profiles show "⚠️ No API Key" badge

  • Warnings in dropdowns throughout settings and chat configuration


Plugin System

Plugin-Provided Roleplay Templates

  • New ROLEPLAY_TEMPLATE plugin capability
  • Plugins define templates via roleplayTemplateConfig in manifest.json
  • Migrated "Quilltap RP" template to qtap-plugin-template-quilltap-rp plugin

Plugin Version Display Fix

  • Plugin list now displays package.json version instead of manifest.json


Theming & Styling

New qt-* Utility Classes

  • Background utilities: qt-bg-surface, qt-bg-surface-alt, qt-bg-card, qt-bg-muted
  • Status backgrounds with opacity: qt-bg-primary/N, qt-bg-warning/N, etc.
  • Border utilities: qt-border, qt-border-primary, qt-border-warning, etc.
  • Text utilities: qt-text-secondary, qt-text-warning, qt-text-info, qt-text-success

Tag Visual Styles on Tags

  • Tag styles (emoji, colors, formatting) now stored directly on each Tag

  • Migration moves existing styles from ChatSettings to individual Tags

  • Automatic backup/restore with tags


Bug Fixes

  • OAuth redirects now use BASE_URL for correct domain behind reverse proxies

  • Attach file button in chat now opens file picker correctly

  • Chat composer textarea resizes properly after message submission

  • Sending message while paused no longer auto-resumes turn manager

  • Focus returns to textarea after AI response completes

  • Platform-aware keyboard shortcuts (Cmd on macOS, Ctrl on Windows/Linux)

  • Navbar avatar loads correctly from /api/files

  • Backup restore now correctly remaps entity relationships

  • FormActions component renders submit button when using type="submit"

  • Memories sync correctly from remote servers

  • File content sync uses stored S3 key correctly

  • Memory attribution improved in multi-character chats

  • Sync progress polling stops when sync completes


Infrastructure

Dependency Upgrades

  • Next.js 16.0.5 → 16.1.1 (Turbopack caching, CVE patches)
  • MongoDB driver 6.21.0 → 7.0.0 (requires Node.js 20.19+)
  • bcrypt 5.1.1 → 6.0.0 (40 fewer dependencies)
  • @openrouter/sdk 0.2.11 → 0.3.10
  • Now requires Node.js 22+

E2E Test Infrastructure

  • TestUserHelper for consistent test user management

  • /api/auth/delete-account endpoint for test cleanup

  • Serial Playwright execution to avoid race conditions


Refactoring

Settings Forms to Modals

  • API Keys, Image Profiles, Embedding Profiles, Connection Profiles now use modals
  • Lists always visible instead of hidden when form is open

Draft Message Persistence

  • Saves textarea content to localStorage with 5-second debounce

  • Restores draft on page load, clears on successful submission


Documentation

  • About page updated with Node.js 22+ requirement and version minimums
  • Updated auth from "NextAuth.js" to "Local + OAuth"