Repository navigation
Releases: thedevmark/auto-iphone-uploader
Release list
Auto iPhone Uploader 1.0 RC 6
Post finished videos from your Windows PC through the real iPhone apps: YouTube Shorts, Instagram Reels via Edits' 4K export with Facebook and Threads crossposts, and TikTok.
Install: download AutoiPhoneUploader-Setup-v1.0.0-rc.6.exe below and run it. Python comes bundled. Windows SmartScreen may say "unrecognized app" because the installer is not code-signed yet: click More info → Run anyway. The zip + PowerShell route still works (see the README).
Fixed
- The Windows installer is attached (rc.5's build stopped on Python 3.14's Tcl/Tk 9 files).
- No accessibility reads on any playing screen: the video guard now covers TikTok, YouTube, Instagram, Edits, Threads and Facebook; YouTube's playing screens are read with Windows OCR;
unlock()no longer queries the front app on a playing screen.
🛡 VirusTotal GitHub Action analysis:
Auto iPhone Uploader 1.0 RC 4
Post finished videos from your Windows PC through the real iPhone apps: YouTube Shorts (title, description, first-frame thumbnail), Instagram Reels via Edits' 4K export with Facebook and Threads crossposts, and TikTok. Post now, or schedule into YouTube's and Instagram's own schedulers.
Install: download the zip below, unzip it, and run one command in PowerShell from that folder (see the README). Verify the download.
Fixed
- The iPhone passcode is kept encrypted at rest with Windows DPAPI
(PHONE_PASSCODE_DPAPI, readable only by your Windows account on this PC);
scripts\set_passcode.pyremoves a plain-text line. Run it once to
encrypt a passcode saved by an earlier version. install_windows.ps1 -CheckOnlyexits 0 when it reports steps still to do,
so the release build no longer stops on a clean machine (rc.3 published no
download for this reason).
Also in this release (from rc.3)
Added
- Remove the video from the iPhone after it posts. Posts save nothing to
Photos, but every Instagram post leaves an Edits project holding the clip
(often over a gigabyte). Once Instagram confirms the post, that one project
moves to Edits' Trash, where it can still be restored. It is matched exactly
(new since the upload, still "Untitled project", young enough); anything
ambiguous leaves Edits alone. Setting on by default. - A calm first-run setup. Five screens, one task each, that advance by
themselves; commands sit in copyable console blocks behind "Show me how";
optional items moved to Extras in Settings. System, light and dark
theme toggle. - One-command install with numbered progress, plain messages, a fix for
every failure, and optional prompts for the passcode and the USB recovery
helper (now recommended rather than required). - One owner of the iPhone at a time. Every phone flow holds a lock, so a
script run by hand, a slot post and a receipt read can never drive the
phone together; a lock left by a crashed run is ignored. - YouTube's hidden detail rows are read with Windows' built-in OCR.
YouTube 21.38 draws Description, Paid promotion and "AI use, Tags" but
leaves them out of the accessibility tree; the YouTube runner now finds them
in a screenshot withWindows.Media.Ocr(offline, no model,
video_drop/ocr/), taps the one exact match and proves the tap by the
screen that opens. A label that is missing or appears twice stops the run.
Multi-line descriptions are typed line by line and read back. New checklist
row: Screen text reader (Windows OCR). - Receipts read on their own. In the hour after a final tap the app
looks at the phone up to four times (3, 10, 25 and 55 minutes, read-only;
a missed look is skipped, never caught up in a burst) and records the
Instagram and Threads receipts the profile proves, so those destinations
turn posted with no click. It stands down while another phone action,
a link problem or a held phone lock is in the way. New setting: Check
each post in the apps afterwards (on by default). - Instagram switches to the release's account by itself. When Instagram
is on another signed-in account, the runner opens Instagram's own account
switcher, picks the exact handle (never a prefix match) and reads the
profile header again before the Edits export; a switch that does not land
stops the run with nothing posted. - USB pipe-stall recovery. When WebDriverAgent and lockdown both stop
answering while Windows still lists the phone, the link supervisor names it
a pipe stall (video_drop/pipe_stall.py), skips the Home press and walks a
ladder: wait, restart Apple Mobile Device Service, restart the iPhone's USB
device node, each verified by lockdown answering again, and only then asks
for a replug. Each step's outcome and seconds are logged. - USB recovery helper for the two privileged ladder steps:
scripts\install_windows.ps1 -InstallUsbHelperregisters an on-demand
SYSTEM scheduled task (one UAC prompt) that can only restart Apple Mobile
Device Service or the iPhone's USB node;-UninstallUsbHelperremoves it.
The app itself never runs elevated. Design and threat model:
docs/usb-recovery-helper.md. - Checklist rows: USB recovery helper installed; iPhone USB path (warns
about an AMD chipset controller or a hub between the phone and the PC);
iPhone charging over USB (warns when the phone drains while plugged in or
the battery is low). scripts/set_passcode.pysavesPHONE_PASSCODEinto.envfrom a hidden
prompt and never prints it.
Fixed
- Screenshots fall back to WebDriverAgent's screenshot when go-ios's
screenshot service on the phone stops answering, instead of stopping the
run. - A clip in a cloud folder reached through a short (8.3) or junction path is
recognised as inside that folder. - numpy is listed as a runtime dependency.
- Instagram's account check closes a story the app reopened on.
- Receipts: the Instagram receipt taps the Profile tab a second time
(two seconds apart, never a double tap) so a profile reopened mid-scroll
shows its post count again; the Threads receipt reads Threads' new "Threads
tab" / "Replies tab" labels and accepts a caption whose hashtags Threads
folded, only as that exact fold of the approved caption. - Focus: a Focus menu left open by an earlier run is closed with a tap on
empty space (Home leaves it up) before Control Center is read; Control
Center is read at full depth again so the Focus module is found; an active
Focus that already silences the phone (for example a Streaming Focus) is
left untouched; the owner's Focus is remembered for 10 minutes so one Post
now reads it once. - YouTube: the audience picker is skipped when YouTube already remembers
"not made for kids"; visibility is confirmed from the picker's own radio
when the details row is stale; the share sheet gets up to 15 s to show the
file size before it is judged. - Phone link: the driver refuses an accessibility snapshot while a video
app is visibly playing (the read that stalled the USB pipe) and the flows
read pixels there instead: TikTok waits out its playing editor by pixels
before reading the post screen, Instagram's cover proof and Edits' segment
check read go-ios pixels, and leaving a playing app goes to the Home Screen
through go-ios without asking WebDriverAgent; the supervisor retries its status-file replace
when a reader holds the file open on Windows; the link experiment keeps
recording through a phone error; a power warning is logged when the phone
drains while reported as charging. - Every runner checks the source file against the same database it loaded
the release from.
Changed
- The test suite never reads the owner's real
.env(VIDEO_DROP_ENV_FILE),
andpytest.inilimits collection totests/.
🛡 VirusTotal GitHub Action analysis:
Auto iPhone Uploader 1.0 RC 5
Superseded by v1.0.0-rc.6: this candidate's installer build failed, so no Setup.exe is attached. Use rc.6.
Auto iPhone Uploader 1.0 RC 3
v0.1.0 — early preview
First public preview. Works today: import and review video text, Threads Post now from the iPhone. YouTube Post now is built but not yet proven on a live phone. Scheduling and Instagram/TikTok/Facebook posting are not connected yet.
Download auto-iphone-uploader-v0.1.0.zip below (built by GitHub Actions from this tag, not the 'Source code' links) and see SECURITY.md for what it does on your phone and how to verify the zip.
VirusTotal: 0 of 65 engines flagged this zip (sha256 c4ae924bcd67620b0248bd3a628f42fc9e7e28496058e6066dfd3640743b8f6b).
🛡 VirusTotal GitHub Action analysis: