appclean 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/.github/workflows/publish.yml +41 -0
  2. package/.github/workflows/test.yml +37 -0
  3. package/ACTION_CHECKLIST.md +342 -0
  4. package/APPCLEAN_SUMMARY.md +309 -0
  5. package/CHANGELOG.md +205 -0
  6. package/CODE_OF_CONDUCT.md +49 -0
  7. package/CODE_REVIEW_REPORT.md +447 -0
  8. package/COMMUNITY_POSTS.md +307 -0
  9. package/CONTRIBUTING.md +121 -0
  10. package/DEPLOYMENT_GUIDE.md +345 -0
  11. package/DEPLOYMENT_STATUS.md +182 -0
  12. package/EXECUTIVE_REPORT.md +393 -0
  13. package/GITHUB_OPTIMIZATION.md +383 -0
  14. package/INDEX.md +165 -0
  15. package/LICENSE +21 -0
  16. package/MARKETING_SUMMARY.md +352 -0
  17. package/NPM_PACKAGE_OPTIMIZATION.md +281 -0
  18. package/NPM_PUBLISH.md +116 -0
  19. package/PROJECT_SUMMARY.txt +249 -0
  20. package/QUICKSTART.md +219 -0
  21. package/README.md +548 -0
  22. package/SECURITY.md +104 -0
  23. package/SETUP_GITHUB.md +237 -0
  24. package/TESTING_SUMMARY.md +379 -0
  25. package/dist/core/appUpdateChecker.d.ts +23 -0
  26. package/dist/core/appUpdateChecker.d.ts.map +1 -0
  27. package/dist/core/appUpdateChecker.js +159 -0
  28. package/dist/core/appUpdateChecker.js.map +1 -0
  29. package/dist/core/detector.d.ts +13 -0
  30. package/dist/core/detector.d.ts.map +1 -0
  31. package/dist/core/detector.js +99 -0
  32. package/dist/core/detector.js.map +1 -0
  33. package/dist/core/duplicateFileFinder.d.ts +14 -0
  34. package/dist/core/duplicateFileFinder.d.ts.map +1 -0
  35. package/dist/core/duplicateFileFinder.js +80 -0
  36. package/dist/core/duplicateFileFinder.js.map +1 -0
  37. package/dist/core/orphanedDependencyDetector.d.ts +19 -0
  38. package/dist/core/orphanedDependencyDetector.d.ts.map +1 -0
  39. package/dist/core/orphanedDependencyDetector.js +148 -0
  40. package/dist/core/orphanedDependencyDetector.js.map +1 -0
  41. package/dist/core/performanceOptimizer.d.ts +37 -0
  42. package/dist/core/performanceOptimizer.d.ts.map +1 -0
  43. package/dist/core/performanceOptimizer.js +128 -0
  44. package/dist/core/performanceOptimizer.js.map +1 -0
  45. package/dist/core/permissionHandler.d.ts +9 -0
  46. package/dist/core/permissionHandler.d.ts.map +1 -0
  47. package/dist/core/permissionHandler.js +89 -0
  48. package/dist/core/permissionHandler.js.map +1 -0
  49. package/dist/core/pluginSystem.d.ts +39 -0
  50. package/dist/core/pluginSystem.d.ts.map +1 -0
  51. package/dist/core/pluginSystem.js +120 -0
  52. package/dist/core/pluginSystem.js.map +1 -0
  53. package/dist/core/removalRecorder.d.ts +32 -0
  54. package/dist/core/removalRecorder.d.ts.map +1 -0
  55. package/dist/core/removalRecorder.js +79 -0
  56. package/dist/core/removalRecorder.js.map +1 -0
  57. package/dist/core/remover.d.ts +15 -0
  58. package/dist/core/remover.d.ts.map +1 -0
  59. package/dist/core/remover.js +225 -0
  60. package/dist/core/remover.js.map +1 -0
  61. package/dist/core/reportGenerator.d.ts +9 -0
  62. package/dist/core/reportGenerator.d.ts.map +1 -0
  63. package/dist/core/reportGenerator.js +328 -0
  64. package/dist/core/reportGenerator.js.map +1 -0
  65. package/dist/core/scheduledCleanup.d.ts +38 -0
  66. package/dist/core/scheduledCleanup.d.ts.map +1 -0
  67. package/dist/core/scheduledCleanup.js +127 -0
  68. package/dist/core/scheduledCleanup.js.map +1 -0
  69. package/dist/core/serviceFileDetector.d.ts +18 -0
  70. package/dist/core/serviceFileDetector.d.ts.map +1 -0
  71. package/dist/core/serviceFileDetector.js +136 -0
  72. package/dist/core/serviceFileDetector.js.map +1 -0
  73. package/dist/core/verificationModule.d.ts +14 -0
  74. package/dist/core/verificationModule.d.ts.map +1 -0
  75. package/dist/core/verificationModule.js +102 -0
  76. package/dist/core/verificationModule.js.map +1 -0
  77. package/dist/index.d.ts +3 -0
  78. package/dist/index.d.ts.map +1 -0
  79. package/dist/index.js +333 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/managers/brewManager.d.ts +10 -0
  82. package/dist/managers/brewManager.d.ts.map +1 -0
  83. package/dist/managers/brewManager.js +130 -0
  84. package/dist/managers/brewManager.js.map +1 -0
  85. package/dist/managers/customManager.d.ts +8 -0
  86. package/dist/managers/customManager.d.ts.map +1 -0
  87. package/dist/managers/customManager.js +139 -0
  88. package/dist/managers/customManager.js.map +1 -0
  89. package/dist/managers/linuxManager.d.ts +10 -0
  90. package/dist/managers/linuxManager.d.ts.map +1 -0
  91. package/dist/managers/linuxManager.js +191 -0
  92. package/dist/managers/linuxManager.js.map +1 -0
  93. package/dist/managers/npmManager.d.ts +10 -0
  94. package/dist/managers/npmManager.d.ts.map +1 -0
  95. package/dist/managers/npmManager.js +119 -0
  96. package/dist/managers/npmManager.js.map +1 -0
  97. package/dist/types/index.d.ts +44 -0
  98. package/dist/types/index.d.ts.map +1 -0
  99. package/dist/types/index.js +3 -0
  100. package/dist/types/index.js.map +1 -0
  101. package/dist/ui/guiServer.d.ts +10 -0
  102. package/dist/ui/guiServer.d.ts.map +1 -0
  103. package/dist/ui/guiServer.js +134 -0
  104. package/dist/ui/guiServer.js.map +1 -0
  105. package/dist/ui/menu.d.ts +6 -0
  106. package/dist/ui/menu.d.ts.map +1 -0
  107. package/dist/ui/menu.js +93 -0
  108. package/dist/ui/menu.js.map +1 -0
  109. package/dist/ui/prompts.d.ts +13 -0
  110. package/dist/ui/prompts.d.ts.map +1 -0
  111. package/dist/ui/prompts.js +161 -0
  112. package/dist/ui/prompts.js.map +1 -0
  113. package/dist/utils/filesystem.d.ts +13 -0
  114. package/dist/utils/filesystem.d.ts.map +1 -0
  115. package/dist/utils/filesystem.js +152 -0
  116. package/dist/utils/filesystem.js.map +1 -0
  117. package/dist/utils/logger.d.ts +12 -0
  118. package/dist/utils/logger.d.ts.map +1 -0
  119. package/dist/utils/logger.js +49 -0
  120. package/dist/utils/logger.js.map +1 -0
  121. package/dist/utils/platform.d.ts +9 -0
  122. package/dist/utils/platform.d.ts.map +1 -0
  123. package/dist/utils/platform.js +75 -0
  124. package/dist/utils/platform.js.map +1 -0
  125. package/jest.config.js +20 -0
  126. package/logo.svg +60 -0
  127. package/package.json +55 -0
  128. package/setup-github.sh +125 -0
  129. package/src/core/appUpdateChecker.ts +220 -0
  130. package/src/core/detector.ts +133 -0
  131. package/src/core/duplicateFileFinder.ts +113 -0
  132. package/src/core/orphanedDependencyDetector.ts +195 -0
  133. package/src/core/performanceOptimizer.ts +209 -0
  134. package/src/core/permissionHandler.ts +121 -0
  135. package/src/core/pluginSystem.ts +194 -0
  136. package/src/core/removalRecorder.ts +146 -0
  137. package/src/core/remover.ts +280 -0
  138. package/src/core/reportGenerator.ts +354 -0
  139. package/src/core/scheduledCleanup.ts +204 -0
  140. package/src/core/serviceFileDetector.ts +181 -0
  141. package/src/core/verificationModule.ts +140 -0
  142. package/src/index.ts +449 -0
  143. package/src/managers/brewManager.ts +149 -0
  144. package/src/managers/customManager.ts +167 -0
  145. package/src/managers/linuxManager.ts +210 -0
  146. package/src/managers/npmManager.ts +137 -0
  147. package/src/types/index.ts +59 -0
  148. package/src/ui/guiServer.ts +155 -0
  149. package/src/ui/menu.ts +100 -0
  150. package/src/ui/prompts.ts +177 -0
  151. package/src/utils/filesystem.ts +145 -0
  152. package/src/utils/logger.ts +48 -0
  153. package/src/utils/platform.ts +75 -0
  154. package/tsconfig.json +20 -0
