MetaList 0.24.2__tar.gz → 0.26.0__tar.gz

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 (996) hide show
  1. metalist-0.26.0/PKG-INFO +368 -0
  2. metalist-0.26.0/README.md +320 -0
  3. metalist-0.26.0/app/api/middleware/auth.py +136 -0
  4. metalist-0.26.0/app/api/note_requests.py +573 -0
  5. metalist-0.26.0/app/api/routes/ai.py +1284 -0
  6. metalist-0.26.0/app/api/routes/app_updates.py +64 -0
  7. metalist-0.26.0/app/api/routes/auth.py +1199 -0
  8. metalist-0.26.0/app/api/routes/background_work.py +20 -0
  9. metalist-0.26.0/app/api/routes/backups.py +1135 -0
  10. metalist-0.26.0/app/api/routes/files.py +373 -0
  11. metalist-0.26.0/app/api/routes/imports.py +358 -0
  12. metalist-0.26.0/app/api/routes/legacy_import.py +165 -0
  13. metalist-0.26.0/app/api/routes/notes.py +1992 -0
  14. metalist-0.26.0/app/api/routes/ontology.py +639 -0
  15. metalist-0.26.0/app/api/routes/virtual_folders.py +154 -0
  16. metalist-0.26.0/app/api/transactions.py +165 -0
  17. metalist-0.26.0/app/api/upload_limits.py +91 -0
  18. metalist-0.26.0/app/config.py +141 -0
  19. metalist-0.26.0/app/db/file_schema.py +109 -0
  20. metalist-0.26.0/app/db/file_texts_migration.py +49 -0
  21. metalist-0.26.0/app/db/file_versions_migration.py +59 -0
  22. metalist-0.26.0/app/db/files_sql.py +522 -0
  23. metalist-0.26.0/app/db/link_icons_sql.py +175 -0
  24. metalist-0.26.0/app/db/migrations.py +491 -0
  25. metalist-0.26.0/app/db/schema.py +303 -0
  26. metalist-0.26.0/app/db/settings_sql.py +375 -0
  27. metalist-0.26.0/app/db/version.py +3 -0
  28. metalist-0.26.0/app/encryption_audit.py +1260 -0
  29. metalist-0.26.0/app/exception_boundaries.py +209 -0
  30. metalist-0.26.0/app/main.py +859 -0
  31. metalist-0.26.0/app/presentation/render/note_renderer.py +87 -0
  32. metalist-0.26.0/app/security/http_headers.py +45 -0
  33. metalist-0.26.0/app/security/note_html.py +422 -0
  34. metalist-0.26.0/app/security/rendered_html.py +203 -0
  35. metalist-0.26.0/app/security/sensitive_cache.py +129 -0
  36. metalist-0.26.0/app/services/agent/agent_loop.py +603 -0
  37. metalist-0.26.0/app/services/agent/ai_send.py +73 -0
  38. metalist-0.26.0/app/services/agent/anthropic_inference.py +628 -0
  39. metalist-0.26.0/app/services/agent/chat_compaction.py +229 -0
  40. metalist-0.26.0/app/services/agent/cloud_privacy.py +568 -0
  41. metalist-0.26.0/app/services/agent/export_title_suggestions.py +198 -0
  42. metalist-0.26.0/app/services/agent/failure_explanations.py +184 -0
  43. metalist-0.26.0/app/services/agent/help_catalog.py +31 -0
  44. metalist-0.26.0/app/services/agent/history.py +124 -0
  45. metalist-0.26.0/app/services/agent/inference.py +193 -0
  46. metalist-0.26.0/app/services/agent/note_tag_suggestions.py +351 -0
  47. metalist-0.26.0/app/services/agent/openai_compatible_inference.py +436 -0
  48. metalist-0.26.0/app/services/agent/openai_inference.py +586 -0
  49. metalist-0.26.0/app/services/agent/openai_models.py +12 -0
  50. metalist-0.26.0/app/services/agent/prompts/__init__.py +18 -0
  51. metalist-0.26.0/app/services/agent/prompts/agent.md +135 -0
  52. metalist-0.26.0/app/services/agent/prompts/conversation-summary.md +13 -0
  53. metalist-0.26.0/app/services/agent/release_notes.py +69 -0
  54. metalist-0.26.0/app/services/agent/request_tokens.py +51 -0
  55. metalist-0.26.0/app/services/agent/retrieval_settings.py +130 -0
  56. metalist-0.26.0/app/services/agent/runtime.py +1722 -0
  57. metalist-0.26.0/app/services/agent/skills/help-ai.md +186 -0
  58. metalist-0.26.0/app/services/agent/skills/help-data.md +66 -0
  59. metalist-0.26.0/app/services/agent/skills/help-dictation.md +96 -0
  60. metalist-0.26.0/app/services/agent/skills/help-formatting.md +221 -0
  61. metalist-0.26.0/app/services/agent/skills/help-menus.md +145 -0
  62. metalist-0.26.0/app/services/agent/skills/help-meta-tags.md +107 -0
  63. metalist-0.26.0/app/services/agent/skills/help-mouse.md +65 -0
  64. metalist-0.26.0/app/services/agent/skills/help-notes.md +137 -0
  65. metalist-0.26.0/app/services/agent/skills/help-ontology.md +207 -0
  66. metalist-0.26.0/app/services/agent/skills/help-pasting.md +46 -0
  67. metalist-0.26.0/app/services/agent/skills/help-privacy.md +169 -0
  68. metalist-0.26.0/app/services/agent/skills/help-references.md +133 -0
  69. metalist-0.26.0/app/services/agent/skills/help-releases.md +210 -0
  70. metalist-0.26.0/app/services/agent/skills/help-reminders.md +152 -0
  71. metalist-0.26.0/app/services/agent/skills/help-search-suggestions.md +87 -0
  72. metalist-0.26.0/app/services/agent/skills/help-search.md +320 -0
  73. metalist-0.26.0/app/services/agent/skills/help-tag-suggestions.md +76 -0
  74. metalist-0.26.0/app/services/agent/skills/help-tags.md +96 -0
  75. metalist-0.26.0/app/services/agent/structured_inference.py +699 -0
  76. metalist-0.26.0/app/services/agent/tagging_run.py +514 -0
  77. metalist-0.26.0/app/services/ai_catalog.py +110 -0
  78. metalist-0.26.0/app/services/ai_chat.py +653 -0
  79. metalist-0.26.0/app/services/ai_chat_rendering.py +906 -0
  80. metalist-0.26.0/app/services/ai_chat_stream.py +233 -0
  81. metalist-0.26.0/app/services/ai_credentials.py +221 -0
  82. metalist-0.26.0/app/services/ai_setup.py +97 -0
  83. metalist-0.26.0/app/services/auth_cache_state.py +47 -0
  84. metalist-0.26.0/app/services/auth_service.py +666 -0
  85. metalist-0.26.0/app/services/background_work.py +95 -0
  86. metalist-0.26.0/app/services/backlink_index.py +74 -0
  87. metalist-0.26.0/app/services/backlinks.py +95 -0
  88. metalist-0.26.0/app/services/backup_service.py +1182 -0
  89. metalist-0.26.0/app/services/backup_settings_service.py +342 -0
  90. metalist-0.26.0/app/services/bookmark_import.py +229 -0
  91. metalist-0.26.0/app/services/client_state_service.py +643 -0
  92. metalist-0.26.0/app/services/content_cache.py +425 -0
  93. metalist-0.26.0/app/services/content_formatting.py +2547 -0
  94. metalist-0.26.0/app/services/credential_display.py +17 -0
  95. metalist-0.26.0/app/services/dictation_cleanup.py +584 -0
  96. metalist-0.26.0/app/services/document_highlights.py +68 -0
  97. metalist-0.26.0/app/services/document_text.py +852 -0
  98. metalist-0.26.0/app/services/edit_previews.py +241 -0
  99. metalist-0.26.0/app/services/editing_image_sizes.py +96 -0
  100. metalist-0.26.0/app/services/email_cards.py +31 -0
  101. metalist-0.26.0/app/services/email_files.py +246 -0
  102. metalist-0.26.0/app/services/email_search_text.py +39 -0
  103. metalist-0.26.0/app/services/embedded_references.py +1950 -0
  104. metalist-0.26.0/app/services/file_registry.py +251 -0
  105. metalist-0.26.0/app/services/file_storage.py +1343 -0
  106. metalist-0.26.0/app/services/file_text_search.py +502 -0
  107. metalist-0.26.0/app/services/file_text_snippets.py +104 -0
  108. metalist-0.26.0/app/services/file_text_worker.py +205 -0
  109. metalist-0.26.0/app/services/file_view.py +278 -0
  110. metalist-0.26.0/app/services/find_text.py +191 -0
  111. metalist-0.26.0/app/services/footnote_rendering.py +214 -0
  112. metalist-0.26.0/app/services/html_export.py +805 -0
  113. metalist-0.26.0/app/services/image_compression.py +194 -0
  114. metalist-0.26.0/app/services/import_uploads.py +99 -0
  115. metalist-0.26.0/app/services/latex_rendering.py +355 -0
  116. metalist-0.26.0/app/services/legacy_metalist.py +231 -0
  117. metalist-0.26.0/app/services/legacy_metalist_conversion.py +129 -0
  118. metalist-0.26.0/app/services/link_icons.py +888 -0
  119. metalist-0.26.0/app/services/link_titles.py +1663 -0
  120. metalist-0.26.0/app/services/markdown_rendering.py +1435 -0
  121. metalist-0.26.0/app/services/markdown_tasks.py +189 -0
  122. metalist-0.26.0/app/services/memory_breakdown.py +214 -0
  123. metalist-0.26.0/app/services/mermaid_note_rendering.py +66 -0
  124. metalist-0.26.0/app/services/meta_tag_renames.py +62 -0
  125. metalist-0.26.0/app/services/native_folder_picker.py +93 -0
  126. metalist-0.26.0/app/services/note_datetime.py +225 -0
  127. metalist-0.26.0/app/services/note_fullscreen.py +199 -0
  128. metalist-0.26.0/app/services/note_store.py +1374 -0
  129. metalist-0.26.0/app/services/obsidian_import/blocks.py +320 -0
  130. metalist-0.26.0/app/services/obsidian_import/content.py +192 -0
  131. metalist-0.26.0/app/services/obsidian_import/file_groups.py +165 -0
  132. metalist-0.26.0/app/services/obsidian_import/links.py +125 -0
  133. metalist-0.26.0/app/services/obsidian_import/notes.py +497 -0
  134. metalist-0.26.0/app/services/obsidian_import/resolve.py +118 -0
  135. metalist-0.26.0/app/services/obsidian_import/sources.py +40 -0
  136. metalist-0.26.0/app/services/obsidian_import/tree.py +337 -0
  137. metalist-0.26.0/app/services/obsidian_import/vault.py +202 -0
  138. metalist-0.26.0/app/services/ontology_rules_store.py +613 -0
  139. metalist-0.26.0/app/services/plain_text.py +47 -0
  140. metalist-0.26.0/app/services/quoted_values.py +187 -0
  141. metalist-0.26.0/app/services/reference_presentation.py +62 -0
  142. metalist-0.26.0/app/services/reference_suggestions.py +526 -0
  143. metalist-0.26.0/app/services/request_recovery.py +106 -0
  144. metalist-0.26.0/app/services/reset_for_tests.py +51 -0
  145. metalist-0.26.0/app/services/root_date_filter.py +161 -0
  146. metalist-0.26.0/app/services/search_index.py +2338 -0
  147. metalist-0.26.0/app/services/search_query.py +339 -0
  148. metalist-0.26.0/app/services/search_text.py +154 -0
  149. metalist-0.26.0/app/services/selected_text_tag.py +132 -0
  150. metalist-0.26.0/app/services/server_code.py +40 -0
  151. metalist-0.26.0/app/services/snapshot.py +1534 -0
  152. metalist-0.26.0/app/services/status_icons.py +17 -0
  153. metalist-0.26.0/app/services/store.py +130 -0
  154. metalist-0.26.0/app/services/structured_note_renderers.py +504 -0
  155. metalist-0.26.0/app/services/subtree_stats.py +430 -0
  156. metalist-0.26.0/app/services/sync.py +168 -0
  157. metalist-0.26.0/app/services/synced_folders.py +108 -0
  158. metalist-0.26.0/app/services/tab_state.py +920 -0
  159. metalist-0.26.0/app/services/tag_characters.py +54 -0
  160. metalist-0.26.0/app/services/tag_details.py +225 -0
  161. metalist-0.26.0/app/services/tag_ontology.py +940 -0
  162. metalist-0.26.0/app/services/tag_properties.py +768 -0
  163. metalist-0.26.0/app/services/tag_rename.py +286 -0
  164. metalist-0.26.0/app/services/tag_suggestion_reasons.py +422 -0
  165. metalist-0.26.0/app/services/tag_suggestions.py +1586 -0
  166. metalist-0.26.0/app/services/tag_term_matching.py +533 -0
  167. metalist-0.26.0/app/services/text_terms.py +40 -0
  168. metalist-0.26.0/app/services/undo_state.py +1205 -0
  169. metalist-0.26.0/app/services/unused_files.py +56 -0
  170. metalist-0.26.0/app/services/virtual_folders.py +295 -0
  171. metalist-0.26.0/app/startup_environment.py +68 -0
  172. metalist-0.26.0/app/startup_sanity.py +973 -0
  173. metalist-0.26.0/app/startup_sanity_config.py +136 -0
  174. metalist-0.26.0/app/static/config/agent-menu-actions.json +505 -0
  175. metalist-0.26.0/app/static/config/command_palette_tags.json +348 -0
  176. metalist-0.26.0/app/static/config/tag-characters.json +324 -0
  177. metalist-0.26.0/app/static/css/file-viewer.css +210 -0
  178. metalist-0.26.0/app/static/css/main.css +13566 -0
  179. metalist-0.26.0/app/static/css/reference-preview.css +19 -0
  180. metalist-0.26.0/app/static/img/apple-touch-icon.png +0 -0
  181. metalist-0.26.0/app/static/img/favicon.ico +0 -0
  182. metalist-0.26.0/app/static/img/favicon.svg +9 -0
  183. metalist-0.26.0/app/static/img/icon-192.png +0 -0
  184. metalist-0.26.0/app/static/img/icon-512.png +0 -0
  185. metalist-0.26.0/app/static/img/icon-maskable-512.png +0 -0
  186. metalist-0.26.0/app/static/js/main.js +115 -0
  187. metalist-0.26.0/app/static/js/modules/ai-chat/agent-menu-actions.js +58 -0
  188. metalist-0.26.0/app/static/js/modules/ai-chat/agent-retrieval-settings.js +110 -0
  189. metalist-0.26.0/app/static/js/modules/ai-chat/ai-chat-api.js +570 -0
  190. metalist-0.26.0/app/static/js/modules/ai-chat/ai-chat-history-meter.js +117 -0
  191. metalist-0.26.0/app/static/js/modules/ai-chat/ai-chat-panel-controller.js +2233 -0
  192. metalist-0.26.0/app/static/js/modules/ai-chat/ai-chat-summaries.js +89 -0
  193. metalist-0.26.0/app/static/js/modules/ai-chat/ai-model-names.js +41 -0
  194. metalist-0.26.0/app/static/js/modules/ai-chat/ai-providers.js +31 -0
  195. metalist-0.26.0/app/static/js/modules/ai-chat/ai-thinking-level-service.js +36 -0
  196. metalist-0.26.0/app/static/js/modules/ai-chat/bulk-proposal-ui.js +286 -0
  197. metalist-0.26.0/app/static/js/modules/ai-chat/confirmation-card.js +94 -0
  198. metalist-0.26.0/app/static/js/modules/ai-chat/proposal-menu.js +186 -0
  199. metalist-0.26.0/app/static/js/modules/api-client.js +1969 -0
  200. metalist-0.26.0/app/static/js/modules/auth.js +947 -0
  201. metalist-0.26.0/app/static/js/modules/byte-sizes.js +22 -0
  202. metalist-0.26.0/app/static/js/modules/command-palette/command-palette-controller.js +3144 -0
  203. metalist-0.26.0/app/static/js/modules/command-palette/endpoint-registry.js +781 -0
  204. metalist-0.26.0/app/static/js/modules/config.js +295 -0
  205. metalist-0.26.0/app/static/js/modules/context-menu/context-menu-registry.js +1115 -0
  206. metalist-0.26.0/app/static/js/modules/context-menu/context-menu-service.js +939 -0
  207. metalist-0.26.0/app/static/js/modules/dom-utils.js +245 -0
  208. metalist-0.26.0/app/static/js/modules/error-handler.js +277 -0
  209. metalist-0.26.0/app/static/js/modules/error-overlay.js +162 -0
  210. metalist-0.26.0/app/static/js/modules/excalidraw/excalidraw-editor-service.js +414 -0
  211. metalist-0.26.0/app/static/js/modules/excalidraw/excalidraw-status-shown.js +19 -0
  212. metalist-0.26.0/app/static/js/modules/expected-errors.js +61 -0
  213. metalist-0.26.0/app/static/js/modules/file-transfer-slots.js +61 -0
  214. metalist-0.26.0/app/static/js/modules/floating-messages.js +368 -0
  215. metalist-0.26.0/app/static/js/modules/http-status.js +42 -0
  216. metalist-0.26.0/app/static/js/modules/import-sources.js +18 -0
  217. metalist-0.26.0/app/static/js/modules/modals/action-row.js +100 -0
  218. metalist-0.26.0/app/static/js/modules/modals/ai-agent-settings-modal.js +522 -0
  219. metalist-0.26.0/app/static/js/modules/modals/alphabetize-root-notes-modal.js +153 -0
  220. metalist-0.26.0/app/static/js/modules/modals/backup-restore-modal.js +962 -0
  221. metalist-0.26.0/app/static/js/modules/modals/backup-result-modal.js +223 -0
  222. metalist-0.26.0/app/static/js/modules/modals/backup-settings-modal.js +546 -0
  223. metalist-0.26.0/app/static/js/modules/modals/base-modal.js +470 -0
  224. metalist-0.26.0/app/static/js/modules/modals/confirmation-modal.js +138 -0
  225. metalist-0.26.0/app/static/js/modules/modals/date-range-modal.js +184 -0
  226. metalist-0.26.0/app/static/js/modules/modals/delete-folder-modal.js +122 -0
  227. metalist-0.26.0/app/static/js/modules/modals/delete-namespace-modal.js +536 -0
  228. metalist-0.26.0/app/static/js/modules/modals/delete-namespace-validation.js +48 -0
  229. metalist-0.26.0/app/static/js/modules/modals/dictation-settings-modal.js +137 -0
  230. metalist-0.26.0/app/static/js/modules/modals/error-dialog.js +207 -0
  231. metalist-0.26.0/app/static/js/modules/modals/export-options-modal.js +328 -0
  232. metalist-0.26.0/app/static/js/modules/modals/field-message.js +74 -0
  233. metalist-0.26.0/app/static/js/modules/modals/file-rename-modal.js +151 -0
  234. metalist-0.26.0/app/static/js/modules/modals/folder-name-modal.js +131 -0
  235. metalist-0.26.0/app/static/js/modules/modals/legacy-import-modal.js +262 -0
  236. metalist-0.26.0/app/static/js/modules/modals/link-title-retry-modal.js +311 -0
  237. metalist-0.26.0/app/static/js/modules/modals/namespace-modals.js +1006 -0
  238. metalist-0.26.0/app/static/js/modules/modals/namespace-rename-validation.js +51 -0
  239. metalist-0.26.0/app/static/js/modules/modals/note-layout-appearance-modal.js +177 -0
  240. metalist-0.26.0/app/static/js/modules/modals/ontology-modal.js +2900 -0
  241. metalist-0.26.0/app/static/js/modules/modals/password-modal.js +945 -0
  242. metalist-0.26.0/app/static/js/modules/modals/prioritize-modal.js +524 -0
  243. metalist-0.26.0/app/static/js/modules/modals/random-password-modal.js +539 -0
  244. metalist-0.26.0/app/static/js/modules/modals/recent-messages-modal.js +58 -0
  245. metalist-0.26.0/app/static/js/modules/modals/reminder-modal.js +1308 -0
  246. metalist-0.26.0/app/static/js/modules/modals/reset-updated-at-modal.js +143 -0
  247. metalist-0.26.0/app/static/js/modules/modals/search-suggestion-statistics-modal.js +477 -0
  248. metalist-0.26.0/app/static/js/modules/modals/session-timeout-modal.js +344 -0
  249. metalist-0.26.0/app/static/js/modules/modals/version-info-modal.js +306 -0
  250. metalist-0.26.0/app/static/js/modules/mode-manager/actions/content-actions.js +149 -0
  251. metalist-0.26.0/app/static/js/modules/mode-manager/actions/history-actions.js +292 -0
  252. metalist-0.26.0/app/static/js/modules/mode-manager/actions/note-actions.js +1351 -0
  253. metalist-0.26.0/app/static/js/modules/mode-manager/actions/selection-actions.js +309 -0
  254. metalist-0.26.0/app/static/js/modules/mode-manager/actions/ui-actions.js +430 -0
  255. metalist-0.26.0/app/static/js/modules/mode-manager/events/context-menu-events.js +1726 -0
  256. metalist-0.26.0/app/static/js/modules/mode-manager/events/inactivity-events.js +54 -0
  257. metalist-0.26.0/app/static/js/modules/mode-manager/events/input-events.js +208 -0
  258. metalist-0.26.0/app/static/js/modules/mode-manager/events/keyboard-events.js +4399 -0
  259. metalist-0.26.0/app/static/js/modules/mode-manager/events/mouse-events.js +2953 -0
  260. metalist-0.26.0/app/static/js/modules/mode-manager/events/search-events.js +265 -0
  261. metalist-0.26.0/app/static/js/modules/mode-manager/mode-context.js +1855 -0
  262. metalist-0.26.0/app/static/js/modules/mode-manager/mode-manager-controller.js +127 -0
  263. metalist-0.26.0/app/static/js/modules/mode-manager/services/add-style-service.js +197 -0
  264. metalist-0.26.0/app/static/js/modules/mode-manager/services/background-work-cards.js +92 -0
  265. metalist-0.26.0/app/static/js/modules/mode-manager/services/background-work-text.js +41 -0
  266. metalist-0.26.0/app/static/js/modules/mode-manager/services/bookmarks-drop-choice-modal-service.js +119 -0
  267. metalist-0.26.0/app/static/js/modules/mode-manager/services/collapse-affordance-service.js +280 -0
  268. metalist-0.26.0/app/static/js/modules/mode-manager/services/date-range-kinds.js +20 -0
  269. metalist-0.26.0/app/static/js/modules/mode-manager/services/dialog-copy-service.js +29 -0
  270. metalist-0.26.0/app/static/js/modules/mode-manager/services/dictation-paste-service.js +261 -0
  271. metalist-0.26.0/app/static/js/modules/mode-manager/services/differential-view-service.js +1279 -0
  272. metalist-0.26.0/app/static/js/modules/mode-manager/services/dropped-folders.js +103 -0
  273. metalist-0.26.0/app/static/js/modules/mode-manager/services/edit-preview-service.js +354 -0
  274. metalist-0.26.0/app/static/js/modules/mode-manager/services/file-filter-kinds.js +17 -0
  275. metalist-0.26.0/app/static/js/modules/mode-manager/services/file-image-preview-service.js +203 -0
  276. metalist-0.26.0/app/static/js/modules/mode-manager/services/file-reference-service.js +528 -0
  277. metalist-0.26.0/app/static/js/modules/mode-manager/services/file-rename-service.js +52 -0
  278. metalist-0.26.0/app/static/js/modules/mode-manager/services/file-viewer-service.js +242 -0
  279. metalist-0.26.0/app/static/js/modules/mode-manager/services/find-in-list-service.js +1099 -0
  280. metalist-0.26.0/app/static/js/modules/mode-manager/services/floating-card-placement.js +31 -0
  281. metalist-0.26.0/app/static/js/modules/mode-manager/services/floating-note-dom.js +81 -0
  282. metalist-0.26.0/app/static/js/modules/mode-manager/services/floating-note-service.js +279 -0
  283. metalist-0.26.0/app/static/js/modules/mode-manager/services/fold-arrow-alignment-service.js +192 -0
  284. metalist-0.26.0/app/static/js/modules/mode-manager/services/image-file-insert-choice-modal-service.js +185 -0
  285. metalist-0.26.0/app/static/js/modules/mode-manager/services/infinite-scroll-service.js +231 -0
  286. metalist-0.26.0/app/static/js/modules/mode-manager/services/insert-format-plan.js +65 -0
  287. metalist-0.26.0/app/static/js/modules/mode-manager/services/insert-format-service.js +99 -0
  288. metalist-0.26.0/app/static/js/modules/mode-manager/services/media-player-service.js +43 -0
  289. metalist-0.26.0/app/static/js/modules/mode-manager/services/mermaid-render-service.js +337 -0
  290. metalist-0.26.0/app/static/js/modules/mode-manager/services/note-click-target-service.js +82 -0
  291. metalist-0.26.0/app/static/js/modules/mode-manager/services/note-fullscreen-service.js +118 -0
  292. metalist-0.26.0/app/static/js/modules/mode-manager/services/password-clipboard-service.js +105 -0
  293. metalist-0.26.0/app/static/js/modules/mode-manager/services/paste-format-detection-service.js +463 -0
  294. metalist-0.26.0/app/static/js/modules/mode-manager/services/paste-format-guess-service.js +409 -0
  295. metalist-0.26.0/app/static/js/modules/mode-manager/services/paste-format-offer-service.js +212 -0
  296. metalist-0.26.0/app/static/js/modules/mode-manager/services/polling-service.js +194 -0
  297. metalist-0.26.0/app/static/js/modules/mode-manager/services/reference-caret-preview-service.js +135 -0
  298. metalist-0.26.0/app/static/js/modules/mode-manager/services/reference-hover-preview-service.js +133 -0
  299. metalist-0.26.0/app/static/js/modules/mode-manager/services/reference-insert-point-service.js +117 -0
  300. metalist-0.26.0/app/static/js/modules/mode-manager/services/reference-preview-card-service.js +135 -0
  301. metalist-0.26.0/app/static/js/modules/mode-manager/services/reference-source-navigation-service.js +658 -0
  302. metalist-0.26.0/app/static/js/modules/mode-manager/services/reference-suggestions-service.js +515 -0
  303. metalist-0.26.0/app/static/js/modules/mode-manager/services/reference-text.js +20 -0
  304. metalist-0.26.0/app/static/js/modules/mode-manager/services/reference-view-transition-service.js +222 -0
  305. metalist-0.26.0/app/static/js/modules/mode-manager/services/remote-image-proxy-service.js +246 -0
  306. metalist-0.26.0/app/static/js/modules/mode-manager/services/remove-formatting-service.js +502 -0
  307. metalist-0.26.0/app/static/js/modules/mode-manager/services/root-date-separator-service.js +45 -0
  308. metalist-0.26.0/app/static/js/modules/mode-manager/services/root-note-creation-service.js +54 -0
  309. metalist-0.26.0/app/static/js/modules/mode-manager/services/root-sort-indicator-service.js +35 -0
  310. metalist-0.26.0/app/static/js/modules/mode-manager/services/search-highlight-service.js +212 -0
  311. metalist-0.26.0/app/static/js/modules/mode-manager/services/search-suggestions-service.js +637 -0
  312. metalist-0.26.0/app/static/js/modules/mode-manager/services/search-syntax-service.js +827 -0
  313. metalist-0.26.0/app/static/js/modules/mode-manager/services/selected-text-tag-service.js +62 -0
  314. metalist-0.26.0/app/static/js/modules/mode-manager/services/tab-context-actions.js +20 -0
  315. metalist-0.26.0/app/static/js/modules/mode-manager/services/tab-dom-cache-service.js +142 -0
  316. metalist-0.26.0/app/static/js/modules/mode-manager/services/tab-state-service.js +393 -0
  317. metalist-0.26.0/app/static/js/modules/mode-manager/services/tag-proposal-service.js +361 -0
  318. metalist-0.26.0/app/static/js/modules/mode-manager/services/tag-syntax-service.js +1162 -0
  319. metalist-0.26.0/app/static/js/modules/mode-manager/services/text-drop-choice-modal-service.js +131 -0
  320. metalist-0.26.0/app/static/js/modules/mode-manager/services/type-ahead-service.js +82 -0
  321. metalist-0.26.0/app/static/js/modules/mode-manager/services/uuid-double-click-service.js +46 -0
  322. metalist-0.26.0/app/static/js/modules/mode-manager/services/value-buttons-service.js +190 -0
  323. metalist-0.26.0/app/static/js/modules/mode-manager/services/viewport-hold-service.js +1176 -0
  324. metalist-0.26.0/app/static/js/modules/mode-manager/services/viewport-reference.js +73 -0
  325. metalist-0.26.0/app/static/js/modules/mode-manager/services/virtual-folders-service.js +655 -0
  326. metalist-0.26.0/app/static/js/modules/mode-manager/services/virtual-folders-state.js +20 -0
  327. metalist-0.26.0/app/static/js/modules/mode-manager/services/virtual-folders-width.js +159 -0
  328. metalist-0.26.0/app/static/js/modules/new-vault-setup.js +41 -0
  329. metalist-0.26.0/app/static/js/modules/passphrase.js +82 -0
  330. metalist-0.26.0/app/static/js/modules/password-generator.js +84 -0
  331. metalist-0.26.0/app/static/js/modules/password-policy.js +38 -0
  332. metalist-0.26.0/app/static/js/modules/phone/phone-mode.js +610 -0
  333. metalist-0.26.0/app/static/js/modules/phone/phone-search-terms.js +65 -0
  334. metalist-0.26.0/app/static/js/modules/quoted-values.js +127 -0
  335. metalist-0.26.0/app/static/js/modules/reminder-surface-service.js +1290 -0
  336. metalist-0.26.0/app/static/js/modules/restore-session-end.js +28 -0
  337. metalist-0.26.0/app/static/js/modules/tag-characters-data.js +3 -0
  338. metalist-0.26.0/app/static/js/modules/tag-characters.js +70 -0
  339. metalist-0.26.0/app/static/js/modules/trim-reminder-schedule.js +54 -0
  340. metalist-0.26.0/app/static/js/modules/trim-reminder-service.js +180 -0
  341. metalist-0.26.0/app/static/js/modules/wizard/bookmarks-file.js +60 -0
  342. metalist-0.26.0/app/static/js/modules/wizard/import-wizard-steps.js +1283 -0
  343. metalist-0.26.0/app/static/js/modules/wizard/new-vault-steps.js +411 -0
  344. metalist-0.26.0/app/static/js/modules/wizard/setup-wizards.js +104 -0
  345. metalist-0.26.0/app/static/js/modules/wizard/wizard-modal.js +374 -0
  346. metalist-0.26.0/app/static/js/vendor/eff-large-wordlist-2016-07-18.LICENSE.txt +7 -0
  347. metalist-0.26.0/app/static/js/vendor/eff-large-wordlist-2016-07-18.txt +7776 -0
  348. metalist-0.26.0/app/static/manifest.json +13 -0
  349. metalist-0.26.0/app/templates/_logo_mark.html +10 -0
  350. metalist-0.26.0/app/templates/base.html +23 -0
  351. metalist-0.26.0/app/templates/index.html +395 -0
  352. metalist-0.26.0/app/templates/locked.html +40 -0
  353. metalist-0.26.0/app/templates/namespace_deleted.html +233 -0
  354. metalist-0.26.0/app/templates/namespace_renamed.html +70 -0
  355. metalist-0.26.0/app/usecases/create_note.py +188 -0
  356. metalist-0.26.0/app/usecases/delete_notes_in_view.py +90 -0
  357. metalist-0.26.0/app/usecases/delete_subtree.py +180 -0
  358. metalist-0.26.0/app/usecases/import_bookmarks.py +129 -0
  359. metalist-0.26.0/app/usecases/import_obsidian_vault.py +740 -0
  360. metalist-0.26.0/app/usecases/outdent.py +82 -0
  361. metalist-0.26.0/app/usecases/prefetch_link_titles.py +22 -0
  362. metalist-0.26.0/app/usecases/search_comment_autofill.py +159 -0
  363. metalist-0.26.0/app/usecases/search_context_tags.py +196 -0
  364. metalist-0.26.0/app/usecases/tag_proposals.py +447 -0
  365. metalist-0.26.0/app/usecases/toggle_markdown_task.py +114 -0
  366. metalist-0.26.0/app/usecases/update_content.py +180 -0
  367. metalist-0.26.0/app/usecases/virtual_folders.py +134 -0
  368. metalist-0.26.0/app/utils/__init__.py +0 -0
  369. metalist-0.26.0/app/utils/file_names.py +30 -0
  370. metalist-0.26.0/app/utils/sampling.py +28 -0
  371. metalist-0.26.0/app/version.py +3 -0
  372. metalist-0.26.0/convert-from-legacy.py +1167 -0
  373. metalist-0.26.0/metalist.egg-info/PKG-INFO +368 -0
  374. metalist-0.26.0/metalist.egg-info/SOURCES.txt +743 -0
  375. metalist-0.26.0/metalist.egg-info/requires.txt +38 -0
  376. metalist-0.26.0/pyproject.toml +125 -0
  377. metalist-0.24.2/PKG-INFO +0 -569
  378. metalist-0.24.2/README.md +0 -528
  379. metalist-0.24.2/app/api/middleware/auth.py +0 -134
  380. metalist-0.24.2/app/api/note_requests.py +0 -490
  381. metalist-0.24.2/app/api/routes/ai.py +0 -1091
  382. metalist-0.24.2/app/api/routes/app_updates.py +0 -56
  383. metalist-0.24.2/app/api/routes/auth.py +0 -1176
  384. metalist-0.24.2/app/api/routes/backups.py +0 -1176
  385. metalist-0.24.2/app/api/routes/files.py +0 -245
  386. metalist-0.24.2/app/api/routes/notes.py +0 -1786
  387. metalist-0.24.2/app/api/routes/ontology.py +0 -639
  388. metalist-0.24.2/app/api/transactions.py +0 -155
  389. metalist-0.24.2/app/api/upload_limits.py +0 -88
  390. metalist-0.24.2/app/config.py +0 -141
  391. metalist-0.24.2/app/db/file_schema.py +0 -58
  392. metalist-0.24.2/app/db/files_sql.py +0 -353
  393. metalist-0.24.2/app/db/migrations.py +0 -435
  394. metalist-0.24.2/app/db/schema.py +0 -257
  395. metalist-0.24.2/app/db/settings_sql.py +0 -336
  396. metalist-0.24.2/app/db/version.py +0 -3
  397. metalist-0.24.2/app/encryption_audit.py +0 -1165
  398. metalist-0.24.2/app/exception_boundaries.py +0 -179
  399. metalist-0.24.2/app/main.py +0 -839
  400. metalist-0.24.2/app/presentation/render/note_renderer.py +0 -75
  401. metalist-0.24.2/app/security/http_headers.py +0 -43
  402. metalist-0.24.2/app/security/note_html.py +0 -375
  403. metalist-0.24.2/app/security/rendered_html.py +0 -188
  404. metalist-0.24.2/app/security/sensitive_cache.py +0 -116
  405. metalist-0.24.2/app/services/agent/agent_loop.py +0 -592
  406. metalist-0.24.2/app/services/agent/ai_send.py +0 -75
  407. metalist-0.24.2/app/services/agent/cloud_privacy.py +0 -551
  408. metalist-0.24.2/app/services/agent/export_title_suggestions.py +0 -198
  409. metalist-0.24.2/app/services/agent/failure_explanations.py +0 -173
  410. metalist-0.24.2/app/services/agent/help_catalog.py +0 -27
  411. metalist-0.24.2/app/services/agent/history.py +0 -125
  412. metalist-0.24.2/app/services/agent/inference.py +0 -164
  413. metalist-0.24.2/app/services/agent/note_tag_suggestions.py +0 -325
  414. metalist-0.24.2/app/services/agent/openai_inference.py +0 -586
  415. metalist-0.24.2/app/services/agent/openai_models.py +0 -25
  416. metalist-0.24.2/app/services/agent/prompts/__init__.py +0 -17
  417. metalist-0.24.2/app/services/agent/prompts/agent.md +0 -132
  418. metalist-0.24.2/app/services/agent/release_notes.py +0 -50
  419. metalist-0.24.2/app/services/agent/retrieval_settings.py +0 -133
  420. metalist-0.24.2/app/services/agent/runtime.py +0 -1734
  421. metalist-0.24.2/app/services/agent/skills/help-ai.md +0 -149
  422. metalist-0.24.2/app/services/agent/skills/help-data.md +0 -54
  423. metalist-0.24.2/app/services/agent/skills/help-dictation.md +0 -93
  424. metalist-0.24.2/app/services/agent/skills/help-formatting.md +0 -236
  425. metalist-0.24.2/app/services/agent/skills/help-menus.md +0 -136
  426. metalist-0.24.2/app/services/agent/skills/help-mouse.md +0 -58
  427. metalist-0.24.2/app/services/agent/skills/help-notes.md +0 -133
  428. metalist-0.24.2/app/services/agent/skills/help-ontology.md +0 -204
  429. metalist-0.24.2/app/services/agent/skills/help-privacy.md +0 -161
  430. metalist-0.24.2/app/services/agent/skills/help-references.md +0 -121
  431. metalist-0.24.2/app/services/agent/skills/help-releases.md +0 -227
  432. metalist-0.24.2/app/services/agent/skills/help-reminders.md +0 -152
  433. metalist-0.24.2/app/services/agent/skills/help-search.md +0 -348
  434. metalist-0.24.2/app/services/agent/skills/help-tags.md +0 -240
  435. metalist-0.24.2/app/services/agent/structured_inference.py +0 -683
  436. metalist-0.24.2/app/services/agent/tagging_run.py +0 -513
  437. metalist-0.24.2/app/services/ai_chat.py +0 -449
  438. metalist-0.24.2/app/services/ai_chat_rendering.py +0 -900
  439. metalist-0.24.2/app/services/ai_chat_stream.py +0 -230
  440. metalist-0.24.2/app/services/ai_setup.py +0 -87
  441. metalist-0.24.2/app/services/auth_cache_state.py +0 -32
  442. metalist-0.24.2/app/services/auth_service.py +0 -653
  443. metalist-0.24.2/app/services/backlink_index.py +0 -70
  444. metalist-0.24.2/app/services/backlinks.py +0 -83
  445. metalist-0.24.2/app/services/backup_service.py +0 -1107
  446. metalist-0.24.2/app/services/backup_settings_service.py +0 -167
  447. metalist-0.24.2/app/services/client_state_service.py +0 -576
  448. metalist-0.24.2/app/services/content_cache.py +0 -369
  449. metalist-0.24.2/app/services/content_formatting.py +0 -2147
  450. metalist-0.24.2/app/services/dictation_cleanup.py +0 -476
  451. metalist-0.24.2/app/services/editing_image_sizes.py +0 -95
  452. metalist-0.24.2/app/services/embedded_references.py +0 -1592
  453. metalist-0.24.2/app/services/file_registry.py +0 -201
  454. metalist-0.24.2/app/services/file_storage.py +0 -1084
  455. metalist-0.24.2/app/services/file_text_preview.py +0 -83
  456. metalist-0.24.2/app/services/find_text.py +0 -119
  457. metalist-0.24.2/app/services/footnote_rendering.py +0 -207
  458. metalist-0.24.2/app/services/html_export.py +0 -763
  459. metalist-0.24.2/app/services/latex_rendering.py +0 -285
  460. metalist-0.24.2/app/services/link_titles.py +0 -1613
  461. metalist-0.24.2/app/services/markdown_rendering.py +0 -745
  462. metalist-0.24.2/app/services/memory_breakdown.py +0 -212
  463. metalist-0.24.2/app/services/mermaid_note_rendering.py +0 -27
  464. metalist-0.24.2/app/services/note_fullscreen.py +0 -96
  465. metalist-0.24.2/app/services/note_store.py +0 -1465
  466. metalist-0.24.2/app/services/ontology_rules_store.py +0 -608
  467. metalist-0.24.2/app/services/openai_credentials.py +0 -191
  468. metalist-0.24.2/app/services/reference_presentation.py +0 -29
  469. metalist-0.24.2/app/services/request_recovery.py +0 -106
  470. metalist-0.24.2/app/services/reset_for_tests.py +0 -51
  471. metalist-0.24.2/app/services/root_date_filter.py +0 -153
  472. metalist-0.24.2/app/services/search_index.py +0 -1737
  473. metalist-0.24.2/app/services/search_query.py +0 -299
  474. metalist-0.24.2/app/services/search_text.py +0 -146
  475. metalist-0.24.2/app/services/selected_text_tag.py +0 -134
  476. metalist-0.24.2/app/services/snapshot.py +0 -1421
  477. metalist-0.24.2/app/services/store.py +0 -126
  478. metalist-0.24.2/app/services/structured_note_renderers.py +0 -488
  479. metalist-0.24.2/app/services/sync.py +0 -161
  480. metalist-0.24.2/app/services/tab_state.py +0 -803
  481. metalist-0.24.2/app/services/tag_details.py +0 -224
  482. metalist-0.24.2/app/services/tag_ontology.py +0 -874
  483. metalist-0.24.2/app/services/tag_properties.py +0 -472
  484. metalist-0.24.2/app/services/tag_rename.py +0 -293
  485. metalist-0.24.2/app/services/tag_suggestion_reasons.py +0 -381
  486. metalist-0.24.2/app/services/tag_suggestions.py +0 -1313
  487. metalist-0.24.2/app/services/tag_term_matching.py +0 -525
  488. metalist-0.24.2/app/services/undo_state.py +0 -1199
  489. metalist-0.24.2/app/startup_environment.py +0 -55
  490. metalist-0.24.2/app/startup_sanity.py +0 -966
  491. metalist-0.24.2/app/startup_sanity_config.py +0 -134
  492. metalist-0.24.2/app/static/config/agent-menu-actions.json +0 -451
  493. metalist-0.24.2/app/static/config/command_palette_tags.json +0 -296
  494. metalist-0.24.2/app/static/css/main.css +0 -10241
  495. metalist-0.24.2/app/static/img/favicon.ico +0 -0
  496. metalist-0.24.2/app/static/img/metalist-logo-black-1024.png +0 -0
  497. metalist-0.24.2/app/static/img/metalist-logo-black-512.png +0 -0
  498. metalist-0.24.2/app/static/img/metalist-logo-black.svg +0 -9
  499. metalist-0.24.2/app/static/img/metalist-logo-white-1024.png +0 -0
  500. metalist-0.24.2/app/static/img/metalist-logo-white-512.png +0 -0
  501. metalist-0.24.2/app/static/img/metalist-logo-white.svg +0 -9
  502. metalist-0.24.2/app/static/js/main.js +0 -106
  503. metalist-0.24.2/app/static/js/modules/ai-chat/agent-menu-actions.js +0 -51
  504. metalist-0.24.2/app/static/js/modules/ai-chat/agent-retrieval-settings.js +0 -116
  505. metalist-0.24.2/app/static/js/modules/ai-chat/ai-chat-api.js +0 -496
  506. metalist-0.24.2/app/static/js/modules/ai-chat/ai-chat-panel-controller.js +0 -1913
  507. metalist-0.24.2/app/static/js/modules/ai-chat/ai-thinking-level-service.js +0 -35
  508. metalist-0.24.2/app/static/js/modules/ai-chat/bulk-proposal-ui.js +0 -300
  509. metalist-0.24.2/app/static/js/modules/ai-chat/confirmation-card.js +0 -93
  510. metalist-0.24.2/app/static/js/modules/ai-chat/proposal-menu.js +0 -86
  511. metalist-0.24.2/app/static/js/modules/api-client.js +0 -1557
  512. metalist-0.24.2/app/static/js/modules/auth.js +0 -827
  513. metalist-0.24.2/app/static/js/modules/byte-sizes.js +0 -5
  514. metalist-0.24.2/app/static/js/modules/command-palette/command-palette-controller.js +0 -2661
  515. metalist-0.24.2/app/static/js/modules/command-palette/endpoint-registry.js +0 -616
  516. metalist-0.24.2/app/static/js/modules/config.js +0 -241
  517. metalist-0.24.2/app/static/js/modules/context-menu/context-menu-registry.js +0 -1032
  518. metalist-0.24.2/app/static/js/modules/context-menu/context-menu-service.js +0 -922
  519. metalist-0.24.2/app/static/js/modules/dom-utils.js +0 -245
  520. metalist-0.24.2/app/static/js/modules/error-handler.js +0 -292
  521. metalist-0.24.2/app/static/js/modules/error-overlay.js +0 -110
  522. metalist-0.24.2/app/static/js/modules/excalidraw/excalidraw-editor-service.js +0 -392
  523. metalist-0.24.2/app/static/js/modules/expected-errors.js +0 -47
  524. metalist-0.24.2/app/static/js/modules/http-status.js +0 -40
  525. metalist-0.24.2/app/static/js/modules/modals/ai-agent-settings-modal.js +0 -596
  526. metalist-0.24.2/app/static/js/modules/modals/alphabetize-root-notes-modal.js +0 -163
  527. metalist-0.24.2/app/static/js/modules/modals/backup-restore-modal.js +0 -953
  528. metalist-0.24.2/app/static/js/modules/modals/backup-result-modal.js +0 -233
  529. metalist-0.24.2/app/static/js/modules/modals/backup-settings-modal.js +0 -547
  530. metalist-0.24.2/app/static/js/modules/modals/base-modal.js +0 -399
  531. metalist-0.24.2/app/static/js/modules/modals/confirmation-modal.js +0 -136
  532. metalist-0.24.2/app/static/js/modules/modals/date-range-modal.js +0 -178
  533. metalist-0.24.2/app/static/js/modules/modals/delete-namespace-modal.js +0 -562
  534. metalist-0.24.2/app/static/js/modules/modals/delete-namespace-validation.js +0 -46
  535. metalist-0.24.2/app/static/js/modules/modals/dictation-settings-modal.js +0 -132
  536. metalist-0.24.2/app/static/js/modules/modals/export-options-modal.js +0 -318
  537. metalist-0.24.2/app/static/js/modules/modals/link-title-retry-modal.js +0 -297
  538. metalist-0.24.2/app/static/js/modules/modals/namespace-modals.js +0 -1190
  539. metalist-0.24.2/app/static/js/modules/modals/namespace-rename-validation.js +0 -32
  540. metalist-0.24.2/app/static/js/modules/modals/note-layout-appearance-modal.js +0 -175
  541. metalist-0.24.2/app/static/js/modules/modals/ontology-modal.js +0 -2899
  542. metalist-0.24.2/app/static/js/modules/modals/password-modal.js +0 -856
  543. metalist-0.24.2/app/static/js/modules/modals/prioritize-modal.js +0 -522
  544. metalist-0.24.2/app/static/js/modules/modals/random-password-modal.js +0 -453
  545. metalist-0.24.2/app/static/js/modules/modals/reminder-modal.js +0 -1292
  546. metalist-0.24.2/app/static/js/modules/modals/reset-updated-at-modal.js +0 -153
  547. metalist-0.24.2/app/static/js/modules/modals/search-suggestion-statistics-modal.js +0 -447
  548. metalist-0.24.2/app/static/js/modules/modals/session-timeout-modal.js +0 -334
  549. metalist-0.24.2/app/static/js/modules/modals/version-info-modal.js +0 -308
  550. metalist-0.24.2/app/static/js/modules/mode-manager/actions/content-actions.js +0 -133
  551. metalist-0.24.2/app/static/js/modules/mode-manager/actions/history-actions.js +0 -292
  552. metalist-0.24.2/app/static/js/modules/mode-manager/actions/note-actions.js +0 -1315
  553. metalist-0.24.2/app/static/js/modules/mode-manager/actions/selection-actions.js +0 -309
  554. metalist-0.24.2/app/static/js/modules/mode-manager/actions/ui-actions.js +0 -418
  555. metalist-0.24.2/app/static/js/modules/mode-manager/events/context-menu-events.js +0 -1729
  556. metalist-0.24.2/app/static/js/modules/mode-manager/events/inactivity-events.js +0 -46
  557. metalist-0.24.2/app/static/js/modules/mode-manager/events/input-events.js +0 -199
  558. metalist-0.24.2/app/static/js/modules/mode-manager/events/keyboard-events.js +0 -4222
  559. metalist-0.24.2/app/static/js/modules/mode-manager/events/mouse-events.js +0 -2778
  560. metalist-0.24.2/app/static/js/modules/mode-manager/events/search-events.js +0 -247
  561. metalist-0.24.2/app/static/js/modules/mode-manager/mode-context.js +0 -1857
  562. metalist-0.24.2/app/static/js/modules/mode-manager/mode-manager-controller.js +0 -124
  563. metalist-0.24.2/app/static/js/modules/mode-manager/services/add-style-service.js +0 -197
  564. metalist-0.24.2/app/static/js/modules/mode-manager/services/collapse-affordance-service.js +0 -238
  565. metalist-0.24.2/app/static/js/modules/mode-manager/services/date-range-kinds.js +0 -20
  566. metalist-0.24.2/app/static/js/modules/mode-manager/services/dictation-paste-service.js +0 -261
  567. metalist-0.24.2/app/static/js/modules/mode-manager/services/differential-view-service.js +0 -1278
  568. metalist-0.24.2/app/static/js/modules/mode-manager/services/dropped-file-preview-service.js +0 -49
  569. metalist-0.24.2/app/static/js/modules/mode-manager/services/file-filter-kinds.js +0 -17
  570. metalist-0.24.2/app/static/js/modules/mode-manager/services/file-image-preview-service.js +0 -196
  571. metalist-0.24.2/app/static/js/modules/mode-manager/services/file-reference-service.js +0 -473
  572. metalist-0.24.2/app/static/js/modules/mode-manager/services/find-in-list-service.js +0 -779
  573. metalist-0.24.2/app/static/js/modules/mode-manager/services/floating-note-dom.js +0 -80
  574. metalist-0.24.2/app/static/js/modules/mode-manager/services/floating-note-service.js +0 -262
  575. metalist-0.24.2/app/static/js/modules/mode-manager/services/image-file-insert-choice-modal-service.js +0 -179
  576. metalist-0.24.2/app/static/js/modules/mode-manager/services/infinite-scroll-service.js +0 -203
  577. metalist-0.24.2/app/static/js/modules/mode-manager/services/mermaid-render-service.js +0 -298
  578. metalist-0.24.2/app/static/js/modules/mode-manager/services/note-click-target-service.js +0 -55
  579. metalist-0.24.2/app/static/js/modules/mode-manager/services/note-fullscreen-service.js +0 -116
  580. metalist-0.24.2/app/static/js/modules/mode-manager/services/password-clipboard-service.js +0 -104
  581. metalist-0.24.2/app/static/js/modules/mode-manager/services/paste-format-detection-service.js +0 -462
  582. metalist-0.24.2/app/static/js/modules/mode-manager/services/paste-format-guess-service.js +0 -362
  583. metalist-0.24.2/app/static/js/modules/mode-manager/services/paste-format-offer-service.js +0 -182
  584. metalist-0.24.2/app/static/js/modules/mode-manager/services/paste-reference-here-service.js +0 -117
  585. metalist-0.24.2/app/static/js/modules/mode-manager/services/polling-service.js +0 -188
  586. metalist-0.24.2/app/static/js/modules/mode-manager/services/reference-source-navigation-service.js +0 -606
  587. metalist-0.24.2/app/static/js/modules/mode-manager/services/reference-view-transition-service.js +0 -206
  588. metalist-0.24.2/app/static/js/modules/mode-manager/services/remote-image-proxy-service.js +0 -228
  589. metalist-0.24.2/app/static/js/modules/mode-manager/services/remove-formatting-service.js +0 -503
  590. metalist-0.24.2/app/static/js/modules/mode-manager/services/root-date-separator-service.js +0 -45
  591. metalist-0.24.2/app/static/js/modules/mode-manager/services/root-note-creation-service.js +0 -37
  592. metalist-0.24.2/app/static/js/modules/mode-manager/services/root-sort-indicator-service.js +0 -81
  593. metalist-0.24.2/app/static/js/modules/mode-manager/services/search-highlight-service.js +0 -177
  594. metalist-0.24.2/app/static/js/modules/mode-manager/services/search-suggestions-service.js +0 -617
  595. metalist-0.24.2/app/static/js/modules/mode-manager/services/search-syntax-service.js +0 -529
  596. metalist-0.24.2/app/static/js/modules/mode-manager/services/selected-text-tag-service.js +0 -67
  597. metalist-0.24.2/app/static/js/modules/mode-manager/services/tab-dom-cache-service.js +0 -142
  598. metalist-0.24.2/app/static/js/modules/mode-manager/services/tab-state-service.js +0 -366
  599. metalist-0.24.2/app/static/js/modules/mode-manager/services/tag-proposal-service.js +0 -359
  600. metalist-0.24.2/app/static/js/modules/mode-manager/services/tag-syntax-service.js +0 -993
  601. metalist-0.24.2/app/static/js/modules/mode-manager/services/viewport-hold-service.js +0 -1126
  602. metalist-0.24.2/app/static/js/modules/mode-manager/services/viewport-reference.js +0 -55
  603. metalist-0.24.2/app/static/js/modules/password-generator.js +0 -79
  604. metalist-0.24.2/app/static/js/modules/password-policy.js +0 -38
  605. metalist-0.24.2/app/static/js/modules/reminder-surface-service.js +0 -1290
  606. metalist-0.24.2/app/templates/_logo_mark.html +0 -6
  607. metalist-0.24.2/app/templates/base.html +0 -20
  608. metalist-0.24.2/app/templates/index.html +0 -361
  609. metalist-0.24.2/app/templates/locked.html +0 -37
  610. metalist-0.24.2/app/templates/namespace_deleted.html +0 -230
  611. metalist-0.24.2/app/templates/namespace_renamed.html +0 -67
  612. metalist-0.24.2/app/usecases/create_file_preview_child.py +0 -65
  613. metalist-0.24.2/app/usecases/create_note.py +0 -184
  614. metalist-0.24.2/app/usecases/delete_subtree.py +0 -169
  615. metalist-0.24.2/app/usecases/outdent.py +0 -88
  616. metalist-0.24.2/app/usecases/paste_reference.py +0 -78
  617. metalist-0.24.2/app/usecases/prefetch_link_titles.py +0 -21
  618. metalist-0.24.2/app/usecases/search_comment_autofill.py +0 -133
  619. metalist-0.24.2/app/usecases/search_context_tags.py +0 -141
  620. metalist-0.24.2/app/usecases/tag_proposals.py +0 -446
  621. metalist-0.24.2/app/usecases/update_content.py +0 -180
  622. metalist-0.24.2/app/version.py +0 -3
  623. metalist-0.24.2/convert-from-legacy.py +0 -1064
  624. metalist-0.24.2/metalist.egg-info/PKG-INFO +0 -569
  625. metalist-0.24.2/metalist.egg-info/SOURCES.txt +0 -618
  626. metalist-0.24.2/metalist.egg-info/requires.txt +0 -32
  627. metalist-0.24.2/pyproject.toml +0 -101
  628. {metalist-0.24.2 → metalist-0.26.0}/MANIFEST.in +0 -0
  629. {metalist-0.24.2 → metalist-0.26.0}/app/__init__.py +0 -0
  630. {metalist-0.24.2 → metalist-0.26.0}/app/api/__init__.py +0 -0
  631. {metalist-0.24.2 → metalist-0.26.0}/app/api/deps.py +0 -0
  632. {metalist-0.24.2 → metalist-0.26.0}/app/api/dev.py +0 -0
  633. {metalist-0.24.2 → metalist-0.26.0}/app/api/request_auth.py +0 -0
  634. {metalist-0.24.2 → metalist-0.26.0}/app/api/routes/reminders.py +0 -0
  635. {metalist-0.24.2 → metalist-0.26.0}/app/api/routes/remote_images.py +0 -0
  636. {metalist-0.24.2 → metalist-0.26.0}/app/api/routes/test.py +0 -0
  637. {metalist-0.24.2 → metalist-0.26.0}/app/contracts.py +0 -0
  638. {metalist-0.24.2 → metalist-0.26.0}/app/data_directory.py +0 -0
  639. {metalist-0.24.2 → metalist-0.26.0}/app/db/__init__.py +0 -0
  640. {metalist-0.24.2 → metalist-0.26.0}/app/db/backup_settings_sql.py +0 -0
  641. {metalist-0.24.2 → metalist-0.26.0}/app/db/content_migrations_sql.py +0 -0
  642. {metalist-0.24.2 → metalist-0.26.0}/app/db/editable_files_migration.py +0 -0
  643. {metalist-0.24.2 → metalist-0.26.0}/app/db/engine.py +0 -0
  644. {metalist-0.24.2 → metalist-0.26.0}/app/db/file_session.py +0 -0
  645. {metalist-0.24.2 → metalist-0.26.0}/app/db/link_titles_sql.py +0 -0
  646. {metalist-0.24.2 → metalist-0.26.0}/app/db/live_recovery.py +0 -0
  647. {metalist-0.24.2 → metalist-0.26.0}/app/db/notes_sql.py +0 -0
  648. {metalist-0.24.2 → metalist-0.26.0}/app/db/ontology_rules_sql.py +0 -0
  649. {metalist-0.24.2 → metalist-0.26.0}/app/db/raw_connection.py +0 -0
  650. {metalist-0.24.2 → metalist-0.26.0}/app/db/reminders_sql.py +0 -0
  651. {metalist-0.24.2 → metalist-0.26.0}/app/db/retire_sounds.py +0 -0
  652. {metalist-0.24.2 → metalist-0.26.0}/app/db/search_history_sql.py +0 -0
  653. {metalist-0.24.2 → metalist-0.26.0}/app/db/session.py +0 -0
  654. {metalist-0.24.2 → metalist-0.26.0}/app/db/tab_state_sql.py +0 -0
  655. {metalist-0.24.2 → metalist-0.26.0}/app/https_proxy.py +0 -0
  656. {metalist-0.24.2 → metalist-0.26.0}/app/launch_clock.py +0 -0
  657. {metalist-0.24.2 → metalist-0.26.0}/app/models/database.py +0 -0
  658. {metalist-0.24.2 → metalist-0.26.0}/app/models/utils.py +0 -0
  659. {metalist-0.24.2 → metalist-0.26.0}/app/network_settings.py +0 -0
  660. {metalist-0.24.2 → metalist-0.26.0}/app/presentation/__init__.py +0 -0
  661. {metalist-0.24.2 → metalist-0.26.0}/app/presentation/login_page.py +0 -0
  662. {metalist-0.24.2 → metalist-0.26.0}/app/presentation/render/__init__.py +0 -0
  663. {metalist-0.24.2 → metalist-0.26.0}/app/presentation/templates.py +0 -0
  664. {metalist-0.24.2 → metalist-0.26.0}/app/process_memory.py +0 -0
  665. {metalist-0.24.2 → metalist-0.26.0}/app/security/authenticated_logging.py +0 -0
  666. {metalist-0.24.2 → metalist-0.26.0}/app/security/crypto_sizes.py +0 -0
  667. {metalist-0.24.2 → metalist-0.26.0}/app/security/encryption.py +0 -0
  668. {metalist-0.24.2 → metalist-0.26.0}/app/security/http_error_diagnostics.py +0 -0
  669. {metalist-0.24.2 → metalist-0.26.0}/app/security/request_boundary.py +0 -0
  670. {metalist-0.24.2 → metalist-0.26.0}/app/security/request_hosts.py +0 -0
  671. {metalist-0.24.2 → metalist-0.26.0}/app/security/sensitive_logging.py +0 -0
  672. {metalist-0.24.2 → metalist-0.26.0}/app/security/shell_execution.py +0 -0
  673. {metalist-0.24.2 → metalist-0.26.0}/app/security/validation_errors.py +0 -0
  674. {metalist-0.24.2 → metalist-0.26.0}/app/server_runtime.py +0 -0
  675. {metalist-0.24.2 → metalist-0.26.0}/app/services/__init__.py +0 -0
  676. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/__init__.py +0 -0
  677. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/action_log.py +0 -0
  678. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/agent_tools.py +0 -0
  679. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/citation_tokens.py +0 -0
  680. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/context.py +0 -0
  681. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/evidence_serialization.py +0 -0
  682. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/execution_errors.py +0 -0
  683. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/investigation.py +0 -0
  684. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/judging.py +0 -0
  685. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/menu_actions.py +0 -0
  686. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/model_policy.py +0 -0
  687. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/note_aliases.py +0 -0
  688. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/openai_cost_tracking.py +0 -0
  689. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/privacy_guard.py +0 -0
  690. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/prompt_settings.py +0 -0
  691. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/prompts/final-response.md +0 -0
  692. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/prompts/system.md +0 -0
  693. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/scope.py +0 -0
  694. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/skill_settings.py +0 -0
  695. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/skills/__init__.py +0 -0
  696. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/skills/staged-summary.md +0 -0
  697. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/skills/tag-proposals.md +0 -0
  698. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/skills/web-browsing.md +0 -0
  699. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/staged_summary.py +0 -0
  700. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/strict_structured_outputs.py +0 -0
  701. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/summary_batch_store.py +0 -0
  702. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/tagging.py +0 -0
  703. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/token_estimation.py +0 -0
  704. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/tool_calling.py +0 -0
  705. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/trace.py +0 -0
  706. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/web_actions.py +0 -0
  707. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/web_capabilities.py +0 -0
  708. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/web_evidence.py +0 -0
  709. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/web_fetch.py +0 -0
  710. {metalist-0.24.2 → metalist-0.26.0}/app/services/agent/web_settings.py +0 -0
  711. {metalist-0.24.2 → metalist-0.26.0}/app/services/app_update_worker.py +0 -0
  712. {metalist-0.24.2 → metalist-0.26.0}/app/services/app_updates.py +0 -0
  713. {metalist-0.24.2 → metalist-0.26.0}/app/services/auth.py +0 -0
  714. {metalist-0.24.2 → metalist-0.26.0}/app/services/bulk_operation.py +0 -0
  715. {metalist-0.24.2 → metalist-0.26.0}/app/services/chess_rendering.py +0 -0
  716. {metalist-0.24.2 → metalist-0.26.0}/app/services/code_rendering.py +0 -0
  717. {metalist-0.24.2 → metalist-0.26.0}/app/services/diagnostics.py +0 -0
  718. {metalist-0.24.2 → metalist-0.26.0}/app/services/diff_rendering.py +0 -0
  719. {metalist-0.24.2 → metalist-0.26.0}/app/services/encryption.py +0 -0
  720. {metalist-0.24.2 → metalist-0.26.0}/app/services/exception_capture.py +0 -0
  721. {metalist-0.24.2 → metalist-0.26.0}/app/services/file_edit_sessions.py +0 -0
  722. {metalist-0.24.2 → metalist-0.26.0}/app/services/file_kinds.py +0 -0
  723. {metalist-0.24.2 → metalist-0.26.0}/app/services/footnote_layout.py +0 -0
  724. {metalist-0.24.2 → metalist-0.26.0}/app/services/hierarchy.py +0 -0
  725. {metalist-0.24.2 → metalist-0.26.0}/app/services/html_unformatting.py +0 -0
  726. {metalist-0.24.2 → metalist-0.26.0}/app/services/hydration_state.py +0 -0
  727. {metalist-0.24.2 → metalist-0.26.0}/app/services/image_size_formatting.py +0 -0
  728. {metalist-0.24.2 → metalist-0.26.0}/app/services/inline_image_dimensions.py +0 -0
  729. {metalist-0.24.2 → metalist-0.26.0}/app/services/inline_image_occurrences.py +0 -0
  730. {metalist-0.24.2 → metalist-0.26.0}/app/services/input_errors.py +0 -0
  731. {metalist-0.24.2 → metalist-0.26.0}/app/services/integrity.py +0 -0
  732. {metalist-0.24.2 → metalist-0.26.0}/app/services/link_title_retry.py +0 -0
  733. {metalist-0.24.2 → metalist-0.26.0}/app/services/login_rate_limit.py +0 -0
  734. {metalist-0.24.2 → metalist-0.26.0}/app/services/maintenance_mode.py +0 -0
  735. {metalist-0.24.2 → metalist-0.26.0}/app/services/memory_usage.py +0 -0
  736. {metalist-0.24.2 → metalist-0.26.0}/app/services/namespace_deletion_jobs.py +0 -0
  737. {metalist-0.24.2 → metalist-0.26.0}/app/services/namespace_deletion_worker.py +0 -0
  738. {metalist-0.24.2 → metalist-0.26.0}/app/services/namespace_rename_jobs.py +0 -0
  739. {metalist-0.24.2 → metalist-0.26.0}/app/services/namespace_rename_worker.py +0 -0
  740. {metalist-0.24.2 → metalist-0.26.0}/app/services/namespace_runtime_guard.py +0 -0
  741. {metalist-0.24.2 → metalist-0.26.0}/app/services/namespace_switcher.py +0 -0
  742. {metalist-0.24.2 → metalist-0.26.0}/app/services/note_image_tags.py +0 -0
  743. {metalist-0.24.2 → metalist-0.26.0}/app/services/note_ordering.py +0 -0
  744. {metalist-0.24.2/app/utils → metalist-0.26.0/app/services/obsidian_import}/__init__.py +0 -0
  745. {metalist-0.24.2 → metalist-0.26.0}/app/services/password_note_fields.py +0 -0
  746. {metalist-0.24.2 → metalist-0.26.0}/app/services/preference_values.py +0 -0
  747. {metalist-0.24.2 → metalist-0.26.0}/app/services/public_http.py +0 -0
  748. {metalist-0.24.2 → metalist-0.26.0}/app/services/reminders.py +0 -0
  749. {metalist-0.24.2 → metalist-0.26.0}/app/services/remote_image_proxy.py +0 -0
  750. {metalist-0.24.2 → metalist-0.26.0}/app/services/resource_limits.py +0 -0
  751. {metalist-0.24.2 → metalist-0.26.0}/app/services/root_sorting.py +0 -0
  752. {metalist-0.24.2 → metalist-0.26.0}/app/services/runtime_generation.py +0 -0
  753. {metalist-0.24.2 → metalist-0.26.0}/app/services/runtime_hardening.py +0 -0
  754. {metalist-0.24.2 → metalist-0.26.0}/app/services/runtime_lock.py +0 -0
  755. {metalist-0.24.2 → metalist-0.26.0}/app/services/search_history.py +0 -0
  756. {metalist-0.24.2 → metalist-0.26.0}/app/services/search_history_storage.py +0 -0
  757. {metalist-0.24.2 → metalist-0.26.0}/app/services/self_update.py +0 -0
  758. {metalist-0.24.2 → metalist-0.26.0}/app/services/session_timeout_service.py +0 -0
  759. {metalist-0.24.2 → metalist-0.26.0}/app/services/shared_sets.py +0 -0
  760. {metalist-0.24.2 → metalist-0.26.0}/app/services/shell_session_service.py +0 -0
  761. {metalist-0.24.2 → metalist-0.26.0}/app/services/tag_case.py +0 -0
  762. {metalist-0.24.2 → metalist-0.26.0}/app/services/tag_plural_variants.py +0 -0
  763. {metalist-0.24.2 → metalist-0.26.0}/app/services/tokens.py +0 -0
  764. {metalist-0.24.2 → metalist-0.26.0}/app/services/update_backups.py +0 -0
  765. {metalist-0.24.2 → metalist-0.26.0}/app/services/update_installer.py +0 -0
  766. {metalist-0.24.2 → metalist-0.26.0}/app/services/update_preflight.py +0 -0
  767. {metalist-0.24.2 → metalist-0.26.0}/app/services/view_cache.py +0 -0
  768. {metalist-0.24.2 → metalist-0.26.0}/app/services/view_diff.py +0 -0
  769. {metalist-0.24.2 → metalist-0.26.0}/app/services/view_state.py +0 -0
  770. {metalist-0.24.2 → metalist-0.26.0}/app/services/windows_process_control.py +0 -0
  771. {metalist-0.24.2 → metalist-0.26.0}/app/startup_console.py +0 -0
  772. {metalist-0.24.2 → metalist-0.26.0}/app/startup_js_sanity.py +0 -0
  773. {metalist-0.24.2 → metalist-0.26.0}/app/startup_shockharness.py +0 -0
  774. {metalist-0.24.2 → metalist-0.26.0}/app/static/css/floating-notes.css +0 -0
  775. {metalist-0.24.2 → metalist-0.26.0}/app/static/css/forms.css +0 -0
  776. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/locked.js +0 -0
  777. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/activity-tracker.js +0 -0
  778. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/ai-chat/agent-web-settings.js +0 -0
  779. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/ai-chat/ai-agent-debug-view.js +0 -0
  780. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/ai-chat/ai-chat-message-placement.js +0 -0
  781. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/ai-chat/ai-chat-panel-service.js +0 -0
  782. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/ai-chat/ai-chat-refused-turns.js +0 -0
  783. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/ai-chat/ai-chat-size-limits.js +0 -0
  784. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/ai-chat/bulk-elapsed-clock.js +0 -0
  785. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/ai-chat/bulk-scope-question.js +0 -0
  786. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/ai-chat/cloud-privacy-policy.js +0 -0
  787. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/ai-chat/confirmation-question.js +0 -0
  788. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/ai-chat/summary-batch-preview.js +0 -0
  789. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/api-error-diagnostics.js +0 -0
  790. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/api-failure-classification-service.js +0 -0
  791. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/app-notice-stack.js +0 -0
  792. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/app-update-service.js +0 -0
  793. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/application-state.js +0 -0
  794. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/async-result.js +0 -0
  795. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/backup-reminder-schedule.js +0 -0
  796. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/backup-reminder-service.js +0 -0
  797. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/client-state-api.js +0 -0
  798. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/client-state-migration.js +0 -0
  799. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/command-palette/activation-auth-policy.js +0 -0
  800. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/command-palette/backup-command-availability.js +0 -0
  801. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/command-palette/click-activation-service.js +0 -0
  802. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/command-palette/note-layout-preferences.js +0 -0
  803. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/command-palette/preferences-store.js +0 -0
  804. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/command-palette/tag-config-loader.js +0 -0
  805. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/command-palette/usage-store.js +0 -0
  806. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/context-menu/context-menu-target-service.js +0 -0
  807. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/context-menu/input-caret-service.js +0 -0
  808. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/decimal-integer.js +0 -0
  809. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/disconnect-editing-state-service.js +0 -0
  810. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/dom-focus.js +0 -0
  811. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/editor-commands.js +0 -0
  812. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/editor-selection.js +0 -0
  813. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/editor-toolbar.js +0 -0
  814. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/elapsed-time.js +0 -0
  815. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/excalidraw/excalidraw-actions.js +0 -0
  816. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/excalidraw/excalidraw-autosave.js +0 -0
  817. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/excalidraw/excalidraw-editor-state.js +0 -0
  818. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/excalidraw/excalidraw-loader.js +0 -0
  819. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/excalidraw/excalidraw-preview-service.js +0 -0
  820. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/excalidraw/excalidraw-scene.js +0 -0
  821. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/half.js +0 -0
  822. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/html-escape.js +0 -0
  823. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/list-selection.js +0 -0
  824. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/local-date-text.js +0 -0
  825. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/location-flags.js +0 -0
  826. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/login-namespace-picker.js +0 -0
  827. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/maintenance.js +0 -0
  828. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/modals/help-modal.js +0 -0
  829. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/modals/memory-usage-modal.js +0 -0
  830. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/modals/namespace-loading-page.js +0 -0
  831. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/modals/namespace-ports-profile.js +0 -0
  832. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/modals/visual-cues-modal.js +0 -0
  833. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/actions/search-actions.js +0 -0
  834. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/events/focus-events.js +0 -0
  835. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/mode-logger.js +0 -0
  836. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/animated-scroll-service.js +0 -0
  837. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/backlinks-navigation-service.js +0 -0
  838. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/clipboard-shortcut-policy-service.js +0 -0
  839. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/collapse-editing-policy-service.js +0 -0
  840. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/command-gate-service.js +0 -0
  841. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/context-menu-target-service.js +0 -0
  842. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/date-range-filter-service.js +0 -0
  843. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/deselect-selection-state-service.js +0 -0
  844. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/dictation-note-paste.js +0 -0
  845. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/dictation-paste-padding.js +0 -0
  846. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/edit-session-collapse-policy-service.js +0 -0
  847. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/edit-session-collapse-service.js +0 -0
  848. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/editing-image-size-service.js +0 -0
  849. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/embedded-image-service.js +0 -0
  850. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/export-service.js +0 -0
  851. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/export-title-service.js +0 -0
  852. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/file-drop-policy-service.js +0 -0
  853. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/file-filter-service.js +0 -0
  854. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/filtered-refresh-selection-service.js +0 -0
  855. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/floating-note-layout.js +0 -0
  856. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/footnote-navigation-service.js +0 -0
  857. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/formatted-paste-format-service.js +0 -0
  858. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/history-selection-policy-service.js +0 -0
  859. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/history-shortcut-policy-service.js +0 -0
  860. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/html-paste-sanitizer-service.js +0 -0
  861. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/image-context-menu-action-service.js +0 -0
  862. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/link-context-menu-action-service.js +0 -0
  863. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/link-target-service.js +0 -0
  864. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/link-title-prefetch-service.js +0 -0
  865. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/note-clipboard-write-service.js +0 -0
  866. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/note-collapse-animation-service.js +0 -0
  867. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/note-context-menu-action-service.js +0 -0
  868. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/note-delete-shortcut-policy-service.js +0 -0
  869. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/note-drag-indicator-service.js +0 -0
  870. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/note-drag-service.js +0 -0
  871. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/note-reposition-animation-service.js +0 -0
  872. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/note-split-service.js +0 -0
  873. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/note-timestamp-hover-service.js +0 -0
  874. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/print-service.js +0 -0
  875. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/referenced-note-removal-service.js +0 -0
  876. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/right-press-focus-service.js +0 -0
  877. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/root-sort-service.js +0 -0
  878. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/scroll-anchor-service.js +0 -0
  879. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/scroll-restoration-service.js +0 -0
  880. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/scroll-to-top-service.js +0 -0
  881. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/search-contexts-overlay-service.js +0 -0
  882. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/search-debounce-service.js +0 -0
  883. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/search-highlight-matching.js +0 -0
  884. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/search-input-chip-service.js +0 -0
  885. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/search-input-service.js +0 -0
  886. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/search-interaction-service.js +0 -0
  887. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/search-redaction-reveal-service.js +0 -0
  888. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/search-suggestion-statistics-service.js +0 -0
  889. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/search-suggestion-window-labels-service.js +0 -0
  890. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/search-suggestion-windows-service.js +0 -0
  891. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/selected-formatting-removal-service.js +0 -0
  892. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/shell-output-service.js +0 -0
  893. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/tab-drag-service.js +0 -0
  894. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/tab-duplication-service.js +0 -0
  895. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/tag-bar-service.js +0 -0
  896. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/tag-input-selection-service.js +0 -0
  897. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/tag-suggestions-service.js +0 -0
  898. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/todo-toggle-editing-service.js +0 -0
  899. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/untagged-view-indicator-service.js +0 -0
  900. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/mode-manager/services/view-mode-search-shortcut-service.js +0 -0
  901. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/not-found.js +0 -0
  902. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/note-html-sanitizer.js +0 -0
  903. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/password-operation-response.js +0 -0
  904. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/password-strength.js +0 -0
  905. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/reminder-store.js +0 -0
  906. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/server-rendered-html.js +0 -0
  907. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/session-auth.js +0 -0
  908. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/startup-timing.js +0 -0
  909. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/tag-token.js +0 -0
  910. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/tcp-ports.js +0 -0
  911. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/time-units.js +0 -0
  912. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/url-tracking-cleaner.js +0 -0
  913. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/modules/uuid.js +0 -0
  914. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/namespace-deleted.js +0 -0
  915. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/namespace-renamed.js +0 -0
  916. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/shockharness/contracts.d.ts +0 -0
  917. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/shockharness/contracts.js +0 -0
  918. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/dompurify-3.4.17.LICENSE.txt +0 -0
  919. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/dompurify-3.4.17.min.js +0 -0
  920. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/excalidraw.css +0 -0
  921. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Assistant/Assistant-Bold.woff2 +0 -0
  922. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Assistant/Assistant-Medium.woff2 +0 -0
  923. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Assistant/Assistant-Regular.woff2 +0 -0
  924. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Assistant/Assistant-SemiBold.woff2 +0 -0
  925. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Cascadia/CascadiaCode-Regular.woff2 +0 -0
  926. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/ComicShanns/ComicShanns-Regular-279a7b317d12eb88de06167bd672b4b4.woff2 +0 -0
  927. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/ComicShanns/ComicShanns-Regular-6e066e8de2ac57ea9283adb9c24d7f0c.woff2 +0 -0
  928. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/ComicShanns/ComicShanns-Regular-dc6a8806fa96795d7b3be5026f989a17.woff2 +0 -0
  929. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/ComicShanns/ComicShanns-Regular-fcb0fc02dcbee4c9846b3e2508668039.woff2 +0 -0
  930. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Excalifont/Excalifont-Regular-349fac6ca4700ffec595a7150a0d1e1d.woff2 +0 -0
  931. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Excalifont/Excalifont-Regular-3f2c5db56cc93c5a6873b1361d730c16.woff2 +0 -0
  932. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Excalifont/Excalifont-Regular-41b173a47b57366892116a575a43e2b6.woff2 +0 -0
  933. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Excalifont/Excalifont-Regular-623ccf21b21ef6b3a0d87738f77eb071.woff2 +0 -0
  934. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Excalifont/Excalifont-Regular-a88b72a24fb54c9f94e3b5fdaa7481c9.woff2 +0 -0
  935. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Excalifont/Excalifont-Regular-b9dcf9d2e50a1eaf42fc664b50a3fd0d.woff2 +0 -0
  936. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Excalifont/Excalifont-Regular-be310b9bcd4f1a43f571c46df7809174.woff2 +0 -0
  937. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Lilita/Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYE98RXi4EwSsbg.woff2 +0 -0
  938. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Lilita/Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYEF8RXi4EwQ.woff2 +0 -0
  939. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTA3j6zbXWjgevT5.woff2 +0 -0
  940. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTQ3j6zbXWjgeg.woff2 +0 -0
  941. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTk3j6zbXWjgevT5.woff2 +0 -0
  942. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTo3j6zbXWjgevT5.woff2 +0 -0
  943. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTs3j6zbXWjgevT5.woff2 +0 -0
  944. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Virgil/Virgil-Regular.woff2 +0 -0
  945. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1.LICENSE.txt +0 -0
  946. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/excalidraw-0.18.1.min.js +0 -0
  947. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/mermaid-11.16.1.LICENSE.txt +0 -0
  948. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/mermaid-11.16.1.min.js +0 -0
  949. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/zxcvbn-4.4.2.LICENSE.txt +0 -0
  950. {metalist-0.24.2 → metalist-0.26.0}/app/static/js/vendor/zxcvbn-4.4.2.js +0 -0
  951. {metalist-0.24.2 → metalist-0.26.0}/app/static/note-html-policy.json +0 -0
  952. {metalist-0.24.2 → metalist-0.26.0}/app/templates/maintenance.html +0 -0
  953. {metalist-0.24.2 → metalist-0.26.0}/app/templates/notes_list.html +0 -0
  954. {metalist-0.24.2 → metalist-0.26.0}/app/upload_limits.py +0 -0
  955. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/__init__.py +0 -0
  956. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/add_selected_text_tag.py +0 -0
  957. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/alphabetize_root_notes.py +0 -0
  958. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/base.py +0 -0
  959. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/bulk_tag_proposals.py +0 -0
  960. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/collapse.py +0 -0
  961. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/copy_note.py +0 -0
  962. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/create_child.py +0 -0
  963. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/create_sibling.py +0 -0
  964. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/delete_tag.py +0 -0
  965. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/expand.py +0 -0
  966. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/file_edit_session.py +0 -0
  967. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/indent.py +0 -0
  968. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/move.py +0 -0
  969. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/move_to_top.py +0 -0
  970. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/paste_child.py +0 -0
  971. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/paste_sibling.py +0 -0
  972. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/prioritize.py +0 -0
  973. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/redo.py +0 -0
  974. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/rename_tag.py +0 -0
  975. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/reset_updated_at.py +0 -0
  976. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/resize_image.py +0 -0
  977. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/run_shell.py +0 -0
  978. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/set_collapse_bulk.py +0 -0
  979. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/set_collapse_in_context.py +0 -0
  980. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/split_note.py +0 -0
  981. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/toggle_todo_done.py +0 -0
  982. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/undo.py +0 -0
  983. {metalist-0.24.2 → metalist-0.26.0}/app/usecases/unformat_content.py +0 -0
  984. {metalist-0.24.2 → metalist-0.26.0}/app/utils/byte_sizes.py +0 -0
  985. {metalist-0.24.2 → metalist-0.26.0}/app/utils/encryption.py +0 -0
  986. {metalist-0.24.2 → metalist-0.26.0}/app/utils/not_found.py +0 -0
  987. {metalist-0.24.2 → metalist-0.26.0}/app/utils/sent_fields.py +0 -0
  988. {metalist-0.24.2 → metalist-0.26.0}/app/utils/tcp_ports.py +0 -0
  989. {metalist-0.24.2 → metalist-0.26.0}/app/utils/text_utils.py +0 -0
  990. {metalist-0.24.2 → metalist-0.26.0}/app/utils/time_units.py +0 -0
  991. {metalist-0.24.2 → metalist-0.26.0}/main.py +0 -0
  992. {metalist-0.24.2 → metalist-0.26.0}/metalist.egg-info/dependency_links.txt +0 -0
  993. {metalist-0.24.2 → metalist-0.26.0}/metalist.egg-info/entry_points.txt +0 -0
  994. {metalist-0.24.2 → metalist-0.26.0}/metalist.egg-info/top_level.txt +0 -0
  995. {metalist-0.24.2 → metalist-0.26.0}/scripts/generate-lan-cert.sh +0 -0
  996. {metalist-0.24.2 → metalist-0.26.0}/setup.cfg +0 -0
