2 months ago
10ed49dWire the remaining issue #151 gaps: - Manifest-based pull: revision.rs reads the repository manifest to discover the committed generation, downloads the generation-specific database from `.openkara/databases/<gen>.sqlite` with size + SHA-256 verification against the manifest, and advances `committed_generation` in the control DB. Legacy repositories (no manifest) fall back to pulling `openkara.db` directly. - GC executor: `execute_gc` picks up pending Gc operation rows and deletes database generations older than `committed_generation - 1`. The previous generation is retained as a rollback safety net. Skips cleanup when the manifest has not yet advanced to the expected generation. - Resumable uploads: Dropbox `resumable_upload_bytes` wires the existing upload_session helpers (start/append/finish) with control-DB progress persistence. Google Drive wires `google_drive_resumable_upload` with session URL persistence. WebDAV `upload_file` now uses staged upload (PUT to staging + server-side MOVE) with direct-PUT fallback. - Range downloads: Dropbox, Google Drive, and WebDAV all implement `download_range` using HTTP Range headers, writing bytes at the requested offset without truncating the destination file. - Credential refresh single-flight: process-wide `OnceLock<Mutex<()>>` in Dropbox and Google Drive refresh paths ensures concurrent expired token requests cause only one network refresh call. - Cleaned up stale PR#4/PR#5/PR#8 TODO comments now that the features are implemented.
Parent65e7802