fixos 2.2.46__tar.gz → 2.2.47__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 (180) hide show
  1. {fixos-2.2.46 → fixos-2.2.47}/CHANGELOG.md +37 -5
  2. {fixos-2.2.46 → fixos-2.2.47}/PKG-INFO +50 -16
  3. {fixos-2.2.46 → fixos-2.2.47}/README.md +47 -13
  4. {fixos-2.2.46 → fixos-2.2.47}/fixos/__init__.py +1 -1
  5. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/cleanup_cmd.py +245 -23
  6. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/main.py +11 -1
  7. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/projects_cmd.py +156 -12
  8. fixos-2.2.47/fixos/diagnostics/docker_network_cleanup.py +282 -0
  9. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/service_cleanup.py +186 -33
  10. {fixos-2.2.46 → fixos-2.2.47}/fixos.egg-info/PKG-INFO +50 -16
  11. {fixos-2.2.46 → fixos-2.2.47}/fixos.egg-info/SOURCES.txt +2 -0
  12. {fixos-2.2.46 → fixos-2.2.47}/fixos.egg-info/requires.txt +5 -1
  13. {fixos-2.2.46 → fixos-2.2.47}/pyproject.toml +3 -3
  14. {fixos-2.2.46 → fixos-2.2.47}/setup.py +2 -1
  15. {fixos-2.2.46 → fixos-2.2.47}/tests/unit/test_cleanup_cmd.py +195 -4
  16. fixos-2.2.47/tests/unit/test_docker_network_cleanup.py +274 -0
  17. {fixos-2.2.46 → fixos-2.2.47}/tests/unit/test_projects_cmd.py +125 -3
  18. {fixos-2.2.46 → fixos-2.2.47}/tests/unit/test_service_cleanup.py +104 -4
  19. {fixos-2.2.46 → fixos-2.2.47}/.env.example +0 -0
  20. {fixos-2.2.46 → fixos-2.2.47}/LICENSE +0 -0
  21. {fixos-2.2.46 → fixos-2.2.47}/MANIFEST.in +0 -0
  22. {fixos-2.2.46 → fixos-2.2.47}/docker/README.md +0 -0
  23. {fixos-2.2.46 → fixos-2.2.47}/docker/TEST_RESULTS.md +0 -0
  24. {fixos-2.2.46 → fixos-2.2.47}/docker/TEST_RESULTS_V2.md +0 -0
  25. {fixos-2.2.46 → fixos-2.2.47}/docker/alpine/Dockerfile +0 -0
  26. {fixos-2.2.46 → fixos-2.2.47}/docker/arch/Dockerfile +0 -0
  27. {fixos-2.2.46 → fixos-2.2.47}/docker/base/Dockerfile +0 -0
  28. {fixos-2.2.46 → fixos-2.2.47}/docker/broken-audio/Dockerfile +0 -0
  29. {fixos-2.2.46 → fixos-2.2.47}/docker/broken-full/Dockerfile +0 -0
  30. {fixos-2.2.46 → fixos-2.2.47}/docker/broken-network/Dockerfile +0 -0
  31. {fixos-2.2.46 → fixos-2.2.47}/docker/broken-thumbnails/Dockerfile +0 -0
  32. {fixos-2.2.46 → fixos-2.2.47}/docker/debian/Dockerfile +0 -0
  33. {fixos-2.2.46 → fixos-2.2.47}/docker/docker-compose.multi-system.yml +0 -0
  34. {fixos-2.2.46 → fixos-2.2.47}/docker/docker-compose.yml +0 -0
  35. {fixos-2.2.46 → fixos-2.2.47}/docker/fedora/Dockerfile +0 -0
  36. {fixos-2.2.46 → fixos-2.2.47}/docker/test-multi-system.sh +0 -0
  37. {fixos-2.2.46 → fixos-2.2.47}/docker/test-scenarios.sh +0 -0
  38. {fixos-2.2.46 → fixos-2.2.47}/docker/ubuntu/Dockerfile +0 -0
  39. {fixos-2.2.46 → fixos-2.2.47}/docker/validate-scenario.py +0 -0
  40. {fixos-2.2.46 → fixos-2.2.47}/docs/examples/advanced_usage.py +0 -0
  41. {fixos-2.2.46 → fixos-2.2.47}/docs/examples/quickstart.py +0 -0
  42. {fixos-2.2.46 → fixos-2.2.47}/fixos/__main__.py +0 -0
  43. {fixos-2.2.46 → fixos-2.2.47}/fixos/agent/__init__.py +0 -0
  44. {fixos-2.2.46 → fixos-2.2.47}/fixos/agent/autonomous.py +0 -0
  45. {fixos-2.2.46 → fixos-2.2.47}/fixos/agent/autonomous_session.py +0 -0
  46. {fixos-2.2.46 → fixos-2.2.47}/fixos/agent/hitl.py +0 -0
  47. {fixos-2.2.46 → fixos-2.2.47}/fixos/agent/hitl_session.py +0 -0
  48. {fixos-2.2.46 → fixos-2.2.47}/fixos/agent/session_core.py +0 -0
  49. {fixos-2.2.46 → fixos-2.2.47}/fixos/agent/session_handlers.py +0 -0
  50. {fixos-2.2.46 → fixos-2.2.47}/fixos/agent/session_io.py +0 -0
  51. {fixos-2.2.46 → fixos-2.2.47}/fixos/anonymizer.py +0 -0
  52. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/__init__.py +0 -0
  53. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/_cleanup_flatpak.py +0 -0
  54. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/_cleanup_home.py +0 -0
  55. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/_cleanup_snap.py +0 -0
  56. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/_cleanup_system.py +0 -0
  57. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/_cleanup_utils.py +0 -0
  58. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/ask_cmd.py +0 -0
  59. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/config_cmd.py +0 -0
  60. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/features_cmd.py +0 -0
  61. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/fix_cmd.py +0 -0
  62. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/history_cmd.py +0 -0
  63. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/orchestrate_cmd.py +0 -0
  64. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/output_formatter.py +0 -0
  65. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/profile_cmd.py +0 -0
  66. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/provider_cmd.py +0 -0
  67. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/quick_cmd.py +0 -0
  68. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/quickfix_cmd.py +0 -0
  69. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/report_cmd.py +0 -0
  70. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/rollback_cmd.py +0 -0
  71. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/scan_cmd.py +0 -0
  72. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/shared.py +0 -0
  73. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/token_cmd.py +0 -0
  74. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli/watch_cmd.py +0 -0
  75. {fixos-2.2.46 → fixos-2.2.47}/fixos/cli.py +0 -0
  76. {fixos-2.2.46 → fixos-2.2.47}/fixos/config.py +0 -0
  77. {fixos-2.2.46 → fixos-2.2.47}/fixos/config_interactive.py +0 -0
  78. {fixos-2.2.46 → fixos-2.2.47}/fixos/constants.py +0 -0
  79. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/__init__.py +0 -0
  80. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/_flatpak_analysis_mixin.py +0 -0
  81. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/_flatpak_execution_mixin.py +0 -0
  82. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/_flatpak_recommendations_mixin.py +0 -0
  83. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/_storage_container_mixin.py +0 -0
  84. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/_storage_system_mixin.py +0 -0
  85. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/_storage_user_mixin.py +0 -0
  86. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/cache_discovery.py +0 -0
  87. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/checks/__init__.py +0 -0
  88. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/checks/_shared.py +0 -0
  89. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/checks/audio.py +0 -0
  90. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/checks/file_analysis.py +0 -0
  91. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/checks/hardware.py +0 -0
  92. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/checks/packages.py +0 -0
  93. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/checks/resources.py +0 -0
  94. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/checks/security.py +0 -0
  95. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/checks/storage_optimization.py +0 -0
  96. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/checks/system_core.py +0 -0
  97. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/checks/thumbnails.py +0 -0
  98. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/dev_project_analyzer.py +0 -0
  99. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/disk_analyzer.py +0 -0
  100. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/flatpak_analyzer.py +0 -0
  101. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/project_scanner.py +0 -0
  102. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/quick_snapshot.py +0 -0
  103. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/service_details.py +0 -0
  104. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/service_scanner.py +0 -0
  105. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/storage_analyzer.py +0 -0
  106. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/system_checks.py +0 -0
  107. {fixos-2.2.46 → fixos-2.2.47}/fixos/diagnostics/utils.py +0 -0
  108. {fixos-2.2.46 → fixos-2.2.47}/fixos/features/__init__.py +0 -0
  109. {fixos-2.2.46 → fixos-2.2.47}/fixos/features/auditor.py +0 -0
  110. {fixos-2.2.46 → fixos-2.2.47}/fixos/features/catalog.py +0 -0
  111. {fixos-2.2.46 → fixos-2.2.47}/fixos/features/installer.py +0 -0
  112. {fixos-2.2.46 → fixos-2.2.47}/fixos/features/profiles.py +0 -0
  113. {fixos-2.2.46 → fixos-2.2.47}/fixos/features/renderer.py +0 -0
  114. {fixos-2.2.46 → fixos-2.2.47}/fixos/fixes/__init__.py +0 -0
  115. {fixos-2.2.46 → fixos-2.2.47}/fixos/interactive/__init__.py +0 -0
  116. {fixos-2.2.46 → fixos-2.2.47}/fixos/interactive/cleanup_planner.py +0 -0
  117. {fixos-2.2.46 → fixos-2.2.47}/fixos/llm_shell.py +0 -0
  118. {fixos-2.2.46 → fixos-2.2.47}/fixos/orchestrator/__init__.py +0 -0
  119. {fixos-2.2.46 → fixos-2.2.47}/fixos/orchestrator/executor.py +0 -0
  120. {fixos-2.2.46 → fixos-2.2.47}/fixos/orchestrator/graph.py +0 -0
  121. {fixos-2.2.46 → fixos-2.2.47}/fixos/orchestrator/orchestrator.py +0 -0
  122. {fixos-2.2.46 → fixos-2.2.47}/fixos/orchestrator/rollback.py +0 -0
  123. {fixos-2.2.46 → fixos-2.2.47}/fixos/platform_utils.py +0 -0
  124. {fixos-2.2.46 → fixos-2.2.47}/fixos/plugins/__init__.py +0 -0
  125. {fixos-2.2.46 → fixos-2.2.47}/fixos/plugins/base.py +0 -0
  126. {fixos-2.2.46 → fixos-2.2.47}/fixos/plugins/builtin/__init__.py +0 -0
  127. {fixos-2.2.46 → fixos-2.2.47}/fixos/plugins/builtin/audio.py +0 -0
  128. {fixos-2.2.46 → fixos-2.2.47}/fixos/plugins/builtin/disk.py +0 -0
  129. {fixos-2.2.46 → fixos-2.2.47}/fixos/plugins/builtin/hardware.py +0 -0
  130. {fixos-2.2.46 → fixos-2.2.47}/fixos/plugins/builtin/resources.py +0 -0
  131. {fixos-2.2.46 → fixos-2.2.47}/fixos/plugins/builtin/security.py +0 -0
  132. {fixos-2.2.46 → fixos-2.2.47}/fixos/plugins/builtin/thumbnails.py +0 -0
  133. {fixos-2.2.46 → fixos-2.2.47}/fixos/plugins/registry.py +0 -0
  134. {fixos-2.2.46 → fixos-2.2.47}/fixos/profiles/__init__.py +0 -0
  135. {fixos-2.2.46 → fixos-2.2.47}/fixos/providers/__init__.py +0 -0
  136. {fixos-2.2.46 → fixos-2.2.47}/fixos/providers/llm.py +0 -0
  137. {fixos-2.2.46 → fixos-2.2.47}/fixos/providers/llm_analyzer.py +0 -0
  138. {fixos-2.2.46 → fixos-2.2.47}/fixos/providers/schemas.py +0 -0
  139. {fixos-2.2.46 → fixos-2.2.47}/fixos/system_checks.py +0 -0
  140. {fixos-2.2.46 → fixos-2.2.47}/fixos/utils/__init__.py +0 -0
  141. {fixos-2.2.46 → fixos-2.2.47}/fixos/utils/anonymizer.py +0 -0
  142. {fixos-2.2.46 → fixos-2.2.47}/fixos/utils/terminal.py +0 -0
  143. {fixos-2.2.46 → fixos-2.2.47}/fixos/utils/timeout.py +0 -0
  144. {fixos-2.2.46 → fixos-2.2.47}/fixos/utils/web_search.py +0 -0
  145. {fixos-2.2.46 → fixos-2.2.47}/fixos/watch.py +0 -0
  146. {fixos-2.2.46 → fixos-2.2.47}/fixos.egg-info/dependency_links.txt +0 -0
  147. {fixos-2.2.46 → fixos-2.2.47}/fixos.egg-info/entry_points.txt +0 -0
  148. {fixos-2.2.46 → fixos-2.2.47}/fixos.egg-info/top_level.txt +0 -0
  149. {fixos-2.2.46 → fixos-2.2.47}/pytest.ini +0 -0
  150. {fixos-2.2.46 → fixos-2.2.47}/requirements-dev.txt +0 -0
  151. {fixos-2.2.46 → fixos-2.2.47}/requirements.txt +0 -0
  152. {fixos-2.2.46 → fixos-2.2.47}/scripts/pyqual-calibrate.py +0 -0
  153. {fixos-2.2.46 → fixos-2.2.47}/setup.cfg +0 -0
  154. {fixos-2.2.46 → fixos-2.2.47}/tests/__init__.py +0 -0
  155. {fixos-2.2.46 → fixos-2.2.47}/tests/conftest.py +0 -0
  156. {fixos-2.2.46 → fixos-2.2.47}/tests/e2e/__init__.py +0 -0
  157. {fixos-2.2.46 → fixos-2.2.47}/tests/e2e/test_anonymization_layers.py +0 -0
  158. {fixos-2.2.46 → fixos-2.2.47}/tests/e2e/test_audio_broken.py +0 -0
  159. {fixos-2.2.46 → fixos-2.2.47}/tests/e2e/test_cli.py +0 -0
  160. {fixos-2.2.46 → fixos-2.2.47}/tests/e2e/test_diagnostics_integration.py +0 -0
  161. {fixos-2.2.46 → fixos-2.2.47}/tests/e2e/test_executor.py +0 -0
  162. {fixos-2.2.46 → fixos-2.2.47}/tests/e2e/test_multi_system.py +0 -0
  163. {fixos-2.2.46 → fixos-2.2.47}/tests/e2e/test_network_broken.py +0 -0
  164. {fixos-2.2.46 → fixos-2.2.47}/tests/e2e/test_thumbnails_broken.py +0 -0
  165. {fixos-2.2.46 → fixos-2.2.47}/tests/test_fixos.py +0 -0
  166. {fixos-2.2.46 → fixos-2.2.47}/tests/unit/__init__.py +0 -0
  167. {fixos-2.2.46 → fixos-2.2.47}/tests/unit/test_anonymizer.py +0 -0
  168. {fixos-2.2.46 → fixos-2.2.47}/tests/unit/test_cache_discovery.py +0 -0
  169. {fixos-2.2.46 → fixos-2.2.47}/tests/unit/test_core.py +0 -0
  170. {fixos-2.2.46 → fixos-2.2.47}/tests/unit/test_dev_project_analyzer.py +0 -0
  171. {fixos-2.2.46 → fixos-2.2.47}/tests/unit/test_executor.py +0 -0
  172. {fixos-2.2.46 → fixos-2.2.47}/tests/unit/test_llm_provider.py +0 -0
  173. {fixos-2.2.46 → fixos-2.2.47}/tests/unit/test_orchestrator.py +0 -0
  174. {fixos-2.2.46 → fixos-2.2.47}/tests/unit/test_project_scanner.py +0 -0
  175. {fixos-2.2.46 → fixos-2.2.47}/tests/unit/test_quick_cmd.py +0 -0
  176. {fixos-2.2.46 → fixos-2.2.47}/tests/unit/test_quick_snapshot.py +0 -0
  177. {fixos-2.2.46 → fixos-2.2.47}/tests/unit/test_resources_quick.py +0 -0
  178. {fixos-2.2.46 → fixos-2.2.47}/tests/unit/test_security_quick.py +0 -0
  179. {fixos-2.2.46 → fixos-2.2.47}/tests/unit/test_service_scanner.py +0 -0
  180. {fixos-2.2.46 → fixos-2.2.47}/tests/unit/test_system_checks_parallel.py +0 -0
