notolog 1.0.2__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 (435) hide show
  1. notolog-1.0.2/CHANGELOG.md +308 -0
  2. notolog-1.0.2/CODE_OF_CONDUCT.md +48 -0
  3. notolog-1.0.2/LICENSE +21 -0
  4. notolog-1.0.2/PKG-INFO +416 -0
  5. notolog-1.0.2/README.md +340 -0
  6. notolog-1.0.2/ThirdPartyNotices.md +1422 -0
  7. notolog-1.0.2/dev_install.py +113 -0
  8. notolog-1.0.2/docs/Examples.md +248 -0
  9. notolog-1.0.2/docs/notolog-ui-settings-strawberry-ja.png +0 -0
  10. notolog-1.0.2/docs/notolog-ui-settings.png +0 -0
  11. notolog-1.0.2/notolog/__init__.py +0 -0
  12. notolog-1.0.2/notolog/app.py +137 -0
  13. notolog-1.0.2/notolog/app_config.py +300 -0
  14. notolog-1.0.2/notolog/assets/notolog-example-image.png +0 -0
  15. notolog-1.0.2/notolog/assets/notolog-logo.png +0 -0
  16. notolog-1.0.2/notolog/assets/themes/calligraphy/about_popup.css +44 -0
  17. notolog-1.0.2/notolog/assets/themes/calligraphy/ai_assistant.css +26 -0
  18. notolog-1.0.2/notolog/assets/themes/calligraphy/default.ini +103 -0
  19. notolog-1.0.2/notolog/assets/themes/calligraphy/editor.css +3 -0
  20. notolog-1.0.2/notolog/assets/themes/calligraphy/md.ini +90 -0
  21. notolog-1.0.2/notolog/assets/themes/calligraphy/settings_dialog.css +28 -0
  22. notolog-1.0.2/notolog/assets/themes/calligraphy/statusbar.css +6 -0
  23. notolog-1.0.2/notolog/assets/themes/calligraphy/styles.css +170 -0
  24. notolog-1.0.2/notolog/assets/themes/calligraphy/toolbar.css +25 -0
  25. notolog-1.0.2/notolog/assets/themes/calligraphy/tree_view.css +35 -0
  26. notolog-1.0.2/notolog/assets/themes/calligraphy/viewer.css +2 -0
  27. notolog-1.0.2/notolog/assets/themes/calligraphy/viewer.ini +3 -0
  28. notolog-1.0.2/notolog/assets/themes/default/about_popup.css +44 -0
  29. notolog-1.0.2/notolog/assets/themes/default/ai_assistant.css +19 -0
  30. notolog-1.0.2/notolog/assets/themes/default/default.ini +103 -0
  31. notolog-1.0.2/notolog/assets/themes/default/editor.css +4 -0
  32. notolog-1.0.2/notolog/assets/themes/default/icons/LICENSE +21 -0
  33. notolog-1.0.2/notolog/assets/themes/default/icons/arrow-clockwise.svg +4 -0
  34. notolog-1.0.2/notolog/assets/themes/default/icons/arrow-repeat.svg +4 -0
  35. notolog-1.0.2/notolog/assets/themes/default/icons/balloon-fill.svg +3 -0
  36. notolog-1.0.2/notolog/assets/themes/default/icons/balloon.svg +3 -0
  37. notolog-1.0.2/notolog/assets/themes/default/icons/bandaid-fill.svg +3 -0
  38. notolog-1.0.2/notolog/assets/themes/default/icons/bandaid.svg +4 -0
  39. notolog-1.0.2/notolog/assets/themes/default/icons/box-arrow-up-right.svg +4 -0
  40. notolog-1.0.2/notolog/assets/themes/default/icons/box-arrow-up.svg +4 -0
  41. notolog-1.0.2/notolog/assets/themes/default/icons/caret-down-fill.svg +3 -0
  42. notolog-1.0.2/notolog/assets/themes/default/icons/caret-up-fill.svg +3 -0
  43. notolog-1.0.2/notolog/assets/themes/default/icons/clock-fill.svg +3 -0
  44. notolog-1.0.2/notolog/assets/themes/default/icons/code-slash.svg +3 -0
  45. notolog-1.0.2/notolog/assets/themes/default/icons/copy.svg +3 -0
  46. notolog-1.0.2/notolog/assets/themes/default/icons/cursor-text.svg +3 -0
  47. notolog-1.0.2/notolog/assets/themes/default/icons/exclamation-triangle-fill.svg +3 -0
  48. notolog-1.0.2/notolog/assets/themes/default/icons/eyedropper.svg +3 -0
  49. notolog-1.0.2/notolog/assets/themes/default/icons/eyeglasses.svg +3 -0
  50. notolog-1.0.2/notolog/assets/themes/default/icons/file-earmark-lock2.svg +4 -0
  51. notolog-1.0.2/notolog/assets/themes/default/icons/file-earmark-plus-fill.svg +3 -0
  52. notolog-1.0.2/notolog/assets/themes/default/icons/file-earmark-x.svg +4 -0
  53. notolog-1.0.2/notolog/assets/themes/default/icons/file-earmark.svg +3 -0
  54. notolog-1.0.2/notolog/assets/themes/default/icons/filetype-html.svg +3 -0
  55. notolog-1.0.2/notolog/assets/themes/default/icons/filetype-md.svg +3 -0
  56. notolog-1.0.2/notolog/assets/themes/default/icons/filetype-txt.svg +3 -0
  57. notolog-1.0.2/notolog/assets/themes/default/icons/floppy2-fill.svg +4 -0
  58. notolog-1.0.2/notolog/assets/themes/default/icons/floppy2.svg +3 -0
  59. notolog-1.0.2/notolog/assets/themes/default/icons/folder-fill.svg +3 -0
  60. notolog-1.0.2/notolog/assets/themes/default/icons/folder-plus.svg +4 -0
  61. notolog-1.0.2/notolog/assets/themes/default/icons/folder-symlink.svg +4 -0
  62. notolog-1.0.2/notolog/assets/themes/default/icons/folder.svg +3 -0
  63. notolog-1.0.2/notolog/assets/themes/default/icons/github.svg +3 -0
  64. notolog-1.0.2/notolog/assets/themes/default/icons/link-45deg.svg +4 -0
  65. notolog-1.0.2/notolog/assets/themes/default/icons/linkedin.svg +3 -0
  66. notolog-1.0.2/notolog/assets/themes/default/icons/pencil-square.svg +4 -0
  67. notolog-1.0.2/notolog/assets/themes/default/icons/play-fill.svg +3 -0
  68. notolog-1.0.2/notolog/assets/themes/default/icons/power.svg +4 -0
  69. notolog-1.0.2/notolog/assets/themes/default/icons/quote.svg +3 -0
  70. notolog-1.0.2/notolog/assets/themes/default/icons/robot.svg +4 -0
  71. notolog-1.0.2/notolog/assets/themes/default/icons/share-fill.svg +3 -0
  72. notolog-1.0.2/notolog/assets/themes/default/icons/shield-lock-fill.svg +3 -0
  73. notolog-1.0.2/notolog/assets/themes/default/icons/shield-lock.svg +4 -0
  74. notolog-1.0.2/notolog/assets/themes/default/icons/signpost-split.svg +3 -0
  75. notolog-1.0.2/notolog/assets/themes/default/icons/star-fill.svg +3 -0
  76. notolog-1.0.2/notolog/assets/themes/default/icons/star.svg +3 -0
  77. notolog-1.0.2/notolog/assets/themes/default/icons/stop-fill.svg +3 -0
  78. notolog-1.0.2/notolog/assets/themes/default/icons/stopwatch.svg +4 -0
  79. notolog-1.0.2/notolog/assets/themes/default/icons/three-dots.svg +3 -0
  80. notolog-1.0.2/notolog/assets/themes/default/icons/trash3-fill.svg +3 -0
  81. notolog-1.0.2/notolog/assets/themes/default/icons/trash3.svg +3 -0
  82. notolog-1.0.2/notolog/assets/themes/default/icons/twitter-x.svg +3 -0
  83. notolog-1.0.2/notolog/assets/themes/default/icons/type-bold.svg +3 -0
  84. notolog-1.0.2/notolog/assets/themes/default/icons/type-italic.svg +3 -0
  85. notolog-1.0.2/notolog/assets/themes/default/icons/type-strikethrough.svg +3 -0
  86. notolog-1.0.2/notolog/assets/themes/default/icons/type-underline.svg +3 -0
  87. notolog-1.0.2/notolog/assets/themes/default/icons/x-circle-fill.svg +3 -0
  88. notolog-1.0.2/notolog/assets/themes/default/icons/x-square-fill.svg +3 -0
  89. notolog-1.0.2/notolog/assets/themes/default/icons/x-square.svg +4 -0
  90. notolog-1.0.2/notolog/assets/themes/default/md.ini +90 -0
  91. notolog-1.0.2/notolog/assets/themes/default/settings_dialog.css +17 -0
  92. notolog-1.0.2/notolog/assets/themes/default/statusbar.css +6 -0
  93. notolog-1.0.2/notolog/assets/themes/default/styles.css +201 -0
  94. notolog-1.0.2/notolog/assets/themes/default/toolbar.css +25 -0
  95. notolog-1.0.2/notolog/assets/themes/default/tree_view.css +35 -0
  96. notolog-1.0.2/notolog/assets/themes/default/viewer.css +2 -0
  97. notolog-1.0.2/notolog/assets/themes/default/viewer.ini +3 -0
  98. notolog-1.0.2/notolog/assets/themes/nocturne/about_popup.css +44 -0
  99. notolog-1.0.2/notolog/assets/themes/nocturne/ai_assistant.css +26 -0
  100. notolog-1.0.2/notolog/assets/themes/nocturne/default.ini +103 -0
  101. notolog-1.0.2/notolog/assets/themes/nocturne/editor.css +4 -0
  102. notolog-1.0.2/notolog/assets/themes/nocturne/md.ini +90 -0
  103. notolog-1.0.2/notolog/assets/themes/nocturne/settings_dialog.css +47 -0
  104. notolog-1.0.2/notolog/assets/themes/nocturne/statusbar.css +6 -0
  105. notolog-1.0.2/notolog/assets/themes/nocturne/styles.css +202 -0
  106. notolog-1.0.2/notolog/assets/themes/nocturne/toolbar.css +28 -0
  107. notolog-1.0.2/notolog/assets/themes/nocturne/tree_view.css +33 -0
  108. notolog-1.0.2/notolog/assets/themes/nocturne/viewer.css +2 -0
  109. notolog-1.0.2/notolog/assets/themes/nocturne/viewer.ini +3 -0
  110. notolog-1.0.2/notolog/assets/themes/noir_dark/about_popup.css +44 -0
  111. notolog-1.0.2/notolog/assets/themes/noir_dark/ai_assistant.css +26 -0
  112. notolog-1.0.2/notolog/assets/themes/noir_dark/default.ini +103 -0
  113. notolog-1.0.2/notolog/assets/themes/noir_dark/editor.css +3 -0
  114. notolog-1.0.2/notolog/assets/themes/noir_dark/md.ini +90 -0
  115. notolog-1.0.2/notolog/assets/themes/noir_dark/settings_dialog.css +47 -0
  116. notolog-1.0.2/notolog/assets/themes/noir_dark/statusbar.css +6 -0
  117. notolog-1.0.2/notolog/assets/themes/noir_dark/styles.css +171 -0
  118. notolog-1.0.2/notolog/assets/themes/noir_dark/toolbar.css +28 -0
  119. notolog-1.0.2/notolog/assets/themes/noir_dark/tree_view.css +33 -0
  120. notolog-1.0.2/notolog/assets/themes/noir_dark/viewer.css +2 -0
  121. notolog-1.0.2/notolog/assets/themes/noir_dark/viewer.ini +3 -0
  122. notolog-1.0.2/notolog/assets/themes/strawberry/about_popup.css +44 -0
  123. notolog-1.0.2/notolog/assets/themes/strawberry/ai_assistant.css +23 -0
  124. notolog-1.0.2/notolog/assets/themes/strawberry/default.ini +103 -0
  125. notolog-1.0.2/notolog/assets/themes/strawberry/editor.css +3 -0
  126. notolog-1.0.2/notolog/assets/themes/strawberry/md.ini +90 -0
  127. notolog-1.0.2/notolog/assets/themes/strawberry/settings_dialog.css +19 -0
  128. notolog-1.0.2/notolog/assets/themes/strawberry/statusbar.css +6 -0
  129. notolog-1.0.2/notolog/assets/themes/strawberry/styles.css +202 -0
  130. notolog-1.0.2/notolog/assets/themes/strawberry/toolbar.css +25 -0
  131. notolog-1.0.2/notolog/assets/themes/strawberry/tree_view.css +36 -0
  132. notolog-1.0.2/notolog/assets/themes/strawberry/viewer.css +4 -0
  133. notolog-1.0.2/notolog/assets/themes/strawberry/viewer.ini +3 -0
  134. notolog-1.0.2/notolog/async_highlighter.py +121 -0
  135. notolog-1.0.2/notolog/edit_widget.py +283 -0
  136. notolog-1.0.2/notolog/editor_state.py +163 -0
  137. notolog-1.0.2/notolog/encrypt/__init__.py +4 -0
  138. notolog-1.0.2/notolog/encrypt/enc_helper.py +151 -0
  139. notolog-1.0.2/notolog/encrypt/enc_new_password_dialog.py +151 -0
  140. notolog-1.0.2/notolog/encrypt/enc_password.py +47 -0
  141. notolog-1.0.2/notolog/encrypt/enc_password_dialog.py +113 -0
  142. notolog-1.0.2/notolog/encrypt/enc_password_reset_dialog.py +99 -0
  143. notolog-1.0.2/notolog/enums/__init__.py +0 -0
  144. notolog-1.0.2/notolog/enums/colors.py +172 -0
  145. notolog-1.0.2/notolog/enums/enum_base.py +74 -0
  146. notolog-1.0.2/notolog/enums/languages.py +66 -0
  147. notolog-1.0.2/notolog/enums/openai_model_names.py +47 -0
  148. notolog-1.0.2/notolog/enums/themes.py +30 -0
  149. notolog-1.0.2/notolog/etree_extension.py +142 -0
  150. notolog-1.0.2/notolog/exceptions/__init__.py +0 -0
  151. notolog-1.0.2/notolog/exceptions/file_header_empty_exception.py +2 -0
  152. notolog-1.0.2/notolog/file_header.py +238 -0
  153. notolog-1.0.2/notolog/file_system_watcher.py +108 -0
  154. notolog-1.0.2/notolog/helpers/__init__.py +1 -0
  155. notolog-1.0.2/notolog/helpers/clipboard_helper.py +26 -0
  156. notolog-1.0.2/notolog/helpers/file_helper.py +140 -0
  157. notolog-1.0.2/notolog/helpers/settings_helper.py +128 -0
  158. notolog-1.0.2/notolog/helpers/theme_helper.py +172 -0
  159. notolog-1.0.2/notolog/helpers/tooltip_helper.py +50 -0
  160. notolog-1.0.2/notolog/helpers/update_helper.py +189 -0
  161. notolog-1.0.2/notolog/highlight/__init__.py +3 -0
  162. notolog-1.0.2/notolog/highlight/main_highlighter.py +284 -0
  163. notolog-1.0.2/notolog/highlight/md_highlighter.py +982 -0
  164. notolog-1.0.2/notolog/highlight/view_highlighter.py +212 -0
  165. notolog-1.0.2/notolog/image_downloader.py +297 -0
  166. notolog-1.0.2/notolog/lexemes/__init__.py +0 -0
  167. notolog-1.0.2/notolog/lexemes/de/ai_assistant.py +25 -0
  168. notolog-1.0.2/notolog/lexemes/de/color_picker_dialog.py +146 -0
  169. notolog-1.0.2/notolog/lexemes/de/common.py +140 -0
  170. notolog-1.0.2/notolog/lexemes/de/main_menu.py +51 -0
  171. notolog-1.0.2/notolog/lexemes/de/settings_dialog.py +59 -0
  172. notolog-1.0.2/notolog/lexemes/de/statusbar.py +25 -0
  173. notolog-1.0.2/notolog/lexemes/de/toolbar.py +53 -0
  174. notolog-1.0.2/notolog/lexemes/en/ai_assistant.py +27 -0
  175. notolog-1.0.2/notolog/lexemes/en/color_picker_dialog.py +146 -0
  176. notolog-1.0.2/notolog/lexemes/en/common.py +136 -0
  177. notolog-1.0.2/notolog/lexemes/en/main_menu.py +51 -0
  178. notolog-1.0.2/notolog/lexemes/en/settings_dialog.py +59 -0
  179. notolog-1.0.2/notolog/lexemes/en/statusbar.py +25 -0
  180. notolog-1.0.2/notolog/lexemes/en/toolbar.py +53 -0
  181. notolog-1.0.2/notolog/lexemes/es/ai_assistant.py +26 -0
  182. notolog-1.0.2/notolog/lexemes/es/color_picker_dialog.py +146 -0
  183. notolog-1.0.2/notolog/lexemes/es/common.py +141 -0
  184. notolog-1.0.2/notolog/lexemes/es/main_menu.py +51 -0
  185. notolog-1.0.2/notolog/lexemes/es/settings_dialog.py +60 -0
  186. notolog-1.0.2/notolog/lexemes/es/statusbar.py +25 -0
  187. notolog-1.0.2/notolog/lexemes/es/toolbar.py +53 -0
  188. notolog-1.0.2/notolog/lexemes/fi/ai_assistant.py +25 -0
  189. notolog-1.0.2/notolog/lexemes/fi/color_picker_dialog.py +146 -0
  190. notolog-1.0.2/notolog/lexemes/fi/common.py +138 -0
  191. notolog-1.0.2/notolog/lexemes/fi/main_menu.py +51 -0
  192. notolog-1.0.2/notolog/lexemes/fi/settings_dialog.py +60 -0
  193. notolog-1.0.2/notolog/lexemes/fi/statusbar.py +25 -0
  194. notolog-1.0.2/notolog/lexemes/fi/toolbar.py +53 -0
  195. notolog-1.0.2/notolog/lexemes/fr/ai_assistant.py +25 -0
  196. notolog-1.0.2/notolog/lexemes/fr/color_picker_dialog.py +146 -0
  197. notolog-1.0.2/notolog/lexemes/fr/common.py +142 -0
  198. notolog-1.0.2/notolog/lexemes/fr/main_menu.py +51 -0
  199. notolog-1.0.2/notolog/lexemes/fr/settings_dialog.py +60 -0
  200. notolog-1.0.2/notolog/lexemes/fr/statusbar.py +26 -0
  201. notolog-1.0.2/notolog/lexemes/fr/toolbar.py +53 -0
  202. notolog-1.0.2/notolog/lexemes/ge/ai_assistant.py +25 -0
  203. notolog-1.0.2/notolog/lexemes/ge/color_picker_dialog.py +146 -0
  204. notolog-1.0.2/notolog/lexemes/ge/common.py +139 -0
  205. notolog-1.0.2/notolog/lexemes/ge/main_menu.py +51 -0
  206. notolog-1.0.2/notolog/lexemes/ge/settings_dialog.py +59 -0
  207. notolog-1.0.2/notolog/lexemes/ge/statusbar.py +26 -0
  208. notolog-1.0.2/notolog/lexemes/ge/toolbar.py +53 -0
  209. notolog-1.0.2/notolog/lexemes/gr/ai_assistant.py +25 -0
  210. notolog-1.0.2/notolog/lexemes/gr/color_picker_dialog.py +146 -0
  211. notolog-1.0.2/notolog/lexemes/gr/common.py +142 -0
  212. notolog-1.0.2/notolog/lexemes/gr/main_menu.py +51 -0
  213. notolog-1.0.2/notolog/lexemes/gr/settings_dialog.py +61 -0
  214. notolog-1.0.2/notolog/lexemes/gr/statusbar.py +26 -0
  215. notolog-1.0.2/notolog/lexemes/gr/toolbar.py +53 -0
  216. notolog-1.0.2/notolog/lexemes/in/ai_assistant.py +24 -0
  217. notolog-1.0.2/notolog/lexemes/in/color_picker_dialog.py +146 -0
  218. notolog-1.0.2/notolog/lexemes/in/common.py +136 -0
  219. notolog-1.0.2/notolog/lexemes/in/main_menu.py +51 -0
  220. notolog-1.0.2/notolog/lexemes/in/settings_dialog.py +58 -0
  221. notolog-1.0.2/notolog/lexemes/in/statusbar.py +25 -0
  222. notolog-1.0.2/notolog/lexemes/in/toolbar.py +53 -0
  223. notolog-1.0.2/notolog/lexemes/it/ai_assistant.py +25 -0
  224. notolog-1.0.2/notolog/lexemes/it/color_picker_dialog.py +146 -0
  225. notolog-1.0.2/notolog/lexemes/it/common.py +141 -0
  226. notolog-1.0.2/notolog/lexemes/it/main_menu.py +51 -0
  227. notolog-1.0.2/notolog/lexemes/it/settings_dialog.py +60 -0
  228. notolog-1.0.2/notolog/lexemes/it/statusbar.py +25 -0
  229. notolog-1.0.2/notolog/lexemes/it/toolbar.py +53 -0
  230. notolog-1.0.2/notolog/lexemes/ja/ai_assistant.py +25 -0
  231. notolog-1.0.2/notolog/lexemes/ja/color_picker_dialog.py +146 -0
  232. notolog-1.0.2/notolog/lexemes/ja/common.py +136 -0
  233. notolog-1.0.2/notolog/lexemes/ja/main_menu.py +51 -0
  234. notolog-1.0.2/notolog/lexemes/ja/settings_dialog.py +56 -0
  235. notolog-1.0.2/notolog/lexemes/ja/statusbar.py +25 -0
  236. notolog-1.0.2/notolog/lexemes/ja/toolbar.py +53 -0
  237. notolog-1.0.2/notolog/lexemes/ko/ai_assistant.py +25 -0
  238. notolog-1.0.2/notolog/lexemes/ko/color_picker_dialog.py +146 -0
  239. notolog-1.0.2/notolog/lexemes/ko/common.py +136 -0
  240. notolog-1.0.2/notolog/lexemes/ko/main_menu.py +51 -0
  241. notolog-1.0.2/notolog/lexemes/ko/settings_dialog.py +57 -0
  242. notolog-1.0.2/notolog/lexemes/ko/statusbar.py +25 -0
  243. notolog-1.0.2/notolog/lexemes/ko/toolbar.py +53 -0
  244. notolog-1.0.2/notolog/lexemes/la/ai_assistant.py +25 -0
  245. notolog-1.0.2/notolog/lexemes/la/color_picker_dialog.py +146 -0
  246. notolog-1.0.2/notolog/lexemes/la/common.py +138 -0
  247. notolog-1.0.2/notolog/lexemes/la/main_menu.py +51 -0
  248. notolog-1.0.2/notolog/lexemes/la/settings_dialog.py +60 -0
  249. notolog-1.0.2/notolog/lexemes/la/statusbar.py +26 -0
  250. notolog-1.0.2/notolog/lexemes/la/toolbar.py +53 -0
  251. notolog-1.0.2/notolog/lexemes/lexemes.py +139 -0
  252. notolog-1.0.2/notolog/lexemes/nl/ai_assistant.py +25 -0
  253. notolog-1.0.2/notolog/lexemes/nl/color_picker_dialog.py +146 -0
  254. notolog-1.0.2/notolog/lexemes/nl/common.py +137 -0
  255. notolog-1.0.2/notolog/lexemes/nl/main_menu.py +51 -0
  256. notolog-1.0.2/notolog/lexemes/nl/settings_dialog.py +59 -0
  257. notolog-1.0.2/notolog/lexemes/nl/statusbar.py +25 -0
  258. notolog-1.0.2/notolog/lexemes/nl/toolbar.py +53 -0
  259. notolog-1.0.2/notolog/lexemes/pt/ai_assistant.py +25 -0
  260. notolog-1.0.2/notolog/lexemes/pt/color_picker_dialog.py +146 -0
  261. notolog-1.0.2/notolog/lexemes/pt/common.py +141 -0
  262. notolog-1.0.2/notolog/lexemes/pt/main_menu.py +51 -0
  263. notolog-1.0.2/notolog/lexemes/pt/settings_dialog.py +60 -0
  264. notolog-1.0.2/notolog/lexemes/pt/statusbar.py +25 -0
  265. notolog-1.0.2/notolog/lexemes/pt/toolbar.py +53 -0
  266. notolog-1.0.2/notolog/lexemes/ru/ai_assistant.py +25 -0
  267. notolog-1.0.2/notolog/lexemes/ru/color_picker_dialog.py +146 -0
  268. notolog-1.0.2/notolog/lexemes/ru/common.py +138 -0
  269. notolog-1.0.2/notolog/lexemes/ru/main_menu.py +51 -0
  270. notolog-1.0.2/notolog/lexemes/ru/settings_dialog.py +60 -0
  271. notolog-1.0.2/notolog/lexemes/ru/statusbar.py +26 -0
  272. notolog-1.0.2/notolog/lexemes/ru/toolbar.py +53 -0
  273. notolog-1.0.2/notolog/lexemes/se/ai_assistant.py +25 -0
  274. notolog-1.0.2/notolog/lexemes/se/color_picker_dialog.py +146 -0
  275. notolog-1.0.2/notolog/lexemes/se/common.py +137 -0
  276. notolog-1.0.2/notolog/lexemes/se/main_menu.py +51 -0
  277. notolog-1.0.2/notolog/lexemes/se/settings_dialog.py +59 -0
  278. notolog-1.0.2/notolog/lexemes/se/statusbar.py +25 -0
  279. notolog-1.0.2/notolog/lexemes/se/toolbar.py +53 -0
  280. notolog-1.0.2/notolog/lexemes/tr/ai_assistant.py +24 -0
  281. notolog-1.0.2/notolog/lexemes/tr/color_picker_dialog.py +146 -0
  282. notolog-1.0.2/notolog/lexemes/tr/common.py +136 -0
  283. notolog-1.0.2/notolog/lexemes/tr/main_menu.py +51 -0
  284. notolog-1.0.2/notolog/lexemes/tr/settings_dialog.py +57 -0
  285. notolog-1.0.2/notolog/lexemes/tr/statusbar.py +25 -0
  286. notolog-1.0.2/notolog/lexemes/tr/toolbar.py +53 -0
  287. notolog-1.0.2/notolog/lexemes/zh/ai_assistant.py +25 -0
  288. notolog-1.0.2/notolog/lexemes/zh/color_picker_dialog.py +146 -0
  289. notolog-1.0.2/notolog/lexemes/zh/common.py +134 -0
  290. notolog-1.0.2/notolog/lexemes/zh/main_menu.py +51 -0
  291. notolog-1.0.2/notolog/lexemes/zh/settings_dialog.py +56 -0
  292. notolog-1.0.2/notolog/lexemes/zh/statusbar.py +25 -0
  293. notolog-1.0.2/notolog/lexemes/zh/toolbar.py +53 -0
  294. notolog-1.0.2/notolog/modules/__init__.py +21 -0
  295. notolog-1.0.2/notolog/modules/base_ai_core.py +35 -0
  296. notolog-1.0.2/notolog/modules/base_core.py +57 -0
  297. notolog-1.0.2/notolog/modules/default/__init__.py +33 -0
  298. notolog-1.0.2/notolog/modules/default/module_core.py +52 -0
  299. notolog-1.0.2/notolog/modules/modules.py +116 -0
  300. notolog-1.0.2/notolog/modules/ondevice_llm/__init__.py +49 -0
  301. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/de/common.py +8 -0
  302. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/de/settings_dialog.py +10 -0
  303. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/en/common.py +8 -0
  304. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/en/settings_dialog.py +10 -0
  305. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/es/common.py +8 -0
  306. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/es/settings_dialog.py +10 -0
  307. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/fi/common.py +8 -0
  308. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/fi/settings_dialog.py +10 -0
  309. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/fr/common.py +8 -0
  310. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/fr/settings_dialog.py +10 -0
  311. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/ge/common.py +8 -0
  312. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/ge/settings_dialog.py +10 -0
  313. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/gr/common.py +8 -0
  314. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/gr/settings_dialog.py +10 -0
  315. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/in/common.py +8 -0
  316. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/in/settings_dialog.py +10 -0
  317. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/it/common.py +8 -0
  318. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/it/settings_dialog.py +10 -0
  319. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/ja/common.py +8 -0
  320. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/ja/settings_dialog.py +10 -0
  321. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/ko/common.py +8 -0
  322. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/ko/settings_dialog.py +10 -0
  323. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/la/common.py +8 -0
  324. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/la/settings_dialog.py +10 -0
  325. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/nl/common.py +8 -0
  326. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/nl/settings_dialog.py +10 -0
  327. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/pt/common.py +8 -0
  328. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/pt/settings_dialog.py +10 -0
  329. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/ru/common.py +8 -0
  330. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/ru/settings_dialog.py +10 -0
  331. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/se/common.py +8 -0
  332. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/se/settings_dialog.py +10 -0
  333. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/tr/common.py +8 -0
  334. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/tr/settings_dialog.py +10 -0
  335. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/zh/common.py +8 -0
  336. notolog-1.0.2/notolog/modules/ondevice_llm/lexemes/zh/settings_dialog.py +10 -0
  337. notolog-1.0.2/notolog/modules/ondevice_llm/model_helper.py +158 -0
  338. notolog-1.0.2/notolog/modules/ondevice_llm/module_core.py +345 -0
  339. notolog-1.0.2/notolog/modules/ondevice_llm/prompt_manager.py +245 -0
  340. notolog-1.0.2/notolog/modules/openai_api/__init__.py +33 -0
  341. notolog-1.0.2/notolog/modules/openai_api/api_helper.py +115 -0
  342. notolog-1.0.2/notolog/modules/openai_api/lexemes/de/common.py +7 -0
  343. notolog-1.0.2/notolog/modules/openai_api/lexemes/de/settings_dialog.py +22 -0
  344. notolog-1.0.2/notolog/modules/openai_api/lexemes/en/common.py +7 -0
  345. notolog-1.0.2/notolog/modules/openai_api/lexemes/en/settings_dialog.py +22 -0
  346. notolog-1.0.2/notolog/modules/openai_api/lexemes/es/common.py +7 -0
  347. notolog-1.0.2/notolog/modules/openai_api/lexemes/es/settings_dialog.py +22 -0
  348. notolog-1.0.2/notolog/modules/openai_api/lexemes/fi/common.py +7 -0
  349. notolog-1.0.2/notolog/modules/openai_api/lexemes/fi/settings_dialog.py +21 -0
  350. notolog-1.0.2/notolog/modules/openai_api/lexemes/fr/common.py +7 -0
  351. notolog-1.0.2/notolog/modules/openai_api/lexemes/fr/settings_dialog.py +22 -0
  352. notolog-1.0.2/notolog/modules/openai_api/lexemes/ge/common.py +7 -0
  353. notolog-1.0.2/notolog/modules/openai_api/lexemes/ge/settings_dialog.py +23 -0
  354. notolog-1.0.2/notolog/modules/openai_api/lexemes/gr/common.py +7 -0
  355. notolog-1.0.2/notolog/modules/openai_api/lexemes/gr/settings_dialog.py +22 -0
  356. notolog-1.0.2/notolog/modules/openai_api/lexemes/in/common.py +7 -0
  357. notolog-1.0.2/notolog/modules/openai_api/lexemes/in/settings_dialog.py +22 -0
  358. notolog-1.0.2/notolog/modules/openai_api/lexemes/it/common.py +7 -0
  359. notolog-1.0.2/notolog/modules/openai_api/lexemes/it/settings_dialog.py +22 -0
  360. notolog-1.0.2/notolog/modules/openai_api/lexemes/ja/common.py +7 -0
  361. notolog-1.0.2/notolog/modules/openai_api/lexemes/ja/settings_dialog.py +21 -0
  362. notolog-1.0.2/notolog/modules/openai_api/lexemes/ko/common.py +7 -0
  363. notolog-1.0.2/notolog/modules/openai_api/lexemes/ko/settings_dialog.py +21 -0
  364. notolog-1.0.2/notolog/modules/openai_api/lexemes/la/common.py +7 -0
  365. notolog-1.0.2/notolog/modules/openai_api/lexemes/la/settings_dialog.py +23 -0
  366. notolog-1.0.2/notolog/modules/openai_api/lexemes/nl/common.py +7 -0
  367. notolog-1.0.2/notolog/modules/openai_api/lexemes/nl/settings_dialog.py +22 -0
  368. notolog-1.0.2/notolog/modules/openai_api/lexemes/pt/common.py +7 -0
  369. notolog-1.0.2/notolog/modules/openai_api/lexemes/pt/settings_dialog.py +21 -0
  370. notolog-1.0.2/notolog/modules/openai_api/lexemes/ru/common.py +7 -0
  371. notolog-1.0.2/notolog/modules/openai_api/lexemes/ru/settings_dialog.py +22 -0
  372. notolog-1.0.2/notolog/modules/openai_api/lexemes/se/common.py +7 -0
  373. notolog-1.0.2/notolog/modules/openai_api/lexemes/se/settings_dialog.py +22 -0
  374. notolog-1.0.2/notolog/modules/openai_api/lexemes/tr/common.py +7 -0
  375. notolog-1.0.2/notolog/modules/openai_api/lexemes/tr/settings_dialog.py +21 -0
  376. notolog-1.0.2/notolog/modules/openai_api/lexemes/zh/common.py +7 -0
  377. notolog-1.0.2/notolog/modules/openai_api/lexemes/zh/settings_dialog.py +21 -0
  378. notolog-1.0.2/notolog/modules/openai_api/module_core.py +451 -0
  379. notolog-1.0.2/notolog/modules/openai_api/prompt_manager.py +229 -0
  380. notolog-1.0.2/notolog/notolog_editor.py +4026 -0
  381. notolog-1.0.2/notolog/settings.py +213 -0
  382. notolog-1.0.2/notolog/text_block_data.py +104 -0
  383. notolog-1.0.2/notolog/theme.py +187 -0
  384. notolog-1.0.2/notolog/ui/__init__.py +6 -0
  385. notolog-1.0.2/notolog/ui/about_popup.py +195 -0
  386. notolog-1.0.2/notolog/ui/ai_assistant.py +709 -0
  387. notolog-1.0.2/notolog/ui/ai_message_label.py +102 -0
  388. notolog-1.0.2/notolog/ui/color_picker_dialog.py +85 -0
  389. notolog-1.0.2/notolog/ui/common_dialog.py +117 -0
  390. notolog-1.0.2/notolog/ui/create_new_dir_dialog.py +183 -0
  391. notolog-1.0.2/notolog/ui/dir_path_line_edit.py +71 -0
  392. notolog-1.0.2/notolog/ui/enum_combo_box.py +51 -0
  393. notolog-1.0.2/notolog/ui/file_system_model.py +145 -0
  394. notolog-1.0.2/notolog/ui/file_tree_context_menu.py +133 -0
  395. notolog-1.0.2/notolog/ui/horizontal_line_spacer.py +43 -0
  396. notolog-1.0.2/notolog/ui/line_numbers.py +188 -0
  397. notolog-1.0.2/notolog/ui/rename_file_dialog.py +91 -0
  398. notolog-1.0.2/notolog/ui/rotating_label.py +55 -0
  399. notolog-1.0.2/notolog/ui/search_form.py +343 -0
  400. notolog-1.0.2/notolog/ui/settings_dialog.py +706 -0
  401. notolog-1.0.2/notolog/ui/sort_filter_proxy_model.py +107 -0
  402. notolog-1.0.2/notolog/ui/statusbar.py +213 -0
  403. notolog-1.0.2/notolog/ui/toolbar.py +291 -0
  404. notolog-1.0.2/notolog/ui/vertical_line_spacer.py +36 -0
  405. notolog-1.0.2/notolog/view_decorator.py +197 -0
  406. notolog-1.0.2/notolog/view_processor.py +546 -0
  407. notolog-1.0.2/notolog/view_widget.py +151 -0
  408. notolog-1.0.2/pyproject.toml +130 -0
  409. notolog-1.0.2/tests/__init__.py +19 -0
  410. notolog-1.0.2/tests/test_enc_helper.py +161 -0
  411. notolog-1.0.2/tests/test_enc_password.py +68 -0
  412. notolog-1.0.2/tests/test_file_header.py +256 -0
  413. notolog-1.0.2/tests/test_html_view.py +108 -0
  414. notolog-1.0.2/tests/test_image_downloader.py +245 -0
  415. notolog-1.0.2/tests/test_lexemes/test_common.py +6 -0
  416. notolog-1.0.2/tests/test_lexemes/test_scope.py +6 -0
  417. notolog-1.0.2/tests/test_lexemes.py +257 -0
  418. notolog-1.0.2/tests/test_notolog_editor.py +211 -0
  419. notolog-1.0.2/tests/test_pkg_integration.py +39 -0
  420. notolog-1.0.2/tests/test_qt_async.py +63 -0
  421. notolog-1.0.2/tests/test_settings.py +69 -0
  422. notolog-1.0.2/tests/test_settings_helper.py +101 -0
  423. notolog-1.0.2/tests/test_text_block_data.py +115 -0
  424. notolog-1.0.2/tests/test_theme_helper.py +124 -0
  425. notolog-1.0.2/tests/test_themes/default/test_default.ini +5 -0
  426. notolog-1.0.2/tests/test_themes/default/test_styles.css +1 -0
  427. notolog-1.0.2/tests/test_themes/noir_dark/test_noir.ini +5 -0
  428. notolog-1.0.2/tests/test_themes/noir_dark/test_smth.css +1 -0
  429. notolog-1.0.2/tests/test_themes.py +183 -0
  430. notolog-1.0.2/tests/ui_tests/__init__.py +38 -0
  431. notolog-1.0.2/tests/ui_tests/test_ai_assistant.py +138 -0
  432. notolog-1.0.2/tests/ui_tests/test_qt_ui.py +63 -0
  433. notolog-1.0.2/tests/ui_tests/test_search_form.py +72 -0
  434. notolog-1.0.2/tests/ui_tests/test_settings_dialog.py +94 -0
  435. notolog-1.0.2/tests/ui_tests/test_toolbar.py +76 -0
