Merge branch 'mochi/fix-issue' into feat/image-attachment

This commit is contained in:
LaZzyMan 2026-01-28 10:27:25 +08:00
commit f51ace3a85
108 changed files with 6815 additions and 816 deletions

View file

@ -932,7 +932,7 @@ export async function loadCliConfig(
targetDir: cwd,
includeDirectories,
loadMemoryFromIncludeDirectories:
settings.context?.loadMemoryFromIncludeDirectories || false,
settings.context?.loadFromIncludeDirectories || false,
importFormat: settings.context?.importFormat || 'tree',
debugMode,
question,

View file

@ -218,14 +218,14 @@ describe('SettingsSchema', () => {
},
context: {
includeDirectories: ['/path/to/dir'],
loadMemoryFromIncludeDirectories: true,
loadFromIncludeDirectories: true,
},
};
// TypeScript should not complain about these properties
expect(settings.ui?.theme).toBe('dark');
expect(settings.context?.includeDirectories).toEqual(['/path/to/dir']);
expect(settings.context?.loadMemoryFromIncludeDirectories).toBe(true);
expect(settings.context?.loadFromIncludeDirectories).toBe(true);
});
it('should have includeDirectories setting in schema', () => {
@ -243,21 +243,19 @@ describe('SettingsSchema', () => {
).toEqual([]);
});
it('should have loadMemoryFromIncludeDirectories setting in schema', () => {
it('should have loadFromIncludeDirectories setting in schema', () => {
expect(
getSettingsSchema().context?.properties
.loadMemoryFromIncludeDirectories,
getSettingsSchema().context?.properties.loadFromIncludeDirectories,
).toBeDefined();
expect(
getSettingsSchema().context?.properties.loadMemoryFromIncludeDirectories
.type,
getSettingsSchema().context?.properties.loadFromIncludeDirectories.type,
).toBe('boolean');
expect(
getSettingsSchema().context?.properties.loadMemoryFromIncludeDirectories
getSettingsSchema().context?.properties.loadFromIncludeDirectories
.category,
).toBe('Context');
expect(
getSettingsSchema().context?.properties.loadMemoryFromIncludeDirectories
getSettingsSchema().context?.properties.loadFromIncludeDirectories
.default,
).toBe(false);
});

View file

@ -18,6 +18,7 @@ import {
DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD,
} from '@qwen-code/qwen-code-core';
import type { CustomTheme } from '../ui/themes/theme.js';
import { getLanguageSettingsOptions } from '../i18n/languages.js';
export type SettingsType =
| 'boolean'
@ -211,13 +212,7 @@ const SETTINGS_SCHEMA = {
'You can also use custom language codes (e.g., "es", "fr") by placing JS language files ' +
'in ~/.qwen/locales/ (e.g., ~/.qwen/locales/es.js).',
showInDialog: true,
options: [
{ value: 'auto', label: 'Auto (detect from system)' },
{ value: 'en', label: 'English' },
{ value: 'zh', label: '中文 (Chinese)' },
{ value: 'ru', label: 'Русский (Russian)' },
{ value: 'de', label: 'Deutsch (German)' },
],
options: [] as readonly SettingEnumOption[],
},
outputLanguage: {
type: 'string',
@ -227,7 +222,7 @@ const SETTINGS_SCHEMA = {
default: 'auto',
description:
'The language for LLM output. Use "auto" to detect from system settings, ' +
'or set a specific language (e.g., "English", "中文", "日本語").',
'or set a specific language.',
showInDialog: true,
},
terminalBell: {
@ -687,7 +682,7 @@ const SETTINGS_SCHEMA = {
showInDialog: false,
mergeStrategy: MergeStrategy.CONCAT,
},
loadMemoryFromIncludeDirectories: {
loadFromIncludeDirectories: {
type: 'boolean',
label: 'Load Memory From Include Directories',
category: 'Context',
@ -1189,6 +1184,15 @@ const SETTINGS_SCHEMA = {
export type SettingsSchemaType = typeof SETTINGS_SCHEMA;
export function getSettingsSchema(): SettingsSchemaType {
// Inject dynamic language options
const schema = SETTINGS_SCHEMA as unknown as SettingsSchema;
if (schema['general']?.properties?.['language']) {
(
schema['general'].properties['language'] as {
options?: SettingEnumOption[];
}
).options = getLanguageSettingsOptions();
}
return SETTINGS_SCHEMA;
}