pomera-ai-commander 1.1.1 → 1.2.2

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 (213) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +105 -680
  3. package/bin/pomera-ai-commander.js +62 -62
  4. package/core/__init__.py +65 -65
  5. package/core/app_context.py +482 -482
  6. package/core/async_text_processor.py +421 -421
  7. package/core/backup_manager.py +655 -655
  8. package/core/backup_recovery_manager.py +1199 -1033
  9. package/core/content_hash_cache.py +508 -508
  10. package/core/context_menu.py +313 -313
  11. package/core/data_directory.py +549 -0
  12. package/core/data_validator.py +1066 -1066
  13. package/core/database_connection_manager.py +744 -744
  14. package/core/database_curl_settings_manager.py +608 -608
  15. package/core/database_promera_ai_settings_manager.py +446 -446
  16. package/core/database_schema.py +411 -411
  17. package/core/database_schema_manager.py +395 -395
  18. package/core/database_settings_manager.py +1507 -1507
  19. package/core/database_settings_manager_interface.py +456 -456
  20. package/core/dialog_manager.py +734 -734
  21. package/core/diff_utils.py +239 -0
  22. package/core/efficient_line_numbers.py +540 -510
  23. package/core/error_handler.py +746 -746
  24. package/core/error_service.py +431 -431
  25. package/core/event_consolidator.py +511 -511
  26. package/core/mcp/__init__.py +43 -43
  27. package/core/mcp/find_replace_diff.py +334 -0
  28. package/core/mcp/protocol.py +288 -288
  29. package/core/mcp/schema.py +251 -251
  30. package/core/mcp/server_stdio.py +299 -299
  31. package/core/mcp/tool_registry.py +2699 -2345
  32. package/core/memento.py +275 -0
  33. package/core/memory_efficient_text_widget.py +711 -711
  34. package/core/migration_manager.py +914 -914
  35. package/core/migration_test_suite.py +1085 -1085
  36. package/core/migration_validator.py +1143 -1143
  37. package/core/optimized_find_replace.py +714 -714
  38. package/core/optimized_pattern_engine.py +424 -424
  39. package/core/optimized_search_highlighter.py +552 -552
  40. package/core/performance_monitor.py +674 -674
  41. package/core/persistence_manager.py +712 -712
  42. package/core/progressive_stats_calculator.py +632 -632
  43. package/core/regex_pattern_cache.py +529 -529
  44. package/core/regex_pattern_library.py +350 -350
  45. package/core/search_operation_manager.py +434 -434
  46. package/core/settings_defaults_registry.py +1087 -1087
  47. package/core/settings_integrity_validator.py +1111 -1111
  48. package/core/settings_serializer.py +557 -557
  49. package/core/settings_validator.py +1823 -1823
  50. package/core/smart_stats_calculator.py +709 -709
  51. package/core/statistics_update_manager.py +619 -619
  52. package/core/stats_config_manager.py +858 -858
  53. package/core/streaming_text_handler.py +723 -723
  54. package/core/task_scheduler.py +596 -596
  55. package/core/update_pattern_library.py +168 -168
  56. package/core/visibility_monitor.py +596 -596
  57. package/core/widget_cache.py +498 -498
  58. package/mcp.json +51 -61
  59. package/migrate_data.py +127 -0
  60. package/package.json +64 -57
  61. package/pomera.py +7883 -7482
  62. package/pomera_mcp_server.py +183 -144
  63. package/requirements.txt +33 -0
  64. package/scripts/Dockerfile.alpine +43 -0
  65. package/scripts/Dockerfile.gui-test +54 -0
  66. package/scripts/Dockerfile.linux +43 -0
  67. package/scripts/Dockerfile.test-linux +80 -0
  68. package/scripts/Dockerfile.ubuntu +39 -0
  69. package/scripts/README.md +53 -0
  70. package/scripts/build-all.bat +113 -0
  71. package/scripts/build-docker.bat +53 -0
  72. package/scripts/build-docker.sh +55 -0
  73. package/scripts/build-optimized.bat +101 -0
  74. package/scripts/build.sh +78 -0
  75. package/scripts/docker-compose.test.yml +27 -0
  76. package/scripts/docker-compose.yml +32 -0
  77. package/scripts/postinstall.js +62 -0
  78. package/scripts/requirements-minimal.txt +33 -0
  79. package/scripts/test-linux-simple.bat +28 -0
  80. package/scripts/validate-release-workflow.py +450 -0
  81. package/tools/__init__.py +4 -4
  82. package/tools/ai_tools.py +2891 -2891
  83. package/tools/ascii_art_generator.py +352 -352
  84. package/tools/base64_tools.py +183 -183
  85. package/tools/base_tool.py +511 -511
  86. package/tools/case_tool.py +308 -308
  87. package/tools/column_tools.py +395 -395
  88. package/tools/cron_tool.py +884 -884
  89. package/tools/curl_history.py +600 -600
  90. package/tools/curl_processor.py +1207 -1207
  91. package/tools/curl_settings.py +502 -502
  92. package/tools/curl_tool.py +5467 -5467
  93. package/tools/diff_viewer.py +1817 -1072
  94. package/tools/email_extraction_tool.py +248 -248
  95. package/tools/email_header_analyzer.py +425 -425
  96. package/tools/extraction_tools.py +250 -250
  97. package/tools/find_replace.py +2289 -1750
  98. package/tools/folder_file_reporter.py +1463 -1463
  99. package/tools/folder_file_reporter_adapter.py +480 -480
  100. package/tools/generator_tools.py +1216 -1216
  101. package/tools/hash_generator.py +255 -255
  102. package/tools/html_tool.py +656 -656
  103. package/tools/jsonxml_tool.py +729 -729
  104. package/tools/line_tools.py +419 -419
  105. package/tools/markdown_tools.py +561 -561
  106. package/tools/mcp_widget.py +1417 -1417
  107. package/tools/notes_widget.py +978 -973
  108. package/tools/number_base_converter.py +372 -372
  109. package/tools/regex_extractor.py +571 -571
  110. package/tools/slug_generator.py +310 -310
  111. package/tools/sorter_tools.py +458 -458
  112. package/tools/string_escape_tool.py +392 -392
  113. package/tools/text_statistics_tool.py +365 -365
  114. package/tools/text_wrapper.py +430 -430
  115. package/tools/timestamp_converter.py +421 -421
  116. package/tools/tool_loader.py +710 -710
  117. package/tools/translator_tools.py +522 -522
  118. package/tools/url_link_extractor.py +261 -261
  119. package/tools/url_parser.py +204 -204
  120. package/tools/whitespace_tools.py +355 -355
  121. package/tools/word_frequency_counter.py +146 -146
  122. package/core/__pycache__/__init__.cpython-313.pyc +0 -0
  123. package/core/__pycache__/app_context.cpython-313.pyc +0 -0
  124. package/core/__pycache__/async_text_processor.cpython-313.pyc +0 -0
  125. package/core/__pycache__/backup_manager.cpython-313.pyc +0 -0
  126. package/core/__pycache__/backup_recovery_manager.cpython-313.pyc +0 -0
  127. package/core/__pycache__/content_hash_cache.cpython-313.pyc +0 -0
  128. package/core/__pycache__/context_menu.cpython-313.pyc +0 -0
  129. package/core/__pycache__/data_validator.cpython-313.pyc +0 -0
  130. package/core/__pycache__/database_connection_manager.cpython-313.pyc +0 -0
  131. package/core/__pycache__/database_curl_settings_manager.cpython-313.pyc +0 -0
  132. package/core/__pycache__/database_promera_ai_settings_manager.cpython-313.pyc +0 -0
  133. package/core/__pycache__/database_schema.cpython-313.pyc +0 -0
  134. package/core/__pycache__/database_schema_manager.cpython-313.pyc +0 -0
  135. package/core/__pycache__/database_settings_manager.cpython-313.pyc +0 -0
  136. package/core/__pycache__/database_settings_manager_interface.cpython-313.pyc +0 -0
  137. package/core/__pycache__/dialog_manager.cpython-313.pyc +0 -0
  138. package/core/__pycache__/efficient_line_numbers.cpython-313.pyc +0 -0
  139. package/core/__pycache__/error_handler.cpython-313.pyc +0 -0
  140. package/core/__pycache__/error_service.cpython-313.pyc +0 -0
  141. package/core/__pycache__/event_consolidator.cpython-313.pyc +0 -0
  142. package/core/__pycache__/memory_efficient_text_widget.cpython-313.pyc +0 -0
  143. package/core/__pycache__/migration_manager.cpython-313.pyc +0 -0
  144. package/core/__pycache__/migration_test_suite.cpython-313.pyc +0 -0
  145. package/core/__pycache__/migration_validator.cpython-313.pyc +0 -0
  146. package/core/__pycache__/optimized_find_replace.cpython-313.pyc +0 -0
  147. package/core/__pycache__/optimized_pattern_engine.cpython-313.pyc +0 -0
  148. package/core/__pycache__/optimized_search_highlighter.cpython-313.pyc +0 -0
  149. package/core/__pycache__/performance_monitor.cpython-313.pyc +0 -0
  150. package/core/__pycache__/persistence_manager.cpython-313.pyc +0 -0
  151. package/core/__pycache__/progressive_stats_calculator.cpython-313.pyc +0 -0
  152. package/core/__pycache__/regex_pattern_cache.cpython-313.pyc +0 -0
  153. package/core/__pycache__/regex_pattern_library.cpython-313.pyc +0 -0
  154. package/core/__pycache__/search_operation_manager.cpython-313.pyc +0 -0
  155. package/core/__pycache__/settings_defaults_registry.cpython-313.pyc +0 -0
  156. package/core/__pycache__/settings_integrity_validator.cpython-313.pyc +0 -0
  157. package/core/__pycache__/settings_serializer.cpython-313.pyc +0 -0
  158. package/core/__pycache__/settings_validator.cpython-313.pyc +0 -0
  159. package/core/__pycache__/smart_stats_calculator.cpython-313.pyc +0 -0
  160. package/core/__pycache__/statistics_update_manager.cpython-313.pyc +0 -0
  161. package/core/__pycache__/stats_config_manager.cpython-313.pyc +0 -0
  162. package/core/__pycache__/streaming_text_handler.cpython-313.pyc +0 -0
  163. package/core/__pycache__/task_scheduler.cpython-313.pyc +0 -0
  164. package/core/__pycache__/visibility_monitor.cpython-313.pyc +0 -0
  165. package/core/__pycache__/widget_cache.cpython-313.pyc +0 -0
  166. package/core/mcp/__pycache__/__init__.cpython-313.pyc +0 -0
  167. package/core/mcp/__pycache__/protocol.cpython-313.pyc +0 -0
  168. package/core/mcp/__pycache__/schema.cpython-313.pyc +0 -0
  169. package/core/mcp/__pycache__/server_stdio.cpython-313.pyc +0 -0
  170. package/core/mcp/__pycache__/tool_registry.cpython-313.pyc +0 -0
  171. package/tools/__pycache__/__init__.cpython-313.pyc +0 -0
  172. package/tools/__pycache__/ai_tools.cpython-313.pyc +0 -0
  173. package/tools/__pycache__/ascii_art_generator.cpython-313.pyc +0 -0
  174. package/tools/__pycache__/base64_tools.cpython-313.pyc +0 -0
  175. package/tools/__pycache__/base_tool.cpython-313.pyc +0 -0
  176. package/tools/__pycache__/case_tool.cpython-313.pyc +0 -0
  177. package/tools/__pycache__/column_tools.cpython-313.pyc +0 -0
  178. package/tools/__pycache__/cron_tool.cpython-313.pyc +0 -0
  179. package/tools/__pycache__/curl_history.cpython-313.pyc +0 -0
  180. package/tools/__pycache__/curl_processor.cpython-313.pyc +0 -0
  181. package/tools/__pycache__/curl_settings.cpython-313.pyc +0 -0
  182. package/tools/__pycache__/curl_tool.cpython-313.pyc +0 -0
  183. package/tools/__pycache__/diff_viewer.cpython-313.pyc +0 -0
  184. package/tools/__pycache__/email_extraction_tool.cpython-313.pyc +0 -0
  185. package/tools/__pycache__/email_header_analyzer.cpython-313.pyc +0 -0
  186. package/tools/__pycache__/extraction_tools.cpython-313.pyc +0 -0
  187. package/tools/__pycache__/find_replace.cpython-313.pyc +0 -0
  188. package/tools/__pycache__/folder_file_reporter.cpython-313.pyc +0 -0
  189. package/tools/__pycache__/folder_file_reporter_adapter.cpython-313.pyc +0 -0
  190. package/tools/__pycache__/generator_tools.cpython-313.pyc +0 -0
  191. package/tools/__pycache__/hash_generator.cpython-313.pyc +0 -0
  192. package/tools/__pycache__/html_tool.cpython-313.pyc +0 -0
  193. package/tools/__pycache__/huggingface_helper.cpython-313.pyc +0 -0
  194. package/tools/__pycache__/jsonxml_tool.cpython-313.pyc +0 -0
  195. package/tools/__pycache__/line_tools.cpython-313.pyc +0 -0
  196. package/tools/__pycache__/list_comparator.cpython-313.pyc +0 -0
  197. package/tools/__pycache__/markdown_tools.cpython-313.pyc +0 -0
  198. package/tools/__pycache__/mcp_widget.cpython-313.pyc +0 -0
  199. package/tools/__pycache__/notes_widget.cpython-313.pyc +0 -0
  200. package/tools/__pycache__/number_base_converter.cpython-313.pyc +0 -0
  201. package/tools/__pycache__/regex_extractor.cpython-313.pyc +0 -0
  202. package/tools/__pycache__/slug_generator.cpython-313.pyc +0 -0
  203. package/tools/__pycache__/sorter_tools.cpython-313.pyc +0 -0
  204. package/tools/__pycache__/string_escape_tool.cpython-313.pyc +0 -0
  205. package/tools/__pycache__/text_statistics_tool.cpython-313.pyc +0 -0
  206. package/tools/__pycache__/text_wrapper.cpython-313.pyc +0 -0
  207. package/tools/__pycache__/timestamp_converter.cpython-313.pyc +0 -0
  208. package/tools/__pycache__/tool_loader.cpython-313.pyc +0 -0
  209. package/tools/__pycache__/translator_tools.cpython-313.pyc +0 -0
  210. package/tools/__pycache__/url_link_extractor.cpython-313.pyc +0 -0
  211. package/tools/__pycache__/url_parser.cpython-313.pyc +0 -0
  212. package/tools/__pycache__/whitespace_tools.cpython-313.pyc +0 -0
  213. package/tools/__pycache__/word_frequency_counter.cpython-313.pyc +0 -0
