living-documentation 7.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.
Files changed (173) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +329 -0
  3. package/dist/bin/cli.d.ts +3 -0
  4. package/dist/bin/cli.d.ts.map +1 -0
  5. package/dist/bin/cli.js +62 -0
  6. package/dist/bin/cli.js.map +1 -0
  7. package/dist/src/frontend/admin.html +1073 -0
  8. package/dist/src/frontend/annotations.js +546 -0
  9. package/dist/src/frontend/boot.js +90 -0
  10. package/dist/src/frontend/config.js +19 -0
  11. package/dist/src/frontend/dark-mode.js +20 -0
  12. package/dist/src/frontend/diagram/alignment.js +161 -0
  13. package/dist/src/frontend/diagram/clipboard.js +172 -0
  14. package/dist/src/frontend/diagram/constants.js +109 -0
  15. package/dist/src/frontend/diagram/debug.js +43 -0
  16. package/dist/src/frontend/diagram/edge-panel.js +260 -0
  17. package/dist/src/frontend/diagram/edge-rendering.js +12 -0
  18. package/dist/src/frontend/diagram/grid.js +78 -0
  19. package/dist/src/frontend/diagram/groups.js +102 -0
  20. package/dist/src/frontend/diagram/history.js +153 -0
  21. package/dist/src/frontend/diagram/image-name-modal.js +48 -0
  22. package/dist/src/frontend/diagram/image-upload.js +36 -0
  23. package/dist/src/frontend/diagram/label-editor.js +115 -0
  24. package/dist/src/frontend/diagram/link-panel.js +144 -0
  25. package/dist/src/frontend/diagram/main.js +299 -0
  26. package/dist/src/frontend/diagram/network.js +1473 -0
  27. package/dist/src/frontend/diagram/node-panel.js +267 -0
  28. package/dist/src/frontend/diagram/node-rendering.js +773 -0
  29. package/dist/src/frontend/diagram/persistence.js +161 -0
  30. package/dist/src/frontend/diagram/ports.js +386 -0
  31. package/dist/src/frontend/diagram/selection-overlay.js +336 -0
  32. package/dist/src/frontend/diagram/state.js +39 -0
  33. package/dist/src/frontend/diagram/t.js +3 -0
  34. package/dist/src/frontend/diagram/toast.js +21 -0
  35. package/dist/src/frontend/diagram/unlock-hold.js +182 -0
  36. package/dist/src/frontend/diagram/zoom.js +20 -0
  37. package/dist/src/frontend/diagram-link-modal.js +137 -0
  38. package/dist/src/frontend/diagram.html +1279 -0
  39. package/dist/src/frontend/documents.js +373 -0
  40. package/dist/src/frontend/export.js +338 -0
  41. package/dist/src/frontend/i18n/en.json +406 -0
  42. package/dist/src/frontend/i18n/fr.json +406 -0
  43. package/dist/src/frontend/i18n.js +32 -0
  44. package/dist/src/frontend/image-paste.js +101 -0
  45. package/dist/src/frontend/index.html +2314 -0
  46. package/dist/src/frontend/misc.js +25 -0
  47. package/dist/src/frontend/new-doc-modal.js +260 -0
  48. package/dist/src/frontend/new-folder-modal.js +174 -0
  49. package/dist/src/frontend/search.js +157 -0
  50. package/dist/src/frontend/sidebar-helpers.js +58 -0
  51. package/dist/src/frontend/sidebar.js +182 -0
  52. package/dist/src/frontend/snippet-detect.js +25 -0
  53. package/dist/src/frontend/snippet-table.js +85 -0
  54. package/dist/src/frontend/snippet-tree.js +94 -0
  55. package/dist/src/frontend/snippets.js +534 -0
  56. package/dist/src/frontend/state.js +28 -0
  57. package/dist/src/frontend/utils.js +21 -0
  58. package/dist/src/frontend/vendor/wordcloud2.js +1187 -0
  59. package/dist/src/frontend/wordcloud.js +693 -0
  60. package/dist/src/lib/config.d.ts +17 -0
  61. package/dist/src/lib/config.d.ts.map +1 -0
  62. package/dist/src/lib/config.js +79 -0
  63. package/dist/src/lib/config.js.map +1 -0
  64. package/dist/src/lib/parser.d.ts +11 -0
  65. package/dist/src/lib/parser.d.ts.map +1 -0
  66. package/dist/src/lib/parser.js +111 -0
  67. package/dist/src/lib/parser.js.map +1 -0
  68. package/dist/src/mcp/server.d.ts +3 -0
  69. package/dist/src/mcp/server.d.ts.map +1 -0
  70. package/dist/src/mcp/server.js +986 -0
  71. package/dist/src/mcp/server.js.map +1 -0
  72. package/dist/src/mcp/tools/diagrams.d.ts +44 -0
  73. package/dist/src/mcp/tools/diagrams.d.ts.map +1 -0
  74. package/dist/src/mcp/tools/diagrams.js +245 -0
  75. package/dist/src/mcp/tools/diagrams.js.map +1 -0
  76. package/dist/src/mcp/tools/documents.d.ts +26 -0
  77. package/dist/src/mcp/tools/documents.d.ts.map +1 -0
  78. package/dist/src/mcp/tools/documents.js +127 -0
  79. package/dist/src/mcp/tools/documents.js.map +1 -0
  80. package/dist/src/mcp/tools/source.d.ts +29 -0
  81. package/dist/src/mcp/tools/source.d.ts.map +1 -0
  82. package/dist/src/mcp/tools/source.js +200 -0
  83. package/dist/src/mcp/tools/source.js.map +1 -0
  84. package/dist/src/routes/annotations.d.ts +3 -0
  85. package/dist/src/routes/annotations.d.ts.map +1 -0
  86. package/dist/src/routes/annotations.js +83 -0
  87. package/dist/src/routes/annotations.js.map +1 -0
  88. package/dist/src/routes/browse.d.ts +3 -0
  89. package/dist/src/routes/browse.d.ts.map +1 -0
  90. package/dist/src/routes/browse.js +75 -0
  91. package/dist/src/routes/browse.js.map +1 -0
  92. package/dist/src/routes/config.d.ts +3 -0
  93. package/dist/src/routes/config.d.ts.map +1 -0
  94. package/dist/src/routes/config.js +97 -0
  95. package/dist/src/routes/config.js.map +1 -0
  96. package/dist/src/routes/diagrams.d.ts +3 -0
  97. package/dist/src/routes/diagrams.d.ts.map +1 -0
  98. package/dist/src/routes/diagrams.js +69 -0
  99. package/dist/src/routes/diagrams.js.map +1 -0
  100. package/dist/src/routes/documents.d.ts +8 -0
  101. package/dist/src/routes/documents.d.ts.map +1 -0
  102. package/dist/src/routes/documents.js +332 -0
  103. package/dist/src/routes/documents.js.map +1 -0
  104. package/dist/src/routes/export.d.ts +3 -0
  105. package/dist/src/routes/export.d.ts.map +1 -0
  106. package/dist/src/routes/export.js +277 -0
  107. package/dist/src/routes/export.js.map +1 -0
  108. package/dist/src/routes/images.d.ts +3 -0
  109. package/dist/src/routes/images.d.ts.map +1 -0
  110. package/dist/src/routes/images.js +49 -0
  111. package/dist/src/routes/images.js.map +1 -0
  112. package/dist/src/routes/wordcloud.d.ts +3 -0
  113. package/dist/src/routes/wordcloud.d.ts.map +1 -0
  114. package/dist/src/routes/wordcloud.js +95 -0
  115. package/dist/src/routes/wordcloud.js.map +1 -0
  116. package/dist/src/server.d.ts +7 -0
  117. package/dist/src/server.d.ts.map +1 -0
  118. package/dist/src/server.js +76 -0
  119. package/dist/src/server.js.map +1 -0
  120. package/dist/starting-doc/.annotations.json +3 -0
  121. package/dist/starting-doc/.diagrams.json +1884 -0
  122. package/dist/starting-doc/.living-doc.json +39 -0
  123. package/dist/starting-doc/1_tutorial/2026_04_11_13_25_[General]_crer_vos_dossiers.md +16 -0
  124. package/dist/starting-doc/1_tutorial/2026_04_11_18_58_[General]_creer_un_document_dans_un_dossier.md +9 -0
  125. package/dist/starting-doc/1_tutorial/2026_04_12_09_00_[General]_editer_et_sauvegarder.md +39 -0
  126. package/dist/starting-doc/1_tutorial/2026_04_12_10_00_[General]_utiliser_les_snippets.md +71 -0
  127. package/dist/starting-doc/2026_04_08_20_52_[General]_welcome.md +17 -0
  128. package/dist/starting-doc/2026_04_11_12_55_[General]_premiers_pas.md +271 -0
  129. package/dist/starting-doc/2_guide/2026_04_08_00_04_[DOCUMENT]_utilisation_des_images_plein_ecran_lien_clickable.md +40 -0
  130. package/dist/starting-doc/2_guide/2026_04_08_23_38_[Configuration]_demarrage_de_living_documentation.md +32 -0
  131. package/dist/starting-doc/2_guide/2026_04_09_09_00_[NAVIGATION]_recherche_plein_texte.md +65 -0
  132. package/dist/starting-doc/2_guide/2026_04_09_10_00_[EXPORT]_exporter_en_pdf.md +43 -0
  133. package/dist/starting-doc/2_guide/2026_04_09_11_00_[Configuration]_configurer_le_panneau_admin.md +55 -0
  134. package/dist/starting-doc/2_guide/2026_04_09_12_00_[Configuration]_extra_files.md +68 -0
  135. package/dist/starting-doc/2_guide/2026_04_09_13_00_[WORDCLOUD]_word_cloud.md +54 -0
  136. package/dist/starting-doc/2_guide/2026_04_09_14_00_[DIAGRAM]_creer_et_lier_un_diagramme.md +77 -0
  137. package/dist/starting-doc/3_concept/2026_04_08_20_58_[DOCUMENTING]_ADRS.md +20 -0
  138. package/dist/starting-doc/3_concept/2026_04_08_22_15_[DOCUMENTING]_living_documentation.md +17 -0
  139. package/dist/starting-doc/3_concept/2026_04_08_22_46_[METHODOLOGY]_diataxis_architecture_du_contenu.md +16 -0
  140. package/dist/starting-doc/4_reference/2026_04_08_23_14_[FUNDAMENTALS]_the_living_documentation_tool.md +41 -0
  141. package/dist/starting-doc/4_reference/2026_04_09_01_00_[REFERENCE]_raccourcis_clavier.md +61 -0
  142. package/dist/starting-doc/4_reference/2026_04_09_02_00_[REFERENCE]_tokens_pattern_nommage.md +75 -0
  143. package/dist/starting-doc/4_reference/2026_04_09_03_00_[REFERENCE]_types_de_snippets.md +68 -0
  144. package/dist/starting-doc/4_reference/2026_04_11_17_31_[FUNDAMENTALS]_architecturer_une_documentation.md +12 -0
  145. package/dist/starting-doc/4_reference/2026_04_12_14_07_[FUNDAMENTALS]_dossiers_et_catgories.md +89 -0
  146. package/dist/starting-doc/images/admin_screenshot.png +0 -0
  147. package/dist/starting-doc/images/ajout-document.png +0 -0
  148. package/dist/starting-doc/images/ajouter-document-categorie.png +0 -0
  149. package/dist/starting-doc/images/ajouter_un_document_dans_un_dossier.png +0 -0
  150. package/dist/starting-doc/images/architecturer_une_documentation_reference.png +0 -0
  151. package/dist/starting-doc/images/cr_er_un_document.png +0 -0
  152. package/dist/starting-doc/images/creation-nouveau-dossier.png +0 -0
  153. package/dist/starting-doc/images/creer-document-context-engineering.png +0 -0
  154. package/dist/starting-doc/images/creer-dossier-only-tutoriel.png +0 -0
  155. package/dist/starting-doc/images/creer-dossier-tutoriel.png +0 -0
  156. package/dist/starting-doc/images/creer-dossiers-done.png +0 -0
  157. package/dist/starting-doc/images/creer-un-document.png +0 -0
  158. package/dist/starting-doc/images/creer-vos-dossiers-tutoriel.png +0 -0
  159. package/dist/starting-doc/images/creer-vos-dossiers.png +0 -0
  160. package/dist/starting-doc/images/decouverte_adrs.png +0 -0
  161. package/dist/starting-doc/images/diataxis.png +0 -0
  162. package/dist/starting-doc/images/diataxis_callout.png +0 -0
  163. package/dist/starting-doc/images/document-cree.png +0 -0
  164. package/dist/starting-doc/images/liens_snippets.png +0 -0
  165. package/dist/starting-doc/images/living_documentation.png +0 -0
  166. package/dist/starting-doc/images/npm_logo.png +0 -0
  167. package/dist/starting-doc/images/popup-creer-document.png +0 -0
  168. package/dist/starting-doc/images/popup-creer-dossier.png +0 -0
  169. package/dist/starting-doc/images/popup-dossier-cree.png +0 -0
  170. package/dist/starting-doc/images/quatre-dossiers-crees.png +0 -0
  171. package/dist/starting-doc/images/screenshot-living-doc.png +0 -0
  172. package/dist/starting-doc/images/the_living_documentation_tool.png +0 -0
  173. package/package.json +49 -0
