[2.8.0] - 2026-03-04
Koofr Native API, Production CLI & AeroAgent Server Exec
Koofr joins as the 20th protocol with a native REST API provider. The CLI binary graduates from stub to production-grade with 13 commands across all 20 protocols, tested live against 5 real servers. AeroAgent gains the ability to connect to any saved server — passwords resolved securely from the vault, never exposed to the AI model. License infrastructure laid for future Pro features.
Added
- Koofr native REST API (20th protocol): Full
StorageProviderimplementation with OAuth2 PKCE authentication, EU-based privacy (10 GB free). File operations, trash management (list/restore/empty), storage quota display. Dedicatedkoofr.rsprovider with 3 Tauri commands - Production CLI (
aeroftp-cli): 13 commands (connect, ls, get, put, mkdir, rm, mv, cat, find, stat, df, tree, sync) across all 20 protocols. URL-based connections (sftp://user@host/path), progress bars with indicatif,--jsonoutput for automation, glob pattern matching, recursive operations. 13 unit tests, all passing - AeroAgent
server_list_savedtool: Lists all saved server profiles (names, protocols, hosts) without exposing passwords. Danger level: safe - AeroAgent
server_exectool: Executes operations (ls/cat/get/put/mkdir/rm/mv/stat/find/df) on any saved server. Creates temporary connection using vault-stored credentials — password never transits to the AI model. Fuzzy server name matching with ambiguity detection. Danger level: high (requires ToolApproval) - Ed25519 license verification: Offline-first token verification in Rust with
ed25519-dalek. Tokens are self-contained signed payloads — no network required for validation - License UI (dev-only): License tab in Settings, NagBanner for free users, activation dialog — all gated behind
import.meta.env.DEV - Supabase Edge Functions:
verify-purchase(Google Play purchase verification + token signing) andactivate-device(multi-device management with max 5 devices) - PostgreSQL schema:
licensesanddevice_activationstables with RLS policies andenforce_max_devicestrigger for atomic device limit enforcement - Human-readable license keys:
AERO-XXXX-XXXX-XXXX-XXXXformat derived from SHA-256 + BASE32, consistent between Rust and TypeScript - Grace period mechanism: 30-day grace window on key rotation, based on stored
last_verifiedtimestamp (not unsigned payload) - License i18n: 34 license keys translated in all 47 languages
useLicensehook: React Context provider withisPro,tier,activate,deactivate,refresh, human-readable key display- Device fingerprint: SHA-256 of
hostname:username:OS:archfor non-invasive device identification - AeroAgent tool count: 45 → 47 (+ server_list_saved, server_exec)
- 2 new i18n keys:
server_list_savedandserver_exectool labels in all 47 languages
Fixed
- Dark theme modal alignment: AeroVault and Settings modals now use consistent
dark:bg-gray-900matching all other dark theme modals - WebDAV CLI URL handling: URL path correctly included in effective host for WebDAV connections; initial_path set to
/to prevent double-path - CLI rpassword v5 compatibility: Manual prompt with
eprint!+read_password()replacing unavailableprompt_password() - SEC-CRITICAL: Grace period forgery: Grace period no longer parses unsigned token payloads. Uses vault-stored
license_last_verifiedtimestamp, preventing fake token injection - SEC-CRITICAL: tokenToHumanReadable mismatch: TypeScript Edge Function now uses SHA-256 + BASE32 (matching Rust) instead of DJB2 hash. Keys are identical on all platforms
- SEC-HIGH: CORS wildcard on Edge Functions: Replaced
Access-Control-Allow-Origin: *with origin whitelist (Capacitor iOS/Android, localhost dev) - SEC-HIGH: Rate limiting IP spoofing: Edge Functions now use
x-real-ip/cf-connecting-ipheaders (not spoofablex-forwarded-for) - SEC-HIGH: TOCTOU device activation: Atomic upsert + PostgreSQL trigger replaces separate count-then-insert pattern
- SEC-HIGH: Missing rate limiting:
activate-devicenow has per-IP rate limiting (10 req/min) - SEC-HIGH: DB insert errors ignored:
verify-purchasenow checks and returns database insert errors - SEC-MEDIUM: Dead code removed:
ProBadge.tsxandLicenseActivationDialog.tsxdeleted (never imported) - SEC-MEDIUM: Fingerprint exposure: LicenseTab truncates device fingerprint display (16...8 chars)
- SEC-MEDIUM: Timer memory leak: NagBanner timer cleanup on unmount and state change
- SEC-MEDIUM: LicenseContext exposure: Internal context no longer exported — only
useLicenseandLicenseProviderare public API - SEC-MEDIUM: Device list disclosure:
activate-deviceerror responses no longer expose device names and timestamps - Token validation hardened: Added
tiervalidation (must be "pro") andiatfuture-date check (5-min clock skew tolerance)
Security
- 3-auditor security review: Backend (23 findings), Frontend (26 findings), Architecture (22 findings) — all CRITICAL and HIGH resolved
- Security grade: C+/D elevated to B+ after remediation
- AeroAgent server_exec security: Passwords resolved from vault in Rust — never exposed to AI model. OAuth providers excluded with clear error message. Path validation on local_path (get/put). Vault-must-be-unlocked guard
Downloads:
- Windows:
.msiinstaller or.exe - macOS:
.dmgdisk image - Linux:
.deb,.rpm,.snap, or.AppImage