living-ai-documentation 1.0.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/LICENSE +661 -0
- package/README.fr.md +344 -0
- package/README.md +344 -0
- package/dist/bin/cli.d.ts +3 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +262 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/src/frontend/accuracy-gauge.js +70 -0
- package/dist/src/frontend/admin.html +1532 -0
- package/dist/src/frontend/annotations.js +585 -0
- package/dist/src/frontend/boot.js +101 -0
- package/dist/src/frontend/config.js +29 -0
- package/dist/src/frontend/confirm-modal.js +82 -0
- package/dist/src/frontend/context.html +1252 -0
- package/dist/src/frontend/dark-mode.js +20 -0
- package/dist/src/frontend/diagram/alignment.js +161 -0
- package/dist/src/frontend/diagram/clipboard.js +187 -0
- package/dist/src/frontend/diagram/constants.js +109 -0
- package/dist/src/frontend/diagram/custom-shapes.js +104 -0
- package/dist/src/frontend/diagram/debug.js +43 -0
- package/dist/src/frontend/diagram/drawio-export.js +649 -0
- package/dist/src/frontend/diagram/edge-panel.js +293 -0
- package/dist/src/frontend/diagram/edge-rendering.js +12 -0
- package/dist/src/frontend/diagram/evidence.js +146 -0
- package/dist/src/frontend/diagram/grid.js +78 -0
- package/dist/src/frontend/diagram/groups.js +102 -0
- package/dist/src/frontend/diagram/history.js +157 -0
- package/dist/src/frontend/diagram/image-name-modal.js +48 -0
- package/dist/src/frontend/diagram/image-upload.js +36 -0
- package/dist/src/frontend/diagram/label-editor.js +115 -0
- package/dist/src/frontend/diagram/link-panel.js +144 -0
- package/dist/src/frontend/diagram/main.js +364 -0
- package/dist/src/frontend/diagram/network.js +2214 -0
- package/dist/src/frontend/diagram/node-panel.js +389 -0
- package/dist/src/frontend/diagram/node-rendering.js +964 -0
- package/dist/src/frontend/diagram/persistence.js +168 -0
- package/dist/src/frontend/diagram/ports.js +421 -0
- package/dist/src/frontend/diagram/selection-overlay.js +387 -0
- package/dist/src/frontend/diagram/state.js +43 -0
- package/dist/src/frontend/diagram/t.js +3 -0
- package/dist/src/frontend/diagram/toast.js +21 -0
- package/dist/src/frontend/diagram/unlock-hold.js +206 -0
- package/dist/src/frontend/diagram/zoom.js +20 -0
- package/dist/src/frontend/diagram-link-modal.js +137 -0
- package/dist/src/frontend/diagram.html +1494 -0
- package/dist/src/frontend/documents.js +479 -0
- package/dist/src/frontend/export.js +338 -0
- package/dist/src/frontend/file-attach.js +178 -0
- package/dist/src/frontend/files-modal.js +243 -0
- package/dist/src/frontend/i18n/en.json +624 -0
- package/dist/src/frontend/i18n/fr.json +624 -0
- package/dist/src/frontend/i18n.js +32 -0
- package/dist/src/frontend/image-paste.js +126 -0
- package/dist/src/frontend/index.html +2806 -0
- package/dist/src/frontend/local-search.js +476 -0
- package/dist/src/frontend/metadata.js +318 -0
- package/dist/src/frontend/misc.js +92 -0
- package/dist/src/frontend/new-doc-modal.js +285 -0
- package/dist/src/frontend/new-folder-modal.js +169 -0
- package/dist/src/frontend/search.js +194 -0
- package/dist/src/frontend/shape-editor.html +685 -0
- package/dist/src/frontend/sidebar-helpers.js +96 -0
- package/dist/src/frontend/sidebar-resize.js +98 -0
- package/dist/src/frontend/sidebar.js +351 -0
- package/dist/src/frontend/snippet-detect.js +25 -0
- package/dist/src/frontend/snippet-table.js +85 -0
- package/dist/src/frontend/snippet-tree.js +94 -0
- package/dist/src/frontend/snippets.js +1146 -0
- package/dist/src/frontend/state.js +46 -0
- package/dist/src/frontend/utils.js +21 -0
- package/dist/src/frontend/validate.js +107 -0
- package/dist/src/frontend/vendor/wordcloud2.js +1187 -0
- package/dist/src/frontend/wordcloud.js +693 -0
- package/dist/src/lib/config.d.ts +26 -0
- package/dist/src/lib/config.d.ts.map +1 -0
- package/dist/src/lib/config.js +195 -0
- package/dist/src/lib/config.js.map +1 -0
- package/dist/src/lib/hash.d.ts +2 -0
- package/dist/src/lib/hash.d.ts.map +1 -0
- package/dist/src/lib/hash.js +18 -0
- package/dist/src/lib/hash.js.map +1 -0
- package/dist/src/lib/metadata.d.ts +31 -0
- package/dist/src/lib/metadata.d.ts.map +1 -0
- package/dist/src/lib/metadata.js +128 -0
- package/dist/src/lib/metadata.js.map +1 -0
- package/dist/src/lib/parser.d.ts +11 -0
- package/dist/src/lib/parser.d.ts.map +1 -0
- package/dist/src/lib/parser.js +111 -0
- package/dist/src/lib/parser.js.map +1 -0
- package/dist/src/lib/status.d.ts +9 -0
- package/dist/src/lib/status.d.ts.map +1 -0
- package/dist/src/lib/status.js +72 -0
- package/dist/src/lib/status.js.map +1 -0
- package/dist/src/mcp/server.d.ts +3 -0
- package/dist/src/mcp/server.d.ts.map +1 -0
- package/dist/src/mcp/server.js +2046 -0
- package/dist/src/mcp/server.js.map +1 -0
- package/dist/src/mcp/tools/diagrams.d.ts +82 -0
- package/dist/src/mcp/tools/diagrams.d.ts.map +1 -0
- package/dist/src/mcp/tools/diagrams.js +594 -0
- package/dist/src/mcp/tools/diagrams.js.map +1 -0
- package/dist/src/mcp/tools/documents.d.ts +44 -0
- package/dist/src/mcp/tools/documents.d.ts.map +1 -0
- package/dist/src/mcp/tools/documents.js +186 -0
- package/dist/src/mcp/tools/documents.js.map +1 -0
- package/dist/src/mcp/tools/git.d.ts +10 -0
- package/dist/src/mcp/tools/git.d.ts.map +1 -0
- package/dist/src/mcp/tools/git.js +217 -0
- package/dist/src/mcp/tools/git.js.map +1 -0
- package/dist/src/mcp/tools/metadata.d.ts +57 -0
- package/dist/src/mcp/tools/metadata.d.ts.map +1 -0
- package/dist/src/mcp/tools/metadata.js +222 -0
- package/dist/src/mcp/tools/metadata.js.map +1 -0
- package/dist/src/mcp/tools/source.d.ts +29 -0
- package/dist/src/mcp/tools/source.d.ts.map +1 -0
- package/dist/src/mcp/tools/source.js +196 -0
- package/dist/src/mcp/tools/source.js.map +1 -0
- package/dist/src/routes/annotations.d.ts +3 -0
- package/dist/src/routes/annotations.d.ts.map +1 -0
- package/dist/src/routes/annotations.js +83 -0
- package/dist/src/routes/annotations.js.map +1 -0
- package/dist/src/routes/browse-source.d.ts +3 -0
- package/dist/src/routes/browse-source.d.ts.map +1 -0
- package/dist/src/routes/browse-source.js +79 -0
- package/dist/src/routes/browse-source.js.map +1 -0
- package/dist/src/routes/browse.d.ts +3 -0
- package/dist/src/routes/browse.d.ts.map +1 -0
- package/dist/src/routes/browse.js +91 -0
- package/dist/src/routes/browse.js.map +1 -0
- package/dist/src/routes/config.d.ts +3 -0
- package/dist/src/routes/config.d.ts.map +1 -0
- package/dist/src/routes/config.js +145 -0
- package/dist/src/routes/config.js.map +1 -0
- package/dist/src/routes/context.d.ts +3 -0
- package/dist/src/routes/context.d.ts.map +1 -0
- package/dist/src/routes/context.js +287 -0
- package/dist/src/routes/context.js.map +1 -0
- package/dist/src/routes/diagrams.d.ts +3 -0
- package/dist/src/routes/diagrams.d.ts.map +1 -0
- package/dist/src/routes/diagrams.js +69 -0
- package/dist/src/routes/diagrams.js.map +1 -0
- package/dist/src/routes/documents.d.ts +11 -0
- package/dist/src/routes/documents.d.ts.map +1 -0
- package/dist/src/routes/documents.js +450 -0
- package/dist/src/routes/documents.js.map +1 -0
- package/dist/src/routes/export.d.ts +3 -0
- package/dist/src/routes/export.d.ts.map +1 -0
- package/dist/src/routes/export.js +280 -0
- package/dist/src/routes/export.js.map +1 -0
- package/dist/src/routes/files.d.ts +3 -0
- package/dist/src/routes/files.d.ts.map +1 -0
- package/dist/src/routes/files.js +180 -0
- package/dist/src/routes/files.js.map +1 -0
- package/dist/src/routes/images.d.ts +3 -0
- package/dist/src/routes/images.d.ts.map +1 -0
- package/dist/src/routes/images.js +49 -0
- package/dist/src/routes/images.js.map +1 -0
- package/dist/src/routes/metadata.d.ts +3 -0
- package/dist/src/routes/metadata.d.ts.map +1 -0
- package/dist/src/routes/metadata.js +131 -0
- package/dist/src/routes/metadata.js.map +1 -0
- package/dist/src/routes/shape-libraries.d.ts +3 -0
- package/dist/src/routes/shape-libraries.d.ts.map +1 -0
- package/dist/src/routes/shape-libraries.js +118 -0
- package/dist/src/routes/shape-libraries.js.map +1 -0
- package/dist/src/routes/wordcloud.d.ts +3 -0
- package/dist/src/routes/wordcloud.d.ts.map +1 -0
- package/dist/src/routes/wordcloud.js +95 -0
- package/dist/src/routes/wordcloud.js.map +1 -0
- package/dist/src/server.d.ts +7 -0
- package/dist/src/server.d.ts.map +1 -0
- package/dist/src/server.js +93 -0
- package/dist/src/server.js.map +1 -0
- package/dist/starter-doc/.living-doc.json +52 -0
- package/dist/starter-doc/ADRS/2026_01_01_[ADR]_example_architecture_decision.md +59 -0
- package/dist/starter-doc/AI/2026_01_01_how_to.md +112 -0
- package/dist/starter-doc/AI/PROJECT-INSTRUCTIONS.md +172 -0
- package/dist/starter-doc/AI/PROJECT-STACK.md +77 -0
- package/dist/starter-doc/AI/PROJECT-USEFUL-COMMANDS.md +80 -0
- package/dist/starter-doc/AI/default/AGENTS.md +31 -0
- package/dist/starter-doc/AI/default/CLAUDE.md +31 -0
- package/dist/starter-doc/AI/default/MEMORY.md +24 -0
- package/dist/starter-doc/AI/rules/no-magic-numbers.md +18 -0
- package/dist/starter-doc/AI/rules/track-current-work.md +23 -0
- package/dist/starter-doc/WORKLOG/current-task.md +57 -0
- package/dist/starter-doc-fr/.living-doc.json +52 -0
- package/dist/starter-doc-fr/ADRS/2026_01_01_[ADR]_example_architecture_decision.md +59 -0
- package/dist/starter-doc-fr/AI/2026_01_01_how_to.md +100 -0
- package/dist/starter-doc-fr/AI/PROJECT-INSTRUCTIONS.md +172 -0
- package/dist/starter-doc-fr/AI/PROJECT-STACK.md +77 -0
- package/dist/starter-doc-fr/AI/PROJECT-USEFUL-COMMANDS.md +80 -0
- package/dist/starter-doc-fr/AI/default/AGENTS.md +31 -0
- package/dist/starter-doc-fr/AI/default/CLAUDE.md +31 -0
- package/dist/starter-doc-fr/AI/default/MEMORY.md +24 -0
- package/dist/starter-doc-fr/AI/rules/no-magic-numbers.md +18 -0
- package/dist/starter-doc-fr/AI/rules/track-current-work.md +23 -0
- package/dist/starter-doc-fr/WORKLOG/current-task.md +57 -0
- package/images/living_documentation.jpg +0 -0
- package/images/readme-extra-files.png +0 -0
- package/images/readme-filename-pattern.png +0 -0
- package/images/readme-intelligent-search-demo.jpg +0 -0
- package/images/readme-sidebar.png +0 -0
- package/package.json +72 -0
|
@@ -0,0 +1,624 @@
|
|
|
1
|
+
{
|
|
2
|
+
"common.save": "Save",
|
|
3
|
+
"common.cancel": "Cancel",
|
|
4
|
+
"common.confirm": "Confirm",
|
|
5
|
+
"common.reset": "Reset",
|
|
6
|
+
"common.loading": "Loading…",
|
|
7
|
+
"common.remove": "Remove",
|
|
8
|
+
"common.create": "Create",
|
|
9
|
+
"common.add": "Add",
|
|
10
|
+
"common.close": "Close",
|
|
11
|
+
"common.back": "Back",
|
|
12
|
+
"common.general": "General",
|
|
13
|
+
"common.select": "Select",
|
|
14
|
+
"common.error_prefix": "Error: ",
|
|
15
|
+
"common.up": "↑ Up",
|
|
16
|
+
"common.empty_dir": "Empty directory",
|
|
17
|
+
"common.cannot_read_dir": "Cannot read directory",
|
|
18
|
+
|
|
19
|
+
"nav.toggle_sidebar": "Toggle sidebar",
|
|
20
|
+
"nav.search_placeholder": "Search docs…",
|
|
21
|
+
"nav.search_mobile_placeholder": "Search…",
|
|
22
|
+
"nav.toggle_dark": "Toggle dark mode",
|
|
23
|
+
"nav.export": "Export",
|
|
24
|
+
"nav.toggle_categories": "Show/hide category grouping",
|
|
25
|
+
"nav.toggle_attachments": "Show/hide attachments",
|
|
26
|
+
"nav.export_html": "Export folders as HTML ZIP",
|
|
27
|
+
"nav.export_all_pdf": "Export all documents as PDF",
|
|
28
|
+
"nav.new_folder": "New folder",
|
|
29
|
+
"nav.new_document": "New document",
|
|
30
|
+
"nav.word_cloud": "☁ Word Cloud",
|
|
31
|
+
"nav.diagram": "◇ Diagram",
|
|
32
|
+
"nav.ai_context": "AI Context",
|
|
33
|
+
"nav.files": "📁 Attached files",
|
|
34
|
+
"nav.admin": "⚙ Admin",
|
|
35
|
+
|
|
36
|
+
"files.title": "📁 Attached files",
|
|
37
|
+
"files.empty": "No files yet — upload one from a document editor (paperclip, drag & drop, or paste).",
|
|
38
|
+
"files.replace": "Replace",
|
|
39
|
+
"files.delete": "Delete",
|
|
40
|
+
"files.open": "Open",
|
|
41
|
+
"files.confirm_replace": "Replace \"{name}\" with \"{newName}\"? The previous version will be lost.",
|
|
42
|
+
"files.confirm_replace_title": "Replace file",
|
|
43
|
+
"files.confirm_replace_message": "Replace \"{name}\" with \"{newName}\"?",
|
|
44
|
+
"files.confirm_replace_detail": "The previous version will be lost.",
|
|
45
|
+
"files.confirm_delete": "Permanently delete \"{name}\"?",
|
|
46
|
+
"files.confirm_delete_title": "Delete file",
|
|
47
|
+
"files.confirm_delete_message": "Permanently delete \"{name}\"?",
|
|
48
|
+
"files.confirm_delete_detail": "This action cannot be undone.",
|
|
49
|
+
"files.replacing": "Replacing…",
|
|
50
|
+
"files.deleting": "Deleting…",
|
|
51
|
+
"files.error_load": "Failed to load files: ",
|
|
52
|
+
"files.error_replace": "Replace failed: ",
|
|
53
|
+
"files.error_delete": "Delete failed: ",
|
|
54
|
+
"files.size_bytes": "{n} B",
|
|
55
|
+
"files.size_kb": "{n} KB",
|
|
56
|
+
"files.size_mb": "{n} MB",
|
|
57
|
+
|
|
58
|
+
"welcome.title": "Select a document",
|
|
59
|
+
"welcome.hint": "Choose a document from the sidebar to start reading.",
|
|
60
|
+
"welcome.pattern_hint": "Expected filename pattern",
|
|
61
|
+
|
|
62
|
+
"sidebar.failed_to_load": "Failed to load documents.",
|
|
63
|
+
"sidebar.no_docs": "No documents found.",
|
|
64
|
+
"sidebar.annotation_badge": "annotation",
|
|
65
|
+
"sidebar.annotated_docs_badge": "document with annotations",
|
|
66
|
+
"sidebar.file_attachment_badge": "attachment",
|
|
67
|
+
"sidebar.file_attached_docs_badge": "document with attachments",
|
|
68
|
+
|
|
69
|
+
"doc.validate_mode": "Validate document — flip frontmatter status from \"To be validated\" to \"Accepted\"",
|
|
70
|
+
"doc.validate_btn": "Validate",
|
|
71
|
+
"doc.validate_title": "Validate this document?",
|
|
72
|
+
"doc.validate_message": "The frontmatter status will change from \"To be validated\" to \"Accepted\".",
|
|
73
|
+
"doc.validate_detail_low_accuracy": "Reliability is currently {accuracy}. Confirming will also re-baseline source-file hashes, bringing reliability back to 100%.",
|
|
74
|
+
"doc.validate_confirm": "Validate",
|
|
75
|
+
"doc.validate_failed": "Validation failed: ",
|
|
76
|
+
"metadata.readonly_banner": "Read-only — this document is SuperSeeded. Source metadata can still be viewed but not edited.",
|
|
77
|
+
"doc.marker_mode": "Marker mode — highlight to annotate",
|
|
78
|
+
"doc.marker_btn": "Marker",
|
|
79
|
+
"doc.toggle_width": "Toggle full width",
|
|
80
|
+
"doc.full_width_btn": "↔ Full width",
|
|
81
|
+
"doc.full_width_narrow_btn": "⇤ Narrow",
|
|
82
|
+
"doc.export_pdf": "Export as PDF",
|
|
83
|
+
"doc.export_pdf_btn": "Export PDF",
|
|
84
|
+
"doc.copy_link": "Copy link",
|
|
85
|
+
"doc.copy_link_btn": "Copy link",
|
|
86
|
+
"doc.copy_mcp_id": "Copy MCP document id",
|
|
87
|
+
"doc.copy_mcp_id_copied": "MCP document id copied",
|
|
88
|
+
"doc.edit": "Edit document",
|
|
89
|
+
"doc.edit_btn": "Edit",
|
|
90
|
+
"doc.delete": "Delete document",
|
|
91
|
+
"doc.delete_btn": "Delete",
|
|
92
|
+
"doc.confirm_delete": "Permanently delete this document?",
|
|
93
|
+
"doc.confirm_delete_btn": "Delete",
|
|
94
|
+
"doc.cancel_edit": "Cancel editing",
|
|
95
|
+
"doc.snippets": "Insert a snippet",
|
|
96
|
+
"doc.snippets_btn": "🧩 Snippets",
|
|
97
|
+
"doc.save": "Save document",
|
|
98
|
+
"doc.uploading_image": "Uploading image…",
|
|
99
|
+
"doc.image_upload_failed": "Image upload failed: ",
|
|
100
|
+
"doc.uploading_file": "Uploading file…",
|
|
101
|
+
"doc.file_upload_failed": "File upload failed: ",
|
|
102
|
+
"doc.file_too_large": "File too large",
|
|
103
|
+
"doc.saving": "Saving…",
|
|
104
|
+
"doc.failed_to_load": "Failed to load document: ",
|
|
105
|
+
"doc.copied": "✓ Copied!",
|
|
106
|
+
"doc.code_show_more": "▾ Show more",
|
|
107
|
+
"doc.code_show_less": "▴ Show less",
|
|
108
|
+
"doc.code_copy": "Copy",
|
|
109
|
+
"doc.code_copied": "Copied!",
|
|
110
|
+
|
|
111
|
+
"metadata.button": "Metadata",
|
|
112
|
+
"metadata.button_title": "Manage source-file metadata",
|
|
113
|
+
"metadata.title": "Source metadata",
|
|
114
|
+
"metadata.subtitle": "Attach source files to track whether this document is still accurate.",
|
|
115
|
+
"metadata.add": "Add source file",
|
|
116
|
+
"metadata.refresh": "Refresh hashes",
|
|
117
|
+
"metadata.remove": "Remove",
|
|
118
|
+
"metadata.empty": "No metadata yet — add a source file to start tracking reliability.",
|
|
119
|
+
"metadata.status.unchanged": "Unchanged",
|
|
120
|
+
"metadata.status.modified": "Modified",
|
|
121
|
+
"metadata.status.missing": "Missing",
|
|
122
|
+
"accuracy.label": "Reliability",
|
|
123
|
+
"accuracy.tooltip": "Unchanged: {unchanged} · Modified: {modified} · Missing: {missing} · Total: {total}",
|
|
124
|
+
|
|
125
|
+
"context.back_to_docs": "Back to docs",
|
|
126
|
+
"context.title": "AI Context",
|
|
127
|
+
"context.orientation_title": "AI orientation",
|
|
128
|
+
"context.orientation_intro": "Stable instructions and rules for AI-assisted development.",
|
|
129
|
+
"context.instructions_title": "Instruction files",
|
|
130
|
+
"context.add_instruction_file": "Add AI instruction file",
|
|
131
|
+
"context.hide_instruction_browser": "Hide file browser",
|
|
132
|
+
"context.rules_title": "AI rules",
|
|
133
|
+
"context.add_rule_title": "Add AI rule",
|
|
134
|
+
"context.add_rule_button": "Add rule",
|
|
135
|
+
"context.mcp_title": "MCP explorer",
|
|
136
|
+
"context.mcp_intro": "Verify the local Living Documentation MCP endpoint exposed to AI tools.",
|
|
137
|
+
"context.mcp_refresh": "Refresh",
|
|
138
|
+
"context.mcp_status": "Status",
|
|
139
|
+
"context.mcp_transport": "Transport",
|
|
140
|
+
"context.mcp_endpoint": "Endpoint",
|
|
141
|
+
"context.mcp_tools": "Tools",
|
|
142
|
+
"context.mcp_prompts": "Prompts",
|
|
143
|
+
"context.mcp_available": "Available",
|
|
144
|
+
"context.mcp_unavailable": "Unavailable",
|
|
145
|
+
"context.mcp_no_tools": "No tools exposed.",
|
|
146
|
+
"context.mcp_no_prompts": "No prompts exposed.",
|
|
147
|
+
"context.mcp_input_schema": "Input schema",
|
|
148
|
+
"context.mcp_arguments": "Arguments",
|
|
149
|
+
"context.mcp_required": "Required",
|
|
150
|
+
"context.mcp_optional": "Optional",
|
|
151
|
+
"context.mcp_request_json": "Request JSON",
|
|
152
|
+
"context.mcp_run_tool": "Run tool",
|
|
153
|
+
"context.mcp_get_prompt": "Get prompt",
|
|
154
|
+
"context.mcp_run_all_tools": "Run all tools",
|
|
155
|
+
"context.mcp_get_all_prompts": "Get all prompts",
|
|
156
|
+
"context.mcp_running_all": "Running… {current}/{total}",
|
|
157
|
+
"context.mcp_done_all": "Done — {total} item(s) processed.",
|
|
158
|
+
"context.mcp_invalid_json": "Invalid JSON.",
|
|
159
|
+
"context.mcp_running": "Running…",
|
|
160
|
+
"context.mcp_error": "MCP call returned an error.",
|
|
161
|
+
"context.mcp_saved_to": "Saved to:",
|
|
162
|
+
"context.loading": "Loading…",
|
|
163
|
+
"context.empty": "Nothing listed.",
|
|
164
|
+
"context.exists": "Found",
|
|
165
|
+
"context.missing": "Missing",
|
|
166
|
+
"context.root.sourceRoot": "Source root",
|
|
167
|
+
"context.root.docsFolder": "Docs folder",
|
|
168
|
+
"context.type.file": "File",
|
|
169
|
+
"context.type.directory": "Directory",
|
|
170
|
+
"context.type.missing": "Missing",
|
|
171
|
+
"context.no_rules": "No AI rules yet. Add one to create documentation/AI/rules/*.md.",
|
|
172
|
+
"context.no_instructions": "No AI instruction files yet. Add one to link a document under AI/.",
|
|
173
|
+
"context.add_file_action": "+ Add",
|
|
174
|
+
"context.added": "Added",
|
|
175
|
+
"context.adding_instruction_file": "Adding instruction file…",
|
|
176
|
+
"context.removing_instruction_file": "Removing instruction file…",
|
|
177
|
+
"context.remove_instruction_title": "Remove instruction file",
|
|
178
|
+
"context.remove_instruction_message": "Remove \"{name}\" from AI instructions?",
|
|
179
|
+
"context.remove_instruction_detail": "The symbolic link under AI/ will be deleted. The original file is kept.",
|
|
180
|
+
"context.rule_title_label": "Title",
|
|
181
|
+
"context.rule_title_placeholder": "Avoid magic numbers",
|
|
182
|
+
"context.rule_severity_label": "Severity",
|
|
183
|
+
"context.rule_severity_guideline": "Guideline",
|
|
184
|
+
"context.rule_severity_warning": "Warning",
|
|
185
|
+
"context.rule_severity_required": "Required",
|
|
186
|
+
"context.rule_description_label": "Description",
|
|
187
|
+
"context.rule_description_placeholder": "Name domain constants instead of repeating raw values.",
|
|
188
|
+
"context.rule_tags_label": "Tags",
|
|
189
|
+
"context.rule_tags_placeholder": "code-quality, maintainability",
|
|
190
|
+
"context.rule_applies_to_label": "Applies to",
|
|
191
|
+
"context.rule_applies_to_placeholder": "src/**/*.ts, src/frontend/**/*.js",
|
|
192
|
+
"context.rule_body_label": "Rule body",
|
|
193
|
+
"context.rule_body_placeholder": "Numeric constants with domain meaning should be named.",
|
|
194
|
+
"context.rule_title_required": "Rule title is required.",
|
|
195
|
+
"context.saving_rule": "Saving rule…",
|
|
196
|
+
|
|
197
|
+
"modal.new_folder.title": "New folder",
|
|
198
|
+
"modal.new_folder.name_label": "Folder name",
|
|
199
|
+
"modal.new_folder.name_placeholder": "my-folder",
|
|
200
|
+
"modal.new_folder.location_label": "Location",
|
|
201
|
+
"modal.new_folder.root": "/ (root)",
|
|
202
|
+
"modal.new_folder.browse_btn": "Browse…",
|
|
203
|
+
"modal.new_folder.enter_name": "(enter a name)",
|
|
204
|
+
"modal.new_folder.will_be_created": "Will be created at",
|
|
205
|
+
"modal.new_folder.create_btn": "Create",
|
|
206
|
+
"modal.new_folder.creating_btn": "Creating…",
|
|
207
|
+
"modal.new_folder.error_empty": "Please enter a folder name.",
|
|
208
|
+
"modal.new_folder.error_invalid_chars": "Invalid characters in folder name.",
|
|
209
|
+
"modal.new_folder.error_reserved": "\"files\" and \"images\" are reserved folder names at the docs root.",
|
|
210
|
+
"modal.new_folder.no_subfolders": "No subfolders",
|
|
211
|
+
"modal.new_folder.error_loading": "Error loading",
|
|
212
|
+
|
|
213
|
+
"modal.new_doc.title": "New document",
|
|
214
|
+
"modal.new_doc.title_label": "Title",
|
|
215
|
+
"modal.new_doc.category_label": "Category",
|
|
216
|
+
"modal.new_doc.location_label": "Location",
|
|
217
|
+
"modal.new_doc.filename_label": "Generated filename",
|
|
218
|
+
"modal.new_doc.title_placeholder": "(enter a title)",
|
|
219
|
+
"modal.new_doc.browse_btn": "Browse",
|
|
220
|
+
"modal.new_doc.new_folder_placeholder": "New folder name…",
|
|
221
|
+
"modal.new_doc.create_folder_btn": "+ Create",
|
|
222
|
+
"modal.new_doc.error_empty_title": "Please enter a title.",
|
|
223
|
+
"modal.new_doc.no_subfolders": "No sub-folders",
|
|
224
|
+
|
|
225
|
+
"modal.diag_link.title": "◇ Link a diagram",
|
|
226
|
+
"modal.diag_link.existing_radio": "Existing diagram",
|
|
227
|
+
"modal.diag_link.new_radio": "New diagram",
|
|
228
|
+
"modal.diag_link.select_label": "Select diagram",
|
|
229
|
+
"modal.diag_link.name_label": "Diagram name",
|
|
230
|
+
"modal.diag_link.name_placeholder": "My diagram",
|
|
231
|
+
"modal.diag_link.img_label": "Image filename",
|
|
232
|
+
"modal.diag_link.img_hint": "(saved in ./images/)",
|
|
233
|
+
"modal.diag_link.markdown_label": "Markdown that will be appended",
|
|
234
|
+
"modal.diag_link.insert_btn": "Insert & Open Diagram",
|
|
235
|
+
"modal.diag_link.saving_btn": "Saving…",
|
|
236
|
+
"modal.diag_link.no_diagrams": "No diagrams yet",
|
|
237
|
+
|
|
238
|
+
"snippet.modal_title": "🧩 Insert a snippet",
|
|
239
|
+
"snippet.type_label": "Snippet type",
|
|
240
|
+
"snippet.diagram": "◇ Diagram",
|
|
241
|
+
"snippet.collapsible": "▸ Collapsible block (details)",
|
|
242
|
+
"snippet.link": "🔗 Link",
|
|
243
|
+
"snippet.link_doc": "📄 Link to document",
|
|
244
|
+
"snippet.link_anchor": "⚓ Link to anchor",
|
|
245
|
+
"snippet.link_doc_anchor": "📄⚓ Link to document with anchor",
|
|
246
|
+
"snippet.numbered_list": "🔢 Numbered list",
|
|
247
|
+
"snippet.bullet_list": "• Bullet list",
|
|
248
|
+
"snippet.code_block": "💻 Code block",
|
|
249
|
+
"snippet.blockquote": "❝ Blockquote",
|
|
250
|
+
"snippet.separator": "― Horizontal rule",
|
|
251
|
+
"snippet.image": "🖼 Image",
|
|
252
|
+
"snippet.table": "▦ Table",
|
|
253
|
+
"snippet.tree": "🌳 Tree",
|
|
254
|
+
"snippet.colored_section": "🎨 Colored section",
|
|
255
|
+
"snippet.colored_section_color_label": "Color",
|
|
256
|
+
"snippet.colored_section_swatch_info": "Info (blue)",
|
|
257
|
+
"snippet.colored_section_swatch_success": "Success (green)",
|
|
258
|
+
"snippet.colored_section_swatch_warning": "Warning (amber)",
|
|
259
|
+
"snippet.colored_section_swatch_danger": "Danger (red)",
|
|
260
|
+
"snippet.colored_section_swatch_note": "Note (purple)",
|
|
261
|
+
"snippet.colored_section_swatch_neutral": "Neutral (gray)",
|
|
262
|
+
"snippet.colored_section_content_label": "Content",
|
|
263
|
+
"snippet.colored_section_content_placeholder": "Your text here…",
|
|
264
|
+
"snippet.colored_text": "🖍 Colored text",
|
|
265
|
+
"snippet.colored_text_color_label": "Color",
|
|
266
|
+
"snippet.colored_text_content_label": "Text",
|
|
267
|
+
"snippet.colored_text_content_placeholder": "Your text…",
|
|
268
|
+
"snippet.collapsible_summary_label": "Summary title",
|
|
269
|
+
"snippet.collapsible_details_placeholder": "Details",
|
|
270
|
+
"snippet.collapsible_summary_value": "Details",
|
|
271
|
+
"snippet.link_text_label": "Link text",
|
|
272
|
+
"snippet.link_text_placeholder": "My link",
|
|
273
|
+
"snippet.link_url_label": "URL",
|
|
274
|
+
"snippet.link_url_placeholder": "https://…",
|
|
275
|
+
"snippet.link_doc_label": "Document",
|
|
276
|
+
"snippet.link_doc_text_hint": "(optional, uses default title)",
|
|
277
|
+
"snippet.link_section_placeholder": "View section",
|
|
278
|
+
"snippet.link_section_hint": "(optional, uses default title)",
|
|
279
|
+
"snippet.link_anchor_label": "Anchor",
|
|
280
|
+
"snippet.link_anchor_placeholder": "my-heading",
|
|
281
|
+
"snippet.link_anchor_hint": "(without #, e.g. my-heading)",
|
|
282
|
+
"snippet.link_anchor_select_hint": "(pick a heading from the document)",
|
|
283
|
+
"snippet.link_anchor_no_headings": "No headings detected in this document",
|
|
284
|
+
"snippet.link_target_doc_label": "Target document",
|
|
285
|
+
"snippet.code_lang_label": "Language",
|
|
286
|
+
"snippet.code_lang_hint": "(e.g. javascript, python, bash…)",
|
|
287
|
+
"snippet.image_alt_label": "Alt text",
|
|
288
|
+
"snippet.image_alt_placeholder": "Image description",
|
|
289
|
+
"snippet.image_url_label": "Image URL",
|
|
290
|
+
"snippet.image_url_placeholder": "(saved in ./images/)",
|
|
291
|
+
"snippet.image_src_placeholder": "./images/my-image.png",
|
|
292
|
+
"snippet.table_rows_label": "Rows",
|
|
293
|
+
"snippet.table_cols_label": "Columns",
|
|
294
|
+
"snippet.tree_hint": "← → to indent · names with / will be folders",
|
|
295
|
+
"snippet.tree_add_btn": "+ Add item",
|
|
296
|
+
"snippet.markdown_preview_label": "Markdown preview",
|
|
297
|
+
"snippet.insert_btn": "Insert",
|
|
298
|
+
"snippet.diagram_existing": "Existing diagram",
|
|
299
|
+
"snippet.diagram_new": "New diagram",
|
|
300
|
+
"snippet.diagram_select_label": "Select diagram",
|
|
301
|
+
"snippet.diagram_no_diagrams": "No diagrams",
|
|
302
|
+
"snippet.diagram_name_label": "Diagram name",
|
|
303
|
+
"snippet.diagram_name_placeholder": "Diagram name…",
|
|
304
|
+
"snippet.diag_img_label": "Image filename",
|
|
305
|
+
"snippet.diag_img_saved_hint": "(saved in ./images/)",
|
|
306
|
+
"snippet.diagram_markdown_label": "Markdown that will be appended",
|
|
307
|
+
"snippet.insert_open_btn": "Insert & Open Diagram",
|
|
308
|
+
"snippet.saving_btn": "Saving…",
|
|
309
|
+
"snippet.detected_msg": "✓ Detected type: {type}. Fields pre-filled — edit then click Insert to replace selection.",
|
|
310
|
+
"snippet.unknown_type_msg": "⚠ Selected text doesn't match any known snippet type. Choose a type below — the snippet will still replace the selection.",
|
|
311
|
+
"snippet.emojis": "😀 Emojis",
|
|
312
|
+
"snippet.emoji_selected_label": "Selected emojis",
|
|
313
|
+
"snippet.emoji_clear_btn": "Clear",
|
|
314
|
+
"snippet.emoji_cat_smileys": "Smileys & people",
|
|
315
|
+
"snippet.emoji_cat_gestures": "Gestures & body",
|
|
316
|
+
"snippet.emoji_cat_hearts": "Hearts & sparks",
|
|
317
|
+
"snippet.emoji_cat_objects": "Tech & tools",
|
|
318
|
+
"snippet.emoji_cat_office": "Office & docs",
|
|
319
|
+
"snippet.emoji_cat_symbols": "Symbols & arrows",
|
|
320
|
+
"snippet.emoji_search_placeholder": "Search emojis… (e.g. heart, star, rocket)",
|
|
321
|
+
"snippet.emoji_no_results": "No emoji matches this search.",
|
|
322
|
+
"snippet.attachment": "📎 File attachment",
|
|
323
|
+
"snippet.local_search": "🔎 Local search",
|
|
324
|
+
"local_search.placeholder": "Search in this document…",
|
|
325
|
+
"local_search.clear": "Clear",
|
|
326
|
+
"local_search.no_results": "No matches found.",
|
|
327
|
+
"local_search.count_singular": "{count} match",
|
|
328
|
+
"local_search.count_plural": "{count} matches",
|
|
329
|
+
"snippet.attachment_help": "Click <strong>Insert</strong> to choose a file. It will be uploaded under the <code>files/</code> folder and inserted as a <i class=\"fa-solid fa-paperclip\"></i> link in your document.",
|
|
330
|
+
"snippet.attachment_alt": "Tip: you can also drag & drop a file onto the editor, or paste it from the clipboard.",
|
|
331
|
+
|
|
332
|
+
"modal.img_paste.title": "Paste clipboard image?",
|
|
333
|
+
"modal.img_paste.filename_label": "Filename",
|
|
334
|
+
"modal.img_paste.saved_hint": "(saved in images/)",
|
|
335
|
+
"modal.img_paste.paste_btn": "Paste",
|
|
336
|
+
|
|
337
|
+
"modal.export.title": "Export",
|
|
338
|
+
"modal.export.tab_markdown": "Markdown",
|
|
339
|
+
"modal.export.tab_html": "HTML",
|
|
340
|
+
"modal.export.tab_pdf": "PDF",
|
|
341
|
+
"modal.export.markdown_hint": "Export all documents and images as Markdown files, with internal links rewritten to relative paths.",
|
|
342
|
+
"modal.export.markdown_btn": "Export Markdown",
|
|
343
|
+
"modal.export.pdf_hint": "Export all documents as a single PDF with table of contents.",
|
|
344
|
+
"modal.export.pdf_btn": "Export all PDF",
|
|
345
|
+
|
|
346
|
+
"modal.export_html.title": "Export folders as HTML",
|
|
347
|
+
"modal.export_html.hint": "Select the folders to include in the ZIP archive.",
|
|
348
|
+
"modal.export_html.notion_btn": "Export Notion",
|
|
349
|
+
"modal.export_html.confluence_btn": "Export Confluence",
|
|
350
|
+
|
|
351
|
+
"annotation.title": "Annotation",
|
|
352
|
+
"annotation.placeholder": "Your comment or suggestion…",
|
|
353
|
+
"annotation.save_btn": "Save",
|
|
354
|
+
"annotation.delete_btn": "🗑 Delete",
|
|
355
|
+
"annotation.confirm_delete": "Delete this annotation?",
|
|
356
|
+
"annotation.confirm_btn": "Delete",
|
|
357
|
+
"annotation.orphan": "⚠ Annotated text not found — the excerpt has been edited or removed.",
|
|
358
|
+
|
|
359
|
+
"wc.title": "☁ Word Cloud",
|
|
360
|
+
"wc.close_btn": "✕ Close",
|
|
361
|
+
"wc.search_root_label": "Search root",
|
|
362
|
+
"wc.browse_btn": "Browse",
|
|
363
|
+
"wc.exclude_label": "Exclude",
|
|
364
|
+
"wc.exclude_placeholder": "components/ui, package-lock.json (one per line or comma-separated)",
|
|
365
|
+
"wc.extensions_label": "Extensions",
|
|
366
|
+
"wc.all_btn": "All",
|
|
367
|
+
"wc.min_files_label": "Min files",
|
|
368
|
+
"wc.apply_btn": "Apply",
|
|
369
|
+
"wc.top_words": "Top words",
|
|
370
|
+
"wc.found_in": "Found in",
|
|
371
|
+
"wc.launch_btn": "Launch",
|
|
372
|
+
|
|
373
|
+
"search.notice_singular": "Showing {count} match for \"{query}\"",
|
|
374
|
+
"search.notice_plural": "Showing {count} matches for \"{query}\"",
|
|
375
|
+
|
|
376
|
+
"error.create_diagram": "Error creating diagram: ",
|
|
377
|
+
"error.save": "Save failed: ",
|
|
378
|
+
"error.pdf_popup": "Please allow popups to export as PDF.",
|
|
379
|
+
"error.pdf_export": "Export failed: ",
|
|
380
|
+
"error.no_diagrams": "No diagrams",
|
|
381
|
+
|
|
382
|
+
"pdf.toc_title": "Table of Contents",
|
|
383
|
+
|
|
384
|
+
"admin.title": "Admin Panel",
|
|
385
|
+
"admin.toggle_dark": "Toggle dark mode",
|
|
386
|
+
"admin.back_to_docs": "Back to docs →",
|
|
387
|
+
|
|
388
|
+
"admin.server_info.title": "Server Info",
|
|
389
|
+
"admin.server_info.docs_folder": "Docs Folder",
|
|
390
|
+
"admin.server_info.port": "Port",
|
|
391
|
+
"admin.server_info.source_root": "Source Root",
|
|
392
|
+
"admin.server_info.source_root_hint": "Path relative to the docs folder (e.g. \"..\" or \"../src\"). Used by MCP source tools. Leave empty to default to the parent directory.",
|
|
393
|
+
|
|
394
|
+
"admin.config.title": "Configuration",
|
|
395
|
+
"admin.config.description": "Settings are saved to .living-doc.json in your docs folder.",
|
|
396
|
+
"admin.config.save_btn": "Save changes",
|
|
397
|
+
|
|
398
|
+
"admin.section.general.title": "General",
|
|
399
|
+
"admin.section.general.desc": "Site identity, theme, and interface language.",
|
|
400
|
+
"admin.section.filename.title": "Filename convention",
|
|
401
|
+
"admin.section.filename.desc": "How new documents are named, and how the viewer parses them.",
|
|
402
|
+
"admin.section.source.title": "Source & extra files",
|
|
403
|
+
"admin.section.source.desc": "Code source root (for MCP tools) and Markdown files pulled from outside the docs folder.",
|
|
404
|
+
"admin.section.sidebar.title": "Sidebar behaviour",
|
|
405
|
+
"admin.section.sidebar.desc": "How folders and categories expand in the left drawer.",
|
|
406
|
+
"admin.section.markdown.title": "Markdown rendering",
|
|
407
|
+
"admin.section.markdown.desc": "How the viewer renders newlines and long code blocks.",
|
|
408
|
+
"admin.section.files.title": "File attachments",
|
|
409
|
+
"admin.section.diagram.title": "Diagram palettes",
|
|
410
|
+
"admin.section.diagram.desc": "Customize the colors available in the diagram editor.",
|
|
411
|
+
"admin.section.developer.title": "Developer",
|
|
412
|
+
"admin.section.developer.desc": "Advanced options for power users.",
|
|
413
|
+
"admin.section.added_files_label": "Added files",
|
|
414
|
+
|
|
415
|
+
"admin.appearance.site_title_label": "Site Title",
|
|
416
|
+
"admin.appearance.site_title_placeholder": "Living Documentation",
|
|
417
|
+
"admin.appearance.site_title_hint": "Displayed in the browser tab and sidebar header.",
|
|
418
|
+
"admin.appearance.theme_label": "Default Theme",
|
|
419
|
+
"admin.appearance.theme_system": "System (follow OS preference)",
|
|
420
|
+
"admin.appearance.theme_light": "Light",
|
|
421
|
+
"admin.appearance.theme_dark": "Dark",
|
|
422
|
+
"admin.appearance.theme_hint": "Users can always override with the toggle button.",
|
|
423
|
+
"admin.appearance.language_label": "Language",
|
|
424
|
+
"admin.appearance.language_en": "English",
|
|
425
|
+
"admin.appearance.language_fr": "Français",
|
|
426
|
+
"admin.appearance.language_hint": "Interface language for all pages.",
|
|
427
|
+
"admin.appearance.debug_label": "Show debug button in diagram editor",
|
|
428
|
+
"admin.appearance.debug_hint": "Displays a Debug button that overlays raw position and size info on each node — useful for diagnosing snap-to-grid issues.",
|
|
429
|
+
"admin.appearance.exclusive_folder_label": "Exclusive folder expansion in sidebar",
|
|
430
|
+
"admin.appearance.exclusive_folder_hint": "When enabled, opening a folder in the sidebar automatically closes any other open folder at the same level (and its children).",
|
|
431
|
+
"admin.appearance.exclusive_category_label": "Exclusive category expansion in sidebar",
|
|
432
|
+
"admin.appearance.exclusive_category_hint": "When enabled, opening a category automatically closes any other open category under the same parent folder.",
|
|
433
|
+
"admin.appearance.code_max_height_label": "Code block max height (px)",
|
|
434
|
+
"admin.appearance.code_max_height_hint": "Longer code blocks get a collapse/expand button. Set to 0 to disable.",
|
|
435
|
+
"admin.appearance.soft_breaks_label": "Treat every newline as a line break",
|
|
436
|
+
"admin.appearance.soft_breaks_hint": "<strong>Unchecked (CommonMark, default):</strong> a single newline in the source is rendered as a space — two adjacent lines merge into one paragraph. To force a line break without leaving a blank line, end the previous line with <code>two spaces</code> then newline, or use <code><br/></code>.<br/><strong>Checked (GitHub-flavoured):</strong> every single newline becomes a real line break in the rendered output. Convenient for chat-style writing, but you can no longer hard-wrap long paragraphs in the source file without visible breaks.",
|
|
437
|
+
|
|
438
|
+
"admin.pattern.label": "Filename Pattern",
|
|
439
|
+
"admin.pattern.placeholder": "YYYY_MM_DD_HH_mm_[Category]_title",
|
|
440
|
+
"admin.pattern.hint": "Parsed for date, category, and title.",
|
|
441
|
+
"admin.pattern.preview_title": "Pattern Preview",
|
|
442
|
+
"admin.pattern.preview_desc": "How your pattern parses example filenames:",
|
|
443
|
+
"admin.pattern.col_date": "Date",
|
|
444
|
+
"admin.pattern.col_category": "Category",
|
|
445
|
+
"admin.pattern.col_title": "Title",
|
|
446
|
+
"admin.pattern.col_none": "none",
|
|
447
|
+
"admin.pattern.col_general": "General",
|
|
448
|
+
|
|
449
|
+
"admin.extra_files.title": "General — Extra Files",
|
|
450
|
+
"admin.extra_files.description": "Add Markdown files from outside the docs folder to the General section.",
|
|
451
|
+
"admin.extra_files.empty": "No extra files added yet.",
|
|
452
|
+
"admin.extra_files.add_btn": "+ Add",
|
|
453
|
+
"admin.extra_files.added_label": "Added",
|
|
454
|
+
"admin.extra_files.loading": "Loading…",
|
|
455
|
+
|
|
456
|
+
"admin.files.title": "File Attachments",
|
|
457
|
+
"admin.files.description": "Extensions that are rejected by the <code>/api/files/upload</code> endpoint. One extension per line (or comma/space separated), without the leading dot.",
|
|
458
|
+
"admin.files.blocked_label": "Blocked extensions",
|
|
459
|
+
"admin.files.hint": "Defaults to common executable formats. Max upload size is 19 MB per file.",
|
|
460
|
+
|
|
461
|
+
"admin.palette.title": "Diagram Color Palettes",
|
|
462
|
+
"admin.palette.description": "Customize the colors available in the diagram editor. Changes take effect after saving.",
|
|
463
|
+
"admin.palette.shapes_title": "Shape colors",
|
|
464
|
+
"admin.palette.shapes_hint": "Click a color to show or hide it in the node panel. Dimmed = hidden.",
|
|
465
|
+
"admin.palette.reset_btn": "Reset",
|
|
466
|
+
"admin.palette.arrows_title": "Arrow colors",
|
|
467
|
+
"admin.palette.arrows_hint": "Add or remove colors available for arrows. Click ✕ to remove.",
|
|
468
|
+
"admin.palette.add_color_btn": "Add color",
|
|
469
|
+
"admin.palette.delete_color_title": "Remove",
|
|
470
|
+
|
|
471
|
+
"admin.license.title": "AGPL-3.0 License — Open Source",
|
|
472
|
+
"admin.license.subtitle": "Free to use, fork, and build upon — derivatives and network-hosted services must remain under AGPL (copyleft + SaaS clause).",
|
|
473
|
+
"admin.license.body": "This open source project is gracefully provided to you by its conceptors <strong>Youssef MEDAGHRI-ALAOUI</strong> & <strong>Claude Code</strong>.",
|
|
474
|
+
"admin.license.linkedin_btn": "Youssef on LinkedIn",
|
|
475
|
+
"admin.license.npm_btn": "living-ai-documentation on npm",
|
|
476
|
+
|
|
477
|
+
"admin.msg.saved": "Saved!",
|
|
478
|
+
"admin.msg.save_failed": "Save failed: ",
|
|
479
|
+
"admin.msg.load_failed": "Failed to load config.",
|
|
480
|
+
"admin.msg.pattern_no_category": "Filename pattern must contain [Category]",
|
|
481
|
+
"admin.msg.pattern_one_category": "Filename pattern must contain [Category] exactly once",
|
|
482
|
+
"admin.msg.source_root_absolute": "Source Root must be a relative path (e.g. \"..\" or \"../src\"). Absolute paths are not allowed.",
|
|
483
|
+
|
|
484
|
+
"diagram.back_btn": "← Back",
|
|
485
|
+
"diagram.diagrams_list_title": "My diagrams",
|
|
486
|
+
"diagram.toolbar.copy_mcp_id": "Copy MCP diagram id",
|
|
487
|
+
"diagram.toolbar.copy_mcp_id_copied": "MCP diagram id copied",
|
|
488
|
+
"diagram.toolbar.select": "Select (S)",
|
|
489
|
+
"diagram.toolbar.box": "Rectangle (R)",
|
|
490
|
+
"diagram.toolbar.ellipse": "Ellipse (E)",
|
|
491
|
+
"diagram.toolbar.database": "Database (D)",
|
|
492
|
+
"diagram.toolbar.circle": "Circle (C)",
|
|
493
|
+
"diagram.toolbar.actor": "Actor (A)",
|
|
494
|
+
"diagram.toolbar.postit": "Post-it (P)",
|
|
495
|
+
"diagram.toolbar.text_free": "Free text (T)",
|
|
496
|
+
"diagram.toolbar.image": "Image — double-click on canvas to select a file, or paste (⌘V) from clipboard",
|
|
497
|
+
"diagram.toolbar.shape_editor": "Custom shape editor",
|
|
498
|
+
"diagram.toolbar.arrow": "Arrow (F)",
|
|
499
|
+
"diagram.toolbar.delete": "Delete (Del)",
|
|
500
|
+
"diagram.toolbar.align_guides": "Alignment guides — highlights same-type shape alignment",
|
|
501
|
+
"diagram.toolbar.grid": "Grid / Snap to grid (G)",
|
|
502
|
+
"diagram.toolbar.edge_style": "Toggle curved / straight arrows",
|
|
503
|
+
"diagram.toolbar.resize_corner": "Resize mode: fixed corner (click for fixed centre)",
|
|
504
|
+
"diagram.toolbar.resize_center": "Resize mode: fixed centre (click for fixed corner)",
|
|
505
|
+
"diagram.toolbar.title_placeholder": "Diagram title",
|
|
506
|
+
"diagram.toolbar.zoom_out": "Zoom −",
|
|
507
|
+
"diagram.toolbar.zoom_in": "Zoom +",
|
|
508
|
+
"diagram.toolbar.fit": "Fit view",
|
|
509
|
+
"diagram.toolbar.debug": "Debug overlay",
|
|
510
|
+
"diagram.toolbar.export_drawio": "Export as drawio (.drawio)",
|
|
511
|
+
"diagram.toolbar.save": "Save",
|
|
512
|
+
|
|
513
|
+
"diagram.sidebar.title": "Diagrams",
|
|
514
|
+
"diagram.sidebar.new_btn": "+ New",
|
|
515
|
+
"diagram.sidebar.empty": "No diagrams",
|
|
516
|
+
"diagram.sidebar.delete_title": "Delete",
|
|
517
|
+
|
|
518
|
+
"diagram.node_panel.lock": "Lock selection",
|
|
519
|
+
"diagram.node_panel.unlock": "Unlock selection",
|
|
520
|
+
"diagram.node_panel.edit_label": "Edit text (double-click)",
|
|
521
|
+
"diagram.node_panel.edit_link": "Add / edit link",
|
|
522
|
+
"diagram.node_panel.bg_opacity": "Background opacity",
|
|
523
|
+
"diagram.node_panel.font_decrease": "Decrease font size",
|
|
524
|
+
"diagram.node_panel.font_size_value": "Current font size",
|
|
525
|
+
"diagram.node_panel.font_increase": "Increase font size",
|
|
526
|
+
"diagram.node_panel.align_left": "Align left",
|
|
527
|
+
"diagram.node_panel.align_center": "Align center",
|
|
528
|
+
"diagram.node_panel.align_right": "Align right",
|
|
529
|
+
"diagram.node_panel.align_top": "Align top",
|
|
530
|
+
"diagram.node_panel.align_middle": "Align middle",
|
|
531
|
+
"diagram.node_panel.align_bottom": "Align bottom",
|
|
532
|
+
"diagram.node_panel.custom_label_above": "Place custom shape label above this instance",
|
|
533
|
+
"diagram.node_panel.custom_label_below": "Place custom shape label below this instance",
|
|
534
|
+
"diagram.node_panel.custom_label_left": "Place custom shape label to the left of this instance",
|
|
535
|
+
"diagram.node_panel.custom_label_right": "Place custom shape label to the right of this instance",
|
|
536
|
+
"diagram.node_panel.custom_label_center": "Center custom shape label in this instance",
|
|
537
|
+
"diagram.node_panel.send_back": "Send to back",
|
|
538
|
+
"diagram.node_panel.bring_front": "Bring to front",
|
|
539
|
+
"diagram.node_panel.stamp_color": "Color stamp — select targets, click here, then click source",
|
|
540
|
+
"diagram.node_panel.stamp_font": "Font size stamp — select targets, click here, then click source",
|
|
541
|
+
"diagram.node_panel.stamp_size": "Size stamp — select targets, click here, then click source",
|
|
542
|
+
"diagram.node_panel.rotate_ccw": "Rotate counter-clockwise 10°",
|
|
543
|
+
"diagram.node_panel.rotate_cw": "Rotate clockwise 10°",
|
|
544
|
+
"diagram.node_panel.copy_png": "Copy selection as PNG (⌘⇧C)",
|
|
545
|
+
"diagram.node_panel.group": "Group selection",
|
|
546
|
+
"diagram.node_panel.ungroup": "Ungroup",
|
|
547
|
+
|
|
548
|
+
"diagram.link_panel.title": "Link on this shape",
|
|
549
|
+
"diagram.link_panel.external": "External URL",
|
|
550
|
+
"diagram.link_panel.url_placeholder": "https://…",
|
|
551
|
+
"diagram.link_panel.existing_diagram": "Existing diagram",
|
|
552
|
+
"diagram.link_panel.new_diagram": "New diagram",
|
|
553
|
+
"diagram.link_panel.diagram_name_placeholder": "Diagram name…",
|
|
554
|
+
"diagram.link_panel.save_btn": "Save",
|
|
555
|
+
"diagram.link_panel.remove_btn": "Remove",
|
|
556
|
+
|
|
557
|
+
"diagram.edge_panel.lock": "Lock arrow",
|
|
558
|
+
"diagram.edge_panel.unlock": "Unlock arrow",
|
|
559
|
+
"diagram.edge_panel.no_arrow": "Simple line",
|
|
560
|
+
"diagram.edge_panel.arrow_from": "Reverse directional arrow",
|
|
561
|
+
"diagram.edge_panel.arrow_to": "Directional arrow",
|
|
562
|
+
"diagram.edge_panel.arrow_both": "Bidirectional",
|
|
563
|
+
"diagram.edge_panel.solid": "Solid line",
|
|
564
|
+
"diagram.edge_panel.dashed": "Dashed line",
|
|
565
|
+
"diagram.edge_panel.font_decrease": "Decrease font size",
|
|
566
|
+
"diagram.edge_panel.font_increase": "Increase font size",
|
|
567
|
+
"diagram.edge_panel.edit_label": "Edit arrow label",
|
|
568
|
+
"diagram.edge_panel.reset_label_width": "Reset label width (auto)",
|
|
569
|
+
"diagram.edge_panel.rotate_label_ccw": "Rotate label counter-clockwise (−15°)",
|
|
570
|
+
"diagram.edge_panel.rotate_label_cw": "Rotate label clockwise (+15°)",
|
|
571
|
+
"diagram.edge_panel.offset_label_left": "Move label left",
|
|
572
|
+
"diagram.edge_panel.offset_label_right": "Move label right",
|
|
573
|
+
"diagram.edge_panel.offset_label_up": "Move label up",
|
|
574
|
+
"diagram.edge_panel.offset_label_down": "Move label down",
|
|
575
|
+
"diagram.edge_panel.offset_label_reset": "Reset label position",
|
|
576
|
+
"diagram.edge_panel.width_decrease": "Decrease width",
|
|
577
|
+
"diagram.edge_panel.width_increase": "Increase width",
|
|
578
|
+
"diagram.edge_panel.clear_ports": "Clear attachment points",
|
|
579
|
+
|
|
580
|
+
"diagram.toolbar.evidence_mode": "Source consultation mode",
|
|
581
|
+
"diagram.evidence.panel_title": "Sources",
|
|
582
|
+
"diagram.evidence.node_title": "Node sources",
|
|
583
|
+
"diagram.evidence.edge_title": "Relation sources",
|
|
584
|
+
"diagram.evidence.marker_title": "View document sources",
|
|
585
|
+
"diagram.evidence.close": "Close sources",
|
|
586
|
+
"diagram.evidence.empty": "No source attached.",
|
|
587
|
+
"diagram.evidence.section_label": "Section",
|
|
588
|
+
|
|
589
|
+
"diagram.label_input.placeholder": "Label…",
|
|
590
|
+
"diagram.empty_state": "Select or create a diagram",
|
|
591
|
+
|
|
592
|
+
"diagram.image_modal.title": "Image filename",
|
|
593
|
+
"diagram.image_modal.description": "Letters, numbers, _ and - only. Leave empty for auto-generated name.",
|
|
594
|
+
"diagram.image_modal.placeholder": "image_name",
|
|
595
|
+
"diagram.image_modal.error_chars": "Allowed characters: letters, numbers, _ and -",
|
|
596
|
+
"diagram.image_modal.cancel_btn": "Cancel",
|
|
597
|
+
"diagram.image_modal.paste_btn": "Paste",
|
|
598
|
+
|
|
599
|
+
"diagram.selection.rotate_shape": "Rotate shape",
|
|
600
|
+
"diagram.selection.rotate_text": "Rotate text",
|
|
601
|
+
|
|
602
|
+
"diagram.toast.png_copied": "PNG copied to clipboard",
|
|
603
|
+
"diagram.toast.png_copy_error": "Cannot copy image",
|
|
604
|
+
"diagram.toast.diagram_saved_png": "Diagram saved as image",
|
|
605
|
+
"diagram.toast.diagram_save_png_error": "Cannot save image",
|
|
606
|
+
"diagram.toast.image_added": "Image added",
|
|
607
|
+
"diagram.toast.image_import_error": "Cannot import image",
|
|
608
|
+
"diagram.toast.diagram_id_copied": "Diagram id copied to clipboard",
|
|
609
|
+
"diagram.toast.confirm_delete": "Delete this diagram?",
|
|
610
|
+
"diagram.toast.new_diagram_title": "New diagram",
|
|
611
|
+
"diagram.toast.untitled": "Untitled",
|
|
612
|
+
"diagram.toast.drawio_exported": "Diagram exported as .drawio",
|
|
613
|
+
"diagram.toast.drawio_export_error": "drawio export failed",
|
|
614
|
+
"diagram.toast.drawio_label_rotation_dropped": "{count} label rotation(s) dropped — drawio cannot rotate labels independently from their shape",
|
|
615
|
+
"diagram.toast.diagram_linked": "Diagram \"{title}\" created and linked",
|
|
616
|
+
|
|
617
|
+
"shape_editor.show_in_diagram_label": "Show in diagram palette",
|
|
618
|
+
"shape_editor.show_in_diagram_hint": "When disabled, existing diagram nodes still render but this shape is hidden from the bottom palette.",
|
|
619
|
+
"shape_editor.label_placement.below": "Below the shape",
|
|
620
|
+
"shape_editor.label_placement.above": "Above the shape",
|
|
621
|
+
"shape_editor.label_placement.right": "To the right",
|
|
622
|
+
"shape_editor.label_placement.left": "To the left",
|
|
623
|
+
"shape_editor.label_placement.center": "Centered in the shape"
|
|
624
|
+
}
|