Commit Graph

30 Commits

Author SHA1 Message Date
b46c5e7d72 fix(storage): reclaim transfer cache and track received files 2026-07-22 16:03:37 +02:00
a8a873c83d build: unify project development commands 2026-07-21 18:07:06 +02:00
9e8564e013 refactor(platform): remove Apple targets from KMP 2026-07-21 17:09:59 +02:00
ea376a382b feat(apple): native SwiftUI app for iOS and macOS
Add a native SwiftUI VniDrop app (Send/Receive/Settings) talking to the
Rust core via generated UniFFI Swift bindings, plus the uniffi-bindgen
helper crate. iOS uses a TabView, macOS a NavigationSplitView sidebar.
2026-07-18 22:06:30 +02:00
d2d3c45180 fix(core): make import cancellation test deterministic 2026-07-15 23:20:22 +02:00
fbabb213f1 docs: establish project documentation and licensing 2026-07-15 22:35:42 +02:00
d0c8d8774a fix(security): address medium findings for ACL, limits, and UX
Tighten approve-endpoint to active shares with TTL sessions, reject non-file
FDs, lower default ticket/approval/size caps, show endpoint IDs and Public-mode
warnings, harden Android receive path checks, and run cargo-audit in CI.
2026-07-13 18:54:28 +02:00
e7fb0331b5 fix(security): harden provider ACL, tickets, and local secrets
Close high-severity findings from the security review: default-deny blob
gets for unmapped hashes, map collection members for ACL, fail closed on
unknown access modes, require vnd1 tickets only, redact tickets from events,
exclude Android app-data backups, and tighten secret-file creation.
2026-07-13 18:41:43 +02:00
ff8e046cf7 docs: rewrite AGENTS.md to agents.md / Codex style
Make agent instructions imperative and command-first, add nested
crates/vnidrop and shared guides, and keep compose-skill as the UI
source of truth with VniDrop-specific overrides.
2026-07-12 20:26:31 +02:00
a63c64a525 refactor(core): split oversized runtime.rs into focused modules
Break the ~1.7k-line runtime orchestration unit into facade, share,
receive, lifecycle, and provider modules so future send/receive work
stays reviewable. Behavior and UniFFI surface are unchanged.
2026-07-12 19:27:05 +02:00
e1abba3fde fix(core): drop active_transfers guard before await in status
Clippy await_holding_lock failed because the sync MutexGuard lived
across the active_shares.lock().await in the RuntimeStatus struct expr.
2026-07-12 19:07:45 +02:00
c348aa1c09 style(core): rustfmt cancel and output_sink test changes 2026-07-12 19:03:31 +02:00
2e6d1fa48e fix(core): stop cancel-during-export test hangs
Signal transfer cancel synchronously before any runtime await, drive
API calls via Handle::block_on so concurrent cancel cannot deadlock a
receive, and rewrite the gated output-sink cancel test to avoid the
slow multi-megabyte write loop that starved CI.
2026-07-12 18:45:22 +02:00
07ec727c23 feat(send): show live progress per receiver
Attribute provider transfer progress to each remote endpoint so the
receivers panel and catalog can show per-peer send bars for multi-file
collections while a share is active.
2026-07-12 18:16:59 +02:00
e1f82c8ef3 feat(ui): surface transfer progress, cancel, and delivery events
Make the transfer loop feel live: parse real core progress payloads, show
progress on send/receive surfaces, allow cancel/stop, retry failed receives,
and fix delivery-phase events so receiver completion updates the UI.
2026-07-12 15:53:51 +02:00
a79c61b9d7 feat(android): receive into system Downloads via MediaStore
Default Android receive destination is now the shared system Downloads
collection (like desktop), using MediaStore on API 29+ instead of
app-private storage. Legacy app-private defaults are promoted back to
public Downloads so existing installs pick up the fix.
2026-07-12 04:43:34 +02:00
d5d4e37d1c fix(android): make default receive path actually writable
Android emulated storage rejects hard-link commit even when canWrite()
reports success. Fall back to exclusive rename for publish, probe real
writes during folder validation, and label the default app downloads dir
clearly so it is not confused with shared system Downloads.
2026-07-12 04:40:10 +02:00
757966379b feat(core): add atomic receive history cleanup 2026-07-12 04:15:11 +02:00
dc862bc01c feat(core): track delivery receipts and transfer deletion 2026-07-11 09:30:56 +02:00
0bf4da0ee9 feat(core): add configurable share access policy 2026-07-10 22:06:20 +02:00
382a015688 test(core): organize hardening coverage and CI 2026-07-10 12:25:33 +02:00
e46a2522ce feat(core): harden transfer persistence and recovery 2026-07-10 12:25:00 +02:00
72340c6c84 feat: add preferences and send empty state 2026-07-08 00:06:00 +02:00
6bcfc534a0 Build native UI shell foundation 2026-07-04 10:41:51 +02:00
89a99582a5 Build Rust core handshake and Compose UI foundation 2026-07-04 08:59:23 +02:00
68363fb680 Harden Rust transfer core 2026-07-03 15:21:22 +02:00
3e1a5268f4 Improve ticket copy and parsing 2026-07-03 01:03:39 +02:00
3cdbf7e8f9 Add mobile file access sources 2026-07-03 00:24:25 +02:00
3da576a94e Refactor Rust core architecture 2026-07-03 00:09:11 +02:00
90463d7210 Baseline Compose Multiplatform Iroh migration 2026-07-02 23:53:47 +02:00