Full Rust implementation of the warpgate NAS cache proxy:
- CLI: clap-based with subcommands (run, setup, status, cache, warmup,
bwlimit, speed-test, config-init, log)
- Config: TOML-based with env var override, preset templates
- rclone: VFS mount args builder, config generator, RC API client
- Services: Samba config gen, NFS exports, WebDAV serve args, systemd units
- Deploy: dependency checker, filesystem validation, one-click setup
- Supervisor: single-process tree managing rclone mount + smbd + WebDAV
as child processes — no systemd dependency for protocol management
Supervisor hardening:
- ProtocolChildren Drop impl prevents orphaned processes on startup failure
- Early rclone exit detection in mount wait loop (fail fast, not 30s timeout)
- Graceful SIGTERM → 3s grace → SIGKILL (prevents orphaned smbd workers)
- RestartTracker with 5-min stability reset and linear backoff (2s/4s/6s)
- Shutdown signal checked during mount wait and before protocol start
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Drop the read-only cache + SD Uploader design in favor of rclone VFS
native read-write caching. Key changes:
- SMB shares are now read-write, writes go to SSD and async write-back to NAS
- Remove SD card import/upload, metadata DB, self-built polling
- Simplify remote change detection to rclone --dir-cache-time
- Add dirty file management, write-back config, and related risks
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Instead of moving conflict files to a separate conflict/ directory,
keep them in the original directory with naming convention:
{name} (Warpgate Conflict {YYYY-MM-DD HH-mm}).{ext}
Benefits:
- Lightroom/Finder see both versions side by side
- Preserved extension ensures app compatibility
- Matches Dropbox/iCloud behavior users already know
- Conflict copies auto-sync to NAS via rclone (backed up)
Remote-deleted + local-dirty: file stays in place (no rename),
marked as orphan-conflict, user decides whether to re-upload.
Updated: decision matrix diagrams, scenario walkthroughs,
cache_files lifecycle, CLI commands, config section, directory
structure description.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Throughput-based congestion detection: when sustained throughput
drops >30% over sliding window with rising RTT, auto-reduce
write-back speed to 50% of current throughput, then probe back up
at +10% every 2 minutes.
- Throttle state visible via `warpgate status`
- User can disable with BW_ADAPTIVE=no
- Only affects write-back uploads, not read fetches
- New config: BW_ADAPTIVE, BW_ADAPTIVE_WINDOW, BW_ADAPTIVE_PROBE_INTERVAL
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SQLite WAL depends on POSIX file locks and shared memory (-shm),
which FUSE/network filesystems cannot support correctly.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Hotel/airport WiFi requires web-based captive portal authentication,
which is impossible on a headless device without this feature.
- New P1 feature 4.11: Setup AP + Captive Portal proxy
- Box auto-enters setup mode when no network is available
- Phone connects to temporary AP, completes portal auth via proxy
- Requires WiFi AP+STA concurrent mode
- Fallback options: USB tethering, mobile hotspot, ethernet, MAC clone
- New CLI commands: warpgate setup-wifi, warpgate clone-mac
- New config section for setup AP parameters
- Updated hardware requirements: WiFi module must support AP+STA
- Updated roadmap v1.5 to include setup AP
- Added risk entry and glossary terms
- Renumbered 4.12-4.23 accordingly
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>