@@ -0,0 +1,307 @@
1
+ # Community Posts & Marketing
2
+
3
+ ## Show HN Submission
4
+
5
+ **Title:** Show HN: AppClean – Intelligently remove apps with all their artifacts (npm, brew, apt, etc.)
6
+
7
+ **Description:**
8
+
9
+ I built AppClean because uninstalling apps properly is surprisingly hard. When you remove an app, files get left behind everywhere:
10
+
11
+ - Config files in ~/.config or ~/Library
12
+ - Caches that take gigabytes
13
+ - Service files that keep running
14
+ - Dependencies scattered across your system
15
+
16
+ AppClean solves this by:
17
+
18
+ 1. **Finding all artifacts** — It knows where npm, Homebrew, apt, and custom installers leave files
19
+ 2. **Removing everything** — Not just the binary, but configs, caches, logs, even service files
20
+ 3. **Staying safe** — Dry-run preview, backups, and post-removal verification
21
+ 4. **Cross-platform** — Works on macOS, Linux, and Windows
22
+
23
+ **Current features:**
24
+ - Detects apps from 8+ package managers
25
+ - Deep file scanning for configs, caches, logs
26
+ - Service file detection (LaunchAgent, systemd)
27
+ - One-command uninstall: `appclean remove app-name`
28
+ - 8 versions with advanced features (duplicate finder, plugin system, scheduled cleanup, etc.)
29
+
30
+ **Real example:**
31
+ ```bash
32
+ $ appclean remove webpack
33
+ 📊 Found 47 artifacts to remove
34
+ ✓ Freed 237.5 MB
35
+ ✓ Complete removal verified
36
+ ```
37
+
38
+ Looking for feedback and would love to hear about missing features or broken detection for specific apps!
39
+
40
+ **GitHub:** https://github.com/praveenkay/AppClean
41
+ **npm:** `npm install -g appclean`
42
+
43
+ ---
44
+
45
+ ## Reddit r/commandline Post
46
+
47
+ **Title:** Show your CLIs - AppClean: Intelligently uninstall apps and clean all artifacts
48
+
49
+ **Description:**
50
+
51
+ Tired of uninstalling apps only to discover they left behind gigabytes of config files, caches, and service files?
52
+
53
+ I built **AppClean** to solve the frustration of incomplete app removal across npm, Homebrew, apt, and custom installers.
54
+
55
+ ### The Problem
56
+ - `npm uninstall -g webpack` leaves behind ~/.config/webpack, ~/.cache/webpack, and service files
57
+ - `brew uninstall package` leaves behind LaunchAgents and preference files
58
+ - `apt remove package` misses config in ~/.local and systemd service files
59
+ - No built-in way to verify an app is actually gone
60
+
61
+ ### The Solution
62
+ ```bash
63
+ appclean remove webpack
64
+ # Finds 47 artifacts
65
+ # Creates backup
66
+ # Removes everything
67
+ # Verifies removal
68
+ ```
69
+
70
+ ### What It Does
71
+ - 🔍 Scans 8+ package managers (npm, yarn, pnpm, brew, apt, yum, dnf, custom)
72
+ - 📊 Finds configs, caches, logs, data, service files
73
+ - 🛡️ Safe: dry-run preview, backups, verification
74
+ - ✓ Post-removal verification via filesystem and commands
75
+ - 📄 Professional removal reports with legal disclaimers
76
+
77
+ ### Latest Features
78
+ - v1.2.0: GUI application
79
+ - v1.3.0: Duplicate file finder
80
+ - v1.4.0: Orphaned dependency detector
81
+ - v1.5.0: Plugin system for custom apps
82
+ - v1.6.0: Scheduled cleanup automation
83
+ - v1.7.0: App update checker
84
+ - v1.8.0: Performance optimizer for large systems
85
+
86
+ **Install:** `npm install -g appclean`
87
+ **Repo:** https://github.com/praveenkay/AppClean
88
+
89
+ Would love feedback on what package managers or edge cases I'm missing!
90
+
91
+ ---
92
+
93
+ ## Reddit r/linux Post
94
+
95
+ **Title:** AppClean - Finally, a proper way to uninstall packages and clean all their artifacts
96
+
97
+ **Description:**
98
+
99
+ Linux package managers are great, but they're designed for *system* stability, not *disk* cleanliness.
100
+
101
+ When you `apt remove` or `dnf remove` a package, you're left with:
102
+ - Orphaned config files in ~/.config
103
+ - Cache directories that never get touched again
104
+ - Systemd service files
105
+ - Leftover data directories
106
+
107
+ I built **AppClean** to fix this. It's like `apt autoremove` but actually useful:
108
+
109
+ ### Problem Statement
110
+ Your `apt remove package` removed the binary. But did it remove:
111
+ - ~/.config/package/ ✗
112
+ - ~/.cache/package/ ✗
113
+ - ~/.local/share/package/ ✗
114
+ - /etc/systemd/user/package.service ✗
115
+
116
+ AppClean finds and removes all of these automatically.
117
+
118
+ ### How It Works
119
+ ```bash
120
+ $ appclean remove node
121
+ ℹ Found 23 artifacts
122
+ ℹ Detected systemd service file requiring manual cleanup
123
+ ? Remove node and all its files? (y/N) y
124
+ ✓ Successfully removed node (freed 412 MB)
125
+ ```
126
+
127
+ ### Features
128
+ - 🔍 Detects apt, yum, dnf packages (plus npm, brew, and custom installs)
129
+ - 📋 Shows configs, caches, logs, data files before removal
130
+ - 🛡️ Dry-run preview and backups
131
+ - ✓ Verifies complete removal
132
+ - 📊 Orphaned dependency detection
133
+ - ⏰ Scheduled cleanup automation
134
+ - 🚀 Performance optimized for large systems
135
+
136
+ **Install:** `npm install -g appclean`
137
+ **Repo:** https://github.com/praveenkay/AppClean
138
+
139
+ ---
140
+
141
+ ## Reddit r/node Post
142
+
143
+ **Title:** AppClean - Remove global npm packages properly (including all artifacts)
144
+
145
+ **Description:**
146
+
147
+ Ever installed a global npm package and forgotten about it? Then one day you need disk space and realize you have gigabytes of cached dependencies and config files from packages you removed years ago?
148
+
149
+ I built **AppClean** to fix this.
150
+
151
+ ### The Real Problem
152
+ ```bash
153
+ $ npm uninstall -g webpack
154
+ removed 1 package
155
+
156
+ # But still there:
157
+ $ ls ~/.config/webpack/ # Config files
158
+ $ ls ~/.cache/webpack/ # Build cache (1.5 GB!)
159
+ $ ls ~/.local/share/webpack/ # Leftover data
160
+ ```
161
+
162
+ ### The Solution
163
+ ```bash
164
+ $ appclean remove webpack
165
+ 📊 Found 47 artifacts
166
+ 💾 Potential savings: 1.5 GB
167
+ ? Remove webpack? (y/N) y
168
+ ✓ Freed 1.5 GB
169
+ ```
170
+
171
+ ### What It Detects
172
+ - npm packages (global and local)
173
+ - yarn and pnpm packages
174
+ - Configs in ~/.config
175
+ - Caches in ~/.cache
176
+ - Data in ~/.local/share
177
+ - Service files (systemd, LaunchAgent on macOS)
178
+
179
+ ### Features
180
+ - 🔍 Finds all artifacts left by global packages
181
+ - 📊 Shows what will be removed before deletion
182
+ - 🛡️ Creates backups by default
183
+ - ✓ Verifies removal worked
184
+ - 📦 Detects orphaned npm dependencies
185
+ - ⏰ Schedule automatic cleanups
186
+
187
+ **Install:** `npm install -g appclean`
188
+ **Usage:** `appclean remove package-name`
189
+ **Repo:** https://github.com/praveenkay/AppClean
190
+
191
+ ### Why This Matters
192
+ If you regularly install/uninstall global packages, this reclaims gigabytes. If you share systems with others, orphaned packages add up fast.
193
+
194
+ Would love feedback on npm-specific edge cases or missing detection!
195
+
196
+ ---
197
+
198
+ ## Reddit r/opensource Post
199
+
200
+ **Title:** AppClean - Open source app uninstaller supporting npm, brew, apt, and more
201
+
202
+ **Description:**
203
+
204
+ I've been building **AppClean** – an open source tool to intelligently remove applications with all their artifacts across multiple operating systems and package managers.
205
+
206
+ ### The Problem
207
+ Every package manager (npm, Homebrew, apt, yum, dnf) leaves behind files in different locations:
208
+ - Configuration files
209
+ - Caches (sometimes gigabytes)
210
+ - Service files that keep running
211
+ - Data directories
212
+ - Logs
213
+
214
+ There's no built-in way to clean these up completely.
215
+
216
+ ### The Solution
217
+ One command removes everything:
218
+ ```bash
219
+ npm install -g appclean
220
+ appclean remove webpack # Removes app + all artifacts
221
+ ```
222
+
223
+ ### Current Status
224
+ - **v1.8.0** released with 8 versions of features
225
+ - 13 GitHub topics for discoverability
226
+ - Cross-platform: macOS, Linux, Windows
227
+ - Multiple package manager support: npm, yarn, pnpm, brew, apt, yum, dnf
228
+ - Advanced features: GUI, duplicate finder, orphaned detector, plugin system, scheduling, update checker, performance optimizer
229
+
230
+ ### Open Source Stack
231
+ - TypeScript + Node.js
232
+ - Commander.js for CLI
233
+ - Inquirer.js for interactive menus
234
+ - MIT Licensed
235
+ - Active development
236
+
237
+ ### Looking For
238
+ - Users and feedback
239
+ - Contributions (especially Windows testing)
240
+ - Plugin developers
241
+ - Ideas for next features
242
+
243
+ **Repo:** https://github.com/praveenkay/AppClean
244
+ **npm:** `npm install -g appclean`
245
+ **License:** MIT
246
+
247
+ ---
248
+
249
+ ## Twitter/X One-Liner
250
+
251
+ 🧹 Tired of bloated systems? Try AppClean – removes apps + all their artifacts (configs, caches, service files) in one command.
252
+
253
+ npm install -g appclean
254
+ appclean remove webpack # Frees gigabytes, not just the binary
255
+
256
+ Works on macOS, Linux, Windows. Supports npm, brew, apt, and more.
257
+
258
+ https://github.com/praveenkay/AppClean
259
+
260
+ #devtools #cli #opensource
261
+
262
+ ---
263
+
264
+ ## Dev.to Blog Post Template
265
+
266
+ **Title:** AppClean: The App Uninstaller Your System Deserves
267
+
268
+ **Introduction:**
269
+
270
+ We've all been there. You uninstall an app, but somehow your disk is still full. That's because uninstalling is broken. Package managers remove the binary but leave behind:
271
+
272
+ - Configuration files
273
+ - Cache directories (sometimes gigabytes)
274
+ - Service files that keep running
275
+ - Data directories
276
+ - Log files
277
+
278
+ I built AppClean to fix this properly.
279
+
280
+ **The Problem Section:**
281
+ [Explain the frustration of incomplete uninstalls]
282
+
283
+ **The Solution Section:**
284
+ [Show how AppClean solves it]
285
+
286
+ **Features Section:**
287
+ [Highlight the 8 versions and features]
288
+
289
+ **Getting Started Section:**
290
+ [Installation and usage examples]
291
+
292
+ **Conclusion:**
293
+ [Call to action: GitHub, npm, feedback]
294
+
295
+ ---
296
+
297
+ ## HackerNews Comment Strategy
298
+
299
+ When AppClean gets mentioned in threads about package managers, disk cleanup, or system maintenance:
300
+
301
+ - Lead with the problem, not features
302
+ - Show before/after disk space
303
+ - Mention cross-platform support
304
+ - Link to GitHub (not npm directly)
305
+ - Ask for feedback on missing detectors
306
+
307
+ **Example:** "This reminds me of a problem I ran into – package managers leave behind gigabytes of artifacts. I built AppClean to fix this. npm install -g appclean, then appclean remove package-name to clean everything. Supports npm, brew, apt, and more. Feedback welcome: https://github.com/praveenkay/AppClean"
@@ -0,0 +1,121 @@
1
+ # Contributing to AppClean
2
+
3
+ First off, thanks for taking the time to contribute! 🎉
4
+
5
+ AppClean is an open source project and we love receiving contributions from our community. Whether it's a bug report, feature request, or code contribution, your help makes AppClean better.
6
+
7
+ ## Code of Conduct
8
+
9
+ This project and everyone participating in it is governed by our [Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code.
10
+
11
+ ## How Can I Contribute?
12
+
13
+ ### 🐛 Reporting Bugs
14
+
15
+ Before creating bug reports, please check the issue list as you might find out that you don't need to create one. When you are creating a bug report, please include as many details as possible:
16
+
17
+ - **Use a clear and descriptive title**
18
+ - **Describe the exact steps which reproduce the problem**
19
+ - **Provide specific examples to demonstrate the steps**
20
+ - **Describe the behavior you observed after following the steps**
21
+ - **Explain which behavior you expected to see instead and why**
22
+ - **Include screenshots if possible**
23
+ - **Your environment:**
24
+ - Operating System and version
25
+ - Node.js version
26
+ - npm/yarn/pnpm version
27
+ - AppClean version
28
+
29
+ ### 💡 Suggesting Enhancements
30
+
31
+ When creating enhancement suggestions, please include:
32
+
33
+ - **Use a clear and descriptive title**
34
+ - **Provide a step-by-step description of the suggested enhancement**
35
+ - **Provide specific examples to demonstrate the steps**
36
+ - **Describe the current behavior and expected behavior**
37
+ - **Explain why this enhancement would be useful**
38
+
39
+ ### 📝 Code Contribution
40
+
41
+ **Did you write a patch that fixes a bug?**
42
+
43
+ - Open a new GitHub pull request with the patch.
44
+ - Ensure the PR description clearly describes the problem and solution.
45
+ - Include the relevant issue number if applicable.
46
+
47
+ **Do you intend to add a new feature or change an existing one?**
48
+
49
+ - Start by opening an issue first to discuss it with maintainers.
50
+ - Don't start coding until you get positive feedback.
51
+
52
+ **Do you have questions about the source code?**
53
+
54
+ - Ask in GitHub Discussions or open an issue with your question.
55
+
56
+ ## Getting Started with Development
57
+
58
+ ### Prerequisites
59
+
60
+ - Node.js 16 or higher
61
+ - npm 7 or higher
62
+ - Git
63
+
64
+ ### Setup Development Environment
65
+
66
+ \`\`\`bash
67
+ # Clone the repository
68
+ git clone https://github.com/praveenkay/AppClean.git
69
+ cd AppClean
70
+
71
+ # Install dependencies
72
+ npm install
73
+
74
+ # Build TypeScript
75
+ npm run build
76
+
77
+ # Run in development mode
78
+ npm run dev
79
+
80
+ # Run tests
81
+ npm test
82
+ \`\`\`
83
+
84
+ ### Development Workflow
85
+
86
+ 1. **Create a feature branch:**
87
+ \`\`\`bash
88
+ git checkout -b feature/amazing-feature
89
+ \`\`\`
90
+
91
+ 2. **Make your changes and test:**
92
+ \`\`\`bash
93
+ npm run build
94
+ npm test
95
+ \`\`\`
96
+
97
+ 3. **Commit with conventional commits:**
98
+ \`\`\`bash
99
+ git commit -m "feat: add amazing feature"
100
+ \`\`\`
101
+
102
+ 4. **Push and open a Pull Request**
103
+
104
+ ## Conventional Commits
105
+
106
+ Use clear commit messages:
107
+
108
+ - `feat:` for new features
109
+ - `fix:` for bug fixes
110
+ - `docs:` for documentation
111
+ - `refactor:` for code refactoring
112
+ - `test:` for test changes
113
+ - `perf:` for performance improvements
114
+
115
+ ## License
116
+
117
+ By contributing, you agree that your contributions will be licensed under the MIT License.
118
+
119
+ ---
120
+
121
+ **Happy contributing! 🚀**