Repository navigation
Releases: ForgottenHistory/Cupid-AI
Releases · ForgottenHistory/Cupid-AI
Release list
V1.4.1 - Much needed bug fixes
[1.4.1] - 2026-06-08
Added
- Character Goal Tracking: Decision LLM now generates a short-form private goal (what the character wants from the conversation) on the same triggers as mood, injected into the chat prompt and editable via the Mood & Goal modal
- Hide Images from Carousel: Toggle individual images out of the chat image carousel with an eye button in the gallery
- Reset Swipes Debug Command:
window.resetSwipes()console helper clears today's swipe count for testing
Changed
- Dark Mode Only: Removed the light mode toggle; the app is now always dark
- Removed Left-on-Read Follow-ups: Retired the unused left-on-read proactive feature
- Longer Login: JWT tokens now effectively never expire, so no more periodic re-login
- Description Editor: Auto-growing textarea that fits the content, with Save/Cancel buttons at the top of the Overview tab
- Freer Swipe Cards: Discover cards lift and rotate outside the frame while dragging instead of being clipped to a square
Fixed
- Character mood and goal not resetting on 30+ minute time gaps
- Chat sidebar not re-sorting or refreshing when new messages arrive
- Duplicate background mood system messages when the mood was unchanged
- Memory not being wiped on user-initiated unmatch or by the clear-all button
- Sidebar avatar not updating after a portrait change
- Chat image carousel not syncing when swiping image messages
- Proactive consecutive count getting stuck (empty conversations and trailing system/time-gap messages) and falsely flagging characters as capped
- Stale Library search results when typing during an in-flight load
- Deleting a TIME GAP marker leaving an orphaned message on reload
V1.4.0 - Activities & Attributes
[1.4.0] - 2026-03-13
Added
Activities System
- Icebreaker: Character asks a personality-driven question with 10 randomized styles, answer to start a timed chat
- Two Truths & A Lie: Character generates 3 statements (2 truths, 1 lie), guess the lie then chat about it
- This or That: 7 rounds of rapid-fire preference pairs, then timed chat discussing choices
- Would You Rather: 5 rounds of fun dilemma scenarios, then timed chat about decisions
- Activity Game Context Persistence: Game results (answers, choices, guesses) now stored on conversations and injected into every chat prompt, so the AI remembers what happened during the game
- Activity-Specific Chat Prompts: Each activity mode gets a unique chat context instead of generic "random chat"
- Activities Hub: Designed with cards for all activity types
- Activities Settings Page: Configure character selection options (include away/busy characters)
- Character First Message Chance: Configurable probability for who messages first in activities
Random Chat & Matching
- Random Chat Feature: Timed chat with random unmatched characters, option to match after timer
- Blind Date Mode: Hidden identity chat where only first initial is shown
- Proactive First Message: Characters can send the first message in activity chats
Character Attributes
- Configurable Attribute System: Replaced Big Five personality with fully customizable character attributes
- Attribute-Driven Behavior: Character attributes included in schedule generation and chat prompts
LLM Configuration
- Proactive LLM Config: Independent LLM settings for proactive message generation
- Random Model Pool: Configure a pool of random models for any LLM type
- Double Text Chance: Configurable probability for characters to send follow-up messages
Chat Improvements
- Image Gallery: View all images in a conversation with navigation
- Early Reactions: Characters can react to messages earlier in the conversation
- Typing Indicator Alignment: Improved positioning of typing indicators
Fixed
- Avatar rotation and gallery not updating when messages with images are deleted
- Asterisk words being incorrectly removed (e.g., "I really like that" losing the word)
- Stale model selector in LLM settings after switching providers
- Daily auto-match enable not working
- Smiley/emoji stripping in messages
- Image rotation not showing images from older paginated messages
- Message pagination being reset during conversation
- Autoscroll reliability improvements
- Double text when response already has multiple messages
- Several performance optimizations
V1.3.0 - Even more QoL
[1.3.0] - 2025-01-07
Added
Prompts System
- Prompt Presets: Save, load, and delete prompt configurations as named presets
- Current Preset Indicator: Shows which preset is active with unsaved changes warning
- Export/Import: Download prompts as JSON file or import from file
- Character Wizard Prompts: New configurable prompts for wizard (description, appearance, image tags)
- Schedule Day Prompt: Generate single day schedules with dedicated prompt
Chat Features
- Horizontal Images as Background: Display landscape images as chat background instead of sidebar
- Library Card from Chat: Access character's library card directly from chat menu
- Character State Modal: Click state pill in chat to manually edit character state
LLM Settings
- Reasoning Effort: Configure reasoning effort for OpenRouter models (low/medium/high)
- Retry on Invalid Response: Toggle automatic retry when AI returns invalid/empty response
- Request Timeout: Configure timeout duration for all LLM types
- Use Name Primer: Toggle character name priming at end of prompts
Behavior Settings
- Unlimited Proactive Messages: Set daily limit to 0 for unlimited proactive messages
- Dynamic Character States: States loaded from config file for easy customization
Discover Page
- Persistent Daily Randomization: Same random order maintained throughout the day
- Swipe Limit UI: Visual indicator for remaining daily swipes
Changed
- Refactored aiService.js into focused single-responsibility services
- Refactored backend routes (chat.js, users.js) into modular structure
- Refactored decision engine and proactive message services into smaller modules
- Refactored ChatHeader component with cleaner organization
- Character mood & state now included in decision context for smarter AI choices
- Improved proactive messaging with better decision context
- Improved character state handling and image tag generation
- Character wizard now uses configurable prompts instead of hardcoded ones
Fixed
- Library card modal not updating after generating content when accessed from chat
- Schedule parsing broken by chat-specific timestamp stripping
- Horizontal background controls positioning and visibility state
- Randomize orientation setting not being applied to generated images
- Thinking model output leaking into responses (reasoning tags now stripped)
- Sidebar not updating when character schedule is changed
- Library sorting for newly imported characters
- Library sorting by newest/oldest not working correctly
- Revert button not showing in Overview tab
- Auto-unmatch setting being ignored (added safeguards)
- Message counting for character state updates
- Image message editing now shows image during edit mode
- Advanced settings panel for NanoGPT provider
- Standalone timestamps in AI responses now stripped
V1.2.0 - Character States
V1.2.0 - Character States - 2025-12-12
Added
Character Mood & State System
- Character Mood: Dynamic emotional state displayed as purple pill in chat header (e.g., "feeling flirty and playful")
- Clickable Mood UI: Click mood pill to manually edit character's mood
- Character States: Special behavior states (drunk, showering, etc.) shown as orange pill
- State Instructions: Character states inject special behavior instructions into chat prompts
- Mood/state triggers on TIME GAP or every 25 messages via Decision LLM
- Background mood updates with 25-message cooldown
AI Providers & Settings
- NanoGPT Provider: Third AI provider option alongside OpenRouter and Featherless
- Extended Sampling Parameters: OpenRouter models now support top_k, repetition_penalty, min_p when model supports them
- Include Full Schedule: New behavior setting to include complete weekly schedule in chat prompts
- Proactive When Online: Configure probability of proactive messages when character is online (0-100%)
Storage & Multi-Device
- Backend-Only Storage: All character data now stored in backend SQLite (no more IndexedDB)
- Multi-Device Support: Login from any browser/device and all characters are available
- Per-User Config Files: Each user has isolated prompt and tag library configurations
Library & Settings
- Sort Dropdown: Sort characters by Newest, Oldest, or Random in Library
- SD Resolution Settings: Configure width/height for Stable Diffusion image generation
- Account Deletion: Delete your account and all associated data from Danger Zone in Profile
Changed
- Renamed "Content LLM" to "Chat LLM" in UI for clarity
- Proactive message generation now uses Metadata LLM (better for complex reasoning tasks)
- Character service refactored to use API calls instead of local storage
- Simplified ImageTab and CharacterProfile components (removed dual-save logic)
Fixed
- Character Rename: Now properly updates name in prompts and syncs to backend
- Empty Response Detection: Detect and retry when AI returns just "Character Name:" with no content
- RP Action Stripping: Strip asterisk roleplay actions (system prompt forbids this formatting)
- Schedule in Prompts: Full schedule now placed correctly after system prompt
- Delete-From Messages: Now removes correct message instead of all messages with same timestamp
- Typing Indicator: Added server-side pending request tracking to prevent stuck indicators
- Memory Degradation: Apply degradation once per compaction session, add safeguards against memory loss
- UI Lock on No Response: Frontend now unlocks when character decides not to engage (30% chance)
- User Created Date: Migration fixes users with invalid created_at timestamp
Removed
- IndexedDB storage (frontend/src/services/db.js, characterStorage.js)
- Character sync utilities (no longer needed with backend-only storage)
V1.1.0 - QoL features
[1.1.0] - 2025-11-30
Added
Library Improvements
- Search: Search characters by name and tags with debounced input
- Pagination: 24 items per page (grid), 50 items per page (compact)
- Compact View: Toggle between grid and list views
- Lazy Loading: Images only load when scrolled into view
Sidebar Improvements
- Search: Click "Matches" title to search matches by name
- Thumbnails: Auto-generated thumbnails for faster sidebar loading
Chat Features
- Message Swipes: Navigate between message variants with arrow buttons
- Image Regeneration: Regenerate image messages with new SD generation
- Conversation Export: Export chat history as JSON from header menu
- Persistent UI States: Avatar visibility and banner collapsed states saved
- TIME GAP Combining: Consecutive time gap markers merged into single marker
Character System
- V1 Card Support: Import JanitorAI and other V1 format character cards
- Character-Specific Image Prompts: Override main/negative prompts per character
- Post Instructions: Custom instructions for character social media posts
Memory System
- Memory Management UI: Add, edit, delete memories from chat header
- Remove All: Bulk delete all memories with confirmation
- Memory in Prompts: Memories now included in all AI prompts
- Memory Degradation: Configurable point-based memory decay system
- User Name in Memories: Display actual username instead of "User"
LLM Configuration
- Metadata LLM: Fourth LLM type for character generation (profiles, schedules, personality)
- Token Counter: View token usage in Overview tab
Settings
- Max Matches Limit: Set maximum number of active matches (0-50)
- Thought Frequency: Configure how often characters share internal thoughts
Changed
- Proactive message opener now randomly selects one variety instead of listing all
- Proactive check interval range extended to 5 minutes - 5 hours
- Message edit window now matches bubble size exactly
- Character profile layout changed to side-by-side
Fixed
- Multi-line message ordering (messages with same timestamp now sort by ID)
- Duplicate AI responses now rejected and trigger retry
- Incomplete think tags detected and rejected
- LLM settings validation for OpenRouter provider
- Max matches limit now only counts characters with active conversations
- Duplicate TIME GAP markers prevented
- EM DASH replacement now properly uppercases next letter
- Character-specific image prompt overrides now properly applied
- Proactive message timing enforces interval between consecutive messages
Removed
- Deprecated maxEmojisPerMessage setting
- Left-on-read settings (will reimplement later)
Cupid AI v1.0.0 - Release
Cupid AI v1.0.0 - Initial Release
Initial release of Cupid AI
Highlights
Triple LLM Architecture
- Content LLM: Generates character responses and conversations
- Decision LLM: Makes behavioral decisions (reactions, moods, unmatch, voice/image)
- Image Tag LLM: Generates Danbooru tags for Stable Diffusion
AI Characters
- Import character cards from PNG v2 format
- Character Wizard for AI-generated characters (4-step process)
- Dating profiles with interests, fun facts, and preferences
- Weekly schedules with online/away/busy/offline patterns
- Big Five (OCEAN) personality traits that influence behavior
- Tinder-style swipe interface (like/pass with undo)
Realistic Chat System
- Proactive Messaging: Characters initiate conversations after time gaps
- Schedule-Based Engagement: Characters respond differently based on their current status
- Memory System: AI extracts and stores up to 100 important facts per character (configurable 0-100)
- Conversation Compacting: Automatic AI summarization to manage context window efficiently
- Mood Effects: Dynamic chat backgrounds and message reactions based on conversation tone
Image Generation
- Stable Diffusion WebUI integration
- Context-aware image generation during conversations
- Smart AI decisions (can send, tease, or refuse requests)
Extensive Customization
- Behavior settings (proactive messaging, memory, compaction, swipe limits)
- LLM configuration (3 independent systems with separate providers)
- Stable Diffusion settings (sampling, CFG, resolution, ADetailer)
- AI prompt customization (system prompts, decision engine, memory extraction)
- Tag library management for image generation
Tech Stack
Frontend: React + Vite, Tailwind CSS, IndexedDB, Socket.IO
Backend: Node.js + Express, SQLite, JWT Authentication, Socket.IO
External Services: OpenRouter / Featherless (LLM providers), Stable Diffusion WebUI (optional)
Getting Started
Prerequisites
- Node.js 18+
One LLM provider:
- OpenRouter API key (get one here)
- Featherless API key (get one here)
Optional:
- Stable Diffusion WebUI (for image generation)
Documentation
- README.md: Complete feature documentation
- CHANGELOG.md: Version history
- backend/.env.example: Environment configuration guide
License
MIT License - see LICENSE file for details