mulmoclaude 0.5.2 → 0.6.0
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/Dockerfile.sandbox +100 -0
- package/README.md +17 -4
- package/bin/mulmoclaude.js +46 -15
- package/bin/prepare-dist.js +18 -2
- package/client/assets/chunk-CernVdwh.js +1 -0
- package/client/assets/chunk-D8eiyYIV-C1eAZMzz.js +1 -0
- package/client/assets/html2canvas-CDGcmOD3-BbPeutDg.js +5 -0
- package/client/assets/index-BbgSjFQ8.js +4968 -0
- package/client/assets/index-ECD0lgIv.css +2 -0
- package/client/assets/{index.es-D4YyL_Dg-BgT6a3Nd.js → index.es-DqtpmBm8-DJdTPdnc.js} +5 -5
- package/client/assets/material-symbols-outlined-BLDfUw-_.woff2 +0 -0
- package/client/assets/runtime-protocol-vue-6WYa8hAs.js +1 -0
- package/client/assets/runtime-vue-BVUzgYGA.js +1 -0
- package/client/assets/typeof-DBp4T-Ny-C2xoZtcz.js +1 -0
- package/client/assets/vue-1e_vz2LW.js +1 -0
- package/client/assets/vue.runtime.esm-bundler-DQ8Kjjui.js +4 -0
- package/client/index.html +33 -2
- package/package.json +20 -18
- package/sandbox-entrypoint.sh +106 -0
- package/server/accounting/accountNormalize.ts +32 -0
- package/server/accounting/defaultAccounts.ts +87 -0
- package/server/accounting/eventPublisher.ts +51 -0
- package/server/accounting/journal.ts +252 -0
- package/server/accounting/openingBalances.ts +114 -0
- package/server/accounting/report.ts +237 -0
- package/server/accounting/service.ts +718 -0
- package/server/accounting/snapshotCache.ts +333 -0
- package/server/accounting/timeSeries.ts +265 -0
- package/server/accounting/types.ts +148 -0
- package/server/agent/activeTools.ts +128 -0
- package/server/agent/attachmentConverter.ts +10 -5
- package/server/agent/backend/claude-code.ts +8 -2
- package/server/agent/backend/types.ts +1 -1
- package/server/agent/config.ts +101 -31
- package/server/agent/index.ts +45 -33
- package/server/agent/mcp-server.ts +146 -69
- package/server/agent/mcp-tools/index.ts +1 -5
- package/server/agent/mcp-tools/notify.ts +2 -22
- package/server/agent/mcp-tools/x.ts +0 -4
- package/server/agent/mcpHealth.ts +168 -0
- package/server/agent/plugin-names.ts +20 -77
- package/server/agent/prompt.ts +259 -51
- package/server/agent/resumeFailover.ts +1 -1
- package/server/agent/stream.ts +0 -1
- package/server/api/auth/bearerAuth.ts +5 -5
- package/server/api/csrfGuard.ts +1 -1
- package/server/api/routes/accounting.ts +366 -0
- package/server/api/routes/agent.ts +509 -46
- package/server/api/routes/attachment.ts +104 -0
- package/server/api/routes/chart.ts +2 -1
- package/server/api/routes/config.ts +12 -12
- package/server/api/routes/files.ts +105 -48
- package/server/api/routes/image.ts +70 -25
- package/server/api/routes/journal.ts +35 -0
- package/server/api/routes/mulmo-script.ts +358 -118
- package/server/api/routes/mulmoScriptValidate.ts +1 -1
- package/server/api/routes/news.ts +1 -1
- package/server/api/routes/notifications.ts +92 -22
- package/server/api/routes/notifier.ts +98 -0
- package/server/api/routes/pdf.ts +188 -48
- package/server/api/routes/plugins.ts +34 -14
- package/server/api/routes/presentHtml.ts +58 -3
- package/server/api/routes/roles.ts +1 -8
- package/server/api/routes/runtime-plugin.ts +224 -0
- package/server/api/routes/scheduler.ts +7 -5
- package/server/api/routes/schedulerHandlers.ts +1 -1
- package/server/api/routes/schedulerTasks.ts +8 -7
- package/server/api/routes/sessions.ts +234 -121
- package/server/api/routes/skills.ts +56 -51
- package/server/api/routes/sources.ts +52 -45
- package/server/api/routes/translation.ts +44 -0
- package/server/api/routes/wiki/frontmatter.ts +13 -65
- package/server/api/routes/wiki/history.ts +261 -0
- package/server/api/routes/wiki/pageIndex.ts +1 -1
- package/server/api/routes/wiki.ts +50 -26
- package/server/events/file-change.ts +83 -0
- package/server/events/notifications.ts +247 -91
- package/server/events/pub-sub/index.ts +1 -1
- package/server/events/relay-client.ts +5 -5
- package/server/events/scheduler-adapter.ts +2 -2
- package/server/events/session-store/index.ts +110 -22
- package/server/events/task-manager/index.ts +10 -9
- package/server/index.ts +509 -33
- package/server/notifier/engine.ts +419 -0
- package/server/notifier/legacy-adapters.ts +76 -0
- package/server/notifier/runtime-api.ts +74 -0
- package/server/notifier/store.ts +70 -0
- package/server/notifier/types.ts +121 -0
- package/server/plugins/dev-loader.ts +171 -0
- package/server/plugins/dev-watcher.ts +150 -0
- package/server/plugins/diagnostics.ts +188 -0
- package/server/plugins/preset-list.ts +52 -0
- package/server/plugins/preset-loader.ts +112 -0
- package/server/plugins/runtime-chat-api.ts +38 -0
- package/server/plugins/runtime-loader.ts +430 -0
- package/server/plugins/runtime-registry.ts +112 -0
- package/server/plugins/runtime-tasks-api.ts +50 -0
- package/server/plugins/runtime.ts +378 -0
- package/server/services/translation/cache.ts +72 -0
- package/server/services/translation/index.ts +106 -0
- package/server/services/translation/llm.ts +140 -0
- package/server/services/translation/types.ts +35 -0
- package/server/system/credentials.ts +13 -2
- package/server/system/env.ts +6 -1
- package/server/system/logger/formatters.ts +46 -4
- package/server/system/logger/index.ts +4 -4
- package/server/system/logger/sinks.ts +26 -5
- package/server/system/logger/types.ts +2 -2
- package/server/utils/dev-plugin-args.d.mts +11 -0
- package/server/utils/dev-plugin-args.mjs +43 -0
- package/server/utils/errors.ts +13 -4
- package/server/utils/files/accounting-io.ts +295 -0
- package/server/utils/files/atomic.ts +17 -49
- package/server/utils/files/attachment-store.ts +182 -0
- package/server/utils/files/html-io.ts +1 -7
- package/server/utils/files/html-store.ts +19 -0
- package/server/utils/files/image-store.ts +20 -22
- package/server/utils/files/index.ts +5 -15
- package/server/utils/files/journal-io.ts +7 -35
- package/server/utils/files/json.ts +2 -29
- package/server/utils/files/markdown-image-fill.ts +6 -37
- package/server/utils/files/markdown-store.ts +6 -21
- package/server/utils/files/naming.ts +3 -39
- package/server/utils/files/plugins-io.ts +100 -0
- package/server/utils/files/reference-dirs-io.ts +1 -9
- package/server/utils/files/roles-io.ts +2 -10
- package/server/utils/files/safe.ts +17 -19
- package/server/utils/files/scheduler-io.ts +1 -7
- package/server/utils/files/scheduler-overrides-io.ts +3 -12
- package/server/utils/files/session-io.ts +21 -30
- package/server/utils/files/spreadsheet-store.ts +9 -22
- package/server/utils/files/translation-io.ts +46 -0
- package/server/utils/files/user-tasks-io.ts +1 -7
- package/server/utils/files/workspace-io.ts +3 -79
- package/server/utils/gemini.ts +33 -11
- package/server/utils/html/htmlArtifactSplicer.ts +41 -0
- package/server/utils/markdown/frontmatter.ts +112 -0
- package/server/utils/regex.ts +56 -0
- package/server/utils/router.ts +41 -0
- package/server/utils/slug.ts +5 -3
- package/server/utils/time.ts +12 -0
- package/server/workspace/chat-index/indexer.ts +15 -2
- package/server/workspace/chat-index/summarizer.ts +1 -1
- package/server/workspace/custom-dirs.ts +1 -1
- package/server/workspace/helps/gemini.md +1 -1
- package/server/workspace/helps/guide.md +61 -0
- package/server/workspace/helps/index.md +4 -0
- package/server/workspace/helps/presenthtml.md +80 -0
- package/server/workspace/helps/sandbox.md +7 -0
- package/server/workspace/helps/storyteller.md +101 -0
- package/server/workspace/helps/telegram.md +1 -0
- package/server/workspace/helps/wiki.md +9 -7
- package/server/workspace/journal/archivist-cli.ts +7 -33
- package/server/workspace/journal/archivist-schemas.ts +5 -43
- package/server/workspace/journal/dailyPass.ts +34 -187
- package/server/workspace/journal/diff.ts +3 -28
- package/server/workspace/journal/index.ts +10 -81
- package/server/workspace/journal/indexFile.ts +3 -24
- package/server/workspace/journal/latestDaily.ts +51 -0
- package/server/workspace/journal/memoryExtractor.ts +4 -20
- package/server/workspace/journal/optimizationPass.ts +4 -21
- package/server/workspace/journal/paths.ts +4 -23
- package/server/workspace/journal/state.ts +6 -29
- package/server/workspace/memory/io.ts +213 -0
- package/server/workspace/memory/llm-classifier.ts +158 -0
- package/server/workspace/memory/migrate.ts +263 -0
- package/server/workspace/memory/run.ts +84 -0
- package/server/workspace/memory/topic-cluster.ts +218 -0
- package/server/workspace/memory/topic-detect.ts +67 -0
- package/server/workspace/memory/topic-index-hook.ts +128 -0
- package/server/workspace/memory/topic-io.ts +180 -0
- package/server/workspace/memory/topic-migrate.ts +248 -0
- package/server/workspace/memory/topic-run.ts +172 -0
- package/server/workspace/memory/topic-swap.ts +135 -0
- package/server/workspace/memory/topic-types.ts +142 -0
- package/server/workspace/memory/types.ts +83 -0
- package/server/workspace/news/reader.ts +4 -5
- package/server/workspace/paths.ts +124 -47
- package/server/workspace/roles.ts +2 -11
- package/server/workspace/skills/parser.ts +38 -55
- package/server/workspace/skills/user-tasks.ts +1 -2
- package/server/workspace/skills-preset/mc-library/SKILL.md +188 -0
- package/server/workspace/skills-preset.ts +196 -0
- package/server/workspace/sources/fetchers/githubIssues.ts +13 -11
- package/server/workspace/sources/fetchers/index.ts +1 -1
- package/server/workspace/sources/fetchers/rssParser.ts +1 -1
- package/server/workspace/sources/pipeline/index.ts +2 -2
- package/server/workspace/sources/pipeline/notify.ts +3 -3
- package/server/workspace/sources/pipeline/write.ts +2 -2
- package/server/workspace/sources/registry.ts +39 -61
- package/server/workspace/sources/robots.ts +1 -1
- package/server/workspace/tool-trace/classify.ts +2 -1
- package/server/workspace/tool-trace/index.ts +1 -1
- package/server/workspace/tool-trace/writeSearch.ts +6 -1
- package/server/workspace/wiki-backlinks/index.ts +19 -7
- package/server/workspace/wiki-backlinks/sessionBacklinks.ts +1 -0
- package/server/workspace/wiki-history/hook/snapshot.mjs +98 -0
- package/server/workspace/wiki-history/hook/snapshot.ts +135 -0
- package/server/workspace/wiki-history/provision.ts +181 -0
- package/server/workspace/wiki-pages/io.ts +217 -0
- package/server/workspace/wiki-pages/snapshot.ts +380 -0
- package/server/workspace/workspace.ts +75 -13
- package/src/App.vue +115 -40
- package/src/_runtime/protocol-vue.ts +21 -0
- package/src/_runtime/vue.ts +22 -0
- package/src/components/ChatInput.vue +14 -10
- package/src/components/CopyChatButton.vue +76 -0
- package/src/components/FileContentRenderer.vue +67 -14
- package/src/components/FileTree.vue +2 -2
- package/src/components/FilesView.vue +17 -1
- package/src/components/NewsView.vue +16 -2
- package/src/components/NotificationBell.vue +320 -93
- package/src/components/PageChatComposer.vue +5 -4
- package/src/components/PluginLauncher.vue +42 -6
- package/src/components/PluginScopedRoot.vue +87 -0
- package/src/components/RoleSelector.vue +12 -1
- package/src/components/RolesView.vue +562 -0
- package/src/components/SentAttachmentChip.vue +102 -0
- package/src/components/SessionHistoryPanel.vue +109 -20
- package/src/components/SessionRoleIcon.vue +7 -4
- package/src/components/SessionSidebar.vue +20 -7
- package/src/components/SessionTabBar.vue +1 -1
- package/src/components/SettingsMcpTab.vue +4 -4
- package/src/components/SettingsModal.vue +2 -0
- package/src/components/SidebarHeader.vue +16 -5
- package/src/components/SourcesManager.vue +23 -9
- package/src/components/SourcesView.vue +1 -1
- package/src/components/StackView.vue +102 -6
- package/src/components/SuggestionsPanel.vue +105 -16
- package/src/components/SystemFileBanner.vue +1 -1
- package/src/components/TodoExplorer.vue +4 -5
- package/src/components/todo/TodoAddDialog.vue +2 -3
- package/src/components/todo/TodoEditDialog.vue +1 -2
- package/src/components/todo/TodoEditPanel.vue +2 -3
- package/src/components/todo/TodoKanbanView.vue +8 -5
- package/src/components/todo/TodoListView.vue +3 -5
- package/src/components/todo/TodoTableView.vue +7 -5
- package/src/composables/useAccountingChannel.ts +58 -0
- package/src/composables/useActiveSession.ts +4 -25
- package/src/composables/useAppApi.ts +6 -44
- package/src/composables/useClipboardCopy.ts +3 -20
- package/src/composables/useContentDisplay.ts +33 -2
- package/src/composables/useDevPluginReload.ts +23 -0
- package/src/composables/useDynamicFavicon.ts +5 -31
- package/src/composables/useEventListeners.ts +0 -20
- package/src/composables/useExpandedDirs.ts +4 -15
- package/src/composables/useFaviconState.ts +12 -46
- package/src/composables/useFileChange.ts +53 -0
- package/src/composables/useFreshPluginData.ts +6 -43
- package/src/composables/useHealth.ts +14 -43
- package/src/composables/useImageErrorRepair.ts +104 -0
- package/src/composables/useLatestDaily.ts +40 -0
- package/src/composables/useMarkdownDoc.ts +39 -0
- package/src/composables/useMarkdownLinkHandler.ts +1 -1
- package/src/composables/useMcpTools.ts +3 -16
- package/src/composables/useNotifications.ts +138 -112
- package/src/composables/usePdfDownload.ts +17 -3
- package/src/composables/usePendingCalls.ts +8 -26
- package/src/composables/usePluginErrorBoundary.ts +68 -0
- package/src/composables/usePubSub.ts +9 -17
- package/src/composables/useRunElapsed.ts +5 -22
- package/src/composables/useSandboxStatus.ts +4 -20
- package/src/composables/useSessionDerived.ts +7 -15
- package/src/composables/useSessionHistory.ts +70 -29
- package/src/composables/useSessionSync.ts +25 -3
- package/src/composables/useSkillsList.ts +59 -0
- package/src/composables/useTranslatedQueries.ts +109 -0
- package/src/config/apiRoutes.ts +181 -80
- package/src/config/historyFilters.ts +5 -3
- package/src/config/hostEvents.ts +17 -0
- package/src/config/mcpCatalog.ts +277 -5
- package/src/config/pubsubChannels.ts +134 -12
- package/src/config/roles.ts +212 -147
- package/src/config/systemFileDescriptors.ts +5 -5
- package/src/config/toolNames.ts +52 -30
- package/src/config/workspacePaths.ts +26 -2
- package/src/lang/de.ts +483 -27
- package/src/lang/en.ts +448 -27
- package/src/lang/es.ts +474 -27
- package/src/lang/fr.ts +476 -27
- package/src/lang/ja.ts +465 -27
- package/src/lang/ko.ts +466 -27
- package/src/lang/pt-BR.ts +473 -27
- package/src/lang/zh.ts +463 -27
- package/src/lib/vue-i18n.ts +1 -1
- package/src/lib/wiki-page/slug.ts +66 -0
- package/src/main.ts +85 -0
- package/src/plugins/_extras.ts +58 -0
- package/src/plugins/_generated/metas.ts +42 -0
- package/src/plugins/_generated/registrations.ts +44 -0
- package/src/plugins/_generated/server-bindings.ts +47 -0
- package/src/plugins/accounting/Preview.vue +106 -0
- package/src/plugins/accounting/View.vue +632 -0
- package/src/plugins/accounting/actions.ts +34 -0
- package/src/plugins/accounting/api.ts +301 -0
- package/src/plugins/accounting/components/AccountEditor.vue +250 -0
- package/src/plugins/accounting/components/AccountRow.vue +50 -0
- package/src/plugins/accounting/components/AccountsList.vue +102 -0
- package/src/plugins/accounting/components/AccountsModal.vue +300 -0
- package/src/plugins/accounting/components/BalanceSheet.vue +186 -0
- package/src/plugins/accounting/components/BookSettings.vue +284 -0
- package/src/plugins/accounting/components/BookSwitcher.vue +78 -0
- package/src/plugins/accounting/components/DateRangePicker.vue +140 -0
- package/src/plugins/accounting/components/JournalEntryForm.vue +504 -0
- package/src/plugins/accounting/components/JournalList.vue +553 -0
- package/src/plugins/accounting/components/Ledger.vue +206 -0
- package/src/plugins/accounting/components/NewBookForm.vue +211 -0
- package/src/plugins/accounting/components/OpeningBalancesForm.vue +271 -0
- package/src/plugins/accounting/components/ProfitLoss.vue +160 -0
- package/src/plugins/accounting/components/accountDraft.ts +13 -0
- package/src/plugins/accounting/components/accountNumbering.ts +103 -0
- package/src/plugins/accounting/components/accountValidation.ts +75 -0
- package/src/plugins/accounting/components/useLatestRequest.ts +44 -0
- package/src/plugins/accounting/countries.ts +158 -0
- package/src/plugins/accounting/currencies.ts +64 -0
- package/src/plugins/accounting/dates.ts +51 -0
- package/src/plugins/accounting/definition.ts +199 -0
- package/src/plugins/accounting/fiscalYear.ts +136 -0
- package/src/plugins/accounting/index.ts +49 -0
- package/src/plugins/accounting/meta.ts +91 -0
- package/src/plugins/accounting/timeSeriesEnums.ts +16 -0
- package/src/plugins/api.ts +125 -0
- package/src/plugins/canvas/View.vue +38 -28
- package/src/plugins/canvas/definition.ts +10 -8
- package/src/plugins/canvas/index.ts +15 -8
- package/src/plugins/canvas/meta.ts +12 -0
- package/src/plugins/chart/Preview.vue +1 -1
- package/src/plugins/chart/View.vue +2 -2
- package/src/plugins/chart/definition.ts +12 -2
- package/src/plugins/chart/index.ts +15 -7
- package/src/plugins/chart/meta.ts +18 -0
- package/src/plugins/editImages/definition.ts +44 -0
- package/src/plugins/editImages/index.ts +43 -0
- package/src/plugins/editImages/meta.ts +5 -0
- package/src/plugins/generateImage/View.vue +3 -1
- package/src/plugins/generateImage/definition.ts +2 -0
- package/src/plugins/generateImage/index.ts +13 -5
- package/src/plugins/generateImage/meta.ts +5 -0
- package/src/plugins/index.ts +35 -0
- package/src/plugins/manageRoles/Preview.vue +7 -4
- package/src/plugins/manageRoles/View.vue +12 -8
- package/src/plugins/manageRoles/definition.ts +6 -0
- package/src/plugins/manageRoles/index.ts +7 -6
- package/src/plugins/manageSkills/View.vue +11 -7
- package/src/plugins/manageSkills/definition.ts +4 -1
- package/src/plugins/manageSkills/index.ts +14 -7
- package/src/plugins/manageSkills/meta.ts +21 -0
- package/src/plugins/manageSource/definition.ts +4 -1
- package/src/plugins/manageSource/index.ts +15 -7
- package/src/plugins/manageSource/meta.ts +21 -0
- package/src/plugins/markdown/Preview.vue +10 -8
- package/src/plugins/markdown/View.vue +84 -17
- package/src/plugins/markdown/definition.ts +7 -1
- package/src/plugins/markdown/index.ts +15 -8
- package/src/plugins/markdown/meta.ts +16 -0
- package/src/plugins/meta-types.ts +97 -0
- package/src/plugins/metas.ts +224 -0
- package/src/plugins/presentForm/Preview.vue +4 -15
- package/src/plugins/presentForm/View.vue +35 -78
- package/src/plugins/presentForm/definition.ts +7 -6
- package/src/plugins/presentForm/index.ts +12 -5
- package/src/plugins/presentForm/meta.ts +11 -0
- package/src/plugins/presentForm/plugin.ts +8 -9
- package/src/plugins/presentForm/types.ts +0 -24
- package/src/plugins/presentHtml/Preview.vue +1 -8
- package/src/plugins/presentHtml/View.vue +401 -30
- package/src/plugins/presentHtml/definition.ts +8 -5
- package/src/plugins/presentHtml/index.ts +15 -8
- package/src/plugins/presentHtml/meta.ts +14 -0
- package/src/plugins/presentMulmoScript/View.vue +327 -107
- package/src/plugins/presentMulmoScript/definition.ts +34 -7
- package/src/plugins/presentMulmoScript/helpers.ts +4 -5
- package/src/plugins/presentMulmoScript/index.ts +20 -7
- package/src/plugins/presentMulmoScript/meta.ts +52 -0
- package/src/plugins/scheduler/AutomationsPreview.vue +2 -8
- package/src/plugins/scheduler/Preview.vue +5 -2
- package/src/plugins/scheduler/TasksTab.vue +16 -36
- package/src/plugins/scheduler/View.vue +22 -54
- package/src/plugins/scheduler/automationsDefinition.ts +14 -9
- package/src/plugins/scheduler/automationsMeta.ts +5 -0
- package/src/plugins/scheduler/calendarDefinition.ts +4 -7
- package/src/plugins/scheduler/calendarMeta.ts +28 -0
- package/src/plugins/scheduler/formatSchedule.ts +6 -24
- package/src/plugins/scheduler/index.ts +26 -52
- package/src/plugins/scope.ts +57 -0
- package/src/plugins/server-bindings-types.ts +38 -0
- package/src/plugins/server.ts +32 -0
- package/src/plugins/skill/Preview.vue +25 -0
- package/src/plugins/skill/View.vue +125 -0
- package/src/plugins/skill/definition.ts +23 -0
- package/src/plugins/skill/index.ts +36 -0
- package/src/plugins/skill/plugin.ts +31 -0
- package/src/plugins/skill/types.ts +21 -0
- package/src/plugins/spreadsheet/Preview.vue +1 -3
- package/src/plugins/spreadsheet/View.vue +29 -49
- package/src/plugins/spreadsheet/cellHighlights.ts +2 -3
- package/src/plugins/spreadsheet/definition.ts +5 -2
- package/src/plugins/spreadsheet/index.ts +15 -8
- package/src/plugins/spreadsheet/keyboardNav.ts +38 -0
- package/src/plugins/spreadsheet/meta.ts +14 -0
- package/src/plugins/textResponse/Preview.vue +9 -1
- package/src/plugins/textResponse/View.vue +59 -8
- package/src/plugins/textResponse/index.ts +11 -3
- package/src/plugins/textResponse/plugin.ts +8 -10
- package/src/plugins/textResponse/types.ts +28 -0
- package/src/plugins/wiki/Preview.vue +6 -4
- package/src/plugins/wiki/View.vue +463 -254
- package/src/plugins/wiki/components/WikiPageBody.vue +159 -0
- package/src/plugins/wiki/helpers.ts +17 -0
- package/src/plugins/wiki/history/HistoryDetail.vue +325 -0
- package/src/plugins/wiki/history/HistoryTab.vue +167 -0
- package/src/plugins/wiki/history/RestoreConfirm.vue +63 -0
- package/src/plugins/wiki/history/api.ts +52 -0
- package/src/plugins/wiki/history/diff.ts +145 -0
- package/src/plugins/wiki/index.ts +42 -32
- package/src/plugins/wiki/meta.ts +10 -0
- package/src/plugins/wiki/pageEditLoader.ts +53 -0
- package/src/plugins/wiki/route.ts +8 -0
- package/src/router/guards.ts +2 -1
- package/src/router/index.ts +19 -0
- package/src/router/pageRoutes.ts +1 -0
- package/src/tools/index.ts +50 -51
- package/src/tools/runtimeLoader.ts +141 -0
- package/src/tools/types.ts +44 -1
- package/src/types/notification.ts +23 -0
- package/src/types/pastedFile.ts +10 -0
- package/src/types/session.ts +61 -3
- package/src/types/sse.ts +21 -6
- package/src/utils/agent/eventDispatch.ts +12 -9
- package/src/utils/agent/pastedAttachment.ts +35 -0
- package/src/utils/agent/request.ts +32 -3
- package/src/utils/agent/toolCalls.ts +7 -1
- package/src/utils/api.ts +1 -1
- package/src/utils/chat/exportMarkdown.ts +243 -0
- package/src/utils/errors.ts +10 -2
- package/src/utils/files/expandedDirs.ts +1 -1
- package/src/utils/filesPreview/todoPreview.ts +13 -2
- package/src/utils/format/date.ts +1 -3
- package/src/utils/format/jsonSyntax.ts +5 -0
- package/src/utils/html/iframeHeightReporterScript.ts +62 -0
- package/src/utils/html/previewCsp.ts +29 -2
- package/src/utils/image/htmlSrcAttrs.ts +122 -0
- package/src/utils/image/imageRepairInlineScript.ts +115 -0
- package/src/utils/image/resolve.ts +17 -3
- package/src/utils/image/rewriteMarkdownImageRefs.ts +62 -9
- package/src/utils/markdown/frontmatter.ts +125 -0
- package/src/utils/markdown/taskList.ts +7 -2
- package/src/utils/plugin/runtime.ts +132 -0
- package/src/utils/session/mergeSessions.ts +40 -37
- package/src/utils/session/sessionEntries.ts +74 -18
- package/src/utils/session/sessionHelpers.ts +54 -10
- package/src/utils/tools/result.ts +76 -14
- package/src/vite-env.d.ts +6 -0
- package/client/assets/html2canvas-Cx501zZr-Bug0qRNv.js +0 -5
- package/client/assets/index-CY-WpQUm.css +0 -2
- package/client/assets/index-DbTz2Mfs.js +0 -4911
- package/client/assets/material-symbols-outlined-NzYEeyps.woff2 +0 -0
- package/server/api/routes/html.ts +0 -114
- package/server/api/routes/todos.ts +0 -293
- package/server/api/routes/todosColumnsHandlers.ts +0 -333
- package/server/api/routes/todosHandlers.ts +0 -274
- package/server/api/routes/todosItemsHandlers.ts +0 -386
- package/server/utils/files/todos-io.ts +0 -29
- package/src/components/NotificationToast.vue +0 -75
- package/src/plugins/editImage/definition.ts +0 -27
- package/src/plugins/editImage/index.ts +0 -37
- package/src/plugins/presentHtml/helpers.ts +0 -72
- package/src/plugins/scheduler/LegacySchedulerView.vue +0 -32
- package/src/plugins/scheduler/legacyShape.ts +0 -34
- package/src/plugins/todo/Preview.vue +0 -68
- package/src/plugins/todo/View.vue +0 -378
- package/src/plugins/todo/composables/useTodos.ts +0 -179
- package/src/plugins/todo/definition.ts +0 -45
- package/src/plugins/todo/index.ts +0 -62
- package/src/plugins/todo/labels.ts +0 -163
- package/src/plugins/todo/priority.ts +0 -98
- package/src/plugins/todo/viewModes.ts +0 -19
- package/src/plugins/wiki/definition.ts +0 -25
- package/src/tools/legacyPluginNames.ts +0 -13
- package/src/utils/format/frontmatter.ts +0 -80
- package/src/utils/image/rewriteHtmlImageRefs.ts +0 -50
- package/src/utils/notification/dispatch.ts +0 -58
- /package/client/assets/{purify.es-Fx1Nqyry-BwJECkqS.js → purify.es-Fx1Nqyry-BSVNht6S.js} +0 -0
- /package/src/plugins/{editImage → editImages}/Preview.vue +0 -0
- /package/src/plugins/{editImage → editImages}/View.vue +0 -0
- /package/src/{config/schedulerActions.ts → plugins/scheduler/actions.ts} +0 -0
package/src/lang/fr.ts
CHANGED
|
@@ -33,11 +33,13 @@ const frMessages = {
|
|
|
33
33
|
attachFile: "Joindre un fichier",
|
|
34
34
|
fileTooLarge: "Fichier trop volumineux ({sizeMB} Mo). La limite est de 30 Mo.",
|
|
35
35
|
unsupportedFileType: "Type de fichier non pris en charge. Acceptés : images, PDF, DOCX, XLSX, PPTX, fichiers texte.",
|
|
36
|
+
attachImageFailed: "Échec de l'attache de l'image : {error}",
|
|
36
37
|
},
|
|
37
38
|
sessionHistoryPanel: {
|
|
38
39
|
filters: {
|
|
39
40
|
all: "Toutes",
|
|
40
41
|
unread: "Non lues",
|
|
42
|
+
bookmarked: "Favoris",
|
|
41
43
|
human: "Humain",
|
|
42
44
|
scheduler: "Planificateur",
|
|
43
45
|
skill: "Skill",
|
|
@@ -50,18 +52,45 @@ const frMessages = {
|
|
|
50
52
|
running: "En cours",
|
|
51
53
|
noMessages: "(aucun message)",
|
|
52
54
|
openRowAria: "Ouvrir la session : {preview}",
|
|
55
|
+
rowMenuAria: "Actions de la session",
|
|
56
|
+
bookmark: "Ajouter aux favoris",
|
|
57
|
+
unbookmark: "Retirer des favoris",
|
|
58
|
+
delete: "Supprimer",
|
|
59
|
+
deleteConfirm: "Supprimer cette session ?\n\n{preview}\n\nCette action est irréversible.",
|
|
53
60
|
},
|
|
54
61
|
notificationBell: {
|
|
55
62
|
notifications: "Notifications",
|
|
56
|
-
|
|
57
|
-
|
|
63
|
+
activeSection: "Actives",
|
|
64
|
+
historySection: "Historique",
|
|
65
|
+
noActive: "Aucune notification active",
|
|
66
|
+
noHistory: "Aucune activité récente",
|
|
67
|
+
clearAll: "Tout effacer",
|
|
58
68
|
dismiss: "Ignorer",
|
|
69
|
+
cancel: "Annuler",
|
|
70
|
+
},
|
|
71
|
+
pluginDiagnostics: {
|
|
72
|
+
title: "Problème de configuration du plugin",
|
|
73
|
+
hostBody: "Le plugin « {plugin} » a tenté d'enregistrer la clé {label} « {key} », mais elle est réservée par l'hôte. L'entrée du plugin a été supprimée.",
|
|
74
|
+
intraBody:
|
|
75
|
+
"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é.",
|
|
76
|
+
},
|
|
77
|
+
pluginErrorBoundary: {
|
|
78
|
+
title: "Le plugin {pkg} a planté",
|
|
79
|
+
subtitle: "Le plugin n'a pas pu être affiché. L'erreur a été consignée dans la console.",
|
|
80
|
+
showDetails: "Afficher les détails",
|
|
81
|
+
hideDetails: "Masquer les détails",
|
|
82
|
+
retry: "Réessayer",
|
|
59
83
|
},
|
|
60
84
|
sidebarHeader: {
|
|
61
85
|
home: "Aller à la dernière conversation",
|
|
62
86
|
toolCallHistory: "Historique des appels d'outils",
|
|
63
87
|
settings: "Paramètres",
|
|
64
88
|
settingsGeminiMissing: "Paramètres — Clé API Gemini manquante",
|
|
89
|
+
todayJournal: "Résumé du jour",
|
|
90
|
+
todayJournalNotFound: "Pas encore de résumé — discutez un peu et le journal en générera un.",
|
|
91
|
+
todayJournalLoadFailed: "Échec du chargement du journal (status {status}) : {error}",
|
|
92
|
+
copyMarkdown: "Copier la conversation en Markdown",
|
|
93
|
+
copiedMarkdown: "Copié !",
|
|
65
94
|
},
|
|
66
95
|
rightSidebar: {
|
|
67
96
|
toggleSystemPrompt: "Basculer le system prompt",
|
|
@@ -202,6 +231,110 @@ const frMessages = {
|
|
|
202
231
|
pdfPreview: "Aperçu PDF",
|
|
203
232
|
parseError: "erreur d'analyse",
|
|
204
233
|
},
|
|
234
|
+
filesView: {
|
|
235
|
+
chatPlaceholder: "Posez une question sur ce fichier…",
|
|
236
|
+
},
|
|
237
|
+
systemFiles: {
|
|
238
|
+
schemaLabel: "Schéma",
|
|
239
|
+
showDetails: "Afficher les détails",
|
|
240
|
+
hideDetails: "Masquer les détails",
|
|
241
|
+
editPolicy: {
|
|
242
|
+
"agent-managed-but-hand-editable": "Géré par l'agent (édition manuelle OK)",
|
|
243
|
+
"user-editable": "Éditable par l'utilisateur",
|
|
244
|
+
"agent-managed": "Géré par l'agent",
|
|
245
|
+
"fragile-format": "Format fragile",
|
|
246
|
+
ephemeral: "Éphémère",
|
|
247
|
+
},
|
|
248
|
+
interests: {
|
|
249
|
+
title: "Configuration des centres d'intérêt",
|
|
250
|
+
summary: "Sujets que le pipeline news / sources surveille et classe pour vous. Éditable à la main ; l'agent le met également à jour depuis le chat.",
|
|
251
|
+
},
|
|
252
|
+
mcp: {
|
|
253
|
+
title: "Serveurs MCP",
|
|
254
|
+
summary: "Serveurs externes Model Context Protocol attachés à l'agent. Ajoutez des serveurs HTTP ou stdio pour étendre les outils disponibles.",
|
|
255
|
+
},
|
|
256
|
+
settings: {
|
|
257
|
+
title: "Paramètres de l'app",
|
|
258
|
+
summary: "Préférences de comportement éditables — clé API Gemini, outils autorisés, configuration du sandbox, etc.",
|
|
259
|
+
},
|
|
260
|
+
schedulerTasks: {
|
|
261
|
+
title: "Tâches du planificateur",
|
|
262
|
+
summary: "Automatisations récurrentes de l'agent déclenchées selon un planning. Gérées via l'UI Automations ; ce fichier est la source sur disque.",
|
|
263
|
+
},
|
|
264
|
+
schedulerOverrides: {
|
|
265
|
+
title: "Surcharges du planificateur",
|
|
266
|
+
summary:
|
|
267
|
+
"Surcharges horaires / d'intervalle par tâche appliquées au-dessus du planning système. L'agent édite ce fichier quand vous demandez à changer l'horaire d'une tâche récurrente.",
|
|
268
|
+
},
|
|
269
|
+
newsReadState: {
|
|
270
|
+
title: "État de lecture des news",
|
|
271
|
+
summary: "Suivi local des news déjà vues. Éphémère — vous pouvez le supprimer ; il sera régénéré au fil de votre lecture.",
|
|
272
|
+
},
|
|
273
|
+
schedulerItems: {
|
|
274
|
+
title: "File d'éléments du planificateur",
|
|
275
|
+
summary: "Invocations planifiées prêtes à se déclencher. Géré par l'agent ; n'éditez pas à la main sans comprendre chaque champ.",
|
|
276
|
+
},
|
|
277
|
+
todosItems: {
|
|
278
|
+
title: "Tâches à faire",
|
|
279
|
+
summary:
|
|
280
|
+
"Vos tâches dans toutes les colonnes du tableau kanban. L'agent écrit ici quand vous dites « ajoute une tâche » ; vous pouvez aussi éditer à la main.",
|
|
281
|
+
},
|
|
282
|
+
todosColumns: {
|
|
283
|
+
title: "Colonnes des tâches",
|
|
284
|
+
summary: "Disposition des colonnes du tableau kanban (titres, ordre, ids). Éditable par l'utilisateur — renommez ou réordonnez librement.",
|
|
285
|
+
},
|
|
286
|
+
wikiIndex: {
|
|
287
|
+
title: "Index du wiki",
|
|
288
|
+
summary: "Index auto-généré de toutes les pages du wiki. Régénéré à chaque édition — n'éditez pas à la main (vos changements seront écrasés).",
|
|
289
|
+
},
|
|
290
|
+
wikiLog: {
|
|
291
|
+
title: "Journal d'édition du wiki",
|
|
292
|
+
summary: "Journal d'activité des créations et éditions de pages. Géré par l'agent et en append seulement — utile comme flux des changements récents.",
|
|
293
|
+
},
|
|
294
|
+
wikiSummary: {
|
|
295
|
+
title: "Résumé du wiki",
|
|
296
|
+
summary: "Vue d'ensemble auto-générée du wiki — clusters thématiques, nombre de pages, activité récente. Régénérée par l'agent.",
|
|
297
|
+
},
|
|
298
|
+
wikiSchema: {
|
|
299
|
+
title: "Schéma du wiki",
|
|
300
|
+
summary:
|
|
301
|
+
"Spécification de format que l'agent lit pour garder les pages du wiki cohérentes. Fragile — il attend une structure précise ; préférez les éditions via l'agent.",
|
|
302
|
+
},
|
|
303
|
+
memory: {
|
|
304
|
+
title: "Mémoire",
|
|
305
|
+
summary:
|
|
306
|
+
"Faits distillés à votre sujet, toujours chargés comme contexte pour les nouvelles conversations. L'extracteur du journal y ajoute automatiquement ; vous pouvez aussi éditer à la main.",
|
|
307
|
+
},
|
|
308
|
+
summariesIndex: {
|
|
309
|
+
title: "Index des résumés",
|
|
310
|
+
summary: "Index navigable reliant les résumés quotidiens et thématiques générés par le journal. Géré par l'agent ; régénéré à chaque passe.",
|
|
311
|
+
},
|
|
312
|
+
rolesJson: {
|
|
313
|
+
title: "Définition du rôle (JSON)",
|
|
314
|
+
summary: "Configuration du rôle — choix du modèle, serveurs MCP, plugins autorisés, suggestions de requêtes. Éditable, pas besoin de redémarrage.",
|
|
315
|
+
},
|
|
316
|
+
rolesMd: {
|
|
317
|
+
title: "Description du rôle (Markdown)",
|
|
318
|
+
summary: "Persona et system prompt du rôle, chargés comme contexte quand ce rôle est actif. Éditable ; les changements s'appliquent au prochain message.",
|
|
319
|
+
},
|
|
320
|
+
sourceFeed: {
|
|
321
|
+
title: "Source abonnée",
|
|
322
|
+
summary: "Une source abonnée (RSS, releases / issues GitHub, arXiv, etc.). Éditable ; le pipeline interroge selon le planning.",
|
|
323
|
+
},
|
|
324
|
+
sourceState: {
|
|
325
|
+
title: "État de la source",
|
|
326
|
+
summary:
|
|
327
|
+
"État éphémère du pipeline pour une source — derniers ids vus, ETags, erreurs de fetch. Vous pouvez le supprimer ; il sera régénéré à la prochaine exécution.",
|
|
328
|
+
},
|
|
329
|
+
journalDaily: {
|
|
330
|
+
title: "Résumé quotidien du journal",
|
|
331
|
+
summary: "Récapitulatif auto-généré de votre activité pour une journée, distillé par le journal à partir des sessions de chat.",
|
|
332
|
+
},
|
|
333
|
+
journalTopic: {
|
|
334
|
+
title: "Journal thématique",
|
|
335
|
+
summary: "Notes à long terme sur un sujet spécifique, accumulées et révisées au fur et à mesure que vous en reparlez. Géré par l'agent.",
|
|
336
|
+
},
|
|
337
|
+
},
|
|
205
338
|
settingsMcpTab: {
|
|
206
339
|
explanation:
|
|
207
340
|
"Ajoutez des serveurs MCP externes. Les serveurs HTTP fonctionnent dans tous les modes. Les serveurs Stdio utilisent le {npx} / {node} / {tsx} de l'image du sandbox ; lorsque Docker est activé, les chemins doivent se trouver dans l'espace de travail.",
|
|
@@ -287,10 +420,81 @@ const frMessages = {
|
|
|
287
420
|
},
|
|
288
421
|
},
|
|
289
422
|
},
|
|
423
|
+
appleNative: {
|
|
424
|
+
displayName: "Apps natives Apple (macOS)",
|
|
425
|
+
description: "Lit et écrit Rappels, Calendrier, Notes, Mail et Plans via AppleScript. macOS uniquement — sans identifiants.",
|
|
426
|
+
},
|
|
427
|
+
gmail: {
|
|
428
|
+
displayName: "Gmail",
|
|
429
|
+
description:
|
|
430
|
+
"Lit, envoie et étiquette votre Gmail. Utilise un client OAuth Google que vous créez dans votre propre projet Google Cloud (sans vérification d'app).",
|
|
431
|
+
field: {
|
|
432
|
+
credentials: {
|
|
433
|
+
label: "Chemin vers credentials.json",
|
|
434
|
+
help: "Google Cloud Console → APIs & Services → Credentials → ID client OAuth (Desktop app). Téléchargez credentials.json et collez son chemin absolu.",
|
|
435
|
+
},
|
|
436
|
+
},
|
|
437
|
+
},
|
|
438
|
+
googleCalendar: {
|
|
439
|
+
displayName: "Google Agenda",
|
|
440
|
+
description: "Lit et crée des événements Google Agenda. Même modèle BYO credentials.json que Gmail.",
|
|
441
|
+
field: {
|
|
442
|
+
credentials: {
|
|
443
|
+
label: "Chemin vers credentials.json",
|
|
444
|
+
help: "Réutilisez le même client OAuth Google Cloud que Gmail, ou créez-en un séparé pour le Calendar.",
|
|
445
|
+
},
|
|
446
|
+
},
|
|
447
|
+
},
|
|
448
|
+
googleDrive: {
|
|
449
|
+
displayName: "Google Drive",
|
|
450
|
+
description: "Recherche et lit les fichiers Google Drive. BYO identifiants OAuth Google — le jeton est mis en cache localement à côté du fichier.",
|
|
451
|
+
field: {
|
|
452
|
+
credentials: {
|
|
453
|
+
label: "Chemin vers credentials.json",
|
|
454
|
+
help: "Google Cloud Console → APIs & Services → Credentials → ID client OAuth (Desktop app). Activez l'API Google Drive dans le même projet.",
|
|
455
|
+
},
|
|
456
|
+
},
|
|
457
|
+
},
|
|
458
|
+
github: {
|
|
459
|
+
displayName: "GitHub",
|
|
460
|
+
description:
|
|
461
|
+
"Lit les repos, issues, PRs et exécute des recherches avec un Personal Access Token. Limitez la portée du token — les permissions d'écriture (`repo`) laissent l'agent push sur n'importe quel repo accessible.",
|
|
462
|
+
field: {
|
|
463
|
+
token: {
|
|
464
|
+
label: "Personal Access Token",
|
|
465
|
+
help: "GitHub → Settings → Developer settings → Personal access tokens. Préférez les fine-grained tokens limités aux repos où l'agent doit agir.",
|
|
466
|
+
},
|
|
467
|
+
},
|
|
468
|
+
},
|
|
469
|
+
linear: {
|
|
470
|
+
displayName: "Linear",
|
|
471
|
+
description: "Lit et met à jour les issues, projets et cycles Linear avec une clé d'API personnelle.",
|
|
472
|
+
field: {
|
|
473
|
+
apiKey: {
|
|
474
|
+
label: "Clé d'API Linear",
|
|
475
|
+
help: "Linear → Settings → API → Personal API keys. Cliquez sur 🔑 pour ouvrir la page et sur Create key.",
|
|
476
|
+
},
|
|
477
|
+
},
|
|
478
|
+
},
|
|
290
479
|
weatherOpenMeteo: {
|
|
291
480
|
displayName: "Météo (Open-Meteo)",
|
|
292
481
|
description: "Prévisions météo gratuites et conditions actuelles dans le monde entier — sans clé d'API.",
|
|
293
482
|
},
|
|
483
|
+
spotify: {
|
|
484
|
+
displayName: "Spotify",
|
|
485
|
+
description:
|
|
486
|
+
"Recherche des morceaux, gère les playlists, contrôle la lecture. BYO app développeur Spotify — Client ID uniquement (flux PKCE, pas de client secret).",
|
|
487
|
+
field: {
|
|
488
|
+
clientId: {
|
|
489
|
+
label: "Client ID",
|
|
490
|
+
help: "Spotify Developer Dashboard → Create app, configurez la Redirect URI à http://127.0.0.1:8888/callback, copiez le Client ID. Puis exécutez une fois dans le terminal `SPOTIFY_CLIENT_ID=<id> npx spotify-mcp@latest auth` pour vous connecter (refresh token mis en cache dans ~/.spotify-mcp/tokens.json).",
|
|
491
|
+
},
|
|
492
|
+
},
|
|
493
|
+
},
|
|
494
|
+
youtubeTranscript: {
|
|
495
|
+
displayName: "Transcription YouTube",
|
|
496
|
+
description: "Récupère les sous-titres de n'importe quelle vidéo YouTube publique par URL. Sans identifiants.",
|
|
497
|
+
},
|
|
294
498
|
},
|
|
295
499
|
config: {
|
|
296
500
|
howToGet: "Comment l'obtenir",
|
|
@@ -352,6 +556,8 @@ const frMessages = {
|
|
|
352
556
|
redo: "Rétablir",
|
|
353
557
|
clear: "Effacer",
|
|
354
558
|
styleLabel: "Style :",
|
|
559
|
+
stylePromptWithPath: "Transforme l'image en `{path}` en une image de style {style}.",
|
|
560
|
+
stylePromptNoPath: "Transforme mon dessin sur le canevas en une image de style {style}.",
|
|
355
561
|
},
|
|
356
562
|
pluginChart: {
|
|
357
563
|
untitled: "Graphique",
|
|
@@ -359,20 +565,225 @@ const frMessages = {
|
|
|
359
565
|
chartTitle: "Graphique {num}",
|
|
360
566
|
png: "PNG",
|
|
361
567
|
},
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
568
|
+
pluginAccounting: {
|
|
569
|
+
title: "Comptabilité",
|
|
570
|
+
noBook: 'Pas encore de livres — cliquez sur "+ Nouveau livre" en haut pour créer le premier.',
|
|
571
|
+
common: {
|
|
572
|
+
cancel: "Annuler",
|
|
573
|
+
loading: "Chargement…",
|
|
574
|
+
error: "Erreur : {error}",
|
|
575
|
+
empty: "Aucune écriture pour l'instant.",
|
|
576
|
+
},
|
|
577
|
+
tabs: {
|
|
578
|
+
journal: "Journal",
|
|
579
|
+
newEntry: "Nouvelle écriture",
|
|
580
|
+
opening: "Ouverture",
|
|
581
|
+
accounts: "Comptes",
|
|
582
|
+
ledger: "Grand livre",
|
|
583
|
+
balanceSheet: "Bilan",
|
|
584
|
+
profitLoss: "Résultat",
|
|
585
|
+
settings: "Paramètres",
|
|
586
|
+
},
|
|
587
|
+
bookSwitcher: {
|
|
588
|
+
label: "Livre",
|
|
589
|
+
newBook: "Nouveau livre…",
|
|
590
|
+
create: "Créer",
|
|
591
|
+
nameLabel: "Nom",
|
|
592
|
+
currencyLabel: "Devise",
|
|
593
|
+
countryLabel: "Pays",
|
|
594
|
+
countryPlaceholder: "Sélectionner un pays…",
|
|
595
|
+
countryHint: "Le pays définit la juridiction fiscale afin que l'assistant puisse donner des conseils ciblés (T-number au Japon, ID TVA dans l'UE, etc.).",
|
|
596
|
+
fiscalYearEndLabel: "Clôture de l'exercice",
|
|
597
|
+
fiscalYearEndQ1: "31 mars (Q1)",
|
|
598
|
+
fiscalYearEndQ2: "30 juin (Q2)",
|
|
599
|
+
fiscalYearEndQ3: "30 septembre (Q3)",
|
|
600
|
+
fiscalYearEndQ4: "31 décembre (Q4)",
|
|
601
|
+
fiscalYearEndHint:
|
|
602
|
+
"Définit la limite de l'exercice utilisée par les raccourcis de plage de dates de ce livre. Par défaut : 31 décembre (Q4 — année civile).",
|
|
603
|
+
placeholder: "Sélectionner un livre…",
|
|
604
|
+
firstRunHint:
|
|
605
|
+
"Choisissez le nom, la devise, le pays et la clôture de l'exercice de votre premier livre. La devise est figée par livre et difficile à changer une fois les écritures commencées.",
|
|
606
|
+
},
|
|
607
|
+
deletedNotice: {
|
|
608
|
+
title: "« {bookName} » a été supprimé.",
|
|
609
|
+
body: "Choisissez un autre livre dans la liste ci-dessus ou créez-en un nouveau.",
|
|
610
|
+
},
|
|
611
|
+
journalList: {
|
|
612
|
+
fromLabel: "Du",
|
|
613
|
+
toLabel: "Au",
|
|
614
|
+
accountLabel: "Compte",
|
|
615
|
+
allAccounts: "Tous",
|
|
616
|
+
void: "Annuler",
|
|
617
|
+
edit: "Modifier",
|
|
618
|
+
voidConfirm: "Annuler cette écriture ? L'originale reste dans le journal ; une paire de contre-passation est ajoutée.",
|
|
619
|
+
voidReason: "Motif (optionnel) :",
|
|
620
|
+
columns: {
|
|
621
|
+
date: "Date",
|
|
622
|
+
kind: "Type",
|
|
623
|
+
memo: "Mémo",
|
|
624
|
+
lines: "Lignes",
|
|
625
|
+
},
|
|
626
|
+
kind: {
|
|
627
|
+
normal: "—",
|
|
628
|
+
opening: "Ouverture",
|
|
629
|
+
void: "Contre-passation",
|
|
630
|
+
voidMarker: "Marqueur d'annulation",
|
|
631
|
+
},
|
|
632
|
+
},
|
|
633
|
+
entryForm: {
|
|
634
|
+
title: "Nouvelle écriture",
|
|
635
|
+
editTitle: "Modifier l'écriture",
|
|
636
|
+
editBanner: "À l'envoi, l'écriture d'origine sera contre-passée et remplacée par celle-ci.",
|
|
637
|
+
dateLabel: "Date",
|
|
638
|
+
memoLabel: "Mémo",
|
|
639
|
+
accountLabel: "Compte",
|
|
640
|
+
debitLabel: "Débit",
|
|
641
|
+
creditLabel: "Crédit",
|
|
642
|
+
taxRegistrationIdLabel: "N° d'identification fiscale",
|
|
643
|
+
taxRegistrationIdPlaceholder: "TVA / SIRET / GSTIN…",
|
|
644
|
+
taxRegistrationIdMissingWarning: "Obligatoire",
|
|
645
|
+
addLine: "Ajouter une ligne",
|
|
646
|
+
removeLine: "Supprimer",
|
|
647
|
+
submit: "Comptabiliser",
|
|
648
|
+
submitting: "Comptabilisation…",
|
|
649
|
+
update: "Mettre à jour",
|
|
650
|
+
updating: "Mise à jour…",
|
|
651
|
+
cancelEdit: "Annuler",
|
|
652
|
+
success: "Écriture comptabilisée.",
|
|
653
|
+
editSuccess: "Écriture mise à jour.",
|
|
654
|
+
editVoidReason: "modifiée",
|
|
655
|
+
imbalance: "Déséquilibre : {amount}",
|
|
656
|
+
balanced: "Équilibré ✓",
|
|
657
|
+
},
|
|
658
|
+
openingForm: {
|
|
659
|
+
title: "Soldes d'ouverture",
|
|
660
|
+
asOfLabel: "Au",
|
|
661
|
+
explainer: "Comptes de bilan uniquement (actif/passif/capitaux). Σ débit = Σ crédit ; le solde tombe sur Retained Earnings.",
|
|
662
|
+
emptyHint:
|
|
663
|
+
"Vous pouvez enregistrer en laissant tout vide — les soldes d'ouverture peuvent être mis à jour plus tard. Il suffit qu'une ouverture soit enregistrée pour débloquer les autres onglets.",
|
|
664
|
+
explainer2: "Comptes de bilan uniquement.",
|
|
665
|
+
submit: "Enregistrer les soldes d'ouverture",
|
|
666
|
+
replaceWarning: "Enregistrer remplace l'ouverture existante (l'ancienne est contre-passée dans le journal).",
|
|
667
|
+
none: "Aucun solde d'ouverture défini.",
|
|
668
|
+
setBy: "Défini au {date}",
|
|
669
|
+
success: "Soldes d'ouverture enregistrés.",
|
|
670
|
+
},
|
|
671
|
+
ledger: {
|
|
672
|
+
selectAccount: "Sélectionner un compte",
|
|
673
|
+
closingBalance: "Solde de clôture",
|
|
674
|
+
columns: {
|
|
675
|
+
date: "Date",
|
|
676
|
+
memo: "Mémo",
|
|
677
|
+
debit: "Débit",
|
|
678
|
+
credit: "Crédit",
|
|
679
|
+
balance: "Solde",
|
|
680
|
+
taxRegistrationId: "N° d'identification fiscale",
|
|
681
|
+
},
|
|
682
|
+
},
|
|
683
|
+
dateRange: {
|
|
684
|
+
shortcutLabel: "Plage",
|
|
685
|
+
currentQuarter: "Trimestre en cours",
|
|
686
|
+
previousQuarter: "Trimestre précédent",
|
|
687
|
+
currentYear: "Exercice en cours",
|
|
688
|
+
previousYear: "Exercice précédent",
|
|
689
|
+
lifetime: "Depuis l'ouverture",
|
|
690
|
+
all: "Tout",
|
|
691
|
+
fromLabel: "Du",
|
|
692
|
+
toLabel: "Au",
|
|
693
|
+
},
|
|
694
|
+
balanceSheet: {
|
|
695
|
+
asOfLabel: "Période",
|
|
696
|
+
sections: {
|
|
697
|
+
asset: "Actif",
|
|
698
|
+
liability: "Passif",
|
|
699
|
+
equity: "Capitaux",
|
|
700
|
+
},
|
|
701
|
+
total: "Total",
|
|
702
|
+
imbalance: "Déséquilibre : {amount}",
|
|
703
|
+
currentEarnings: "Résultat de la période",
|
|
704
|
+
shortcutLabel: "Raccourci",
|
|
705
|
+
thisMonth: "Ce mois-ci",
|
|
706
|
+
lastMonth: "Mois précédent",
|
|
707
|
+
lastQuarter: "Trimestre précédent",
|
|
708
|
+
lastYear: "Année précédente",
|
|
709
|
+
},
|
|
710
|
+
profitLoss: {
|
|
711
|
+
fromLabel: "Du",
|
|
712
|
+
toLabel: "Au",
|
|
713
|
+
income: "Produits",
|
|
714
|
+
expense: "Charges",
|
|
715
|
+
netIncome: "Résultat net :",
|
|
716
|
+
},
|
|
717
|
+
accounts: {
|
|
718
|
+
listEmpty: "Aucun compte dans cette catégorie pour l'instant.",
|
|
719
|
+
openLedgerAria: "Ouvrir le grand livre de {code} {name}",
|
|
720
|
+
manageButton: "Gérer les comptes",
|
|
721
|
+
modalTitle: "Gérer les comptes",
|
|
722
|
+
addAccount: "Ajouter un compte",
|
|
723
|
+
sectionTitle: {
|
|
724
|
+
asset: "Actifs",
|
|
725
|
+
liability: "Passifs",
|
|
726
|
+
equity: "Capitaux propres",
|
|
727
|
+
income: "Produits",
|
|
728
|
+
expense: "Charges",
|
|
729
|
+
},
|
|
730
|
+
columnCode: "Code",
|
|
731
|
+
columnName: "Nom",
|
|
732
|
+
columnType: "Type",
|
|
733
|
+
columnNote: "Note",
|
|
734
|
+
typeOption: {
|
|
735
|
+
asset: "Actif",
|
|
736
|
+
liability: "Passif",
|
|
737
|
+
equity: "Capitaux propres",
|
|
738
|
+
income: "Produit",
|
|
739
|
+
expense: "Charge",
|
|
740
|
+
},
|
|
741
|
+
edit: "Modifier",
|
|
742
|
+
save: "Enregistrer",
|
|
743
|
+
cancel: "Annuler",
|
|
744
|
+
saving: "Enregistrement…",
|
|
745
|
+
addToCategory: "Ajouter un compte de {type}",
|
|
746
|
+
deactivate: "Désactiver",
|
|
747
|
+
reactivate: "Activer",
|
|
748
|
+
deactivateConfirm: "Masquer « {name} » des listes déroulantes d’écriture / grand livre ? Les écritures existantes ne sont pas affectées.",
|
|
749
|
+
errorEmptyCode: "Le code est requis.",
|
|
750
|
+
errorReservedCode: "Les codes commençant par « _ » sont réservés aux lignes système.",
|
|
751
|
+
errorInvalidCodeFormat: "Le code de compte doit comporter exactement 4 chiffres.",
|
|
752
|
+
errorCodeTypeMismatch: "Le code doit correspondre au type de compte : 1xxx actif, 2xxx passif, 3xxx capitaux propres, 4xxx produit, 5xxx charge.",
|
|
753
|
+
errorEmptyName: "Le nom est requis.",
|
|
754
|
+
errorDuplicateCode: "Un compte avec ce code existe déjà.",
|
|
755
|
+
errorDuplicateName: "Un compte portant ce nom existe déjà.",
|
|
756
|
+
success: "Compte enregistré.",
|
|
757
|
+
codeReadOnlyHint: "Le code ne peut pas être modifié une fois le compte créé.",
|
|
758
|
+
noteOptional: "(facultatif)",
|
|
759
|
+
},
|
|
760
|
+
settings: {
|
|
761
|
+
bookInfo: "Informations du livre",
|
|
762
|
+
bookInfoExplain:
|
|
763
|
+
"Modifiez le pays pour mettre à jour les conseils selon la juridiction fiscale. La devise ne peut pas être changée une fois des écritures saisies.",
|
|
764
|
+
countryUnset: "(non défini)",
|
|
765
|
+
fiscalYearEndExplain:
|
|
766
|
+
"Modifie uniquement la résolution des raccourcis de plage de dates à partir de maintenant ; les écritures existantes ne sont pas déplacées.",
|
|
767
|
+
saveChanges: "Enregistrer les modifications",
|
|
768
|
+
updateOk: "Livre mis à jour.",
|
|
769
|
+
rebuild: "Reconstruire les snapshots",
|
|
770
|
+
rebuildExplain: "Supprime tous les snapshots mensuels et les recalcule depuis le journal. Utile après modification manuelle du journal.",
|
|
771
|
+
rebuildOk: "{count} période(s) reconstruite(s).",
|
|
772
|
+
advanced: "Avancé…",
|
|
773
|
+
deleteBook: "Supprimer le livre",
|
|
774
|
+
deleteBookExplain: "Supprime définitivement le répertoire du livre. Irréversible.",
|
|
775
|
+
deleteBookConfirm: 'Tapez "{bookName}" pour confirmer :',
|
|
776
|
+
deleteBookButton: "Supprimer définitivement",
|
|
777
|
+
},
|
|
778
|
+
preview: {
|
|
779
|
+
entry: "Écriture comptabilisée le {date}",
|
|
780
|
+
pl: "P&L {from} → {to} : net {net}",
|
|
781
|
+
bs: "Bilan au {date} · actif {assets}",
|
|
782
|
+
bookCreated: 'Livre "{name}" ({id}) créé',
|
|
783
|
+
},
|
|
784
|
+
previewSummary: "Comptabilité · {bookId}",
|
|
785
|
+
previewError: "Comptabilité : {error}",
|
|
786
|
+
previewGeneric: "Résultat comptable",
|
|
376
787
|
},
|
|
377
788
|
todoExplorer: {
|
|
378
789
|
heading: "Tâches",
|
|
@@ -389,14 +800,6 @@ const frMessages = {
|
|
|
389
800
|
newColumnPlaceholder: "Revue",
|
|
390
801
|
noMatchingFilter: "Aucun élément ne correspond au filtre actuel",
|
|
391
802
|
},
|
|
392
|
-
todoPreview: {
|
|
393
|
-
completedRatio: "{done}/{total} terminées",
|
|
394
|
-
moreItems: "+ {count} de plus…",
|
|
395
|
-
headerIcon: "☑",
|
|
396
|
-
doneIcon: "✓",
|
|
397
|
-
pendingIcon: "○",
|
|
398
|
-
moreLabels: "+{count}",
|
|
399
|
-
},
|
|
400
803
|
todoDialogs: {
|
|
401
804
|
addTitle: "Ajouter une tâche",
|
|
402
805
|
editTitle: "Modifier la tâche",
|
|
@@ -426,6 +829,7 @@ const frMessages = {
|
|
|
426
829
|
noMatchingFilter: "Aucun élément ne correspond au filtre actuel",
|
|
427
830
|
sortColumnAria: "Trier par {column}",
|
|
428
831
|
expandRowAria: "Développer la tâche : {task}",
|
|
832
|
+
deleteItem: "Supprimer l'élément",
|
|
429
833
|
},
|
|
430
834
|
pluginWiki: {
|
|
431
835
|
backToIndex: "Retour à l'index",
|
|
@@ -445,6 +849,35 @@ const frMessages = {
|
|
|
445
849
|
noMatches: "Aucune page avec le tag #{tag}",
|
|
446
850
|
lintChat: "Vérifier mon wiki",
|
|
447
851
|
taskCountMismatch: "La source du wiki et le rendu diffèrent sur le nombre de tâches. La modification a été refusée pour éviter de corrompre le fichier.",
|
|
852
|
+
metadataCreated: "Créé",
|
|
853
|
+
metadataUpdated: "Mis à jour",
|
|
854
|
+
metadataEditor: "Éditeur",
|
|
855
|
+
pageEditHeader: "Édition du wiki",
|
|
856
|
+
snapshotExpired: "Instantané expiré — affichage de la page actuelle",
|
|
857
|
+
pageDeleted: "Page supprimée",
|
|
858
|
+
history: {
|
|
859
|
+
tabContent: "Contenu",
|
|
860
|
+
tabHistory: "Historique",
|
|
861
|
+
empty: "Aucun historique — modifiez cette page et la première version apparaîtra ici.",
|
|
862
|
+
loading: "Chargement de l'historique…",
|
|
863
|
+
backToList: "Retour à l'historique",
|
|
864
|
+
restoreButton: "Restaurer cette version",
|
|
865
|
+
restoreConfirmTitle: "Restaurer cette version ?",
|
|
866
|
+
restoreConfirmBody: "Restaurer la page vers la version du {ts} par {editor}. La page actuelle sera remplacée. L'historique existant est conservé.",
|
|
867
|
+
restoreConfirmAction: "Restaurer",
|
|
868
|
+
restoreConfirmCancel: "Annuler",
|
|
869
|
+
restoreSuccessToast: "Page restaurée.",
|
|
870
|
+
restoreFailureBanner: "Échec de la restauration : {error}",
|
|
871
|
+
compareCurrent: "Comparer avec la page actuelle",
|
|
872
|
+
comparePrevious: "Comparer avec la version précédente",
|
|
873
|
+
diffNoPrevious: "Aucune version précédente à comparer.",
|
|
874
|
+
diffNoChanges: "Aucune différence de contenu entre cette version et l'élément de comparaison.",
|
|
875
|
+
editorBadgeUser: "Utilisateur",
|
|
876
|
+
editorBadgeLLM: "LLM",
|
|
877
|
+
editorBadgeSystem: "Système",
|
|
878
|
+
hiddenLines: "{count} lignes inchangées masquées",
|
|
879
|
+
expandHidden: "Afficher",
|
|
880
|
+
},
|
|
448
881
|
},
|
|
449
882
|
pluginPresentForm: {
|
|
450
883
|
fallbackTitle: "Formulaire",
|
|
@@ -462,8 +895,13 @@ const frMessages = {
|
|
|
462
895
|
saveAsPdf: "Enregistrer en PDF (ouvre la boîte de dialogue d'impression)",
|
|
463
896
|
pdf: "PDF",
|
|
464
897
|
untitled: "Page HTML",
|
|
465
|
-
|
|
466
|
-
|
|
898
|
+
editSource: "Modifier la source HTML",
|
|
899
|
+
cancel: "Annuler",
|
|
900
|
+
applyChanges: "Appliquer les modifications",
|
|
901
|
+
saving: "Enregistrement...",
|
|
902
|
+
saveError: "⚠ Échec de l'enregistrement : {error}",
|
|
903
|
+
loadingSource: "Chargement de la source…",
|
|
904
|
+
sourceError: "Échec du chargement de la source : {error}",
|
|
467
905
|
},
|
|
468
906
|
pluginNews: {
|
|
469
907
|
title: "Actualités",
|
|
@@ -578,7 +1016,6 @@ const frMessages = {
|
|
|
578
1016
|
pluginManageRoles: {
|
|
579
1017
|
heading: "Rôles personnalisés",
|
|
580
1018
|
roleCount: "{count} rôle | {count} rôles",
|
|
581
|
-
previewCount: "{count} rôle personnalisé | {count} rôles personnalisés",
|
|
582
1019
|
addButton: "+ Ajouter",
|
|
583
1020
|
createPanel: "Créer un nouveau rôle",
|
|
584
1021
|
fieldId: "ID",
|
|
@@ -627,6 +1064,8 @@ const frMessages = {
|
|
|
627
1064
|
gen: "Générer",
|
|
628
1065
|
play: "▶ Lire",
|
|
629
1066
|
stop: "■ Arrêter",
|
|
1067
|
+
playPresentation: "Lire la présentation",
|
|
1068
|
+
regenerateMovie: "Régénérer la vidéo",
|
|
630
1069
|
errPrefix: "⚠ Erreur",
|
|
631
1070
|
noBeats: "Aucun beat trouvé dans le script",
|
|
632
1071
|
editSource: "Modifier la source du script",
|
|
@@ -663,6 +1102,11 @@ const frMessages = {
|
|
|
663
1102
|
copyLabel: "Copier",
|
|
664
1103
|
copiedLabel: "Copié !",
|
|
665
1104
|
cancel: "Annuler",
|
|
1105
|
+
seededByPlugin: "depuis {pkg}",
|
|
1106
|
+
seededByPluginTooltip: "Ce message a été généré par le plugin {pkg}, et non envoyé par vous.",
|
|
1107
|
+
},
|
|
1108
|
+
pluginSkill: {
|
|
1109
|
+
noDescription: "(aucune description)",
|
|
666
1110
|
},
|
|
667
1111
|
pluginSpreadsheet: {
|
|
668
1112
|
previewUntitled: "Tableur",
|
|
@@ -690,6 +1134,11 @@ const frMessages = {
|
|
|
690
1134
|
},
|
|
691
1135
|
suggestionsPanel: {
|
|
692
1136
|
suggestions: "Suggestions",
|
|
1137
|
+
skills: "Compétences",
|
|
1138
|
+
tooltip: "Suggestions et compétences",
|
|
1139
|
+
emptySuggestions: "Aucune suggestion.",
|
|
1140
|
+
emptySkills: "Aucune compétence installée.",
|
|
1141
|
+
skillsError: "Échec du chargement des compétences : {error}",
|
|
693
1142
|
sendEditHint: "cliquez pour envoyer · shift+clic pour modifier",
|
|
694
1143
|
},
|
|
695
1144
|
settingsToolsTab: {
|