mulmoclaude 0.6.2 → 0.6.4
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 +26 -0
- package/bin/mulmoclaude.js +11 -1
- package/client/assets/JsonEditor-D6WBWLoa.js +10 -0
- package/client/assets/JsonEditor-Di5xGeZY.css +1 -0
- package/client/assets/_plugin-vue_export-helper-BOai-rQB.js +1 -0
- package/client/assets/chunk-D8eiyYIV-LcKZGJv5.js +1 -0
- package/client/assets/{html2canvas-CDGcmOD3-Bkf2uOth.js → html2canvas-CDGcmOD3-XVrO-eyz.js} +1 -1
- package/client/assets/index-CyBr8Mkr.css +2 -0
- package/client/assets/index-zZIqEbNX.js +5106 -0
- package/client/assets/{index.es-DqtpmBm8-D9mAh_KQ.js → index.es-DqtpmBm8-DHT6q10o.js} +1 -1
- package/client/assets/material-symbols-outlined-DtIK7AQn.woff2 +0 -0
- package/client/assets/runtime-protocol-vue-D6kcV0wa.js +1 -0
- package/client/assets/{runtime-vue-BVUzgYGA.js → runtime-vue-fFYhnNg3.js} +1 -1
- package/client/assets/{vue-C8UuIO9J.js → vue-D4w8THF_.js} +1 -1
- package/client/assets/vue-i18n-CQbxVmNs.js +3 -0
- package/client/assets/vue.runtime.esm-bundler-BTyIdNAI.js +4 -0
- package/client/index.html +10 -10
- package/package.json +9 -8
- package/server/agent/backend/claude-code.ts +34 -0
- package/server/agent/backend/fake-echo.ts +370 -0
- package/server/agent/backend/index.ts +16 -1
- package/server/agent/config.ts +74 -24
- package/server/agent/index.ts +104 -80
- package/server/agent/mcpFailureMonitor.ts +167 -0
- package/server/agent/mcpPreflight.ts +185 -0
- package/server/agent/prompt.ts +50 -359
- package/server/agent/stdioHttpShim.ts +171 -0
- package/server/agent/stream.ts +12 -1
- package/server/api/routes/encore.ts +55 -0
- package/server/api/routes/files.ts +22 -0
- package/server/api/routes/mulmo-script.ts +19 -1
- package/server/api/routes/schedulerHandlers.ts +52 -4
- package/server/api/routes/sessions.ts +15 -0
- package/server/api/routes/skills.ts +263 -0
- package/server/build/dispatcher.mjs +299 -0
- package/server/encore/INVARIANTS.md +272 -0
- package/server/encore/boot.ts +39 -0
- package/server/encore/closure.ts +36 -0
- package/server/encore/cycle.ts +276 -0
- package/server/encore/dispatch.ts +103 -0
- package/server/encore/handlers/amend.ts +99 -0
- package/server/encore/handlers/appendNote.ts +74 -0
- package/server/encore/handlers/defineEncore.ts +42 -0
- package/server/encore/handlers/listTickets.ts +107 -0
- package/server/encore/handlers/markStepDone.ts +41 -0
- package/server/encore/handlers/markTargetSkipped.ts +33 -0
- package/server/encore/handlers/query.ts +138 -0
- package/server/encore/handlers/recordValues.ts +44 -0
- package/server/encore/handlers/resolveNotification.ts +121 -0
- package/server/encore/handlers/setup.ts +81 -0
- package/server/encore/handlers/shared.ts +137 -0
- package/server/encore/handlers/snooze.ts +87 -0
- package/server/encore/handlers/startObligationChat.ts +64 -0
- package/server/encore/handlers/startSetupChat.ts +50 -0
- package/server/encore/lock.ts +61 -0
- package/server/encore/notifier.ts +123 -0
- package/server/encore/obligation.ts +25 -0
- package/server/encore/paths.ts +78 -0
- package/server/encore/reconcile.ts +661 -0
- package/server/encore/tick.ts +191 -0
- package/server/encore/yaml-fm.ts +63 -0
- package/server/events/notifications.ts +19 -91
- package/server/index.ts +94 -9
- package/server/notifier/engine.ts +102 -1
- package/server/notifier/macosReminderAdapter.ts +30 -0
- package/server/notifier/runtime-api.ts +41 -1
- package/server/notifier/types.ts +15 -2
- package/server/plugins/runtime.ts +11 -2
- package/server/prompts/index.ts +39 -0
- package/server/prompts/system/journal-pointer.md +12 -0
- package/server/prompts/system/memory-management-atomic.md +33 -0
- package/server/prompts/system/memory-management-topic.md +60 -0
- package/server/prompts/system/news-concierge.md +24 -0
- package/server/prompts/system/sandbox-tools.md +10 -0
- package/server/prompts/system/sources-context.md +16 -0
- package/server/prompts/system/system.md +91 -0
- package/server/system/announceOptionalDeps.ts +57 -0
- package/server/system/appVersion.ts +34 -0
- package/server/system/config.ts +17 -1
- package/server/system/docker.ts +14 -6
- package/server/system/env.ts +18 -5
- package/server/system/optionalDeps.ts +129 -0
- package/server/utils/cli-flags.d.mts +14 -0
- package/server/utils/cli-flags.mjs +53 -0
- package/server/utils/files/encore-io.ts +111 -0
- package/server/utils/time.ts +6 -0
- package/server/workspace/helps/business.md +2 -2
- package/server/workspace/helps/encore-dsl.md +482 -0
- package/server/workspace/helps/index.md +15 -13
- package/server/workspace/helps/mulmoscript.md +3 -3
- package/server/workspace/helps/sandbox.md +2 -2
- package/server/workspace/hooks/dispatcher.ts +7 -5
- package/server/workspace/hooks/provision.ts +6 -3
- package/server/workspace/paths.ts +13 -4
- package/server/workspace/skills/catalog.ts +355 -0
- package/server/workspace/skills/external/catalog.ts +283 -0
- package/server/workspace/skills/external/clone.ts +129 -0
- package/server/workspace/skills/external/id.ts +194 -0
- package/server/workspace/skills/external/install.ts +417 -0
- package/server/workspace/skills/external/presets.ts +50 -0
- package/server/workspace/skills-preset.ts +29 -17
- package/server/workspace/workspace.ts +10 -5
- package/src/App.vue +37 -8
- package/src/components/FileContentRenderer.vue +102 -9
- package/src/components/JsonEditor.vue +160 -0
- package/src/components/NotificationBell.vue +35 -3
- package/src/components/PluginLauncher.vue +20 -41
- package/src/components/RightSidebar.vue +19 -0
- package/src/components/SettingsMcpTab.vue +58 -11
- package/src/components/SettingsModal.vue +22 -1
- package/src/components/StackView.vue +10 -1
- package/src/components/TodoExplorer.vue +16 -0
- package/src/components/todo/TodoKanbanView.vue +34 -6
- package/src/composables/useNotifications.ts +21 -1
- package/src/config/apiRoutes.ts +0 -6
- package/src/config/mcpCatalog.ts +12 -7
- package/src/config/mcpTypes.ts +5 -0
- package/src/config/roles.ts +52 -15
- package/src/config/systemFileDescriptors.ts +12 -0
- package/src/lang/de.ts +108 -12
- package/src/lang/en.ts +105 -11
- package/src/lang/es.ts +106 -11
- package/src/lang/fr.ts +106 -11
- package/src/lang/ja.ts +104 -11
- package/src/lang/ko.ts +105 -11
- package/src/lang/pt-BR.ts +106 -11
- package/src/lang/zh.ts +103 -11
- package/src/main.ts +1 -0
- package/src/plugins/_generated/metas.ts +4 -0
- package/src/plugins/_generated/registrations.ts +2 -0
- package/src/plugins/_generated/server-bindings.ts +5 -0
- package/src/plugins/encore/EncoreDashboard.vue +504 -0
- package/src/plugins/encore/EncoreRedirect.vue +116 -0
- package/src/plugins/encore/View.vue +36 -0
- package/src/plugins/encore/defineEncoreDefinition.ts +74 -0
- package/src/plugins/encore/defineEncoreMeta.ts +13 -0
- package/src/plugins/encore/index.ts +93 -0
- package/src/plugins/encore/manageEncoreDefinition.ts +100 -0
- package/src/plugins/encore/manageEncoreMeta.ts +36 -0
- package/src/plugins/manageSkills/View.vue +832 -30
- package/src/plugins/manageSkills/categories.ts +125 -0
- package/src/plugins/manageSkills/meta.ts +30 -0
- package/src/plugins/markdown/definition.ts +3 -3
- package/src/plugins/meta-types.ts +5 -0
- package/src/plugins/presentMulmoScript/Preview.vue +3 -3
- package/src/plugins/presentMulmoScript/View.vue +157 -33
- package/src/plugins/presentMulmoScript/meta.ts +4 -0
- package/src/plugins/scheduler/View.vue +45 -9
- package/src/plugins/scheduler/calendarDefinition.ts +6 -2
- package/src/plugins/scheduler/multiDayHelpers.ts +95 -0
- package/src/plugins/skill/View.vue +1 -5
- package/src/plugins/spreadsheet/View.vue +3 -3
- package/src/plugins/spreadsheet/definition.ts +1 -1
- package/src/plugins/textResponse/Preview.vue +14 -1
- package/src/plugins/textResponse/View.vue +39 -24
- package/src/plugins/wiki/components/WikiPageBody.vue +4 -0
- package/src/router/index.ts +11 -0
- package/src/router/pageRoutes.ts +1 -0
- package/src/types/encore-dsl/at-expression.ts +120 -0
- package/src/types/encore-dsl/at-resolver.ts +32 -0
- package/src/types/encore-dsl/cadence.ts +289 -0
- package/src/types/encore-dsl/schema.ts +288 -0
- package/src/types/notification.ts +2 -1
- package/src/types/session.ts +6 -0
- package/src/types/sse.ts +5 -0
- package/src/types/toolCallHistory.ts +7 -0
- package/src/utils/agent/eventDispatch.ts +26 -5
- package/src/utils/agent/mcpHint.ts +50 -0
- package/src/utils/image/htmlSrcAttrs.ts +117 -13
- package/src/utils/session/sessionEntries.ts +8 -32
- package/client/assets/PluginScopedRoot-YjvQq0Nn.js +0 -3
- package/client/assets/chunk-CernVdwh.js +0 -1
- package/client/assets/chunk-D8eiyYIV-CAXpUwLd.js +0 -1
- package/client/assets/index-BwrlMMHr.js +0 -5005
- package/client/assets/index-CvvNuegU.css +0 -2
- package/client/assets/material-symbols-outlined-BOZVWuR3.woff2 +0 -0
- package/client/assets/runtime-protocol-vue-C1To4M3t.js +0 -1
- package/client/assets/vue.runtime.esm-bundler-DQ8Kjjui.js +0 -4
- package/server/api/routes/notifications.ts +0 -195
- package/server/notifier/legacy-adapters.ts +0 -76
- package/server/workspace/hooks/dispatcher.mjs +0 -300
- package/src/composables/useSelectedResult.ts +0 -49
package/src/lang/en.ts
CHANGED
|
@@ -50,7 +50,7 @@ const enMessages = {
|
|
|
50
50
|
},
|
|
51
51
|
},
|
|
52
52
|
chatInput: {
|
|
53
|
-
placeholder: "
|
|
53
|
+
placeholder: "Message Claude…",
|
|
54
54
|
send: "Send",
|
|
55
55
|
attachFile: "Attach file",
|
|
56
56
|
fileTooLarge: "File too large ({sizeMB} MB). Maximum is 30 MB.",
|
|
@@ -90,12 +90,24 @@ const enMessages = {
|
|
|
90
90
|
clearAll: "Clear",
|
|
91
91
|
dismiss: "Dismiss",
|
|
92
92
|
cancel: "Cancel",
|
|
93
|
+
showMore: "Show more ({count})",
|
|
94
|
+
showLess: "Show less",
|
|
93
95
|
},
|
|
94
96
|
pluginDiagnostics: {
|
|
95
97
|
title: "Plugin configuration issue",
|
|
96
98
|
hostBody: 'Plugin "{plugin}" tried to register the {label} key "{key}" but it is reserved by the host. The plugin\'s entry has been dropped.',
|
|
97
99
|
intraBody: 'Plugins "{first}" and "{second}" both register {dimension} "{key}". "{first}" claimed it first, so "{second}"\'s registration is ignored.',
|
|
98
100
|
},
|
|
101
|
+
optionalDeps: {
|
|
102
|
+
// Generic `title` kept for backward compatibility with persisted
|
|
103
|
+
// history entries published before the reason-aware split below;
|
|
104
|
+
// new code paths use `titleNotFound` / `titleNotResponding`.
|
|
105
|
+
title: "Optional dependency unavailable",
|
|
106
|
+
titleNotFound: "{command} not installed",
|
|
107
|
+
titleNotResponding: "{command} not running",
|
|
108
|
+
notFound: "{command} not found — related features are disabled. Install {command} and restart MulmoClaude to enable them.",
|
|
109
|
+
notResponding: "{command} is installed but not running — related features are disabled. Start {command} and restart MulmoClaude to enable them.",
|
|
110
|
+
},
|
|
99
111
|
pluginErrorBoundary: {
|
|
100
112
|
title: "Plugin {pkg} crashed",
|
|
101
113
|
subtitle: "The plugin failed to render. The error has been logged to the console.",
|
|
@@ -125,6 +137,11 @@ const enMessages = {
|
|
|
125
137
|
error: "Error",
|
|
126
138
|
result: "Result",
|
|
127
139
|
running: "Running...",
|
|
140
|
+
mcpHint: {
|
|
141
|
+
title: (ctx: { named: (key: "server") => string }) => `${ctx.named("server")} setup hint`,
|
|
142
|
+
requiredKeys: "Required keys",
|
|
143
|
+
setupGuide: "Open setup guide",
|
|
144
|
+
},
|
|
128
145
|
},
|
|
129
146
|
fileTreePane: {
|
|
130
147
|
sort: "Sort:",
|
|
@@ -161,6 +178,7 @@ const enMessages = {
|
|
|
161
178
|
},
|
|
162
179
|
settingsModal: {
|
|
163
180
|
title: "Settings",
|
|
181
|
+
version: "MulmoClaude v{version}",
|
|
164
182
|
tabs: {
|
|
165
183
|
gemini: "Gemini API Key",
|
|
166
184
|
tools: "Allowed Tools",
|
|
@@ -272,15 +290,43 @@ const enMessages = {
|
|
|
272
290
|
errLabelConflict: 'Label "{label}" already exists',
|
|
273
291
|
},
|
|
274
292
|
pluginLauncher: {
|
|
275
|
-
todos: { label: "Todos"
|
|
276
|
-
calendar: { label: "Calendar"
|
|
277
|
-
automations: { label: "Actions"
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
293
|
+
todos: { label: "Todos" },
|
|
294
|
+
calendar: { label: "Calendar" },
|
|
295
|
+
automations: { label: "Actions" },
|
|
296
|
+
encore: { label: "Encore" },
|
|
297
|
+
wiki: { label: "Wiki" },
|
|
298
|
+
sources: { label: "Sources" },
|
|
299
|
+
news: { label: "News" },
|
|
300
|
+
skills: { label: "Skills" },
|
|
301
|
+
roles: { label: "Roles" },
|
|
302
|
+
files: { label: "Files" },
|
|
303
|
+
},
|
|
304
|
+
encoreDashboard: {
|
|
305
|
+
title: "Encore",
|
|
306
|
+
subtitle: "Recurring obligations Encore is tracking.",
|
|
307
|
+
loading: "Loading obligations…",
|
|
308
|
+
errorPrefix: "Couldn't load obligations: ",
|
|
309
|
+
empty: "No obligations yet. Ask in chat to set one up.",
|
|
310
|
+
noCycles: "No cycles recorded yet.",
|
|
311
|
+
cyclesSuffix: "cycles",
|
|
312
|
+
targetCount: "{count} target | {count} targets",
|
|
313
|
+
cycleClosed: "Closed",
|
|
314
|
+
chatButtonTitle: "Discuss this obligation in a new chat",
|
|
315
|
+
bellButtonTitle: "Discuss this cycle",
|
|
316
|
+
addButtonLabel: "Add",
|
|
317
|
+
unexpectedResponse: "Encore returned an unexpected response.",
|
|
318
|
+
status: {
|
|
319
|
+
active: "Active",
|
|
320
|
+
paused: "Paused",
|
|
321
|
+
retired: "Retired",
|
|
322
|
+
},
|
|
323
|
+
cadence: {
|
|
324
|
+
daily: "Daily",
|
|
325
|
+
weekly: "Weekly",
|
|
326
|
+
monthly: "Monthly",
|
|
327
|
+
biannual: "Biannual",
|
|
328
|
+
annual: "Annual",
|
|
329
|
+
},
|
|
284
330
|
},
|
|
285
331
|
fileContentHeader: {
|
|
286
332
|
showRendered: "Show rendered Markdown",
|
|
@@ -294,6 +340,11 @@ const enMessages = {
|
|
|
294
340
|
htmlPreview: "HTML preview",
|
|
295
341
|
pdfPreview: "PDF preview",
|
|
296
342
|
parseError: "parse error",
|
|
343
|
+
editJson: "Edit JSON",
|
|
344
|
+
jsonEditorLabel: "JSON editor",
|
|
345
|
+
invalidJson: "Invalid JSON",
|
|
346
|
+
undo: "Undo",
|
|
347
|
+
redo: "Redo",
|
|
297
348
|
},
|
|
298
349
|
filesView: {
|
|
299
350
|
chatPlaceholder: "Ask about this file…",
|
|
@@ -412,6 +463,9 @@ const enMessages = {
|
|
|
412
463
|
urlLabel: "URL:",
|
|
413
464
|
commandLabel: "Command:",
|
|
414
465
|
dockerStdioUnsupported: "⚠ Won't run while the Docker sandbox is enabled.",
|
|
466
|
+
dockerStdioHostExecActive: "⚠ Runs on the host — this server escapes the Docker sandbox.",
|
|
467
|
+
dockerStdioHostExecOptIn:
|
|
468
|
+
"Run on the host anyway (advanced). This server runs outside the Docker sandbox via a local HTTP gateway and can access your machine.",
|
|
415
469
|
learnMore: "Learn more",
|
|
416
470
|
addServerButton: "+ Add MCP Server",
|
|
417
471
|
nameLabel: "Name",
|
|
@@ -592,6 +646,7 @@ const enMessages = {
|
|
|
592
646
|
yamlParseError: "Could not parse YAML — ensure 'title' is present",
|
|
593
647
|
propLabel: "{key}:",
|
|
594
648
|
moreCount: "+{count} more",
|
|
649
|
+
invalidRange: "Invalid date range (endDate: {endDate})",
|
|
595
650
|
previewIcon: "📅",
|
|
596
651
|
previewUpcoming: "{count} upcoming",
|
|
597
652
|
previewAutomations: "{count} automation | {count} automations",
|
|
@@ -855,8 +910,9 @@ const enMessages = {
|
|
|
855
910
|
},
|
|
856
911
|
todoKanban: {
|
|
857
912
|
rename: "Rename",
|
|
858
|
-
alreadyDoneColumn: "Already done column",
|
|
859
913
|
markAsDoneColumn: "Mark as done column",
|
|
914
|
+
removeAllItems: "Remove all items",
|
|
915
|
+
removeAllItemsConfirm: 'Remove all {count} item(s) in "{column}"? This cannot be undone.',
|
|
860
916
|
deleteColumn: "Delete column",
|
|
861
917
|
columnActions: "Column actions",
|
|
862
918
|
addCard: "+ Add card",
|
|
@@ -1074,6 +1130,42 @@ const enMessages = {
|
|
|
1074
1130
|
errSaveFailed: "Save failed: {error}",
|
|
1075
1131
|
errDeleteFailed: "Failed to delete",
|
|
1076
1132
|
confirmDelete: 'Delete skill "{name}"? This removes ~/mulmoclaude/.claude/skills/{name}/SKILL.md.',
|
|
1133
|
+
sectionActive: "Active",
|
|
1134
|
+
sectionCatalog: "Catalog",
|
|
1135
|
+
sectionLegend:
|
|
1136
|
+
"Active: loaded into the prompt ({system} System = mc- bundled · {project} Project = editable · {user} User = ~/.claude/skills/). Catalog: browse, ★ star or ▶ run once without bloating the prompt.",
|
|
1137
|
+
catalogEmpty: "No preset skills available.",
|
|
1138
|
+
catalogPresetHeading: "Presets",
|
|
1139
|
+
catalogStar: "Star",
|
|
1140
|
+
catalogStarred: "Starred",
|
|
1141
|
+
catalogRunOnce: "Run once",
|
|
1142
|
+
sourceUserTitle: "User skill (~/.claude/skills/, available in every workspace)",
|
|
1143
|
+
sourceSystemTitle: "System skill (bundled, mc- prefix — read-only, overwritten by the launcher)",
|
|
1144
|
+
sourceProjectTitle: "Project skill (workspace .claude/skills/, this workspace only)",
|
|
1145
|
+
sourcePresetTitle: "Preset catalog — click Star to activate in this workspace",
|
|
1146
|
+
errCatalogListFailed: "Failed to load catalog: {error}",
|
|
1147
|
+
errCatalogStarFailed: "Failed to star skill: {error}",
|
|
1148
|
+
errCatalogPreviewFailed: "Failed to load skill preview: {error}",
|
|
1149
|
+
errCatalogRunOnceEmpty: "This skill has no body to run.",
|
|
1150
|
+
catalogAddRepo: "Add skill repository",
|
|
1151
|
+
catalogAddRepoTitle: "Add a skill repository",
|
|
1152
|
+
catalogRepoUrlLabel: "GitHub URL",
|
|
1153
|
+
catalogRepoUrlPlaceholder: "https://github.com/owner/repo",
|
|
1154
|
+
catalogRepoSubpathLabel: "Subpath (optional)",
|
|
1155
|
+
catalogRepoSubpathPlaceholder: "skills",
|
|
1156
|
+
catalogAddRepoSubmit: "Install",
|
|
1157
|
+
catalogAddRepoSuggestions: "Suggested repositories",
|
|
1158
|
+
catalogUninstallRepo: "Uninstall repository",
|
|
1159
|
+
catalogUpdateRepo: "Update repository (re-fetch latest)",
|
|
1160
|
+
catalogRepoOpenLink: "Open repository on GitHub (new tab)",
|
|
1161
|
+
catalogUninstallConfirm: "Uninstall this repository? Skills you already starred stay in your active list.",
|
|
1162
|
+
catalogRepoInstalling: "Installing…",
|
|
1163
|
+
catalogRepoEmpty: "No skills found in this repository.",
|
|
1164
|
+
sourceExternalTitle: "External skill (installed from a GitHub repo — click Star to activate)",
|
|
1165
|
+
errCatalogRepoListFailed: "Failed to load installed repositories: {error}",
|
|
1166
|
+
errCatalogRepoInstallFailed: "Failed to install repository: {error}",
|
|
1167
|
+
errCatalogRepoUninstallFailed: "Failed to uninstall repository: {error}",
|
|
1168
|
+
errCatalogRepoInvalidUrl: "Enter a GitHub repository URL.",
|
|
1077
1169
|
},
|
|
1078
1170
|
pluginManageRoles: {
|
|
1079
1171
|
heading: "Custom Roles",
|
|
@@ -1128,6 +1220,8 @@ const enMessages = {
|
|
|
1128
1220
|
stop: "■ Stop",
|
|
1129
1221
|
playPresentation: "Play presentation",
|
|
1130
1222
|
regenerateMovie: "Regenerate movie",
|
|
1223
|
+
movieGenerationFailed: "Movie generation failed",
|
|
1224
|
+
retry: "Retry",
|
|
1131
1225
|
errPrefix: "⚠ Error",
|
|
1132
1226
|
noBeats: "No beats found in script",
|
|
1133
1227
|
editSource: "Edit Script Source",
|
package/src/lang/es.ts
CHANGED
|
@@ -33,7 +33,7 @@ const esMessages = {
|
|
|
33
33
|
},
|
|
34
34
|
},
|
|
35
35
|
chatInput: {
|
|
36
|
-
placeholder: "
|
|
36
|
+
placeholder: "Mensaje para Claude…",
|
|
37
37
|
send: "Enviar",
|
|
38
38
|
attachFile: "Adjuntar archivo",
|
|
39
39
|
fileTooLarge: "El archivo es demasiado grande ({sizeMB} MB). El máximo es 30 MB.",
|
|
@@ -73,6 +73,8 @@ const esMessages = {
|
|
|
73
73
|
clearAll: "Borrar",
|
|
74
74
|
dismiss: "Descartar",
|
|
75
75
|
cancel: "Cancelar",
|
|
76
|
+
showMore: "Mostrar más ({count})",
|
|
77
|
+
showLess: "Mostrar menos",
|
|
76
78
|
},
|
|
77
79
|
pluginDiagnostics: {
|
|
78
80
|
title: "Problema de configuración del plugin",
|
|
@@ -80,6 +82,17 @@ const esMessages = {
|
|
|
80
82
|
intraBody:
|
|
81
83
|
'Los plugins "{first}" y "{second}" registran ambos el {dimension} "{key}". "{first}" lo reclamó primero, por lo que el registro de "{second}" se ignora.',
|
|
82
84
|
},
|
|
85
|
+
optionalDeps: {
|
|
86
|
+
// `title` genérico conservado por compatibilidad con entradas de
|
|
87
|
+
// historial persistidas antes de la división por motivo; las
|
|
88
|
+
// nuevas usan `titleNotFound` / `titleNotResponding`.
|
|
89
|
+
title: "Dependencia opcional no disponible",
|
|
90
|
+
titleNotFound: "{command} no está instalado",
|
|
91
|
+
titleNotResponding: "{command} no está en ejecución",
|
|
92
|
+
notFound: "No se encontró {command} — las funciones relacionadas se han desactivado. Instala {command} y reinicia MulmoClaude para habilitarlas.",
|
|
93
|
+
notResponding:
|
|
94
|
+
"{command} está instalado pero no se está ejecutando — las funciones relacionadas se han desactivado. Inicia {command} y reinicia MulmoClaude para habilitarlas.",
|
|
95
|
+
},
|
|
83
96
|
pluginErrorBoundary: {
|
|
84
97
|
title: "El plugin {pkg} se ha bloqueado",
|
|
85
98
|
subtitle: "El plugin no se pudo renderizar. El error se ha registrado en la consola.",
|
|
@@ -109,6 +122,11 @@ const esMessages = {
|
|
|
109
122
|
error: "Error",
|
|
110
123
|
result: "Resultado",
|
|
111
124
|
running: "Ejecutando...",
|
|
125
|
+
mcpHint: {
|
|
126
|
+
title: (ctx: { named: (key: "server") => string }) => `Ayuda de configuración: ${ctx.named("server")}`,
|
|
127
|
+
requiredKeys: "Claves requeridas",
|
|
128
|
+
setupGuide: "Abrir guía de configuración",
|
|
129
|
+
},
|
|
112
130
|
},
|
|
113
131
|
fileTreePane: {
|
|
114
132
|
sort: "Orden:",
|
|
@@ -145,6 +163,7 @@ const esMessages = {
|
|
|
145
163
|
},
|
|
146
164
|
settingsModal: {
|
|
147
165
|
title: "Ajustes",
|
|
166
|
+
version: "MulmoClaude v{version}",
|
|
148
167
|
tabs: {
|
|
149
168
|
gemini: "Clave API de Gemini",
|
|
150
169
|
tools: "Herramientas permitidas",
|
|
@@ -258,15 +277,43 @@ const esMessages = {
|
|
|
258
277
|
errLabelConflict: 'La etiqueta "{label}" ya existe',
|
|
259
278
|
},
|
|
260
279
|
pluginLauncher: {
|
|
261
|
-
todos: { label: "Tareas"
|
|
262
|
-
calendar: { label: "Calendario"
|
|
263
|
-
automations: { label: "Acciones"
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
280
|
+
todos: { label: "Tareas" },
|
|
281
|
+
calendar: { label: "Calendario" },
|
|
282
|
+
automations: { label: "Acciones" },
|
|
283
|
+
encore: { label: "Encore" },
|
|
284
|
+
wiki: { label: "Wiki" },
|
|
285
|
+
sources: { label: "Fuentes" },
|
|
286
|
+
news: { label: "Noticias" },
|
|
287
|
+
skills: { label: "Skills" },
|
|
288
|
+
roles: { label: "Roles" },
|
|
289
|
+
files: { label: "Archivos" },
|
|
290
|
+
},
|
|
291
|
+
encoreDashboard: {
|
|
292
|
+
title: "Encore",
|
|
293
|
+
subtitle: "Obligaciones recurrentes que Encore está siguiendo.",
|
|
294
|
+
loading: "Cargando obligaciones…",
|
|
295
|
+
errorPrefix: "No se pudieron cargar las obligaciones: ",
|
|
296
|
+
empty: "Aún no hay obligaciones. Pide en el chat para configurar una.",
|
|
297
|
+
noCycles: "Aún no se han registrado ciclos.",
|
|
298
|
+
cyclesSuffix: "ciclos",
|
|
299
|
+
targetCount: "{count} objetivo | {count} objetivos",
|
|
300
|
+
cycleClosed: "Cerrado",
|
|
301
|
+
chatButtonTitle: "Hablar sobre esta obligación en un chat nuevo",
|
|
302
|
+
bellButtonTitle: "Hablar sobre este ciclo",
|
|
303
|
+
addButtonLabel: "Añadir",
|
|
304
|
+
unexpectedResponse: "Encore devolvió una respuesta inesperada.",
|
|
305
|
+
status: {
|
|
306
|
+
active: "Activa",
|
|
307
|
+
paused: "Pausada",
|
|
308
|
+
retired: "Retirada",
|
|
309
|
+
},
|
|
310
|
+
cadence: {
|
|
311
|
+
daily: "Diaria",
|
|
312
|
+
weekly: "Semanal",
|
|
313
|
+
monthly: "Mensual",
|
|
314
|
+
biannual: "Semestral",
|
|
315
|
+
annual: "Anual",
|
|
316
|
+
},
|
|
270
317
|
},
|
|
271
318
|
fileContentHeader: {
|
|
272
319
|
showRendered: "Mostrar Markdown renderizado",
|
|
@@ -280,6 +327,11 @@ const esMessages = {
|
|
|
280
327
|
htmlPreview: "Vista previa HTML",
|
|
281
328
|
pdfPreview: "Vista previa PDF",
|
|
282
329
|
parseError: "error al analizar",
|
|
330
|
+
editJson: "Editar JSON",
|
|
331
|
+
jsonEditorLabel: "Editor JSON",
|
|
332
|
+
invalidJson: "JSON no válido",
|
|
333
|
+
undo: "Deshacer",
|
|
334
|
+
redo: "Rehacer",
|
|
283
335
|
},
|
|
284
336
|
filesView: {
|
|
285
337
|
chatPlaceholder: "Pregunta sobre este archivo…",
|
|
@@ -394,6 +446,9 @@ const esMessages = {
|
|
|
394
446
|
urlLabel: "URL:",
|
|
395
447
|
commandLabel: "Comando:",
|
|
396
448
|
dockerStdioUnsupported: "⚠ No se ejecutará mientras el sandbox de Docker esté activado.",
|
|
449
|
+
dockerStdioHostExecActive: "⚠ Se ejecuta en el host: este servidor sale del sandbox de Docker.",
|
|
450
|
+
dockerStdioHostExecOptIn:
|
|
451
|
+
"Ejecutar en el host de todos modos (avanzado). Este servidor se ejecuta fuera del sandbox de Docker mediante una pasarela HTTP local y puede acceder a tu equipo.",
|
|
397
452
|
learnMore: "Más información",
|
|
398
453
|
addServerButton: "+ Añadir servidor MCP",
|
|
399
454
|
nameLabel: "Nombre",
|
|
@@ -577,6 +632,7 @@ const esMessages = {
|
|
|
577
632
|
yamlParseError: "No se pudo analizar el YAML — asegúrate de que 'title' esté presente",
|
|
578
633
|
propLabel: "{key}:",
|
|
579
634
|
moreCount: "+{count} más",
|
|
635
|
+
invalidRange: "Rango de fechas no válido (endDate: {endDate})",
|
|
580
636
|
previewIcon: "📅",
|
|
581
637
|
previewUpcoming: "{count} próximos",
|
|
582
638
|
previewAutomations: "{count} automatización | {count} automatizaciones",
|
|
@@ -867,8 +923,9 @@ const esMessages = {
|
|
|
867
923
|
},
|
|
868
924
|
todoKanban: {
|
|
869
925
|
rename: "Cambiar nombre",
|
|
870
|
-
alreadyDoneColumn: "Columna ya marcada como hecha",
|
|
871
926
|
markAsDoneColumn: "Marcar como columna de hechas",
|
|
927
|
+
removeAllItems: "Eliminar todos los elementos",
|
|
928
|
+
removeAllItemsConfirm: '¿Eliminar los {count} elementos de "{column}"? Esta acción no se puede deshacer.',
|
|
872
929
|
deleteColumn: "Eliminar columna",
|
|
873
930
|
columnActions: "Acciones de columna",
|
|
874
931
|
addCard: "+ Añadir tarjeta",
|
|
@@ -1086,6 +1143,42 @@ const esMessages = {
|
|
|
1086
1143
|
errSaveFailed: "Error al guardar: {error}",
|
|
1087
1144
|
errDeleteFailed: "Error al eliminar",
|
|
1088
1145
|
confirmDelete: '¿Eliminar la skill "{name}"? Esto borrará ~/mulmoclaude/.claude/skills/{name}/SKILL.md.',
|
|
1146
|
+
sectionActive: "Activas",
|
|
1147
|
+
sectionCatalog: "Catálogo",
|
|
1148
|
+
sectionLegend:
|
|
1149
|
+
"Activas: cargadas en el prompt ({system} Sistema = incluidas mc- · {project} Proyecto = editables · {user} Usuario = ~/.claude/skills/). Catálogo: explora, ★destaca o ▶ejecuta una vez sin inflar el prompt.",
|
|
1150
|
+
catalogEmpty: "No hay skills de preajuste disponibles.",
|
|
1151
|
+
catalogPresetHeading: "Preajustes",
|
|
1152
|
+
catalogStar: "Destacar",
|
|
1153
|
+
catalogStarred: "Destacada",
|
|
1154
|
+
catalogRunOnce: "Ejecutar una vez",
|
|
1155
|
+
sourceUserTitle: "Skill de usuario (~/.claude/skills/, disponible en todos los espacios)",
|
|
1156
|
+
sourceSystemTitle: "Skill de sistema (incluida, prefijo mc- — solo lectura, sobrescrita por el launcher)",
|
|
1157
|
+
sourceProjectTitle: "Skill del proyecto (.claude/skills/ del workspace, solo este espacio)",
|
|
1158
|
+
sourcePresetTitle: "Catálogo de preajustes — pulsa Destacar para activarla en este espacio",
|
|
1159
|
+
errCatalogListFailed: "Error al cargar el catálogo: {error}",
|
|
1160
|
+
errCatalogStarFailed: "Error al destacar la skill: {error}",
|
|
1161
|
+
errCatalogPreviewFailed: "Error al cargar la vista previa de la skill: {error}",
|
|
1162
|
+
errCatalogRunOnceEmpty: "Esta skill no tiene cuerpo para ejecutar.",
|
|
1163
|
+
catalogAddRepo: "Añadir repositorio de skills",
|
|
1164
|
+
catalogAddRepoTitle: "Añadir un repositorio de skills",
|
|
1165
|
+
catalogRepoUrlLabel: "URL de GitHub",
|
|
1166
|
+
catalogRepoUrlPlaceholder: "https://github.com/owner/repo",
|
|
1167
|
+
catalogRepoSubpathLabel: "Subruta (opcional)",
|
|
1168
|
+
catalogRepoSubpathPlaceholder: "skills",
|
|
1169
|
+
catalogAddRepoSubmit: "Instalar",
|
|
1170
|
+
catalogAddRepoSuggestions: "Repositorios sugeridos",
|
|
1171
|
+
catalogUninstallRepo: "Desinstalar repositorio",
|
|
1172
|
+
catalogUpdateRepo: "Actualizar repositorio (volver a obtener lo último)",
|
|
1173
|
+
catalogRepoOpenLink: "Abrir el repositorio en GitHub (nueva pestaña)",
|
|
1174
|
+
catalogUninstallConfirm: "¿Desinstalar este repositorio? Las skills que ya marcaste con estrella permanecen en tu lista activa.",
|
|
1175
|
+
catalogRepoInstalling: "Instalando…",
|
|
1176
|
+
catalogRepoEmpty: "No se encontraron skills en este repositorio.",
|
|
1177
|
+
sourceExternalTitle: "Skill externa (instalada desde un repositorio de GitHub — pulsa la estrella para activar)",
|
|
1178
|
+
errCatalogRepoListFailed: "No se pudieron cargar los repositorios instalados: {error}",
|
|
1179
|
+
errCatalogRepoInstallFailed: "No se pudo instalar el repositorio: {error}",
|
|
1180
|
+
errCatalogRepoUninstallFailed: "No se pudo desinstalar el repositorio: {error}",
|
|
1181
|
+
errCatalogRepoInvalidUrl: "Introduce una URL de repositorio de GitHub.",
|
|
1089
1182
|
},
|
|
1090
1183
|
pluginManageRoles: {
|
|
1091
1184
|
heading: "Roles personalizados",
|
|
@@ -1140,6 +1233,8 @@ const esMessages = {
|
|
|
1140
1233
|
stop: "■ Detener",
|
|
1141
1234
|
playPresentation: "Reproducir presentación",
|
|
1142
1235
|
regenerateMovie: "Regenerar vídeo",
|
|
1236
|
+
movieGenerationFailed: "Error al generar el vídeo",
|
|
1237
|
+
retry: "Reintentar",
|
|
1143
1238
|
errPrefix: "⚠ Error",
|
|
1144
1239
|
noBeats: "No se encontraron beats en el script",
|
|
1145
1240
|
editSource: "Editar fuente del script",
|
package/src/lang/fr.ts
CHANGED
|
@@ -28,7 +28,7 @@ const frMessages = {
|
|
|
28
28
|
},
|
|
29
29
|
},
|
|
30
30
|
chatInput: {
|
|
31
|
-
placeholder: "
|
|
31
|
+
placeholder: "Message à Claude…",
|
|
32
32
|
send: "Envoyer",
|
|
33
33
|
attachFile: "Joindre un fichier",
|
|
34
34
|
fileTooLarge: "Fichier trop volumineux ({sizeMB} Mo). La limite est de 30 Mo.",
|
|
@@ -68,6 +68,8 @@ const frMessages = {
|
|
|
68
68
|
clearAll: "Tout effacer",
|
|
69
69
|
dismiss: "Ignorer",
|
|
70
70
|
cancel: "Annuler",
|
|
71
|
+
showMore: "Voir plus ({count})",
|
|
72
|
+
showLess: "Réduire",
|
|
71
73
|
},
|
|
72
74
|
pluginDiagnostics: {
|
|
73
75
|
title: "Problème de configuration du plugin",
|
|
@@ -75,6 +77,17 @@ const frMessages = {
|
|
|
75
77
|
intraBody:
|
|
76
78
|
"Les plugins « {first} » et « {second} » enregistrent tous deux le {dimension} « {key} ». « {first} » l'a réclamé en premier, donc l'enregistrement de « {second} » est ignoré.",
|
|
77
79
|
},
|
|
80
|
+
optionalDeps: {
|
|
81
|
+
// `title` générique conservé pour la compatibilité avec les
|
|
82
|
+
// entrées d'historique persistées avant la séparation par motif ;
|
|
83
|
+
// les nouvelles utilisent `titleNotFound` / `titleNotResponding`.
|
|
84
|
+
title: "Dépendance optionnelle indisponible",
|
|
85
|
+
titleNotFound: "{command} n'est pas installé",
|
|
86
|
+
titleNotResponding: "{command} n'est pas en cours d'exécution",
|
|
87
|
+
notFound: "{command} introuvable — les fonctionnalités associées ont été désactivées. Installez {command} et redémarrez MulmoClaude pour les activer.",
|
|
88
|
+
notResponding:
|
|
89
|
+
"{command} est installé mais n'est pas en cours d'exécution — les fonctionnalités associées ont été désactivées. Démarrez {command} et redémarrez MulmoClaude pour les activer.",
|
|
90
|
+
},
|
|
78
91
|
pluginErrorBoundary: {
|
|
79
92
|
title: "Le plugin {pkg} a planté",
|
|
80
93
|
subtitle: "Le plugin n'a pas pu être affiché. L'erreur a été consignée dans la console.",
|
|
@@ -104,6 +117,11 @@ const frMessages = {
|
|
|
104
117
|
error: "Erreur",
|
|
105
118
|
result: "Résultat",
|
|
106
119
|
running: "En cours...",
|
|
120
|
+
mcpHint: {
|
|
121
|
+
title: (ctx: { named: (key: "server") => string }) => `Aide à la configuration : ${ctx.named("server")}`,
|
|
122
|
+
requiredKeys: "Clés requises",
|
|
123
|
+
setupGuide: "Ouvrir le guide de configuration",
|
|
124
|
+
},
|
|
107
125
|
},
|
|
108
126
|
fileTreePane: {
|
|
109
127
|
sort: "Tri :",
|
|
@@ -140,6 +158,7 @@ const frMessages = {
|
|
|
140
158
|
},
|
|
141
159
|
settingsModal: {
|
|
142
160
|
title: "Paramètres",
|
|
161
|
+
version: "MulmoClaude v{version}",
|
|
143
162
|
tabs: {
|
|
144
163
|
gemini: "Clé API Gemini",
|
|
145
164
|
tools: "Outils autorisés",
|
|
@@ -252,15 +271,43 @@ const frMessages = {
|
|
|
252
271
|
errLabelConflict: 'L\'étiquette "{label}" existe déjà',
|
|
253
272
|
},
|
|
254
273
|
pluginLauncher: {
|
|
255
|
-
todos: { label: "Tâches"
|
|
256
|
-
calendar: { label: "Calendrier"
|
|
257
|
-
automations: { label: "Actions"
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
274
|
+
todos: { label: "Tâches" },
|
|
275
|
+
calendar: { label: "Calendrier" },
|
|
276
|
+
automations: { label: "Actions" },
|
|
277
|
+
encore: { label: "Encore" },
|
|
278
|
+
wiki: { label: "Wiki" },
|
|
279
|
+
sources: { label: "Sources" },
|
|
280
|
+
news: { label: "Actualités" },
|
|
281
|
+
skills: { label: "Skills" },
|
|
282
|
+
roles: { label: "Rôles" },
|
|
283
|
+
files: { label: "Fichiers" },
|
|
284
|
+
},
|
|
285
|
+
encoreDashboard: {
|
|
286
|
+
title: "Encore",
|
|
287
|
+
subtitle: "Obligations récurrentes suivies par Encore.",
|
|
288
|
+
loading: "Chargement des obligations…",
|
|
289
|
+
errorPrefix: "Impossible de charger les obligations : ",
|
|
290
|
+
empty: "Aucune obligation pour le moment. Demandez dans le chat pour en configurer une.",
|
|
291
|
+
noCycles: "Aucun cycle enregistré pour le moment.",
|
|
292
|
+
cyclesSuffix: "cycles",
|
|
293
|
+
targetCount: "{count} cible | {count} cibles",
|
|
294
|
+
cycleClosed: "Clos",
|
|
295
|
+
chatButtonTitle: "Discuter de cette obligation dans un nouveau chat",
|
|
296
|
+
bellButtonTitle: "Discuter de ce cycle",
|
|
297
|
+
addButtonLabel: "Ajouter",
|
|
298
|
+
unexpectedResponse: "Encore a renvoyé une réponse inattendue.",
|
|
299
|
+
status: {
|
|
300
|
+
active: "Active",
|
|
301
|
+
paused: "En pause",
|
|
302
|
+
retired: "Retirée",
|
|
303
|
+
},
|
|
304
|
+
cadence: {
|
|
305
|
+
daily: "Quotidienne",
|
|
306
|
+
weekly: "Hebdomadaire",
|
|
307
|
+
monthly: "Mensuelle",
|
|
308
|
+
biannual: "Semestrielle",
|
|
309
|
+
annual: "Annuelle",
|
|
310
|
+
},
|
|
264
311
|
},
|
|
265
312
|
fileContentHeader: {
|
|
266
313
|
showRendered: "Afficher le Markdown rendu",
|
|
@@ -274,6 +321,11 @@ const frMessages = {
|
|
|
274
321
|
htmlPreview: "Aperçu HTML",
|
|
275
322
|
pdfPreview: "Aperçu PDF",
|
|
276
323
|
parseError: "erreur d'analyse",
|
|
324
|
+
editJson: "Modifier le JSON",
|
|
325
|
+
jsonEditorLabel: "Éditeur JSON",
|
|
326
|
+
invalidJson: "JSON invalide",
|
|
327
|
+
undo: "Annuler",
|
|
328
|
+
redo: "Rétablir",
|
|
277
329
|
},
|
|
278
330
|
filesView: {
|
|
279
331
|
chatPlaceholder: "Posez une question sur ce fichier…",
|
|
@@ -388,6 +440,9 @@ const frMessages = {
|
|
|
388
440
|
urlLabel: "URL :",
|
|
389
441
|
commandLabel: "Commande :",
|
|
390
442
|
dockerStdioUnsupported: "⚠ Ne s'exécutera pas lorsque le sandbox Docker est activé.",
|
|
443
|
+
dockerStdioHostExecActive: "⚠ S'exécute sur l'hôte : ce serveur sort du sandbox Docker.",
|
|
444
|
+
dockerStdioHostExecOptIn:
|
|
445
|
+
"Exécuter quand même sur l'hôte (avancé). Ce serveur s'exécute hors du sandbox Docker via une passerelle HTTP locale et peut accéder à votre machine.",
|
|
391
446
|
learnMore: "En savoir plus",
|
|
392
447
|
addServerButton: "+ Ajouter un serveur MCP",
|
|
393
448
|
nameLabel: "Nom",
|
|
@@ -571,6 +626,7 @@ const frMessages = {
|
|
|
571
626
|
yamlParseError: "Impossible d'analyser le YAML — vérifiez que « title » est présent",
|
|
572
627
|
propLabel: "{key} :",
|
|
573
628
|
moreCount: "+{count} de plus",
|
|
629
|
+
invalidRange: "Plage de dates invalide (endDate: {endDate})",
|
|
574
630
|
previewIcon: "📅",
|
|
575
631
|
previewUpcoming: "{count} à venir",
|
|
576
632
|
previewAutomations: "{count} automatisation | {count} automatisations",
|
|
@@ -863,8 +919,9 @@ const frMessages = {
|
|
|
863
919
|
},
|
|
864
920
|
todoKanban: {
|
|
865
921
|
rename: "Renommer",
|
|
866
|
-
alreadyDoneColumn: "Déjà la colonne des terminées",
|
|
867
922
|
markAsDoneColumn: "Définir comme colonne des terminées",
|
|
923
|
+
removeAllItems: "Supprimer tous les éléments",
|
|
924
|
+
removeAllItemsConfirm: "Supprimer les {count} éléments de « {column} » ? Cette action est irréversible.",
|
|
868
925
|
deleteColumn: "Supprimer la colonne",
|
|
869
926
|
columnActions: "Actions de colonne",
|
|
870
927
|
addCard: "+ Ajouter une carte",
|
|
@@ -1080,6 +1137,42 @@ const frMessages = {
|
|
|
1080
1137
|
errSaveFailed: "Échec de l'enregistrement : {error}",
|
|
1081
1138
|
errDeleteFailed: "Échec de la suppression",
|
|
1082
1139
|
confirmDelete: 'Supprimer la skill "{name}" ? Cela retire ~/mulmoclaude/.claude/skills/{name}/SKILL.md.',
|
|
1140
|
+
sectionActive: "Actives",
|
|
1141
|
+
sectionCatalog: "Catalogue",
|
|
1142
|
+
sectionLegend:
|
|
1143
|
+
"Actives : chargées dans le prompt ({system} Système = incluses mc- · {project} Projet = modifiables · {user} Utilisateur = ~/.claude/skills/). Catalogue : parcourez, ★ajoutez aux favoris ou ▶exécutez une fois sans alourdir le prompt.",
|
|
1144
|
+
catalogEmpty: "Aucune skill de préréglage disponible.",
|
|
1145
|
+
catalogPresetHeading: "Préréglages",
|
|
1146
|
+
catalogStar: "Favori",
|
|
1147
|
+
catalogStarred: "Favoris",
|
|
1148
|
+
catalogRunOnce: "Exécuter une fois",
|
|
1149
|
+
sourceUserTitle: "Skill utilisateur (~/.claude/skills/, disponible dans tous les espaces)",
|
|
1150
|
+
sourceSystemTitle: "Skill système (incluse, préfixe mc- — lecture seule, écrasée par le launcher)",
|
|
1151
|
+
sourceProjectTitle: "Skill de projet (.claude/skills/ de l'espace, espace courant uniquement)",
|
|
1152
|
+
sourcePresetTitle: "Catalogue de préréglages — cliquez sur Favori pour activer dans cet espace",
|
|
1153
|
+
errCatalogListFailed: "Échec du chargement du catalogue : {error}",
|
|
1154
|
+
errCatalogStarFailed: "Échec de l'ajout aux favoris : {error}",
|
|
1155
|
+
errCatalogPreviewFailed: "Échec du chargement de l'aperçu : {error}",
|
|
1156
|
+
errCatalogRunOnceEmpty: "Cette skill n'a pas de contenu à exécuter.",
|
|
1157
|
+
catalogAddRepo: "Ajouter un dépôt de skills",
|
|
1158
|
+
catalogAddRepoTitle: "Ajouter un dépôt de skills",
|
|
1159
|
+
catalogRepoUrlLabel: "URL GitHub",
|
|
1160
|
+
catalogRepoUrlPlaceholder: "https://github.com/owner/repo",
|
|
1161
|
+
catalogRepoSubpathLabel: "Sous-chemin (facultatif)",
|
|
1162
|
+
catalogRepoSubpathPlaceholder: "skills",
|
|
1163
|
+
catalogAddRepoSubmit: "Installer",
|
|
1164
|
+
catalogAddRepoSuggestions: "Dépôts suggérés",
|
|
1165
|
+
catalogUninstallRepo: "Désinstaller le dépôt",
|
|
1166
|
+
catalogUpdateRepo: "Mettre à jour le dépôt (récupérer la dernière version)",
|
|
1167
|
+
catalogRepoOpenLink: "Ouvrir le dépôt sur GitHub (nouvel onglet)",
|
|
1168
|
+
catalogUninstallConfirm: "Désinstaller ce dépôt ? Les skills déjà mises en favori restent dans votre liste active.",
|
|
1169
|
+
catalogRepoInstalling: "Installation…",
|
|
1170
|
+
catalogRepoEmpty: "Aucune skill trouvée dans ce dépôt.",
|
|
1171
|
+
sourceExternalTitle: "Skill externe (installée depuis un dépôt GitHub — cliquez sur l'étoile pour activer)",
|
|
1172
|
+
errCatalogRepoListFailed: "Échec du chargement des dépôts installés : {error}",
|
|
1173
|
+
errCatalogRepoInstallFailed: "Échec de l'installation du dépôt : {error}",
|
|
1174
|
+
errCatalogRepoUninstallFailed: "Échec de la désinstallation du dépôt : {error}",
|
|
1175
|
+
errCatalogRepoInvalidUrl: "Saisissez une URL de dépôt GitHub.",
|
|
1083
1176
|
},
|
|
1084
1177
|
pluginManageRoles: {
|
|
1085
1178
|
heading: "Rôles personnalisés",
|
|
@@ -1134,6 +1227,8 @@ const frMessages = {
|
|
|
1134
1227
|
stop: "■ Arrêter",
|
|
1135
1228
|
playPresentation: "Lire la présentation",
|
|
1136
1229
|
regenerateMovie: "Régénérer la vidéo",
|
|
1230
|
+
movieGenerationFailed: "Échec de la génération de la vidéo",
|
|
1231
|
+
retry: "Réessayer",
|
|
1137
1232
|
errPrefix: "⚠ Erreur",
|
|
1138
1233
|
noBeats: "Aucun beat trouvé dans le script",
|
|
1139
1234
|
editSource: "Modifier la source du script",
|