@@ -2,15 +2,25 @@
2
2
 
3
3
  ### Added
4
4
 
5
- - `fixos cleanup --docker-old [--days N]` oraz `-c docker-old`: usuwa wyłącznie
6
- nieużywane obrazy Docker i build cache starsze niż N dni (domyślnie 30);
7
- bez wolumenów i bez obrazów używanych przez kontenery.
5
+ - `fixos cleanup --docker-networks [--days N]` oraz `-c docker-networks`:
6
+ bezpieczny podgląd i usuwanie niestandardowych sieci Docker bez endpointów,
7
+ z ochroną sieci aktywnych/wbudowanych i końcowym testem puli adresowej.
8
+ - `fixos cleanup --docker-all` / `-c docker-all`: jedna operacja dla wszystkich
9
+ nieużywanych obrazów, build cache i osieroconych sieci, bez kontenerów i
10
+ wolumenów. `--docker-old` oraz interaktywne czyszczenie Dockera również
11
+ dołączają osierocone sieci.
12
+ - `fixos projects --docker-networks`: opcjonalne usuwanie sieci `dangling`
13
+ należących do wybranych projektów Compose, z dopasowaniem po etykiecie,
14
+ osobnym potwierdzeniem i usuwaniem wyłącznie wcześniej pokazanych ID.
15
+ - `fixos cleanup --docker-old [--days N]` oraz `-c docker-old`: usuwa
16
+ nieużywane obrazy Docker i build cache starsze niż N dni (domyślnie 30)
17
+ oraz osierocone sieci; bez wolumenów i obrazów używanych przez kontenery.
8
18
  - `fixos cleanup --ollama-old [--days N]` oraz `-c ollama-old`: usuwa modele