@@ -0,0 +1,368 @@
1
+ Metadata-Version: 2.4
2
+ Name: metalist
3
+ Version: 0.26.0
4
+ Summary: A minimalist single-user note-taking app with SSR, fast in-memory tree operations, and efficient sync.
5
+ Project-URL: Homepage, https://metalist.app
6
+ Project-URL: Repository, https://github.com/metalist-app/metalist
7
+ Project-URL: Issues, https://github.com/metalist-app/metalist/issues
8
+ Project-URL: Changelog, https://github.com/metalist-app/metalist/blob/main/CHANGELOG.md
9
+ Requires-Python: <3.15,>=3.11
10
+ Description-Content-Type: text/markdown
11
+ Requires-Dist: anthropic==1.12.1
12
+ Requires-Dist: argon2-cffi==25.1.0
13
+ Requires-Dist: cryptography==50.0.0
14
+ Requires-Dist: fastapi==0.141.1
15
+ Requires-Dist: httpcore==1.0.9
16
+ Requires-Dist: httpx==0.28.1
17
+ Requires-Dist: instructor==1.15.4
18
+ Requires-Dist: latex2mathml==3.81.0
19
+ Requires-Dist: loguru==0.7.3
20
+ Requires-Dist: Mako==1.4.2
21
+ Requires-Dist: mammoth==1.13.0
22
+ Requires-Dist: nh3==0.3.6
23
+ Requires-Dist: olefile==0.47
24
+ Requires-Dist: openai==2.54.0
25
+ Requires-Dist: pillow==13.0.0
26
+ Requires-Dist: pydantic==2.13.4
27
+ Requires-Dist: pygments==2.20.0
28
+ Requires-Dist: pypdf==6.21.4
29
+ Requires-Dist: pypdfium2==5.14.0
30
+ Requires-Dist: python-dotenv==1.2.2
31
+ Requires-Dist: python-multipart==0.0.32
32
+ Requires-Dist: PyYAML==6.0.3
33
+ Requires-Dist: resvg_py==0.5.0
34
+ Requires-Dist: rich==14.3.4
35
+ Requires-Dist: starlette==1.3.1
36
+ Requires-Dist: tqdm==4.70.0
37
+ Requires-Dist: tree-sitter==0.25.2
38
+ Requires-Dist: tree-sitter-javascript==0.25.0
39
+ Requires-Dist: typing_extensions==4.16.0
40
+ Requires-Dist: uvicorn==0.52.0
41
+ Requires-Dist: zxcvbn==4.5.0
42
+ Provides-Extra: dev
43
+ Requires-Dist: hypothesis==6.164.0; extra == "dev"
44
+ Requires-Dist: pytest==9.1.1; extra == "dev"
45
+ Requires-Dist: pytest-cov==7.1.0; extra == "dev"
46
+ Requires-Dist: shockharness==0.26.0; extra == "dev"
47
+ Requires-Dist: mypy==2.4.0; extra == "dev"
48
+
49
+ # MetaList
50
+
51
+ A minimalist single-user note-taking app focused on server-side rendering (SSR), fast in-memory tree operations, and efficient sync/diff updates.
52
+
53
+ ## Features
54
+ - Rich text editing (ContentEditable) with image support
55
+ - Drag-and-drop note reordering
56
+ - Real-time content saving
57
+ - Keyboard shortcuts / cheatsheet (press `?` in the app)
58
+ - Linked-list ordering model for efficient reorders
59
+ - Optional password protection + encryption at rest (AES-GCM)
60
+ - Multi-tab search contexts with server-persisted scroll/search state (survives browser restarts)
61
+ - Manual namespace backups/restores to a user-selected backup folder with retention controls
62
+
63
+ ## Changes
64
+
65
+ What changed in each release: [CHANGELOG.md](https://github.com/metalist-app/metalist/blob/main/CHANGELOG.md).
66
+
67
+ ## Technology Stack
68
+
69
+ ### Backend
70
+ - FastAPI
71
+ - SQLite (via stdlib `sqlite3`) with a guard-aware wrapper (`SafeSession`)
72
+ - Mako templates for SSR
73
+
74
+ ### Frontend
75
+ - Vanilla JavaScript (no framework)
76
+ - HTML5 Drag and Drop API
77
+ - ContentEditable for rich text editing
78
+ - CSS custom properties for theming
79
+
80
+ ### Testing
81
+ - Python/unit tests plus manual regression passes
82
+
83
+ ## Architecture (High Level)
84
+ - Server renders the base page via Mako templates.
85
+ - The browser client drives interaction via `/api2` JSON endpoints.
86
+ - Passwordless notes load into memory at startup; encrypted notes load after login. Rendering/search and ordinary authentication use memory; a read guard restricts intentional SQLite access to explicit windows.
87
+
88
+ ## Security Boundary
89
+
90
+ Password protection encrypts namespace data at rest. While a namespace is
91
+ unlocked, the server must hold its data-encryption key and decrypted working
92
+ data in process memory, and the browser holds the decrypted content currently
93
+ rendered in the page. A sufficiently privileged local process, debugger,
94
+ administrator, browser extension, or process-memory dump can therefore expose
95
+ an unlocked namespace.
96
+
97
+ Explicit logout removes the live key and purges decrypted runtime stores, but
98
+ it cannot guarantee forensic overwriting of memory previously allocated by the
99
+ Python or browser runtimes. Protect the host account and operating system, and
100
+ see the detailed [security architecture and threat model](docs/security/README.md).
101
+
102
+ ## Development
103
+
104
+ ### Setup
105
+ For a published one-off run with uv:
106
+ ```bash
107
+ uvx metalist
108
+ ```
109
+
110
+ For a persistent uv tool install:
111
+ ```bash
112
+ uv tool install metalist
113
+ metalist
114
+ ```
115
+
116
+ For a persistent uv installation, you can update from inside MetaList: type **update** in the menu, open **Version Info**, and choose **Update to …** when a newer release is available. Each browser load or refresh asks the server to check PyPI asynchronously. A reminder-style notice links to Version Info the first time a newer version is discovered; the announced version is remembered in that namespace's client preferences. A slow or failed check does not block the app. Version Info can retry a failed check.
117
+
118
+ The in-app updater checks the selected release, creates verified backups, and restarts every namespace. Keep Version Info open to follow progress and reload when ready; closing and reopening it in the same page resumes progress. Signing in again may be necessary. Source checkouts and unmanaged installations still check for releases, but show why in-app installation is unavailable. Update job records and logs live under `~/MetaList/update-jobs/` (or the configured data directory). If installation/restart fails after servers stop, inspect the updater output and run `metalist` on the server to restart it; there is no automatic rollback.
119
+
120
+ You can also update and restart MetaList with one cross-platform command:
121
+ ```bash
122
+ metalist update
123
+ ```
124
+ The updater checks the installed version against the latest PyPI release first. If MetaList is already current, it reports the installed version and leaves all running namespaces untouched. When an update is available, it checks installer prerequisites and uses uv to install the candidate into a disposable tool environment with the current base Python interpreter. It checks dependencies and starts a temporary namespace to verify HTTP readiness, version, and runtime assets. A failed preflight leaves the current installation and running namespaces unchanged. After preflight succeeds, it stops running namespaces, and creates and verifies a new backup of every namespace before installation can begin. Each archive includes the complete notes/settings database, the attachments database when present, and any legacy search-history database. Locked namespaces are backed up with their encrypted data and key metadata intact, without requiring a password.
125
+
126
+ MetaList downloads its own checksum-verified uv 0.12.17 archive for the current operating system, architecture, and Linux C library. The verified archive and extracted executable are stored in the operating system's user cache; every update verifies the archive against its pinned upstream SHA-256 and the executable against the verified archive before use. That same executable performs both preflight and final installation. MetaList does not execute or replace the user's global uv. Download, verification, platform-selection, or version failures occur before any namespace is stopped. Already-installed releases retain their own updater code; the standalone repair launcher described in [recovery](docs/security/recovery.md#windows-updater-pe-resource-failure) supplies this managed installer to an older Windows updater.
127
+
128
+ Backups are saved to `~/MetaList/namespaces/<namespace>/backups/<namespace>-<timestamp>.metalist-backup.tar.gz`; the updater prints each verified path. Existing backups remain unchanged and are not pruned. If any backup fails, the update aborts with the current installation intact; run `metalist` to restart the stopped servers after resolving the failure.
129
+
130
+ Only after all backups pass does the updater hand off to an external PowerShell process on Windows or `/bin/sh` on macOS/Linux so the installed environment can unlock. It delegates installation to uv, pinning the current base interpreter and the exact tested package/dependency versions, using the cache populated during preflight with network access disabled. It then launches MetaList again, and reports the installed version (for example, `MetaList updated to v0.5.0.`). This protection requires an installed version containing the backup safeguard and applies to `metalist update` and the in-app update action; direct pip/uv install commands do not run it.
131
+
132
+ For pip, users can run `pip install metalist`. For a non-editable local install from this checkout, use `uv pip install .` or `pip install .` instead of the editable command below.
133
+
134
+ ```bash
135
+ python3 -m venv .venv
136
+ source .venv/bin/activate
137
+ python -m pip install --require-hashes -r requirements/ci.txt
138
+ python -m pip install --no-deps --no-build-isolation -e ".[dev]"
139
+
140
+ npm install
141
+ ```
142
+
143
+ On Windows, create the same `.venv` with `python -m venv .venv` and activate it with `.venv\Scripts\Activate.ps1` in PowerShell. Run the same `python -m pip` commands after activation. Node dependencies are developer tooling; the application itself does not require Node.
144
+
145
+ ### Run
146
+
147
+ Persistent data defaults to `~/MetaList`. Set `METALIST_DATA_DIRECTORY` to an absolute directory path before launch to use a separate data root, including namespaces, backups, certificates, logs, and runtime jobs. This is used by release tests to keep their disposable data separate from real notes.
148
+ The installed entrypoint starts or restarts every known namespace, prints their URLs, and exits:
149
+ ```bash
150
+ metalist
151
+ ```
152
+ For source-checkout compatibility, `python main.py` performs the same orchestration. Use `metalist work`, `python main.py --namespace work`, or `python main.py work` when you want one foreground namespace process.
153
+
154
+ Shell execution is disabled by default. To enable `@shell` for every namespace
155
+ started by the top-level orchestrator, use either:
156
+
157
+ ```bash
158
+ metalist --enable-shell
159
+ python main.py --enable-shell
160
+ ```
161
+
162
+ This flag is propagated to every namespace child process. The top-level process
163
+ prints a conspicuous shell-enabled banner before its namespace launch results.
164
+ Use `python main.py work --enable-shell` for one foreground namespace. Shell
165
+ routes remain restricted to loopback clients using a loopback request host,
166
+ even when the rest of MetaList is intentionally exposed to a LAN.
167
+
168
+ `metalist` and explicit single-namespace source runs bind to loopback at `127.0.0.1:8000` by default. This keeps a normal laptop launch off LAN and public interfaces unless remote access is explicitly configured.
169
+ On first startup, MetaList also auto-generates a self-signed TLS pair at `~/MetaList/certs/metalist-cert.pem` and `~/MetaList/certs/metalist-key.pem`, then enables HTTPS on the same bind host at port `8443`. If you already have real PEM files, point `METALIST_TLS_CERT` and `METALIST_TLS_KEY` at them instead. Set `METALIST_AUTO_GENERATE_TLS=0` only if you explicitly want HTTP-only startup.
170
+
171
+ Database selection:
172
+ - No explicit namespace on a single-namespace launch: `~/MetaList/namespaces/default/default.metalist.db`
173
+ - `--namespace work` or `METALIST_NAMESPACE=work`: `~/MetaList/namespaces/work/work.metalist.db`
174
+ - The related files DB is derived automatically, so `namespaces/work/work.metalist.db` uses `namespaces/work/work.metalist.files.db`
175
+ - Remembered launch ports are stored as plaintext metadata inside each namespace's main `*.metalist.db`
176
+ - Launch precedence is: explicit CLI flags > env vars > saved namespace profile; if a namespace has no saved profile, launch it once with explicit ports or configure ports from the UI
177
+ - Backups stay beside the namespace data under `~/MetaList/namespaces/work/backups/` and use one archive per snapshot with filenames like `work-<timestamp>.metalist-backup.tar.gz`
178
+ - The Backup Settings modal targets one user-selected backup folder and can include multiple namespaces in a single run
179
+ - Restoring `work` into `work` is the normal overwrite path; importing a backup under a different namespace name can create a new target namespace with automatically selected conflict-free ports.
180
+
181
+ Useful env flags:
182
+ - `CRASH_SERVER_ON_FAIL=1` (default): fail-fast on validation errors
183
+ - `API_PREFIX=/api2`: override API prefix (client assumes `/api2` by default)
184
+ - `METALIST_NAMESPACE=work`: select `~/MetaList/namespaces/work/work.metalist.db`
185
+ - `METALIST_HOST=127.0.0.1` (default): bind the main app to a specific interface; use a LAN IP or `0.0.0.0` only for intentional remote access
186
+ - `METALIST_ALLOWED_HOSTS=notes.example.com,192.168.1.20`: comma-separated public/LAN hostnames accepted in HTTP `Host` headers; loopback aliases and a specific non-wildcard `METALIST_HOST` are accepted automatically
187
+ - `METALIST_PORT=8000` (default): bind the main app to a different port
188
+ - `METALIST_HTTPS_PORT=8443`: override the HTTPS port when TLS is enabled
189
+ - `METALIST_TLS_CERT=/path/to/fullchain.pem` + `METALIST_TLS_KEY=/path/to/privkey.pem`: override TLS paths
190
+ - `METALIST_AUTO_GENERATE_TLS=0`: disable automatic creation of the default self-signed TLS pair
191
+ - default TLS paths: `~/MetaList/certs/metalist-cert.pem` and `~/MetaList/certs/metalist-key.pem`
192
+ - `METALIST_FORWARDED_ALLOW_IPS=127.0.0.1,::1` (default): trust proxy headers only from those reverse-proxy IPs
193
+ - `--enable-shell`: opt in to local `@shell` execution for this launch; shell routes require a loopback client and loopback request host, and the capability is never persisted in namespace data
194
+
195
+ ### Remote Access / HTTPS
196
+ LAN or VPN access must be enabled explicitly. Prefer binding the machine's specific LAN address, which also adds that address to the accepted-host set:
197
+ ```bash
198
+ METALIST_HOST=192.168.1.20 metalist
199
+ ```
200
+ On a fresh machine, that first launch also creates the default TLS cert pair automatically. Then open either `http://192.168.1.20:8000` or `https://192.168.1.20:8443` from the other machine.
201
+
202
+ Starting with 0.7.1, an explicit `METALIST_HOST` or `METALIST_ALLOWED_HOSTS`
203
+ configuration is saved in `~/MetaList/network-settings.json` (under
204
+ `METALIST_DATA_DIRECTORY` when overridden). Subsequent source launches, plain
205
+ `metalist` launches, and updates reuse it. Environment values override and update
206
+ the corresponding saved settings. This file stores only the bind address and
207
+ allowed hosts; namespace ports remain in their launch profiles, and shell access
208
+ still requires `--enable-shell` on each launch. Invalid settings stop startup
209
+ with an error. Fresh installations continue to bind to localhost by default.
210
+ To switch back to local-only access, run `METALIST_HOST=127.0.0.1 metalist` once.
211
+ Older installed versions do not read this file; keep supplying their LAN settings
212
+ until upgrading to 0.7.1 or later.
213
+
214
+ To keep `@shell` available on the host laptop while allowing another laptop to
215
+ use normal MetaList features, bind both interfaces and explicitly allow the LAN
216
+ address:
217
+
218
+ ```bash
219
+ METALIST_HOST=0.0.0.0 \
220
+ METALIST_ALLOWED_HOSTS=10.0.0.31 \
221
+ metalist --enable-shell
222
+ ```
223
+
224
+ Use `http://127.0.0.1:<namespace-http-port>` on the host laptop when running
225
+ `@shell`. Other devices may use `https://10.0.0.31:<namespace-https-port>`, but
226
+ their shell start/status requests receive `403`.
227
+
228
+ Namespaced launch example:
229
+ ```bash
230
+ metalist --namespace work --port 8001
231
+ ```
232
+ This starts a separate process backed by `~/MetaList/namespaces/work/work.metalist.db` on `http://127.0.0.1:8001`.
233
+ Its backup snapshots live under `~/MetaList/namespaces/work/backups/` with filenames like `work-<timestamp>.metalist-backup.tar.gz`. New backups are versioned `.tar.gz` workspace archives; legacy `.bak` backups remain restorable.
234
+
235
+ After you launch a namespace once with explicit ports, MetaList remembers them in that namespace's main DB, so later you can use the shorthand:
236
+ ```bash
237
+ metalist work
238
+ ```
239
+ and MetaList will reuse the saved HTTP / HTTPS ports for `work`. The same applies to the default namespace: `metalist` will reuse the saved default-namespace profile.
240
+
241
+ Equivalent explicit launch, if you want it:
242
+ ```bash
243
+ METALIST_HOST=0.0.0.0 \
244
+ METALIST_ALLOWED_HOSTS=192.168.1.20 \
245
+ METALIST_PORT=8000 \
246
+ METALIST_HTTPS_PORT=8443 \
247
+ metalist
248
+ ```
249
+ From the other machine, open `https://<laptop-ip>:8443`.
250
+
251
+ If you already have a real certificate and key, use the same dual-listener flow:
252
+ ```bash
253
+ METALIST_HOST=0.0.0.0 \
254
+ METALIST_ALLOWED_HOSTS=192.168.1.20 \
255
+ METALIST_PORT=8000 \
256
+ METALIST_HTTPS_PORT=8443 \
257
+ METALIST_TLS_CERT=/path/to/fullchain.pem \
258
+ METALIST_TLS_KEY=/path/to/privkey.pem \
259
+ metalist
260
+ ```
261
+
262
+ If you want to rotate or regenerate the default self-signed pair manually, the helper script is still available:
263
+ ```bash
264
+ generate-lan-cert.sh
265
+ ```
266
+
267
+ When HTTPS is enabled:
268
+ - remote HTTP requests to `http://<laptop-ip>:8000` are redirected to HTTPS
269
+ - localhost HTTP requests still stay on plain `http://127.0.0.1:8000` so the laptop can keep using the non-TLS port
270
+
271
+ If TLS is terminated by a reverse proxy on the same machine instead, keep MetaList on loopback and let the proxy forward to it:
272
+ ```bash
273
+ METALIST_HOST=127.0.0.1 \
274
+ METALIST_ALLOWED_HOSTS=notes.example.com \
275
+ METALIST_PORT=8000 \
276
+ METALIST_FORWARDED_ALLOW_IPS=127.0.0.1,::1 \
277
+ metalist
278
+ ```
279
+
280
+ The reverse proxy must preserve the browser-facing `Host` header and set
281
+ `X-Forwarded-Proto`. MetaList never trusts `X-Forwarded-Host`; forwarded
282
+ scheme/client metadata is accepted only from `METALIST_FORWARDED_ALLOW_IPS`.
283
+ Do not widen that list beyond the actual proxy addresses.
284
+
285
+ ### Legacy Import
286
+ `convert-from-legacy.py` replaces the SQLite database referenced by `app.config.DATABASE_URL`, clears its files sidecar, and imports notes from a legacy JSON export.
287
+
288
+ This is destructive. It deletes the existing notes DB and related files DB before rebuilding the namespace.
289
+
290
+ An export the old MetaList encrypted is read too: the importer asks for the old password, then offers it for the converted namespace. Delete old exports once the conversion works; the old encryption is weak.
291
+
292
+ It also reads the old MetaList's own file instead of an export, and never changes it:
293
+ ```bash
294
+ convert-from-legacy.py --namespace work --legacy-database ~/MetaList/metalist.db
295
+ ```
296
+
297
+ Most people never need the command: a newly installed MetaList that finds the old MetaList's file in its data folder offers its notes when it opens (`docs/ui/legacy-import.md`).
298
+
299
+ Example usage:
300
+ ```bash
301
+ convert-from-legacy.py --input /path/to/legacy-export.json
302
+ ```
303
+
304
+ Target a namespaced database during import:
305
+ ```bash
306
+ convert-from-legacy.py --namespace work --input /path/to/legacy-export.json
307
+ ```
308
+
309
+ If `--namespace`, `--port`, or `--https-port` are omitted, the import script prompts for them and saves the resulting launch profile inside the target namespace DB. That means a one-time import into `work` can immediately seed later shorthand launches like `metalist work`.
310
+
311
+ Namespace startup allows 120 seconds per child, reports progress every five seconds, and stops/reaps a failed child instead of leaving it running after reporting failure. Set `METALIST_STARTUP_TIMEOUT_SECONDS` to a positive number of seconds to allow more time on a heavily loaded machine. A crashed child still fails immediately. This is a startup allowance, not a guarantee that any machine will finish within two minutes.
312
+
313
+ The preflight is a disposable empty namespace; it cannot guarantee startup against every real database or prevent a later disk/process failure. If installation succeeds but real namespace startup fails, the new package remains installed: resolve the reported startup issue and run `metalist` again. No automatic code/database rollback is attempted, and backups remain unchanged.
314
+
315
+ ### Publishing
316
+ For the real user-facing install flow:
317
+ ```bash
318
+ uvx metalist
319
+ # or:
320
+ uv tool install metalist
321
+ metalist
322
+ ```
323
+
324
+ This repo now packages itself under the PyPI distribution name `metalist`. Current releases support Python 3.11 through 3.14.
325
+
326
+ Recommended release path:
327
+ 1. In the existing PyPI project `metalist`, configure GitHub Trusted Publishing for `metalist-app/metalist` and the workflow file `.github/workflows/publish-pypi.yml`.
328
+ 2. Develop and review the candidate on a feature branch with focused checks. Merge it into `main` and push `main` once. This runs the full `Publish to PyPI` validation matrix for that exact commit. GitHub-hosted Windows, macOS, and Linux runners install the built wheel and test application startup outside the source checkout on the supported Python endpoints, 3.11 and 3.14. Every installed-package matrix job also exercises the real `metalist update` path with uv, backups, interpreter preservation, and two-namespace restart against a local release index. The old-version fixture carries the candidate updater so this validates the mechanism being shipped; it does not retroactively fix older installed updaters. You do not need those operating systems locally. Archive verification checks runtime files, including agent Markdown resources, against both the wheel and source distribution.
329
+ 3. Wait for the exact-commit main release matrix to pass, then run `.venv/bin/python scripts/release.py X.Y.Z` to create and push the tag. Any intervening change requires a new main validation run before tagging.
330
+ 4. The tag job independently verifies every main-job conclusion and reuses the wheel and source distribution from that run for GitHub Trusted Publishing; it does not repeat the matrix. Manual dispatch cannot publish. The release driver compares PyPI hashes with the tested artifact and checks a clean public install. Users can then run it with `uvx metalist`, install it persistently with `uv tool install metalist`, or install it with `pip install metalist`.
331
+
332
+ If `--input` is omitted, a file picker opens (when `tkinter` and its native `_tkinter` component are available).
333
+ Notes tagged with `@implies` are converted into ontology rules and are not imported as notes. Legacy rules that are invalid under the current ontology grammar are reported and skipped while valid rules continue importing.
334
+
335
+ ### Run Tests
336
+
337
+ Python/unit test examples:
338
+ ```bash
339
+ source .venv/bin/activate
340
+ .venv/bin/pytest
341
+ node --test tests/unit/*.mjs
342
+ .venv/bin/python -c "from pathlib import Path; import main; main._run_startup_sanity_gates(repo_root=Path.cwd())"
343
+ ```
344
+
345
+ Source-checkout development launches can enable the mandatory Python and
346
+ JavaScript sanity gates with an ignored repository-root `.env` file:
347
+
348
+ ```dotenv
349
+ METALIST_ENVIRONMENT=development
350
+ ```
351
+
352
+ `main.py` prints the resolved environment at startup. An explicit process
353
+ environment value takes precedence over `.env`; only `development` and
354
+ `production` are accepted. When the variable and `.env` file are absent,
355
+ MetaList runs in production mode and skips the source sanity gates.
356
+
357
+ `TEST_MODE=1` and `POST /api2/test/reset` still exist for deterministic browser automation if we decide to add a new harness later, but Cypress is not part of the current workflow.
358
+
359
+ ### Diagrams
360
+ Render Mermaid diagrams to PNGs:
361
+ ```bash
362
+ npm run render-diagrams
363
+ ```
364
+
365
+
366
+ ## Maintenance and recovery
367
+
368
+ See the [dependency and release procedure](docs/security/supply-chain.md), [recovery runbook](docs/security/recovery.md), and [current test/implementation map](docs/testing/coverage-map.md). The dated [August code review](CODE_REVIEW.md) is historical.