fixos 2.2.36__tar.gz → 2.2.37__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.
- {fixos-2.2.36 → fixos-2.2.37}/CHANGELOG.md +9 -0
- {fixos-2.2.36 → fixos-2.2.37}/PKG-INFO +9 -6
- {fixos-2.2.36 → fixos-2.2.37}/README.md +8 -5
- {fixos-2.2.36 → fixos-2.2.37}/fixos/__init__.py +1 -1
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/cleanup_cmd.py +34 -12
- {fixos-2.2.36 → fixos-2.2.37}/fixos.egg-info/PKG-INFO +9 -6
- {fixos-2.2.36 → fixos-2.2.37}/pyproject.toml +1 -1
- {fixos-2.2.36 → fixos-2.2.37}/setup.py +1 -1
- {fixos-2.2.36 → fixos-2.2.37}/.env.example +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/LICENSE +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/MANIFEST.in +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docker/README.md +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docker/TEST_RESULTS.md +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docker/TEST_RESULTS_V2.md +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docker/alpine/Dockerfile +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docker/arch/Dockerfile +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docker/base/Dockerfile +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docker/broken-audio/Dockerfile +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docker/broken-full/Dockerfile +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docker/broken-network/Dockerfile +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docker/broken-thumbnails/Dockerfile +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docker/debian/Dockerfile +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docker/docker-compose.multi-system.yml +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docker/docker-compose.yml +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docker/fedora/Dockerfile +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docker/test-multi-system.sh +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docker/test-scenarios.sh +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docker/ubuntu/Dockerfile +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docker/validate-scenario.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docs/examples/advanced_usage.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/docs/examples/quickstart.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/agent/__init__.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/agent/autonomous.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/agent/autonomous_session.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/agent/hitl.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/agent/hitl_session.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/agent/session_core.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/agent/session_handlers.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/agent/session_io.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/anonymizer.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/__init__.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/_cleanup_flatpak.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/_cleanup_home.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/_cleanup_snap.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/_cleanup_system.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/_cleanup_utils.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/ask_cmd.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/config_cmd.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/features_cmd.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/fix_cmd.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/history_cmd.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/main.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/orchestrate_cmd.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/output_formatter.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/profile_cmd.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/provider_cmd.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/quickfix_cmd.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/report_cmd.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/rollback_cmd.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/scan_cmd.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/shared.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/token_cmd.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli/watch_cmd.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/cli.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/config.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/config_interactive.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/constants.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/__init__.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/_flatpak_analysis_mixin.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/_flatpak_execution_mixin.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/_flatpak_recommendations_mixin.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/_storage_container_mixin.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/_storage_system_mixin.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/_storage_user_mixin.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/cache_discovery.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/checks/__init__.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/checks/_shared.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/checks/audio.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/checks/file_analysis.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/checks/hardware.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/checks/packages.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/checks/resources.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/checks/security.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/checks/storage_optimization.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/checks/system_core.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/checks/thumbnails.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/dev_project_analyzer.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/disk_analyzer.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/flatpak_analyzer.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/service_cleanup.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/service_details.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/service_scanner.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/storage_analyzer.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/system_checks.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/diagnostics/utils.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/features/__init__.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/features/auditor.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/features/catalog.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/features/installer.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/features/profiles.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/features/renderer.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/fixes/__init__.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/interactive/__init__.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/interactive/cleanup_planner.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/llm_shell.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/orchestrator/__init__.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/orchestrator/executor.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/orchestrator/graph.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/orchestrator/orchestrator.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/orchestrator/rollback.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/platform_utils.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/plugins/__init__.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/plugins/base.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/plugins/builtin/__init__.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/plugins/builtin/audio.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/plugins/builtin/disk.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/plugins/builtin/hardware.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/plugins/builtin/resources.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/plugins/builtin/security.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/plugins/builtin/thumbnails.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/plugins/registry.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/profiles/__init__.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/providers/__init__.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/providers/llm.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/providers/llm_analyzer.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/providers/schemas.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/system_checks.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/utils/__init__.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/utils/anonymizer.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/utils/terminal.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/utils/timeout.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/utils/web_search.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos/watch.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos.egg-info/SOURCES.txt +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos.egg-info/dependency_links.txt +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos.egg-info/entry_points.txt +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos.egg-info/requires.txt +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/fixos.egg-info/top_level.txt +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/pytest.ini +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/requirements-dev.txt +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/requirements.txt +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/scripts/pyqual-calibrate.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/setup.cfg +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/__init__.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/conftest.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/e2e/__init__.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/e2e/test_anonymization_layers.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/e2e/test_audio_broken.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/e2e/test_cli.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/e2e/test_diagnostics_integration.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/e2e/test_executor.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/e2e/test_multi_system.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/e2e/test_network_broken.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/e2e/test_thumbnails_broken.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/test_fixos.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/unit/__init__.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/unit/test_anonymizer.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/unit/test_cache_discovery.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/unit/test_core.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/unit/test_executor.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/unit/test_orchestrator.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/unit/test_service_cleanup.py +0 -0
- {fixos-2.2.36 → fixos-2.2.37}/tests/unit/test_service_scanner.py +0 -0
|
@@ -150,6 +150,15 @@ fix(goal): code analysis engine
|
|
|
150
150
|
- **refactor(cli):** Usunięto zduplikowany kod ujednolicając funkcje analizy dysku do wspólnego helpera `_run_disk_analysis`.
|
|
151
151
|
- **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
152
|
|
|
153
|
+
## [2.2.37] - 2026-07-15
|
|
154
|
+
|
|
155
|
+
### Docs
|
|
156
|
+
- Update README.md
|
|
157
|
+
|
|
158
|
+
### Other
|
|
159
|
+
- Update fixos/cli/cleanup_cmd.py
|
|
160
|
+
- Update img.png
|
|
161
|
+
|
|
153
162
|
## [2.2.36] - 2026-07-15
|
|
154
163
|
|
|
155
164
|
### Docs
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fixos
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.37
|
|
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
|
-
    