9
19
  Ollama niezmieniane od N dni (domyślnie 90), z pominięciem modeli
10
20
  aktualnie załadowanych (`/api/ps`).
11
21
  - Opcja interaktywna **[1] Wszystkie bezpieczne** obejmuje teraz także:
12
- - **Docker (nieużywane obrazy)** — pełną pulę unused (zgodną z RECLAIMABLE
13
- Images+Build Cache), bez filtra wieku,
22
+ - **Docker (nieużywane zasoby)** — pełną pulę unused Images+Build Cache
23
+ oraz osierocone sieci, bez filtra wieku,
14
24
  - **Ollama (modele >90 dni)** — gdy takie modele istnieją.
15
25
  - Pomiar zwolnionego miejsca Dockera przez `docker system df` przed/po oraz
16
26
  parsowanie `Total reclaimed space`; ostrzeżenie przy 0.00 GB mimo sukcesu
@@ -70,6 +80,28 @@
70
80
  rekurencyjnych skanów `/` oraz `/home` z szybkich kontroli.
71
81
  - Czyszczenie cache JetBrains trafia w aktualną ścieżkę i wymaga zamknięcia IDE.
72
82
 
83
+ ## [2.2.47] - 2026-08-13
84
+
85
+ ### Docs
86
+ - Update CHANGELOG.md
87
+ - Update README.md
88
+ - Update docs/architecture.md
89
+ - Update docs/getting-started.md
90
+
91
+ ### Test
92
+ - Update tests/unit/test_cleanup_cmd.py
93
+ - Update tests/unit/test_docker_network_cleanup.py
94
+ - Update tests/unit/test_projects_cmd.py
95
+ - Update tests/unit/test_service_cleanup.py
96
+
97
+ ### Other
98
+ - Update fixos/cli/cleanup_cmd.py
99
+ - Update fixos/cli/main.py
100
+ - Update fixos/cli/projects_cmd.py
101
+ - Update fixos/diagnostics/docker_network_cleanup.py
102
+ - Update fixos/diagnostics/service_cleanup.py
103
+ - Update uv.lock
104
+
73
105
  ## [2.2.46] - 2026-08-07
