fixos 2.2.37__tar.gz → 2.2.39__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 (177) hide show
  1. {fixos-2.2.37 → fixos-2.2.39}/CHANGELOG.md +70 -0
  2. {fixos-2.2.37 → fixos-2.2.39}/PKG-INFO +118 -9
  3. {fixos-2.2.37 → fixos-2.2.39}/README.md +118 -9
  4. {fixos-2.2.37 → fixos-2.2.39}/fixos/__init__.py +1 -1
  5. {fixos-2.2.37 → fixos-2.2.39}/fixos/agent/session_handlers.py +16 -8
  6. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/cleanup_cmd.py +78 -24
  7. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/fix_cmd.py +21 -5
  8. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/main.py +30 -3
  9. fixos-2.2.39/fixos/cli/projects_cmd.py +346 -0
  10. fixos-2.2.39/fixos/cli/quick_cmd.py +226 -0
  11. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli.py +3 -0
  12. {fixos-2.2.37 → fixos-2.2.39}/fixos/config.py +12 -1
  13. {fixos-2.2.37 → fixos-2.2.39}/fixos/constants.py +6 -0
  14. fixos-2.2.39/fixos/diagnostics/__init__.py +4 -0
  15. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/checks/resources.py +8 -6
  16. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/checks/security.py +3 -1
  17. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/dev_project_analyzer.py +44 -29
  18. fixos-2.2.39/fixos/diagnostics/project_scanner.py +258 -0
  19. fixos-2.2.39/fixos/diagnostics/quick_snapshot.py +823 -0
  20. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/service_cleanup.py +76 -13
  21. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/service_scanner.py +145 -22
  22. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/system_checks.py +40 -8
  23. {fixos-2.2.37 → fixos-2.2.39}/fixos/providers/llm.py +95 -12
  24. {fixos-2.2.37 → fixos-2.2.39}/fixos/watch.py +32 -1
  25. {fixos-2.2.37 → fixos-2.2.39}/fixos.egg-info/PKG-INFO +118 -9
  26. {fixos-2.2.37 → fixos-2.2.39}/fixos.egg-info/SOURCES.txt +14 -1
  27. {fixos-2.2.37 → fixos-2.2.39}/fixos.egg-info/top_level.txt +1 -0
  28. {fixos-2.2.37 → fixos-2.2.39}/pyproject.toml +1 -1
  29. {fixos-2.2.37 → fixos-2.2.39}/setup.py +1 -1
  30. fixos-2.2.39/tests/unit/test_dev_project_analyzer.py +56 -0
  31. fixos-2.2.39/tests/unit/test_llm_provider.py +144 -0
  32. fixos-2.2.39/tests/unit/test_project_scanner.py +273 -0
  33. fixos-2.2.39/tests/unit/test_projects_cmd.py +174 -0
  34. fixos-2.2.39/tests/unit/test_quick_cmd.py +87 -0
  35. fixos-2.2.39/tests/unit/test_quick_snapshot.py +176 -0
  36. fixos-2.2.39/tests/unit/test_resources_quick.py +21 -0
  37. fixos-2.2.39/tests/unit/test_security_quick.py +23 -0
  38. {fixos-2.2.37 → fixos-2.2.39}/tests/unit/test_service_cleanup.py +121 -0
  39. {fixos-2.2.37 → fixos-2.2.39}/tests/unit/test_service_scanner.py +46 -3
  40. fixos-2.2.39/tests/unit/test_system_checks_parallel.py +56 -0
  41. fixos-2.2.37/fixos/diagnostics/__init__.py +0 -3
  42. {fixos-2.2.37 → fixos-2.2.39}/.env.example +0 -0
  43. {fixos-2.2.37 → fixos-2.2.39}/LICENSE +0 -0
  44. {fixos-2.2.37 → fixos-2.2.39}/MANIFEST.in +0 -0
  45. {fixos-2.2.37 → fixos-2.2.39}/docker/README.md +0 -0
  46. {fixos-2.2.37 → fixos-2.2.39}/docker/TEST_RESULTS.md +0 -0
  47. {fixos-2.2.37 → fixos-2.2.39}/docker/TEST_RESULTS_V2.md +0 -0
  48. {fixos-2.2.37 → fixos-2.2.39}/docker/alpine/Dockerfile +0 -0
  49. {fixos-2.2.37 → fixos-2.2.39}/docker/arch/Dockerfile +0 -0
  50. {fixos-2.2.37 → fixos-2.2.39}/docker/base/Dockerfile +0 -0
  51. {fixos-2.2.37 → fixos-2.2.39}/docker/broken-audio/Dockerfile +0 -0
  52. {fixos-2.2.37 → fixos-2.2.39}/docker/broken-full/Dockerfile +0 -0
  53. {fixos-2.2.37 → fixos-2.2.39}/docker/broken-network/Dockerfile +0 -0
  54. {fixos-2.2.37 → fixos-2.2.39}/docker/broken-thumbnails/Dockerfile +0 -0
  55. {fixos-2.2.37 → fixos-2.2.39}/docker/debian/Dockerfile +0 -0
  56. {fixos-2.2.37 → fixos-2.2.39}/docker/docker-compose.multi-system.yml +0 -0
  57. {fixos-2.2.37 → fixos-2.2.39}/docker/docker-compose.yml +0 -0
  58. {fixos-2.2.37 → fixos-2.2.39}/docker/fedora/Dockerfile +0 -0
  59. {fixos-2.2.37 → fixos-2.2.39}/docker/test-multi-system.sh +0 -0
  60. {fixos-2.2.37 → fixos-2.2.39}/docker/test-scenarios.sh +0 -0
  61. {fixos-2.2.37 → fixos-2.2.39}/docker/ubuntu/Dockerfile +0 -0
  62. {fixos-2.2.37 → fixos-2.2.39}/docker/validate-scenario.py +0 -0
  63. {fixos-2.2.37 → fixos-2.2.39}/docs/examples/advanced_usage.py +0 -0
  64. {fixos-2.2.37 → fixos-2.2.39}/docs/examples/quickstart.py +0 -0
  65. {fixos-2.2.37 → fixos-2.2.39}/fixos/agent/__init__.py +0 -0
  66. {fixos-2.2.37 → fixos-2.2.39}/fixos/agent/autonomous.py +0 -0
  67. {fixos-2.2.37 → fixos-2.2.39}/fixos/agent/autonomous_session.py +0 -0
  68. {fixos-2.2.37 → fixos-2.2.39}/fixos/agent/hitl.py +0 -0
  69. {fixos-2.2.37 → fixos-2.2.39}/fixos/agent/hitl_session.py +0 -0
  70. {fixos-2.2.37 → fixos-2.2.39}/fixos/agent/session_core.py +0 -0
  71. {fixos-2.2.37 → fixos-2.2.39}/fixos/agent/session_io.py +0 -0
  72. {fixos-2.2.37 → fixos-2.2.39}/fixos/anonymizer.py +0 -0
  73. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/__init__.py +0 -0
  74. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/_cleanup_flatpak.py +0 -0
  75. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/_cleanup_home.py +0 -0
  76. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/_cleanup_snap.py +0 -0
  77. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/_cleanup_system.py +0 -0
  78. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/_cleanup_utils.py +0 -0
  79. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/ask_cmd.py +0 -0
  80. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/config_cmd.py +0 -0
  81. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/features_cmd.py +0 -0
  82. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/history_cmd.py +0 -0
  83. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/orchestrate_cmd.py +0 -0
  84. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/output_formatter.py +0 -0
  85. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/profile_cmd.py +0 -0
  86. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/provider_cmd.py +0 -0
  87. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/quickfix_cmd.py +0 -0
  88. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/report_cmd.py +0 -0
  89. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/rollback_cmd.py +0 -0
  90. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/scan_cmd.py +0 -0
  91. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/shared.py +0 -0
  92. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/token_cmd.py +0 -0
  93. {fixos-2.2.37 → fixos-2.2.39}/fixos/cli/watch_cmd.py +0 -0
  94. {fixos-2.2.37 → fixos-2.2.39}/fixos/config_interactive.py +0 -0
  95. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/_flatpak_analysis_mixin.py +0 -0
  96. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/_flatpak_execution_mixin.py +0 -0
  97. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/_flatpak_recommendations_mixin.py +0 -0
  98. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/_storage_container_mixin.py +0 -0
  99. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/_storage_system_mixin.py +0 -0
  100. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/_storage_user_mixin.py +0 -0
  101. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/cache_discovery.py +0 -0
  102. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/checks/__init__.py +0 -0
  103. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/checks/_shared.py +0 -0
  104. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/checks/audio.py +0 -0
  105. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/checks/file_analysis.py +0 -0
  106. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/checks/hardware.py +0 -0
  107. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/checks/packages.py +0 -0
  108. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/checks/storage_optimization.py +0 -0
  109. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/checks/system_core.py +0 -0
  110. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/checks/thumbnails.py +0 -0
  111. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/disk_analyzer.py +0 -0
  112. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/flatpak_analyzer.py +0 -0
  113. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/service_details.py +0 -0
  114. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/storage_analyzer.py +0 -0
  115. {fixos-2.2.37 → fixos-2.2.39}/fixos/diagnostics/utils.py +0 -0
  116. {fixos-2.2.37 → fixos-2.2.39}/fixos/features/__init__.py +0 -0
  117. {fixos-2.2.37 → fixos-2.2.39}/fixos/features/auditor.py +0 -0
  118. {fixos-2.2.37 → fixos-2.2.39}/fixos/features/catalog.py +0 -0
  119. {fixos-2.2.37 → fixos-2.2.39}/fixos/features/installer.py +0 -0
  120. {fixos-2.2.37 → fixos-2.2.39}/fixos/features/profiles.py +0 -0
  121. {fixos-2.2.37 → fixos-2.2.39}/fixos/features/renderer.py +0 -0
  122. {fixos-2.2.37 → fixos-2.2.39}/fixos/fixes/__init__.py +0 -0
  123. {fixos-2.2.37 → fixos-2.2.39}/fixos/interactive/__init__.py +0 -0
  124. {fixos-2.2.37 → fixos-2.2.39}/fixos/interactive/cleanup_planner.py +0 -0
  125. {fixos-2.2.37 → fixos-2.2.39}/fixos/llm_shell.py +0 -0
  126. {fixos-2.2.37 → fixos-2.2.39}/fixos/orchestrator/__init__.py +0 -0
  127. {fixos-2.2.37 → fixos-2.2.39}/fixos/orchestrator/executor.py +0 -0
  128. {fixos-2.2.37 → fixos-2.2.39}/fixos/orchestrator/graph.py +0 -0
  129. {fixos-2.2.37 → fixos-2.2.39}/fixos/orchestrator/orchestrator.py +0 -0
  130. {fixos-2.2.37 → fixos-2.2.39}/fixos/orchestrator/rollback.py +0 -0
  131. {fixos-2.2.37 → fixos-2.2.39}/fixos/platform_utils.py +0 -0
  132. {fixos-2.2.37 → fixos-2.2.39}/fixos/plugins/__init__.py +0 -0
  133. {fixos-2.2.37 → fixos-2.2.39}/fixos/plugins/base.py +0 -0
  134. {fixos-2.2.37 → fixos-2.2.39}/fixos/plugins/builtin/__init__.py +0 -0
  135. {fixos-2.2.37 → fixos-2.2.39}/fixos/plugins/builtin/audio.py +0 -0
  136. {fixos-2.2.37 → fixos-2.2.39}/fixos/plugins/builtin/disk.py +0 -0
  137. {fixos-2.2.37 → fixos-2.2.39}/fixos/plugins/builtin/hardware.py +0 -0
  138. {fixos-2.2.37 → fixos-2.2.39}/fixos/plugins/builtin/resources.py +0 -0
  139. {fixos-2.2.37 → fixos-2.2.39}/fixos/plugins/builtin/security.py +0 -0
  140. {fixos-2.2.37 → fixos-2.2.39}/fixos/plugins/builtin/thumbnails.py +0 -0
  141. {fixos-2.2.37 → fixos-2.2.39}/fixos/plugins/registry.py +0 -0
  142. {fixos-2.2.37 → fixos-2.2.39}/fixos/profiles/__init__.py +0 -0
  143. {fixos-2.2.37 → fixos-2.2.39}/fixos/providers/__init__.py +0 -0
  144. {fixos-2.2.37 → fixos-2.2.39}/fixos/providers/llm_analyzer.py +0 -0
  145. {fixos-2.2.37 → fixos-2.2.39}/fixos/providers/schemas.py +0 -0
  146. {fixos-2.2.37 → fixos-2.2.39}/fixos/system_checks.py +0 -0
  147. {fixos-2.2.37 → fixos-2.2.39}/fixos/utils/__init__.py +0 -0
  148. {fixos-2.2.37 → fixos-2.2.39}/fixos/utils/anonymizer.py +0 -0
  149. {fixos-2.2.37 → fixos-2.2.39}/fixos/utils/terminal.py +0 -0
  150. {fixos-2.2.37 → fixos-2.2.39}/fixos/utils/timeout.py +0 -0
  151. {fixos-2.2.37 → fixos-2.2.39}/fixos/utils/web_search.py +0 -0
  152. {fixos-2.2.37 → fixos-2.2.39}/fixos.egg-info/dependency_links.txt +0 -0
  153. {fixos-2.2.37 → fixos-2.2.39}/fixos.egg-info/entry_points.txt +0 -0
  154. {fixos-2.2.37 → fixos-2.2.39}/fixos.egg-info/requires.txt +0 -0
  155. {fixos-2.2.37 → fixos-2.2.39}/pytest.ini +0 -0
  156. {fixos-2.2.37 → fixos-2.2.39}/requirements-dev.txt +0 -0
  157. {fixos-2.2.37 → fixos-2.2.39}/requirements.txt +0 -0
  158. {fixos-2.2.37 → fixos-2.2.39}/scripts/pyqual-calibrate.py +0 -0
  159. {fixos-2.2.37 → fixos-2.2.39}/setup.cfg +0 -0
  160. {fixos-2.2.37 → fixos-2.2.39}/tests/__init__.py +0 -0
  161. {fixos-2.2.37 → fixos-2.2.39}/tests/conftest.py +0 -0
  162. {fixos-2.2.37 → fixos-2.2.39}/tests/e2e/__init__.py +0 -0
  163. {fixos-2.2.37 → fixos-2.2.39}/tests/e2e/test_anonymization_layers.py +0 -0
  164. {fixos-2.2.37 → fixos-2.2.39}/tests/e2e/test_audio_broken.py +0 -0
  165. {fixos-2.2.37 → fixos-2.2.39}/tests/e2e/test_cli.py +0 -0
  166. {fixos-2.2.37 → fixos-2.2.39}/tests/e2e/test_diagnostics_integration.py +0 -0
  167. {fixos-2.2.37 → fixos-2.2.39}/tests/e2e/test_executor.py +0 -0
  168. {fixos-2.2.37 → fixos-2.2.39}/tests/e2e/test_multi_system.py +0 -0
  169. {fixos-2.2.37 → fixos-2.2.39}/tests/e2e/test_network_broken.py +0 -0
  170. {fixos-2.2.37 → fixos-2.2.39}/tests/e2e/test_thumbnails_broken.py +0 -0
  171. {fixos-2.2.37 → fixos-2.2.39}/tests/test_fixos.py +0 -0
  172. {fixos-2.2.37 → fixos-2.2.39}/tests/unit/__init__.py +0 -0
  173. {fixos-2.2.37 → fixos-2.2.39}/tests/unit/test_anonymizer.py +0 -0
  174. {fixos-2.2.37 → fixos-2.2.39}/tests/unit/test_cache_discovery.py +0 -0
  175. {fixos-2.2.37 → fixos-2.2.39}/tests/unit/test_core.py +0 -0
  176. {fixos-2.2.37 → fixos-2.2.39}/tests/unit/test_executor.py +0 -0
  177. {fixos-2.2.37 → fixos-2.2.39}/tests/unit/test_orchestrator.py +0 -0
