github memex-lab/memex v1.0.29

🎭 Role-play & Companion System (Major Refactor)

  • Memory System Overhaul: Replaced the legacy memory logic with a tag-based CRUD management system (CharacterMemoryService).
  • Unified Context Assembly: Introduced CharacterContextAssembler to streamline the construction of character prompts (integrating User Personas, Character Memories, World Info/Lorebook entries, Recent Timelines, Compressed Summaries, and Knowledge Cards).
  • Independent Companion Agent: The Companion Agent is now decoupled from the standard Chat Agent, featuring its own independent model configuration and a dedicated CompanionAgentSkill.
  • Rolling Summarization: Replaced the additive "checkpoint" compression with a new CharacterContextCompressor. It generates a single, story-driven rolling summary that automatically deduplicates structured memories.
  • In-line Action Messages: The Companion Agent can now send narrative/action messages (e.g., leans in closer) via the SendActionMessage tool. These are rendered with centered italics in the UI to distinguish them from dialogue bubbles.
  • Redesigned Chat UI: Implemented an immersive dark theme with frosted glass effects (BackdropFilter), customizable chat backgrounds, and a new PersonaChatInputBar component.
  • SillyTavern Integration:
    • Added TavernCharacterImportService supporting Tavern V2 character card imports from PNG (tEXt/iTXt chunks) and JSON files.
    • New TavernImportScreen with preview, conflict detection, and Lorebook entry importing.
    • Full support for Tavern Macros (e.g., {{user}}, {{char}}, {{time}}, {{date}}).
  • Character Model Extensions: Added support for firstMessage, systemPromptOverride, postHistoryInstructions, mesExample, and chatBackground fields.
  • Enhanced Comment Agent: Now supports system prompt overrides, example messages, and Tavern Macro parsing; existingCommentsContext is now passed as an independent parameter.
  • Data Integrity: Implemented a monotonically increasing counter for Character IDs to prevent ID reuse after deletion.
  • Avatar Management: Migrated avatar storage to relative paths to fix broken links caused by iOS container UUID changes. Introduced the CharacterAvatar component to handle both image files and DiceBear seed-based avatars.

📸 Media Management

  • MediaService: Centralized media file management with standardized naming conventions (YYYYMMDD_uuid_WxH.ext). All media is now pooled in workspace/_<userId>/_System/media/.
  • Unified Avatar Picker: AvatarPicker now serves character configs, user settings, and the personal center, supporting photo gallery selection.
  • Persistent User Profiles: User avatars are now persisted in profile.json and managed via MemexRouter, removing direct dependency on UserStorage.

🔔 Notification System (Action Center)

  • Detail Notifications: Added UserNotifications Drift table (schema v12). CardDetailNotifier now diffs changes in comments/insights to trigger notifications.
  • Enhanced Change Tracking: DataChangeRecord now utilizes before/after snapshots (binlog-style) instead of a single document snapshot.
  • Foreground Auto-dismiss: Opening a card detail view now automatically dismisses corresponding notifications via foreground state registration.

🔍 Settings Search

  • Global Settings Search: Registered 15 key settings with bilingual (EN/CN) keywords.
  • Search Engine: Implemented SettingsSearchService using substring matching and relevance scoring.
  • Quick Access: Added a "capsule" search entry at the top of the Personal Center for one-tap access to settings.

🤖 Agent System Optimizations

  • Default Configuration: AgentConfig.copyWith now supports explicit null values via sentinel objects.
  • Visibility: Added configurableAgentIds to AgentDefinitions, allowing all registered Agents to be automatically displayed in the settings page.
  • Time Context Standardization: Introduced time_context.dart. All Agent prompts now use formatLocalDateTimeWithZone() (including offset and zone name) instead of standard ISO8601 strings.
  • Insight Fixes: Resolved interpolation issues in Insight language prompts.

⚙️ Model Configuration

  • Duplication Support: Added LLMConfig.duplicate() with automatic unique key generation (e.g., _copy_2).
  • Global Defaults: Users can now set any model configuration as the global default.
  • UI Alignment: Unified the deletion confirmation logic and removed redundant code between swipe-to-delete and menu-based deletion.

💅 UI/UX Improvements

  • Flattened Input Bar: Removed nested menus for image uploads; Camera, Gallery, and Microphone buttons are now directly accessible.
  • Processing States: Replaced the thinking emoji with frame-animated icons for Agent "processing" states.
  • Layout Fixes: Aligned microphone button dimensions and fixed Return Key behavior in the home screen input box.

🗄️ Data Layer & Misc

  • Real-time UI Refresh: Added EventBusMessageType.personaChatMessageAdded to trigger immediate UI updates when an Agent sends action messages mid-execution.
  • System Events: Extended CardCommentPostedPayload with a createdAtTs field.
  • Refactor: Decoupled search matching logic into a dedicated query_matcher.dart.
  • Cleanup: Removed unused glados development dependencies.
  • FileSystem: Added getMediaPath() and toRelativePath() utility methods to FileSystemService.

Don't miss a new memex release

NewReleases is sending notifications on new releases.