MetaList 0.1.6__tar.gz → 0.1.8__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.

Potentially problematic release.


This version of MetaList might be problematic. Click here for more details.

Files changed (91) hide show
  1. MetaList-0.1.8/MetaList.egg-info/PKG-INFO +111 -0
  2. {MetaList-0.1.6 → MetaList-0.1.8}/MetaList.egg-info/SOURCES.txt +4 -3
  3. {MetaList-0.1.6 → MetaList-0.1.8}/MetaList.egg-info/requires.txt +1 -0
  4. MetaList-0.1.8/PKG-INFO +111 -0
  5. MetaList-0.1.8/README.md +92 -0
  6. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/app.py +109 -30
  7. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/config.py +3 -1
  8. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/css/components/chat-ui.css +25 -0
  9. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/css/components/items-list.css +5 -4
  10. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/js/app-state.js +3 -1
  11. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/js/components/chat-ui.js +77 -100
  12. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/js/components/items-list.js +40 -3
  13. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/js/components/search-bar.js +1 -1
  14. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/js/components/suggestions-list.js +1 -1
  15. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/js/misc/item-formatter.js +5 -6
  16. MetaList-0.1.6/metalist/static/js/misc/formats.js → MetaList-0.1.8/metalist/static/js/misc/parsing.js +113 -0
  17. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/js/misc/server-proxy.js +7 -0
  18. MetaList-0.1.8/metalist/utils/chat_prompts.py +220 -0
  19. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/utils/crud.py +2 -2
  20. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/utils/decorate_single_item.py +8 -6
  21. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/utils/find.py +3 -3
  22. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/utils/initialize.py +7 -3
  23. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/utils/ontology.py +4 -4
  24. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/utils/search_filters.py +5 -9
  25. MetaList-0.1.8/metalist/utils/search_index.py +62 -0
  26. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/utils/search_suggestions.py +15 -6
  27. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/utils/server.py +51 -26
  28. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/utils/snapshots.py +12 -12
  29. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/utils/tags_suggestions.py +24 -10
  30. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/utils/update_multiple_items.py +15 -20
  31. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/utils/update_single_item.py +2 -2
  32. {MetaList-0.1.6 → MetaList-0.1.8}/setup.py +2 -2
  33. {MetaList-0.1.6 → MetaList-0.1.8}/tests/test_utils.py +2 -2
  34. MetaList-0.1.6/MetaList.egg-info/PKG-INFO +0 -59
  35. MetaList-0.1.6/PKG-INFO +0 -59
  36. MetaList-0.1.6/README.md +0 -41
  37. MetaList-0.1.6/metalist/static/js/misc/LLMs.js +0 -252
  38. {MetaList-0.1.6 → MetaList-0.1.8}/LICENSE +0 -0
  39. {MetaList-0.1.6 → MetaList-0.1.8}/MetaList.egg-info/dependency_links.txt +0 -0
  40. {MetaList-0.1.6 → MetaList-0.1.8}/MetaList.egg-info/entry_points.txt +0 -0
  41. {MetaList-0.1.6 → MetaList-0.1.8}/MetaList.egg-info/top_level.txt +0 -0
  42. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/__init__.py +0 -0
  43. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/css/app.css +0 -0
  44. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/css/components/search-bar.css +0 -0
  45. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/css/components/suggestions-list.css +0 -0
  46. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/css/components/tags-bar.css +0 -0
  47. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/css/dark-theme.css +0 -0
  48. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/css/reserved-tags.css +0 -0
  49. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/css/unreset.css +0 -0
  50. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/html/index.html +0 -0
  51. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/img/caret-down-filled.svg +0 -0
  52. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/img/caret-right-filled.svg +0 -0
  53. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/img/chat-left-svgrepo-com.svg +0 -0
  54. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/img/checkbox-checked.svg +0 -0
  55. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/img/checkbox-unchecked.svg +0 -0
  56. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/img/favicon.ico +0 -0
  57. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/img/search.svg +0 -0
  58. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/img/tag.svg +0 -0
  59. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/js/components/tags-bar.js +0 -0
  60. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/js/config.js +0 -0
  61. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/js/misc/logging.js +0 -0
  62. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/js/misc/scrolling.js +0 -0
  63. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/js/misc/vdom.js +0 -0
  64. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/js/pub-sub-events.js +0 -0
  65. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/PubSubJS/LICENSE.md +0 -0
  66. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/PubSubJS/pubsub.js +0 -0
  67. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/katex/LICENSE +0 -0
  68. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/katex/contrib/auto-render.min.js +0 -0
  69. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/katex/contrib/copy-tex.min.css +0 -0
  70. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/katex/contrib/copy-tex.min.js +0 -0
  71. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/katex/contrib/mathtex-script-type.min.js +0 -0
  72. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/katex/katex.min.css +0 -0
  73. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/katex/katex.min.js +0 -0
  74. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/lodash/LICENSE +0 -0
  75. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/lodash/lodash.js +0 -0
  76. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/markdown-it/LICENSE +0 -0
  77. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/markdown-it/markdown-it.min.js +0 -0
  78. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/micronitjs/LICENSE +0 -0
  79. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/micronitjs/micronit.js +0 -0
  80. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/the-new-css-reset/LICENSE +0 -0
  81. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/the-new-css-reset/reset.css +0 -0
  82. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/voca/LICENSE.md +0 -0
  83. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/libs/voca/voca.min.js +0 -0
  84. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/tests/unit-tests/run-tests.html +0 -0
  85. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/static/tests/unit-tests/test-search-bar.js +0 -0
  86. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/utils/__init__.py +0 -0
  87. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/utils/generate.py +0 -0
  88. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/utils/misc/__init__.py +0 -0
  89. /MetaList-0.1.6/metalist/utils/misc/crypto.py → /MetaList-0.1.8/metalist/utils/misc/crypto-test.py +0 -0
  90. {MetaList-0.1.6 → MetaList-0.1.8}/metalist/utils/reporting.py +0 -0
  91. {MetaList-0.1.6 → MetaList-0.1.8}/setup.cfg +0 -0