@@ -1,3 +1,50 @@
1
+ ## [Unreleased]
2
+
3
+ ### Added
4
+
5
+ - `fixos quick`: ograniczona czasowo analiza heurystyczna bez LLM, która od razu
6
+ pokazuje presję CPU/RAM/dysku i maksymalny rozmiar jawnie odtwarzalnych cache.
7
+ - Lokalna historia szybkich próbek z porównaniem ostatnich godzin i bieżącego
8
+ dnia oraz alarmami o szybkim wzroście dysku, RAM, swapu lub obciążenia CPU.
9
+ - Rozpoznawanie systemu, profilu użytkownika i stosu technologicznego oraz
10
+ opcjonalne przejście do wolniejszej analizy przez `fixos quick --deep`.
11
+
12
+ ### Fixed
13
+
14
+ - Stabilny raport Docker z osobnym rozmiarem aktywnym i odzyskiwalnym oraz
15
+ poprawnym pomiarem przed/po czyszczeniu.
16
+ - Usunięto niebezpieczne zbiorcze komendy kasowania wolumenów Docker i
17
+ wszystkich modeli Ollama.
18
+ - Skrócono domyślną diagnostykę przez równoległe moduły i usunięcie
19
+ rekurencyjnych skanów `/` oraz `/home` z szybkich kontroli.
20
+ - Czyszczenie cache JetBrains trafia w aktualną ścieżkę i wymaga zamknięcia IDE.
21
+
22
+ ## [2.2.39] - 2026-07-23
23
+
24
+ ### Docs
25
+ - Update CHANGELOG.md
26
+ - Update README.md
27
+
28
+ ### Test
29
+ - Update tests/unit/test_dev_project_analyzer.py
30
+ - Update tests/unit/test_quick_cmd.py
31
+ - Update tests/unit/test_quick_snapshot.py
32
+ - Update tests/unit/test_service_scanner.py
33
+ - Update tests/unit/test_system_checks_parallel.py
34
+
35
+ ### Other
36
+ - Update fixos/agent/session_handlers.py
37
+ - Update fixos/cli.py
38
+ - Update fixos/cli/fix_cmd.py
39
+ - Update fixos/cli/main.py
40
+ - Update fixos/cli/quick_cmd.py
41
+ - Update fixos/diagnostics/__init__.py
42
+ - Update fixos/diagnostics/dev_project_analyzer.py
43
+ - Update fixos/diagnostics/quick_snapshot.py
44
+ - Update fixos/diagnostics/service_scanner.py
45
+ - Update fixos/diagnostics/system_checks.py
46
+ - ... and 2 more files
47
+
1
48
  ## [2.2.0] - 2026-04-04
