mulmoclaude 0.6.2 → 0.6.3

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.
Files changed (94) hide show
  1. package/README.md +26 -0
  2. package/bin/mulmoclaude.js +11 -1
  3. package/client/assets/chunk-D8eiyYIV-CW0rPbG2.js +1 -0
  4. package/client/assets/{html2canvas-CDGcmOD3-Bkf2uOth.js → html2canvas-CDGcmOD3-BjwfzAN8.js} +1 -1
  5. package/client/assets/index-Bp1owZ-i.js +5101 -0
  6. package/client/assets/index-c63H1pnd.css +2 -0
  7. package/client/assets/{index.es-DqtpmBm8-D9mAh_KQ.js → index.es-DqtpmBm8-DudYPW7R.js} +1 -1
  8. package/client/assets/material-symbols-outlined-C0dZ3SlO.woff2 +0 -0
  9. package/client/assets/runtime-protocol-vue-BUk5WXSy.js +1 -0
  10. package/client/assets/{runtime-vue-BVUzgYGA.js → runtime-vue-fFYhnNg3.js} +1 -1
  11. package/client/assets/{vue-C8UuIO9J.js → vue-Kqzpl9Vx.js} +1 -1
  12. package/client/assets/vue.runtime.esm-bundler-BTyIdNAI.js +4 -0
  13. package/client/index.html +9 -11
  14. package/package.json +5 -4
  15. package/server/agent/backend/claude-code.ts +34 -0
  16. package/server/agent/backend/fake-echo.ts +370 -0
  17. package/server/agent/backend/index.ts +16 -1
  18. package/server/agent/config.ts +8 -1
  19. package/server/agent/mcpFailureMonitor.ts +167 -0
  20. package/server/agent/mcpPreflight.ts +185 -0
  21. package/server/agent/stream.ts +12 -1
  22. package/server/api/routes/mulmo-script.ts +19 -1
  23. package/server/api/routes/schedulerHandlers.ts +52 -4
  24. package/server/api/routes/sessions.ts +15 -0
  25. package/server/api/routes/skills.ts +263 -0
  26. package/server/events/notifications.ts +19 -91
  27. package/server/index.ts +87 -9
  28. package/server/notifier/macosReminderAdapter.ts +30 -0
  29. package/server/system/announceOptionalDeps.ts +50 -0
  30. package/server/system/config.ts +8 -1
  31. package/server/system/docker.ts +14 -6
  32. package/server/system/env.ts +18 -5
  33. package/server/system/optionalDeps.ts +129 -0
  34. package/server/utils/cli-flags.d.mts +14 -0
  35. package/server/utils/cli-flags.mjs +53 -0
  36. package/server/utils/time.ts +6 -0
  37. package/server/workspace/helps/business.md +2 -2
  38. package/server/workspace/helps/mulmoscript.md +3 -3
  39. package/server/workspace/helps/sandbox.md +2 -2
  40. package/server/workspace/hooks/dispatcher.mjs +1 -1
  41. package/server/workspace/paths.ts +13 -4
  42. package/server/workspace/skills/catalog.ts +355 -0
  43. package/server/workspace/skills/external/catalog.ts +283 -0
  44. package/server/workspace/skills/external/clone.ts +129 -0
  45. package/server/workspace/skills/external/id.ts +194 -0
  46. package/server/workspace/skills/external/install.ts +417 -0
  47. package/server/workspace/skills/external/presets.ts +50 -0
  48. package/server/workspace/skills-preset.ts +29 -17
  49. package/server/workspace/workspace.ts +10 -5
  50. package/src/App.vue +19 -8
  51. package/src/components/RightSidebar.vue +19 -0
  52. package/src/components/StackView.vue +10 -1
  53. package/src/config/apiRoutes.ts +0 -6
  54. package/src/config/roles.ts +2 -0
  55. package/src/lang/de.ts +50 -1
  56. package/src/lang/en.ts +49 -1
  57. package/src/lang/es.ts +49 -1
  58. package/src/lang/fr.ts +49 -1
  59. package/src/lang/ja.ts +49 -1
  60. package/src/lang/ko.ts +49 -1
  61. package/src/lang/pt-BR.ts +49 -1
  62. package/src/lang/zh.ts +49 -1
  63. package/src/plugins/manageSkills/View.vue +795 -30
  64. package/src/plugins/manageSkills/categories.ts +125 -0
  65. package/src/plugins/manageSkills/meta.ts +30 -0
  66. package/src/plugins/markdown/definition.ts +3 -3
  67. package/src/plugins/meta-types.ts +5 -0
  68. package/src/plugins/presentMulmoScript/Preview.vue +3 -3
  69. package/src/plugins/presentMulmoScript/View.vue +157 -33
  70. package/src/plugins/presentMulmoScript/meta.ts +4 -0
  71. package/src/plugins/scheduler/View.vue +45 -9
  72. package/src/plugins/scheduler/calendarDefinition.ts +6 -2
  73. package/src/plugins/scheduler/multiDayHelpers.ts +95 -0
  74. package/src/plugins/spreadsheet/View.vue +3 -3
  75. package/src/types/notification.ts +1 -1
  76. package/src/types/session.ts +6 -0
  77. package/src/types/sse.ts +5 -0
  78. package/src/types/toolCallHistory.ts +7 -0
  79. package/src/utils/agent/eventDispatch.ts +26 -5
  80. package/src/utils/agent/mcpHint.ts +50 -0
  81. package/src/utils/session/sessionEntries.ts +8 -32
  82. package/client/assets/PluginScopedRoot-YjvQq0Nn.js +0 -3
  83. package/client/assets/chunk-CernVdwh.js +0 -1
  84. package/client/assets/chunk-D8eiyYIV-CAXpUwLd.js +0 -1
  85. package/client/assets/index-BwrlMMHr.js +0 -5005
  86. package/client/assets/index-CvvNuegU.css +0 -2
  87. package/client/assets/material-symbols-outlined-BOZVWuR3.woff2 +0 -0
  88. package/client/assets/runtime-protocol-vue-C1To4M3t.js +0 -1
  89. package/client/assets/vue.runtime.esm-bundler-DQ8Kjjui.js +0 -4
  90. package/server/api/routes/notifications.ts +0 -195
  91. package/server/notifier/legacy-adapters.ts +0 -76
  92. package/src/composables/useSelectedResult.ts +0 -49
  93. /package/client/assets/{purify.es-Fx1Nqyry-Dwtk-9WZ.js → purify.es-Fx1Nqyry-B3aL7Uvj.js} +0 -0
  94. /package/client/assets/{typeof-DBp4T-Ny-CSr8wx1e.js → typeof-DBp4T-Ny-Bef7RiR_.js} +0 -0