@@ -0,0 +1,308 @@
1
+ # Changelog
2
+ All notologable changes to this project will be documented in this file.
3
+
4
+ ## [1.0.2] - 2024-09-29
5
+
6
+ ### Added
7
+ - Added the index of searched text occurrences within the document, alongside the count of such occurrences. This enhancement provides more detailed search results and helps users locate text more precisely.
8
+
9
+ ### Changed
10
+ - Extracted SearchForm from the ToolBar class into a separate file and updated relevant lexeme names for case-sensitive search.
11
+
12
+ ### Updated
13
+ - Updated themes to enhance the document's search field, ensuring compatibility with the new functionality.
14
+ - Upgraded the `cryptography` package dependency from version '42.0.7' to '43.0.1' or later to incorporate the latest security improvements.
15
+ - Updated tests, particularly for the ToolBar and SearchForm classes.
16
+
17
+ ### Fixed
18
+ - Adjusted the searched occurrence counter to respond to the case-sensitive search checkbox for accurate results.
19
+
20
+ ## [1.0.1] - 2024-09-15
21
+
22
+ ### Added
23
+ - Count occurrences of searched text within a document, display the count in the search field, and enable/disable navigation buttons accordingly.
24
+ - Added `get_by_scope()` method to the `Lexemes` class to retrieve all lexemes related to a particular scope.
25
+
26
+ ### Changed
27
+ - Renamed the lexeme key from 'md_background_color_blockquote_friendly' to 'md_background_color_blockquote_inner', which contains the background color value for inner elements within a blockquote.
28
+
29
+ ### Updated
30
+ - Modules tabs now respond to language changes in settings by reloading the `settings_dialog` scope.
31
+ - Updated the 'Nocturne' theme styles (comments, blockquote inner elements background, and the selected tree element style), along with minor tweaks to other themes.
32
+ - Updated tests related to the `Lexemes` class functionality.
33
+
34
+ ### Fixed
35
+ - Fixed an issue where the Esc-key hidden AI Assistant dialog did not reopen after clicking its button.
36
+ - Fixed markdown highlighting for header tags when the header content contains emojis.
37
+ - Fixed the potential font size shift of the settings tab widget when changing themes.
38
+ - Fixed the persisted code block background color in an open document when changing themes in the settings.
39
+
40
+ ## [1.0.0] - 2024-09-01
41
+
42
+ ### Added
43
+ - New dark theme 'Nocturne' for nighttime coders.
44
+
45
+ ### Fixed
46
+ - Fixed the issue with updating settings group titles during interactive language changes.
47
+ - Resolved `pytest` warning regarding the default fixture loop scope in `asyncio`.
48
+
49
+ ### Changed
50
+ - Updated the approach for assigning styles to settings group titles.
51
+
52
+ ## [0.9.9] - 2024-08-18
53
+
54
+ ### Added
55
+ - Notolog is now available for installation via Conda Forge. Installation instructions and a version badge have been added to the `README.md` file.
56
+ - Introduced the ability to create a new directory from the file tree context menu.
57
+
58
+ ### Changed
59
+ - Adjusted palette highlight colors (e.g., selection, search, context menu active background) for the 'Default' and 'Noir Dark' themes.
60
+
61
+ ### Fixed
62
+ - The tree filter now returns to the initial directory in the file tree when the filter text is cleared using the backspace key.
63
+
64
+ ## [0.9.8] - 2024-08-04
65
+
66
+ ### Added
67
+ - Added the ability to copy the file path from the file tree context menu.
68
+ - Added 'gpt-4o-mini' and 'gpt-4-turbo' to the list of supported models in the OpenAI API module.
69
+
70
+ ### Updated
71
+ - Updated the URL for new version notifications to point to the latest version page.
72
+ - Hid status bar warnings in Edit Mode, as the warnings are now relevant only in View Mode.
73
+
74
+ ## [0.9.7] - 2024-07-14
75
+
76
+ ### Added
77
+ - Added a warning label to the status bar to indicate mismatches between `<details>` blocks' open and close tags.
78
+
79
+ ### Updated
80
+ - Enhanced the processing of collapsible blocks with several updates:
81
+ - Inserted a zero-width space before expandable anchor tags to prevent continuous anchor sequences.
82
+ - Preserved 'class' attributes and other properties when processing `<details>` and `<summary>` tags.
83
+ - Included the block's summary within the QUrl fragment for better linkage.
84
+ - Updated corresponding UI styles for consistency and visual integration.
85
+
86
+ ### Fixed
87
+ - Improved handling of nested expandable/collapsible blocks at the same level.
88
+ - Corrected an issue where clicking on the very first character of an expanded block would misplace the expansion.
89
+
90
+ ## [0.9.6] - 2024-06-30
91
+
92
+ ### Added
93
+ - Added Markdown to HTML conversion within the expandable blocks.
94
+
95
+ ### Changed
96
+ - Highlighted '@todo' token even if there is no space after it but before the end of the line.
97
+
98
+ ### Updated
99
+ - Updated translations for the AI Assistant and related functionalities, including the On Device LLM module.
100
+
101
+ ### Fixed
102
+ - Fixed a missing tooltip when copying messages from the AI Assistant dialog.
103
+ - Fixed an issue where a button in the AI Assistant could become stuck if the request exceeded the length limit. Also added more service messages within the AI Assistant to address potential errors.
104
+
105
+ ## [0.9.5] - 2024-06-23
106
+
107
+ ### Added
108
+ - Added `pyproject.toml` file to support the modern way of building packages.
109
+ - Added a development and test tools installation script that gets data directly from `pyproject.toml`.
110
+ - Added a button to send requests and stop inference for the AI Assistant.
111
+
112
+ ### Changed
113
+ - Renamed `main.py` to `app.py` to allow running the app with the `python -m notolog.app` command.
114
+ - The application has been tested with less strict dependencies, using version ranges to ensure compatibility and flexibility.
115
+
116
+ ### Updated
117
+ - Updated `README.md` with current and additional information about dev tools installation, and other changed parts.
118
+
119
+ ### Fixed
120
+ - Fixed building the wheel on the Windows platform.
121
+ - Added `QT_API` environment variable to fix Windows CLI run.
122
+
123
+ ## [0.9.5b1] - 2024-06-16
124
+
125
+ ### Added
126
+ - Modular functionality with extendable settings and lexemes.
127
+ - Introduced the 'On Device LLM' module using ONNX Runtime GenAI, enabling local, CPU-optimized versions of LLMs like Phi-3 without requiring internet access. Added two new packages, `onnxruntime_genai` and `numpy`, to support this feature. Supported systems include Linux and Windows (support for macOS is in progress).
128
+
129
+ ### Changed
130
+ - Transformed the OpenAI API into a dedicated module.
131
+ - Moved descriptions of third-party packages and their licenses to the `ThirdPartyNotices.md` file from the README.md.
132
+
133
+ ### Updated
134
+ - Enhanced the AI Assistant to support multi-turn conversations with optional 'no memory' requests, improved token count management, and added a stop button functionality to halt inference.
135
+ - Enabled saving of the entire AI Assistant conversation; individual messages can now be copied to the clipboard as well.
136
+ - Implemented caching of settings, which can be reset via the main menu.
137
+
138
+ ### Fixed
139
+ - Resolved an issue where the code block background color was indiscernible in the Dark Noir theme.
140
+ - Corrected anchors processing for headers using the 'toc' (Table of Contents) markdown extension.
141
+
142
+ ## [0.9.1b8] - 2024-05-25
143
+
144
+ ### Added
145
+ - Added `typing_extensions` package, which is also automatically installed with the `emoji` package.
146
+ - New tests and test-related updates, particularly complex async tests for `ImageDownloader`.
147
+
148
+ ### Updated
149
+ - Updated the following packages to their latest versions: `PySide6` (including `PySide6_Addons` and `PySide6_Essentials`) to version 6.7.1, `pytest` to version 8.2.1, `pytest-asyncio` to version 0.23.7, `cffi` to version 1.17.0rc1, and `emoji` to version 2.12.1.
150
+ - Added processing for the Shift + Enter keyboard combination to avoid soft line breaks, which may alter the perception of how soft line breaks function.
151
+ - Updated the package's `setup.py` to include supported languages and additional package information.
152
+ - Updated the functionality for getting and storing protected fields in settings, including refactoring and error fixes (re-setup of corresponding values may be required).
153
+ - Updated `AppConfig` with additional settings-related options.
154
+ - Various `Flake8` linter fixes to ensure the code meets the PEP 8 style guide, along with McCabe complexity updates (current complexity check level is 15).
155
+ - Updated and optimized the content of the `README.md` file to enhance the sections on third-party components, and tests-related topics.
156
+
157
+ ### Changed
158
+ - Slightly reduced the await time for the async highlighter to make the editing mode more responsive to changes involved in syntax highlighting (experimental).
159
+ - Improved the error-proofing of async queue processing upon app closing, particularly if background processes like highlighting or others are still in progress.
160
+
161
+ ### Fixed
162
+ - Fixed an issue where resources might be downloaded twice.
163
+ - Resolved a problem with the toolbar context menu being unresponsive.
164
+
165
+ ## [0.9.1b5] - 2024-05-19
166
+
167
+ ### Added
168
+ - Introduced a GitHub workflow for tests, incorporating Flake8 and pytest coverage reports to maintain high standards of code quality and ensure comprehensive test coverage.
169
+ - Added the app's organization name, app name, and version to facilitate correct settings storage.
170
+ - Added a media directory to the app_config.toml.
171
+ - App settings now support encrypted values to keep sensitive data, like API keys, secure. The encryption key is generated once and stored in the app config file. A Settings helper class was also added.
172
+ - New tomli_w package added to support TOML-file writing.
173
+
174
+ ### Updated
175
+ - Tests updated to support multi-platform execution.
176
+ - Used `os.sep` to ensure correct path separators on each OS and `os.path.normpath()` to normalize path separators.
177
+ - Updated the description and disclaimers text in README.md; added a "Code Quality and Test Coverage" paragraph.
178
+
179
+ ### Changed
180
+ - Changed the approach to not create a resource directory upfront before any file is available to save.
181
+ - Moved async highlighter functionality to a dedicated file.
182
+ - Adjusted links markdown highlighter to allow highlighting web links within lines of markdown blocks, and adjusted the web links regex accordingly.
183
+ - Refined the AppConfig object to implement the singleton pattern, enabling it to automatically generate the app's config file rather than relying on a predefined version.
184
+
185
+ ### Fixed
186
+ - Fixed a potential error in the image downloader when the property is None upon canceling tasks on exiting the app.
187
+ - Updated the resource folder path according to the currently active file.
188
+
189
+ ## [0.9.1b4] - 2024-05-12
190
+
191
+ ### Added
192
+ - Introduced the pytest-asyncio package to support testing of asyncio code with pytest, enhancing the robustness and reliability of unit tests.
193
+ - Added the `.gitattributes` file that was previously omitted to ensure consistent Git configurations across various environments.
194
+
195
+ ### Updated
196
+ - Improved the processing and completion of tasks in the asynchronous syntax highlighter, enhancing efficiency and stability.
197
+ - Expanded the `.gitignore` file with additional entries to better manage the files included in version control, such as ignoring more temporary files and build artifacts.
198
+
199
+ ## [0.9.1b3] - 2024-05-11
200
+
201
+ ### Added
202
+ - Introduced the CODE_OF_CONDUCT.md file to promote a respectful and positive environment for all contributors and participants. This document outlines our commitment to providing a harassment-free experience for everyone and offers guidelines for respectful communication practices.
203
+ - Support for highlighting tables in markdown edit mode, enhancing the editing experience.
204
+ - A new EnumBase class to incorporate common methods across enums, improving code reusability.
205
+ - Additional tests to increase coverage and ensure the stability of new features.
206
+
207
+ ### Changed
208
+ - Renamed the main package directory from app to notolog and moved main.py into the notolog directory to better reflect the project structure.
209
+ - Refined the handling of external and local links, as well as local files, now routing them through a unified links router for improved security and consistency.
210
+ - Updated the table styles in view mode across all themes for more consistent visual presentation.
211
+ - Eliminated the need for a preliminary empty line to highlight lists in markdown edit mode, enhancing the user experience by simplifying text formatting.
212
+
213
+ ### Updated
214
+ - Enhanced the language selection mechanism to prefer the system language by default, with a fallback to a predefined language if the system language is not available.
215
+ - Optimized the checking of image downloader statuses and the updating of signal processing for increased performance and reliability.
216
+
217
+ ### Fixed
218
+ - Corrected the processing for confirming external links to eliminate unintended navigational behaviors and enhance user security.
219
+ - Various minor fixes to address small issues in the codebase, enhancing stability and performance without significantly changing functionality.
220
+
221
+ ## [0.9.1b1] - 2024-05-06
222
+
223
+ ### Added
224
+ - New interface language: Dutch
225
+
226
+ ### Updated
227
+ - Upgraded `cryptography` to version 42.0.7 to align with the latest standards and enhance security.
228
+
229
+ ### Changed
230
+ - Updated requirements.txt to match the actual package list.
231
+
232
+ ## [0.9.1b0] - 2024-05-05
233
+
234
+ ### Added
235
+ - New interface languages: Finnish and Swedish, expanding accessibility for users in these regions.
236
+ - Additional entries to the `.gitignore` and `.gitattributes` files to improve version control practices.
237
+ - A dedicated `app_config.toml` file with initial configuration parameters, simplifying initial setup and customization.
238
+
239
+ ### Updated
240
+ - Updated the `Libraries and Licenses` section within the README.md file to provide comprehensive information about third-party dependencies and their licenses.
241
+ - Updated `cryptography` to version 42.0.6 and `Pygments` to version 2.18.0 to ensure compatibility with the latest standards and to incorporate the newest features and security enhancements.
242
+
243
+ ### Changed
244
+ - Modified file handling: The file header can now be the only content of the file, streamlining setups where minimal data is required.
245
+ - Updated encryption description to clarify that Fernet uses AES-128 for encryption, derived from a 256-bit key, accurately reflecting the cryptographic standards employed.
246
+
247
+ ## [0.9.0b11] - 2024-05-04
248
+
249
+ ### Added
250
+ - Support for embedding external images within documents, with caching.
251
+ - Option to auto-save downloaded image resources on local disk and reuse them in subsequent document sessions.
252
+ - New interface languages: Greek, Hindi, Turkish.
253
+ - Expanded example content and resources.
254
+ - Added `CHANGELOG.md` to document all notable changes to the project, enhancing transparency and trackability for developers and users alike.
255
+
256
+ ### Updated
257
+ - Updated pytest to version 8.2.0 to take advantage of improved test suite performance and new features. (Previously listed under "Changed")
258
+
259
+ ### Changed
260
+ - Updated pip installer related packages and file structure.
261
+ - Current directory now persists during file events, even if no files are actively open.
262
+ - Minor logo adjustment.
263
+
264
+ ### Fixed
265
+ - Resolved sudden crashes when switching between edit and view modes.
266
+ - Addressed UI style issues for improved text visibility under various color schemes.
267
+
268
+ ## [0.9.0b10] - 2024-04-29
269
+
270
+ ### Changed
271
+ - Updated pip installer related packages and file structure.
272
+
273
+ ### Fixed
274
+ - Corrected startup failures following pip installation.
275
+
276
+ ## [0.9.0b0] - 2024-04-29
277
+
278
+ ### Added
279
+ - Initial release features, open sourced under the MIT license for full transparency and collaboration.
280
+ - Markdown syntax highlighting:
281
+ - Editor mode offers smooth highlighting tailored specifically for Notolog by our development team, including line numbers and extended syntax highlighting.
282
+ - View mode utilizes the Python Markdown library for seamless rendering of Markdown syntax.
283
+ - Supports multi-line block open-close tokens for enhanced readability and structure.
284
+ - Multi-platform support: Compatible with all major platforms where Python is installed, ensuring accessibility across operating systems.
285
+ - Accessible features:
286
+ - Clear and accessible descriptions for enhanced usability.
287
+ - Font size adjustment for better readability.
288
+ - Background and cross-action save changes experience:
289
+ - Automatically saves changes in the background to ensure data integrity and minimize user intervention.
290
+ - Seamlessly handles unsaved changes when performing cross-actions, providing a smooth user experience.
291
+ - Search functionality:
292
+ - Enables users to search within the opened file.
293
+ - Quick search by file name within the tree for efficient navigation and content retrieval.
294
+ - File meta-headers in the form of HTML comments to avoid excess visibility.
295
+ - Password-based file symmetric encryption and decryption:
296
+ - Utilizes AES-256 in CBC (Cipher Block Chaining) mode with secure key management via PBKDF2HMAC employing SHA-256, provided by the Fernet library.
297
+ - File meta-headers keep encryption parameters for seamless decryption processes.
298
+ - Translations-friendly file structure:
299
+ - Supports several languages out of the box, with provisions for adding and supporting additional languages.
300
+ - Color themes support:
301
+ - Includes predefined color themes for customizing the editor's appearance in both light and dark modes.
302
+ - Hotkeys support:
303
+ - Supports essential hotkeys like Ctrl+S for saving and Ctrl+F for searching, with plans for further expansion.
304
+ - In-line context menus:
305
+ - Right-click context menu options in the file tree for file rename and delete actions.
306
+ - Customizable toolbar with right-click functionality to show/hide icons based on user preferences.
307
+ - A suite of unit tests to ensure code reliability and maintainability, providing confidence in the editor's functionality.
308
+ - AI Assistant UI integrated with the OpenAI API, with plans to extend support to other providers.
@@ -0,0 +1,48 @@
1
+ <!-- {"notolog.app": {"created": "2024-05-11 11:15:29.656338", "updated": "2024-05-11 11:15:29.656338"}} -->
2
+ # Contributor Covenant Code of Conduct
3
+
4
+ ## Our Pledge
5
+
6
+ In the interest of fostering an open and welcoming environment, we, as contributors and maintainers, pledge to make participation in our project and our community a harassment-free experience for everyone. This is regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
7
+
8
+ ## Our Standards
9
+
10
+ Examples of behavior that contribute to creating a positive environment include:
11
+
12
+ * Using welcoming and inclusive language
13
+ * Being respectful of differing viewpoints and experiences
14
+ * Gracefully accepting constructive criticism
15
+ * Focusing on what is best for the community
16
+ * Showing empathy towards other community members
17
+
18
+ Examples of unacceptable behavior by participants include:
19
+
20
+ * The use of sexualized language or imagery and unwelcome sexual attention or advances
21
+ * Trolling, insulting/derogatory comments, and personal or political attacks
22
+ * Public or private harassment
23
+ * Publishing others' private information, such as a physical or electronic address, without explicit permission
24
+ * Other conduct which could reasonably be considered inappropriate in a professional setting
25
+
26
+ ## Our Responsibilities
27
+
28
+ Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
29
+
30
+ Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned with this Code of Conduct. They can also ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
31
+
32
+ ## Scope
33
+
34
+ This Code of Conduct applies within all project spaces, and it also applies when an individual is representing the project or its community in public spaces. Examples of representing a project or community include using an official project email address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
35
+
36
+ ## Enforcement
37
+
38
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at dev&#064;notolog.app. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
39
+
40
+ Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
41
+
42
+ ## Attribution
43
+
44
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
45
+
46
+ [homepage]: https://www.contributor-covenant.org
47
+
48
+ For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq
notolog-1.0.2/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Vadim Bakhrenkov
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.