- Expanded the README with detailed database schema guidelines, including naming conventions for tables, columns, and export names.
- Introduced new column helper functions for UUID primary keys (v4 and v7) to streamline table definitions.
- Updated existing schemas (group, message, tag, topic) to utilize the new UUID primary key helpers for improved consistency and auto-generation.
- Included a note to review the API Design Guidelines before creating new schemas, emphasizing path naming, HTTP methods, and error handling conventions.
- Added `siblingsGroupId` to `message` schema for better message organization.
- Introduced `activeNodeId` in `topic` schema to manage message tree structure.
- Updated `assistantMeta` and `modelMeta` fields to use specific types for improved type safety.
- Included `isNameManuallyEdited` and `sortOrder` in `topic` schema for enhanced topic management.
- Added a new entry in the migration journal for version tracking.
- Deleted batch and transaction related schemas, handlers, and IPC channels to streamline the Data API.
- Updated related type definitions and import paths to reflect the removal of batch and transaction functionalities.
- Simplified the API server and adapter logic by eliminating unused methods and handlers.
- Removed outdated API model and schema files to simplify the structure.
- Consolidated API types and schemas for better organization and clarity.
- Updated import paths across the codebase to reflect the new structure.
- Enhanced documentation in related README files to guide usage of the new API schema organization.
- Changed ollama provider type from 'openai' to 'ollama' in SYSTEM_PROVIDERS_CONFIG.
- Incremented persisted reducer version from 189 to 190.
- Added migration logic for version 190 to update existing provider types in state.
- Changed migration command from `yarn run migrations:generate` to `yarn run db:migrations:generate` for consistency across the project.
- Updated related documentation in `CLAUDE.md`, `migrations/README.md`, and `src/main/data/README.md` to reflect the new command.
- Added a notice in `migrations/README.md` regarding potential database structure changes before the alpha release.
Remove incorrect /anthropic suffix from aihubmix provider's anthropicApiHost configuration.
The correct API endpoint should be https://aihubmix.com/v1/messages, not https://aihubmix.com/anthropic/v1/messages.
Fixes issue where Claude API requests to aihubmix provider were failing due to incorrect URL path.
- Added error handling for database initialization and migration processes.
- Introduced user feedback via dialog box for initialization failures, guiding users to delete the database file if necessary.
- Marked a temporary solution for data migration v2, indicating future refactoring plans for app lifecycle management.
- Add topicTable schema with group organization and pinning support
- Add messageTable schema with tree structure (adjacency list pattern)
- Add groupTable schema for organizing entities by type
- Add tagTable and entityTagTable schemas for tagging system
- Add FTS5 full-text search support for message content
- Update preferenceTable to use composite primary key (scope, key)
- Regenerate initial migration with all tables
Changes Summary
| Type | Files |
|-------------|---------------------------------------------------------------------|
| New schemas | topic.ts, message.ts, group.ts, tag.ts, entityTag.ts, messageFts.ts |
| Modified | preference.ts (index → composite PK) |
| Migration | Renamed 0000_solid_lord_hawal.sql → 0000_init.sql with all tables |
This is part of the data refactoring project - adding core user data table schemas.
- Introduced a new Badge component with multiple visual style variants: default, secondary, destructive, and outline.
- Added comprehensive Storybook stories to demonstrate the Badge component's usage, including examples with icons and as links.
- Updated the component index to export the new Badge component.
* fix(display): improve font selector for long font names
- Increase Select width from 200px to 280px
- Increase SelectRow container width from 300px to 380px
- Add Tooltip to show full font name on hover
- Add text-overflow ellipsis for long font names
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor(DisplaySettings): replace span with div and use CSS class for truncation
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: icarus <eurfelux@gmail.com>
* fix: update @ai-sdk/openai-compatible to version 1.0.28 and adjust related patches
* fix: add sendReasoning option to OpenAICompatibleProviderOptions and update message conversion logic
* fix: add interval thinking model support and related tests
* fix: add sendReasoning option to OpenAICompatibleProviderOptions and update related logic
* fix: remove MiniMax reasoning model support and update interval thinking model regex
* chore: add comment
* fix: rename interval thinking model references to interleaved thinking model
- Adjust MCP logo opacity in MCPSettings and McpTool components for improved visual consistency.
- Remove notes settings entry from SettingsPage to streamline the settings interface.
* refactor(notes): move notes settings to popup in NotesPage
- Move NotesSettings.tsx from settings directory to notes directory
- Add "More Settings" menu item to notes dropdown menu
- Show settings in GeneralPopup when clicking "More Settings"
- Remove notes settings entry from SettingsPage sidebar and routes
* fix(notes): adjust margin in NotesSidebar component for improved layout
- Update margin-bottom from 20px to 12px in the NotesSidebar component to enhance visual spacing.
* refactor(notes): simplify styles object in HeaderNavbar component
- Consolidate styles object for body padding in HeaderNavbar to improve readability and maintainability.
---------
Co-authored-by: Claude <noreply@anthropic.com>
- Refactor WebSearchSettings to use two-column layout (left sidebar + right content)
- Add local search provider settings with internal browser window support
- Add "Set as Default" button in provider settings page
- Show default indicator tag in provider list
- Prevent selection of providers without API key configured
- Add logos for local search providers (Google, Bing, Baidu)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude <noreply@anthropic.com>
* fix(memory): fix retrieval issues and enable database backup
- Fix memory retrieval by storing model references instead of API client configs
(baseURL was missing v1 suffix causing retrieval failures)
- Move memory database to DATA_PATH/Memory for proper backup support
- Add migration to convert legacy embedderApiClient/llmApiClient to model references
- Simplify IPC handlers by removing unnecessary async/await wrappers
- Rename and relocate MemorySettingsModal for better organization
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* refactor(UserSelector): simplify user label rendering and remove unused dependencies
- Update UserSelector component to directly use user IDs as labels instead of rendering them through a function.
- Remove unnecessary dependency on the renderLabel function to streamline the code.
* refactor(UserSelector): remove unused dependencies and simplify user avatar logic
- Eliminate the getUserAvatar function and directly use user IDs for rendering.
- Remove the HStack and Avatar components from the renderLabel function to streamline the UserSelector component.
* refactor(ipc): simplify IPC handler for deleting all memories for a user and streamline error logging
- Remove unnecessary async/await from the Memory_DeleteAllMemoriesForUser handler.
- Simplify error logging in useAppInit hook for memory service configuration updates.
- Update persisted reducer version from 191 to 189 in the store configuration.
---------
Co-authored-by: Claude <noreply@anthropic.com>
* fix: update default assistant settings to disable temperature
* fix: typecheck
* fix: typecheck
* refactor(settings): use DEFAULT_ASSISTANT_SETTINGS constant for reset
Replace hardcoded default settings with DEFAULT_ASSISTANT_SETTINGS constant to improve maintainability
* fix(AssistantService): set default maxTokens to DEFAULT_MAX_TOKENS
* docs(AssistantService): add jsdoc for getAssistantSettings function
* refactor(AssistantService): use default settings constants for fallback values
* refactor(AssistantService): update default assistant settings type
Add defaultModel field and mark settings as const satisfies AssistantSettings
* refactor(AssistantService): reorder and add new default assistant settings
Add reasoning_effort_cache and qwenThinkMode fields
* docs(AssistantService): add jsdoc comments for default assistant settings
Explain purpose of DEFAULT_ASSISTANT_SETTINGS template and clarify difference between template values and actual settings
* docs(AssistantService): move default assistant settings docs to function
The documentation about current settings inheritance was moved from createTranslateAssistant to the dedicated getDefaultAssistantSettings function where it belongs. This improves code organization and makes the documentation more accurate by placing it with the relevant function.
* docs(AssistantService): clarify getDefaultAssistant behavior in jsdoc
Explain the difference between this temporary instance and the actual default assistant from Redux store
* fix: change default enableTemperature value to false
The default value for enableTemperature was incorrectly set to true, which could lead to unexpected behavior. This change aligns it with the intended default behavior.
---------
Co-authored-by: icarus <eurfelux@gmail.com>
Replace the generic Hammer icon with the official MCP (Model Context
Protocol) logo in settings sidebar, tab container, and MCP settings page.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude <noreply@anthropic.com>
* fix(history-search): show keyword-adjacent snippets and align matching text
- Limit search results to title plus nearby lines with ellipses
- Merge multi-keyword hit ranges and truncate long lines
- Match against sanitized visible text to avoid URL/image false hits
* fix(history): 针对review 的改进:避免搜索高亮嵌套并优化命名与省略逻辑注释
* fix(toolUsePlugin): correct prompt formatting and instructions
- Remove misleading reward statement from tool use prompt
- Fix typo in XML tag format instruction ("MARK" to "MAKE")
- Reorganize response rules section for better clarity
* refactor(tool-use): consolidate default system prompt into shared module
Move DEFAULT_SYSTEM_PROMPT to core plugin module and reuse it in renderer
Update prompt to allow multiple tool uses per message and add response language rule
* feat(gemini): update model types and add support for gemini3 variants
add new model type identifiers for gemini3 flash and pro variants
implement utility functions to detect gemini3 flash and pro models
update reasoning configuration and tests for new gemini variants
* docs(i18n): update chinese translation for minimal_description
* chore: update @ai-sdk/google and @ai-sdk/google-vertex dependencies
- Update @ai-sdk/google to version 2.0.49 with patch for model path fix
- Update @ai-sdk/google-vertex to version 3.0.94 with updated dependencies
* feat(gemini): add thinking level mapping for Gemini 3 models
Implement mapping between reasoning effort options and Gemini's thinking levels. Enable thinking config for Gemini 3 models to support advanced reasoning features.
* chore: update yarn.lock with patched @ai-sdk/google dependency
* test(reasoning): update tests for Gemini model type classification and reasoning options
Update test cases to reflect new Gemini model type classifications (gemini2_flash, gemini3_flash, gemini2_pro, gemini3_pro) and their corresponding reasoning effort options. Add tests for Gemini 3 models and adjust existing ones to match current behavior.
* docs(reasoning): remove outdated TODO comment about model support
* feat: add support for Xiaomi MiMo model
- Implemented support for the MiMo model in reasoning logic.
- Added MiMo model configuration in default models.
- Included MiMo logos for both models and providers.
- Updated provider configurations to include Xiaomi MiMo.
- Enhanced reasoning effort and options to accommodate MiMo.
- Added migration logic for state management to include MiMo.
- Updated versioning in store to reflect changes.
* chore(i18n): add specific provider name
* fix(provider): add xiaomi mimo anthropic apihost
* chore: url
* fix: add tool use capability
* ✨ feat(mcp): add Nowledge Mem builtin MCP server
Add @cherry/nowLedgeMem as a new builtin MCP server that connects
to local Nowledge Mem service via HTTP at 127.0.0.1:14242/mcp.
- Add nowLedgeMem to BuiltinMCPServerNames type definitions
- Add HTTP transport handling in MCPService with APP header
- Add server config to builtinMCPServers array
- Add i18n translations (en-us, zh-cn, zh-tw)
* Fix Nowledge Mem server name typos across codebase
* 🌐 i18n: add missing translations for Nowledge Mem and Git Bash settings
Translate [to be translated] markers across 8 locale files:
- zh-tw, de-de, fr-fr, es-es, pt-pt, ru-ru: nowledgeMem description
- fr-fr, es-es, pt-pt, ru-ru, el-gr, ja-jp: xhigh reasoning chain option
- el-gr, ja-jp: Git Bash configuration strings
* 🐛 fix: address PR review comments for Nowledge Mem MCP
- Fix log message typo: use server.name instead of hardcoded "NowLedgeMem"
- Rename i18n key from "nowledgeMem" to "nowledge_mem" for consistency
- Update descriptions to warn about external dependency requirement
* refactor: improve budget calculation logic
* Update src/renderer/src/aiCore/utils/__tests__/reasoning.test.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/renderer/src/aiCore/utils/__tests__/reasoning.test.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* [WIP] Address feedback on budget calculation logic refactor (#11974)
* Initial plan
* fix: revert budget calculation to linear interpolation formula
Reverted the budget calculation in getAnthropicThinkingBudget from
`tokenLimit.max * effortRatio` back to the original linear interpolation
formula `(tokenLimit.max - tokenLimit.min) * effortRatio + tokenLimit.min`.
The new formula was causing lower budgets for all effort ratios (e.g.,
LOW effort changed from 2609 to 1638 tokens, a 37% reduction). The linear
interpolation formula ensures budgets range from min (at effortRatio=0) to
max (at effortRatio=1), matching the behavior in other parts of the codebase
(lines 221, 597).
Updated tests to reflect the correct expected values with the linear
interpolation formula.
Co-authored-by: DeJeune <67425183+DeJeune@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: DeJeune <67425183+DeJeune@users.noreply.github.com>
* fix(test): reasoning
* fix: test
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>