package/README.md CHANGED
@@ -1,680 +1,105 @@
1
- # Pomera AI Commander
2
-
3
- A comprehensive text processing GUI application built with Python and Tkinter, featuring advanced performance monitoring, intelligent caching, and AI-powered tools.
4
-
5
- [![Download Latest Release](https://img.shields.io/badge/Download-Latest%20Release-blue?style=for-the-badge&logo=github)](https://github.com/matbanik/Pomera-AI-Commander/releases)
6
-
7
- ## 📸 Screenshots
8
-
9
- <div align="center">
10
-
11
- ![Pomera AI Commander Screenshot 1](./PAC1.jpg)
12
- *Main interface with multi-tab text processing*
13
-
14
- ![Pomera AI Commander Screenshot 2](./PAC2.jpg)
15
- *Advanced tools and AI integration*
16
-
17
- ![Pomera AI Commander Screenshot 3](./PAC3.jpg)
18
- *Diff viewer with side-by-side comparison*
19
-
20
- ![Pomera AI Commander Screenshot 4](./PAC4.jpg)
21
- *Performance monitoring dashboard*
22
-
23
- ![Pomera AI Commander Screenshot 5](./PAC5.jpg)
24
- *Text statistics and analysis tools*
25
-
26
- ![Pomera AI Commander Screenshot 6](./PAC6.jpg)
27
- *Export capabilities and format options*
28
-
29
- ![Pomera AI Commander Screenshot 7](./PAC7.jpg)
30
- *Settings and configuration panel*
31
-
32
- </div>
33
-
34
- ## 📚 Documentation
35
-
36
- ### Quick Links
37
- - **[Tools Documentation](docs/TOOLS_DOCUMENTATION.md)** - Comprehensive guide to all available tools
38
- - **[MCP Server Guide](#troubleshooting-mcp-integration)** - MCP server setup and integration
39
- - **[Troubleshooting Guide](docs/TROUBLESHOOTING.md)** - Solutions for common issues
40
- - **[Release Process Guide](docs/RELEASE_PROCESS.md)** - Detailed release procedures for maintainers
41
- - **[Release Testing Guide](docs/RELEASE_TESTING.md)** - Testing procedures for releases
42
- - **[Testing Quick Start Guide](docs/TESTING_QUICK_START.md)** - Rapid testing setup and procedures
43
-
44
- ## 🚀 Features
45
-
46
- ### Core Text Processing
47
- - **Multi-tab Interface** - Work with multiple text inputs and outputs simultaneously
48
- - **Advanced Find & Replace** - Powerful text search and replacement with regex support
49
- - **Case Conversion Tools** - Sentence case, title case, upper/lower case transformations
50
- - **Text Statistics** - Real-time byte, word, line, and paragraph counting
51
- - **Export Capabilities** - Save to TXT, CSV, PDF, and DOCX formats
52
-
53
- ### Advanced Tools
54
- - **Email Processing** - Extract and analyze email addresses and headers
55
- - **URL Tools** - Extract URLs and parse URL components
56
- - **Code Utilities** - Base64 encoding/decoding, binary translation, Morse code
57
- - **Text Generators** - Password generation, repeating text, alphabetical sorting
58
- - **Diff Viewer** - Side-by-side text comparison with word-level highlighting
59
-
60
- ### AI Integration
61
- - **AI Tools Widget** - Integrated AI-powered text processing capabilities
62
- - **Multiple AI Providers** - Support for various AI services and models
63
- - **Smart Processing** - Context-aware text analysis and transformation
64
-
65
- ### MCP Server (Model Context Protocol)
66
- - **Expose Tools to AI Assistants** - Run Pomera as an MCP server for AI IDE integration
67
- - **33 Text Processing Tools** - All major tools available via MCP protocol
68
- - **Notes Database** - Store, retrieve, and search notes via MCP
69
- - **Multiple Transports** - stdio transport for seamless subprocess integration
70
- - **Works with Cursor, Claude Desktop** - Compatible with any MCP-enabled client
71
-
72
- ### Performance Features
73
- - **Intelligent Caching** - Smart caching system for improved performance
74
- - **Async Processing** - Non-blocking text processing for large files
75
- - **Progressive Search** - Optimized search with real-time highlighting
76
- - **Memory Optimization** - Efficient memory usage for large text files
77
- - **Performance Monitoring** - Built-in performance tracking and optimization
78
-
79
- ## 🛠️ Installation
80
-
81
- ### Prerequisites
82
- - Python 3.8 or higher
83
- - Required Python packages (install via pip):
84
-
85
- ```bash
86
- pip install tkinter requests reportlab python-docx
87
- ```
88
-
89
- ### Optional Dependencies
90
- For enhanced functionality:
91
- ```bash
92
- pip install pyaudio numpy psutil huggingface-hub
93
- ```
94
-
95
- ### Quick Start
96
-
97
- #### Option 1: Download Pre-built Executable (Recommended)
98
-
99
- 1. Go to the [**Releases page**](https://github.com/matbanik/Pomera-AI-Commander/releases)
100
- 2. Download the latest version for your platform:
101
- - **Windows**: `pomera-v1.0.0-windows.exe`
102
- - **Linux**: `pomera-v1.0.0-linux`
103
- - **macOS (Apple Silicon)**: `pomera-v1.0.0-macos-arm64`
104
- 3. Run the executable directly (no Python installation required)
105
-
106
- #### Option 2: Run from Source
107
- 1. Clone the repository:
108
- ```bash
109
- git clone https://github.com/matbanik/Pomera-AI-Commander.git
110
- cd Pomera-AI-Commander
111
- ```
112
-
113
- 2. Run the application:
114
- ```bash
115
- python pomera.py
116
- ```
117
-
118
- ## 📦 Releases and Downloads
119
-
120
- ### Getting the Latest Release
121
-
122
- Visit the [**Releases page**](https://github.com/matbanik/Pomera-AI-Commander/releases) to download pre-built executables for your platform. Each release includes:
123
-
124
- - **Cross-platform executables** - No Python installation required
125
- - **SHA256 checksums** - For security verification
126
- - **Release notes** - What's new and changed
127
- - **Installation instructions** - Platform-specific setup guides
128
-
129
- ### Platform-Specific Installation
130
-
131
- #### Windows
132
- 1. Download `pomera-v1.0.0-windows.exe`
133
- 2. **Optional**: Verify the download using SHA256 checksum from `checksums.txt`
134
- 3. Double-click the executable to run
135
- 4. **Note**: Windows may show a security warning for unsigned executables - click "More info" → "Run anyway"
136
-
137
- #### Linux
138
- 1. Download `pomera-v1.0.0-linux`
139
- 2. Make executable and run:
140
- ```bash
141
- chmod +x pomera-v1.0.0-linux
142
- ./pomera-v1.0.0-linux
143
- ```
144
-
145
- #### macOS
146
-
147
- **Apple Silicon Macs (M1/M2/M3/M4)**:
148
- 1. Download `pomera-v1.0.0-macos-arm64`
149
- 2. Make executable and run:
150
- ```bash
151
- chmod +x pomera-v1.0.0-macos-arm64
152
- ./pomera-v1.0.0-macos-arm64
153
- ```
154
- 3. **Note**: macOS may require allowing the app in System Preferences → Security & Privacy
155
-
156
- ### Release Process (For Maintainers)
157
-
158
- #### Triggering a Release
159
- 1. **Create a version tag** following semantic versioning:
160
- ```bash
161
- git tag v1.0.0
162
- git push origin v1.0.0
163
- ```
164
- 2. **GitHub Actions automatically**:
165
- - Builds executables for Windows, Linux, and macOS
166
- - Generates SHA256 checksums
167
- - Creates a GitHub release
168
- - Uploads all artifacts
169
-
170
- #### Version Tag Format
171
- - Use semantic versioning: `v1.0.0`, `v1.2.3`, `v2.0.0-beta.1`
172
- - Tags must start with `v` to trigger the release workflow
173
- - Pre-release tags (containing `-alpha`, `-beta`, `-rc`) create pre-releases
174
-
175
- #### Release Workflow
176
- ```mermaid
177
- graph LR
178
- A[Push version tag] --> B[GitHub Actions triggers]
179
- B --> C[Build on 3 platforms]
180
- C --> D[Generate checksums]
181
- D --> E[Create GitHub release]
182
- E --> F[Upload artifacts]
183
- ```
184
-
185
- ### Troubleshooting Downloads
186
-
187
- #### Common Issues
188
-
189
- **Windows: "Windows protected your PC" warning**
190
- - This is normal for unsigned executables
191
- - Click "More info" → "Run anyway"
192
- - Alternative: Run from source if you prefer
193
-
194
- **Linux/macOS: "Permission denied" error**
195
- - The executable needs execute permissions
196
- - Run: `chmod +x pomera-v1.0.0-linux` (or macos)
197
-
198
- **macOS: "App can't be opened because it is from an unidentified developer"**
199
- - Go to System Preferences → Security & Privacy
200
- - Click "Open Anyway" next to the blocked app message
201
- - Alternative: Run `xattr -d com.apple.quarantine pomera-v1.0.0-macos-arm64`
202
-
203
- **Download verification fails**
204
- - Re-download the file (may be corrupted)
205
- - Check you're comparing against the correct checksum from `checksums.txt`
206
- - Ensure you downloaded the checksum file from the same release
207
-
208
- **Executable won't start**
209
- - Check system requirements (64-bit OS)
210
- - Try running from command line to see error messages
211
- - For older systems, try running from source instead
212
-
213
- #### Getting Help
214
- - Check the [Troubleshooting Guide](docs/TROUBLESHOOTING.md) for detailed solutions
215
- - Search [existing issues](https://github.com/matbanik/Pomera-AI-Commander/issues) for known problems
216
- - Create a new issue with:
217
- - Your operating system and version
218
- - The exact error message
219
- - Steps you tried to resolve it
220
-
221
- Pomera-AI-Commander/
222
- ├── pomera.py # Main application (supports --mcp-server flag)
223
- ├── tools/ # All tool modules
224
- │ ├── __init__.py
225
- │ ├── ai_tools.py
226
- │ ├── base64_tools.py
227
- │ ├── case_tool.py
228
- │ ├── diff_viewer.py
229
- │ ├── email_extraction_tool.py
230
- │ ├── email_header_analyzer.py
231
- │ ├── find_replace.py
232
- │ ├── generator_tools.py
233
- │ ├── list_comparator.py
234
- │ ├── mcp_widget.py # MCP Manager UI
235
- │ ├── sorter_tools.py
236
- │ ├── translator_tools.py
237
- │ ├── url_link_extractor.py
238
- │ ├── url_parser.py
239
- │ └── word_frequency_counter.py
240
- ├── core/ # All core utility modules
241
- │ ├── __init__.py
242
- │ ├── async_text_processor.py
243
- │ ├── content_hash_cache.py
244
- │ ├── mcp/ # MCP Server implementation
245
- │ │ ├── __init__.py
246
- │ │ ├── schema.py # MCP message schemas
247
- │ │ ├── protocol.py # JSON-RPC protocol handling
248
- │ │ ├── tool_registry.py # Tool registration and adapters
249
- │ │ └── server_stdio.py # stdio transport server
250
- │ ├── memory_efficient_text_widget.py
251
- │ ├── optimized_find_replace.py
252
- │ └── [other modules...]
253
- └── docs/
254
- ├── MCP_PROJECT.md # MCP server documentation
255
- └── MCP_TASKS.md # MCP implementation status
256
-
257
-
258
- ## 📖 Usage
259
-
260
- ### Basic Text Processing
261
- 1. **Input Text** - Enter or paste text in the input tabs
262
- 2. **Select Tool** - Choose from the dropdown menu of available tools
263
- 3. **Process** - Click "Apply Tool" or use automatic processing
264
- 4. **View Results** - See processed text in the output tabs
265
- 5. **Export** - Save results in your preferred format
266
-
267
- ### Comprehensive Tool Documentation
268
- For detailed information about all available tools, features, and usage examples, see the [**Tools Documentation**](docs/TOOLS_DOCUMENTATION.md).
269
-
270
- ### Advanced Features
271
- - **Diff Viewer** - Compare two texts side-by-side with highlighting
272
- - **Performance Dashboard** - Monitor application performance and optimize settings
273
- - **AI Tools** - Access AI-powered text processing capabilities
274
- - **Batch Processing** - Process multiple texts efficiently
275
- - **MCP Manager** - Configure and test MCP server integration (Widgets → MCP Manager)
276
-
277
- ### Keyboard Shortcuts
278
- - `Ctrl+Z` / `Ctrl+Y` - Undo/Redo
279
- - `Ctrl+S` - Save settings
280
- - `Ctrl+O` - Open file
281
- - `Ctrl+E` - Export current output
282
- - `Ctrl+M` - Open MCP Manager
283
-
284
- ## ⚙️ Configuration
285
-
286
- ### Settings
287
- The application automatically saves settings to `settings.json`, including:
288
- - Tool preferences and configurations
289
- - Performance optimization settings
290
- - UI layout and preferences
291
- - Export paths and formats
292
-
293
- ### Performance Optimization
294
- - **Automatic Mode** - Intelligent performance adjustments based on content size
295
- - **Manual Mode** - Fine-tune performance settings for your system
296
- - **Memory Management** - Optimize memory usage for large files
297
- - **Async Processing** - Enable background processing for better responsiveness
298
-
299
- ## 🔌 MCP Server Integration
300
-
301
- Pomera can run as an MCP (Model Context Protocol) server, exposing all its text processing tools to AI assistants like Cursor, Claude Desktop, or any MCP-compatible client.
302
-
303
- ### Quick Setup for Cursor
304
-
305
- 1. Open MCP Manager: `Widgets → MCP Manager` or `Ctrl+M`
306
- 2. Go to the **Configuration** tab
307
- 3. Copy the JSON configuration
308
- 4. Add it to your Cursor MCP settings (`~/.cursor/mcp.json`)
309
-
310
- ### Running as MCP Server
311
-
312
- ```bash
313
- # From source
314
- python pomera.py --mcp-server
315
-
316
- # From compiled executable
317
- pomera.exe --mcp-server
318
- ```
319
-
320
- ### Available MCP Tools (33 total)
321
-
322
- | Category | Tools |
323
- |----------|-------|
324
- | **Text Transform** | `pomera_case_transform`, `pomera_whitespace`, `pomera_line_tools`, `pomera_sort` |
325
- | **Encoding** | `pomera_base64`, `pomera_hash`, `pomera_string_escape`, `pomera_slug` |
326
- | **Data Formats** | `pomera_json_xml`, `pomera_markdown`, `pomera_column_tools` |
327
- | **Extraction** | `pomera_regex_extract`, `pomera_extract_emails`, `pomera_extract_urls`, `pomera_html`, `pomera_email_header_analyzer` |
328
- | **Utilities** | `pomera_url_parse`, `pomera_timestamp`, `pomera_cron`, `pomera_number_base`, `pomera_text_wrap`, `pomera_text_stats`, `pomera_word_frequency`, `pomera_list_compare` |
329
- | **Generators** | `pomera_generators`, `pomera_translator` |
330
- | **Notes** | `pomera_notes_save`, `pomera_notes_get`, `pomera_notes_list`, `pomera_notes_search`, `pomera_notes_update`, `pomera_notes_delete` |
331
-
332
- ### MCP Configuration Example
333
-
334
- ```json
335
- {
336
- "mcpServers": {
337
- "pomera": {
338
- "command": "python",
339
- "args": ["C:/path/to/pomera.py", "--mcp-server"]
340
- }
341
- }
342
- }
343
- ```
344
-
345
- For detailed MCP documentation, see [**MCP Server Guide**](docs/MCP_PROJECT.md).
346
-
347
- ### Setting Up Pomera MCP Server with Cursor
348
-
349
- Cursor IDE supports MCP servers natively. Follow these steps to integrate Pomera:
350
-
351
- #### Step 1: Locate Your MCP Configuration File
352
-
353
- **Windows:**
354
- ```
355
- %USERPROFILE%\.cursor\mcp.json
356
- ```
357
- Example: `C:\Users\YourName\.cursor\mcp.json`
358
-
359
- **macOS:**
360
- ```
361
- ~/.cursor/mcp.json
362
- ```
363
-
364
- **Linux:**
365
- ```
366
- ~/.cursor/mcp.json
367
- ```
368
-
369
- #### Step 2: Add Pomera to MCP Configuration
370
-
371
- Open or create the `mcp.json` file and add the Pomera server configuration:
372
-
373
- **Using Python (from source):**
374
- ```json
375
- {
376
- "mcpServers": {
377
- "pomera": {
378
- "command": "python",
379
- "args": ["C:/path/to/Pomera-AI-Commander/pomera.py", "--mcp-server"]
380
- }
381
- }
382
- }
383
- ```
384
-
385
- **Using Compiled Executable (Windows):**
386
- ```json
387
- {
388
- "mcpServers": {
389
- "pomera": {
390
- "command": "C:/path/to/pomera.exe",
391
- "args": ["--mcp-server"]
392
- }
393
- }
394
- }
395
- ```
396
-
397
- **Using Compiled Executable (Linux/macOS):**
398
- ```json
399
- {
400
- "mcpServers": {
401
- "pomera": {
402
- "command": "/path/to/pomera",
403
- "args": ["--mcp-server"]
404
- }
405
- }
406
- }
407
- ```
408
-
409
- #### Step 3: Restart Cursor
410
-
411
- After saving the configuration, restart Cursor IDE for the changes to take effect.
412
-
413
- #### Step 4: Verify the Connection
414
-
415
- 1. Open Cursor's MCP panel (usually in settings or via command palette)
416
- 2. You should see "pomera" listed as an available server
417
- 3. The 33 Pomera tools will be available to the AI assistant
418
-
419
- #### Using Pomera Tools in Cursor
420
-
421
- Once configured, you can ask Cursor's AI to use Pomera tools:
422
-
423
- ```
424
- "Use pomera_case_transform to convert this text to title case"
425
- "Hash this text using pomera_hash with SHA256"
426
- "Extract all URLs from this document using pomera_extract_urls"
427
- "Save this as a note using pomera_notes_save"
428
- ```
429
-
430
- ### Setting Up Pomera MCP Server with Visual Studio Code
431
-
432
- VS Code requires the [MCP extension](https://marketplace.visualstudio.com/items?itemName=anthropics.claude-mcp) or a compatible AI extension that supports MCP.
433
-
434
- #### Step 1: Install MCP Extension
435
-
436
- 1. Open VS Code
437
- 2. Go to Extensions (`Ctrl+Shift+X`)
438
- 3. Search for "MCP" or "Claude MCP"
439
- 4. Install the official MCP extension
440
-
441
- #### Step 2: Configure the MCP Server
442
-
443
- **Option A: Using VS Code Settings (settings.json)**
444
-
445
- Open your VS Code settings (`Ctrl+,` → Open Settings JSON) and add:
446
-
447
- ```json
448
- {
449
- "mcp.servers": {
450
- "pomera": {
451
- "command": "python",
452
- "args": ["C:/path/to/Pomera-AI-Commander/pomera.py", "--mcp-server"]
453
- }
454
- }
455
- }
456
- ```
457
-
458
- **Option B: Using Workspace Configuration**
459
-
460
- Create a `.vscode/mcp.json` file in your workspace:
461
-
462
- ```json
463
- {
464
- "servers": {
465
- "pomera": {
466
- "command": "python",
467
- "args": ["${workspaceFolder}/../Pomera-AI-Commander/pomera.py", "--mcp-server"]
468
- }
469
- }
470
- }
471
- ```
472
-
473
- #### Step 3: Reload VS Code
474
-
475
- Use `Ctrl+Shift+P` → "Developer: Reload Window" to apply the configuration.
476
-
477
- ### Setting Up with Claude Desktop
478
-
479
- Claude Desktop also supports MCP servers. Add Pomera to your Claude configuration:
480
-
481
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
482
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
483
-
484
- ```json
485
- {
486
- "mcpServers": {
487
- "pomera": {
488
- "command": "python",
489
- "args": ["C:/path/to/Pomera-AI-Commander/pomera.py", "--mcp-server"]
490
- }
491
- }
492
- }
493
- ```
494
-
495
- ### Troubleshooting MCP Integration
496
-
497
- #### Server Not Starting
498
-
499
- 1. **Check the path**: Ensure the path to `pomera.py` or the executable is correct
500
- 2. **Check Python**: Make sure Python is in your system PATH
501
- 3. **Test manually**: Run `python pomera.py --mcp-server` in terminal to see errors
502
-
503
- #### Tools Not Appearing
504
-
505
- 1. **Restart the IDE**: Sometimes a full restart is needed
506
- 2. **Check logs**: Look for MCP-related errors in the IDE's developer console
507
- 3. **Verify JSON syntax**: Ensure your configuration file has valid JSON
508
-
509
- #### Permission Issues (Linux/macOS)
510
-
511
- ```bash
512
- # Make the executable runnable
513
- chmod +x /path/to/pomera
514
-
515
- # If using Python, ensure it's accessible
516
- which python
517
- ```
518
-
519
- #### Common Error Messages
520
-
521
- | Error | Solution |
522
- |-------|----------|
523
- | "Command not found" | Check the command path, ensure Python/executable is in PATH |
524
- | "Connection refused" | Server crashed on startup, check logs |
525
- | "Invalid JSON" | Fix syntax errors in your mcp.json file |
526
- | "Permission denied" | Add execute permissions to the file |
527
-
528
- ### MCP Server Logs
529
-
530
- To debug issues, you can check the MCP server logs:
531
-
532
- ```bash
533
- # Run with verbose output
534
- python pomera.py --mcp-server 2>&1 | tee mcp_debug.log
535
- ```
536
-
537
- The server logs are also written to `mcp_filesystem.log` in the Pomera directory.
538
-
539
- ## 🏗️ Architecture
540
-
541
- ### Core Components
542
- - **Main Application** (`pomera.py`) - Primary GUI and application logic
543
- - **Text Processors** - Specialized modules for different text operations
544
- - **Performance System** - Monitoring, caching, and optimization components
545
- - **AI Integration** - AI tools and provider interfaces
546
-
547
- ### Performance Optimizations
548
- - **Lazy Loading** - Modules loaded only when needed
549
- - **Intelligent Caching** - Smart caching for frequently used operations
550
- - **Async Processing** - Non-blocking operations for large files
551
- - **Memory Efficiency** - Optimized memory usage patterns
552
-
553
- ## 🧪 Testing
554
-
555
- For quick testing setup and procedures, see the [**Testing Quick Start Guide**](docs/TESTING_QUICK_START.md).
556
-
557
- ### Test Coverage
558
- - **Functionality Tests** - Core feature validation
559
- - **Performance Tests** - Startup time and memory usage
560
- - **Integration Tests** - AI tools and external service integration
561
- - **Regression Tests** - Ensure optimizations don't break functionality
562
-
563
- ## 📊 Performance
564
-
565
- ### Benchmarks
566
- - **Startup Time** - Optimized to ~0.47 seconds
567
- - **Memory Usage** - Efficient memory management with lazy loading
568
- - **Processing Speed** - Async processing for large files
569
- - **Responsiveness** - Non-blocking UI operations
570
-
571
- ### Optimization Features
572
- - **Smart Caching** - Intelligent result caching
573
- - **Lazy Loading** - Modules loaded on-demand
574
- - **Memory Pools** - Efficient memory allocation
575
- - **Background Processing** - Non-blocking operations
576
-
577
- ## 🤝 Contributing
578
-
579
- ### Development Setup
580
- 1. Fork the repository
581
- 2. Create a feature branch
582
- 3. Make your changes
583
- 4. Run the validation framework
584
- 5. Submit a pull request
585
-
586
- ### Code Style
587
- - Follow PEP 8 guidelines
588
- - Use type hints where appropriate
589
- - Include docstrings for functions and classes
590
- - Maintain test coverage for new features
591
-
592
- ### Performance Considerations
593
- - Profile performance impact of changes
594
- - Use lazy loading for optional features
595
- - Implement proper error handling
596
- - Consider memory usage implications
597
-
598
- ### Release Process (Maintainers)
599
-
600
- #### Creating a Release
601
- 1. **Prepare the release**:
602
- - Ensure all changes are merged to main branch
603
- - Update version numbers if needed
604
- - Test the application thoroughly
605
-
606
- 2. **Create and push a version tag**:
607
- ```bash
608
- git tag v1.0.0
609
- git push origin v1.0.0
610
- ```
611
-
612
- 3. **Automated build process**:
613
- - GitHub Actions automatically builds executables for all platforms
614
- - Creates GitHub release with generated release notes
615
- - Uploads executables and checksums
616
-
617
- 4. **Post-release verification**:
618
- - Download and test executables from the release page
619
- - Verify checksums match
620
- - Update documentation if needed
621
-
622
- #### Version Numbering
623
- - Use semantic versioning: `v1.0.0`, `v1.2.3`, `v2.0.0`
624
- - Pre-releases: `v1.0.0-beta.1`, `v2.0.0-rc.1`
625
- - Tags must start with `v` to trigger the release workflow
626
-
627
- #### Release Testing
628
- - See [**Release Testing Guide**](docs/RELEASE_TESTING.md) for comprehensive testing procedures
629
- - See [**Release Process Guide**](docs/RELEASE_PROCESS.md) for detailed release procedures
630
- - See [**Testing Quick Start Guide**](docs/TESTING_QUICK_START.md) for rapid testing setup
631
- - Test on multiple platforms before tagging
632
- - Verify all core functionality works in built executables
633
-
634
- ## 📝 License
635
-
636
- This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
637
-
638
- ## 🙏 Acknowledgments
639
-
640
- - Built with Python and Tkinter
641
- - AI integration powered by various AI service providers
642
- - Performance optimizations inspired by modern software engineering practices
643
- - Community feedback and contributions
644
-
645
- ## 📞 Support
646
-
647
- ### Documentation
648
- - **[Tools Documentation](docs/TOOLS_DOCUMENTATION.md)** - Comprehensive tool reference
649
- - **[Troubleshooting Guide](docs/TROUBLESHOOTING.md)** - Solutions for common issues
650
- - **[Release Testing Guide](docs/RELEASE_TESTING.md)** - Testing procedures
651
- - **[Release Process Guide](docs/RELEASE_PROCESS.md)** - Detailed release procedures
652
- - **[Testing Quick Start Guide](docs/TESTING_QUICK_START.md)** - Rapid testing setup
653
- - Check the built-in help system
654
- - Review the performance dashboard for optimization tips
655
-
656
- ### Issues and Bug Reports
657
- - **Search existing issues** first: [GitHub Issues](https://github.com/matbanik/Pomera-AI-Commander/issues)
658
- - **Report bugs** with detailed information:
659
- - Operating system and version
660
- - Exact error messages
661
- - Steps to reproduce the issue
662
- - Expected vs actual behavior
663
-
664
- ### Feature Requests
665
- - Submit feature requests via [GitHub Issues](https://github.com/matbanik/Pomera-AI-Commander/issues)
666
- - Use the "Feature Request" template
667
- - Describe the use case and expected behavior
668
- - Consider performance and compatibility implications
669
-
670
- ### Getting Help
671
- 1. **Check the troubleshooting guide** for common solutions
672
- 2. **Search existing issues** to see if your problem is known
673
- 3. **Create a detailed issue** if you can't find a solution
674
- 4. **Join discussions** for general questions and community support
675
-
676
- ---
677
-
678
- **Pomera AI Commander** - Empowering text processing with AI, performance optimization, and MCP server integration.
679
-
680
- *Last updated: December 2025*
1
+ # Pomera AI Commander (PAC)
2
+ [![Download Latest Release](https://img.shields.io/badge/Download-Latest%20Release-blue?style=for-the-badge&logo=github)](https://github.com/matbanik/Pomera-AI-Commander/releases)
3
+
4
+ A desktop text "workbench" + MCP server: clean, transform, extract, and analyze text fast—manually in a GUI or programmatically from AI assistants (Cursor / Claude Desktop / MCP clients).
5
+
6
+ > Hook: Stop pasting text into 10 random websites. Pomera gives you one place (GUI + MCP) to do the 90% text ops you repeat every week.
7
+
8
+ [Download latest release](https://github.com/matbanik/Pomera-AI-Commander/releases) · Docs: [Tools](docs/TOOLS_DOCUMENTATION.md) · [MCP Guide](docs/MCP_SERVER_GUIDE.md) · [Troubleshooting](docs/TROUBLESHOOTING.md)
9
+
10
+ ---
11
+
12
+ ## 60-second demo (what to expect)
13
+ ![Messy text → clean output → extracted URLs/emails → ready to ship](PAC.gif)
14
+
15
+ **Best-for workflows**
16
+ - Cleaning pasted logs / PDFs (whitespace, wrapping, stats)
17
+ - Extracting emails/URLs/IDs via regex
18
+ - Normalizing case, sorting, columns
19
+ - Hashing/encoding utilities
20
+ - Letting Cursor/Claude call these as MCP tools in a repeatable pipeline
21
+
22
+ ---
23
+
24
+ ## Prerequisites
25
+
26
+ **Python 3.8+** is required for all installation methods.
27
+
28
+ ### macOS (Homebrew)
29
+ ```bash
30
+ # Tkinter support (replace @3.14 with your Python version)
31
+ brew install python-tk@3.14
32
+ pip3 install requests reportlab python-docx
33
+ ```
34
+
35
+ ### Ubuntu/Debian
36
+ ```bash
37
+ sudo apt-get install python3-tk
38
+ pip3 install requests reportlab python-docx
39
+ ```
40
+
41
+ ### Windows
42
+ Tkinter is included with Python from [python.org](https://python.org).
43
+ ```cmd
44
+ pip install requests reportlab python-docx
45
+ ```
46
+
47
+ > **Note:** For PEP 668 protected environments, use `pip3 install --user` or a virtual environment.
48
+
49
+ ---
50
+
51
+ ## Install / Run
52
+ ### Option A — Prebuilt executable (recommended)
53
+ [Download from Releases](https://github.com/matbanik/Pomera-AI-Commander/releases) and run.
54
+
55
+ ### Option B Python (PyPI)
56
+ ```bash
57
+ pip install pomera-ai-commander
58
+ # then run:
59
+ pomera-ai-commander --help
60
+ ```
61
+
62
+ ### Option C Node.js (npm)
63
+ ```bash
64
+ npm install -g pomera-ai-commander
65
+ # then run:
66
+ pomera-mcp --help
67
+ ```
68
+
69
+ ---
70
+
71
+ ## MCP Server for AI Assistants
72
+
73
+ Pomera exposes 22 text processing tools via MCP. Configure your AI assistant:
74
+
75
+ **Cursor** (`.cursor/mcp.json`):
76
+ ```json
77
+ {
78
+ "mcpServers": {
79
+ "pomera": {
80
+ "command": "pomera-ai-commander",
81
+ "args": ["--mcp-server"]
82
+ }
83
+ }
84
+ }
85
+ ```
86
+
87
+ **Claude Desktop** (`claude_desktop_config.json`):
88
+ ```json
89
+ {
90
+ "mcpServers": {
91
+ "pomera": {
92
+ "command": "pomera-ai-commander",
93
+ "args": ["--mcp-server"]
94
+ }
95
+ }
96
+ }
97
+ ```
98
+
99
+ See the full [MCP Server Guide](docs/MCP_SERVER_GUIDE.md) for Antigravity, executable configs, and troubleshooting.
100
+
101
+ ---
102
+
103
+ ## License
104
+
105
+ MIT License - see [LICENSE](LICENSE) for details.