74
106
 
75
107
  ### Docs
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fixos
3
- Version: 2.2.46
3
+ Version: 2.2.47
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
@@ -35,9 +35,9 @@ Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
35
35
  Requires-Dist: pytest-xdist>=3.5.0; extra == "dev"
36
36
  Requires-Dist: pytest-timeout>=2.2.0; extra == "dev"
37
37
  Requires-Dist: pytest-sugar>=0.9.7; extra == "dev"
38
- Requires-Dist: goal>=2.1.0; extra == "dev"
38
+ Requires-Dist: goal>=2.1.0; python_version >= "3.12" and extra == "dev"
39
39
  Requires-Dist: costs>=0.1.20; extra == "dev"
40
- Requires-Dist: pfix>=0.1.60; extra == "dev"
40
+ Requires-Dist: pfix>=0.1.60; python_version >= "3.10" and extra == "dev"
41
41
  Dynamic: home-page
42
42
  Dynamic: license-file
43
43
  Dynamic: requires-python
@@ -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.46-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.84-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-40.6h-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.47-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.85-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-40.8h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
68
68
 
69
- - 🤖 **LLM usage:** $4.8388 (151 commits)
70
- - 👤 **Human dev:** ~$4059 (40.6h @ $100/h, 30min dedup)
69
+ - 🤖 **LLM usage:** $4.8536 (152 commits)
70
+ - 👤 **Human dev:** ~$4079 (40.8h @ $100/h, 30min dedup)
71
71
 