@@ -310,6 +310,8 @@ export const ROLES: Role[] = [
310
310
  TOOL_NAMES.presentDocument,
311
311
  TOOL_NAMES.presentChart,
312
312
  TOOL_NAMES.presentHtml,
313
+ TOOL_NAMES.readXPost,
314
+ TOOL_NAMES.searchX,
313
315
  ],
314
316
  queries: [
315
317
  "Summarise the key risk factors from AAPL's latest 10-K",
package/src/lang/de.ts CHANGED
@@ -28,7 +28,7 @@ const deMessages = {
28
28
  },
29
29
  },
30
30
  chatInput: {
31
- placeholder: "Aufgabe eingeben oder Datei ziehen / einfügen / anhängen…",
31
+ placeholder: "Nachricht an Claude…",
32
32
  send: "Senden",
33
33
  attachFile: "Datei anhängen",
34
34
  fileTooLarge: "Datei zu groß ({sizeMB} MB). Das Maximum beträgt 30 MB.",
@@ -76,6 +76,12 @@ const deMessages = {
76
76
  intraBody:
77
77
  "Die Plugins „{first}“ und „{second}“ registrieren beide {dimension} „{key}“. „{first}“ hat ihn zuerst beansprucht, daher wird die Registrierung von „{second}“ ignoriert.",
78
78
  },
79
+ optionalDeps: {
80
+ title: "Optionale Abhängigkeit nicht verfügbar",
81
+ notFound: "{command} nicht gefunden — zugehörige Funktionen wurden deaktiviert. Installieren Sie es und starten Sie neu, um sie zu aktivieren.",
82
+ notResponding:
83
+ "{command} ist installiert, antwortet aber nicht — zugehörige Funktionen wurden deaktiviert. Starten Sie es und starten Sie neu, um sie zu aktivieren.",
84
+ },
79
85
  pluginErrorBoundary: {
80
86
  title: "Plugin {pkg} ist abgestürzt",
81
87
  subtitle: "Das Plugin konnte nicht gerendert werden. Der Fehler wurde in der Konsole protokolliert.",
@@ -105,6 +111,11 @@ const deMessages = {
105
111
  error: "Fehler",
106
112
  result: "Ergebnis",
107
113
  running: "Läuft...",
114
+ mcpHint: {
115
+ title: (ctx: { named: (key: "server") => string }) => `Einrichtungshinweis: ${ctx.named("server")}`,
116
+ requiredKeys: "Erforderliche Schlüssel",
117
+ setupGuide: "Einrichtungsanleitung öffnen",
118
+ },
108
119
  },
109
120
  fileTreePane: {
110
121
  sort: "Sortieren:",
@@ -579,6 +590,7 @@ const deMessages = {
579
590
  yamlParseError: "YAML konnte nicht geparst werden — stellen Sie sicher, dass 'title' vorhanden ist",
580
591
  propLabel: "{key}:",
581
592
  moreCount: "+{count} weitere",
593
+ invalidRange: "Ungültiger Datumsbereich (endDate: {endDate})",
582
594
  previewIcon: "📅",
583
595
  previewUpcoming: "{count} anstehend",
584
596
  previewAutomations: "{count} Automatisierung | {count} Automatisierungen",
@@ -1089,6 +1101,41 @@ const deMessages = {
1089
1101
  errSaveFailed: "Speichern fehlgeschlagen: {error}",
1090
1102
  errDeleteFailed: "Löschen fehlgeschlagen",
1091
1103
  confirmDelete: 'Skill "{name}" löschen? Dies entfernt ~/mulmoclaude/.claude/skills/{name}/SKILL.md.',
1104
+ sectionActive: "Aktiv",
1105
+ sectionCatalog: "Katalog",
1106
+ sectionLegend:
1107
+ "Aktiv: in den Prompt geladen ({system} System = mc- mitgeliefert · {project} Projekt = bearbeitbar · {user} Benutzer = ~/.claude/skills/). Katalog: durchsuchen, ★markieren oder ▶einmal ausführen, ohne den Prompt aufzublähen.",
1108
+ catalogEmpty: "Keine Preset-Skills verfügbar.",
1109
+ catalogPresetHeading: "Presets",
1110
+ catalogStar: "Markieren",
1111
+ catalogStarred: "Markiert",
1112
+ catalogRunOnce: "Einmalig ausführen",
1113
+ sourceUserTitle: "Benutzer-Skill (~/.claude/skills/, in allen Workspaces verfügbar)",
1114
+ sourceSystemTitle: "System-Skill (mitgeliefert, mc- Präfix — schreibgeschützt, vom Launcher überschrieben)",
1115
+ sourceProjectTitle: "Projekt-Skill (.claude/skills/ des Workspaces, nur dieser Workspace)",
1116
+ sourcePresetTitle: "Preset-Katalog — Markieren anklicken, um in diesem Workspace zu aktivieren",
1117
+ errCatalogListFailed: "Katalog konnte nicht geladen werden: {error}",
1118
+ errCatalogStarFailed: "Skill konnte nicht markiert werden: {error}",
1119
+ errCatalogPreviewFailed: "Skill-Vorschau konnte nicht geladen werden: {error}",
1120
+ errCatalogRunOnceEmpty: "Diese Skill hat keinen Inhalt zum Ausführen.",
1121
+ catalogAddRepo: "Skill-Repository hinzufügen",
1122
+ catalogAddRepoTitle: "Ein Skill-Repository hinzufügen",
1123
+ catalogRepoUrlLabel: "GitHub-URL",
1124
+ catalogRepoUrlPlaceholder: "https://github.com/owner/repo",
1125
+ catalogRepoSubpathLabel: "Unterpfad (optional)",
1126
+ catalogRepoSubpathPlaceholder: "skills",
1127
+ catalogAddRepoSubmit: "Installieren",
1128
+ catalogAddRepoSuggestions: "Vorgeschlagene Repositories",
1129
+ catalogUninstallRepo: "Repository deinstallieren",
1130
+ catalogUpdateRepo: "Repository aktualisieren (neueste Version erneut laden)",
1131
+ catalogUninstallConfirm: "Dieses Repository deinstallieren? Bereits mit Stern markierte Skills bleiben in deiner aktiven Liste.",
1132
+ catalogRepoInstalling: "Installiere…",
1133
+ catalogRepoEmpty: "In diesem Repository wurden keine Skills gefunden.",
1134
+ sourceExternalTitle: "Externe Skill (aus einem GitHub-Repository installiert — zum Aktivieren auf den Stern klicken)",
1135
+ errCatalogRepoListFailed: "Installierte Repositories konnten nicht geladen werden: {error}",
1136
+ errCatalogRepoInstallFailed: "Repository konnte nicht installiert werden: {error}",
1137
+ errCatalogRepoUninstallFailed: "Repository konnte nicht deinstalliert werden: {error}",
1138
+ errCatalogRepoInvalidUrl: "Gib eine GitHub-Repository-URL ein.",
1092
1139
  },
1093
1140
  pluginManageRoles: {
1094
1141
  heading: "Benutzerdefinierte Rollen",
@@ -1143,6 +1190,8 @@ const deMessages = {
1143
1190
  stop: "■ Stoppen",
1144
1191
  playPresentation: "Präsentation abspielen",
1145
1192
  regenerateMovie: "Video neu generieren",
1193
+ movieGenerationFailed: "Videoerstellung fehlgeschlagen",
1194
+ retry: "Erneut versuchen",
1146
1195
  errPrefix: "⚠ Fehler",
1147
1196
  noBeats: "Keine Beats im Skript gefunden",
1148
1197
  editSource: "Skript-Quelle bearbeiten",
package/src/lang/en.ts CHANGED
@@ -50,7 +50,7 @@ const enMessages = {
50
50
  },
51
51
  },
52
52
  chatInput: {
53
- placeholder: "Type a task, or drop / paste / attach a file…",
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.",
@@ -96,6 +96,11 @@ const enMessages = {
96
96
  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
97
  intraBody: 'Plugins "{first}" and "{second}" both register {dimension} "{key}". "{first}" claimed it first, so "{second}"\'s registration is ignored.',
98
98
  },
99
+ optionalDeps: {
100
+ title: "Optional dependency unavailable",
101
+ notFound: "{command} not found — related features are disabled. Install it and restart to enable them.",
102
+ notResponding: "{command} is installed but not responding — related features are disabled. Start it and restart to enable them.",
103
+ },
99
104
  pluginErrorBoundary: {
100
105
  title: "Plugin {pkg} crashed",
101
106
  subtitle: "The plugin failed to render. The error has been logged to the console.",
@@ -125,6 +130,11 @@ const enMessages = {
125
130
  error: "Error",
126
131
  result: "Result",
127
132
  running: "Running...",
133
+ mcpHint: {
134
+ title: (ctx: { named: (key: "server") => string }) => `${ctx.named("server")} setup hint`,
135
+ requiredKeys: "Required keys",
136
+ setupGuide: "Open setup guide",
137
+ },
128
138
  },
129
139
  fileTreePane: {
130
140
  sort: "Sort:",
@@ -592,6 +602,7 @@ const enMessages = {
592
602
  yamlParseError: "Could not parse YAML — ensure 'title' is present",
593
603
  propLabel: "{key}:",
594
604
  moreCount: "+{count} more",
605
+ invalidRange: "Invalid date range (endDate: {endDate})",
595
606
  previewIcon: "📅",
596
607
  previewUpcoming: "{count} upcoming",
597
608
  previewAutomations: "{count} automation | {count} automations",
@@ -1074,6 +1085,41 @@ const enMessages = {
1074
1085
  errSaveFailed: "Save failed: {error}",
1075
1086
  errDeleteFailed: "Failed to delete",
1076
1087
  confirmDelete: 'Delete skill "{name}"? This removes ~/mulmoclaude/.claude/skills/{name}/SKILL.md.',
1088
+ sectionActive: "Active",
1089
+ sectionCatalog: "Catalog",
1090
+ sectionLegend:
1091
+ "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.",
1092
+ catalogEmpty: "No preset skills available.",
1093
+ catalogPresetHeading: "Presets",
1094
+ catalogStar: "Star",
1095
+ catalogStarred: "Starred",
1096
+ catalogRunOnce: "Run once",
1097
+ sourceUserTitle: "User skill (~/.claude/skills/, available in every workspace)",
1098
+ sourceSystemTitle: "System skill (bundled, mc- prefix — read-only, overwritten by the launcher)",
1099
+ sourceProjectTitle: "Project skill (workspace .claude/skills/, this workspace only)",
1100
+ sourcePresetTitle: "Preset catalog — click Star to activate in this workspace",
1101
+ errCatalogListFailed: "Failed to load catalog: {error}",
1102
+ errCatalogStarFailed: "Failed to star skill: {error}",
1103
+ errCatalogPreviewFailed: "Failed to load skill preview: {error}",
1104
+ errCatalogRunOnceEmpty: "This skill has no body to run.",
1105
+ catalogAddRepo: "Add skill repository",
1106
+ catalogAddRepoTitle: "Add a skill repository",
1107
+ catalogRepoUrlLabel: "GitHub URL",
1108
+ catalogRepoUrlPlaceholder: "https://github.com/owner/repo",
1109
+ catalogRepoSubpathLabel: "Subpath (optional)",
1110
+ catalogRepoSubpathPlaceholder: "skills",
1111
+ catalogAddRepoSubmit: "Install",
1112
+ catalogAddRepoSuggestions: "Suggested repositories",
1113
+ catalogUninstallRepo: "Uninstall repository",
1114
+ catalogUpdateRepo: "Update repository (re-fetch latest)",
1115
+ catalogUninstallConfirm: "Uninstall this repository? Skills you already starred stay in your active list.",
1116
+ catalogRepoInstalling: "Installing…",
1117
+ catalogRepoEmpty: "No skills found in this repository.",
1118
+ sourceExternalTitle: "External skill (installed from a GitHub repo — click Star to activate)",
1119
+ errCatalogRepoListFailed: "Failed to load installed repositories: {error}",
1120
+ errCatalogRepoInstallFailed: "Failed to install repository: {error}",
1121
+ errCatalogRepoUninstallFailed: "Failed to uninstall repository: {error}",
1122
+ errCatalogRepoInvalidUrl: "Enter a GitHub repository URL.",
1077
1123
  },
1078
1124
  pluginManageRoles: {
1079
1125
  heading: "Custom Roles",
@@ -1128,6 +1174,8 @@ const enMessages = {
1128
1174
  stop: "■ Stop",
1129
1175
  playPresentation: "Play presentation",
1130
1176
  regenerateMovie: "Regenerate movie",
1177
+ movieGenerationFailed: "Movie generation failed",
1178
+ retry: "Retry",
1131
1179
  errPrefix: "⚠ Error",
1132
1180
  noBeats: "No beats found in script",
1133
1181
  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: "Escribe una tarea, o arrastra / pega / adjunta un archivo…",
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.",
@@ -80,6 +80,11 @@ const esMessages = {
80
80
  intraBody:
81
81
  'Los plugins "{first}" y "{second}" registran ambos el {dimension} "{key}". "{first}" lo reclamó primero, por lo que el registro de "{second}" se ignora.',
82
82
  },
83
+ optionalDeps: {
84
+ title: "Dependencia opcional no disponible",
85
+ notFound: "No se encontró {command} — las funciones relacionadas se han desactivado. Instálalo y reinicia para habilitarlas.",
86
+ notResponding: "{command} está instalado pero no responde — las funciones relacionadas se han desactivado. Inícialo y reinicia para habilitarlas.",
87
+ },
83
88
  pluginErrorBoundary: {
84
89
  title: "El plugin {pkg} se ha bloqueado",
85
90
  subtitle: "El plugin no se pudo renderizar. El error se ha registrado en la consola.",
@@ -109,6 +114,11 @@ const esMessages = {
109
114
  error: "Error",
110
115
  result: "Resultado",
111
116
  running: "Ejecutando...",
117
+ mcpHint: {
118
+ title: (ctx: { named: (key: "server") => string }) => `Ayuda de configuración: ${ctx.named("server")}`,
119
+ requiredKeys: "Claves requeridas",
120
+ setupGuide: "Abrir guía de configuración",
121
+ },
112
122
  },
113
123
  fileTreePane: {
114
124
  sort: "Orden:",
@@ -577,6 +587,7 @@ const esMessages = {
577
587
  yamlParseError: "No se pudo analizar el YAML — asegúrate de que 'title' esté presente",
578
588
  propLabel: "{key}:",
579
589
  moreCount: "+{count} más",
590
+ invalidRange: "Rango de fechas no válido (endDate: {endDate})",
580
591
  previewIcon: "📅",
581
592
  previewUpcoming: "{count} próximos",
582
593
  previewAutomations: "{count} automatización | {count} automatizaciones",
@@ -1086,6 +1097,41 @@ const esMessages = {
1086
1097
  errSaveFailed: "Error al guardar: {error}",
1087
1098
  errDeleteFailed: "Error al eliminar",
1088
1099
  confirmDelete: '¿Eliminar la skill "{name}"? Esto borrará ~/mulmoclaude/.claude/skills/{name}/SKILL.md.',
1100
+ sectionActive: "Activas",
1101
+ sectionCatalog: "Catálogo",
1102
+ sectionLegend:
1103
+ "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.",
1104
+ catalogEmpty: "No hay skills de preajuste disponibles.",
1105
+ catalogPresetHeading: "Preajustes",
1106
+ catalogStar: "Destacar",
1107
+ catalogStarred: "Destacada",
1108
+ catalogRunOnce: "Ejecutar una vez",
1109
+ sourceUserTitle: "Skill de usuario (~/.claude/skills/, disponible en todos los espacios)",
1110
+ sourceSystemTitle: "Skill de sistema (incluida, prefijo mc- — solo lectura, sobrescrita por el launcher)",
1111
+ sourceProjectTitle: "Skill del proyecto (.claude/skills/ del workspace, solo este espacio)",
1112
+ sourcePresetTitle: "Catálogo de preajustes — pulsa Destacar para activarla en este espacio",
1113
+ errCatalogListFailed: "Error al cargar el catálogo: {error}",
1114
+ errCatalogStarFailed: "Error al destacar la skill: {error}",
1115
+ errCatalogPreviewFailed: "Error al cargar la vista previa de la skill: {error}",
1116
+ errCatalogRunOnceEmpty: "Esta skill no tiene cuerpo para ejecutar.",
1117
+ catalogAddRepo: "Añadir repositorio de skills",
1118
+ catalogAddRepoTitle: "Añadir un repositorio de skills",
1119
+ catalogRepoUrlLabel: "URL de GitHub",
1120
+ catalogRepoUrlPlaceholder: "https://github.com/owner/repo",
1121
+ catalogRepoSubpathLabel: "Subruta (opcional)",
1122
+ catalogRepoSubpathPlaceholder: "skills",
1123
+ catalogAddRepoSubmit: "Instalar",
1124
+ catalogAddRepoSuggestions: "Repositorios sugeridos",
1125
+ catalogUninstallRepo: "Desinstalar repositorio",
1126
+ catalogUpdateRepo: "Actualizar repositorio (volver a obtener lo último)",
1127
+ catalogUninstallConfirm: "¿Desinstalar este repositorio? Las skills que ya marcaste con estrella permanecen en tu lista activa.",
1128
+ catalogRepoInstalling: "Instalando…",
1129
+ catalogRepoEmpty: "No se encontraron skills en este repositorio.",
1130
+ sourceExternalTitle: "Skill externa (instalada desde un repositorio de GitHub — pulsa la estrella para activar)",
1131
+ errCatalogRepoListFailed: "No se pudieron cargar los repositorios instalados: {error}",
1132
+ errCatalogRepoInstallFailed: "No se pudo instalar el repositorio: {error}",
1133
+ errCatalogRepoUninstallFailed: "No se pudo desinstalar el repositorio: {error}",
1134
+ errCatalogRepoInvalidUrl: "Introduce una URL de repositorio de GitHub.",
1089
1135
  },
1090
1136
  pluginManageRoles: {
1091
1137
  heading: "Roles personalizados",
@@ -1140,6 +1186,8 @@ const esMessages = {
1140
1186
  stop: "■ Detener",
1141
1187
  playPresentation: "Reproducir presentación",
1142
1188
  regenerateMovie: "Regenerar vídeo",
1189
+ movieGenerationFailed: "Error al generar el vídeo",
1190
+ retry: "Reintentar",
1143
1191
  errPrefix: "⚠ Error",
1144
1192
  noBeats: "No se encontraron beats en el script",
1145
1193
  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: "Saisissez une tâche, ou glissez / collez / joignez un fichier…",
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.",
@@ -75,6 +75,11 @@ const frMessages = {
75
75
  intraBody:
76
76
  "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
77
  },
78
+ optionalDeps: {
79
+ title: "Dépendance optionnelle indisponible",
80
+ notFound: "{command} introuvable — les fonctionnalités associées ont été désactivées. Installez-le et redémarrez pour les activer.",
81
+ notResponding: "{command} est installé mais ne répond pas — les fonctionnalités associées ont été désactivées. Démarrez-le et redémarrez pour les activer.",
82
+ },
78
83
  pluginErrorBoundary: {
79
84
  title: "Le plugin {pkg} a planté",
80
85
  subtitle: "Le plugin n'a pas pu être affiché. L'erreur a été consignée dans la console.",
@@ -104,6 +109,11 @@ const frMessages = {
104
109
  error: "Erreur",
105
110
  result: "Résultat",
106
111
  running: "En cours...",
112
+ mcpHint: {
113
+ title: (ctx: { named: (key: "server") => string }) => `Aide à la configuration : ${ctx.named("server")}`,
114
+ requiredKeys: "Clés requises",
115
+ setupGuide: "Ouvrir le guide de configuration",
116
+ },
107
117
  },
108
118
  fileTreePane: {
109
119
  sort: "Tri :",
@@ -571,6 +581,7 @@ const frMessages = {
571
581
  yamlParseError: "Impossible d'analyser le YAML — vérifiez que « title » est présent",
572
582
  propLabel: "{key} :",
573
583
  moreCount: "+{count} de plus",
584
+ invalidRange: "Plage de dates invalide (endDate: {endDate})",
574
585
  previewIcon: "📅",
575
586
  previewUpcoming: "{count} à venir",
576
587
  previewAutomations: "{count} automatisation | {count} automatisations",
@@ -1080,6 +1091,41 @@ const frMessages = {
1080
1091
  errSaveFailed: "Échec de l'enregistrement : {error}",
1081
1092
  errDeleteFailed: "Échec de la suppression",
1082
1093
  confirmDelete: 'Supprimer la skill "{name}" ? Cela retire ~/mulmoclaude/.claude/skills/{name}/SKILL.md.',
1094
+ sectionActive: "Actives",
1095
+ sectionCatalog: "Catalogue",
1096
+ sectionLegend:
1097
+ "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.",
1098
+ catalogEmpty: "Aucune skill de préréglage disponible.",
1099
+ catalogPresetHeading: "Préréglages",
1100
+ catalogStar: "Favori",
1101
+ catalogStarred: "Favoris",
1102
+ catalogRunOnce: "Exécuter une fois",
1103
+ sourceUserTitle: "Skill utilisateur (~/.claude/skills/, disponible dans tous les espaces)",
1104
+ sourceSystemTitle: "Skill système (incluse, préfixe mc- — lecture seule, écrasée par le launcher)",
1105
+ sourceProjectTitle: "Skill de projet (.claude/skills/ de l'espace, espace courant uniquement)",
1106
+ sourcePresetTitle: "Catalogue de préréglages — cliquez sur Favori pour activer dans cet espace",
1107
+ errCatalogListFailed: "Échec du chargement du catalogue : {error}",
1108
+ errCatalogStarFailed: "Échec de l'ajout aux favoris : {error}",
1109
+ errCatalogPreviewFailed: "Échec du chargement de l'aperçu : {error}",
1110
+ errCatalogRunOnceEmpty: "Cette skill n'a pas de contenu à exécuter.",
1111
+ catalogAddRepo: "Ajouter un dépôt de skills",
1112
+ catalogAddRepoTitle: "Ajouter un dépôt de skills",
1113
+ catalogRepoUrlLabel: "URL GitHub",
1114
+ catalogRepoUrlPlaceholder: "https://github.com/owner/repo",
1115
+ catalogRepoSubpathLabel: "Sous-chemin (facultatif)",
1116
+ catalogRepoSubpathPlaceholder: "skills",
1117
+ catalogAddRepoSubmit: "Installer",
1118
+ catalogAddRepoSuggestions: "Dépôts suggérés",
1119
+ catalogUninstallRepo: "Désinstaller le dépôt",
1120
+ catalogUpdateRepo: "Mettre à jour le dépôt (récupérer la dernière version)",
1121
+ catalogUninstallConfirm: "Désinstaller ce dépôt ? Les skills déjà mises en favori restent dans votre liste active.",
1122
+ catalogRepoInstalling: "Installation…",
1123
+ catalogRepoEmpty: "Aucune skill trouvée dans ce dépôt.",
1124
+ sourceExternalTitle: "Skill externe (installée depuis un dépôt GitHub — cliquez sur l'étoile pour activer)",
1125
+ errCatalogRepoListFailed: "Échec du chargement des dépôts installés : {error}",
1126
+ errCatalogRepoInstallFailed: "Échec de l'installation du dépôt : {error}",
1127
+ errCatalogRepoUninstallFailed: "Échec de la désinstallation du dépôt : {error}",
1128
+ errCatalogRepoInvalidUrl: "Saisissez une URL de dépôt GitHub.",
1083
1129
  },
1084
1130
  pluginManageRoles: {
1085
1131
  heading: "Rôles personnalisés",
@@ -1134,6 +1180,8 @@ const frMessages = {
1134
1180
  stop: "■ Arrêter",
1135
1181
  playPresentation: "Lire la présentation",
1136
1182
  regenerateMovie: "Régénérer la vidéo",
1183
+ movieGenerationFailed: "Échec de la génération de la vidéo",
1184
+ retry: "Réessayer",
1137
1185
  errPrefix: "⚠ Erreur",
1138
1186
  noBeats: "Aucun beat trouvé dans le script",
1139
1187
  editSource: "Modifier la source du script",
package/src/lang/ja.ts CHANGED
@@ -35,7 +35,7 @@ const jaMessages = {
35
35
  },
36
36
  },
37
37
  chatInput: {
38
- placeholder: "タスクを入力、またはファイルをドロップ・ペースト・添付…",
38
+ placeholder: "Claude にメッセージ…",
39
39
  send: "送信",
40
40
  attachFile: "ファイルを添付",
41
41
  fileTooLarge: "ファイルが大きすぎます({sizeMB} MB)。上限は 30 MB です。",
@@ -82,6 +82,11 @@ const jaMessages = {
82
82
  intraBody:
83
83
  "プラグイン「{first}」と「{second}」が同じ {dimension}「{key}」を登録しています。「{first}」が先に確保したため、「{second}」の登録は無視されます。",
84
84
  },
85
+ optionalDeps: {
86
+ title: "任意の依存コマンドを利用できません",
87
+ notFound: "{command} が見つかりません — 関連機能を無効化しました。インストールして再起動すると有効になります。",
88
+ notResponding: "{command} はインストール済みですが応答しません — 関連機能を無効化しました。起動して再起動すると有効になります。",
89
+ },
85
90
  pluginErrorBoundary: {
86
91
  title: "プラグイン {pkg} がクラッシュしました",
87
92
  subtitle: "プラグインのレンダリングに失敗しました。エラーはコンソールに記録されています。",
@@ -111,6 +116,11 @@ const jaMessages = {
111
116
  error: "エラー",
112
117
  result: "結果",
113
118
  running: "実行中...",
119
+ mcpHint: {
120
+ title: (ctx: { named: (key: "server") => string }) => `${ctx.named("server")} のセットアップヒント`,
121
+ requiredKeys: "必要なキー",
122
+ setupGuide: "セットアップガイドを開く",
123
+ },
114
124
  },
115
125
  fileTreePane: {
116
126
  sort: "並び順:",
@@ -568,6 +578,7 @@ const jaMessages = {
568
578
  yamlParseError: "YAML を解析できません — 'title' が含まれているか確認してください",
569
579
  propLabel: "{key}:",
570
580
  moreCount: "他 {count} 件",
581
+ invalidRange: "日付範囲が不正です (endDate: {endDate})",
571
582
  previewIcon: "📅",
572
583
  previewUpcoming: "今後 {count} 件",
573
584
  previewAutomations: "オートメーション {count} 件",
@@ -1075,6 +1086,41 @@ const jaMessages = {
1075
1086
  errSaveFailed: "保存失敗: {error}",
1076
1087
  errDeleteFailed: "削除に失敗しました",
1077
1088
  confirmDelete: "スキル「{name}」を削除しますか? ~/mulmoclaude/.claude/skills/{name}/SKILL.md が削除されます。",
1089
+ sectionActive: "アクティブ",
1090
+ sectionCatalog: "カタログ",
1091
+ sectionLegend:
1092
+ "アクティブ: プロンプトに読み込まれる ({system} システム = mc- 同梱 · {project} プロジェクト = 編集可 · {user} ユーザー = ~/.claude/skills/)。カタログ: プロンプトを肥大化させずに閲覧・★スター・▶今だけ実行ができる。",
1093
+ catalogEmpty: "利用できるプリセットスキルがありません。",
1094
+ catalogPresetHeading: "プリセット",
1095
+ catalogStar: "スター",
1096
+ catalogStarred: "スター済み",
1097
+ catalogRunOnce: "今だけ実行",
1098
+ sourceUserTitle: "ユーザースキル (~/.claude/skills/、全ワークスペース共通)",
1099
+ sourceSystemTitle: "システムスキル (同梱、mc- 接頭辞 — 読み取り専用、launcher 起動時に上書き)",
1100
+ sourceProjectTitle: "プロジェクトスキル (ワークスペース直下の .claude/skills/、このワークスペースのみ)",
1101
+ sourcePresetTitle: "プリセットカタログ — スターでこのワークスペースに有効化",
1102
+ errCatalogListFailed: "カタログの読み込みに失敗しました: {error}",
1103
+ errCatalogStarFailed: "スキルのスター追加に失敗しました: {error}",
1104
+ errCatalogPreviewFailed: "スキルプレビューの読み込みに失敗しました: {error}",
1105
+ errCatalogRunOnceEmpty: "このスキルには実行できる本文がありません。",
1106
+ catalogAddRepo: "スキルリポジトリを追加",
1107
+ catalogAddRepoTitle: "スキルリポジトリを追加",
1108
+ catalogRepoUrlLabel: "GitHub URL",
1109
+ catalogRepoUrlPlaceholder: "https://github.com/owner/repo",
1110
+ catalogRepoSubpathLabel: "サブパス(任意)",
1111
+ catalogRepoSubpathPlaceholder: "skills",
1112
+ catalogAddRepoSubmit: "インストール",
1113
+ catalogAddRepoSuggestions: "おすすめリポジトリ",
1114
+ catalogUninstallRepo: "リポジトリをアンインストール",
1115
+ catalogUpdateRepo: "リポジトリを更新(最新を再取得)",
1116
+ catalogUninstallConfirm: "このリポジトリをアンインストールしますか? すでに★したスキルはアクティブ一覧に残ります。",
1117
+ catalogRepoInstalling: "インストール中…",
1118
+ catalogRepoEmpty: "このリポジトリにスキルが見つかりません。",
1119
+ sourceExternalTitle: "外部スキル(GitHub リポジトリからインストール — ★ で有効化)",
1120
+ errCatalogRepoListFailed: "インストール済みリポジトリの読み込みに失敗しました: {error}",
1121
+ errCatalogRepoInstallFailed: "リポジトリのインストールに失敗しました: {error}",
1122
+ errCatalogRepoUninstallFailed: "リポジトリのアンインストールに失敗しました: {error}",
1123
+ errCatalogRepoInvalidUrl: "GitHub リポジトリの URL を入力してください。",
1078
1124
  },
1079
1125
  pluginManageRoles: {
1080
1126
  heading: "カスタムロール",
@@ -1129,6 +1175,8 @@ const jaMessages = {
1129
1175
  stop: "■ 停止",
1130
1176
  playPresentation: "プレゼンテーション再生",
1131
1177
  regenerateMovie: "動画を再生成",
1178
+ movieGenerationFailed: "動画の生成に失敗しました",
1179
+ retry: "再試行",
1132
1180
  errPrefix: "⚠ エラー",
1133
1181
  noBeats: "スクリプトにビートが見つかりません",
1134
1182
  editSource: "スクリプトソースを編集",
package/src/lang/ko.ts CHANGED
@@ -35,7 +35,7 @@ const koMessages = {
35
35
  },
36
36
  },
37
37
  chatInput: {
38
- placeholder: "작업을 입력하거나 파일을 드래그 / 붙여넣기 / 첨부하세요…",
38
+ placeholder: "Claude에게 메시지…",
39
39
  send: "전송",
40
40
  attachFile: "파일 첨부",
41
41
  fileTooLarge: "파일이 너무 큽니다 ({sizeMB} MB). 최대 30 MB 까지 가능합니다.",
@@ -83,6 +83,11 @@ const koMessages = {
83
83
  intraBody:
84
84
  '플러그인 "{first}"과(와) "{second}"이(가) 동일한 {dimension} "{key}"을(를) 등록합니다. "{first}"이(가) 먼저 등록했으므로 "{second}"의 등록은 무시됩니다.',
85
85
  },
86
+ optionalDeps: {
87
+ title: "선택적 의존성을 사용할 수 없습니다",
88
+ notFound: "{command}을(를) 찾을 수 없습니다 — 관련 기능이 비활성화되었습니다. 설치 후 재시작하면 활성화됩니다.",
89
+ notResponding: "{command}이(가) 설치되어 있지만 응답하지 않습니다 — 관련 기능이 비활성화되었습니다. 시작한 후 재시작하면 활성화됩니다.",
90
+ },
86
91
  pluginErrorBoundary: {
87
92
  title: "플러그인 {pkg}이(가) 충돌했습니다",
88
93
  subtitle: "플러그인 렌더링에 실패했습니다. 오류가 콘솔에 기록되었습니다.",
@@ -112,6 +117,11 @@ const koMessages = {
112
117
  error: "오류",
113
118
  result: "결과",
114
119
  running: "실행 중...",
120
+ mcpHint: {
121
+ title: (ctx: { named: (key: "server") => string }) => `${ctx.named("server")} 설정 도움말`,
122
+ requiredKeys: "필수 키",
123
+ setupGuide: "설정 가이드 열기",
124
+ },
115
125
  },
116
126
  fileTreePane: {
117
127
  sort: "정렬:",
@@ -568,6 +578,7 @@ const koMessages = {
568
578
  yamlParseError: "YAML 을 파싱할 수 없습니다 — 'title' 이 포함되어 있는지 확인하세요",
569
579
  propLabel: "{key}:",
570
580
  moreCount: "+{count}개 더",
581
+ invalidRange: "잘못된 날짜 범위 (endDate: {endDate})",
571
582
  previewIcon: "📅",
572
583
  previewUpcoming: "예정 {count}개",
573
584
  previewAutomations: "자동화 {count}개",
@@ -1075,6 +1086,41 @@ const koMessages = {
1075
1086
  errSaveFailed: "저장 실패: {error}",
1076
1087
  errDeleteFailed: "삭제 실패",
1077
1088
  confirmDelete: '스킬 "{name}" 을(를) 삭제할까요? ~/mulmoclaude/.claude/skills/{name}/SKILL.md 가 제거됩니다.',
1089
+ sectionActive: "활성",
1090
+ sectionCatalog: "카탈로그",
1091
+ sectionLegend:
1092
+ "활성: 프롬프트에 로드됨 ({system} 시스템 = mc- 동봉 · {project} 프로젝트 = 편집 가능 · {user} 사용자 = ~/.claude/skills/). 카탈로그: 프롬프트를 키우지 않고 살펴보거나 ★별 표시 또는 ▶한 번만 실행할 수 있습니다.",
1093
+ catalogEmpty: "사용 가능한 프리셋 스킬이 없습니다.",
1094
+ catalogPresetHeading: "프리셋",
1095
+ catalogStar: "별 표시",
1096
+ catalogStarred: "별 표시됨",
1097
+ catalogRunOnce: "한 번만 실행",
1098
+ sourceUserTitle: "사용자 스킬 (~/.claude/skills/, 모든 워크스페이스 공통)",
1099
+ sourceSystemTitle: "시스템 스킬 (동봉, mc- 접두사 — 읽기 전용, 런처 부팅 시 덮어씀)",
1100
+ sourceProjectTitle: "프로젝트 스킬 (워크스페이스 .claude/skills/, 이 워크스페이스 전용)",
1101
+ sourcePresetTitle: "프리셋 카탈로그 — 별 표시를 눌러 이 워크스페이스에 활성화",
1102
+ errCatalogListFailed: "카탈로그를 불러오지 못했습니다: {error}",
1103
+ errCatalogStarFailed: "스킬에 별 표시를 추가하지 못했습니다: {error}",
1104
+ errCatalogPreviewFailed: "스킬 미리보기를 불러오지 못했습니다: {error}",
1105
+ errCatalogRunOnceEmpty: "이 스킬에는 실행할 본문이 없습니다.",
1106
+ catalogAddRepo: "스킬 저장소 추가",
1107
+ catalogAddRepoTitle: "스킬 저장소 추가",
1108
+ catalogRepoUrlLabel: "GitHub URL",
1109
+ catalogRepoUrlPlaceholder: "https://github.com/owner/repo",
1110
+ catalogRepoSubpathLabel: "하위 경로 (선택)",
1111
+ catalogRepoSubpathPlaceholder: "skills",
1112
+ catalogAddRepoSubmit: "설치",
1113
+ catalogAddRepoSuggestions: "추천 저장소",
1114
+ catalogUninstallRepo: "저장소 제거",
1115
+ catalogUpdateRepo: "저장소 업데이트(최신 다시 가져오기)",
1116
+ catalogUninstallConfirm: "이 저장소를 제거할까요? 이미 별표한 스킬은 활성 목록에 남습니다.",
1117
+ catalogRepoInstalling: "설치 중…",
1118
+ catalogRepoEmpty: "이 저장소에서 스킬을 찾을 수 없습니다.",
1119
+ sourceExternalTitle: "외부 스킬 (GitHub 저장소에서 설치 — 별표로 활성화)",
1120
+ errCatalogRepoListFailed: "설치된 저장소를 불러오지 못했습니다: {error}",
1121
+ errCatalogRepoInstallFailed: "저장소 설치에 실패했습니다: {error}",
1122
+ errCatalogRepoUninstallFailed: "저장소 제거에 실패했습니다: {error}",
1123
+ errCatalogRepoInvalidUrl: "GitHub 저장소 URL을 입력하세요.",
1078
1124
  },
1079
1125
  pluginManageRoles: {
1080
1126
  heading: "커스텀 역할",
@@ -1129,6 +1175,8 @@ const koMessages = {
1129
1175
  stop: "■ 정지",
1130
1176
  playPresentation: "프레젠테이션 재생",
1131
1177
  regenerateMovie: "동영상 재생성",
1178
+ movieGenerationFailed: "동영상 생성에 실패했습니다",
1179
+ retry: "다시 시도",
1132
1180
  errPrefix: "⚠ 오류",
1133
1181
  noBeats: "스크립트에서 비트를 찾을 수 없습니다",
1134
1182
  editSource: "스크립트 원본 편집",
package/src/lang/pt-BR.ts CHANGED
@@ -28,7 +28,7 @@ const ptBRMessages = {
28
28
  },
29
29
  },
30
30
  chatInput: {
31
- placeholder: "Digite uma tarefa ou arraste / cole / anexe um arquivo…",
31
+ placeholder: "Mensagem para Claude…",
32
32
  send: "Enviar",
33
33
  attachFile: "Anexar arquivo",
34
34
  fileTooLarge: "Arquivo muito grande ({sizeMB} MB). O limite é 30 MB.",
@@ -75,6 +75,11 @@ const ptBRMessages = {
75
75
  intraBody:
76
76
  'Os plugins "{first}" e "{second}" registram o mesmo {dimension} "{key}". "{first}" o reivindicou primeiro, portanto o registro de "{second}" é ignorado.',
77
77
  },
78
+ optionalDeps: {
79
+ title: "Dependência opcional indisponível",
80
+ notFound: "{command} não encontrado — recursos relacionados foram desativados. Instale-o e reinicie para habilitá-los.",
81
+ notResponding: "{command} está instalado mas não responde — recursos relacionados foram desativados. Inicie-o e reinicie para habilitá-los.",
82
+ },
78
83
  pluginErrorBoundary: {
79
84
  title: "O plugin {pkg} travou",
80
85
  subtitle: "O plugin falhou ao renderizar. O erro foi registrado no console.",
@@ -104,6 +109,11 @@ const ptBRMessages = {
104
109
  error: "Erro",
105
110
  result: "Resultado",
106
111
  running: "Executando...",
112
+ mcpHint: {
113
+ title: (ctx: { named: (key: "server") => string }) => `Dica de configuração: ${ctx.named("server")}`,
114
+ requiredKeys: "Chaves obrigatórias",
115
+ setupGuide: "Abrir guia de configuração",
116
+ },
107
117
  },
108
118
  fileTreePane: {
109
119
  sort: "Ordenar:",
@@ -570,6 +580,7 @@ const ptBRMessages = {
570
580
  yamlParseError: "Não foi possível analisar o YAML — verifique se 'title' está presente",
571
581
  propLabel: "{key}:",
572
582
  moreCount: "+{count} mais",
583
+ invalidRange: "Intervalo de datas inválido (endDate: {endDate})",
573
584
  previewIcon: "📅",
574
585
  previewUpcoming: "{count} próximos",
575
586
  previewAutomations: "{count} automação | {count} automações",
@@ -1075,6 +1086,41 @@ const ptBRMessages = {
1075
1086
  errSaveFailed: "Falha ao salvar: {error}",
1076
1087
  errDeleteFailed: "Falha ao excluir",
1077
1088
  confirmDelete: 'Excluir a skill "{name}"? Isso remove ~/mulmoclaude/.claude/skills/{name}/SKILL.md.',
1089
+ sectionActive: "Ativas",
1090
+ sectionCatalog: "Catálogo",
1091
+ sectionLegend:
1092
+ "Ativas: carregadas no prompt ({system} Sistema = inclusas mc- · {project} Projeto = editáveis · {user} Usuário = ~/.claude/skills/). Catálogo: explore, ★favorite ou ▶execute uma vez sem inflar o prompt.",
1093
+ catalogEmpty: "Nenhuma skill de preset disponível.",
1094
+ catalogPresetHeading: "Presets",
1095
+ catalogStar: "Favoritar",
1096
+ catalogStarred: "Favoritada",
1097
+ catalogRunOnce: "Executar uma vez",
1098
+ sourceUserTitle: "Skill do usuário (~/.claude/skills/, disponível em todos os workspaces)",
1099
+ sourceSystemTitle: "Skill de sistema (inclusa, prefixo mc- — somente leitura, sobrescrita pelo launcher)",
1100
+ sourceProjectTitle: "Skill do projeto (.claude/skills/ do workspace, apenas este workspace)",
1101
+ sourcePresetTitle: "Catálogo de presets — clique em Favoritar para ativar neste workspace",
1102
+ errCatalogListFailed: "Falha ao carregar o catálogo: {error}",
1103
+ errCatalogStarFailed: "Falha ao favoritar a skill: {error}",
1104
+ errCatalogPreviewFailed: "Falha ao carregar a pré-visualização da skill: {error}",
1105
+ errCatalogRunOnceEmpty: "Esta skill não tem corpo para executar.",
1106
+ catalogAddRepo: "Adicionar repositório de skills",
1107
+ catalogAddRepoTitle: "Adicionar um repositório de skills",
1108
+ catalogRepoUrlLabel: "URL do GitHub",
1109
+ catalogRepoUrlPlaceholder: "https://github.com/owner/repo",
1110
+ catalogRepoSubpathLabel: "Subcaminho (opcional)",
1111
+ catalogRepoSubpathPlaceholder: "skills",
1112
+ catalogAddRepoSubmit: "Instalar",
1113
+ catalogAddRepoSuggestions: "Repositórios sugeridos",
1114
+ catalogUninstallRepo: "Desinstalar repositório",
1115
+ catalogUpdateRepo: "Atualizar repositório (rebuscar o mais recente)",
1116
+ catalogUninstallConfirm: "Desinstalar este repositório? As skills que você já marcou com estrela permanecem na sua lista ativa.",
1117
+ catalogRepoInstalling: "Instalando…",
1118
+ catalogRepoEmpty: "Nenhuma skill encontrada neste repositório.",
1119
+ sourceExternalTitle: "Skill externa (instalada de um repositório do GitHub — clique na estrela para ativar)",
1120
+ errCatalogRepoListFailed: "Falha ao carregar os repositórios instalados: {error}",
1121
+ errCatalogRepoInstallFailed: "Falha ao instalar o repositório: {error}",
1122
+ errCatalogRepoUninstallFailed: "Falha ao desinstalar o repositório: {error}",
1123
+ errCatalogRepoInvalidUrl: "Informe uma URL de repositório do GitHub.",
1078
1124
  },
1079
1125
  pluginManageRoles: {
1080
1126
  heading: "Papéis personalizados",
@@ -1129,6 +1175,8 @@ const ptBRMessages = {
1129
1175
  stop: "■ Parar",
1130
1176
  playPresentation: "Reproduzir apresentação",
1131
1177
  regenerateMovie: "Regenerar vídeo",
1178
+ movieGenerationFailed: "Falha ao gerar o vídeo",
1179
+ retry: "Tentar novamente",
1132
1180
  errPrefix: "⚠ Erro",
1133
1181
  noBeats: "Nenhum beat encontrado no script",
1134
1182
  editSource: "Editar fonte do script",