|
|
67
|
+
  
|
|
68
68
|
|
|
69
|
-
- 🤖 **LLM usage:** $
|
|
70
|
-
- 👤 **Human dev:** ~$
|
|
69
|
+
- 🤖 **LLM usage:** $4.5585 (143 commits)
|
|
70
|
+
- 👤 **Human dev:** ~$3616 (36.2h @ $100/h, 30min dedup)
|
|
71
71
|
|
|
72
|
-
Generated on 2026-07-
|
|
72
|
+
Generated on 2026-07-15 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
|
|
73
73
|
|
|
74
74
|
---
|
|
75
75
|
|
|
@@ -524,3 +524,6 @@ Licensed under Apache-2.0.
|
|
|
524
524
|
## Author
|
|
525
525
|
|
|
526
526
|
Tom Sapletta
|
|
527
|
+
## life is life
|
|
528
|
+
|
|
529
|
+

|
|
@@ -19,13 +19,13 @@ AI-powered OS Diagnostics
|
|
|
19
19
|
|
|
20
20
|
## AI Cost Tracking
|
|
21
21
|
|
|
22
|
-
    
|
|
23
|
+
  
|
|
24
24
|
|
|
25
|
-
- 🤖 **LLM usage:** $
|
|
26
|
-
- 👤 **Human dev:** ~$
|
|
25
|
+
- 🤖 **LLM usage:** $4.5585 (143 commits)
|
|
26
|
+
- 👤 **Human dev:** ~$3616 (36.2h @ $100/h, 30min dedup)
|
|
27
27
|
|
|
28
|
-
Generated on 2026-07-
|
|
28
|
+
Generated on 2026-07-15 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
@@ -480,3 +480,6 @@ Licensed under Apache-2.0.
|
|
|
480
480
|
## Author
|
|
481
481
|
|
|
482
482
|
Tom Sapletta
|
|
483
|
+
## life is life
|
|
484
|
+
|
|
485
|
+

|
|
@@ -307,21 +307,43 @@ def _cleanup_single_service(
|
|
|
307
307
|
# ── Interactive cleanup orchestration ─────────────────────────────────────
|
|
308
308
|
|
|
309
309
|
|
|
310
|
+
def _size_str(svc: dict) -> str:
|
|
311
|
+
return f"{svc['size_gb']:.2f} GB" if svc["size_gb"] >= 1 else f"{svc['size_mb']:.0f} MB"
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
def _select_safe_services(safe_services: list) -> list:
|
|
315
|
+
"""Ask what to clean from the safe tier: all of it, hand-picked items, or none."""
|
|
316
|
+
click.echo(click.style("Bezpieczne do wyczyszczenia:", fg="green"))
|
|
317
|
+
for svc in safe_services:
|
|
318
|
+
click.echo(f" • {svc['name']}: {_size_str(svc)}")
|
|
319
|
+
safe_total = sum(s["size_gb"] for s in safe_services)
|
|
320
|
+
|
|
321
|
+
click.echo()
|
|
322
|
+
click.echo("Co wyczyścić?")
|
|
323
|
+
click.echo(f" [1] Wszystkie bezpieczne (zwolni {safe_total:.2f} GB)")
|
|
324
|
+
click.echo(" [2] Wybierz pojedyncze usługi")
|
|
325
|
+
click.echo(" [0] Nic — pomiń")
|
|
326
|
+
choice = click.prompt(
|
|
327
|
+
"Wybór", type=click.Choice(["0", "1", "2"]), default="1", show_choices=False
|
|
328
|
+
)
|
|
329
|
+
|
|
330
|
+
if choice == "0":
|
|
331
|
+
return []
|
|
332
|
+
if choice == "1":
|
|
333
|
+
return safe_services
|
|
334
|
+
|
|
335
|
+
click.echo(click.style("Wybierz usługi do wyczyszczenia:", fg="cyan"))
|
|
336
|
+
return [svc for svc in safe_services if click.confirm(f" {svc['name']} ({_size_str(svc)})")]
|
|
337
|
+
|
|
338
|
+
|
|
310
339
|
def _run_interactive_cleanup(plan: dict, list_only: bool, scanner) -> None:
|
|
311
340
|
"""Offer interactive safe cleanup and display unsafe services."""
|
|
312
341
|
if not list_only and plan["safe_to_cleanup"]:
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
if svc["size_gb"] >= 1
|
|
319
|
-
else f"{svc['size_mb']:.0f} MB"
|
|
320
|
-
)
|
|
321
|
-
click.echo(f" • {svc['name']}: {size_str}")
|
|
322
|
-
click.echo()
|
|
323
|
-
if click.confirm(f"Wyczyścić bezpieczne usługi? (zwolni {safe_total:.2f} GB)"):
|
|
324
|
-
_execute_safe_cleanup(plan["safe_to_cleanup"], scanner)
|
|
342
|
+
selected = _select_safe_services(plan["safe_to_cleanup"])
|
|
343
|
+
if selected:
|
|
344
|
+
_execute_safe_cleanup(selected, scanner)
|
|
345
|
+
else:
|
|
346
|
+
click.echo(click.style("Pominięto czyszczenie.", fg="yellow"))
|
|
325
347
|
if plan["requires_review"] and not list_only:
|
|
326
348
|
_display_unsafe_services(plan["requires_review"])
|
|
327
349
|
if plan.get("dangerous") and not list_only:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fixos
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.37
|
|
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
|
-
    
|
|
67
|
+
  
|
|
68
68
|
|
|
69
|
-
- 🤖 **LLM usage:** $
|
|
70
|
-
- 👤 **Human dev:** ~$
|
|
69
|
+
- 🤖 **LLM usage:** $4.5585 (143 commits)
|
|
70
|
+
- 👤 **Human dev:** ~$3616 (36.2h @ $100/h, 30min dedup)
|
|
71
71
|
|
|
72
|
-
Generated on 2026-07-
|
|
72
|
+
Generated on 2026-07-15 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
|
|
73
73
|
|
|
74
74
|
---
|
|
75
75
|
|
|
@@ -524,3 +524,6 @@ Licensed under Apache-2.0.
|
|
|
524
524
|
## Author
|
|
525
525
|
|
|
526
526
|
Tom Sapletta
|
|
527
|
+
## life is life
|
|
528
|
+
|
|
529
|
+

|
|
@@ -5,7 +5,7 @@ long_description = (Path(__file__).parent / "README.md").read_text(encoding="utf
|
|
|
5
5
|
|
|
6
6
|
setup(
|
|
7
7
|
name="fixos",
|
|
8
|
-
version="2.2.
|
|
8
|
+
version="2.2.37",
|
|
9
9
|
description="AI-powered Linux/Windows diagnostics and repair with anonymization",
|
|
10
10
|
long_description=long_description,
|
|
11
11
|
long_description_content_type="text/markdown",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|