72
- Generated on 2026-08-07 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
72
+ Generated on 2026-08-13 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
73
73
 
74
74
  ---
75
75
 
@@ -118,10 +118,13 @@ fixos quick --deep – szybki wynik, potem pełny skan danych usług
118
118
  fixos fix – diagnoza + sesja naprawcza z AI (HITL)
119
119
  fixos scan – diagnostyka systemu bez AI
120
120
  fixos cleanup – skanuj i czyść dane usług (Docker, npm, pip, ...)
121
- fixos cleanup --docker-old – nieużywane obrazy Docker starsze niż N dni (--days)
121
+ fixos cleanup --docker-all – wszystkie unused images/cache + osierocone sieci
122
+ fixos cleanup --docker-old – stare unused images/cache + osierocone sieci
123
+ fixos cleanup --docker-networks – tylko osierocone sieci + test puli
122
124
  fixos cleanup --ollama-old – modele Ollama niezmieniane od N dni (domyślnie 90)
123
125
  fixos cleanup --full – pełny audit systemu + dev projects
124
126
  fixos projects – skanuj projekty dev (venv, node_modules, ~/github/*/*)
127
+ fixos projects --docker-networks – nieużywane sieci Compose wybranych projektów
125
128
  fixos orchestrate – zaawansowana orkiestracja (graf problemów DAG)
126
129
  fixos llm – lista 12 providerów LLM + linki do kluczy API
127
130
  fixos token set KEY – zapisz klucz API do .env (auto-detekcja providera)
@@ -157,12 +160,19 @@ fixos cleanup --full --dry-run
157
160
 
158
161
  # Podgląd usług + interaktywne czyszczenie (opcja [1] = wszystkie bezpieczne)
159
162
  fixos cleanup --list
160
- fixos cleanup --dry-run # tylko gdy -c / --docker-old / --ollama-old
163
+ fixos cleanup --dry-run # tylko gdy -c / --docker-all / --docker-old / ...
161
164
  fixos cleanup
162
165
 
163
- # Nieużywane obrazy Docker starsze niż 30 dni (filtr wieku; może zwolnić mniej niż RECLAIMABLE)
166
+ # Wszystkie unused images/cache oraz osierocone sieci (bez wolumenów)
167
+ fixos cleanup --docker-all --dry-run
168
+
169
+ # Obrazy/cache starsze niż 30 dni oraz wszystkie osierocone sieci
164
170
  fixos cleanup --docker-old --days 30 --dry-run
165
171
 
172
+ # Sieci Docker bez endpointów; aktywne i wbudowane pozostają chronione
173
+ fixos cleanup --docker-networks --dry-run
174
+ fixos cleanup --docker-networks
175
+
166
176
  # Modele Ollama niezmieniane od 90+ dni (pomija uruchomione)
167
177
  fixos cleanup --ollama-old --days 90 --dry-run
168
178
 
@@ -185,6 +195,9 @@ fixos projects
185
195
  # Tylko artefakty nieużywane od >60 dni (bez świeżych venv)
186
196
  fixos projects --only-stale
187
197
 
198
+ # Stare artefakty + podgląd powiązanych, nieużywanych sieci Compose
199
+ fixos projects --only-stale --docker-networks --dry-run
200
+
188
201
  # Podgląd bez usuwania
189
202
  fixos projects --dry-run
190
203
 
@@ -274,9 +287,9 @@ Każda znaleziona usługa jest klasyfikowana do jednej z trzech grup:
274
287
 
275
288
  - **bezpieczne** – cache do odtworzenia jednym poleceniem (pip/npm/cargo/conda/nix/brew...)
276
289
  oraz ograniczone, jawnie bezpieczne akcje wiekowe / reclaimable:
277
- - **Docker (nieużywane obrazy)** — wszystkie unused images + build cache
278
- (bez wolumenów, bez obrazów podpiętych do kontenerów); odpowiada puli
279
- `RECLAIMABLE` Images+Build Cache,
290
+ - **Docker (nieużywane zasoby)** — wszystkie unused images + build cache
291
+ oraz osierocone sieci bez endpointów (bez wolumenów, bez obrazów
292
+ podpiętych do kontenerów); część dyskowa odpowiada puli `RECLAIMABLE`,
280
293
  - **Ollama (modele >90 dni)** — modele niezmieniane od 90+ dni; pomija
281
294
  modele aktualnie załadowane w pamięci.
282
295
  Tylko tę grupę usuwa opcja **[1] Wszystkie bezpieczne**.
@@ -289,13 +302,26 @@ Każda znaleziona usługa jest klasyfikowana do jednej z trzech grup:
289
302
  zbiorcze kasowanie modeli „na ślepo”, klastrów, maszyn wirtualnych, rozszerzeń i
290
303
  wolumenów jest wyłączone.
291
304
 
292
- Dedykowane flagi (też dostępne jako `-c docker-old` / `-c ollama-old`):
305
+ Dedykowane flagi (też dostępne jako `-c docker-all`, `-c docker-old`,
306
+ `-c docker-networks` oraz `-c ollama-old`):
293
307
 
294
308
  ```bash
295
- fixos cleanup --docker-old --days 30 --dry-run # tylko unused starsze niż N dni
309
+ fixos cleanup --docker-all --dry-run # all unused + sieci
310
+ fixos cleanup --docker-old --days 30 --dry-run # stare unused + sieci
311
+ fixos cleanup --docker-networks --dry-run # sieci bez endpointów
296
312
  fixos cleanup --ollama-old --days 90 --dry-run # modele niezmieniane od N dni
297
313
  ```
298
314
 
315
+ Osierocone sieci są czyszczone automatycznie razem z `--docker-all`,
316
+ `--docker-old` oraz dockerową pozycją w „Wszystkie bezpieczne”. Samodzielne
317
+ `--docker-networks` pozostaje dostępne, gdy obrazy i cache mają pozostać.
318
+ Mechanizm pobiera kandydatów z `dangling=true`, ponownie sprawdza brak
319
+ endpointów, chroni sieci `bridge`, `host` i `none`, a usuwa dokładne ID zamiast
320
+ wykonywać szeroki prune. Po wykonaniu tworzy i natychmiast usuwa sieć testową
321
+ oznaczoną `dev.fixos.cleanup-probe=true`; sukces potwierdza, że daemon może
322
+ ponownie przydzielić podsieć. Opcjonalne `--days N` dla samodzielnej akcji
323
+ ogranicza ją do sieci mających co najmniej N dni; domyślne `0` obejmuje wszystkie.
324
+
299
325
  `RECLAIMABLE` Dockera obejmuje też świeże unused images. Filtr `--docker-old`
300
326
  (domyślnie 30 dni) może więc zwolnić **znacznie mniej** niż szacunek całej puli —
301
327
  dlatego opcja `[1]` używa prune **wszystkich** nieużywanych obrazów, a
@@ -323,6 +349,14 @@ nazwie), `node_modules`/`.next`/`.turbo` (tylko gdy jest `package.json`),
323
349
  nieużywane od >60 dni (`--stale-days`) oraz projekty ze zduplikowanymi
324
350
  virtualenvami (np. i `venv`, i `.venv` naraz).
325
351
 
352
+ Opcjonalne `--docker-networks` dołącza do czyszczenia wybranych projektów
353
+ ich nieużywane sieci Docker Compose. Dopasowanie wymaga dokładnej etykiety
354
+ `com.docker.compose.project`; sieci bez tej etykiety nie są zgadywane po
355
+ nazwie. fixOS ponownie wymaga stanu `dangling`, chroni sieci z endpointami,
356
+ pokazuje nazwę, ID i podsieć, a przed usunięciem pyta o osobne potwierdzenie.
357
+ Usuwane są tylko ID pokazane w podglądzie, po czym wykonywany jest test puli
358
+ adresowej. Repozytorium projektu, kontenery i wolumeny pozostają nietknięte.
359
+
326
360
  ```bash
327
361
  $ fixos projects --only-stale
328
362
 
@@ -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.46-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.84-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-40.6h-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.47-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.85-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-40.8h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
24
24
 
25
- - 🤖 **LLM usage:** $4.8388 (151 commits)
26
- - 👤 **Human dev:** ~$4059 (40.6h @ $100/h, 30min dedup)
25
+ - 🤖 **LLM usage:** $4.8536 (152 commits)
26
+ - 👤 **Human dev:** ~$4079 (40.8h @ $100/h, 30min dedup)
27
27
 
28
- Generated on 2026-08-07 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
28
+ Generated on 2026-08-13 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
29
29
 
30
30
  ---
31
31
 
@@ -74,10 +74,13 @@ fixos quick --deep – szybki wynik, potem pełny skan danych usług
74
74
  fixos fix – diagnoza + sesja naprawcza z AI (HITL)
75
75
  fixos scan – diagnostyka systemu bez AI
76
76
  fixos cleanup – skanuj i czyść dane usług (Docker, npm, pip, ...)
77
- fixos cleanup --docker-old – nieużywane obrazy Docker starsze niż N dni (--days)
77
+ fixos cleanup --docker-all – wszystkie unused images/cache + osierocone sieci
78
+ fixos cleanup --docker-old – stare unused images/cache + osierocone sieci
79
+ fixos cleanup --docker-networks – tylko osierocone sieci + test puli
78
80
  fixos cleanup --ollama-old – modele Ollama niezmieniane od N dni (domyślnie 90)
79
81
  fixos cleanup --full – pełny audit systemu + dev projects
80
82
  fixos projects – skanuj projekty dev (venv, node_modules, ~/github/*/*)
