Skip to content

Laufwerksbelegung in der Seitenleiste visualisieren - #14

Open
lukisch wants to merge 14 commits into
masterfrom
feature/codex-drive-capacity-20260930
Open

lukisch wants to merge 14 commits into
masterfrom
feature/codex-drive-capacity-20260930

Conversation

@lukisch

@lukisch lukisch commented Sep 30, 2026 •

Copy link
Copy Markdown
Collaborator

Depends on #15. This branch contains the reviewed PR15 lifecycle/GC fix (2d8120c) followed by the capacity feature (4145cc3). Base remains master; merge order is #15, then #14, with the repository's independent review requirement respected.

ExplorerPro shows a translated capacity bar and free, used, and total binary units for each drive in the folder sidebar. Opening or refreshing the sidebar updates the reading; unavailable drives show an explanation instead of a false zero. Long OS reads run in bounded helper processes with a ten-second timeout, and shutdown stops those helpers and drains their worker pool before Qt teardown. A pre-Qt entrypoint supports the frozen Windows executable without stdout. Sidebar selection and narrow-width layout remain intact.

Validation:

  • PR14 head 4145cc3: focused capacity, helper, GC, browser and Store regression checks: 56 passed in 56.82s, RC 0.
  • Tested combined descendant after adding PR17: full suite 471 passed, 8 skipped in 376.92s, RC 0. Six Windows symlink tests require a privilege unavailable on this host; the release smoke needs a local packaged EXE, and the screenshot smoke needs a native Qt platform.
  • Translation check: 362 entries complete in DE/EN/ES/ZH/JA/RU; all 356 prior values are unchanged. Ruff, compileall, and diff check passed.
  • Fresh CI matrix 37142537479: all 9 OS/Python jobs passed. CodeQL 37142535473 passed.

The PR remains open for independent review. No package, build, Store submission, or release is claimed.

@github-actions

Copy link
Copy Markdown

Welcome! Thanks for your first pull request in this repository.

A maintainer will review it soon. Please make sure:

  • Your changes are tested
  • Documentation is updated if needed
  • The PR description explains what changed and why

Thanks for contributing.

lukisch and others added 4 commits October 1, 2026 20:00
…le rollback resilience and dialog state [BS-11]
Signed-off-by: Lukas Geiger <lukas@um-bruch.org>
Signed-off-by: Lukas Geiger <lukas@um-bruch.org>

@lukisch lukisch left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Zweitmodell-Review: CI grün (12/12), aber ein echter Sicherheitsbefund und starke Überlappung mit anderen PRs.

1. Befehlsinjektion beim Terminal-Start (src/core/platform_utils.py, get_terminal_command)
Der Verzeichnisname wird in Shell-Strings interpoliert:

  • PowerShell: f"Set-Location -LiteralPath '{directory}'". Ein Ordner mit ' im Namen (unter Windows erlaubt, z. B. x'; calc; ') bricht das Quoting aus und führt Code aus.
  • cmd-Fallback: f"cd /d {directory}" ist ungequotet. & im Ordnernamen führt zu einem zweiten Befehl.

open_terminal_in_directory setzt bereits cwd=target_dir, die Interpolation ist also überflüssig. Patch-Vorschlag:

if sys.platform.startswith("win"):
    if shutil.which("wt"):
        return ["wt", "-d", directory]
    if shutil.which("powershell"):
        return ["powershell", "-NoExit"]   # Arbeitsverzeichnis kommt über Popen(cwd=...)
    return ["cmd", "/K"]

Dazu einen Test mit einem Ordner namens a'b&c.

2. Überlappung
#14 ist praktisch ein Obermengen-Stand von #15 (Properties-Dialog, Terminal, GC, Batch-Rename-Rollback) plus Laufwerkskapazität (drive_usage.py, gemeinsam mit #17). checksum_dialog.py, gui_gc.py, tests/conftest.py und main.py werden in #14, #15 und #17 jeweils unterschiedlich geändert. Es drohen Konflikte oder doppelte Arbeit. Bitte entscheiden, welche PRs bestehen bleiben, und die Reihenfolge festlegen.

3. Kleinigkeiten

  • main_window.py: zusätzliche Leerzeile direkt nach def _open_folder(self): vor dem Docstring, ebenfalls doppelte Leerzeilen im Menüaufbau (ruff-Stil).
  • platform_utils.py: import shutil steht nach zwei Leerzeilen mitten im Header.

Positiv: Batch-Rename-Rollback (zweistufig, Swaps und Zyklen), negative Nummerierung und CLOCK$ sind sauber mit Tests abgedeckt. Keine Credentials oder Nutzerpfade im Diff.


Generated by Claude Code

lukisch commented Oct 3, 2026

Copy link
Copy Markdown
Collaborator Author

Korrektur zu meinem Review vom 3.10.2026

Frühere Aussage: Punkt 1 des Reviews führt einen Sicherheitsbefund zum Terminal-Start als Befund dieses PR auf.

Korrektur: Die dort genannte Funktion in src/core/platform_utils.py steht bereits auf dem Hauptzweig (master, zum Prüfzeitpunkt 8a3989c) und wird von diesem PR nicht geändert: Die Datei steht nicht in der Dateiliste des PR. Per Diff geprüft gegen den Stand 4145cc3b02171c4858832b9a33ddf0bd5d3c1a7a. Es ist also kein Befund dieses PR, sondern des Hauptzweigs. Ein Fix gehört in einen eigenen PR, nicht in diesen.

Bestätigt bleibt: #15 ist Git-Vorfahre von #14 (per git merge-base --is-ancestor).

Hinweis zu Details: Weitere technische Einzelheiten zu diesem Punkt bitte nicht in diesem öffentlichen Thread, sondern über einen dafür geeigneten privaten Kanal klären (z. B. einen Security Advisory des Repos). Die Patch-Skizze im Review ist nicht unter Windows geprüft.

Alle Entscheidungen (Basis-PR, Reihenfolge) bleiben offen.


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant