Every PinDrift release, newest first: what was added, what changed, what was fixed, and the date it shipped. This page reads the same release file the app itself checks for updates, so it is never out of date.
PinDrift updates itself, so most people never need this page. It is here if you want to read what a version changed before or after you install it, or link to the notes for one specific build. Each release has its own link: use the anchor next to a version number to copy it. The Windows installer is not code-signed, so where a checksum is listed you can verify your download against it.
PinDrift no longer stops answering while it looks for a Wi-Fi iPhone. An iPhone below iOS 17 is named as the reason. Sign-in rides out a busy Apple and waits two minutes, not ten. An install no longer fails right after the iPhone app downloads.
The two-factor code is six boxes and sends itself. Resend code asks Apple for a new one. A wrong code says so and clears. Install errors are a short title, the code and Send log.
Installing asks for the cable when the iPhone is only seen over Wi-Fi. Apple's three-app limit names the apps to delete. Apple's developer service not answering has its own error. Card payments inside the app complete. No wrong email hint for a real email domain. iPhone Duo, iPhone 18 Pro, 18 Pro Max and 17e show by name.
Installing the iPhone app no longer starts two Apple sign-ins at once. Pressing Install again stops the earlier install for that iPhone. Clearer message when Apple's sign-in service is busy.
Electron 43.8.3, which stops trusting a set of compromised certificates. Security updates to the built-in signing and device tools. The phone remote answers only this PC, your home network and Tailscale, and stays on this PC if its secure connection cannot start.
The iPhone app now downloads by several routes, so one network or certificate problem no longer stops an install. Support logs now include the engine's own logs, even when it could not start.
When an update is marked mandatory, PinDrift installs it before it can be used again. A spoof that is already running always finishes first. If a mandatory update cannot install, PinDrift says so and offers to try again or download it. The account page is smaller, with two equal boxes to a row. Devices shows only phones that are signed in.
The Windows installer shows the PinDrift logo in Chrome
Chrome's downloads list shows the PinDrift logo beside the installer instead of a generic program icon. The Windows download is called PinDriftSetup.exe.
Installing is one click now, and the app opens faster
The installer used to open on a page of terms before it would do anything. It does not any more: one click, and PinDrift starts itself when it finishes. Launch is quicker as well, because the app was spending about a second checking on itself before the window could appear. The download is called PindriftSetup.exe from this version, and carries an icon Windows can actually draw in your downloads list.
Back to plans no longer shows up for people who already have one
The licence screen offered a way back to the plan list to customers who were already on a plan, which reads as a prompt to buy something they own. It is gone for them and unchanged for everybody else.
Refresh now asks you to connect your iPhone instead of failing at you
Pressing Refresh now with no iPhone attached reported a failure. PinDrift was holding on to the last phone it saw, so the request went out to a phone that had already been unplugged. Refresh and Install now check whether a phone is actually there and say “Connect your iPhone first” instead, as a plain message rather than an error. Anti-Speed has also left the desktop: it is a phone feature, because the governor reads your iPhone's own motion sensors, and the desktop tab was only ever a hand-off to it. The Device Control button and the Remote Control panel it opened have been removed as well.
Signing out stops breaking your iPhone certificate
Sign out of your Apple ID and back in, and PinDrift would refuse to install to your iPhone. Apple gives a free account one signing certificate; PinDrift holds the only copy of its key, and signing out was deleting that key while the certificate stayed at Apple, orphaning it. Signing out now keeps the certificate so the app on your phone keeps working. A full erase is still available and says plainly that it removes the certificate too. Also fixed: the Mac build sometimes produced a broken or missing Intel installer.
One iPhone per licence, and the app stops calling you a trial user
If your subscription ended, PinDrift used to say your TRIAL was up and thank you for trying it. It now says your subscription has ended and confirms your favourites, routes and devices are still there. Installing to an iPhone is one phone per licence, the same as the desktop app has always been one computer at a time, and you are told before anything is signed rather than partway through. Moving phones is free.
Buying happens in the app, and it looks like the app
The payment form used to be Stripe's own checkout dropped into our window, with its own email box, button and colours. In a dark app it was a white panel that obviously belonged to somebody else. Now only the card fields are Stripe's and everything around them is ours. Monthly is back at $9, alongside Yearly at $60 and Lifetime at $70. Paying with cryptocurrency has been withdrawn; if you bought that way your licence is unaffected.
Buying PinDrift used to hand you to your browser and a Stripe page, then leave you alt-tabbing to find out whether the app had noticed. The card form is now in the app itself. It is still Stripe's form and your card number still never touches PinDrift, but it sits in the window you were already looking at. If the form cannot load, the browser page opens like it always did.
Installing to your iPhone stops asking you to wait
If PinDrift told you it was still checking your plan and then kept saying it, that is fixed. The engine behind the app restarts on its own sometimes, and it came back not knowing which account the computer belongs to, so the iPhone installer refused. The app now reminds it every ten seconds, and when nobody is really signed in it says that instead of asking you to wait.
Installing to an iPhone now finishes setting the app up for you, instead of leaving it installed but unable to start. The pairing step no longer disappears while it is still needed, and the setup screens have been tidied up.
Installing to an iPhone stopped failing at the first step
If putting PinDrift on your iPhone stopped with "the device-identity helper exited unexpectedly", this is the fix, and the problem was never on your machine. PinDrift ships a small helper that produces your computer's Apple identity locally, so signing in never routes your Apple ID through anybody's server. Recent installers carried a placeholder version of it that could not start. The real one is here, every helper was rebuilt, and the build now refuses to finish if any of them is older than the code it came from. Macs on Apple Silicon can also update automatically for the first time - earlier Mac builds had no update feed at all.
Setup stops telling you that you can't sign in when you can
The iPhone setup panel said Apple sign-in was not configured on this build, on machines that were completely ready to go. It was checking for a setting PinDrift removed on purpose - your machine's Apple identity is produced on your own computer rather than by a server, because a server doing it would see a stable identifier for your machine on every sign-in. It now checks what actually matters and tells you where to put the missing piece if there is one. The iPhone app is also its own download now, checked against a published checksum, so it can be updated without a new version of PinDrift.
Moving your licence now reaches your other computer
Using your emergency switch used to release the old computer without telling it, so it carried on looking signed in for the rest of the day. The other machine is now told the moment it happens, and checks again whenever you come back to the window. A computer that is offline cannot be told anything at all, so what it is allowed to do on its own is now a rolling thirty days rather than forever - if you open PinDrift online you will never notice it. Installing the app onto an iPhone is held to a stricter standard than spoofing: spoofing still works with no internet, but putting an app on a phone now checks in first. And the iPhone app has moved out of the installer into its own download, so it can be updated without a new version of this one.
One computer at a time, and a Mac build that works
PinDrift now enforces what it always said: one computer at a time. Signing in on a second machine asks first, says how long your other computer holds the licence, and offers your one-time emergency switch when there is one to offer - saying no changes nothing. There is a macOS build now, and it is a real one: it signs in, talks to your iPhone, and installs the iPhone app the same way Windows does. A phone on a cable stopped disconnecting by itself and stopped flipping between wired and wireless. The trial clock no longer starts on a spoof that never happened. And updates install themselves from here on, never while a spoof is running.
Installing onto an iPhone now remembers the signing identity instead of asking Apple for it every time.
Changed
The certificate and provisioning profile were obtained from Apple, used once and discarded, so every install repeated the whole exchange. They are now kept in the Windows credential store alongside their expiry.
A free Apple ID has hard limits on how often it can issue these, so reusing what you already have means reinstalling the same app costs nothing against those limits. The stored identity is never reused once close to expiring.
The two things you finish on the iPhone now each have their own screen.
Changed
Trusting the developer profile and allowing the VPN helper were stacked as cards under one heading. Trusting is not optional, so it now has a screen of its own with the exact Settings path step by step.
Removed the certificate-lifetime note from that screen; the same information is on the management view under the countdown, where it is actionable.
Installing onto an iPhone failed at the last step with "could not persist the signing key."
Fixed
Windows Credential Manager limits how much a single stored item can hold, and a signing key is larger than that limit. So was the provisioning profile, which is much larger again. PinDrift now splits large items across multiple entries; everything still lives in the Windows credential store and nothing is written to a file.
Errors while saving now say what went wrong. The original message was fixed text that discarded the underlying reason.
Installing onto an iPhone failed with "Apple's reply contained no certificate." Apple had issued it and simply did not include it in the reply.
Fixed
Apple had issued the certificate but did not include it in the reply to the request, which it sometimes does not. PinDrift treated that as a refusal and stopped.
On a free Apple ID a certificate had already been replaced to make room for the new one, so each retry replaced another and threw the result away. PinDrift now collects the certificate Apple issued, matching it to this computer's own key so it can never pick up an unrelated one.
"Checking your plan" no longer interrupts an install.
Fixed
PinDrift confirms your plan with its own background service, and for a moment after starting, that service has not been told which account you are signed in as. Starting an install during that moment produced an error asking you to try again.
PinDrift now waits for the answer itself, and tells the service who you are immediately before each install. The background service restarts on its own after updates, and nothing was re-sending your account to it afterwards.
Installing onto an iPhone stopped partway with "sign-in timed out". PinDrift was asking a question it never displayed.
Fixed
A free Apple ID gets one signing certificate. If Apple already holds one PinDrift does not have the key for, made by Xcode, another sideloader, or an earlier install on a different computer, continuing means replacing it. PinDrift paused to ask permission, then waited three minutes for an answer to a prompt that was never shown.
The prompt now appears. It names the computer that created the existing certificate and says what replacing it affects, and leaving it alone is the default. Replacing is not reversible: every app signed with that certificate stops opening until it is installed again.
More detail recorded when installing onto an iPhone stalls. Diagnosis only.
Changed
Each request to Apple now records how long it took to prepare and how long Apple took to answer, so a stall identifies the exact call that stopped responding.
Progress on the stall some users are seeing: registering the iPhone and creating the signing key both complete. The stop happens when asking Apple for the list of existing signing certificates.
Installing onto an iPhone reports what it is doing in more detail. Diagnosis only, not a change to how installing works.
Changed
One step covered three separate operations: registering the iPhone with Apple, creating a signing key, and requesting the signing certificate. When installing stalled, all three looked identical.
Each is now reported separately, so a failure names the operation it stopped on.
Better reporting when installing onto an iPhone fails. Diagnosis only, not a change to how sign-in works.
Changed
The sign-in helper's own diagnostics were being discarded, so when a sign-in stalled the log recorded which step it reached and then nothing at all. Those messages are now kept, with any Apple ID in them masked.
The timeout now says which step it stopped on rather than just 'timed out'.
Installing onto an iPhone could hang forever instead of failing. It now stops after three minutes and names the step.
Fixed
Installing onto an iPhone could hang forever instead of failing. There was a three minute limit on the Apple sign-in, but it was only checked whenever the sign-in helper said something, so a helper that went quiet was never timed out and the install sat on one step indefinitely.
It now stops at three minutes and reports which step it stopped on. This does not by itself fix a slow or unresponsive sign-in; it makes one visible.
Installing onto an iPhone now shows that it is still working during the long step near the end.
Changed
Installing onto an iPhone now shows that it is still working. The progress bar only moves when a step finishes, and one step near the end waits on Apple for up to a minute and a half, which was indistinguishable from a freeze. There is now a spinner and a counter showing how long the current step has been running.
The counter is per step rather than for the whole install, stays hidden for the first few seconds so quick steps do not flash a number, and stops while PinDrift is waiting for you to enter a password or a two-factor code.
Fixes a signed-in Lifetime or Yearly plan still being told to buy a plan when sideloading.
Fixed
A signed-in Lifetime or Yearly plan could still be told to buy a plan. Shortly after launch PinDrift told its background service who you were, sometimes before your account had finished loading, so the service checked your plan as if no one was signed in, got 'no plan on this computer' back, and remembered it.
The app no longer reports an empty account at startup, and sideloading no longer treats 'we have not confirmed your plan yet' as 'your plan does not include this'. Signing out is still reported immediately, so nothing about plan enforcement is weakened.
Fixes a Lifetime or Yearly plan being told to buy a plan, and two smaller interface problems.
Fixed
A Lifetime or Yearly plan could be told to buy a plan. If your computer was not yet activated on your licence, PinDrift showed 'Included with Yearly and Lifetime' with an upgrade link instead of telling you to activate the computer. There is now a separate message, PND-3565, that says what to actually do.
The Apple ID password box has a show and hide toggle. It was the one password field in the sideload wizard without one.
The account panel no longer offers a web dashboard to people with no account. It appeared on the 'No account yet' screen, directly under the button asking you to create one.
The device-identity helper was a placeholder in every previous build. This is the first installer with the real one.
Fixed
The device-identity helper was a placeholder in every previous build. It was compiled without the flag that includes the real implementation, so it started, connected and passed every check, then refused at the last step of sideloading with PND-3538. This is the first installer built with the real one, and the build now asks the helper what it is and fails unless it answers correctly.
No more console window when you press Install. The five sideload helpers are console programs and PinDrift is a windowed app, so Windows was giving each one a black window of its own.
Sideloading the iPhone app works again. The helper that produces Apple device identity could not start on Windows since 1.0.84.
Fixed
Sideloading works again. PinDrift runs with administrator rights because talking to an iPhone over USB needs them, and it deliberately starts the device-identity helper WITHOUT those rights so Apple's code never runs with administrator access. The reduced-rights account it built was missing a permission entry for your own account, which Windows needs in order to start the process at all, so the helper failed during startup and the wizard could only report that it had exited.
PinDrift now uses the ordinary non-administrator account Windows already provides for this, and repairs the account it builds on systems that do not have one.
The helper's error output was written into the same channel it uses to talk to PinDrift, so any diagnostic it produced was read as a corrupt reply. Real errors now arrive with their own codes.
The helper no longer warns that it is running with administrator rights every time it correctly starts without them.
Extra isolation for the helper, switched off in 1.0.86 while this was being investigated, is back on. It was not the cause.
Fixes the Add Developer Mode button and a few setup-screen glitches.
Fixed
The 'Add Developer Mode to my iPhone' button now works. It was failing silently in the installed app; it now reveals the Developer Mode switch on your iPhone as intended.
Clearer errors: if revealing Developer Mode does not work, PinDrift now shows the real reason instead of a misleading 'could not reach the daemon' message, and the error is no longer styled as a success.
The dismiss (X) button on the Developer Mode help panel now closes it.
The setup checklist spinner no longer freezes while Performance mode is on.
Windows installer: 103.2 MBNot code-signedSHA-256: 6b8e01841fe4c09cf7ecce7b8e4300d370ea6adbc637eb30ca297523543d8802
Cleaner account panel for anonymous license-code accounts.
Fixed
Anonymous license-code accounts now show your real plan (for example '1 Year') in the account panel instead of '10-Day Pass', and no longer show the internal account address or a placeholder avatar.
Windows installer: 103.2 MBNot code-signedSHA-256: 50013f86396a1a1795f01a2c4c5a9145d6cdfa24b88c8a52dea730bc677c3717
Set your own Anti-Speed hold speed, cleaner QR codes, and a fix for recording a route from your phone.
Added
Anti-Speed: set your own hold speed. Type any speed (in your mph or kph unit) next to the Limit presets and tap Set, and Anti-Speed holds you there instead of the road limit.
Changed
Cleaner QR codes: the Anti-Speed and Device Control codes no longer show the logo in the middle, and the Anti-Speed code loses its white border, so they scan a touch faster.
Fixed
Recording a route from your phone now shows 'Phone connected' on your PC the moment the phone opens the link, instead of sitting on 'Loading...', and the connecting spinner animates again.
Windows installer: 103.2 MBNot code-signedSHA-256: 339bca14eb5e06eedba5a74914512cdaa971ab6a0b115c340aa9b2a082cfc0f3
Stopping a spoof now stops for good, and the spoof buttons no longer flicker on the first spoof after an update.
Fixed
When you Stop a spoof, PinDrift no longer briefly re-applies it a few seconds later (and no longer shows a false 'Location spoof cleared unexpectedly' error). Over a wireless connection with Lock on, a hiccup right after Stop could look like an accidental drop and get auto-restored; a Stop is now respected for good until you start again.
The Stop / Move / Lock buttons no longer flicker a few times on the first spoof after launching or updating, while the phone settles between USB and Wi-Fi.
Windows installer: 122.9 MBNot code-signedSHA-256: f19d6a45c4f4d3662b99752f4917f5433ba0ff5ee5e5e5aab7f6c3f909951fbc
Fixes wireless: your iPhone now actually stays connected over Wi-Fi after you unplug the cable.
Fixed
The wireless connection now works. After pairing on the cable and unplugging, the phone was reconnecting over Wi-Fi/Tailscale but the tunnel crashed every time, so it dropped after a few seconds. PinDrift now builds that tunnel the way modern iPhones require, so an unplugged phone stays connected on the same Wi-Fi (or over Tailscale).
Windows installer: 122.9 MBNot code-signedSHA-256: 493229b9d77d8f7047ddd0282e91e21450bb2ff10c771c12c79cb6f74bf40817
Your iPhone can now stay connected wirelessly after you unplug it - PinDrift pairs it for Wi-Fi the first time it's plugged in, with no button to press.
Changed
The first time an iPhone is plugged in, PinDrift now automatically pairs it for wireless in the background, so it keeps working over Wi-Fi (or Tailscale) the moment you unplug the cable - no button to press. Staying on the same Wi-Fi as your PC is the most reliable; Tailscale covers off-network. Pairing is skipped while a spoof is running so it never disturbs an active session.
Windows installer: 122.5 MBNot code-signedSHA-256: 1a08f7873fc343fdcee4433e5dbb5c303287b11bf4c9bcb9ac26ef5784a69a62
Performance mode now does everything in one toggle with a Restart button, phone drive routes follow the roads from your current spot, and the desktop point list reorders correctly.
Added
A 'Roads on Satellite' toggle in Settings, on both the app and the phone: overlay the street network on Satellite imagery, or keep it clean. Place labels are unaffected, and it only affects Satellite view.
A Restart button next to Performance mode, so its deeper savings apply right away with no admin prompt.
Changed
Performance mode and Low RAM mode are now one 'Performance mode' toggle that does everything both did. If you had either turned on, it stays on.
On the phone Teleport tab, the map no longer jumps as you move the spoof dot; it only recenters if the dot would leave the screen. The desktop still follows the dot as before.
Fixed
Phone drive routes now follow the roads from the very start when 'Start from current spoof' is on, instead of cutting a straight line.
Reordering points in the desktop list now drops each point exactly where you place it, instead of one slot off.
Windows installer: 122.5 MBNot code-signedSHA-256: 08930ed434ffc712f6744f614c9ae516bb98d73ff67537bdff7debdb38c52a6a
Cleans up the phone's bottom buttons so nothing overlaps, fixes the Routes bar while a route is running, and stops a false error on your PC when you end a spoof from your phone.
Changed
The phone's Teleport buttons no longer overlap: Start/Stop is centered, Faves is on the right, and Lock sits on the left with Move just above it, all cleanly spaced.
Shortened the phone's Lock button label to just 'Lock' / 'Locked'.
Fixed
The Routes bar at the bottom of the phone no longer breaks while a route is running - the Pause and End buttons sit inside the bar instead of drifting off.
Stopping a spoof from your phone no longer shows a false 'Location spoof cleared unexpectedly' error on your PC. The PC now knows the stop was intentional.
Windows installer: 103.1 MBNot code-signedSHA-256: afe0c9b15df804a7315e6fd2892eae96bded37ef659c28329584ce926a84aa91
A cleaner phone Teleport screen with an address search bar, plus a fix for the desktop Lock button when spoofing.
Added
Address search on the phone: a search bar at the top of the Teleport and Routes tabs. Type a place and tap it to jump there.
A Favorites menu on the phone's Teleport tab, opened by the Faves button.
Changed
The phone Teleport screen is cleaner: the big bottom bar is gone, replaced by a centered Start/Stop button, Faves on the right, and (while spoofing) Lock on the left with Move just above it.
Fixed
The desktop Lock button now works on the first press while you are spoofing. It was tracking the wrong setting, so the first click could do nothing; it now mirrors the phone's lock exactly, both ways.
Windows installer: 103.1 MBNot code-signedSHA-256: 1b1e05064f29aeeb0ab3de952fb7bbc2d4b41ff6aac41225769a79f69241f70c
New Low RAM mode: the leanest way to run PinDrift. It keeps releasing unused memory back to Windows so the app's memory footprint stays tiny.
Added
Low RAM mode (Settings): the most efficient way to run PinDrift. It continuously releases unused memory back to Windows across the whole app, trims the map's tile memory, removes blur and shadows, and caps the frame rate harder. Restart after turning it on to also drop the GPU process and shrink caches for the biggest savings.
Changed
Performance mode and Low RAM mode now work together: turning on Low RAM applies everything Performance mode does, plus more.
Windows installer: 103.1 MBNot code-signedSHA-256: 54cd3881516e9a519b2f40720c3e86fa167cd0309cdac11a8be289c29e917f38
The phone and desktop now stay in lockstep: matching tabs, a shared map view, and two-way spoof-lock. Plus a tidier phone spoof screen.
Added
The map view is mirrored both ways: pan or zoom on the desktop and your phone follows along, and the other way around.
Switching tabs on the desktop (Teleport, Route, Anti-Speed) now switches your phone to match. The phone already did this for the desktop; now it works both directions.
Changed
The phone's 'Spoof' tab is now called 'Teleport', matching the desktop.
Locking or unlocking the spoof from your phone now syncs to the desktop too (it already synced the other way).
The phone spoof screen is tidier: Stop, Lock and Move now sit side by side as smaller, half-width buttons.
Windows installer: 103.1 MBNot code-signedSHA-256: 4787e86f1e788b256f36e45ae36671337834f86253d3aecdca457ca302b7b1ad
Desktop and phone now build routes together, live. Plus a smoother drag-to-reorder on the phone.
Added
Live two-way route sync: edits you make on the desktop show up on your phone instantly, and vice versa - adding, moving, removing, or reordering points.
A phone-only 'Desync from desktop' setting. Turn it on to build routes on the phone independently; off (default) keeps the phone and desktop in sync live.
Changed
Reordering points on the phone is smoother: the point lifts when you pick it up and the others glide out of the way, and holding a point no longer tries to select or copy its text.
Windows installer: 103.1 MBNot code-signedSHA-256: 549f4166629533c1ce35437ac25042757288283783b67078dc2a0a6f75a34151
Phone controller: clearer route start, reorderable points, smoother popup, and no accidental page zoom.
Added
On the phone, press and hold a point in the Points list to drag it into a new order.
Changed
On the phone, when 'Start from current spoof' is on, the route line now runs from your current spoofed spot to point 1, and that spot shows as a red dot so you can see the setting is on. With the setting off, that dot no longer appears on the Routes map.
The Points popup opens and closes with a smooth animation.
Fixed
The phone controller page no longer zooms when you pinch or double-tap outside the map.
Windows installer: 103.1 MBNot code-signedSHA-256: 1dee98f9d04068285bf6c47fe2b2da94ef36458802325bd3dd754f80dec867f9
Moving a route point on your phone now updates the line right away, on both phone and desktop.
Fixed
When you drag a route point on your phone, the route line now follows it immediately instead of staying at the old spot, and the desktop mirror updates in step rather than lagging one move behind.
The route line on the phone is now blue, matching the desktop.
Windows installer: 103.1 MBNot code-signedSHA-256: 7d6e192071499da098516038971cdef1f7064eea10f48ac6ce81a295cf21d915
The Anti-Speed panel now uses PinDrift's black-and-white brand style.
Changed
Restyled the Anti-Speed screen to match PinDrift's brand: the QR scan card, numbered steps, and requirement notes now use the clean black-and-white look with the hard-edged shadow, instead of the old soft blue-tinted style.
Windows installer: 103.1 MBNot code-signedSHA-256: bc5169d1fef77366651e1eea6f7892733eac914421ef88117c35e3fc1789cafa
The lock steps panel now uses PinDrift's real black-and-white brand style.
Changed
The 'lock this spoof' panel now matches PinDrift's actual brand: clean black-and-white with the hard-edged shadow used across the website, instead of the blue tint it had before.
Windows installer: 103.1 MBNot code-signedSHA-256: 1991c3c4bd4dd0db8799b1e8a5f6129ebe777e2ac31fff4c11173163545aa740
The lock guide is now a small panel that matches PinDrift's look, instead of a full-screen popup.
Changed
The 'lock this spoof' steps now appear in a small panel next to the lock button, styled to match the rest of PinDrift and your light or dark theme, instead of a large popup that covered the screen.
Windows installer: 103.1 MBNot code-signedSHA-256: 594ead2cacd2964dab505c01e9f92bb6ad8bdb72f523c50324b99d5281f59957
Lock spoof now shows you how to keep your location on your iPhone, the way that actually works.
Changed
Lock spoof now works the only way it reliably can: it shows you a short guide to lock the location on the iPhone itself. Turn off Developer Mode on your iPhone while spoofing, and the location holds until you restart the phone. Turn Developer Mode back on to spoof again.
Updated the lock button, its tooltip, and the on-screen note to describe this, replacing older wording that promised the location would stay on its own (it never could from the computer alone).
Windows installer: 103.1 MBNot code-signedSHA-256: 95697e2a0879e477b2e9e43dc75171c194e800cb99a4d63ef74ad7742a125c98
Start Spoofing greys out until your phone is reachable and a spot is pinned; no more duplicate update popup.
Changed
Tidied the Lock spoof description now that the Release button is gone.
Fixed
Start Spoofing is now greyed out until you have actually pinned a spot on the map, so you can't accidentally start a spoof with nothing selected.
Start Spoofing is greyed out when your iPhone isn't responding (off, asleep, or off Wi-Fi), instead of letting you press it and hit a confusing error. It re-enables on its own the moment your phone answers again.
Removed a second, duplicate 'update available' notification that came from the background engine. The in-app update prompt is the only one now.
Windows installer: 103.1 MBNot code-signedSHA-256: e5a041066c772a1920f8dfeb72aba622266b5ca424172ce16e9de263485ce16f
Lock spoof now actually keeps your location when the phone disconnects.
Fixed
Lock spoof now does what it says. Your iPhone keeps reporting the spoofed location after you unplug it or walk out of range. Previously PinDrift shut the spoof down the moment your phone dropped off, even with Lock spoof on, which is the one thing Lock exists to prevent.
The spoof no longer stops when the connection to your phone flickers.
Windows installer: 103.1 MBNot code-signedSHA-256: 31c79387f4ea5fbfb4d67d7efe15096088a4018fe6aa424709d4ea5c52ac305d
Removes the Release and Disconnect buttons, and starts counting spoofs for real.
Changed
PinDrift now measures how long it actually spends spoofing, instead of only how long the app was open. Nothing before this release was recorded, so these counts start from today.
Fixed
Usage figures no longer include sessions from the demo page opened in a web browser, which were being mixed in with real ones.
Removed
The per-phone Release and Resume buttons, and Disconnect all, are gone. They offered to disconnect your iPhone, which PinDrift cannot do: a spoof only survives while nothing tells the phone its session ended, and any disconnect from the computer tells it. Release either cleared your spoof or did nothing at all.
To stop a spoof, press Stop. To disconnect a phone, unplug it or walk out of range, and with Lock spoof on the spoof keeps running.
Windows installer: 103.1 MBNot code-signedSHA-256: cf8b5b06e3ae53a9a094048ce66499b1bf09dc402e1f4fd44750c023c6934dec
Fixes 1.0.48, which stopped Lock spoof from working at all.
Changed
Release is about control, not connection: it stops PinDrift driving the phone, and with Lock spoof on it leaves the spoof alone. It does not disconnect the iPhone, and the app no longer claims it does. Keeping a spoof alive depends on the phone never being told the session ended, and any disconnect we perform from the computer tells it.
Fixed
Lock spoof works again. In 1.0.48, Release disconnected the iPhone and cleared the spoof doing it, which is the opposite of what Lock is for. Release now leaves the spoof running, so you can unplug the phone or walk out of range and it keeps reporting the spoofed location.
Connecting the phone remote no longer switches Lock spoof off behind your back.
The Device Control button no longer blinks on and off when a phone is not responding.
PinDrift writes its log file again. The installed app had never written one, so 'Collect logs' produced nothing useful and real faults were invisible.
Windows installer: 103.1 MBNot code-signedSHA-256: bf4091825b9a6da8380a216052003b0b19be7aa21301a0abf0c796b4f9dc50e1
Release now really disconnects your iPhone, and Lock keeps the spoof anyway.
Added
Release now genuinely disconnects the iPhone. It drops every link between your PC and the phone instead of only stopping control, so the phone leaves the device list for real.
With Lock spoof on, the phone keeps its spoofed location after you Release it. Your PC is no longer connected to it and PinDrift is no longer driving it, so the spoof stays put until you Resume, stop it from the phone, or restart the phone.
Resume brings a released phone back. It rebuilds the wireless link from the saved pairing and picks the spoof up where you left off. If the phone is asleep, off Wi-Fi, or in airplane mode it cannot come back, and PinDrift now says so instead of failing quietly.
Fixed
Release used to look like it did nothing: PinDrift rebuilt the connection to the phone within seconds of dropping it.
Resume was broken and always failed with an error. It could never have worked in 1.0.45 through 1.0.47.
The Device Control button no longer flickers on and off while a phone is not responding.
The Lock spoof tooltip no longer claims the spoof cannot survive losing the connection. That turned out to be wrong, and it is the very thing Release with Lock relies on.
Windows installer: 103.1 MBNot code-signedSHA-256: 847a2d8105736f1fbfd9826433fd61db28d62829526871ca0d0cb5f0c5514c0c
Stops saying a phone is connected when it is not answering.
Fixed
PinDrift could keep showing your iPhone as connected after it had actually left, for example when it dropped off Wi-Fi. The device row, the status pill at the bottom of the sidebar, and the Device Control button all said connected. PinDrift now checks the phone every few seconds and says 'Not responding' instead.
The Device Control button no longer offers to control the spoof from a phone that is not answering.
Windows installer: 103.1 MBNot code-signedSHA-256: 10c990efeb7e5bfd822e4d8bfa94b659ffa538819ebe9873e2fa116162edde5c
A dropped connection no longer leaves you on your real location without saying so.
Changed
When a dropped connection stops your spoof, PinDrift now puts your last location back on its own once the phone is reachable again. A phone you released on purpose is left alone, and Anti-Speed still shows your real location when you slow down.
Fixed
If the connection to your iPhone dropped, for example a Wi-Fi change, the spoof stopped but PinDrift kept showing it as running. Your phone was on its real location and nothing told you. PinDrift now notices and says so.
Lock said the spoof survives unplugging and would last until the phone restarted. That was never true, and the wording has been corrected everywhere. Lock keeps PinDrift from clearing your spoof; it cannot keep one alive if the connection itself drops.
Windows installer: 103.1 MBNot code-signedSHA-256: 0e40e75439be0d5c434231a70328419ef30ed112d945063836d3ad4e60456e35
Actually keeps your spoof when you release a phone with Lock on.
Fixed
1.0.44 was meant to stop Release clearing your spoof when Lock is on, and it did not work. Releasing a phone with Lock on now genuinely keeps the spoof running.
Releasing a phone with Lock off still clears the spoof and returns the phone to its real location, as before.
Known issues
Lock protects your spoof from PinDrift clearing it. It cannot keep a spoof alive if the connection to the phone itself drops, for example if the phone leaves Wi-Fi or the computer sleeps. In that case reconnect the phone and PinDrift puts your last location back.
Windows installer: 103.0 MBNot code-signedSHA-256: 4a5d1af4c2aa8671cd35b44674c982a0a943c2813e5cd625d9a3b7cacba7f058
Releasing a phone no longer reveals your real location when Lock is on.
Changed
Reconnecting a phone now picks the spoof back up where you left off. If the spoof is still running it is left alone, so there is no stop-and-restart jump.
The device row now says 'Not controlled' with Release and Resume buttons. It used to say 'Disconnected' for a phone that was still connected, because the button stops PinDrift controlling the phone rather than unplugging it.
Fixed
With Lock on, disconnecting a phone in the app cleared the spoof and showed your real location. Lock is now respected: the spoof stays, and only Stop Spoofing clears it.
That also removed a false 'Location spoof cleared unexpectedly' (PND-6004) error when you disconnected a phone on purpose.
Windows installer: 103.0 MBNot code-signedSHA-256: 30f12e1489e876d7ddaa849b592e454d284870986553ad2cc9b86f35e9e924f9
Fixes the window appearing before the map has drawn.
Fixed
At launch the window could appear for a moment with an empty map before the map drew itself. PinDrift now waits for the map to draw before showing the window. If the map is slow or you are offline, the window still opens rather than making you wait.
Windows installer: 103.0 MBNot code-signedSHA-256: cd447741f51eeefe84ee79c72dfa2cdd90e09268e739bb11c8f4e62a14c45013
Fixes the developer panel flashing on screen at launch.
Fixed
The developer panel and the Nerd Stats overlay could flash across the screen for a split second while the app was starting. They now stay hidden until you open them.
Windows installer: 103.0 MBNot code-signedSHA-256: 480711932a5a89e1d7deaef5a2e681c42f5e7297a24ddbf6c4da7af4974389a0
Fixes the background engine being left running after the app closes.
Fixed
PinDrift's background engine (PinDriftEngine) could stay running after the app was force-closed, for example with End task in Task Manager. It now shuts down together with the app.
Any leftover engine from an older version is cleared automatically the first time you open this one. A leftover engine could hold on to the port PinDrift needs, which could stop a later launch from seeing your iPhone.
Windows installer: 103.0 MBNot code-signedSHA-256: 42e452ac4b61adabc096a9eaebbeba840fa1c8b878208e91d64df7c5a29c9131
Pay with crypto has an anonymous option: check out with no email at all, and get a one-time license key instead. Save it, because it is the only way back in and it cannot be recovered.
Open web dashboard signs you straight in when you are already signed in to the app.
Fixed
Some on-screen text (for example the wait message on the crypto payment screen) showed up as garbled characters in 1.0.38. This is fixed.
Windows installer: 103.0 MBNot code-signedSHA-256: ae15197ee285d4e6e4f55d1ea1fcd983b383a7dac1a8986df7e7c8a776c7c622
Anonymous crypto checkout, and one-click web dashboard.
Changed
Pay with crypto now has an anonymous option: check out with no email at all. You get a one-time license key instead of an account. Save it, because it is the only way back in and it cannot be recovered.
Paying with crypto and an email works as before. Either way, crypto is the same price as card.
Open web dashboard now signs you straight in. If you are signed in to the app, it no longer asks you to log in again on the website.
Fixed
Pay with crypto is no longer blocked behind entering an email first.
Windows installer: 103.0 MBNot code-signedSHA-256: ea180e71fa30bdc45354712a72cb2b4ccbc38f64ae87e9fda1e5d54579601553
Crypto checkout now asks for your coin first, then the network. The pay screen confirms it is safe to close once you have sent, and every crypto purchase emails you a receipt. Faster app launch; the developer panel no longer appears on startup.
Windows installer: 103.0 MBNot code-signedSHA-256: 1dcd7cdbbdcfbed749e45628e328d068f1338bdbfab7261ba5be54a7f6a90c6e
You can now pay with cryptocurrency (USDC or USDT) for a 6-month, 1-year, or lifetime license, on Base, Polygon, Arbitrum, Optimism, Avalanche, Solana, or Tron. Pick 'Pay with crypto' on the upgrade screen; your license activates automatically once the payment confirms.
Windows installer: 103.0 MBNot code-signedSHA-256: eaa8a5f3f114971b7f519a97b2ee89900da12966b6d38690ef2c4ec86c6ced6d
Every generated QR code (Device Control and Anti-Speed) now shows the PinDrift mark in its center, on a clean white pad. The QR error correction is set high enough that the logo never affects scanning.
Windows installer: 103.0 MBNot code-signedSHA-256: 766d0162ebab9dfa377551cac08d0d3dbff14bc8801c4c2430be3d57b3cc071b
The sidebar is now the same height on every tab (it no longer shrinks or grows depending on the tab). It fills the window floor-to-ceiling at normal sizes, and is only shortened and centered when the window is very tall, like maximized on a big monitor.
Windows installer: 103.0 MBNot code-signedSHA-256: 3a3966a334c0748085cd4fa836310785400b523c9f56bfa2c393d1d7a218ba0c
On the license-activation screens you can now press Enter to submit: Enter in the email field sends the code, and Enter in the 6-digit code field activates - no need to click the button.
Windows installer: 103.0 MBNot code-signedSHA-256: b68bc48a0910fa9208e4fa245d5a5630b792d34a2b5780e1603558a020845a03
On the dark glass theme, the device popup no longer shows the old duplicate device card under the per-phone row. Each phone is now a single clean row: an outline phone icon, the phone's name, how it's connected (USB, Wi-Fi, or Tailscale), and its own Disconnect / Reconnect button.
Windows installer: 103.0 MBNot code-signedSHA-256: 6bfa8ddf8fa014e6b8ccdcd7b509b2aef742b10a850f47b073bf124d0cf5ca4d
Each phone now appears as a single clean row: an outline phone icon, the phone's name, how it's connected (USB, Wi-Fi, or Tailscale), and its own Disconnect / Reconnect button.
Windows installer: 103.0 MBNot code-signedSHA-256: 03170bd1247989609a9d442f0df6bd557d6762f64d7638ec64fbe6c29e65bd13
The device panel now shows one row per phone (even with a single phone), each with its own Disconnect / Reconnect button, and no longer shows a '?' when a phone's model or iOS version isn't known yet.
Windows installer: 103.0 MBNot code-signedSHA-256: 079defeec6fc074f2d62ad3b7efafe290f925d526d8426d6ee7792e77922ba68
Paid licenses now work fully offline for the entire purchased duration.
Changed
Your paid license now keeps working offline for as long as you've paid for - a Lifetime license works indefinitely with no internet. Access is secured with a signed, device-bound entitlement, so it can't be copied to another PC.
Reliability and security hardening across licensing.
Windows installer: 103.0 MBNot code-signedSHA-256: 341e6aa41638d94cf0a651339326c6448e6982f2d061933ff89decc54847d2cb
Updates are picked up faster - the app checks every 5 minutes.
Changed
PinDrift now checks for new versions every 5 minutes instead of every 30, so a new release is picked up within minutes. The check is a tiny request to GitHub; nothing changes server-side.
Windows installer: 103.0 MBNot code-signedSHA-256: 1dbd989126b4152756175def83cac8d9d7ec298073c233d0095d5abf684e80ca
PinDrift now asks for admin permission only once, not every launch.
Changed
PinDrift now requests admin permission only the first time you run it after installing. Every launch after that starts silently with no prompt, by relaunching itself elevated through a one-time Windows scheduled task. If that ever fails it safely falls back to a normal admin prompt, so it can never fail to start.
Windows installer: 103.0 MBNot code-signedSHA-256: 4838d7a637b075008c7382f319372e5ddc30c3aff2d10b9212385ce80e6ed9ce
Updates now apply silently, with no installer wizard.
Changed
Applying an update no longer shows the full installer wizard. After you click to update, the app closes, swaps in the new version, and reopens on its own. Takes effect for updates installed from this version onward.
Windows installer: 103.0 MBNot code-signedSHA-256: aef0823fb203c13c7fcb49c201218c7087581efa477d531c213a06b83cdd8d3f
Account-claim protection, new-PC alerts, and a stronger AI-use notice.
Changed
An unbound paid license can no longer be claimed just by knowing the email address. Activating it on a PC now requires a one-time code sent to the account's own inbox. Normal purchases are unaffected.
You now get an email alert whenever your license is activated on a new PC.
The proprietary and AI-use notice is stronger and restores itself if removed from the install folder.
Windows installer: 103.0 MBNot code-signedSHA-256: 1f59eba2d76f7319f0ee2d357eb1cd901c998c32fe5326874f8a26fd94a2b074
Fixes updates getting stuck on 'PinDrift cannot be closed'.
Fixed
'Update now' could get stuck on 'PinDrift cannot be closed. Please close it manually'. The app now shuts down cleanly, and its background engine releases its files, before the installer runs - so updates apply without any manual steps.
Windows installer: 103.0 MBNot code-signedSHA-256: 08c42f5f1f75a05fe9efcf68bf54a2a4d776bc313ae755c3fbaea911ba1ef886
Your saved login is now encrypted and locked to your PC.
Changed
Your saved login is now encrypted and tied to your PC, so it can't be copied to another machine or hand-edited in the app files to impersonate another account.
Added clear proprietary and AI-use notices to the app.
Windows installer: 103.0 MBNot code-signedSHA-256: 7f38a8ed7efb615415a4b6e41eafc35ddd9c67dc477dc7721a992175c2fbddff
Updating the app could drop you back to the sign-in screen. Your login is now stored in a durable file that survives updates, so you stay signed in from one version to the next.
Windows installer: 103.0 MBNot code-signedSHA-256: 1b256823fd7c60de5a0193f5446b0da24c82580d086e237ee0889ee208b82b3c
Cleaner naming: the app and its background engine now appear under one consistent PinDrift name in Task Manager.
Changed
The app and its background engine now show under a single consistent PinDrift name (PinDrift and PinDriftEngine) in Task Manager, instead of a mix of differently-named processes.
Carries forward all the 1.0.9 performance and footprint improvements.
Windows installer: 103.0 MBNot code-signedSHA-256: 29d9c84e1dec0aa38198559808d28cef765da447d3487de98ec01f4e82139ae8
Performance + footprint pass for older / low-end PCs: faster launch, smaller download, lighter background CPU, and an even lighter Performance mode.
Changed
Faster, lighter launch: text no longer waits on a web-font download to paint, and the Apple Devices check is a fast probe instead of a PowerShell call on every start.
Smaller download and install: the bundle drops unused image-codec libraries and dead assets, and the in-app UI is minified for quicker loading on slow machines.
Performance mode is even lighter: it stops more background work, skips extra map layers, and fully disables the FPS overlay.
Quieter background CPU: the engine no longer re-checks Developer Mode every poll and skips the Android probe when no Android device is connected.
Windows installer: 103.0 MBNot code-signedSHA-256: 53aec38d28fe73c77c50823f08b586d66e52b97fcb704c3b8acd595bbb5cdd3d
Lower memory use: frees cached map tiles after a sustained minimize, and a thinner tile cache in Performance mode.
Changed
PinDrift now frees its cached map tiles after the window has been minimized for a while (the common 'minimized while a spoof runs' state); they re-load automatically when you return. A quick minimize/restore does not purge, so there is no tile flicker during normal use.
Performance mode now also keeps a thinner map-tile cache in memory.
Windows installer: 107.0 MBNot code-signedSHA-256: cb41b38212a62a63d2ce1c1ca51923bfca6028ace71ffde42bcae5c738efa374
New Performance mode: a Settings toggle that cuts GPU and CPU usage for older or battery-powered machines.
Added
Performance mode (Settings -> Display): removes the glass blur and shadows, stops background animations, caps the frame rate, makes the map move instantly, and slows background updates. Off by default; spoofing speed and accuracy are unaffected.
Windows installer: 107.0 MBNot code-signedSHA-256: 29745a43387694248b10dfaafdd9e5b46418c24722e66bb2d29ebbcc7e9ba138
Fixes a false 'active on another PC' lock, keeps you signed in across updates, and restores the Windows taskbar icon.
Fixed
Fixed a false 'This license is active on another PC' lock that could appear on the same PC after an update. Your device identity is now stable across network-adapter changes (iPhone over USB, Tailscale, VPNs), and the server automatically heals a binding whose hash shifted.
You now stay signed in across updates: your app data (login and install identity) is preserved on update and reinstall instead of being cleared.
Removed a spurious 'No device connected' (PND-9030) error that could appear on launch before a phone was plugged in.
Restored the missing Windows taskbar icon.
Windows installer: 107.0 MBNot code-signedSHA-256: 6fc2cdf6095595dfd39e47a39ff130af5af3f13e36432f240ad574113cf4219d
Tutorial step card now stays fully on-screen near any window edge.
Fixed
The first-launch tutorial card could be cut off below the window on the Device Control, Toolbar, and Discord steps; it now senses the window edge and flips or clamps to stay fully visible, and re-positions on resize.
Windows installer: 107.0 MBNot code-signedSHA-256: 6d19ec75b09ebf838f70f4d365ca367488aed62bea4bbcd6cb6b44e2090f3d2e
Much faster install: the app now writes ~1,160 files instead of ~6,700.
Changed
Removed a 5,500-file code-autocompletion library (jedi) that was bundled transitively but never used at runtime. Fresh installs and auto-updates are dramatically quicker because Windows Defender has far fewer files to scan.
Windows installer: 107.0 MBNot code-signedSHA-256: 05d887f6edcab069824a530c86bc47f065d669c0c7ad75c632e452983ad0abc3
Satellite and dark by default, plus a refreshed first-launch tutorial.
Changed
Default map is now Satellite, with the dark theme.
First-launch tutorial now covers all three tabs (Teleport, Route, Anti-Speed) and adds steps for Device Control, the toolbar icons, and the community Discord.
Removed a stray theme toggle that overlapped the tutorial.
Windows installer: 110.8 MBNot code-signedSHA-256: 83076f5cb306bf9cd4ac1c16449862eeb8c1edd0362152a58bef8413d439bb97
Fixes the update notification overlapping the window controls, and a spurious 'No device selected' error that could appear on startup with a phone connected.
Fixed
Update notification toast moved below the title bar so it no longer overlaps the minimize / maximize / close controls.
Removed a spurious 'No device selected' (PND-9030) error on startup: the sticky-lock auto-resume no longer reports an error before the device selection is ready.
Windows installer: 110.8 MBNot code-signedSHA-256: 8502f7ef0c014310d66511a1174d03b384519f4b18b57c57ec55de7780488709
The first stable release. Independent multi-device control lets you place and move each connected iPhone separately, with per-device routes and drag-to-move pins. Anti-Speed adds a phone-side speed governor handed off by QR, and new devices auto-open a guided setup sheet.
Highlights
Independent multi-device control: each connected iPhone gets its own location, route, and saved spot - they no longer all move together
Per-device routes: run different routes on different phones at the same time
Drag a device's pin directly on the map to move it
Auto-detect: plug in a new iPhone and PinDrift opens the setup sheet automatically
Anti-Speed: a phone-side live speed governor you hand off from the desktop via QR
Persist-after-disconnect lock, kept in sync between the desktop and the phone remote
Added
Per-device (per-UDID) control plane: independent placement, routes, and lock state for every connected iPhone.
Auto-detect new device: connecting an unconfigured iPhone opens a guided per-device setup sheet.
Draggable secondary-device map pins.
Anti-Speed phone module: a live accelerometer + heading speed governor, handed off from the desktop tab via a QR code.
Phone remote-control hand-off for driving a session from the phone.
Changed
App version bumped to 1.0.0 across the installer, backend, and UI.
The lock control is now strictly a persist-after-disconnect setting, kept in sync between the desktop and the phone remote.
Known issues
The installer is unsigned; SmartScreen shows 'Windows protected your PC'. Verify the SHA-256 against this page or /dev/smartscreen.html before running.
macOS host build is not yet available; PinDrift is Windows-only on the host side for now.
Multi-device is validated in simulation and in single-device use; running 2+ physical iPhones at once is newly shipped in 1.0.
Windows installer: 110.8 MBNot code-signedSHA-256: b73ab164e533402b6c2635d56ca1355c1bdf012c10bb1003f0a35c2d5a25f84d
New Tools tab introduces geofences, recordings, triggers, convoy mode, course importer, and the measure tool. Pin annotations and favorite folders ship alongside. The HTTP API and CLI design is locked; implementation lands in 0.2.0 final.
Highlights
Geofence designer: draw circles or polygons on the map, then fire enter / exit / dwell on demand to test app triggers
Recorder / replay: capture the real GPS trace from your phone over time, replay it later
Triggers & scheduling: time-of-day, geofence, and calendar-based scenario triggers
Convoy mode: multiple iPhones move together along a route with per-device offsets
Course importer: paste a public Strava / RideWithGPS / Komoot URL to pull a route into the Route tab
Mixed-mode routes: walk -> drive -> walk legs with per-leg mode + speed
Pin annotations: notes on waypoints and favorites
Favorite folders: group favorites into Home / Office / QA / Demo categories
Measure tool: click two points for distance and bearing
Added
New top-level Tools tab in the sidebar.
Geofences: draw circles or polygons on the map, persist as named regions with metadata, and trigger enter / exit / dwell actions from the tools list.
Recordings: capture mainPin location samples once per second, save as named recordings, replay at original tempo. Export individual recordings as JSON for sharing.
Triggers / scheduling: time-of-day, geofence-transition, and calendar-tagged triggers persist between launches; enable / pause each independently.
Convoy mode: roster of all connected iPhones; designate one as anchor and configure per-device north/east offsets in meters. Apply to fan a single route across the convoy.
Course importer: paste a public Strava / RideWithGPS / Komoot URL. PinDrift verifies the host and imports the course into the Route tab.
Measure tool: click two points on the map. Distance in metric + imperial. Bearing in degrees + cardinal direction.
Pin annotations: optional note field on waypoints and favorites; stored in scenario export.
Favorite folders: optional folder name per favorite. Folders are collapsible, renameable, and persist their collapsed state across launches.
Mixed-mode routes: new 'Mixed' option in Route mode segmented control. Insert leg breaks between waypoints; each leg has its own mode and speed cap.
Anti-crack hardening architecture document at docs/hardening-architecture.md (internal).
HTTP API + CLI design document at docs/api-and-cli.md (internal). Implementation targeting 0.2.0 final.
Changed
Sidebar grew from four tabs to five (Device, Location, Route, Tools, Settings).
Tab-switcher hides the static-spoof pin on tabs where it would compete with other primary visuals (Route, Tools, Settings).
License policy: previously 'one active host PC, unlimited free transfers, unlimited phones connected'. Now 'one active host PC, one free transfer per 180-day window, several phones connected'. The 180-day cooldown prevents license-as-a-service abuse; emergency transfers (theft, hardware failure) can still be expedited with documentation. The multi-device cap reflects the realistic single-host ceiling on commodity hardware - see dev/multi-device-scaling.html for the reasoning. Existing v0.1.0 licenses are grandfathered: the cooldown only begins on the next transfer initiated after May 11, 2026.
Known issues
Recorder samples are taken from the static-spoof pin in mockup mode. In production they come from the daemon's per-device location stream.
Course importer's mockup mode generates a plausible route around the current pin; production daemon performs the real fetch + GPX parse server-side to avoid CORS.
Calendar trigger backend is stubbed; v0.2.0 final integrates with Outlook / Google Calendar via OAuth.
First public build of PinDrift. iOS spoofing, multi-device, wireless mode, Windows installer, and a full website ship together.
Highlights
iOS 17+ tunneling via the developer-disk-image channel (RemoteXPC tunneld)
Live map, static spoof, routes (walk / bike / drive), favorites, presets, match clock
Multi-device fan-out for Lifetime accounts
Wireless mode after one-time USB pair
Frameless Electron UI with custom title bar
Added
PinDrift launcher (Python / PyInstaller) with self-elevation to admin so Apple's mobile-device pipe is reachable on locked-down machines.
Splash + tray UI: native splash on cold boot, system-tray icon for resume / pause / quit while the UI is hidden.
Single-instance guard via a Win32 named mutex (Global\PindriftSingleton). Launching twice raises the already-running window.
Managed-process supervisor for tunneld (port 49151) and the PinDrift daemon (port 49152). Crashes are restarted with exponential backoff; persistent failure surfaces a tray notification.
Tunneld watchdog: cross-checks usbmuxd against tunneld every 5 seconds; if tunneld is blind to a phone usbmuxd can see for more than 15 seconds, tunneld is restarted in place.
Auto-start at login via Windows Task Scheduler (opt-in during install).
Crash reporter: bundles the last 5 minutes of logs, scrubs lat/lng with a generic regex sweep before upload, requires explicit user confirmation to send.
DPAPI-encrypted local license token so the activation survives reboots without re-entering credentials.
Frameless Electron UI with custom Minimize / Maximize / Close controls wired through context-isolated IPC.
Frontend Settings panel cleanup: subscription tier and billing references removed (we're not subscription anymore); collapsible details for advanced toggles.
Single-phone UX: the per-row mini-card hides when only one device is connected; IDLE / SPOOFING pill moves into the main device-card header.
Refund modal aligned with the 14-day / 5-minute refund policy and the Lunis Group competitor-termination clause.
Agreement modal on first launch: blocks the tutorial until the user accepts Terms, Privacy, and Acceptable Use; AAA-arbitration / Fulton County GA forum.
GPX import for routes (drop a .gpx from a bike computer / watch onto the Route tab).
Changed
Repositioned: PinDrift now sells one host PC at a time, with a 180-day cooldown between transfers. Previous marketing language about 'unlimited PCs' and 'unlimited transfers' has been retired across all affected pages.
Refund policy refactored: zero-usage gate replaced with a 14-day / under-5-minute cumulative active-spoof window. Heartbeat counters (spoof_seconds) enforce this server-side at refund time.
Account model: one license, one active host PC, up to 3 connected phones, one free PC transfer per 180-day window via the web portal.
Pricing simplified to Lifetime $30 one-time, Enterprise custom. Subscription tier was never shipped and has been removed from the codebase.
Country gating: PinDrift is US-only for v0.1. We do not sell to EU / EEA / UK / Switzerland; the checkout will block these countries until the GDPR work in v0.3 lands.
Trademark notices on /vs.html and /dev/apps-and-detection.html updated to name every referenced third party for nominative-fair-use protection.
Fixed
Tunneld 'blind state' after USB replug events: previously required a manual restart, now self-heals via the watchdog within ~15s.
PowerShell mojibake on terms.html (§ for §): files were being read as Latin-1 and re-written as UTF-8, double-encoding the section sign. Build process now pins UTF-8 round-trip.
License card layout: long keys no longer wrap weirdly; Show/Hide toggle now lives in the row header (1Password-style code-block).
FAQ inconsistencies: license / move-PC / company-shutdown questions rewritten to match the 1-host-PC + free-transfers model.
Apple Devices service misdiagnosis: launcher used to claim 'Apple Mobile Device Service is not installed' even when the Microsoft Store Apple Devices app was running. Detection now checks for the usbmuxd TCP socket on port 27015 instead of the legacy Windows service name.
Security
Update check is the only outbound call during normal operation besides the licensing heartbeat. The request carries no UDID, email, license, or version-fingerprint information.
Update check pins to https://pindrift.app and rejects cross-host redirects.
Local license tokens are DPAPI-bound to the Windows user account, so copying the token file to another user or machine does not authorize that user.
Known issues
Code-signing certificate is not yet in place. The installer is unsigned in v0.1.0; SmartScreen will show 'Windows protected your PC'. See /dev/smartscreen.html for an explanation and the SHA-256 verification path.
macOS host build is not available. PinDrift v0.1 is Windows-only on the host side. macOS support is on the roadmap but not in v0.1.
Android device support is feature-flagged off in the v0.1.0 installer; the daemon's Android codepath exists but is not surfaced in the UI yet.
Apple Pay / contactless payments will not work while Developer Mode is enabled on the phone (Apple's choice, not ours). Toggle Developer Mode off when you need to tap a card.
Step counters in Apple Health and Google Fit are accelerometer-based; spoofing GPS will not add to your step total.
ManagedProcess supervisor abstraction with restart-with-backoff and tray-notification hooks.
Crash bundle scrubber: regex sweep over the last 5 minutes of logs strips coordinates before the bundle leaves the machine.
Initial Electron preload bridge exposing window.pindrift API (minimize, maximize-toggle, close, is-maximized).
Changed
License key format finalized: 33 characters, Crockford base32, Damm checksum. Length increased from 25 to 33 to push brute-force entropy past 125 bits.
Fixed
Two-process race during shutdown where the daemon kept the tunneld socket open after the launcher exited; daemon now drops the listener on SIGTERM.
Multi-device fan-out lands. Frontend rewrite for the device tab.
Added
Device tab: bulk-select pill (All / None) at the top of the device list.
Multi-device action fan-out for Apply / Stop / Route across selected devices.
Per-device editing: uncheck a phone to leave it alone while you edit another.
Match-clock display in the SPOOFING banner (timezone + local time at the spoofed location).
Changed
Multi-device gated to Lifetime tier (token-cap enforcement, client-side); free-tier accounts see the second device but the Apply button is disabled with a tooltip.
Wireless mode: after a one-time USB pair, PinDrift talks to the phone over Wi-Fi.
Headless always-on build skeleton.
Fixed
Wireless reconnect after the phone roamed to a different Wi-Fi network used to require a PinDrift restart. Now reconnects automatically within ~10 seconds.