2
49
 
3
50
  ### Summary
@@ -150,6 +197,29 @@ fix(goal): code analysis engine
150
197
  - **refactor(cli):** Usunięto zduplikowany kod ujednolicając funkcje analizy dysku do wspólnego helpera `_run_disk_analysis`.
151
198
  - **refactor(ui):** Usunięto ikony Unicode z CLI i sformatowano wyjście `stderr` oraz standardowego logowania na czysty kod Markdown dla poprawy czytelności w oknach terminalowych.
152
199
 
200
+ ## [2.2.38] - 2026-07-23
201
+
202
+ ### Docs
203
+ - Update README.md
204
+
205
+ ### Test
206
+ - Update tests/unit/test_resources_quick.py
207
+ - Update tests/unit/test_security_quick.py
208
+ - Update tests/unit/test_service_cleanup.py
209
+ - Update tests/unit/test_service_scanner.py
210
+ - Update tests/unit/test_system_checks_parallel.py
211
+
212
+ ### Other
213
+ - Update fixos/cli/cleanup_cmd.py
214
+ - Update fixos/cli/fix_cmd.py
215
+ - Update fixos/diagnostics/checks/resources.py
216
+ - Update fixos/diagnostics/checks/security.py
217
+ - Update fixos/diagnostics/service_cleanup.py
218
+ - Update fixos/diagnostics/service_scanner.py
219
+ - Update fixos/diagnostics/system_checks.py
220
+ - Update img_1.png
221
+ - Update uv.lock
222
+
153
223
  ## [2.2.37] - 2026-07-15
