← Back
Changelog
Release history for LocalDrop.Dev. Newest on top.
1.2.5
Latest
2026-06-12
Share selected text with a single shortcut. Highlight text in any app, press Ctrl + Win + C on Windows or ⌃⌘C on macOS, and a small device picker opens right at your cursor — no need to bring up the main window first. This replaces the old “press copy twice” trigger, which could fire by accident on a single copy. macOS also gets multi-desktop (Spaces) fixes for the capture overlay and editor window.
Windows
- Send selected text with Ctrl + Win + C. Select text anywhere, press the shortcut, and pick a device from a lightweight popup right at your cursor — the text sends straight across, with no main window in the way.
- Retired the “double-copy” text-share trigger. The previous “press Ctrl + C twice” gesture fired by accident on a single copy and couldn’t be made reliable; the dedicated shortcut above takes its place.
macOS
- Send selected text with ⌃⌘C. Select text in any app, press the shortcut, and pick a device from a small popup right at your cursor — instant send with no main window in the way.
- Retired the “double-⌘C” text-share trigger. The old “press ⌘C twice” gesture could fire on a single copy due to Universal Clipboard echo; the dedicated shortcut above replaces it.
- Capture overlay now appears on the active desktop (Space). Pressing the screenshot shortcut from desktop 2 used to leave the overlay invisible on desktop 1; it now follows the active Space every time.
- Editor window opens on the active Space and active screen. No more being pulled back to the main display after capturing on a secondary screen.
1.2.4
2026-06-02
Android crash hotfix plus mobile bug reporting. If LocalDrop kept crashing on launch on a Galaxy Fold7 or any Android 15/16 device after the app had been running in the background for a while, this release fixes the root cause. Mobile users also get a new way to report bugs: shake the phone, tap a Báo lỗi action right on the failed‑send banner, or open the dedicated Báo lỗi tab in Settings. Plus a Google Play policy fix that removes three unused photo/video permissions the app never actually needed.
Android
- App no longer crashes on launch after sitting in the background. LocalDrop’s background keep‑alive service is a
dataSync foreground service. Android 15 introduced a ~6‑hour‑per‑day runtime cap for this service type; when the cap was hit the OS killed the app, and every relaunch immediately re‑tripped the exhausted budget — you got “LocalDrop keeps stopping” on every open until the 24‑hour window reset. The service now stops cleanly when the OS signals the timeout, and never crashes if a foreground‑service start is refused. Background receive simply pauses; reopening the app resumes everything. Reported on a Galaxy Z Fold7 running Android 16.
- Removed three Android photo/video permissions the app never used.
READ_MEDIA_IMAGES, READ_MEDIA_VIDEO, and READ_MEDIA_AUDIO were transitively declared by a file‑picker plugin, but LocalDrop reads files via Android’s System File Picker (which doesn’t need them). Google Play flagged this as a policy violation on 2026-06-01; the new build ships with those permissions stripped at manifest‑merge time. No behaviour change for you — the picker still surfaces every file type as before.
Mobile (iOS & Android) — Báo lỗi
- Shake‑to‑report. A firm shake of the phone opens the bug‑report sheet from anywhere in the app. Helpful when the app is stuck in a weird state and digging into Settings would lose context.
- One‑tap report from a failed send. The red SnackBar that pops up when a send fails now carries a “Báo lỗi” action; tap it and the report sheet opens pre‑filled with the failure context.
- Dedicated Báo lỗi tab in Settings. On phones the report screen lives in its own bottom tab in Settings, instead of being buried under an “About” submenu.
- 5‑minute duplicate suppression. If you shake the phone five times in a minute, only one report goes through — the rest are collapsed client‑side so the backend doesn’t see a flood of identical reports.
UI polish
- Manual Devices dialog on narrow phones. The IP field used to share a Row with a Port field and an Add button; on 360 dp phones the IP value got clipped behind the Add button while you were typing. The IP field is now full‑width and the Add action moved to the dialog footer, so dotted‑IP input stays readable end‑to‑end.
1.2.1
2026-05-22
Bug-fix release. Two field reports led the batch: the in-app “Update available” popup on iOS and macOS App Store users misled them with a version Apple hadn’t yet approved (“tap Update, nothing happens”), and the first-run permission popup on macOS 15 Sequoia kept its Microphone row stuck on “Allow” even after the user toggled the permission on in System Settings.
iOS & macOS App Store
- No more bogus “Update available” prompts. The in-app updater used to compare your installed version against whatever we’d shipped to our CDN, ignoring the days between a CDN release and Apple approving the same build for the store. Now it queries the iTunes Lookup API for the version Apple is actually serving and only fires when there’s something you can install today.
- iOS Update Now button reliability. The button used to fire‑and‑forget the App Store launch; on some iOS 15.x devices the handoff silently failed. Now awaited, logged, and falls back to the
itms-apps:// deep‑link when the https://apps.apple.com path doesn’t catch.
macOS
- First-run mic permission flips green when you grant it. macOS 15 caches
AVCaptureDevice.authorizationStatus per-process, so a TCC grant made via System Settings while the popup was open never reached the running app. The popup now lives-probes the mic and re-checks on app activation, so the row updates within a second of you coming back from Settings.
- Diagnostic log buffer enlarged from 200 to 1000 entries, and a chatty re-register log line was deduped — multi-NIC peers used to flood the buffer and overwrite earlier
[Update] entries before users could submit a bug report.
Android
- Play Store installs no longer get the in-app update banner. Play has its own update notification + aggressive auto-update; the in-app banner was duplicate noise. Suppressed for Play installs only — sideloaded APKs still get the popup against the CDN version.
Windows
- Debug builds now register as LocalDrop.Debug in the “Open with” picker instead of misleading the user with the release brand. Release installs unchanged.
Behind the scenes
latest.json now carries a per-channel version under each downloads.<os> entry, so a release can land asymmetrically (e.g. Windows 1.2.2 + macOS 1.2.1 on the same day) without misleading the other channels. Older clients keep working through the top-level version fall-through.
1.2.0
2026-05-21
Right-click an image (PNG, JPG, WebP, BMP) on macOS or Windows to open it in LocalDrop’s editor — annotate, blur, highlight, then auto-save to <name>_edited.<ext> next to the original. Source file is never touched. Multi-select up to 5 images at a time; each gets its own editor window. Windows shipped this feature in 1.1.10; 1.2.0 brings macOS to parity and unifies the version number across platforms.
macOS
- Finder right-click → Quick Actions → “Edit Image with LocalDrop”. New
NSServices entry alongside the existing “Send via LocalDrop” and “Send Text via LocalDrop” actions. Supported types: PNG, JPG, JPEG, WebP, BMP. HEIC is intentionally deferred for first ship.
- Editor opens preserve-source: source file is read-only, every annotation auto-saves to
<basename>_edited.<ext> next to the original.
- Multi-select cap = 5 windows per right-click batch; each editor cascades 40 px from the previous.
Windows
- No new Windows-specific features this round. The right-click “Edit with LocalDrop” menu shipped on Windows in 1.1.10 already; 1.2.0 unifies the version number across platforms now that macOS has caught up.
Cross-platform
- Right-click in either Finder (macOS) or File Explorer (Windows) opens the same editor sub-window with the same auto-save behaviour.
1.1.10
2026-05-18
macOS recording preview gains a draggable thumbnail (drag the captured video into Slack, Messages, Finder, etc.). Record button polish across macOS & Windows — red disc now reads “REC”. macOS 26.4 CoreText crash on region capture fixed. Plus a large internal refactor batch (settings + capture editor + recording engine split into testable coordinators with ~380 new unit tests; no user-visible behaviour change). Windows binary ships 2026-05-19.
macOS
- Recording preview — draggable thumbnail. Bottom-left of the preview window now shows a 72×40 first-frame thumbnail of the captured video. Drag it into Finder, Slack, Messages, Discord, Mail, etc. to share the file directly — no Save round-trip.
- Region-capture crash on macOS 26.4. The dimensions pill below the loupe used a font weight that returns nil on 26.4 (Apple regression). Switched to
monospacedDigitSystemFont — same digit alignment, no crash.
- Image editor tooltips anchored to the popup’s left/right edge no longer bleed their shadow past the window chrome.
Windows
- Click-ripple smooth edges. The red expanding ring shown at each click during recording now uses GDI+ with antialias instead of plain GDI’s jagged Ellipse stroke. (Windows 1.1.10 binary rolls 2026-05-19; the version pill still points at 1.1.9 today.)
macOS + Windows
- Record button redesigned: red disc now displays “REC” in white bold text inside the disc, and the separate “Record” caption below is removed. Same affordance, more obviously a record button.
Internal — refactor batch (no user-visible behaviour change)
- 8 P0 bug fixes: settings IPC now syncs all 31 fields between sub-window and main (was dropping 15), malformed peer payloads return 400 instead of 500, region-picker race fixed, annotation painter no longer relies on parent setState side-effect, swallowed PIN-load catch now logs, imageQuality default centralised, 3 Timer leaks in HomeScreen.dispose() patched, 5 dead UI-only settings stubs removed.
- Sprint 1 (UI split):
settings_screen.dart 2543 → 409 lines (84% reduction), 5 section files extracted; home_screen.dart ref.listen lifted to ref.listenManual; three coordinators extracted from HomeScreen (Boot, IpcBridge, ReceivedFilesPresenter).
- Sprint 2 (perf):
_bake() cache (~150 ms saved per pen stroke on 4 MP captures), _bounds() memoised, _StaleTicker → NowTicker + ValueListenableBuilder (per-tile rebuilds), isPackageRegistered() cached.
- Sprint 3 (god file splits + lifecycle):
capture_preview_screen.dart 5031 → 4744 + 5 testable coordinators; capture_service_windows.dart 1002 → 373 + runner/recorder/scripts files; async dispose for TransferServer/DiscoveryService eliminates ghost-progress events.
- P2 cleanup: 333-line dead PowerShell host file deleted, 20 MethodChannel constants centralised, fileTypeVisual extracted (4 dup tables), 11 magic Future.delayed constants named, ShareHandler 15-branch chain → dispatch table (also fixed a dispose leak), log scrubber gained IPv6 + UNC + Vietnamese PIN keyword scrubbing, Settings now has a Blocked-devices unblock UI, editor/Settings window titles use
$appName.
1.1.9
2026-05-12
First-time UX pass + macOS hotfix. New Help (?) icon in the home header and a “Get LocalDrop on another device” CTA when no peers are found. macOS receive-prompt no longer silently times out at 120 s — affected every macOS user who hadn’t enabled Quick Save.
All platforms
- Help (?) icon in the home header opens a 3-step quick-start dialog with a link to install LocalDrop on your other devices.
- Empty-state “Get LocalDrop on another device” button appears when no peers have been discovered yet.
- Received-files popup no longer shows ghost cards after a manual wipe of the download folder — both surfaces (macOS native popup and the Windows Flutter sub-window) now treat disk as the source of truth instead of an in-memory list.
macOS
- Accepting an incoming transfer no longer silently times out at 120 s. A stale dismiss flag from a no-op pre-emptive close used to leak into the fresh popup’s result handling and short-circuit acceptTransfer(). Required Quick Save (auto-accept) to be on as a workaround in 1.1.7 — that’s fixed now.
- Resize edges of the received-files popup grew 10 px transparent “grippers” on each side so they’re easier to grab.
Windows
- Resize hit-zone on borderless popups went from 8 px to 14 px — matches the affordance Win 11’s own apps use.
Android / iOS
- Footer of the received-files popup no longer wraps to two lines on narrow phones. Clear-all is icon-only on mobile so Open Folder and Done get the width they need.
Windows (2026-05-13 re-roll)
- Region capture no longer stalls 5–10 s on a cold-stack second shot. The native overlay used to read a freshly-written 33 MB
.bgra temp file, which Windows Defender real-time-scans between write and open. The new pickRegionFresh path does capture + drag-select + PNG crop entirely in-process — no temp file, no AV scan, hotkey-to-overlay back to ~350 ms.
- Editor text-tool polish: Bold (B) now visibly thickens single-weight system fonts (regular weight target dropped to w400 so Skia’s synthetic-bold engages); selection box encloses the rendered glyphs (no more clipped descenders); click-to-edit preserves the text’s per-instance font / size / B / I; bar picks become the spawn default for the next new text; font-size input accepts ↑↓ arrows for ±1 (Shift+arrow for ±10).
- Inline text-edit matches the baked render — the in-progress text uses the same font, halo, and vertical position as the annotation will get after commit; previously it always rendered in the system default with a slightly off-by-2 px baseline.
- Font-family picker redesign: two-column rows (family name on the left in the default UI font, “Aa Bb 12” preview on the right in the family’s own face — fixes “Agency FB is invisible because the row uses the thin face itself”), clearable search, count badges on Recent / All Fonts, leading check + background tint on the currently-picked family, auto-scroll to the current pick on open.
- Underline (U) button removed from the text-style bar at user request. Previously-underlined annotations still render with their underline.
1.1.8
2026-05-11
Android-only patch over 1.1.7. Fixes the in-app “Update available” popup for users who installed from the Play Store. No functional change for Windows / macOS / iOS in this release.
Android
- In-app “Update available” popup is no longer a no-op for Play Store installs. The popup used to point at the direct .apk on cdn.localdrop.dev, which Play Protect silently blocks for side-load over a Play Store install. The Update button now checks the package install source — if you installed from the Play Store, the button opens the Play Store listing for a normal store-driven update; sideload installs keep the direct .apk link.
1.1.7
2026-05-11
Security hardening pass + editor click-vs-drag fixes. Closes 3 P1 + 5 P2 findings from a deep code review. Most changes are below the surface; the editor improvements are visible.
All platforms (security)
- In-app updater verifies installer SHA-256 against the manifest before launching the downloaded file. Closes a tampering window where a man-in-the-middle on the download CDN could swap the binary.
- Trust-On-First-Use TLS layer rejects spoofed peer fingerprints on first contact. The previous behavior silently bound whichever certificate the first sender presented; an attacker on the same Wi-Fi could impersonate a known peer for that first connection.
macOS / Windows (editor)
- Drawing tools no longer get hijacked by clicks on existing shapes — drag from a shape’s edge draws a new shape; tap selects the existing one.
- Text tool now places the caret where you click, even on top of an arrow or rectangle.
Windows
- Installer no longer hangs when a stale LocalDrop sub-engine process is alive — the kill sweep now catches sibling PIDs the previous tree-walk missed.
- Right-click “Send via LocalDrop” hardened against tampering with the shell extension’s executable hand-off path.
1.1.6
2026-05-10
Polish + bug fixes. macOS direct-download users get the ⌘C+⌘C clipboard menu fix that App Store / TestFlight users already received in 1.1.5. Sending toasts now show real progress; right-click → Send to device upgrades to HTTPS.
macOS
- Clipboard ⌘C+⌘C share menu no longer auto-dismisses on its own.
- Sending toast gained a progress bar + percent.
- Text annotation halo + fill no longer drift near the right edge of the canvas.
- Right-click → Send to device now goes over HTTPS.
Windows
- Sending toast moved into a Flutter sub-window — same look as macOS, with the live progress bar and percent.
- Right-click → Send to device now goes over HTTPS.
- Progress now reflects actual bytes transferred (was a coarse estimate).
iOS / Android
- Transfer progress bar now reflects actual bytes transferred (was a coarser per-chunk estimate before).
- Otherwise no changes — same UI + features as 1.1.5.
1.1.5
2026-05-08
Windows screen recording rebuilt around Windows.Graphics.Capture — the recording now shows your real cursor theme and starts in milliseconds. macOS, iOS and Android are unchanged from 1.1.4.
Windows
- Native cursor theme is captured in screen recordings (was the default arrow before).
- Faster recording start — first hotkey press now responds within ~100ms (was 5+ seconds on cold start).
- Text annotation editor rewritten on top of a native EDIT control: Ctrl+A, Ctrl+arrow word jump, mouse drag-select, IME, and clipboard shortcuts all work like a real text input.
- Drag the recording frame from anywhere inside it before recording starts; only the 4 corners resize. After recording starts the frame is click-through so it doesn't intercept your input.
- The recording border is no longer captured into the video.
- Screen recording dropped its ffmpeg.exe bundle (~96 MB) entirely — the installer is now 12 MB instead of 38 MB.
macOS / iOS / Android
- No changes — same binary content as 1.1.4.
1.1.4
2026-05-07
macOS auto-update story lands: in-app DMG installer, native
Settings → About / Updates card, Dock right-click menu, and a
boot-time prompt that surfaces an available update even in
tray-only mode. On Windows, a single Ctrl+C
no longer pops the device picker — Cloud Clipboard sync used to
fire a duplicate event that fooled the share-menu trigger. On
Android, notifications actually appear on Android 13+ thanks to
a proper runtime permission flow. Plus host-aware UI font
(SF Pro / Segoe UI Variable / Inter) and an editor fix
for the typing-into-a-text-annotation case.
✨ New
- macOS in-app updates. Settings → Updates
→ Download streams the new DMG, mounts it, replaces the
running app (with a rollback path if it fails), and
relaunches. No browser hop, no manual drag-to-Applications.
- Native macOS Settings → About / Updates card
with install-source detection. The card branches by where
you got the app from — direct DMG, TestFlight, or Mac App
Store — and shows the right action ("Download", "Open
TestFlight", "Open in App Store").
- Dock right-click menu on macOS mirrors
the menu-bar tray. Capture region, fullscreen, record
screen, Open Received Files, Settings, Report a bug, Quit
— same items, same shortcuts.
- Update prompt at launch when a new
version is available. Shows in tray-only mode too (was
previously invisible until you opened the main window).
Three actions: Skip this version, Later, Update now.
- Per-OS release notes in the auto-update
payload — the popup now shows the items that actually apply
to your OS, instead of a single one-size-fits-all blurb.
- Android notifications work on Android 13+.
The runtime permission is now requested at first send
(lazy, with an explanation dialog if the OS asks for one)
instead of being declared but never asked for. Adds a
Settings → Permissions card so you can re-grant after a
denial without digging through Android Settings.
- Host-aware UI font. SF Pro Display on
Apple, Segoe UI Variable on Windows 11+, Inter on Linux —
instead of the previous Roboto-everywhere fallback that
looked off against native chrome on non-Apple platforms.
🐛 Fixes
- Windows: single Ctrl+C used
to pop the device picker. Cloud Clipboard sync
fires a duplicate event for the same press that fooled the
"press ⌘C twice to share" trigger. Now only real
keystrokes count — system-driven echoes are filtered out
deterministically.
- Editor no longer discards your image
when you press Backspace or Delete while typing into a
text annotation. The keys now reach the inline text field
normally; the discard prompt only fires when nothing is
being edited.
- macOS TestFlight link in Settings.
"Open TestFlight" used to point at the iOS public link,
so macOS TestFlight users landed on "App not available".
Fixed to the right macOS beta-group link.
✦ Polish
- Sub-window popups on macOS: smoother chrome, no more
"black band" below the rounded surface, and the update
prompt resizes cleanly when you toggle "What's new".
- The Dock icon now stays put on macOS instead of toggling
between accessory + regular mode (Tahoe started swallowing
the custom Dock menu in accessory mode).
1.1.3
2026-05-05
Quality-of-life pass on the received-files popup and the macOS
editor. New Clear all button that sends files
to the system Trash / Recycle Bin instead of hard-deleting,
Windows installs updates from inside the app instead of opening
a browser, and every device now shows a last-seen timestamp so
you can spot stale entries at a glance. Plus a sweep of macOS
editor and popup fixes.
✨ New
- Clear all button in the received-files
popup. Confirms first, then sends every file to the
platform's recoverable bin where one exists — Trash on
macOS, Recycle Bin on Windows. Linux, Android, and iOS
still hard-delete (no system-wide recycle path on those
platforms).
- In-app updates on Windows. Settings →
Updates now downloads the new installer in the app and
runs it silently. The previous behaviour was to open the
release URL in a browser and leave you to do the rest.
- Last-seen badge next to each device's
fingerprint (now / 5s / 2m / 1h / 3d). Useful
when a peer reinstalled and now appears twice — the older
entry's badge tells you which one is the ghost.
🐛 Fixes
- macOS received-files popup width. Was
opening at a tiny 100×540 strip because AppKit's auto-layout
sized the window from intrinsic content. The popup now
opens at the correct 540×540 (drag to resize, the new size
is remembered).
- macOS editor close button. Clicking the
X (or pressing ⌘W) no longer asks “Discard capture?”
— it keeps the file silently. Pressing Delete still asks
first since deleting is a destructive action.
- Capturing while the editor is open no
longer leaves you stuck staring at the “Discard?” modal.
The new capture closes the previous editor on its own and
the region overlay opens normally.
- Recording preview after Share. The video
player no longer goes black after you tap Share — it
reattaches to the renamed file so you keep watching your
recording.
- Device list jitter. Peers no longer
reshuffle on every UDP announce. Active peers stay on top,
stale ones drop below; within each bucket the order is
stable.
- macOS settings reverting on restart.
Every native UI toggle (Launch at startup, Continuous
capture, auto-copy, every shortcut, language) was reading
the wrong storage key on restart and quietly resetting to
the default. Fixed.
✦ Polish
- Grid view reserves a label band at the bottom of each
card so the filename always reads, even at the smallest
zoom level.
- List view rows are draggable to other apps (Finder,
Discord, Slack, etc.) — same gesture as the grid card.
- Received-files popup default size bumped to 540×540
(was a cramped 360×440).
1.1.2
2026-05-04
Hotfix on top of 1.1.1: the macOS Send via LocalDrop
clipboard popup occasionally re-appeared by itself right after
you clicked outside to dismiss it. Fixed. The same safety
guard also lands on Windows.
🐛 Fixes
- macOS: ⌘C+⌘C share menu re-popped itself
after a click-outside dismiss when the click landed on an
app that auto-copies on selection (or when iCloud
Universal Clipboard synced). The watcher now ignores
clipboard events while the menu is open AND for a 1-second
cooldown after dismiss — the shortcut still works on the
next press, just no auto-spam.
- Windows: same two guards added as a parity safety net.
TrackPopupMenu's modal loop dispatches
WM_CLIPBOARDUPDATE messages, so the same
pattern was theoretically possible.
iOS, Android, Mac App Store, and Google Play stay on 1.1.1 —
this fix only affects the desktop clipboard-share flow on
direct downloads.
1.1.1
2026-05-04
File transfers now run over end-to-end encrypted HTTPS with
Trust-On-First-Use peer fingerprint validation. iOS ships
properly for the first time (Apple's multicast networking
capability got approved). New “Continuous capture” toggle in
Settings lets a new screenshot replace the open editor instead
of stacking endless windows, and the editor's ESC / Delete
keys behave the way you'd expect — Esc closes and keeps the
file, Delete asks first then removes it.
✨ New
- Encryption. Every file transfer now uses
HTTPS with a per-install self-signed RSA 2048 certificate.
The first time you connect to a peer, its fingerprint is
silently remembered (Trust-On-First-Use). If the same
peer's fingerprint changes later — usually because the
other side reinstalled — a warning popup asks whether to
trust the new key, cancel, or block that device.
Wireshark on a transfer now shows only encrypted bytes.
- “Continuous capture” toggle (Settings →
Screenshot, off by default). Off = a new capture closes
the open editor and replaces the image. On = every capture
opens its own editor, useful when you want to screenshot
the editor itself for a bug report.
- iOS ships. Apple approved the multicast
networking capability needed for peer discovery on local
Wi-Fi. The iOS App Store build is functional end-to-end,
including HTTPS+TOFU and the system Share Sheet.
✦ Polish
- Editor key bindings. ESC with no
annotation selected now closes the editor and keeps
the file — distinct from the toolbar X (still
discard + delete). Delete with no annotation selected
asks “Delete this screenshot?” and removes the
file on confirm.
- Settings → Text tab rewritten per OS,
with structured icon-row cards instead of a generic
wall of text. Documents the previously-hidden
⌘C / Ctrl+C twice quick-share
workflow on desktop.
- Heads-up: the device-fingerprint scheme
changed (it's now the cert hash, not a random UUID).
Favorites + blocked-devices lists + cached PINs from 1.1.0
will reset on first launch — re-favorite peers and re-enter
PINs once.
🐛 Fixes
- Android cert generation produced an invalid signature
(Java's RSA private exponent uses a different reduction
than OpenSSL's), so the HTTPS server failed to start
silently. Fixed by reading the public exponent verbatim
from the PEM rather than re-deriving it.
- macOS clipboard
⌘C+⌘C quick-share didn't
fire when the two presses landed inside the same 300 ms
poll window. Now detects the back-to-back pair in a single
tick.
- iOS share sheet kept re-prompting “Send N files
to…” on every launch because the inbox was listed but
never drained. Fix: move incoming files into a temp
directory on read, so the same file can't re-trigger.
- Cert files written by an older buggy build are now
self-validated on load — broken on-disk certs are deleted
+ regenerated instead of looping the app at startup.
1.1.0
2026-05-04
The Received-files popup now matches across every platform:
live search, sort, list/grid toggle, and zoom (Ctrl+scroll on
desktop, two-finger pinch on mobile). New Add device by
IP button next to "Nearby Devices" lets you reach peers
across subnets, VPN, or guest Wi-Fi where multicast can't —
and Cmd/Ctrl-clicking devices lets you send the same files to
several at once in a single batch.
✨ New
- Received-files popup overhaul — search
field, sort dropdown (Newest / Oldest / Name / Largest),
grid ↔ list view toggle, and zoom in grid mode (Ctrl+scroll
on desktop, two-finger pinch on mobile). Available on macOS
native, Windows / Linux sub-window, and the Android / iOS
dialog — all four surfaces share the same persisted
preferences.
- Add device by IP. Small icon next to
"Nearby Devices" opens a dialog where you type a peer's
address. Useful when multicast can't reach the other side
(different subnet, VPN, guest Wi-Fi). Saved peers
re-register on every launch and show a "MANUAL" badge.
- Multi-device send. Cmd-click (macOS) or
Ctrl-click (Windows/Linux) device tiles to multi-select,
pick files once, send to every selected peer in one
batch. PIN prompts queue one at a time so you don't get
five popups stacked.
- Local IP shown in the discovery row.
Read off "what address do I tell the other side?" without
opening Terminal.
✦ Polish
- Launch-at-startup on Windows properly
isolated between Debug and Release builds; entry now
cleans up on uninstall.
- Android Debug builds install side-by-side with
the Play Store release — no more
INSTALL_FAILED_UPDATE_INCOMPATIBLE when
sideloading a development APK.
- Better error messages when adding a peer by IP
(timeouts, "no route to host", "connection refused" all
translated into plain English).
- Received-files Windows sub-window is now actually
resizable (the spawn was incorrectly using a frameless
fixed-size variant).
🐛 Fixes
- Popup self-stretching across the screen on every view
toggle (macOS native) — runaway feedback loop in the
grid layout, fixed at the constraint level.
- Floating popup needed two clicks to do anything when it
wasn't focused — first click is now properly
click-through on cards, drag handles, and action
buttons.
1.0.8
2026-05-03
Tray menu now has a "Report a Bug" entry — your description
plus the last 200 log lines (with paths, LAN IPs and PINs
scrubbed client-side) ships straight to us. Editor's Share
dropdown also stays in sync with discovery now: a peer
joining the network mid-edit shows up immediately instead of
only after closing and reopening the editor.
✨ New
- In-app bug reporting. Tray menu →
Report a Bug…. Pick a category, describe what
happened, see the scrubbed log preview before sending.
Paths, LAN IPs, device fingerprints and PINs are stripped
on your device — the server only ever sees what's in the
preview.
- Open Received Files entry in the tray
menu — drag old arrivals out without waiting for a new
transfer.
✦ Polish
- Editor's Share menu updates live. A
new peer joining the network mid-edit now appears in the
dropdown immediately. Both the native macOS editor and
the Windows/Flutter editor get the live update.
- Tray menu reorganised: file-list actions on top, admin
actions (Settings, Report a Bug, Quit) at the bottom.
1.0.7
2026-05-02
iOS is in TestFlight Beta — devices, files and clipboard text
now sync between iPhone, iPad, macOS, Windows and Android over
the same Wi-Fi. Discovery is also more reliable: devices no
longer randomly disappear from the list every minute, since
multicast on Wi-Fi drops packets in bursts (especially when the
app is tray-resident on macOS or Android slips into doze).
The 30-second auto-remove that was firing false positives is
gone; device list is now sticky between manual refreshes.
✨ New
- iOS is here. TestFlight public Beta — open
testflight.apple.com/join/fgWySS2f
on your iPhone or iPad to join. Same Wi-Fi peer discovery
you know from desktop; clipboard text syncs across iOS too.
⚒ Fixed
- Discovery list is sticky. Devices stay
until you hit Refresh (which restarts discovery from a clean
state) or the app restarts. No more "I just opened it and
already the other device is gone."
- Slightly more aggressive announce cadence to compensate
for multicast packet loss on busy / mesh Wi-Fi networks.
✦ Polish
- macOS menu-bar icon is now a proper
transparent template — the droplet fills the menu bar and
tints with the system foreground colour, instead of looking
small inside a squircle background.
1.0.6
2026-05-02
macOS App Sandbox fix: picking a custom Storage Folder now
actually works (previously TestFlight + DMG users saw their
choice silently get redirected back to the default). Default
save folder moved to ~/Downloads/LocalDrop — much
easier to find than the deep ~/Library/Containers/…
path the v1.0.5 sandbox was rewriting it to. Auto-copy edited
screenshots to clipboard now defaults to ON.
⚒ Fixed (macOS)
- Custom Storage Folder is honored across launches.
The app now persists a security-scoped bookmark for any
folder you pick, so writes succeed even after relaunch.
Previously the sandbox dropped the grant once the app
restarted and screenshots silently went elsewhere.
- Default save folder is now
~/Downloads/LocalDrop
(instead of ~/LocalDrop, which the sandbox
redirected deep into ~/Library/Containers/…).
Existing files in the old container location are NOT
migrated automatically — copy them over manually if you
want them in one place.
- Settings storage-folder subtitle refreshes
immediately after picking a new folder. No more
"switch to a different tab and back" dance to see the
updated path.
✦ Changed
- Auto-copy edited screenshot to clipboard now
defaults to ON. The editor only opens because you
just captured something — overwriting clipboard with that
image is what people overwhelmingly want. Flip it back
off in Settings → Screenshot if you'd rather keep your
clipboard untouched.
1.0.5
2026-05-01
Region capture on macOS now works correctly when your displays
are stacked vertically — previously the selection overlay for
the secondary monitor went off-screen and you couldn't drag
on it. Esc reliably cancels the picker even when another app
was focused. Auto-copy tooltip in the editor toolbar no longer
sits flush against the button.
⚒ Fixed (macOS)
- Region capture on the secondary display —
the overlay was being placed off-screen above both monitors
on vertically-stacked dual-monitor setups. Window position
now uses global coordinates so each display gets its own
overlay at the right spot.
- Esc cancels the region picker reliably —
even when another app had focus when the hotkey fired.
Added a global key monitor as fallback and made the overlay
under the cursor the key window instead of always picking
the primary display's overlay.
- Auto-copy toolbar tooltip spacing — the
two-line tooltip ("Auto-copy: ON / Copied on every save")
was hugging the button. Now clears it by the same gap as
every other tooltip.
1.0.4
2026-04-30
Editor auto-copies your edited image to the clipboard so you
can paste straight into chat. Right-click the editor's preview
thumbnail for quick Copy / Open in Finder. macOS DMG is now
Developer ID-signed and notarized — first launch from a
downloaded DMG no longer shows the Gatekeeper "Apple cannot
check it for malicious software" warning.
✦ New
- Editor auto-copies edited image to clipboard
(Windows + macOS) — turn on the toggle in Settings →
Screenshot, or flip the per-session button in the editor
toolbar (clipboard icon, between the colour picker and the
help button). Image lands on the clipboard the moment the
editor opens and after every annotation, so you can paste
it straight into Discord / Slack / Telegram with Cmd-V
without saving a file.
- Right-click the editor's preview thumbnail (macOS)
— four quick actions: Copy image, Copy path, Open in Finder
(highlights the file, not just the folder), Open with
default app.
✓ Fixes
- Region capture spans secondary displays (macOS)
— earlier builds anchored the picker to the primary display
only, so dragging across to a second monitor stopped at
the bezel and produced empty PNGs. Now selects across all
attached screens correctly.
Under the hood (macOS)
- DMG is now Developer ID-signed and
notarized. First launch from a downloaded DMG no
longer shows the Gatekeeper "Apple cannot check it for
malicious software" warning. (Note: macOS still tracks
Screen Recording / Full Disk Access separately if you
install both the DMG and the TestFlight build on the
same Mac — that's a fundamental Apple limitation, not
something a developer can fix. Pick one install source
to avoid double permission prompts.)
Platforms
- macOS DMG + TestFlight. Windows / Android binaries unchanged
from 1.0.2.
1.0.3
2026-04-29
Window size memory fix across all sub-windows (editor,
settings, received files popup, receive prompt) plus a
Settings UX polish on Windows. macOS gets the bundle-name
fix that unblocks Screen Recording grants.
✓ Fixes
- Sub-windows now remember your resized size
— drag the editor / Settings / received-files popup to
the size you like, close it, reopen it, and it comes back
at that exact size. Earlier builds either silently reset
to the canonical default or shrank by a fraction every
cycle on high-DPI displays. Now stable across captures.
- Bundle name on macOS =
LocalDrop.Dev.app
on every install path (DMG and TestFlight). Pre-1.0.3
TestFlight builds shipped as local_drop.app,
which surfaced as a separate Privacy & Security entry
and broke Screen Recording grants when both DMG +
TestFlight installs were on the same machine.
Polish
- Settings > General layout (Windows) —
on a comfortably wide settings window, the Device name /
Language / Theme / Receive password / Storage folder /
Port controls now sit on the same row as their label
instead of stacking under it. Drops back to the stacked
layout when the window is dragged narrow. Focused text
fields show a visible 2px primary ring instead of no
change on click; tapping outside the field drops focus
cleanly.
Platforms
- Windows installer + portable ZIP, macOS DMG + TestFlight.
Android binaries unchanged from 1.0.2.
1.0.2
2026-04-28
Speaks your language now. Plus a brand-new native macOS image
editor and public TestFlight betas for iOS & macOS.
✦ New
- 10 languages — English, Tiếng Việt, 简体中文, Español, Français, Deutsch, 日本語, 한국어, Português (BR), Русский. Pick from Settings → General.
- Native macOS image editor — rewritten in SwiftUI. Faster open, smoother zoom & pan, Apple-native Share menu (AirDrop, Mail, Messages…), click empty desktop to capture full screen.
- iOS & macOS TestFlight — public beta links on the download page; auto-update once installed.
- JPG quality tiers — choose anywhere from 30% to 100% with auto-downsampling for ultra-light shares.
- Keyboard shortcuts sheet — press
? in the editor to see every shortcut.
✓ Fixes & polish
- Editor:
Esc now commits the text draft (was: discarded it), Enter inserts a newline.
- Editor: cursor changes to grab / grabbing while panning, default arrow elsewhere.
- Editor: cancel-without-saving deletes the temp capture so it doesn't pile up in
Downloads/LocalDrop.
- Tray: Open LocalDrop folder now opens the base folder, not the
Received sub-folder.
- Tray: removed the Auto-accept toggle (live in Settings instead — one source of truth).
- Windows installer: more reliable kill-before-install (8 s polling, full process tree, longer DLL-release wait) so updates land cleanly.
Platforms
- Windows 10/11 (x64), macOS 11+ (Intel & Apple Silicon), Android 7+ sideload, Android Play Store (closed test), macOS App Store (TestFlight beta), iOS (TestFlight beta).
1.0.1
2026-04-26
Windows-only patch release — emergency fix for dead top-button rows.
✓ Fixes
- Windows: top button row of every popup (and the main window) was completely unclickable in v1.0.0 — fixed by repairing the gesture arena inside
SubWindowDragToMove.
1.0.0
2026-04-22
The “I'm lazy” release: everything you need to send a screenshot,
recording, file or clipboard snippet lives in one app, one click away.
✦ New
- Drag-from-popup — incoming files appear in a popup you can drag straight into Discord, Slack or email. No Finder detour.
- Screenshot & annotate — capture full screen, window, or a region. Mark up with arrows, text, shapes. Send in one click.
- Screen recording — record a clip and share over LAN instantly. No upload, no watermark, no length cap.
- Shared clipboard — copy on one device, paste on another. Text syncs across macOS, Windows and Android.
- Native OS context menu — right-click any file in Finder / File Explorer → Send via LocalDrop → pick device.
⚡ Performance & privacy
- Direct HTTP transfer over LAN — speed depends only on your network, no bandwidth caps.
- UDP multicast device discovery finishes within ~5s. No IP entry, no pairing.
- Files never leave your network. No middleman server, no account, no tracking.
- Optional password gate before accepting files — prevents accidental sends in busy offices.
- No artificial size limit — send 1 GB, 10 GB or 100 GB folders.
Platforms
- Windows 10/11 (x64), macOS 11+ (Intel & Apple Silicon), Android 7+ sideload.
- iOS coming soon — TestFlight opens after this release.
Earlier releases aren't tracked here — this page started at v1.0.0.
Full source and commit history:
gitlab.com/sukidesign/localdropapp.