@@ -0,0 +1,111 @@
1
+ Metadata-Version: 2.1
2
+ Name: MetaList
3
+ Version: 0.1.8
4
+ Summary: A PKM web app integrated with LLMs
5
+ Home-page: https://github.com/evolvingstuff/MetaList
6
+ Author: Thomas Lahore
7
+ Author-email: tom.lahore@gmail.com
8
+ Classifier: Programming Language :: Python :: 3.8
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Operating System :: OS Independent
11
+ Requires-Python: >=3.8
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: bottle==0.12.25
15
+ Requires-Dist: bottle-sqlite==0.2.0
16
+ Requires-Dist: beautifulsoup4~=4.12.2
17
+ Requires-Dist: requests==2.31.0
18
+ Requires-Dist: tqdm==4.66.1
19
+
20
+
21
+ # MetaList
22
+
23
+ <img src="docs/img/MetaList-Logo.png" width="130" />
24
+
25
+ [![PyPI](https://img.shields.io/pypi/v/metalist)](https://pypi.org/project/metalist/)
26
+ ![PyPI - Python Version](https://img.shields.io/badge/python-3.8+-blue)
27
+ ![Runs on Linux | MacOS | Windows](https://img.shields.io/badge/runs%20on-Linux%20%7C%20MacOS%20%7C%20Windows-blue)
28
+
29
+
30
+ ## What is MetaList?
31
+ MetaList is a personal knowledge management web application,
32
+ tightly integrated with large language models.
33
+
34
+ > ⚠️ **MetaList is currently in Development**: Expect breaking changes and bugs
35
+
36
+ ## Features
37
+
38
+ - [x] Chat feature: LLM integration (currently only [OpenAI API](https://openai.com/blog/openai-api))
39
+ - [x] [Chart.js](https://www.chartjs.org/) integration for LLM-generated visualizations
40
+ - [x] Hierarchical, collapsable note structure
41
+ - [x] Reordering notes in one context survives to other search contexts; notes maintain a [total order](https://en.wikipedia.org/wiki/Total_order)
42
+ - [x] Quick, responsive searching (tags, full-text, or combo of both)
43
+ - [x] Search suggestions
44
+ - [x] Tagging
45
+ - [x] Tag suggestions (uses a [Jaccard index](https://en.wikipedia.org/wiki/Jaccard_index))
46
+ - [x] Tags can imply other tags
47
+ - [x] Tag implication rules are also notes; they can themselves be tagged and searched
48
+ - [x] Nested subitems in notes inherit tags from their parents
49
+ - [x] [Markdown](https://markdown-it.github.io/)/[LaTeX](https://katex.org/) support
50
+ - [x] Infinite undo/redo
51
+ - [x] Infinite scrolling
52
+
53
+ ### Chat Feature Example
54
+
55
+ Search filters notes down to a relevant subset (a "search context"), which has the nice
56
+ effect of acting as a form of human-guided [retrieval augmented generation](https://www.promptingguide.ai/techniques/rag).
57
+ The chat feature is fully integrated with the underlying notes. Mousing over a reference in the chat will highlight
58
+ the referenced note, if it is within view, and clicking on the reference will navigate to and select the note,
59
+ even opening up collapsed items in the note hierarchy so that all the relevant info becomes visible.
60
+
61
+ Some examples of interactions with the chat feature (in this case, recommending new movies):
62
+
63
+ <img src="docs/img/demo-1.gif" width="800"/>
64
+ <img src="docs/img/chat-example-2.png" width="800"/>
65
+ <!--<img src="docs/img/chat-example-3.png" width="800"/>-->
66
+
67
+ ## Installation
68
+
69
+ It is recommended that you create a Python virtual environment before installing MetaList.
70
+
71
+ ```bash
72
+ python3 -m venv venv
73
+ source venv/bin/activate
74
+ ```
75
+
76
+ Then, install MetaList using pip:
77
+
78
+ ```bash
79
+ pip install metalist
80
+ ```
81
+
82
+ ## Usage
83
+
84
+ From the installation directory, run:
85
+ ```
86
+ metalist
87
+ ```
88
+
89
+ Navigate to `http://127.0.0.0:8080/`
90
+
91
+ Read the [cheatsheet](docs/cheatsheet.md).
92
+
93
+ ## Roadmap
94
+
95
+ - [ ] Chat integration with other models
96
+ - [ ] Menus / Settings
97
+ - [ ] Reminders
98
+ - [ ] Passwords / encryption at rest
99
+ - [ ] Import data from browser bookmarks
100
+ - [ ] Import data from other PKM apps
101
+ - [ ] Export notes to JSON, Markdown, HTML, PDF
102
+ - [ ] File handling
103
+ - [ ] Access to local file system
104
+ - [ ] Multi-user
105
+ - [ ] Mobile friendly
106
+ - [ ] More unit/integration testing
107
+
108
+ ## License
109
+
110
+ MetaList is licensed under the MIT license. See [LICENSE](LICENSE) for more information.
111
+
@@ -36,10 +36,9 @@ metalist/static/js/components/items-list.js
36
36
  metalist/static/js/components/search-bar.js
37
37
  metalist/static/js/components/suggestions-list.js
38
38
  metalist/static/js/components/tags-bar.js
39
- metalist/static/js/misc/LLMs.js
40
- metalist/static/js/misc/formats.js
41
39
  metalist/static/js/misc/item-formatter.js
42
40
  metalist/static/js/misc/logging.js
41
+ metalist/static/js/misc/parsing.js
43
42
  metalist/static/js/misc/scrolling.js
44
43
  metalist/static/js/misc/server-proxy.js
45
44
  metalist/static/js/misc/vdom.js
@@ -65,6 +64,7 @@ metalist/static/libs/voca/voca.min.js
65
64
  metalist/static/tests/unit-tests/run-tests.html
66
65
  metalist/static/tests/unit-tests/test-search-bar.js
67
66
  metalist/utils/__init__.py
67
+ metalist/utils/chat_prompts.py
68
68
  metalist/utils/crud.py
69
69
  metalist/utils/decorate_single_item.py
70
70
  metalist/utils/find.py
@@ -73,6 +73,7 @@ metalist/utils/initialize.py
73
73
  metalist/utils/ontology.py
74
74
  metalist/utils/reporting.py
75
75
  metalist/utils/search_filters.py
76
+ metalist/utils/search_index.py
76
77
  metalist/utils/search_suggestions.py
77
78
  metalist/utils/server.py
78
79
  metalist/utils/snapshots.py
@@ -80,5 +81,5 @@ metalist/utils/tags_suggestions.py
80
81
  metalist/utils/update_multiple_items.py
81
82
  metalist/utils/update_single_item.py
82
83
  metalist/utils/misc/__init__.py
83
- metalist/utils/misc/crypto.py
84
+ metalist/utils/misc/crypto-test.py
84
85
  tests/test_utils.py
@@ -1,4 +1,5 @@
1
1
  bottle==0.12.25
2
2
  bottle-sqlite==0.2.0
3
3
  beautifulsoup4~=4.12.2
4
+ requests==2.31.0
4
5
  tqdm==4.66.1
@@ -0,0 +1,111 @@
1
+ Metadata-Version: 2.1
2
+ Name: MetaList
3
+ Version: 0.1.8
4
+ Summary: A PKM web app integrated with LLMs
5
+ Home-page: https://github.com/evolvingstuff/MetaList
6
+ Author: Thomas Lahore
7
+ Author-email: tom.lahore@gmail.com
8
+ Classifier: Programming Language :: Python :: 3.8
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Operating System :: OS Independent
11
+ Requires-Python: >=3.8
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: bottle==0.12.25
15
+ Requires-Dist: bottle-sqlite==0.2.0
16
+ Requires-Dist: beautifulsoup4~=4.12.2
17
+ Requires-Dist: requests==2.31.0
18
+ Requires-Dist: tqdm==4.66.1
19
+
20
+
21
+ # MetaList
22
+
23
+ <img src="docs/img/MetaList-Logo.png" width="130" />
24
+
25
+ [![PyPI](https://img.shields.io/pypi/v/metalist)](https://pypi.org/project/metalist/)
26
+ ![PyPI - Python Version](https://img.shields.io/badge/python-3.8+-blue)
27
+ ![Runs on Linux | MacOS | Windows](https://img.shields.io/badge/runs%20on-Linux%20%7C%20MacOS%20%7C%20Windows-blue)
28
+
29
+
30
+ ## What is MetaList?
31
+ MetaList is a personal knowledge management web application,
32
+ tightly integrated with large language models.
33
+
34
+ > ⚠️ **MetaList is currently in Development**: Expect breaking changes and bugs
35
+
36
+ ## Features
37
+
38
+ - [x] Chat feature: LLM integration (currently only [OpenAI API](https://openai.com/blog/openai-api))
39
+ - [x] [Chart.js](https://www.chartjs.org/) integration for LLM-generated visualizations
40
+ - [x] Hierarchical, collapsable note structure
41
+ - [x] Reordering notes in one context survives to other search contexts; notes maintain a [total order](https://en.wikipedia.org/wiki/Total_order)
42
+ - [x] Quick, responsive searching (tags, full-text, or combo of both)
43
+ - [x] Search suggestions
44
+ - [x] Tagging
45
+ - [x] Tag suggestions (uses a [Jaccard index](https://en.wikipedia.org/wiki/Jaccard_index))
46
+ - [x] Tags can imply other tags
47
+ - [x] Tag implication rules are also notes; they can themselves be tagged and searched
48
+ - [x] Nested subitems in notes inherit tags from their parents
49
+ - [x] [Markdown](https://markdown-it.github.io/)/[LaTeX](https://katex.org/) support
50
+ - [x] Infinite undo/redo
51
+ - [x] Infinite scrolling
52
+
53
+ ### Chat Feature Example
54
+
55
+ Search filters notes down to a relevant subset (a "search context"), which has the nice
56
+ effect of acting as a form of human-guided [retrieval augmented generation](https://www.promptingguide.ai/techniques/rag).
57
+ The chat feature is fully integrated with the underlying notes. Mousing over a reference in the chat will highlight
58
+ the referenced note, if it is within view, and clicking on the reference will navigate to and select the note,
59
+ even opening up collapsed items in the note hierarchy so that all the relevant info becomes visible.
60
+
61
+ Some examples of interactions with the chat feature (in this case, recommending new movies):
62
+
63
+ <img src="docs/img/demo-1.gif" width="800"/>
64
+ <img src="docs/img/chat-example-2.png" width="800"/>
65
+ <!--<img src="docs/img/chat-example-3.png" width="800"/>-->
66
+
67
+ ## Installation
68
+
69
+ It is recommended that you create a Python virtual environment before installing MetaList.
70
+
71
+ ```bash
72
+ python3 -m venv venv
73
+ source venv/bin/activate
74
+ ```
75
+
76
+ Then, install MetaList using pip:
77
+
78
+ ```bash
79
+ pip install metalist
80
+ ```
81
+
82
+ ## Usage
83
+
84
+ From the installation directory, run:
85
+ ```
86
+ metalist
87
+ ```
88
+
89
+ Navigate to `http://127.0.0.0:8080/`
90
+
91
+ Read the [cheatsheet](docs/cheatsheet.md).
92
+
93
+ ## Roadmap
94
+
95
+ - [ ] Chat integration with other models
96
+ - [ ] Menus / Settings
97
+ - [ ] Reminders
98
+ - [ ] Passwords / encryption at rest
99
+ - [ ] Import data from browser bookmarks
100
+ - [ ] Import data from other PKM apps
101
+ - [ ] Export notes to JSON, Markdown, HTML, PDF
102
+ - [ ] File handling
103
+ - [ ] Access to local file system
104
+ - [ ] Multi-user
105
+ - [ ] Mobile friendly
106
+ - [ ] More unit/integration testing
107
+
108
+ ## License
109
+
110
+ MetaList is licensed under the MIT license. See [LICENSE](LICENSE) for more information.
111
+
@@ -0,0 +1,92 @@
1
+
2
+ # MetaList
3
+
4
+ <img src="docs/img/MetaList-Logo.png" width="130" />
5
+
6
+ [![PyPI](https://img.shields.io/pypi/v/metalist)](https://pypi.org/project/metalist/)
7
+ ![PyPI - Python Version](https://img.shields.io/badge/python-3.8+-blue)
8
+ ![Runs on Linux | MacOS | Windows](https://img.shields.io/badge/runs%20on-Linux%20%7C%20MacOS%20%7C%20Windows-blue)
9
+
10
+
11
+ ## What is MetaList?
12
+ MetaList is a personal knowledge management web application,
13
+ tightly integrated with large language models.
14
+
15
+ > ⚠️ **MetaList is currently in Development**: Expect breaking changes and bugs
16
+
17
+ ## Features
18
+
19
+ - [x] Chat feature: LLM integration (currently only [OpenAI API](https://openai.com/blog/openai-api))
20
+ - [x] [Chart.js](https://www.chartjs.org/) integration for LLM-generated visualizations
21
+ - [x] Hierarchical, collapsable note structure
22
+ - [x] Reordering notes in one context survives to other search contexts; notes maintain a [total order](https://en.wikipedia.org/wiki/Total_order)
23
+ - [x] Quick, responsive searching (tags, full-text, or combo of both)
24
+ - [x] Search suggestions
25
+ - [x] Tagging
26
+ - [x] Tag suggestions (uses a [Jaccard index](https://en.wikipedia.org/wiki/Jaccard_index))
27
+ - [x] Tags can imply other tags
28
+ - [x] Tag implication rules are also notes; they can themselves be tagged and searched
29
+ - [x] Nested subitems in notes inherit tags from their parents
30
+ - [x] [Markdown](https://markdown-it.github.io/)/[LaTeX](https://katex.org/) support
31
+ - [x] Infinite undo/redo
32
+ - [x] Infinite scrolling
33
+
34
+ ### Chat Feature Example
35
+
36
+ Search filters notes down to a relevant subset (a "search context"), which has the nice
37
+ effect of acting as a form of human-guided [retrieval augmented generation](https://www.promptingguide.ai/techniques/rag).
38
+ The chat feature is fully integrated with the underlying notes. Mousing over a reference in the chat will highlight
39
+ the referenced note, if it is within view, and clicking on the reference will navigate to and select the note,
40
+ even opening up collapsed items in the note hierarchy so that all the relevant info becomes visible.
41
+
42
+ Some examples of interactions with the chat feature (in this case, recommending new movies):
43
+
44
+ <img src="docs/img/demo-1.gif" width="800"/>
45
+ <img src="docs/img/chat-example-2.png" width="800"/>
46
+ <!--<img src="docs/img/chat-example-3.png" width="800"/>-->
47
+
48
+ ## Installation
49
+
50
+ It is recommended that you create a Python virtual environment before installing MetaList.
51
+
52
+ ```bash
53
+ python3 -m venv venv
54
+ source venv/bin/activate
55
+ ```
56
+
57
+ Then, install MetaList using pip:
58
+
59
+ ```bash
60
+ pip install metalist
61
+ ```
62
+
63
+ ## Usage
64
+
65
+ From the installation directory, run:
66
+ ```
67
+ metalist
68
+ ```
69
+
70
+ Navigate to `http://127.0.0.0:8080/`
71
+
72
+ Read the [cheatsheet](docs/cheatsheet.md).
73
+
74
+ ## Roadmap
75
+
76
+ - [ ] Chat integration with other models
77
+ - [ ] Menus / Settings
78
+ - [ ] Reminders
79
+ - [ ] Passwords / encryption at rest
80
+ - [ ] Import data from browser bookmarks
81
+ - [ ] Import data from other PKM apps
82
+ - [ ] Export notes to JSON, Markdown, HTML, PDF
83
+ - [ ] File handling
84
+ - [ ] Access to local file system
85
+ - [ ] Multi-user
86
+ - [ ] Mobile friendly
87
+ - [ ] More unit/integration testing
88
+
89
+ ## License
90
+
91
+ MetaList is licensed under the MIT license. See [LICENSE](LICENSE) for more information.
92
+