83
+ fixos projects --docker-networks – nieużywane sieci Compose wybranych projektów
81
84
  fixos orchestrate – zaawansowana orkiestracja (graf problemów DAG)
82
85
  fixos llm – lista 12 providerów LLM + linki do kluczy API
83
86
  fixos token set KEY – zapisz klucz API do .env (auto-detekcja providera)
@@ -113,12 +116,19 @@ fixos cleanup --full --dry-run
113
116
 
114
117
  # Podgląd usług + interaktywne czyszczenie (opcja [1] = wszystkie bezpieczne)
115
118
  fixos cleanup --list
116
- fixos cleanup --dry-run # tylko gdy -c / --docker-old / --ollama-old
119
+ fixos cleanup --dry-run # tylko gdy -c / --docker-all / --docker-old / ...
117
120
  fixos cleanup
118
121
 
119
- # Nieużywane obrazy Docker starsze niż 30 dni (filtr wieku; może zwolnić mniej niż RECLAIMABLE)
122
+ # Wszystkie unused images/cache oraz osierocone sieci (bez wolumenów)
123
+ fixos cleanup --docker-all --dry-run
124
+
125
+ # Obrazy/cache starsze niż 30 dni oraz wszystkie osierocone sieci
120
126
  fixos cleanup --docker-old --days 30 --dry-run
