- Implement explicit threading.Event propagation for robust GUI cancellation.
- Optimize file synchronization by skipping hash validation for up-to-date files (matching size and timestamp).
- Update Windows long path support to correctly handle UNC network shares.
- Refactor configuration management to eliminate global state and improve modularity.
- Remove requests.get monkey-patch in GUI.
- Delete CLAUDE.md as it is no longer required.
- Implementerer korrekt boolean parsing for ENABLE_HASH_VALIDATION
- Tilføjer fejlhåndtering (try/except) ved parsing af HASH_THRESHOLD_MB
- Sikrer 100% konsistens mellem GUI-input og backend-logik
- Rydder op i duplicate kode i download_single_file
- Sikrer korrekt type-casting af config-variabler (bool/int)
- Verificerer at alle GUI-parametre læses korrekt i main()
- Tilføjer 'get_long_path' for at understøtte Windows-stier over 260 tegn
- Implementerer dual-mode hashing: Bruger 'quickxorhash' C-bibliotek hvis muligt, ellers manual Python fallback
- Opdaterer requirements.txt med quickxorhash
- Opdaterer README.md og GEMINI.md med de seneste funktioner og tekniske specifikationer
- Opdaterer sharepoint_gui.py med felter til ENABLE_HASH_VALIDATION og HASH_THRESHOLD_MB
- Gør download_sharepoint.py i stand til at læse disse indstillinger fra konfigurationsfilen
- Justerer GUI-layoutet (større vindue) for at give plads til de nye kontrolmuligheder
- GUI'en bruger nu automatisk den nye tidsstempel-baserede synkronisering
- Implementerer sammenligning af lastModifiedDateTime fra SharePoint med lokal mtime
- Konverterer ISO8601 UTC-tidsstempler til unix timestamp for præcis sammenligning
- Tilføjer 1-sekunds tolerance for at håndtere filsystemets tidspræcision
- Sikrer at data kun hentes ned hvis kilden er opdateret, eller hvis lokal fil er korrupt
- Tilføjer automatisk fallback til 'Documents' hvis 'Delte dokumenter' ikke findes
- Forbedrer fejlmeddelelsen ved at logge alle tilgængelige biblioteksnavne på sitet
- Dette løser problemer med lokaliserede SharePoint-navne (dansk vs engelsk)
- ENABLE_HASH_VALIDATION (True/False) tilføjet til toppen af scriptet
- HASH_THRESHOLD_MB tilføjet for nem justering af størrelsesgrænsen
- verify_integrity opdateret til at respektere begge indstillinger
- Spring hash-tjek over for filer over 30 MB for at spare tid ved store filer (f.eks. 65 GB)
- Filer over grænsen sammenlignes kun på størrelse
- Tilføjer logning når hash-tjek springes over
- Korrigerer finaliseringslogikken så filstørrelsen XOR'es ind i de mest betydende 64 bit af 160-bit staten
- Tidligere version XOR'ede i de mindst betydende bit, hvilket gav forkerte hashes
- Dette matcher nu præcis Microsofts specifikation og fjerner falske hash-mismatches
- Opdaterer quickxorhash til at bruge en 160-bit heltalsbuffer for korrekt cirkulær rotation
- Tilføjer det obligatoriske XOR-trin med filens længde, som manglede tidligere
- Sikrer korrekt 20-byte little-endian format ved base64-encoding
- Dette løser problemet med konstante hash-mismatch på ellers korrekte filer
- get_fresh_download_url: tilføjer 429-tjek med Retry-After og erstatter
fast sleep(1) med eksponentiel backoff (2^attempt sekunder)
- process_item_list: tilføjer MAX_FOLDER_DEPTH=50 guard mod RecursionError
ved unormalt dybe SharePoint-mappestrukturer
- README og CLAUDE.md opdateret med beskrivelse af nye adfærd
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Implementér QuickXorHash korrekt med 3 × uint64 cells matching Microsofts
C#-reference — tidligere 8-bit implementation gav forkert hash
- verify_integrity tjekker nu hash på eksisterende filer ved skip-check og
re-downloader ved mismatch i stedet for blindt at acceptere filen
- retry_request raiser RetryError ved opbrugte forsøg i stedet for at
returnere None, som ville crashe kaldere med AttributeError
- format_size håndterer nu filer >= 1 PB (PB og EB tilføjet)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- force_refresh sendes nu korrekt til MSAL så token-cache omgås ved 401
- safe_get bruges ved download-retry efter URL-refresh for at få exponential backoff
- CSV DictWriter genbruges i stedet for at oprette to separate instanser
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>