Skip to content

fix(browser): Laufwerkswechsel ohne Hänger, Startseiten vorladen (1.0.9) - #23

Merged
lukisch merged 1 commit into
masterfrom
fix/drive-switch-1.0.9
Oct 10, 2026
Merged

lukisch merged 1 commit into
masterfrom
fix/drive-switch-1.0.9

Conversation

@lukisch

@lukisch lukisch commented Oct 10, 2026

Copy link
Copy Markdown
Collaborator

Problem (Nutzertest der Test-EXE)

Beim Auswählen/Wechseln von Laufwerken hängt die Oberfläche noch; Wunsch: Startseite jedes Laufwerks vorladen und vorhalten.

Ursache

Alle Wege (Seitenleiste, Adressleiste, Tastatur, Favoriten) enden in FileBrowser.navigate_to, das os.path.isfile/isdir auf dem Zielpfad im GUI-Thread ausführte (bei G:/Netz/leerem Kartenleser Sekunden). Messung auf master: Ereignisschleife 2,094 s still.

Änderung

  • navigate_to: Pfade, die als erreichbar bekannt sind (besucht, Vorfahren davon, vorgeladene Laufwerke), wechseln sofort ohne Stat; unbekannte werden im Worker (AsyncFs) geprüft: Hinweis "wird geladen …", alte Ansicht bleibt bedienbar, neuere Navigation hat Vorrang, nach 15 s "Keine Antwort – Laufwerk reagiert nicht".
  • preload_roots: nach dem Start (800 ms) werden die Laufwerks-Wurzeln nacheinander im Worker geprüft (lokale Platten zuerst, dann Wechsel-/Netz-/Cloud via GetDriveTypeW, 300 ms Abstand, 15 s Timeout); bei Erfolg als bekannt markiert und das QFileSystemModel per fetchMore vorgewärmt.
  • Leerer/noch ladender Ordner: Hinweis "wird geladen …" im Hauptbereich bis directoryLoaded.
  • Version bleibt 1.0.9; CHANGELOG de/en, release-notes v1.0.9, 1 neuer String (6 Sprachen).

Tests

  • tests/test_drive_switch.py (6): rot auf master (5 failed, 2,094 s Blockade), grün auf Branch (Tick-Abstand 0,05-0,08 s).
  • Suite in C:\_Local_DEV\venvs\explorerpro-store (-n 2): vorher (ST1, master 24c2282) 1 failed / 560 passed; nachher 1 failed / 566 passed / 9 skipped. Der eine Fehler ist derselbe host-bedingte test_four_stalled_reads… (Prozessstart ~1 s bei Timeout 1 s).
  • conftest setzt für Altests FileBrowser.ASYNC_VALIDATE=False (sofortige Navigation); der Async-Pfad wird nur von den neuen Tests geprüft.

Grenzen: Bekannte Pfade werden nicht erneut geprüft; QFileSystemModel.setRootPath macht intern einen Stat (nur für als erreichbar bekannte Pfade). Vorgehaltene Daten sind im Speicher (das Modell zeigt zuvor geladene Ordner aus seinem Cache), keine Persistenz.

…'s start page

navigate_to validates unknown paths in a worker (hint, timeout, newest wins);
known/preloaded paths switch at once. Drive roots are probed in the background
after startup (local first, throttled, timeout) and the QFileSystemModel is
warmed. Tests measure the event loop during a slow switch.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LYHP4Js5ggpzQ78JXWRe5E
@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

lukisch commented Oct 10, 2026

Copy link
Copy Markdown
Collaborator Author

Review (Zwei-Modell-Regel): Claude Opus 5.5 als Operator. Ursache (navigate_to: isfile/isdir im GUI-Thread, 2,09 s Stillstand) und Fix geprüft: zentrale Validierung im AsyncFs-Worker, neueste Navigation gewinnt, Timeout-Hinweis, gedrosseltes Vorladen der Laufwerks-Startseiten (lokal zuerst). Tests: test_drive_switch 6/6 (auf master 5 rot), Gesamtsuite 566 passed / 1 hostbedingt rot. Folgeaufgabe: bekannte Netz-/Wechsellaufwerkspfade nicht ungeprüft öffnen, sondern Altstand zeigen und im Hintergrund nachprüfen.

@lukisch
lukisch merged commit 483f3f4 into master Oct 10, 2026
14 checks passed
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