121
127
 
128
+ # Sieci Docker bez endpointów; aktywne i wbudowane pozostają chronione
129
+ fixos cleanup --docker-networks --dry-run
130
+ fixos cleanup --docker-networks
131
+
122
132
  # Modele Ollama niezmieniane od 90+ dni (pomija uruchomione)
123
133
  fixos cleanup --ollama-old --days 90 --dry-run
124
134
 
@@ -141,6 +151,9 @@ fixos projects
141
151
  # Tylko artefakty nieużywane od >60 dni (bez świeżych venv)
142
152
  fixos projects --only-stale
143
153
 
154
+ # Stare artefakty + podgląd powiązanych, nieużywanych sieci Compose
155
+ fixos projects --only-stale --docker-networks --dry-run
156
+
144
157
  # Podgląd bez usuwania
145
158
  fixos projects --dry-run
146
159
 
@@ -230,9 +243,9 @@ Każda znaleziona usługa jest klasyfikowana do jednej z trzech grup:
230
243
 
231
244
  - **bezpieczne** – cache do odtworzenia jednym poleceniem (pip/npm/cargo/conda/nix/brew...)
232
245
  oraz ograniczone, jawnie bezpieczne akcje wiekowe / reclaimable:
233
- - **Docker (nieużywane obrazy)** — wszystkie unused images + build cache
234
- (bez wolumenów, bez obrazów podpiętych do kontenerów); odpowiada puli
235
- `RECLAIMABLE` Images+Build Cache,
246
+ - **Docker (nieużywane zasoby)** — wszystkie unused images + build cache
247
+ oraz osierocone sieci bez endpointów (bez wolumenów, bez obrazów
248
+ podpiętych do kontenerów); część dyskowa odpowiada puli `RECLAIMABLE`,
236
249
  - **Ollama (modele >90 dni)** — modele niezmieniane od 90+ dni; pomija
237
250
  modele aktualnie załadowane w pamięci.
238
251
  Tylko tę grupę usuwa opcja **[1] Wszystkie bezpieczne**.
@@ -245,13 +258,26 @@ Każda znaleziona usługa jest klasyfikowana do jednej z trzech grup:
245
258
  zbiorcze kasowanie modeli „na ślepo”, klastrów, maszyn wirtualnych, rozszerzeń i
246
259
  wolumenów jest wyłączone.
247
260
 
248
- Dedykowane flagi (też dostępne jako `-c docker-old` / `-c ollama-old`):
261
+ Dedykowane flagi (też dostępne jako `-c docker-all`, `-c docker-old`,
262
+ `-c docker-networks` oraz `-c ollama-old`):
249
263
 
250
264
  ```bash
251
- fixos cleanup --docker-old --days 30 --dry-run # tylko unused starsze niż N dni
265
+ fixos cleanup --docker-all --dry-run # all unused + sieci
266
+ fixos cleanup --docker-old --days 30 --dry-run # stare unused + sieci
267
+ fixos cleanup --docker-networks --dry-run # sieci bez endpointów
252
268
  fixos cleanup --ollama-old --days 90 --dry-run # modele niezmieniane od N dni
253
269
  ```
254
270
 
271
+ Osierocone sieci są czyszczone automatycznie razem z `--docker-all`,
272
+ `--docker-old` oraz dockerową pozycją w „Wszystkie bezpieczne”. Samodzielne
273
+ `--docker-networks` pozostaje dostępne, gdy obrazy i cache mają pozostać.
274
+ Mechanizm pobiera kandydatów z `dangling=true`, ponownie sprawdza brak
275
+ endpointów, chroni sieci `bridge`, `host` i `none`, a usuwa dokładne ID zamiast
276
+ wykonywać szeroki prune. Po wykonaniu tworzy i natychmiast usuwa sieć testową
277
+ oznaczoną `dev.fixos.cleanup-probe=true`; sukces potwierdza, że daemon może
278
+ ponownie przydzielić podsieć. Opcjonalne `--days N` dla samodzielnej akcji
279
+ ogranicza ją do sieci mających co najmniej N dni; domyślne `0` obejmuje wszystkie.
280
+
255
281
  `RECLAIMABLE` Dockera obejmuje też świeże unused images. Filtr `--docker-old`
256
282
  (domyślnie 30 dni) może więc zwolnić **znacznie mniej** niż szacunek całej puli —
257
283
  dlatego opcja `[1]` używa prune **wszystkich** nieużywanych obrazów, a
@@ -279,6 +305,14 @@ nazwie), `node_modules`/`.next`/`.turbo` (tylko gdy jest `package.json`),
279
305
  nieużywane od >60 dni (`--stale-days`) oraz projekty ze zduplikowanymi
280
306
  virtualenvami (np. i `venv`, i `.venv` naraz).
281
307
 
308
+ Opcjonalne `--docker-networks` dołącza do czyszczenia wybranych projektów
309
+ ich nieużywane sieci Docker Compose. Dopasowanie wymaga dokładnej etykiety
310
+ `com.docker.compose.project`; sieci bez tej etykiety nie są zgadywane po
311
+ nazwie. fixOS ponownie wymaga stanu `dangling`, chroni sieci z endpointami,
312
+ pokazuje nazwę, ID i podsieć, a przed usunięciem pyta o osobne potwierdzenie.
313
+ Usuwane są tylko ID pokazane w podglądzie, po czym wykonywany jest test puli
314
+ adresowej. Repozytorium projektu, kontenery i wolumeny pozostają nietknięte.
315
+
282
316
  ```bash
283
317
  $ fixos projects --only-stale
284
318
 
@@ -1,3 +1,3 @@
1
1
  """fixos – AI-powered Linux/Windows diagnostics and repair."""
2
2
 
3
- __version__ = "2.2.46"
3
+ __version__ = "2.2.47"