154
224
 
155
225
  ### Docs
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fixos
3
- Version: 2.2.37
3
+ Version: 2.2.39
4
4
  Summary: AI-powered Linux/Windows diagnostics and repair – audio, hardware, system issues
5
5
  Home-page: https://github.com/wronai/fixos
6
6
  Author: fixos contributors
@@ -63,13 +63,13 @@ AI-powered OS Diagnostics
63
63
 
64
64
  ## AI Cost Tracking
65
65
 
66
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-2.2.37-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
67
- ![AI Cost](https://img.shields.io/badge/AI%20Cost-$4.56-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-36.2h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
66
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-2.2.39-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
67
+ ![AI Cost](https://img.shields.io/badge/AI%20Cost-$4.76-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-38.0h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
68
68
 
69
- - 🤖 **LLM usage:** $4.5585 (143 commits)
70
- - 👤 **Human dev:** ~$3616 (36.2h @ $100/h, 30min dedup)
69
+ - 🤖 **LLM usage:** $4.7645 (146 commits)
70
+ - 👤 **Human dev:** ~$3795 (38.0h @ $100/h, 30min dedup)
71
71
 
72
- Generated on 2026-07-15 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
72
+ Generated on 2026-07-23 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
73
73
 
74
74
  ---
75
75
 
@@ -80,6 +80,8 @@ z anonimizacją danych, trybem HITL/Autonomous, grafem problemów i 12 providera
80
80
 
81
81
  ---
82
82
 
83
+ ![img_1.png](img_1.png)
84
+
83
85
  ## 🌍 Cross-Platform Support
84
86
 
85
87
  | System | Package Manager | Audio | Hardware | System |
@@ -96,10 +98,11 @@ z anonimizacją danych, trybem HITL/Autonomous, grafem problemów i 12 providera
96
98
  # 1. Instalacja
97
99
  pip install -e ".[dev]"
98
100
 
99
- # 2. Wybierz provider i pobierz klucz API
100
- fixos llm # lista 12 providerów z linkami
101
+ # 2. Pierwszy lokalny wynik bez LLM
102
+ fixos quick # CPU/RAM/dysk/cache + początek historii
101
103
 
102
- # 3. Zapisz klucz i uruchom
104
+ # 3. Opcjonalnie wybierz provider i uruchom analizę pogłębioną
105
+ fixos llm # lista 12 providerów z linkami
103
106
  fixos token set AIzaSy... # Gemini (darmowy, domyślny)
104
107
  fixos fix
105
108
  ```
@@ -110,10 +113,13 @@ fixos fix
110
113
 
111
114
  ```
112
115
  fixos – ekran powitalny z listą komend i statusem
116
+ fixos quick – szybka analiza bez LLM + historia CPU/RAM/dysku
117
+ fixos quick --deep – szybki wynik, potem pełny skan danych usług
113
118
  fixos fix – diagnoza + sesja naprawcza z AI (HITL)
114
119
  fixos scan – diagnostyka systemu bez AI
115
120
  fixos cleanup – skanuj i czyść dane usług (Docker, npm, pip, ...)
116
121
  fixos cleanup --full – pełny audit systemu + dev projects
122
+ fixos projects – skanuj projekty dev (venv, node_modules, ~/github/*/*)
117
123
  fixos orchestrate – zaawansowana orkiestracja (graf problemów DAG)
118
124
  fixos llm – lista 12 providerów LLM + linki do kluczy API
119
125
  fixos token set KEY – zapisz klucz API do .env (auto-detekcja providera)
@@ -129,6 +135,15 @@ fixos test-llm – testuj połączenie z LLM
129
135
  ### Przykłady użycia
130
136
 
131
137
  ```bash
138
+ # Wynik w kilka sekund: presja CPU/RAM/dysku, bezpieczne cache i ostatni przyrost
139
+ fixos quick
140
+
141
+ # JSON do monitoringu; porównanie z próbkami z ostatnich 12 godzin
142
+ fixos quick --json --hours 12
143
+
144
+ # Dopiero na żądanie wykonaj kosztowną inwentaryzację usług
145
+ fixos quick --deep
146
+
132
147
  # Tylko diagnostyka audio + zapis do pliku
133
148
  fixos scan --audio --output /tmp/audio-report.json
134
149
 
@@ -151,9 +166,22 @@ fixos cleanup --full
151
166
  > select
152
167
  > 1,3,5-10
153
168
 
169
+ # Skanuj ~/github/*/* pod kątem venv/.venv, node_modules, cache kompilacji...
170
+ fixos projects
171
+
172
+ # Tylko artefakty nieużywane od >60 dni (bez świeżych venv)
173
+ fixos projects --only-stale
174
+
175
+ # Podgląd bez usuwania
176
+ fixos projects --dry-run
177
+
154
178
  # Napraw audio i thumbnails (HITL – pyta o potwierdzenie)
155
179
  fixos fix --modules audio,thumbnails
156
180
 
181
+ # Domyślny szybki zestaw pomija wielokrotny skan całego katalogu domowego.
182
+ # Pełną inwentaryzację dużych/zdublowanych plików uruchom jawnie:
183
+ fixos fix --modules all
184
+
157
185
  # Tryb autonomiczny (agent sam naprawia, max 5 akcji)
158
186
  fixos fix --mode autonomous --max-fixes 5
159
187
 
@@ -171,6 +199,13 @@ fixos fix --provider groq
171
199
  fixos fix --timeout 1800
172
200
  ```
173
201
 
202
+ `fixos quick` nie wywołuje LLM ani nie przeszukuje całego katalogu domowego.
203
+ Pierwsze uruchomienie zapisuje mały punkt odniesienia w
204
+ `~/.local/state/fixos/quick-history.json`; kolejne pokazują zmianę dysku, RAM,
205
+ swapu i znanych cache w wybranym oknie oraz od początku bieżącego dnia. Kwota
206
+ „bezpieczne cache” obejmuje wyłącznie jawnie odtwarzalne dane. Docker, modele
207
+ AI, rozszerzenia i cache IDE są raportowane osobno jako wymagające decyzji.
208
+
174
209
  ### Przykładowy widok w terminalu (Czyszczenie dysku)
175
210
 
176
211
  Wyjście jest zoptymalizowane pod standardowy Markdown bez nadmiernej ilości symboli Unicode, ułatwiając czytelność i wklejanie:
@@ -218,6 +253,73 @@ Rekomendacje:
218
253
  Tryb DRY-RUN - żadne akcje nie zostaną wykonane
219
254
  ```
220
255
 
256
+ ### `fixos cleanup` – 3 poziomy ryzyka
257
+
258
+ Każda znaleziona usługa jest klasyfikowana do jednej z trzech grup:
259
+
260
+ - **bezpieczne** – cache do odtworzenia jednym poleceniem (pip/npm/cargo/conda/nix/brew...).
261
+ Jedyna grupa oferowana do automatycznego usunięcia, z menu wyboru: wszystkie / pojedynczo / pomiń.
262
+ - **do rozważenia** – reinstalowalne aplikacje, dane długo nieużywane, nierozpoznane
263
+ foldery (JetBrains, Snap, Flatpak) – pokazywane z podpowiedziami, nigdy nie usuwane automatycznie.
264
+ - **chronione lub mieszane** – realne dane aplikacji albo magazyny łączące dane aktywne
265
+ z cache (Ollama, LM Studio, HuggingFace hub, Docker/Podman/containerd, cała biblioteka
266
+ Steam, `.cursor/extensions`/`.vscode/extensions`
267
+ – zainstalowane rozszerzenia edytora, nie ich cache). Osobna sekcja z ostrzeżeniem;
268
+ zbiorcze kasowanie modeli i wolumenów jest wyłączone. Docker pokazuje osobno
269
+ `SIZE` i `RECLAIMABLE`; domyślne czyszczenie ogranicza się do starego cache buildów.
270
+
271
+ ### `fixos projects` – skaner artefaktów w projektach deweloperskich
272
+
273
+ Osobne narzędzie od `fixos cleanup` – zamiast globalnych ścieżek cache (`~/.cache/...`)
274
+ rekurencyjnie skanuje drzewo Twoich projektów (domyślnie `~/github/*/*`, dowolna
275
+ ścieżka przez `--path`) i wykrywa usuwalne artefakty per-projekt: `venv`/`.venv`
276
+ (zweryfikowane po `pyvenv.cfg`, żeby nie trafić na przypadkowy folder o tej
277
+ nazwie), `node_modules`/`.next`/`.turbo` (tylko gdy jest `package.json`),
278
+ `target` (tylko gdy jest `Cargo.toml`), `__pycache__`, `.pytest_cache`,
279
+ `.mypy_cache`, `.ruff_cache`, `.tox`, `.nox`; `dist`/`build` osobno jako
280
+ "do rozważenia" (mogą zawierać coś do opublikowania). Flaguje artefakty
281
+ nieużywane od >60 dni (`--stale-days`) oraz projekty ze zduplikowanymi
282
+ virtualenvami (np. i `venv`, i `.venv` naraz).
283
+
284
+ ```bash
285
+ $ fixos projects --only-stale
286
+
287
+ Skanowanie projektów w /home/tom/github (próg: 50 MB)...
288
+ ════════════════════════════════════════════════════════════
289
+ Znaleziono 91 artefaktów w 68 projektach:
290
+ Całkowity rozmiar: 91.90 GB
291
+ Bezpieczne: 91.10 GB
292
+ Do rozważenia: 0.80 GB
293
+ Nieużywane od >60 dni: 91.90 GB
294
+
295
+ ⚠ 12 projekt(ów) ma więcej niż jeden virtualenv naraz (np. venv + .venv):
296
+ • /home/tom/github/semcod/fixOS
297
+
298
+ streamware/venv - 9.27 GB — nieużywany 216 dni
299
+ Python virtualenv
300
+ Ścieżka: /home/tom/github/stream-ware/streamware/venv
301
+ (bezpieczne)
302
+ ...
303
+
304
+ Co wyczyścić?
305
+ [1] Wszystkie bezpieczne (91.10 GB)
306
+ [2] Tylko dawno nieużywane (91.90 GB, 91 art.)
307
+ [3] Wybierz wg ekosystemu (Python/Node/Rust/...)
308
+ [4] Wybierz wg projektu
309
+ [5] Wybierz pojedyncze artefakty
310
+ [0] Nic — pomiń
311
+ Wybór [1]: 4
312
+
313
+ [1] stream-ware/streamware — 9.27 GB (1 art.)
314
+ [2] prototypowanie/raport — 8.30 GB (1 art.)
315
+ [3] stream-ware/edge — 7.68 GB (1 art.)
316
+ ...
317
+ Numery po przecinku (np. 1,3,5), 'all' dla wszystkich, Enter by pominąć: 1,3
318
+ ```
319
+
320
+ Inne opcje: `--list` (tylko podgląd bez interakcji), `--json`, `--max-depth`,
321
+ `--threshold`.
322
+
221
323
  ---
222
324
 
223
325
  ## 🤖 Dostępni Providerzy LLM (12)
@@ -354,6 +456,13 @@ SHOW_ANONYMIZED_DATA=true # pokaż dane przed wysłaniem
354
456
  ENABLE_WEB_SEARCH=true # fallback do zewnętrznych źródeł
355
457
  SESSION_TIMEOUT=3600 # timeout sesji (1h)
356
458
  SERPAPI_KEY= # opcjonalny – lepsze wyniki wyszukiwania
459
+
460
+ # Opcjonalnie: konkretny model dla danego providera + modele zapasowe.
461
+ # Jeśli główny model zostanie odrzucony przez providera jako nieprawidłowy
462
+ # (błąd 400 "not a valid model ID"), klient automatycznie przechodzi na
463
+ # kolejny z listy – bez żadnej akcji z Twojej strony.
464
+ OPENROUTER_MODEL=openrouter/qwen/qwen3.7-plus
465
+ OPENROUTER_MODEL_FALLBACKS=minimax/minimax-m3,google/gemini-2.5-flash-lite
357
466
  ```
358
467
 
359
468
  ---
@@ -19,13 +19,13 @@ AI-powered OS Diagnostics
19
19
 
20
20
  ## AI Cost Tracking
21
21
 
22
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-2.2.37-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
23
- ![AI Cost](https://img.shields.io/badge/AI%20Cost-$4.56-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-36.2h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
22
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-2.2.39-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
23
+ ![AI Cost](https://img.shields.io/badge/AI%20Cost-$4.76-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-38.0h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
24
24
 
25
- - 🤖 **LLM usage:** $4.5585 (143 commits)
26
- - 👤 **Human dev:** ~$3616 (36.2h @ $100/h, 30min dedup)
25
+ - 🤖 **LLM usage:** $4.7645 (146 commits)
26
+ - 👤 **Human dev:** ~$3795 (38.0h @ $100/h, 30min dedup)
27
27
 
28
- Generated on 2026-07-15 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
28
+ Generated on 2026-07-23 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
29
29
 
30
30
  ---
31
31
 
@@ -36,6 +36,8 @@ z anonimizacją danych, trybem HITL/Autonomous, grafem problemów i 12 providera
36
36
 
37
37
  ---
38
38
 
39
+ ![img_1.png](img_1.png)
40
+
39
41
  ## 🌍 Cross-Platform Support
40
42
 
41
43
  | System | Package Manager | Audio | Hardware | System |
@@ -52,10 +54,11 @@ z anonimizacją danych, trybem HITL/Autonomous, grafem problemów i 12 providera
52
54
  # 1. Instalacja
53
55
  pip install -e ".[dev]"
54
56
 
55
- # 2. Wybierz provider i pobierz klucz API
56
- fixos llm # lista 12 providerów z linkami
57
+ # 2. Pierwszy lokalny wynik bez LLM
58
+ fixos quick # CPU/RAM/dysk/cache + początek historii
57
59
 
58
- # 3. Zapisz klucz i uruchom
60
+ # 3. Opcjonalnie wybierz provider i uruchom analizę pogłębioną
61
+ fixos llm # lista 12 providerów z linkami
59
62
  fixos token set AIzaSy... # Gemini (darmowy, domyślny)
60
63
  fixos fix
61
64
  ```
@@ -66,10 +69,13 @@ fixos fix
66
69
 
67
70
  ```
68
71
  fixos – ekran powitalny z listą komend i statusem
72
+ fixos quick – szybka analiza bez LLM + historia CPU/RAM/dysku
73
+ fixos quick --deep – szybki wynik, potem pełny skan danych usług
69
74
  fixos fix – diagnoza + sesja naprawcza z AI (HITL)
70
75
  fixos scan – diagnostyka systemu bez AI
71
76
  fixos cleanup – skanuj i czyść dane usług (Docker, npm, pip, ...)
72
77
  fixos cleanup --full – pełny audit systemu + dev projects
78
+ fixos projects – skanuj projekty dev (venv, node_modules, ~/github/*/*)
73
79
  fixos orchestrate – zaawansowana orkiestracja (graf problemów DAG)
74
80
  fixos llm – lista 12 providerów LLM + linki do kluczy API
75
81
  fixos token set KEY – zapisz klucz API do .env (auto-detekcja providera)
@@ -85,6 +91,15 @@ fixos test-llm – testuj połączenie z LLM
85
91
  ### Przykłady użycia
86
92
 
87
93
  ```bash
94
+ # Wynik w kilka sekund: presja CPU/RAM/dysku, bezpieczne cache i ostatni przyrost
95
+ fixos quick
96
+
97
+ # JSON do monitoringu; porównanie z próbkami z ostatnich 12 godzin
98
+ fixos quick --json --hours 12
99
+
100
+ # Dopiero na żądanie wykonaj kosztowną inwentaryzację usług
101
+ fixos quick --deep
102
+
88
103
  # Tylko diagnostyka audio + zapis do pliku
89
104
  fixos scan --audio --output /tmp/audio-report.json
90
105
 
@@ -107,9 +122,22 @@ fixos cleanup --full
107
122
  > select
108
123
  > 1,3,5-10
109
124
 
125
+ # Skanuj ~/github/*/* pod kątem venv/.venv, node_modules, cache kompilacji...
126
+ fixos projects
127
+
128
+ # Tylko artefakty nieużywane od >60 dni (bez świeżych venv)
129
+ fixos projects --only-stale
130
+
131
+ # Podgląd bez usuwania
132
+ fixos projects --dry-run
133
+
110
134
  # Napraw audio i thumbnails (HITL – pyta o potwierdzenie)
111
135
  fixos fix --modules audio,thumbnails
112
136
 
137
+ # Domyślny szybki zestaw pomija wielokrotny skan całego katalogu domowego.
138
+ # Pełną inwentaryzację dużych/zdublowanych plików uruchom jawnie:
139
+ fixos fix --modules all
140
+
113
141
  # Tryb autonomiczny (agent sam naprawia, max 5 akcji)
114
142
  fixos fix --mode autonomous --max-fixes 5
115
143
 
@@ -127,6 +155,13 @@ fixos fix --provider groq
127
155
  fixos fix --timeout 1800
128
156
  ```
129
157
 
158
+ `fixos quick` nie wywołuje LLM ani nie przeszukuje całego katalogu domowego.
159
+ Pierwsze uruchomienie zapisuje mały punkt odniesienia w
160
+ `~/.local/state/fixos/quick-history.json`; kolejne pokazują zmianę dysku, RAM,
161
+ swapu i znanych cache w wybranym oknie oraz od początku bieżącego dnia. Kwota
162
+ „bezpieczne cache” obejmuje wyłącznie jawnie odtwarzalne dane. Docker, modele
163
+ AI, rozszerzenia i cache IDE są raportowane osobno jako wymagające decyzji.
164
+
130
165
  ### Przykładowy widok w terminalu (Czyszczenie dysku)
131
166
 
132
167
  Wyjście jest zoptymalizowane pod standardowy Markdown bez nadmiernej ilości symboli Unicode, ułatwiając czytelność i wklejanie:
@@ -174,6 +209,73 @@ Rekomendacje:
174
209
  Tryb DRY-RUN - żadne akcje nie zostaną wykonane
175
210
  ```
176
211
 
212
+ ### `fixos cleanup` – 3 poziomy ryzyka
213
+
214
+ Każda znaleziona usługa jest klasyfikowana do jednej z trzech grup:
215
+
216
+ - **bezpieczne** – cache do odtworzenia jednym poleceniem (pip/npm/cargo/conda/nix/brew...).
217
+ Jedyna grupa oferowana do automatycznego usunięcia, z menu wyboru: wszystkie / pojedynczo / pomiń.
218
+ - **do rozważenia** – reinstalowalne aplikacje, dane długo nieużywane, nierozpoznane
219
+ foldery (JetBrains, Snap, Flatpak) – pokazywane z podpowiedziami, nigdy nie usuwane automatycznie.
220
+ - **chronione lub mieszane** – realne dane aplikacji albo magazyny łączące dane aktywne
221
+ z cache (Ollama, LM Studio, HuggingFace hub, Docker/Podman/containerd, cała biblioteka
222
+ Steam, `.cursor/extensions`/`.vscode/extensions`
223
+ – zainstalowane rozszerzenia edytora, nie ich cache). Osobna sekcja z ostrzeżeniem;
224
+ zbiorcze kasowanie modeli i wolumenów jest wyłączone. Docker pokazuje osobno
225
+ `SIZE` i `RECLAIMABLE`; domyślne czyszczenie ogranicza się do starego cache buildów.
226
+
227
+ ### `fixos projects` – skaner artefaktów w projektach deweloperskich
228
+
229
+ Osobne narzędzie od `fixos cleanup` – zamiast globalnych ścieżek cache (`~/.cache/...`)
230
+ rekurencyjnie skanuje drzewo Twoich projektów (domyślnie `~/github/*/*`, dowolna
231
+ ścieżka przez `--path`) i wykrywa usuwalne artefakty per-projekt: `venv`/`.venv`
232
+ (zweryfikowane po `pyvenv.cfg`, żeby nie trafić na przypadkowy folder o tej
233
+ nazwie), `node_modules`/`.next`/`.turbo` (tylko gdy jest `package.json`),
234
+ `target` (tylko gdy jest `Cargo.toml`), `__pycache__`, `.pytest_cache`,
235
+ `.mypy_cache`, `.ruff_cache`, `.tox`, `.nox`; `dist`/`build` osobno jako
236
+ "do rozważenia" (mogą zawierać coś do opublikowania). Flaguje artefakty
237
+ nieużywane od >60 dni (`--stale-days`) oraz projekty ze zduplikowanymi
238
+ virtualenvami (np. i `venv`, i `.venv` naraz).
239
+
240
+ ```bash
241
+ $ fixos projects --only-stale
242
+
243
+ Skanowanie projektów w /home/tom/github (próg: 50 MB)...
244
+ ════════════════════════════════════════════════════════════
245
+ Znaleziono 91 artefaktów w 68 projektach:
246
+ Całkowity rozmiar: 91.90 GB
247
+ Bezpieczne: 91.10 GB
248
+ Do rozważenia: 0.80 GB
249
+ Nieużywane od >60 dni: 91.90 GB
250
+
251
+ ⚠ 12 projekt(ów) ma więcej niż jeden virtualenv naraz (np. venv + .venv):
252
+ • /home/tom/github/semcod/fixOS
253
+
254
+ streamware/venv - 9.27 GB — nieużywany 216 dni
255
+ Python virtualenv
256
+ Ścieżka: /home/tom/github/stream-ware/streamware/venv
257
+ (bezpieczne)
258
+ ...
259
+
260
+ Co wyczyścić?
261
+ [1] Wszystkie bezpieczne (91.10 GB)
262
+ [2] Tylko dawno nieużywane (91.90 GB, 91 art.)
263
+ [3] Wybierz wg ekosystemu (Python/Node/Rust/...)
264
+ [4] Wybierz wg projektu
265
+ [5] Wybierz pojedyncze artefakty
266
+ [0] Nic — pomiń
267
+ Wybór [1]: 4
268
+
269
+ [1] stream-ware/streamware — 9.27 GB (1 art.)
270
+ [2] prototypowanie/raport — 8.30 GB (1 art.)
271
+ [3] stream-ware/edge — 7.68 GB (1 art.)
272
+ ...
273
+ Numery po przecinku (np. 1,3,5), 'all' dla wszystkich, Enter by pominąć: 1,3
274
+ ```
275
+
276
+ Inne opcje: `--list` (tylko podgląd bez interakcji), `--json`, `--max-depth`,
277
+ `--threshold`.
278
+
177
279
  ---
178
280
 
179
281
  ## 🤖 Dostępni Providerzy LLM (12)
@@ -310,6 +412,13 @@ SHOW_ANONYMIZED_DATA=true # pokaż dane przed wysłaniem
310
412
  ENABLE_WEB_SEARCH=true # fallback do zewnętrznych źródeł
311
413
  SESSION_TIMEOUT=3600 # timeout sesji (1h)
312
414
  SERPAPI_KEY= # opcjonalny – lepsze wyniki wyszukiwania
415
+
416
+ # Opcjonalnie: konkretny model dla danego providera + modele zapasowe.
417
+ # Jeśli główny model zostanie odrzucony przez providera jako nieprawidłowy
418
+ # (błąd 400 "not a valid model ID"), klient automatycznie przechodzi na
419
+ # kolejny z listy – bez żadnej akcji z Twojej strony.
420
+ OPENROUTER_MODEL=openrouter/qwen/qwen3.7-plus
421
+ OPENROUTER_MODEL_FALLBACKS=minimax/minimax-m3,google/gemini-2.5-flash-lite
313
422
  ```
314
423
 
315
424
  ---
@@ -482,4 +591,4 @@ Licensed under Apache-2.0.
482
591
  Tom Sapletta
483
592
  ## life is life
484
593
 
485
- ![img.png](img.png)
594
+ ![img.png](img.png)
@@ -1,3 +1,3 @@
1
1
  """fixos – AI-powered Linux/Windows diagnostics and repair."""
2
2
 
3
- __version__ = "2.2.37"
3
+ __version__ = "2.2.39"
@@ -134,14 +134,18 @@ def handle_execute_all(fixes: list, messages: list, executed: list, run_cmd_fn)
134
134
  executed.append(result)
135
135
  anon_out, _ = anonymize(result.stdout + result.stderr)
136
136
  status = "✅ sukces" if result.ok else f"❌ błąd (kod {result.returncode})"
137
- summary_lines.append(f"- `{cmd}`: {status}")
137
+ summary = f"- `{cmd}`: {status}"
138
+ if anon_out.strip():
139
+ summary += f"\n Output: {anon_out.strip()[:MAX_ANON_PREVIEW_LENGTH]}"
140
+ summary_lines.append(summary)
138
141
 
142
+ joined_summary = "\n".join(summary_lines)
139
143
  messages.append(
140
144
  {
141
145
  "role": "user",
142
146
  "content": (
143
147
  f"Executed all commands:\n"
144
- f"{'\n'.join(summary_lines)}\n"
148
+ f"{joined_summary}\n"
145
149
  f"\nEvaluate results and suggest next steps."
146
150
  ),
147
151
  }
@@ -318,15 +322,19 @@ def parse_user_input(
318
322
 
319
323
  # [N] Execute specific fix by number
320
324
  if user_in.isdigit():
321
- return handle_fix_by_number(
322
- user_in, fixes, messages, executed, run_single_command
323
- ), True
325
+ return (
326
+ handle_fix_by_number(
327
+ user_in, fixes, messages, executed, run_single_command
328
+ ),
329
+ True,
330
+ )
324
331
 
325
332
  # [!cmd] Direct command execution
326
333
  if user_in.startswith("!"):
327
- return handle_direct_command(
328
- user_in, messages, executed, run_single_command
329
- ), True
334
+ return (
335
+ handle_direct_command(user_in, messages, executed, run_single_command),
336
+ True,
337
+ )
330
338
 
331
339
  # [search <q>] Web search
332
340
  if lo.startswith("search "):