@@ -0,0 +1,406 @@
1
+ {
2
+ "common.save": "Save",
3
+ "common.cancel": "Cancel",
4
+ "common.reset": "Reset",
5
+ "common.loading": "Loading…",
6
+ "common.remove": "Remove",
7
+ "common.create": "Create",
8
+ "common.add": "Add",
9
+ "common.close": "Close",
10
+ "common.back": "Back",
11
+ "common.general": "General",
12
+ "common.select": "Select",
13
+ "common.error_prefix": "Error: ",
14
+ "common.up": "↑ Up",
15
+ "common.empty_dir": "Empty directory",
16
+ "common.cannot_read_dir": "Cannot read directory",
17
+
18
+ "nav.toggle_sidebar": "Toggle sidebar",
19
+ "nav.search_placeholder": "Search docs…",
20
+ "nav.search_mobile_placeholder": "Search…",
21
+ "nav.toggle_dark": "Toggle dark mode",
22
+ "nav.export": "Export",
23
+ "nav.export_html": "Export folders as HTML ZIP",
24
+ "nav.export_all_pdf": "Export all documents as PDF",
25
+ "nav.new_folder": "New folder",
26
+ "nav.new_document": "New document",
27
+ "nav.word_cloud": "☁ Word Cloud",
28
+ "nav.diagram": "◇ Diagram",
29
+ "nav.admin": "⚙ Admin",
30
+
31
+ "welcome.title": "Select a document",
32
+ "welcome.hint": "Choose a document from the sidebar to start reading.",
33
+ "welcome.pattern_hint": "Expected filename pattern",
34
+
35
+ "sidebar.failed_to_load": "Failed to load documents.",
36
+ "sidebar.no_docs": "No documents found.",
37
+ "sidebar.annotation_badge": "annotation",
38
+ "sidebar.annotated_docs_badge": "document with annotations",
39
+
40
+ "doc.marker_mode": "Marker mode — highlight to annotate",
41
+ "doc.marker_btn": "Marker",
42
+ "doc.toggle_width": "Toggle full width",
43
+ "doc.full_width_btn": "↔ Full width",
44
+ "doc.full_width_narrow_btn": "⇤ Narrow",
45
+ "doc.export_pdf": "Export as PDF",
46
+ "doc.export_pdf_btn": "Export PDF",
47
+ "doc.copy_link": "Copy link",
48
+ "doc.copy_link_btn": "Copy link",
49
+ "doc.edit": "Edit document",
50
+ "doc.edit_btn": "Edit",
51
+ "doc.delete": "Delete document",
52
+ "doc.delete_btn": "Delete",
53
+ "doc.confirm_delete": "Permanently delete this document?",
54
+ "doc.confirm_delete_btn": "Delete",
55
+ "doc.cancel_edit": "Cancel editing",
56
+ "doc.snippets": "Insert a snippet",
57
+ "doc.snippets_btn": "🧩 Snippets",
58
+ "doc.save": "Save document",
59
+ "doc.uploading_image": "Uploading image…",
60
+ "doc.image_upload_failed": "Image upload failed: ",
61
+ "doc.saving": "Saving…",
62
+ "doc.failed_to_load": "Failed to load document: ",
63
+ "doc.copied": "✓ Copied!",
64
+
65
+ "modal.new_folder.title": "New folder",
66
+ "modal.new_folder.name_label": "Folder name",
67
+ "modal.new_folder.name_placeholder": "my-folder",
68
+ "modal.new_folder.location_label": "Location",
69
+ "modal.new_folder.root": "/ (root)",
70
+ "modal.new_folder.browse_btn": "Browse…",
71
+ "modal.new_folder.select_btn": "Select this folder",
72
+ "modal.new_folder.browse_select_btn": "Select",
73
+ "modal.new_folder.enter_name": "(enter a name)",
74
+ "modal.new_folder.will_be_created": "Will be created at",
75
+ "modal.new_folder.create_btn": "Create",
76
+ "modal.new_folder.creating_btn": "Creating…",
77
+ "modal.new_folder.error_empty": "Please enter a folder name.",
78
+ "modal.new_folder.error_invalid_chars": "Invalid characters in folder name.",
79
+ "modal.new_folder.no_subfolders": "No subfolders",
80
+ "modal.new_folder.error_loading": "Error loading",
81
+
82
+ "modal.new_doc.title": "New document",
83
+ "modal.new_doc.title_label": "Title",
84
+ "modal.new_doc.category_label": "Category",
85
+ "modal.new_doc.location_label": "Location",
86
+ "modal.new_doc.filename_label": "Generated filename",
87
+ "modal.new_doc.title_placeholder": "(enter a title)",
88
+ "modal.new_doc.browse_btn": "Browse",
89
+ "modal.new_doc.new_folder_placeholder": "New folder name…",
90
+ "modal.new_doc.create_folder_btn": "+ Create",
91
+ "modal.new_doc.error_empty_title": "Please enter a title.",
92
+ "modal.new_doc.no_subfolders": "No sub-folders",
93
+ "modal.new_doc.use_folder_btn": "✓ Use this folder",
94
+
95
+ "modal.diag_link.title": "◇ Link a diagram",
96
+ "modal.diag_link.existing_radio": "Existing diagram",
97
+ "modal.diag_link.new_radio": "New diagram",
98
+ "modal.diag_link.select_label": "Select diagram",
99
+ "modal.diag_link.name_label": "Diagram name",
100
+ "modal.diag_link.name_placeholder": "My diagram",
101
+ "modal.diag_link.img_label": "Image filename",
102
+ "modal.diag_link.img_hint": "(saved in ./images/)",
103
+ "modal.diag_link.markdown_label": "Markdown that will be appended",
104
+ "modal.diag_link.insert_btn": "Insert & Open Diagram",
105
+ "modal.diag_link.saving_btn": "Saving…",
106
+ "modal.diag_link.no_diagrams": "No diagrams yet",
107
+
108
+ "snippet.modal_title": "🧩 Insert a snippet",
109
+ "snippet.type_label": "Snippet type",
110
+ "snippet.diagram": "Diagram",
111
+ "snippet.collapsible": "Collapsible block (details)",
112
+ "snippet.link": "Link",
113
+ "snippet.link_doc": "Link to document",
114
+ "snippet.link_anchor": "Link to anchor",
115
+ "snippet.link_doc_anchor": "Link to document with anchor",
116
+ "snippet.numbered_list": "Numbered list",
117
+ "snippet.bullet_list": "Bullet list",
118
+ "snippet.code_block": "Code block",
119
+ "snippet.blockquote": "Blockquote",
120
+ "snippet.separator": "Horizontal rule",
121
+ "snippet.image": "Image",
122
+ "snippet.table": "Table",
123
+ "snippet.tree": "Tree",
124
+ "snippet.colored_section": "Colored section",
125
+ "snippet.colored_section_color_label": "Color",
126
+ "snippet.colored_section_swatch_info": "Info (blue)",
127
+ "snippet.colored_section_swatch_success": "Success (green)",
128
+ "snippet.colored_section_swatch_warning": "Warning (amber)",
129
+ "snippet.colored_section_swatch_danger": "Danger (red)",
130
+ "snippet.colored_section_swatch_note": "Note (purple)",
131
+ "snippet.colored_section_swatch_neutral": "Neutral (gray)",
132
+ "snippet.colored_section_content_label": "Content",
133
+ "snippet.colored_section_content_placeholder": "Your text here…",
134
+ "snippet.colored_text": "Colored text",
135
+ "snippet.colored_text_color_label": "Color",
136
+ "snippet.colored_text_content_label": "Text",
137
+ "snippet.colored_text_content_placeholder": "Your text…",
138
+ "snippet.collapsible_summary_label": "Summary title",
139
+ "snippet.collapsible_details_placeholder": "Details",
140
+ "snippet.collapsible_summary_value": "Details",
141
+ "snippet.link_text_label": "Link text",
142
+ "snippet.link_text_placeholder": "My link",
143
+ "snippet.link_url_label": "URL",
144
+ "snippet.link_url_placeholder": "https://…",
145
+ "snippet.link_doc_label": "Document",
146
+ "snippet.link_doc_text_hint": "(optional, uses default title)",
147
+ "snippet.link_section_placeholder": "View section",
148
+ "snippet.link_section_hint": "(optional, uses default title)",
149
+ "snippet.link_anchor_label": "Anchor",
150
+ "snippet.link_anchor_placeholder": "my-heading",
151
+ "snippet.link_anchor_hint": "(without #, e.g. my-heading)",
152
+ "snippet.link_target_doc_label": "Target document",
153
+ "snippet.code_lang_label": "Language",
154
+ "snippet.code_lang_hint": "(e.g. javascript, python, bash…)",
155
+ "snippet.image_alt_label": "Alt text",
156
+ "snippet.image_alt_placeholder": "Image description",
157
+ "snippet.image_url_label": "Image URL",
158
+ "snippet.image_url_placeholder": "(saved in ./images/)",
159
+ "snippet.image_src_placeholder": "./images/my-image.png",
160
+ "snippet.table_rows_label": "Rows",
161
+ "snippet.table_cols_label": "Columns",
162
+ "snippet.tree_hint": "← → to indent · names with / will be folders",
163
+ "snippet.tree_add_btn": "+ Add item",
164
+ "snippet.markdown_preview_label": "Markdown preview",
165
+ "snippet.insert_btn": "Insert",
166
+ "snippet.diagram_existing": "Existing diagram",
167
+ "snippet.diagram_new": "New diagram",
168
+ "snippet.diagram_select_label": "Select diagram",
169
+ "snippet.diagram_no_diagrams": "No diagrams",
170
+ "snippet.diagram_name_label": "Diagram name",
171
+ "snippet.diagram_name_placeholder": "Diagram name…",
172
+ "snippet.diag_img_label": "Image filename",
173
+ "snippet.diag_img_saved_hint": "(saved in ./images/)",
174
+ "snippet.diagram_markdown_label": "Markdown that will be appended",
175
+ "snippet.insert_open_btn": "Insert & Open Diagram",
176
+ "snippet.saving_btn": "Saving…",
177
+ "snippet.detected_msg": "✓ Detected type: {type}. Fields pre-filled — edit then click Insert to replace selection.",
178
+ "snippet.unknown_type_msg": "⚠ Selected text doesn't match any known snippet type. Choose a type below — the snippet will still replace the selection.",
179
+
180
+ "modal.img_paste.title": "Paste clipboard image?",
181
+ "modal.img_paste.filename_label": "Filename",
182
+ "modal.img_paste.saved_hint": "(saved in images/)",
183
+ "modal.img_paste.paste_btn": "Paste",
184
+
185
+ "modal.export.title": "Export",
186
+ "modal.export.tab_markdown": "Markdown",
187
+ "modal.export.tab_html": "HTML",
188
+ "modal.export.tab_pdf": "PDF",
189
+ "modal.export.markdown_hint": "Export all documents and images as Markdown files, with internal links rewritten to relative paths.",
190
+ "modal.export.markdown_btn": "Export Markdown",
191
+ "modal.export.pdf_hint": "Export all documents as a single PDF with table of contents.",
192
+ "modal.export.pdf_btn": "Export all PDF",
193
+
194
+ "modal.export_html.title": "Export folders as HTML",
195
+ "modal.export_html.hint": "Select the folders to include in the ZIP archive.",
196
+ "modal.export_html.notion_btn": "Export Notion",
197
+ "modal.export_html.confluence_btn": "Export Confluence",
198
+
199
+ "annotation.title": "Annotation",
200
+ "annotation.placeholder": "Your comment or suggestion…",
201
+ "annotation.save_btn": "Save",
202
+ "annotation.delete_btn": "🗑 Delete",
203
+ "annotation.confirm_delete": "Delete this annotation?",
204
+ "annotation.confirm_btn": "Delete",
205
+ "annotation.orphan": "⚠ Annotated text not found — the excerpt has been edited or removed.",
206
+
207
+ "wc.title": "☁ Word Cloud",
208
+ "wc.close_btn": "✕ Close",
209
+ "wc.search_root_label": "Search root",
210
+ "wc.browse_btn": "Browse",
211
+ "wc.exclude_label": "Exclude",
212
+ "wc.exclude_placeholder": "components/ui, package-lock.json (one per line or comma-separated)",
213
+ "wc.extensions_label": "Extensions",
214
+ "wc.all_btn": "All",
215
+ "wc.min_files_label": "Min files",
216
+ "wc.apply_btn": "Apply",
217
+ "wc.top_words": "Top words",
218
+ "wc.found_in": "Found in",
219
+ "wc.launch_btn": "Launch",
220
+
221
+ "search.notice_singular": "Showing {count} match for \"{query}\"",
222
+ "search.notice_plural": "Showing {count} matches for \"{query}\"",
223
+
224
+ "error.create_diagram": "Error creating diagram: ",
225
+ "error.save": "Save failed: ",
226
+ "error.pdf_popup": "Please allow popups to export as PDF.",
227
+ "error.pdf_export": "Export failed: ",
228
+ "error.no_diagrams": "No diagrams",
229
+
230
+ "pdf.toc_title": "Table of Contents",
231
+
232
+ "admin.title": "Admin Panel",
233
+ "admin.toggle_dark": "Toggle dark mode",
234
+ "admin.back_to_docs": "Back to docs →",
235
+
236
+ "admin.server_info.title": "Server Info",
237
+ "admin.server_info.docs_folder": "Docs Folder",
238
+ "admin.server_info.port": "Port",
239
+ "admin.server_info.source_root": "Source Root",
240
+ "admin.server_info.source_root_hint": "Absolute path used by MCP source tools. Defaults to the parent of Docs Folder when empty.",
241
+
242
+ "admin.config.title": "Configuration",
243
+ "admin.config.description": "Settings are saved to .living-doc.json in your docs folder.",
244
+ "admin.config.save_btn": "Save changes",
245
+
246
+ "admin.appearance.site_title_label": "Site Title",
247
+ "admin.appearance.site_title_placeholder": "Living Documentation",
248
+ "admin.appearance.site_title_hint": "Displayed in the browser tab and sidebar header.",
249
+ "admin.appearance.theme_label": "Default Theme",
250
+ "admin.appearance.theme_system": "System (follow OS preference)",
251
+ "admin.appearance.theme_light": "Light",
252
+ "admin.appearance.theme_dark": "Dark",
253
+ "admin.appearance.theme_hint": "Users can always override with the toggle button.",
254
+ "admin.appearance.language_label": "Language",
255
+ "admin.appearance.language_en": "English",
256
+ "admin.appearance.language_fr": "Français",
257
+ "admin.appearance.language_hint": "Interface language for all pages.",
258
+ "admin.appearance.debug_label": "Show debug button in diagram editor",
259
+ "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.",
260
+
261
+ "admin.pattern.label": "Filename Pattern",
262
+ "admin.pattern.hint": "Parsed for date, category, and title.",
263
+ "admin.pattern.preview_title": "Pattern Preview",
264
+ "admin.pattern.preview_desc": "How your pattern parses example filenames:",
265
+ "admin.pattern.col_date": "Date",
266
+ "admin.pattern.col_category": "Category",
267
+ "admin.pattern.col_title": "Title",
268
+ "admin.pattern.col_none": "none",
269
+ "admin.pattern.col_general": "General",
270
+
271
+ "admin.extra_files.title": "General — Extra Files",
272
+ "admin.extra_files.description": "Add Markdown files from outside the docs folder to the General section.",
273
+ "admin.extra_files.empty": "No extra files added yet.",
274
+ "admin.extra_files.add_btn": "+ Add",
275
+ "admin.extra_files.added_label": "Added",
276
+ "admin.extra_files.loading": "Loading…",
277
+
278
+ "admin.palette.title": "Diagram Color Palettes",
279
+ "admin.palette.description": "Customize the colors available in the diagram editor. Changes take effect after saving.",
280
+ "admin.palette.shapes_title": "Shape colors",
281
+ "admin.palette.shapes_hint": "Click a color to pick a new one.",
282
+ "admin.palette.reset_btn": "Reset",
283
+ "admin.palette.arrows_title": "Arrow colors",
284
+ "admin.palette.arrows_hint": "Add or remove colors available for arrows. Click ✕ to remove.",
285
+ "admin.palette.add_color_btn": "Add color",
286
+ "admin.palette.delete_color_title": "Remove",
287
+
288
+ "admin.license.title": "AGPL-3.0 License — Open Source",
289
+ "admin.license.subtitle": "Free to use, fork, and build upon — derivatives and network-hosted services must remain under AGPL (copyleft + SaaS clause).",
290
+ "admin.license.body": "This open source project is gracefully provided to you by its conceptors <strong>Youssef MEDAGHRI-ALAOUI</strong> &amp; <strong>Claude Code</strong>.",
291
+ "admin.license.linkedin_btn": "Youssef on LinkedIn",
292
+ "admin.license.npm_btn": "living-documentation on npm",
293
+
294
+ "admin.msg.saved": "Saved!",
295
+ "admin.msg.save_failed": "Save failed: ",
296
+ "admin.msg.load_failed": "Failed to load config.",
297
+ "admin.msg.pattern_no_category": "Filename pattern must contain [Category]",
298
+ "admin.msg.pattern_one_category": "Filename pattern must contain [Category] exactly once",
299
+
300
+ "diagram.back_btn": "← Back",
301
+ "diagram.diagrams_list_title": "My diagrams",
302
+ "diagram.toolbar.select": "Select (S)",
303
+ "diagram.toolbar.box": "Rectangle (R)",
304
+ "diagram.toolbar.ellipse": "Ellipse (E)",
305
+ "diagram.toolbar.database": "Database (D)",
306
+ "diagram.toolbar.circle": "Circle (C)",
307
+ "diagram.toolbar.actor": "Actor (A)",
308
+ "diagram.toolbar.postit": "Post-it (P)",
309
+ "diagram.toolbar.text_free": "Free text (T)",
310
+ "diagram.toolbar.image": "Image — double-click on canvas to select a file, or paste (⌘V) from clipboard",
311
+ "diagram.toolbar.arrow": "Arrow (F)",
312
+ "diagram.toolbar.delete": "Delete (Del)",
313
+ "diagram.toolbar.align_guides": "Alignment guides — highlights same-type shape alignment",
314
+ "diagram.toolbar.grid": "Grid / Snap to grid (G)",
315
+ "diagram.toolbar.edge_style": "Toggle curved / straight arrows",
316
+ "diagram.toolbar.resize_corner": "Resize mode: fixed corner (click for fixed centre)",
317
+ "diagram.toolbar.resize_center": "Resize mode: fixed centre (click for fixed corner)",
318
+ "diagram.toolbar.title_placeholder": "Diagram title",
319
+ "diagram.toolbar.zoom_out": "Zoom −",
320
+ "diagram.toolbar.zoom_in": "Zoom +",
321
+ "diagram.toolbar.fit": "Fit view",
322
+ "diagram.toolbar.debug": "Debug overlay",
323
+ "diagram.toolbar.save": "Save",
324
+
325
+ "diagram.sidebar.title": "Diagrams",
326
+ "diagram.sidebar.new_btn": "+ New",
327
+ "diagram.sidebar.empty": "No diagrams",
328
+ "diagram.sidebar.delete_title": "Delete",
329
+
330
+ "diagram.node_panel.lock": "Lock shape",
331
+ "diagram.node_panel.edit_label": "Edit text (double-click)",
332
+ "diagram.node_panel.edit_link": "Add / edit link",
333
+ "diagram.node_panel.bg_opacity": "Background opacity",
334
+ "diagram.node_panel.font_decrease": "Decrease font size",
335
+ "diagram.node_panel.font_increase": "Increase font size",
336
+ "diagram.node_panel.align_left": "Align left",
337
+ "diagram.node_panel.align_center": "Align center",
338
+ "diagram.node_panel.align_right": "Align right",
339
+ "diagram.node_panel.align_top": "Align top",
340
+ "diagram.node_panel.align_middle": "Align middle",
341
+ "diagram.node_panel.align_bottom": "Align bottom",
342
+ "diagram.node_panel.send_back": "Send to back",
343
+ "diagram.node_panel.bring_front": "Bring to front",
344
+ "diagram.node_panel.stamp_color": "Color stamp — select targets, click here, then click source",
345
+ "diagram.node_panel.stamp_font": "Font size stamp — select targets, click here, then click source",
346
+ "diagram.node_panel.stamp_size": "Size stamp — select targets, click here, then click source",
347
+ "diagram.node_panel.rotate_ccw": "Rotate counter-clockwise 10°",
348
+ "diagram.node_panel.rotate_cw": "Rotate clockwise 10°",
349
+ "diagram.node_panel.copy_png": "Copy selection as PNG (⌘⇧C)",
350
+ "diagram.node_panel.group": "Group selection",
351
+ "diagram.node_panel.ungroup": "Ungroup",
352
+
353
+ "diagram.link_panel.title": "Link on this shape",
354
+ "diagram.link_panel.external": "External URL",
355
+ "diagram.link_panel.url_placeholder": "https://…",
356
+ "diagram.link_panel.existing_diagram": "Existing diagram",
357
+ "diagram.link_panel.new_diagram": "New diagram",
358
+ "diagram.link_panel.diagram_name_placeholder": "Diagram name…",
359
+ "diagram.link_panel.save_btn": "Save",
360
+ "diagram.link_panel.remove_btn": "Remove",
361
+
362
+ "diagram.edge_panel.lock": "Lock arrow",
363
+ "diagram.edge_panel.no_arrow": "Simple line",
364
+ "diagram.edge_panel.arrow_to": "Directional arrow",
365
+ "diagram.edge_panel.arrow_both": "Bidirectional",
366
+ "diagram.edge_panel.solid": "Solid line",
367
+ "diagram.edge_panel.dashed": "Dashed line",
368
+ "diagram.edge_panel.font_decrease": "Decrease font size",
369
+ "diagram.edge_panel.font_increase": "Increase font size",
370
+ "diagram.edge_panel.edit_label": "Edit arrow label",
371
+ "diagram.edge_panel.reset_label_width": "Reset label width (auto)",
372
+ "diagram.edge_panel.rotate_label_ccw": "Rotate label counter-clockwise (−15°)",
373
+ "diagram.edge_panel.rotate_label_cw": "Rotate label clockwise (+15°)",
374
+ "diagram.edge_panel.offset_label_left": "Move label left",
375
+ "diagram.edge_panel.offset_label_right": "Move label right",
376
+ "diagram.edge_panel.offset_label_up": "Move label up",
377
+ "diagram.edge_panel.offset_label_down": "Move label down",
378
+ "diagram.edge_panel.offset_label_reset": "Reset label position",
379
+ "diagram.edge_panel.width_decrease": "Decrease width",
380
+ "diagram.edge_panel.width_increase": "Increase width",
381
+ "diagram.edge_panel.clear_ports": "Clear attachment points",
382
+
383
+ "diagram.label_input.placeholder": "Label…",
384
+ "diagram.empty_state": "Select or create a diagram",
385
+
386
+ "diagram.image_modal.title": "Image filename",
387
+ "diagram.image_modal.description": "Letters, numbers, _ and - only. Leave empty for auto-generated name.",
388
+ "diagram.image_modal.placeholder": "image_name",
389
+ "diagram.image_modal.error_chars": "Allowed characters: letters, numbers, _ and -",
390
+ "diagram.image_modal.cancel_btn": "Cancel",
391
+ "diagram.image_modal.paste_btn": "Paste",
392
+
393
+ "diagram.selection.rotate_shape": "Rotate shape",
394
+ "diagram.selection.rotate_text": "Rotate text",
395
+
396
+ "diagram.toast.png_copied": "PNG copied to clipboard",
397
+ "diagram.toast.png_copy_error": "Cannot copy image",
398
+ "diagram.toast.diagram_saved_png": "Diagram saved as image",
399
+ "diagram.toast.diagram_save_png_error": "Cannot save image",
400
+ "diagram.toast.image_added": "Image added",
401
+ "diagram.toast.image_import_error": "Cannot import image",
402
+ "diagram.toast.confirm_delete": "Delete this diagram?",
403
+ "diagram.toast.new_diagram_title": "New diagram",
404
+ "diagram.toast.untitled": "Untitled",
405
+ "diagram.toast.diagram_linked": "Diagram \"{title}\" created and linked"
406
+ }