codexmate 0.0.53 → 0.0.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/README.vi.md +170 -0
- package/cli/builtin-proxy.js +222 -11
- package/cli/openai-bridge.js +238 -14
- package/cli.js +553 -5
- package/package.json +1 -1
- package/web-ui/app.js +38 -0
- package/web-ui/logic.claude.mjs +8 -0
- package/web-ui/modules/app.methods.claude-config.mjs +72 -5
- package/web-ui/modules/app.methods.index.mjs +4 -0
- package/web-ui/modules/app.methods.navigation.mjs +3 -0
- package/web-ui/modules/app.methods.provider-cache.mjs +223 -0
- package/web-ui/modules/app.methods.session-actions.mjs +12 -0
- package/web-ui/modules/app.methods.session-browser.mjs +3 -0
- package/web-ui/modules/app.methods.session-trash.mjs +3 -0
- package/web-ui/modules/app.methods.startup-claude.mjs +13 -3
- package/web-ui/modules/app.methods.web-ui-preferences.mjs +161 -0
- package/web-ui/modules/i18n/locales/en.mjs +65 -1
- package/web-ui/modules/i18n/locales/ja.mjs +62 -1
- package/web-ui/modules/i18n/locales/vi.mjs +917 -0
- package/web-ui/modules/i18n/locales/zh-tw.mjs +62 -1
- package/web-ui/modules/i18n/locales/zh.mjs +62 -1
- package/web-ui/partials/index/layout-header.html +18 -5
- package/web-ui/partials/index/modals-basic.html +182 -0
- package/web-ui/partials/index/panel-sessions.html +2 -2
- package/web-ui/partials/index/panel-settings.html +20 -0
- package/web-ui/res/web-ui-render.precompiled.js +397 -20
- package/web-ui/styles/layout-shell.css +51 -1
- package/web-ui/styles/settings-panel.css +398 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
export function createWebUiPreferencesMethods(options = {}) {
|
|
2
|
+
const api = typeof options.api === 'function' ? options.api : async () => ({});
|
|
3
|
+
const storageOverride = options.storage && typeof options.storage === 'object' ? options.storage : null;
|
|
4
|
+
|
|
5
|
+
const getLocalStorage = () => {
|
|
6
|
+
const storage = storageOverride || (typeof globalThis !== 'undefined' ? globalThis.localStorage : null);
|
|
7
|
+
return storage && typeof storage.setItem === 'function' && typeof storage.removeItem === 'function'
|
|
8
|
+
? storage
|
|
9
|
+
: null;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const setLocalStorageValue = (key, value) => {
|
|
13
|
+
const storage = getLocalStorage();
|
|
14
|
+
if (!storage) return;
|
|
15
|
+
try {
|
|
16
|
+
if (value === null || value === undefined || value === '') {
|
|
17
|
+
storage.removeItem(key);
|
|
18
|
+
} else {
|
|
19
|
+
storage.setItem(key, String(value));
|
|
20
|
+
}
|
|
21
|
+
} catch (_) {}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const normalizeUsageTimeRange = (value) => {
|
|
25
|
+
const normalized = typeof value === 'string' ? value.trim().toLowerCase() : '';
|
|
26
|
+
if (normalized === 'all' || normalized === '30d') return normalized;
|
|
27
|
+
return '7d';
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const normalizePromptsSubTab = (value) => {
|
|
31
|
+
const normalized = typeof value === 'string' ? value.trim().toLowerCase() : '';
|
|
32
|
+
return normalized === 'claude-project' ? 'claude-project' : 'codex';
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const normalizeNavigationSnapshot = (vm, source = {}) => {
|
|
36
|
+
const currentSkillsTargetApp = vm.skillsTargetApp === 'claude' ? 'claude' : 'codex';
|
|
37
|
+
const currentPromptTemplatesMode = vm.promptTemplatesMode === 'manage' ? 'manage' : 'compose';
|
|
38
|
+
return {
|
|
39
|
+
mainTab: typeof source.mainTab === 'string' ? source.mainTab : vm.mainTab,
|
|
40
|
+
configMode: typeof source.configMode === 'string' ? source.configMode : vm.configMode,
|
|
41
|
+
settingsTab: typeof source.settingsTab === 'string' ? source.settingsTab : vm.settingsTab,
|
|
42
|
+
skillsTargetApp: source.skillsTargetApp === 'claude' || source.skillsTargetApp === 'codex'
|
|
43
|
+
? source.skillsTargetApp
|
|
44
|
+
: currentSkillsTargetApp,
|
|
45
|
+
promptTemplatesMode: source.promptTemplatesMode === 'manage' || source.promptTemplatesMode === 'compose'
|
|
46
|
+
? source.promptTemplatesMode
|
|
47
|
+
: currentPromptTemplatesMode
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
buildWebUiPreferencesSnapshot(overrides = {}) {
|
|
53
|
+
const navigationOverride = overrides && typeof overrides.navigation === 'object' && overrides.navigation
|
|
54
|
+
? overrides.navigation
|
|
55
|
+
: null;
|
|
56
|
+
return {
|
|
57
|
+
shareCommandPrefix: typeof this.normalizeShareCommandPrefix === 'function'
|
|
58
|
+
? this.normalizeShareCommandPrefix(overrides.shareCommandPrefix || this.shareCommandPrefix)
|
|
59
|
+
: (this.shareCommandPrefix || 'npm start'),
|
|
60
|
+
sessionTrashEnabled: typeof this.normalizeSessionTrashEnabled === 'function'
|
|
61
|
+
? this.normalizeSessionTrashEnabled(Object.prototype.hasOwnProperty.call(overrides, 'sessionTrashEnabled') ? overrides.sessionTrashEnabled : this.sessionTrashEnabled)
|
|
62
|
+
: this.sessionTrashEnabled !== false,
|
|
63
|
+
sessionTrashRetentionDays: typeof this.normalizeSessionTrashRetentionDays === 'function'
|
|
64
|
+
? this.normalizeSessionTrashRetentionDays(Object.prototype.hasOwnProperty.call(overrides, 'sessionTrashRetentionDays') ? overrides.sessionTrashRetentionDays : this.sessionTrashRetentionDays)
|
|
65
|
+
: 30,
|
|
66
|
+
sessionTimelineStyle: typeof this.normalizeSessionTimelineStyle === 'function'
|
|
67
|
+
? this.normalizeSessionTimelineStyle(overrides.sessionTimelineStyle || this.sessionTimelineStyle)
|
|
68
|
+
: (this.sessionTimelineStyle === 'bar' ? 'bar' : 'dots'),
|
|
69
|
+
configTemplateDiffConfirmEnabled: typeof this.normalizeConfigTemplateDiffConfirmEnabled === 'function'
|
|
70
|
+
? this.normalizeConfigTemplateDiffConfirmEnabled(Object.prototype.hasOwnProperty.call(overrides, 'configTemplateDiffConfirmEnabled') ? overrides.configTemplateDiffConfirmEnabled : this.configTemplateDiffConfirmEnabled)
|
|
71
|
+
: this.configTemplateDiffConfirmEnabled !== false,
|
|
72
|
+
sessionsUsageTimeRange: normalizeUsageTimeRange(overrides.sessionsUsageTimeRange || this.sessionsUsageTimeRange),
|
|
73
|
+
promptsSubTab: normalizePromptsSubTab(overrides.promptsSubTab || this.promptsSubTab),
|
|
74
|
+
projectClaudeMdPath: typeof overrides.projectClaudeMdPath === 'string'
|
|
75
|
+
? overrides.projectClaudeMdPath
|
|
76
|
+
: (typeof this.projectClaudeMdPath === 'string' ? this.projectClaudeMdPath : ''),
|
|
77
|
+
navigation: normalizeNavigationSnapshot(this, navigationOverride || {})
|
|
78
|
+
};
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
applyWebUiPreferences(preferences = {}, options = {}) {
|
|
82
|
+
const source = preferences && typeof preferences === 'object' ? preferences : {};
|
|
83
|
+
const shouldApplyNavigation = !(options && options.applyNavigation === false);
|
|
84
|
+
this.__webUiPreferencesApplying = true;
|
|
85
|
+
try {
|
|
86
|
+
if (typeof source.shareCommandPrefix === 'string' && typeof this.normalizeShareCommandPrefix === 'function') {
|
|
87
|
+
this.shareCommandPrefix = this.normalizeShareCommandPrefix(source.shareCommandPrefix);
|
|
88
|
+
setLocalStorageValue('codexmateShareCommandPrefix', this.shareCommandPrefix);
|
|
89
|
+
}
|
|
90
|
+
if (Object.prototype.hasOwnProperty.call(source, 'sessionTrashEnabled') && typeof this.normalizeSessionTrashEnabled === 'function') {
|
|
91
|
+
this.sessionTrashEnabled = this.normalizeSessionTrashEnabled(source.sessionTrashEnabled);
|
|
92
|
+
setLocalStorageValue('codexmateSessionTrashEnabled', this.sessionTrashEnabled ? 'true' : 'false');
|
|
93
|
+
}
|
|
94
|
+
if (Object.prototype.hasOwnProperty.call(source, 'sessionTrashRetentionDays') && typeof this.normalizeSessionTrashRetentionDays === 'function') {
|
|
95
|
+
this.sessionTrashRetentionDays = this.normalizeSessionTrashRetentionDays(source.sessionTrashRetentionDays);
|
|
96
|
+
setLocalStorageValue('codexmateSessionTrashRetentionDays', this.sessionTrashRetentionDays);
|
|
97
|
+
}
|
|
98
|
+
if (typeof source.sessionTimelineStyle === 'string' && typeof this.normalizeSessionTimelineStyle === 'function') {
|
|
99
|
+
this.sessionTimelineStyle = this.normalizeSessionTimelineStyle(source.sessionTimelineStyle);
|
|
100
|
+
setLocalStorageValue('codexmateSessionTimelineStyle', this.sessionTimelineStyle);
|
|
101
|
+
}
|
|
102
|
+
if (Object.prototype.hasOwnProperty.call(source, 'configTemplateDiffConfirmEnabled') && typeof this.normalizeConfigTemplateDiffConfirmEnabled === 'function') {
|
|
103
|
+
this.configTemplateDiffConfirmEnabled = this.normalizeConfigTemplateDiffConfirmEnabled(source.configTemplateDiffConfirmEnabled);
|
|
104
|
+
setLocalStorageValue('codexmateConfigTemplateDiffConfirmEnabled', this.configTemplateDiffConfirmEnabled ? 'true' : 'false');
|
|
105
|
+
}
|
|
106
|
+
if (typeof source.sessionsUsageTimeRange === 'string') {
|
|
107
|
+
this.sessionsUsageTimeRange = normalizeUsageTimeRange(source.sessionsUsageTimeRange);
|
|
108
|
+
setLocalStorageValue('sessionsUsageTimeRange', this.sessionsUsageTimeRange);
|
|
109
|
+
}
|
|
110
|
+
if (typeof source.promptsSubTab === 'string') {
|
|
111
|
+
this.promptsSubTab = normalizePromptsSubTab(source.promptsSubTab);
|
|
112
|
+
setLocalStorageValue('codexmate_prompts_sub_tab', this.promptsSubTab);
|
|
113
|
+
}
|
|
114
|
+
if (typeof source.projectClaudeMdPath === 'string') {
|
|
115
|
+
this.projectClaudeMdPath = source.projectClaudeMdPath;
|
|
116
|
+
setLocalStorageValue('codexmate_project_claude_md_path', this.projectClaudeMdPath);
|
|
117
|
+
}
|
|
118
|
+
if (shouldApplyNavigation && source.navigation && typeof source.navigation === 'object') {
|
|
119
|
+
const nav = source.navigation;
|
|
120
|
+
if (typeof nav.settingsTab === 'string' && typeof this.normalizeSettingsTab === 'function') {
|
|
121
|
+
this.settingsTab = this.normalizeSettingsTab(nav.settingsTab);
|
|
122
|
+
}
|
|
123
|
+
if (typeof nav.configMode === 'string') this.configMode = nav.configMode;
|
|
124
|
+
if (typeof nav.mainTab === 'string') {
|
|
125
|
+
if (typeof this.switchMainTab === 'function') {
|
|
126
|
+
this.switchMainTab(nav.mainTab);
|
|
127
|
+
} else {
|
|
128
|
+
this.mainTab = nav.mainTab;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (nav.skillsTargetApp === 'codex' || nav.skillsTargetApp === 'claude') this.skillsTargetApp = nav.skillsTargetApp;
|
|
132
|
+
if (nav.promptTemplatesMode === 'compose' || nav.promptTemplatesMode === 'manage') this.promptTemplatesMode = nav.promptTemplatesMode;
|
|
133
|
+
if (typeof this.saveNavState === 'function') this.saveNavState();
|
|
134
|
+
}
|
|
135
|
+
} finally {
|
|
136
|
+
this.__webUiPreferencesApplying = false;
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
|
|
140
|
+
async loadWebUiPreferences(options = {}) {
|
|
141
|
+
try {
|
|
142
|
+
const res = await api('get-web-ui-preferences');
|
|
143
|
+
if (res && res.preferences && typeof res.preferences === 'object') {
|
|
144
|
+
this.applyWebUiPreferences(res.preferences, options && typeof options === 'object' ? options : {});
|
|
145
|
+
}
|
|
146
|
+
} catch (_) {}
|
|
147
|
+
},
|
|
148
|
+
|
|
149
|
+
persistWebUiPreferences(overrides = {}) {
|
|
150
|
+
if (this.__webUiPreferencesApplying) return;
|
|
151
|
+
const snapshot = this.buildWebUiPreferencesSnapshot(overrides && typeof overrides === 'object' ? overrides : {});
|
|
152
|
+
if (this.__webUiPreferencesPersistTimer) {
|
|
153
|
+
clearTimeout(this.__webUiPreferencesPersistTimer);
|
|
154
|
+
}
|
|
155
|
+
this.__webUiPreferencesPersistTimer = setTimeout(() => {
|
|
156
|
+
this.__webUiPreferencesPersistTimer = 0;
|
|
157
|
+
api('set-web-ui-preferences', { preferences: snapshot }).catch(() => {});
|
|
158
|
+
}, 120);
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
}
|
|
@@ -1089,6 +1089,39 @@ const en = Object.freeze({
|
|
|
1089
1089
|
'settings.tabs.aria': 'Settings categories',
|
|
1090
1090
|
'settings.quickSettings.title': 'Quick Settings',
|
|
1091
1091
|
'settings.language.sideLabel': 'Language: {language}',
|
|
1092
|
+
'announcement.providerCache.open': 'Feature announcement',
|
|
1093
|
+
'announcement.project.eyebrow': 'Start here',
|
|
1094
|
+
'announcement.project.closeAria': 'Close feature announcement',
|
|
1095
|
+
'announcement.project.primaryAction': 'Enter workspace',
|
|
1096
|
+
'announcement.project.title': 'Your AI tool hub starts here',
|
|
1097
|
+
'announcement.project.subtitle': 'Connect models, find conversations, review usage, and keep common maintenance actions in one workspace.',
|
|
1098
|
+
'announcement.project.features.aria': 'Codex Mate feature overview',
|
|
1099
|
+
'announcement.project.feature.config.title': 'Connect models',
|
|
1100
|
+
'announcement.project.feature.config.meta': 'Set models and service endpoints for your AI tools.',
|
|
1101
|
+
'announcement.project.feature.sessions.title': 'Find conversations',
|
|
1102
|
+
'announcement.project.feature.sessions.meta': 'Search, export, or clean past sessions by source.',
|
|
1103
|
+
'announcement.project.feature.usage.title': 'Check usage',
|
|
1104
|
+
'announcement.project.feature.usage.meta': 'Review recent and long-term local usage trends.',
|
|
1105
|
+
'announcement.project.feature.tasks.title': 'Track tasks',
|
|
1106
|
+
'announcement.project.feature.tasks.meta': 'Inspect plans, queues, and run history.',
|
|
1107
|
+
'announcement.project.feature.skills.title': 'Reuse workflows',
|
|
1108
|
+
'announcement.project.feature.skills.meta': 'Manage Skills and prompt templates.',
|
|
1109
|
+
'announcement.project.feature.data.title': 'Maintain data',
|
|
1110
|
+
'announcement.project.feature.data.meta': 'Handle backups, imports, trash, and caches.',
|
|
1111
|
+
'announcement.project.status.aria': 'Current workspace status',
|
|
1112
|
+
'announcement.project.status.provider': 'Provider',
|
|
1113
|
+
'announcement.project.status.model': 'Current model',
|
|
1114
|
+
'announcement.project.status.cacheFiles': 'Cache files',
|
|
1115
|
+
'announcement.project.cache.title': 'Advanced maintenance status',
|
|
1116
|
+
'announcement.project.cache.meta': 'Open only when you need troubleshooting or sync; you can ignore it for everyday use.',
|
|
1117
|
+
'announcement.project.cache.files': 'Cache files',
|
|
1118
|
+
'announcement.project.cache.providers': 'Provider summaries',
|
|
1119
|
+
'announcement.project.cache.groups': 'Cache groups',
|
|
1120
|
+
'announcement.project.cache.groupList': 'Provider cache group summary',
|
|
1121
|
+
'announcement.project.cache.groupSummary': '{files} files · {providers} providers',
|
|
1122
|
+
'announcement.project.cache.sync': 'Sync cache',
|
|
1123
|
+
'announcement.project.cache.refresh': 'Refresh summary',
|
|
1124
|
+
'announcement.project.cache.details': 'View cache details',
|
|
1092
1125
|
'settings.language.title': 'Language',
|
|
1093
1126
|
'settings.language.meta': 'Choose the Web UI display language',
|
|
1094
1127
|
'settings.language.label': 'Interface language',
|
|
@@ -1096,7 +1129,7 @@ const en = Object.freeze({
|
|
|
1096
1129
|
'settings.sharePrefix.title': 'Share command prefix',
|
|
1097
1130
|
'settings.sharePrefix.meta': 'Used as the prefix for “Copy share command” in the Web UI',
|
|
1098
1131
|
'settings.sharePrefix.label': 'Prefix',
|
|
1099
|
-
'settings.sharePrefix.hint': 'Defaults to npm start (project-local). You can switch to global codexmate. This setting is stored in
|
|
1132
|
+
'settings.sharePrefix.hint': 'Defaults to npm start (project-local). You can switch to global codexmate. This setting is stored in ~/.codexmate/preferences.json.',
|
|
1100
1133
|
'settings.claude.title': 'Claude config',
|
|
1101
1134
|
'settings.claude.meta': 'Backup / import ~/.claude',
|
|
1102
1135
|
'settings.codex.title': 'Codex config',
|
|
@@ -1108,6 +1141,37 @@ const en = Object.freeze({
|
|
|
1108
1141
|
'settings.backup.importCodex': 'Import ~/.codex backup',
|
|
1109
1142
|
'settings.importing': 'Importing...',
|
|
1110
1143
|
|
|
1144
|
+
'settings.providerCache.title': 'Provider cache records',
|
|
1145
|
+
'settings.providerCache.meta': 'Inspect Claude / Codex / OpenCode caches under ~/.codexmate',
|
|
1146
|
+
'settings.providerCache.open': 'View cache records',
|
|
1147
|
+
'settings.providerCache.sync': 'Sync cache records',
|
|
1148
|
+
'settings.providerCache.syncing': 'Syncing...',
|
|
1149
|
+
'settings.providerCache.loading': 'Loading...',
|
|
1150
|
+
'settings.providerCache.hint': 'Read-only view of cache files. Sensitive fields are redacted automatically. Sync writes the current provider configuration to ~/.codexmate cache files.',
|
|
1151
|
+
'modal.providerCache.title': 'Provider cache records',
|
|
1152
|
+
'modal.providerCache.root': 'Cache directory',
|
|
1153
|
+
'modal.providerCache.refresh': 'Refresh',
|
|
1154
|
+
'modal.providerCache.refreshing': 'Refreshing...',
|
|
1155
|
+
'modal.providerCache.sync': 'Sync',
|
|
1156
|
+
'modal.providerCache.syncing': 'Syncing...',
|
|
1157
|
+
'modal.providerCache.syncSucceeded': 'Synced {count} providers to {fileCount} cache files',
|
|
1158
|
+
'modal.providerCache.syncFailed': 'Failed to sync cache records',
|
|
1159
|
+
'modal.providerCache.noSyncableProviders': 'No syncable providers found',
|
|
1160
|
+
'modal.providerCache.loading': 'Loading cache records...',
|
|
1161
|
+
'modal.providerCache.loadedAt': 'Loaded at',
|
|
1162
|
+
'modal.providerCache.groupMeta': '{count} cache files found',
|
|
1163
|
+
'modal.providerCache.empty': 'No cache files found',
|
|
1164
|
+
'modal.providerCache.providerCount': '{count} providers',
|
|
1165
|
+
'modal.providerCache.rawJsonOnly': 'No provider summary detected; showing raw JSON',
|
|
1166
|
+
'modal.providerCache.tooLarge': 'File is too large; JSON read skipped',
|
|
1167
|
+
'modal.providerCache.parseFailed': 'JSON parse failed',
|
|
1168
|
+
'modal.providerCache.rawJson': 'Raw JSON',
|
|
1169
|
+
'modal.providerCache.errorDetails': 'Error details',
|
|
1170
|
+
'modal.providerCache.loadFailed': 'Failed to load cache records',
|
|
1171
|
+
|
|
1172
|
+
'settings.trashConfig.title': 'Trash configuration',
|
|
1173
|
+
'settings.trashConfig.meta': 'Trash toggle and automatic cleanup retention',
|
|
1174
|
+
|
|
1111
1175
|
'settings.deleteBehavior.title': 'Session deletion behavior',
|
|
1112
1176
|
'settings.deleteBehavior.meta': 'Whether “Delete” moves to trash first',
|
|
1113
1177
|
'settings.deleteBehavior.toggle': 'Move deleted sessions to trash first',
|
|
@@ -1078,6 +1078,39 @@ const ja = Object.freeze({
|
|
|
1078
1078
|
'settings.tabs.aria': '設定カテゴリ',
|
|
1079
1079
|
'settings.quickSettings.title': 'クイック設定',
|
|
1080
1080
|
'settings.language.sideLabel': '言語:{language}',
|
|
1081
|
+
'announcement.providerCache.open': '機能のお知らせ',
|
|
1082
|
+
'announcement.project.eyebrow': 'ここから開始',
|
|
1083
|
+
'announcement.project.closeAria': '機能のお知らせを閉じる',
|
|
1084
|
+
'announcement.project.primaryAction': 'ワークスペースへ',
|
|
1085
|
+
'announcement.project.title': 'AI ツール入口はここです',
|
|
1086
|
+
'announcement.project.subtitle': 'モデル接続、会話検索、使用量確認、保守操作をひとつのワークスペースにまとめます。',
|
|
1087
|
+
'announcement.project.features.aria': 'Codex Mate 機能概要',
|
|
1088
|
+
'announcement.project.feature.config.title': 'モデルを接続',
|
|
1089
|
+
'announcement.project.feature.config.meta': 'AI ツールのモデルと接続先を設定します。',
|
|
1090
|
+
'announcement.project.feature.sessions.title': '会話を探す',
|
|
1091
|
+
'announcement.project.feature.sessions.meta': '過去のセッションを検索、エクスポート、整理します。',
|
|
1092
|
+
'announcement.project.feature.usage.title': '使用量を見る',
|
|
1093
|
+
'announcement.project.feature.usage.meta': '最近と長期のローカル使用量を確認します。',
|
|
1094
|
+
'announcement.project.feature.tasks.title': 'タスクを追跡',
|
|
1095
|
+
'announcement.project.feature.tasks.meta': '計画、キュー、実行履歴を確認します。',
|
|
1096
|
+
'announcement.project.feature.skills.title': 'ワークフロー再利用',
|
|
1097
|
+
'announcement.project.feature.skills.meta': 'Skills とプロンプトテンプレートを管理します。',
|
|
1098
|
+
'announcement.project.feature.data.title': 'データ保守',
|
|
1099
|
+
'announcement.project.feature.data.meta': 'バックアップ、インポート、ゴミ箱、キャッシュを扱います。',
|
|
1100
|
+
'announcement.project.status.aria': '現在のワークスペース状態',
|
|
1101
|
+
'announcement.project.status.provider': 'Provider',
|
|
1102
|
+
'announcement.project.status.model': '現在のモデル',
|
|
1103
|
+
'announcement.project.status.cacheFiles': 'キャッシュファイル',
|
|
1104
|
+
'announcement.project.cache.title': '高度な保守状態',
|
|
1105
|
+
'announcement.project.cache.meta': '同期や調査が必要なときだけ展開します。普段は無視してかまいません。',
|
|
1106
|
+
'announcement.project.cache.files': 'キャッシュファイル',
|
|
1107
|
+
'announcement.project.cache.providers': 'Provider 概要',
|
|
1108
|
+
'announcement.project.cache.groups': 'キャッシュグループ',
|
|
1109
|
+
'announcement.project.cache.groupList': 'Provider キャッシュグループ概要',
|
|
1110
|
+
'announcement.project.cache.groupSummary': '{files} ファイル · {providers} provider',
|
|
1111
|
+
'announcement.project.cache.sync': 'キャッシュ同期',
|
|
1112
|
+
'announcement.project.cache.refresh': '概要を更新',
|
|
1113
|
+
'announcement.project.cache.details': 'キャッシュ詳細を見る',
|
|
1081
1114
|
'settings.language.title': '言語',
|
|
1082
1115
|
'settings.language.meta': 'Web UI の表示言語を選択',
|
|
1083
1116
|
'settings.language.label': 'インターフェース言語',
|
|
@@ -1085,7 +1118,7 @@ const ja = Object.freeze({
|
|
|
1085
1118
|
'settings.sharePrefix.title': '共有コマンドプレフィックス',
|
|
1086
1119
|
'settings.sharePrefix.meta': 'Web UI の「共有コマンドをコピー」のプレフィックスに影響',
|
|
1087
1120
|
'settings.sharePrefix.label': 'プレフィックス',
|
|
1088
|
-
'settings.sharePrefix.hint': 'デフォルトはプロジェクト内の npm start を使用します。グローバル codexmate
|
|
1121
|
+
'settings.sharePrefix.hint': 'デフォルトはプロジェクト内の npm start を使用します。グローバル codexmate に切り替えることもできます。この設定は ~/.codexmate/preferences.json に保存されます。',
|
|
1089
1122
|
'settings.backup.title': 'データバックアップ',
|
|
1090
1123
|
'settings.backup.meta': 'Claude と Codex 設定のエクスポート / インポート',
|
|
1091
1124
|
'settings.claude.title': 'Claude 設定',
|
|
@@ -1099,6 +1132,34 @@ const ja = Object.freeze({
|
|
|
1099
1132
|
'settings.backup.importCodex': '~/.codex バックアップをインポート',
|
|
1100
1133
|
'settings.importing': 'インポート中...',
|
|
1101
1134
|
|
|
1135
|
+
'settings.providerCache.title': 'Provider キャッシュ記録',
|
|
1136
|
+
'settings.providerCache.meta': '~/.codexmate 内の Claude / Codex / OpenCode キャッシュを確認',
|
|
1137
|
+
'settings.providerCache.open': 'キャッシュ記録を表示',
|
|
1138
|
+
'settings.providerCache.sync': 'キャッシュ記録を同期',
|
|
1139
|
+
'settings.providerCache.syncing': '同期中...',
|
|
1140
|
+
'settings.providerCache.loading': '読み込み中...',
|
|
1141
|
+
'settings.providerCache.hint': 'キャッシュファイルの読み取り専用表示です。機密フィールドは自動的にマスクされます。同期すると現在の provider 設定を ~/.codexmate キャッシュファイルへ書き込みます。',
|
|
1142
|
+
'modal.providerCache.title': 'Provider キャッシュ記録',
|
|
1143
|
+
'modal.providerCache.root': 'キャッシュディレクトリ',
|
|
1144
|
+
'modal.providerCache.refresh': '更新',
|
|
1145
|
+
'modal.providerCache.refreshing': '更新中...',
|
|
1146
|
+
'modal.providerCache.sync': '同期',
|
|
1147
|
+
'modal.providerCache.syncing': '同期中...',
|
|
1148
|
+
'modal.providerCache.syncSucceeded': '{count} 個の provider を {fileCount} 個のキャッシュファイルへ同期しました',
|
|
1149
|
+
'modal.providerCache.syncFailed': 'キャッシュ記録の同期に失敗しました',
|
|
1150
|
+
'modal.providerCache.noSyncableProviders': '同期できる provider がありません',
|
|
1151
|
+
'modal.providerCache.loading': 'キャッシュ記録を読み込み中...',
|
|
1152
|
+
'modal.providerCache.loadedAt': '読み込み時刻',
|
|
1153
|
+
'modal.providerCache.groupMeta': '{count} 個のキャッシュファイル',
|
|
1154
|
+
'modal.providerCache.empty': 'キャッシュファイルは見つかりません',
|
|
1155
|
+
'modal.providerCache.providerCount': '{count} 個の provider',
|
|
1156
|
+
'modal.providerCache.rawJsonOnly': 'provider の概要を検出できないため、Raw JSON を表示します',
|
|
1157
|
+
'modal.providerCache.tooLarge': 'ファイルが大きすぎるため JSON 読み取りをスキップしました',
|
|
1158
|
+
'modal.providerCache.parseFailed': 'JSON 解析に失敗しました',
|
|
1159
|
+
'modal.providerCache.rawJson': 'Raw JSON',
|
|
1160
|
+
'modal.providerCache.errorDetails': 'エラー詳細',
|
|
1161
|
+
'modal.providerCache.loadFailed': 'キャッシュ記録の読み込みに失敗しました',
|
|
1162
|
+
|
|
1102
1163
|
'settings.trashConfig.title': 'ゴミ箱設定',
|
|
1103
1164
|
'settings.trashConfig.meta': 'ゴミ箱の有効/無効と自動クリーンアップ日数',
|
|
1104
1165
|
'settings.deleteBehavior.title': 'セッション削除動作',
|