@8bitbish/screenshot-service 1.2.3 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/device.d.ts +18 -0
- package/dist/device.d.ts.map +1 -1
- package/dist/device.js +96 -0
- package/dist/device.js.map +1 -1
- package/dist/index.d.ts +55 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +174 -1
- package/dist/index.js.map +1 -1
- package/dist/wizard/index.d.ts.map +1 -1
- package/dist/wizard/index.js +22 -0
- package/dist/wizard/index.js.map +1 -1
- package/dist/wizard/preload.js +6 -0
- package/dist/wizard/renderer/assets/iOS/Trust.png +0 -0
- package/dist/wizard/renderer/assets/iOS/developer mode.png +0 -0
- package/dist/wizard/renderer/assets/iOS/iOSWifiStep.png +0 -0
- package/dist/wizard/renderer/index.html +309 -44
- package/package.json +1 -1
package/dist/device.d.ts
CHANGED
|
@@ -11,6 +11,24 @@ export interface ForegroundApp {
|
|
|
11
11
|
/** Builds pymobiledevice3 args with optional `--udid` targeting a specific device. */
|
|
12
12
|
export declare function pmd3Args(udid: string | null, ...args: string[]): string[];
|
|
13
13
|
export declare const MODEL_NAMES: Record<string, string>;
|
|
14
|
+
export declare function isIosDeviceTrusted(_python: string, udid?: string | null): Promise<boolean>;
|
|
15
|
+
/**
|
|
16
|
+
* Returns whether "Show this iPhone when on Wi-Fi" is currently ticked in
|
|
17
|
+
* Finder for the given iPhone.
|
|
18
|
+
*
|
|
19
|
+
* Two signals, either is sufficient:
|
|
20
|
+
* 1. Fast: `usbmux list` includes the UDID with `ConnectionType: 'Network'`.
|
|
21
|
+
* This is what usbmuxd reports; reliable when state is fresh, but can go
|
|
22
|
+
* stale (e.g. after Finder toggles or unpair/re-pair churn) until the
|
|
23
|
+
* Mac restarts.
|
|
24
|
+
* 2. Bonjour browse for `_apple-mobdev2._tcp.` finds the iPhone advertising
|
|
25
|
+
* itself on the LAN. This is what tunneld and Finder ultimately use for
|
|
26
|
+
* wireless connections — the ground truth, but the browse takes ~2s.
|
|
27
|
+
*
|
|
28
|
+
* The fast check runs first. If it fails, we fall back to Bonjour — that
|
|
29
|
+
* catches the "Mac state is stale but the iPhone really is reachable" case.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getWirelessEnabled(python: string, udid?: string | null): Promise<boolean>;
|
|
14
32
|
/**
|
|
15
33
|
* Returns whether Developer Mode is currently ON for the given iPhone.
|
|
16
34
|
* Resolves to false on any failure (device not trusted, command errors, etc.) — best-effort.
|
package/dist/device.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../device.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED,sFAAsF;AACtF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEzE;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA2B9C,CAAC;
|
|
1
|
+
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../device.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED,sFAAsF;AACtF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEzE;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA2B9C,CAAC;AAyBF,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBtG;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAiCrG;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CASzG;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAInG;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAmBnG;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA2BhH"}
|
package/dist/device.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MODEL_NAMES = void 0;
|
|
4
4
|
exports.pmd3Args = pmd3Args;
|
|
5
|
+
exports.isIosDeviceTrusted = isIosDeviceTrusted;
|
|
6
|
+
exports.getWirelessEnabled = getWirelessEnabled;
|
|
5
7
|
exports.getDeveloperModeStatus = getDeveloperModeStatus;
|
|
6
8
|
exports.enableDeveloperMode = enableDeveloperMode;
|
|
7
9
|
exports.getDeviceInfo = getDeviceInfo;
|
|
@@ -42,6 +44,100 @@ exports.MODEL_NAMES = {
|
|
|
42
44
|
"iPhone17,3": "iPhone 16",
|
|
43
45
|
"iPhone17,4": "iPhone 16 Plus",
|
|
44
46
|
};
|
|
47
|
+
/**
|
|
48
|
+
* Returns whether this Mac has a valid trust/pair record for the given iPhone.
|
|
49
|
+
*
|
|
50
|
+
* Plugged-in-but-untrusted iPhones show up in `usbmux list` (it's a USB-level
|
|
51
|
+
* query) but we can't capture from them. This check is what lets us hide them
|
|
52
|
+
* from the device list until the user taps Trust.
|
|
53
|
+
*
|
|
54
|
+
* Critical: we use libimobiledevice's `idevicepair validate` because it's the
|
|
55
|
+
* only readily-available probe that does NOT auto-pair on miss. pymobiledevice3
|
|
56
|
+
* commands like `lockdown info` *re-create the pair record* when they find none —
|
|
57
|
+
* so they always return success, even right after `lockdown unpair`. That made
|
|
58
|
+
* trust filtering useless.
|
|
59
|
+
*
|
|
60
|
+
* If idevicepair isn't installed, we assume trusted (the package still works,
|
|
61
|
+
* just without the trust filter).
|
|
62
|
+
*/
|
|
63
|
+
function findIdevicepair() {
|
|
64
|
+
for (const p of ["/opt/homebrew/bin/idevicepair", "/usr/local/bin/idevicepair", "idevicepair"]) {
|
|
65
|
+
try {
|
|
66
|
+
(0, child_process_1.execFileSync)(p, ["--help"], { stdio: "ignore" });
|
|
67
|
+
return p;
|
|
68
|
+
}
|
|
69
|
+
catch { }
|
|
70
|
+
}
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
async function isIosDeviceTrusted(_python, udid = null) {
|
|
74
|
+
const idevicepair = findIdevicepair();
|
|
75
|
+
if (!idevicepair)
|
|
76
|
+
return true; // graceful degrade: skip the filter
|
|
77
|
+
// idevicepair defaults to USB-only. We need to try network too so iPhones
|
|
78
|
+
// that are reachable only over WiFi (USB unplugged but show-on-WiFi on)
|
|
79
|
+
// still validate as trusted.
|
|
80
|
+
const variants = udid
|
|
81
|
+
? [["validate", "-u", udid], ["-n", "validate", "-u", udid]]
|
|
82
|
+
: [["validate"], ["-n", "validate"]];
|
|
83
|
+
for (const args of variants) {
|
|
84
|
+
try {
|
|
85
|
+
await execFileAsync(idevicepair, args, { timeout: 5000 });
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
catch { }
|
|
89
|
+
}
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Returns whether "Show this iPhone when on Wi-Fi" is currently ticked in
|
|
94
|
+
* Finder for the given iPhone.
|
|
95
|
+
*
|
|
96
|
+
* Two signals, either is sufficient:
|
|
97
|
+
* 1. Fast: `usbmux list` includes the UDID with `ConnectionType: 'Network'`.
|
|
98
|
+
* This is what usbmuxd reports; reliable when state is fresh, but can go
|
|
99
|
+
* stale (e.g. after Finder toggles or unpair/re-pair churn) until the
|
|
100
|
+
* Mac restarts.
|
|
101
|
+
* 2. Bonjour browse for `_apple-mobdev2._tcp.` finds the iPhone advertising
|
|
102
|
+
* itself on the LAN. This is what tunneld and Finder ultimately use for
|
|
103
|
+
* wireless connections — the ground truth, but the browse takes ~2s.
|
|
104
|
+
*
|
|
105
|
+
* The fast check runs first. If it fails, we fall back to Bonjour — that
|
|
106
|
+
* catches the "Mac state is stale but the iPhone really is reachable" case.
|
|
107
|
+
*/
|
|
108
|
+
async function getWirelessEnabled(python, udid = null) {
|
|
109
|
+
// Fast path: usbmux's view.
|
|
110
|
+
try {
|
|
111
|
+
const { stdout } = await execFileAsync(python, [...PMD3, "usbmux", "list"], { timeout: 5000 });
|
|
112
|
+
const entries = JSON.parse(stdout);
|
|
113
|
+
const networkEntry = entries.some(d => (udid ? d.Identifier === udid : true) &&
|
|
114
|
+
d.ConnectionType === "Network");
|
|
115
|
+
if (networkEntry)
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
catch { }
|
|
119
|
+
// Fallback: ground-truth Bonjour browse. usbmuxd can be stale; mDNS isn't.
|
|
120
|
+
try {
|
|
121
|
+
// Run an inline Python script that uses pymobiledevice3's bonjour browser.
|
|
122
|
+
// 2-second timeout — long enough to receive at least one announcement.
|
|
123
|
+
const script = "import asyncio, sys\n" +
|
|
124
|
+
"from pymobiledevice3.bonjour import browse_mobdev2\n" +
|
|
125
|
+
"async def main():\n" +
|
|
126
|
+
" answers = await browse_mobdev2(timeout=2)\n" +
|
|
127
|
+
" udid = " + JSON.stringify(udid || "") + "\n" +
|
|
128
|
+
" # If a specific UDID was requested, look for any service instance whose name or host contains it.\n" +
|
|
129
|
+
" # Service names look like '<random-mac>@<linklocal-ipv6>-supportsRP-<n>' so they don't include UDID directly,\n" +
|
|
130
|
+
" # but a non-empty result is sufficient if there's only one iPhone — and if the user passed a UDID we still\n" +
|
|
131
|
+
" # advance when ANY iOS device is being advertised on the LAN (the Bonjour record doesn't expose UDID).\n" +
|
|
132
|
+
" print('YES' if answers else 'NO')\n" +
|
|
133
|
+
"asyncio.run(main())\n";
|
|
134
|
+
const { stdout } = await execFileAsync(python, ["-c", script], { timeout: 6000 });
|
|
135
|
+
return /YES/.test(stdout);
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
45
141
|
/**
|
|
46
142
|
* Returns whether Developer Mode is currently ON for the given iPhone.
|
|
47
143
|
* Resolves to false on any failure (device not trusted, command errors, etc.) — best-effort.
|
package/dist/device.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["../device.ts"],"names":[],"mappings":";;;AAmBA,4BAEC;
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../device.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -116,6 +116,61 @@ export interface ConnectedDevice {
|
|
|
116
116
|
* to a single entry.
|
|
117
117
|
*/
|
|
118
118
|
export declare function listDevices(): Promise<ConnectedDevice[]>;
|
|
119
|
+
/**
|
|
120
|
+
* Unlink (untrust + forget) an iPhone from this Mac. Removes the trust pairing
|
|
121
|
+
* on both sides where possible.
|
|
122
|
+
*
|
|
123
|
+
* Try strategy:
|
|
124
|
+
* 1. `pymobiledevice3 lockdown unpair` — succeeds when both sides are in
|
|
125
|
+
* sync. Cleanly tells the iPhone to drop us from its trusted-host list
|
|
126
|
+
* and removes the local pair record.
|
|
127
|
+
* 2. If that errors with InvalidHostID (iPhone already forgot us but the
|
|
128
|
+
* Mac still has a stale pair record), fall back to deleting the local
|
|
129
|
+
* pair record file directly. That needs sudo, so we go through an
|
|
130
|
+
* osascript admin prompt — same one macOS uses for system installs.
|
|
131
|
+
*
|
|
132
|
+
* After this resolves, the iPhone will show the "Trust this Computer?"
|
|
133
|
+
* dialog again next time it connects.
|
|
134
|
+
*/
|
|
135
|
+
export declare function unlinkIosDevice(options: {
|
|
136
|
+
deviceId: string;
|
|
137
|
+
}): Promise<void>;
|
|
138
|
+
/**
|
|
139
|
+
* Unlink an Android device (drop the wireless ADB connection if any, clear
|
|
140
|
+
* the saved wireless endpoint). USB-only devices need no Mac-side cleanup —
|
|
141
|
+
* the user just unplugs the cable. Wireless pair records live on the phone;
|
|
142
|
+
* to fully forget there, the user taps "Forget" in Wireless Debugging.
|
|
143
|
+
*/
|
|
144
|
+
export declare function unlinkAndroidDevice(options: {
|
|
145
|
+
deviceId: string;
|
|
146
|
+
}): Promise<void>;
|
|
147
|
+
export interface OnboardedState {
|
|
148
|
+
/** Whether the first-run migration has been done on this Mac. */
|
|
149
|
+
initialized: boolean;
|
|
150
|
+
/** UDIDs of iPhones that have completed the wizard flow at least once. */
|
|
151
|
+
ios: string[];
|
|
152
|
+
/** Physical serials of Android devices that have completed the wizard flow. */
|
|
153
|
+
android: string[];
|
|
154
|
+
}
|
|
155
|
+
/** Read the onboarded state. Returns initialized=false if no file exists yet. */
|
|
156
|
+
export declare function getOnboarded(): OnboardedState;
|
|
157
|
+
/** Persist the onboarded state. Best-effort; failures are swallowed. */
|
|
158
|
+
export declare function setOnboarded(state: OnboardedState): void;
|
|
159
|
+
/**
|
|
160
|
+
* Bring Finder forward. The wizard's on-screen instructions tell the user
|
|
161
|
+
* where to click — we deliberately don't try to navigate the sidebar via UI
|
|
162
|
+
* scripting because that would trigger a "control Finder via System Events"
|
|
163
|
+
* permission prompt.
|
|
164
|
+
*/
|
|
165
|
+
export declare function openFinder(): Promise<void>;
|
|
166
|
+
/**
|
|
167
|
+
* Returns whether "Show this iPhone when on Wi-Fi" is currently enabled in
|
|
168
|
+
* Finder for the given iPhone. Use this to detect (via polling) when the user
|
|
169
|
+
* has ticked the box during onboarding.
|
|
170
|
+
*/
|
|
171
|
+
export declare function getIosWirelessEnabled(options?: {
|
|
172
|
+
deviceId?: string;
|
|
173
|
+
}): Promise<boolean>;
|
|
119
174
|
/**
|
|
120
175
|
* Trigger the Developer Mode enable flow on a specific iPhone.
|
|
121
176
|
*
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAMA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAwH,UAAU,EAAE,aAAa,EAAyB,MAAM,UAAU,CAAC;AAClM,OAAO,EAAiD,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACpG,OAAO,EAAe,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEnD,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;AAIvE,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAkCnD,wBAAgB,eAAe,IAAI,OAAO,CAOzC;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAqBjD;AAED,gCAAgC;AAChC,wBAAgB,UAAU,IAAI,IAAI,CAMjC;AA0LD,MAAM,WAAW,uBAAuB;IACtC,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,sBAAsB;IACtB,MAAM,EAAE,iBAAiB,CAAA;IACzB,mEAAmE;IACnE,aAAa,EAAE,aAAa,GAAG,IAAI,CAAA;IACnC,oCAAoC;IACpC,UAAU,EAAE,IAAI,CAAA;IAChB,kGAAkG;IAClG,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,sBAAsB;IACtB,MAAM,EAAE,UAAU,CAAA;IAClB,mEAAmE;IACnE,aAAa,EAAE,aAAa,GAAG,IAAI,CAAA;IACnC,oCAAoC;IACpC,UAAU,EAAE,IAAI,CAAA;IAChB,kGAAkG;IAClG,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;CAC1B;AAID,wBAAsB,sBAAsB,CAAC,OAAO,CAAC,EAAE;IACrD,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4C5B;AAID,wBAAsB,wBAAwB,CAAC,OAAO,CAAC,EAAE;IACvD,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,oGAAoG;IACpG,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA2BnC;AAID,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,UAAU,CAAA;IAClB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAA;IACnC,UAAU,EAAE,IAAI,CAAA;IAChB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,iBAAiB,CAAA;IACzB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAA;IACnC,UAAU,EAAE,IAAI,CAAA;IAChB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;CAC1B;AAcD,wBAAsB,yBAAyB,CAAC,OAAO,CAAC,EAAE;IACxD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAmDhC;AAmCD,wBAAsB,2BAA2B,CAAC,OAAO,CAAC,EAAE;IAC1D,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,oGAAoG;IACpG,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAgDlC;AAID;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,uFAAuF;IACvF,EAAE,EAAE,MAAM,CAAA;IACV,0CAA0C;IAC1C,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B,8FAA8F;IAC9F,IAAI,EAAE,MAAM,CAAA;IACZ;2GACuG;IACvG,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAA;IACb,qDAAqD;IACrD,eAAe,EAAE,MAAM,CAAA;IACvB,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAA;IAClB,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;iCAC6B;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAqGD;;;;;;;;GAQG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAG9D;AAID;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmClF;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BtF;AAgBD,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,WAAW,EAAE,OAAO,CAAC;IACrB,0EAA0E;IAC1E,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,+EAA+E;IAC/E,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,iFAAiF;AACjF,wBAAgB,YAAY,IAAI,cAAc,CAY7C;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAIxD;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBhD;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAK7F;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3F"}
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,12 @@ exports.triggerAndroidScreenshot = triggerAndroidScreenshot;
|
|
|
9
9
|
exports.fetchLatestPhoneRecording = fetchLatestPhoneRecording;
|
|
10
10
|
exports.fetchLatestAndroidRecording = fetchLatestAndroidRecording;
|
|
11
11
|
exports.listDevices = listDevices;
|
|
12
|
+
exports.unlinkIosDevice = unlinkIosDevice;
|
|
13
|
+
exports.unlinkAndroidDevice = unlinkAndroidDevice;
|
|
14
|
+
exports.getOnboarded = getOnboarded;
|
|
15
|
+
exports.setOnboarded = setOnboarded;
|
|
16
|
+
exports.openFinder = openFinder;
|
|
17
|
+
exports.getIosWirelessEnabled = getIosWirelessEnabled;
|
|
12
18
|
exports.enableIosDeveloperMode = enableIosDeveloperMode;
|
|
13
19
|
const child_process_1 = require("child_process");
|
|
14
20
|
const util_1 = require("util");
|
|
@@ -457,7 +463,16 @@ async function listIosDevices() {
|
|
|
457
463
|
await startTunnel().catch(() => { });
|
|
458
464
|
try {
|
|
459
465
|
const { stdout } = await execFileAsync(python, [...PMD3, "usbmux", "list"], { timeout: 5000 });
|
|
460
|
-
const
|
|
466
|
+
const rawDevices = JSON.parse(stdout);
|
|
467
|
+
// usbmux list often returns the same physical iPhone twice — once for USB,
|
|
468
|
+
// once for Network (when "Show this iPhone when on Wi-Fi" is enabled).
|
|
469
|
+
// Dedupe by UDID, keeping the first entry.
|
|
470
|
+
const allDevices = Array.from(new Map(rawDevices.map(d => [d.Identifier, d])).values());
|
|
471
|
+
// usbmux list returns USB-connected devices regardless of trust state.
|
|
472
|
+
// Filter to ones this Mac is paired with — untrusted iPhones can't be captured,
|
|
473
|
+
// so they shouldn't show up in the device list (and shouldn't pollute "seen" sets).
|
|
474
|
+
const trustChecks = await Promise.all(allDevices.map(d => (0, device_1.isIosDeviceTrusted)(python, d.Identifier)));
|
|
475
|
+
const devices = allDevices.filter((_, i) => trustChecks[i]);
|
|
461
476
|
// Probe each iPhone's Developer Mode state in parallel — screenshots require it.
|
|
462
477
|
const devModes = await Promise.all(devices.map(d => (0, device_1.getDeveloperModeStatus)(python, d.Identifier)));
|
|
463
478
|
return devices.map((d, i) => {
|
|
@@ -553,6 +568,164 @@ async function listDevices() {
|
|
|
553
568
|
return [...ios, ...android];
|
|
554
569
|
}
|
|
555
570
|
// ── Developer Mode (iOS) ─────────────────────────────────────────────────────
|
|
571
|
+
/**
|
|
572
|
+
* Unlink (untrust + forget) an iPhone from this Mac. Removes the trust pairing
|
|
573
|
+
* on both sides where possible.
|
|
574
|
+
*
|
|
575
|
+
* Try strategy:
|
|
576
|
+
* 1. `pymobiledevice3 lockdown unpair` — succeeds when both sides are in
|
|
577
|
+
* sync. Cleanly tells the iPhone to drop us from its trusted-host list
|
|
578
|
+
* and removes the local pair record.
|
|
579
|
+
* 2. If that errors with InvalidHostID (iPhone already forgot us but the
|
|
580
|
+
* Mac still has a stale pair record), fall back to deleting the local
|
|
581
|
+
* pair record file directly. That needs sudo, so we go through an
|
|
582
|
+
* osascript admin prompt — same one macOS uses for system installs.
|
|
583
|
+
*
|
|
584
|
+
* After this resolves, the iPhone will show the "Trust this Computer?"
|
|
585
|
+
* dialog again next time it connects.
|
|
586
|
+
*/
|
|
587
|
+
async function unlinkIosDevice(options) {
|
|
588
|
+
const udid = options.deviceId;
|
|
589
|
+
if (!/^[0-9A-Fa-f-]{8,}$/.test(udid))
|
|
590
|
+
throw new Error(`Invalid UDID: ${udid}`);
|
|
591
|
+
const python = findPython();
|
|
592
|
+
try {
|
|
593
|
+
await execFileAsync(python, (0, device_1.pmd3Args)(udid, "lockdown", "unpair"), { timeout: 8000 });
|
|
594
|
+
return;
|
|
595
|
+
}
|
|
596
|
+
catch (err) {
|
|
597
|
+
const msg = String(err?.message ?? err);
|
|
598
|
+
// Only fall back to the privileged file delete for the specific case where
|
|
599
|
+
// the iPhone has already forgotten us. For any other error, surface it.
|
|
600
|
+
if (!/InvalidHostID/i.test(msg)) {
|
|
601
|
+
throw new Error(`Unlink failed: ${msg.split("\n")[0]}`);
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
// Fallback: delete the local pair record under /var/db/lockdown/<UDID>.plist.
|
|
605
|
+
// Requires root; we use osascript so the user sees the standard macOS prompt.
|
|
606
|
+
const pairFile = `/var/db/lockdown/${udid}.plist`;
|
|
607
|
+
const scriptPath = (0, path_1.join)((0, os_1.tmpdir)(), `screenshot-service-unlink-${Date.now()}.sh`);
|
|
608
|
+
(0, fs_1.writeFileSync)(scriptPath, `#!/bin/bash\nrm -f '${pairFile}'\n`, { mode: 0o755 });
|
|
609
|
+
try {
|
|
610
|
+
await execFileAsync("osascript", ["-e", `do shell script "${scriptPath}" with administrator privileges`], { timeout: 60000 });
|
|
611
|
+
}
|
|
612
|
+
catch (err) {
|
|
613
|
+
throw new Error(`Couldn't remove pair record. You can do it manually: sudo rm ${pairFile}`);
|
|
614
|
+
}
|
|
615
|
+
finally {
|
|
616
|
+
try {
|
|
617
|
+
(0, child_process_1.execFileSync)("rm", ["-f", scriptPath], { stdio: "ignore" });
|
|
618
|
+
}
|
|
619
|
+
catch { }
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
/**
|
|
623
|
+
* Unlink an Android device (drop the wireless ADB connection if any, clear
|
|
624
|
+
* the saved wireless endpoint). USB-only devices need no Mac-side cleanup —
|
|
625
|
+
* the user just unplugs the cable. Wireless pair records live on the phone;
|
|
626
|
+
* to fully forget there, the user taps "Forget" in Wireless Debugging.
|
|
627
|
+
*/
|
|
628
|
+
async function unlinkAndroidDevice(options) {
|
|
629
|
+
const adb = findAdb();
|
|
630
|
+
const lines = getConnectedAdbLines(adb);
|
|
631
|
+
// Find any ADB endpoint matching this physical serial.
|
|
632
|
+
const probes = await Promise.all(lines.map(l => probeAndroidEndpoint(adb, l.trim().split(/\s/)[0])));
|
|
633
|
+
const matches = probes
|
|
634
|
+
.filter((p) => p !== null)
|
|
635
|
+
.filter(p => p.physicalSerial === options.deviceId);
|
|
636
|
+
for (const m of matches) {
|
|
637
|
+
// Wireless endpoints look like 192.168.x.x:port or adb-XXX._adb-tls-connect._tcp.
|
|
638
|
+
if (/^\d+\.\d+\.\d+\.\d+:\d+$/.test(m.endpoint) || /_adb-tls-connect/.test(m.endpoint)) {
|
|
639
|
+
try {
|
|
640
|
+
await execFileAsync(adb, ["disconnect", m.endpoint], { timeout: 4000 });
|
|
641
|
+
}
|
|
642
|
+
catch { }
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
// Clear saved wireless IP if it matched this device.
|
|
646
|
+
try {
|
|
647
|
+
const saved = (0, fs_1.readFileSync)(ANDROID_IP_FILE, "utf8").trim();
|
|
648
|
+
const stillThere = getConnectedAdbLines(adb).some(l => l.trim().startsWith(saved + "\t"));
|
|
649
|
+
if (!stillThere) {
|
|
650
|
+
try {
|
|
651
|
+
(0, child_process_1.execFileSync)("rm", ["-f", ANDROID_IP_FILE], { stdio: "ignore" });
|
|
652
|
+
}
|
|
653
|
+
catch { }
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
catch { }
|
|
657
|
+
}
|
|
658
|
+
// ── Onboarded-device state (wizard-only) ─────────────────────────────────────
|
|
659
|
+
//
|
|
660
|
+
// Tracks which devices have completed the visual setup wizard flow at least
|
|
661
|
+
// once. Stored as a JSON file in the user's home directory so it survives
|
|
662
|
+
// wizard re-launches. The wizard's device manager filters its display by this
|
|
663
|
+
// set so trusted-but-not-onboarded devices stay invisible until the user
|
|
664
|
+
// explicitly clicks "+ Add another device" and walks through the flow.
|
|
665
|
+
//
|
|
666
|
+
// Note: this is wizard UX state ONLY. listDevices() (the package's main API
|
|
667
|
+
// for consumers like AppCaptur) still returns every functional device. The
|
|
668
|
+
// onboarded filter does NOT affect the screenshot/recording API.
|
|
669
|
+
const ONBOARDED_FILE = (0, path_1.join)((0, os_1.homedir)(), ".screenshotAssistent-onboarded.json");
|
|
670
|
+
/** Read the onboarded state. Returns initialized=false if no file exists yet. */
|
|
671
|
+
function getOnboarded() {
|
|
672
|
+
try {
|
|
673
|
+
const raw = (0, fs_1.readFileSync)(ONBOARDED_FILE, "utf8");
|
|
674
|
+
const data = JSON.parse(raw);
|
|
675
|
+
return {
|
|
676
|
+
initialized: data.initialized === true,
|
|
677
|
+
ios: Array.isArray(data.ios) ? data.ios : [],
|
|
678
|
+
android: Array.isArray(data.android) ? data.android : [],
|
|
679
|
+
};
|
|
680
|
+
}
|
|
681
|
+
catch {
|
|
682
|
+
return { initialized: false, ios: [], android: [] };
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
/** Persist the onboarded state. Best-effort; failures are swallowed. */
|
|
686
|
+
function setOnboarded(state) {
|
|
687
|
+
try {
|
|
688
|
+
(0, fs_1.writeFileSync)(ONBOARDED_FILE, JSON.stringify(state, null, 2), "utf8");
|
|
689
|
+
}
|
|
690
|
+
catch { }
|
|
691
|
+
}
|
|
692
|
+
/**
|
|
693
|
+
* Bring Finder forward. The wizard's on-screen instructions tell the user
|
|
694
|
+
* where to click — we deliberately don't try to navigate the sidebar via UI
|
|
695
|
+
* scripting because that would trigger a "control Finder via System Events"
|
|
696
|
+
* permission prompt.
|
|
697
|
+
*/
|
|
698
|
+
async function openFinder() {
|
|
699
|
+
try {
|
|
700
|
+
await execFileAsync("open", ["-a", "Finder"], { timeout: 5000 });
|
|
701
|
+
// Activate via Finder's own AppleScript (no System Events / no extra prompts).
|
|
702
|
+
// Also ensure a window is open so the sidebar is visible.
|
|
703
|
+
await execFileAsync("osascript", ["-e",
|
|
704
|
+
'tell application "Finder"\n' +
|
|
705
|
+
' if (count of windows) = 0 then make new Finder window\n' +
|
|
706
|
+
' activate\n' +
|
|
707
|
+
'end tell'], { timeout: 5000 });
|
|
708
|
+
}
|
|
709
|
+
catch {
|
|
710
|
+
// Best-effort — don't fail the wizard if this didn't work for some reason.
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
/**
|
|
714
|
+
* Returns whether "Show this iPhone when on Wi-Fi" is currently enabled in
|
|
715
|
+
* Finder for the given iPhone. Use this to detect (via polling) when the user
|
|
716
|
+
* has ticked the box during onboarding.
|
|
717
|
+
*/
|
|
718
|
+
async function getIosWirelessEnabled(options) {
|
|
719
|
+
const udid = options?.deviceId ?? null;
|
|
720
|
+
let python;
|
|
721
|
+
try {
|
|
722
|
+
python = findPython();
|
|
723
|
+
}
|
|
724
|
+
catch {
|
|
725
|
+
return false;
|
|
726
|
+
}
|
|
727
|
+
return (0, device_1.getWirelessEnabled)(python, udid);
|
|
728
|
+
}
|
|
556
729
|
/**
|
|
557
730
|
* Trigger the Developer Mode enable flow on a specific iPhone.
|
|
558
731
|
*
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../wizard/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../wizard/index.ts"],"names":[],"mappings":"AAgCA,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IAC5B,kEAAkE;IAClE,MAAM,CAAC,EAAE,OAAO,UAAU,EAAE,aAAa,CAAC;IAC1C,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6G/E"}
|
package/dist/wizard/index.js
CHANGED
|
@@ -66,6 +66,12 @@ async function createSetupWindow(opts) {
|
|
|
66
66
|
pairAndroid: `wizard:${win.id}:pair-android`,
|
|
67
67
|
listDevices: `wizard:${win.id}:list-devices`,
|
|
68
68
|
enableIosDevMode: `wizard:${win.id}:enable-ios-dev-mode`,
|
|
69
|
+
iosWifiStatus: `wizard:${win.id}:ios-wifi-status`,
|
|
70
|
+
unlinkIos: `wizard:${win.id}:unlink-ios`,
|
|
71
|
+
unlinkAndroid: `wizard:${win.id}:unlink-android`,
|
|
72
|
+
openFinder: `wizard:${win.id}:open-finder`,
|
|
73
|
+
getOnboarded: `wizard:${win.id}:get-onboarded`,
|
|
74
|
+
setOnboarded: `wizard:${win.id}:set-onboarded`,
|
|
69
75
|
close: `wizard:${win.id}:close`,
|
|
70
76
|
};
|
|
71
77
|
// Expose channel names to renderer via initial-load query (read by preload).
|
|
@@ -96,6 +102,22 @@ async function createSetupWindow(opts) {
|
|
|
96
102
|
ipcMain.handle(channels.enableIosDevMode, async (_e, deviceId) => {
|
|
97
103
|
await (0, index_1.enableIosDeveloperMode)({ deviceId });
|
|
98
104
|
});
|
|
105
|
+
ipcMain.handle(channels.iosWifiStatus, async (_e, deviceId) => {
|
|
106
|
+
return (0, index_1.getIosWirelessEnabled)({ deviceId });
|
|
107
|
+
});
|
|
108
|
+
ipcMain.handle(channels.unlinkIos, async (_e, deviceId) => {
|
|
109
|
+
await (0, index_1.unlinkIosDevice)({ deviceId });
|
|
110
|
+
});
|
|
111
|
+
ipcMain.handle(channels.unlinkAndroid, async (_e, deviceId) => {
|
|
112
|
+
await (0, index_1.unlinkAndroidDevice)({ deviceId });
|
|
113
|
+
});
|
|
114
|
+
ipcMain.handle(channels.openFinder, async () => {
|
|
115
|
+
await (0, index_1.openFinder)();
|
|
116
|
+
});
|
|
117
|
+
ipcMain.handle(channels.getOnboarded, async () => (0, index_1.getOnboarded)());
|
|
118
|
+
ipcMain.handle(channels.setOnboarded, async (_e, state) => {
|
|
119
|
+
(0, index_1.setOnboarded)(state);
|
|
120
|
+
});
|
|
99
121
|
ipcMain.handle(channels.close, async () => {
|
|
100
122
|
if (!win.isDestroyed())
|
|
101
123
|
win.close();
|
package/dist/wizard/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../wizard/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../wizard/index.ts"],"names":[],"mappings":"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"}
|
package/dist/wizard/preload.js
CHANGED
|
@@ -51,5 +51,11 @@ contextBridge.exposeInMainWorld('wizard', {
|
|
|
51
51
|
onPairAndroidProgress: (cb) => onProgress('pairAndroid', cb),
|
|
52
52
|
listDevices: () => invoke('listDevices'),
|
|
53
53
|
enableIosDevMode:(deviceId) => invoke('enableIosDevMode', deviceId),
|
|
54
|
+
iosWifiStatus: (deviceId) => invoke('iosWifiStatus', deviceId),
|
|
55
|
+
unlinkIos: (deviceId) => invoke('unlinkIos', deviceId),
|
|
56
|
+
unlinkAndroid: (deviceId) => invoke('unlinkAndroid', deviceId),
|
|
57
|
+
openFinder: () => invoke('openFinder'),
|
|
58
|
+
getOnboarded: () => invoke('getOnboarded'),
|
|
59
|
+
setOnboarded: (state) => invoke('setOnboarded', state),
|
|
54
60
|
close: () => invoke('close'),
|
|
55
61
|
});
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -256,6 +256,15 @@
|
|
|
256
256
|
margin: 12px 0;
|
|
257
257
|
white-space: pre-wrap;
|
|
258
258
|
}
|
|
259
|
+
.step-image {
|
|
260
|
+
display: block;
|
|
261
|
+
margin: 10px 0 6px;
|
|
262
|
+
max-width: 540px;
|
|
263
|
+
width: 100%;
|
|
264
|
+
border-radius: 8px;
|
|
265
|
+
border: 1px solid var(--border);
|
|
266
|
+
background: var(--panel);
|
|
267
|
+
}
|
|
259
268
|
/* Device manager rows */
|
|
260
269
|
.device-list { list-style: none; padding: 0; margin: 16px 0 20px; }
|
|
261
270
|
.device-row {
|
|
@@ -320,6 +329,24 @@
|
|
|
320
329
|
font-size: 12px;
|
|
321
330
|
font-weight: 500;
|
|
322
331
|
}
|
|
332
|
+
.device-row .row-unlink {
|
|
333
|
+
background: transparent;
|
|
334
|
+
color: var(--muted);
|
|
335
|
+
border: 1px solid var(--border);
|
|
336
|
+
border-radius: 6px;
|
|
337
|
+
padding: 5px 10px;
|
|
338
|
+
font: inherit;
|
|
339
|
+
font-size: 12px;
|
|
340
|
+
cursor: pointer;
|
|
341
|
+
transition: color 0.12s ease, border-color 0.12s ease, background 0.12s ease;
|
|
342
|
+
margin-left: 10px;
|
|
343
|
+
}
|
|
344
|
+
.device-row .row-unlink:hover {
|
|
345
|
+
color: var(--err);
|
|
346
|
+
border-color: var(--err);
|
|
347
|
+
background: rgba(255, 107, 107, 0.06);
|
|
348
|
+
}
|
|
349
|
+
.device-row .row-unlink:disabled { opacity: 0.5; cursor: default; }
|
|
323
350
|
.dev-mode-banner {
|
|
324
351
|
margin: 8px 0 20px;
|
|
325
352
|
padding: 14px 16px;
|
|
@@ -403,16 +430,48 @@
|
|
|
403
430
|
<div class="error-box" id="install-error" style="display: none"></div>
|
|
404
431
|
</section>
|
|
405
432
|
|
|
406
|
-
<!-- Screen: iOS device trust -->
|
|
433
|
+
<!-- Screen: iOS device trust (step 1 — plug + trust) -->
|
|
407
434
|
<section class="screen" id="screen-ios-device">
|
|
408
|
-
<p class="lede">
|
|
435
|
+
<p class="lede">Plug your iPhone in and trust this Mac.</p>
|
|
436
|
+
<ol>
|
|
437
|
+
<li>Plug your iPhone into this Mac with a USB cable.</li>
|
|
438
|
+
<li>On the iPhone, tap <strong>Trust</strong> when prompted and enter your passcode.</li>
|
|
439
|
+
</ol>
|
|
440
|
+
<img class="step-image" src="./assets/iOS/Trust.png" alt="On your iPhone: Trust This Computer prompt, then enter your passcode" />
|
|
441
|
+
<p class="muted" style="margin-top: 14px"><span class="live-dot"></span> Waiting for iPhone… we'll continue automatically once you tap Trust.</p>
|
|
442
|
+
</section>
|
|
443
|
+
|
|
444
|
+
<!-- Screen: iOS Developer Mode (step 3 — after wireless) -->
|
|
445
|
+
<section class="screen" id="screen-ios-devmode">
|
|
446
|
+
<p class="lede">Turn on Developer Mode</p>
|
|
447
|
+
<p class="muted">
|
|
448
|
+
Developer Mode is an iOS setting that lets your Mac pull screenshots and recordings from this iPhone.
|
|
449
|
+
It's a one-time thing per device. <strong>We've already unlocked the Developer Mode option in your iPhone's Settings —</strong> you just need to toggle it on.
|
|
450
|
+
</p>
|
|
451
|
+
<ol>
|
|
452
|
+
<li>On your iPhone, open <strong>Settings → Privacy & Security → Developer Mode</strong>.</li>
|
|
453
|
+
<li>Toggle <strong>Developer Mode</strong> on.</li>
|
|
454
|
+
<li>Tap <strong>Restart</strong> when prompted. The iPhone will reboot.</li>
|
|
455
|
+
<li>After it comes back, you'll see <em>"Turn On Developer Mode?"</em> on the lock screen — tap <strong>Turn On</strong> and enter your passcode.</li>
|
|
456
|
+
</ol>
|
|
457
|
+
<img class="step-image" src="./assets/iOS/developer%20mode.png" alt="Settings → Privacy & Security → Developer Mode, then toggle on and tap Restart" />
|
|
458
|
+
<p class="muted" style="margin-top: 14px" id="ios-devmode-status-line"><span class="live-dot"></span> Waiting for Developer Mode to come on… we'll continue automatically.</p>
|
|
459
|
+
</section>
|
|
460
|
+
|
|
461
|
+
<!-- Screen: iOS optional wireless setup (step 2 — only after trust succeeds) -->
|
|
462
|
+
<section class="screen" id="screen-ios-wireless">
|
|
463
|
+
<p class="lede">Want to use this iPhone wirelessly too? <em>(Optional)</em></p>
|
|
464
|
+
<p class="muted">Tick this in Finder now and you can capture without a cable later. Skip if you only need USB.</p>
|
|
409
465
|
<ol>
|
|
410
|
-
<li>
|
|
411
|
-
<li>
|
|
412
|
-
<li>
|
|
413
|
-
<li>(Optional) In Finder, select your iPhone and tick <kbd>Show this iPhone when on Wi-Fi</kbd>, then unplug.</li>
|
|
466
|
+
<li>Keep the iPhone plugged in.</li>
|
|
467
|
+
<li>Open <strong>Finder</strong> and select your iPhone in the sidebar.</li>
|
|
468
|
+
<li>Tick <kbd>Show this iPhone when on Wi-Fi</kbd> (highlighted below), then click <kbd>Apply</kbd> in the bottom-right corner of the window.</li>
|
|
414
469
|
</ol>
|
|
415
|
-
<
|
|
470
|
+
<div style="margin: 6px 0 10px">
|
|
471
|
+
<button class="btn ghost" id="btn-open-finder">Open Finder</button>
|
|
472
|
+
</div>
|
|
473
|
+
<img class="step-image" src="./assets/iOS/iOSWifiStep.png" alt="In Finder, tick 'Show this iPhone when on Wi-Fi'" />
|
|
474
|
+
<p class="muted" style="margin-top: 14px" id="ios-wifi-status-line"><span class="live-dot"></span> Checking… we'll continue automatically once you tick the box.</p>
|
|
416
475
|
</section>
|
|
417
476
|
|
|
418
477
|
<!-- Screen: Android connection-type chooser -->
|
|
@@ -511,6 +570,8 @@
|
|
|
511
570
|
detect: $('screen-detect'),
|
|
512
571
|
install: $('screen-install'),
|
|
513
572
|
iosDevice: $('screen-ios-device'),
|
|
573
|
+
iosWireless: $('screen-ios-wireless'),
|
|
574
|
+
iosDevMode: $('screen-ios-devmode'),
|
|
514
575
|
androidChoice: $('screen-android-choice'),
|
|
515
576
|
androidUsb: $('screen-android-usb'),
|
|
516
577
|
androidWireless: $('screen-android-wireless'),
|
|
@@ -521,11 +582,37 @@
|
|
|
521
582
|
const btnPrimary = $('btn-primary');
|
|
522
583
|
const btnBack = $('btn-back');
|
|
523
584
|
|
|
524
|
-
let platform
|
|
525
|
-
let lastDevices
|
|
526
|
-
let
|
|
527
|
-
|
|
528
|
-
|
|
585
|
+
let platform = null; // 'ios' | 'android'
|
|
586
|
+
let lastDevices = []; // most recent listDevices() result
|
|
587
|
+
let history = [];
|
|
588
|
+
// Persistent set of devices that have completed the wizard flow. Loaded from
|
|
589
|
+
// ~/.screenshotAssistent-onboarded.json on boot and updated whenever a flow
|
|
590
|
+
// completes. The device manager only shows devices in this set; pollForNewDevice
|
|
591
|
+
// fires for devices NOT in it. Reconnects of onboarded devices don't look "new".
|
|
592
|
+
const onboarded = { ios: new Set(), android: new Set() };
|
|
593
|
+
const revealedUdids = new Set(); // UDIDs we've already called reveal-developer-mode on this session
|
|
594
|
+
|
|
595
|
+
function isOnboarded(d) {
|
|
596
|
+
return onboarded[d.platform]?.has(d.id) === true;
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
async function markOnboarded(plat, id) {
|
|
600
|
+
onboarded[plat].add(id);
|
|
601
|
+
await window.wizard.setOnboarded({
|
|
602
|
+
initialized: true,
|
|
603
|
+
ios: [...onboarded.ios],
|
|
604
|
+
android: [...onboarded.android],
|
|
605
|
+
}).catch(() => {});
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
async function unmarkOnboarded(plat, id) {
|
|
609
|
+
onboarded[plat].delete(id);
|
|
610
|
+
await window.wizard.setOnboarded({
|
|
611
|
+
initialized: true,
|
|
612
|
+
ios: [...onboarded.ios],
|
|
613
|
+
android: [...onboarded.android],
|
|
614
|
+
}).catch(() => {});
|
|
615
|
+
}
|
|
529
616
|
|
|
530
617
|
function show(name, label) {
|
|
531
618
|
for (const k in screens) screens[k].classList.remove('active');
|
|
@@ -543,12 +630,12 @@
|
|
|
543
630
|
if (history.length <= 1) return;
|
|
544
631
|
history.pop();
|
|
545
632
|
const prev = history[history.length - 1];
|
|
546
|
-
pendingAddSnapshot = null; // bail out of "add device" mode
|
|
547
633
|
show(prev.name, prev.label);
|
|
548
634
|
// If we backed into the device manager, re-enter so its polling/buttons re-arm.
|
|
549
635
|
if (prev.name === 'deviceManager') runDeviceManager();
|
|
550
636
|
});
|
|
551
637
|
|
|
638
|
+
|
|
552
639
|
// ── Generic helpers ───────────────────────────────────────────────────────
|
|
553
640
|
function renderStep(listEl, p) {
|
|
554
641
|
let li = listEl.querySelector(`[data-id="${p.id}"]`);
|
|
@@ -617,36 +704,67 @@
|
|
|
617
704
|
`<div><span class="name">${escapeHtml(d.nickname || d.name)}</span>${d.nickname ? `<span class="nickname">${escapeHtml(d.name)}</span>` : ''}</div>` +
|
|
618
705
|
`<div class="subtitle">${escapeHtml(d.model || '')}${d.softwareVersion ? ' · ' + escapeHtml(d.softwareVersion) : ''}</div>` +
|
|
619
706
|
`</span>` +
|
|
620
|
-
rightSide
|
|
707
|
+
rightSide +
|
|
708
|
+
`<button class="row-unlink" data-action="unlink">Unlink</button>`;
|
|
621
709
|
|
|
622
710
|
if (!existing) listEl.appendChild(li);
|
|
711
|
+
|
|
712
|
+
// Wire the unlink button (re-attached on every render — onclick replaces previous handler).
|
|
713
|
+
const unlinkBtn = li.querySelector('button.row-unlink');
|
|
714
|
+
if (unlinkBtn) {
|
|
715
|
+
unlinkBtn.onclick = () => unlinkDevice(d, unlinkBtn);
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
async function unlinkDevice(device, buttonEl) {
|
|
720
|
+
const friendly = device.nickname || device.name;
|
|
721
|
+
const platformLabel = device.platform === 'ios' ? 'iPhone' : 'Android device';
|
|
722
|
+
const msg = device.platform === 'ios'
|
|
723
|
+
? `Unlink "${friendly}" from this Mac?\n\nIt will need to be plugged in and trusted again before screenshots will work. You may be asked for your Mac password.`
|
|
724
|
+
: `Unlink "${friendly}" from this Mac?\n\nThe wireless connection will be dropped. To fully forget, also tap "Forget" on the phone's Wireless Debugging screen.`;
|
|
725
|
+
if (!confirm(msg)) return;
|
|
726
|
+
|
|
727
|
+
buttonEl.disabled = true;
|
|
728
|
+
buttonEl.textContent = 'Unlinking…';
|
|
729
|
+
try {
|
|
730
|
+
if (device.platform === 'ios') {
|
|
731
|
+
await window.wizard.unlinkIos(device.id);
|
|
732
|
+
} else {
|
|
733
|
+
await window.wizard.unlinkAndroid(device.id);
|
|
734
|
+
}
|
|
735
|
+
// Forget this device so re-adding triggers the new-device detection again.
|
|
736
|
+
await unmarkOnboarded(device.platform, device.id);
|
|
737
|
+
revealedUdids.delete(device.id);
|
|
738
|
+
// Refresh — the row should disappear within ~2s as well via the normal poll,
|
|
739
|
+
// but trigger an immediate refresh for snappier UX.
|
|
740
|
+
await refreshDeviceManager();
|
|
741
|
+
} catch (err) {
|
|
742
|
+
buttonEl.disabled = false;
|
|
743
|
+
buttonEl.textContent = 'Unlink';
|
|
744
|
+
alert(`Couldn't unlink ${platformLabel}: ${err.message || err}`);
|
|
745
|
+
}
|
|
623
746
|
}
|
|
624
747
|
function escapeHtml(s) {
|
|
625
748
|
return String(s).replace(/[&<>"']/g, c => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[c]));
|
|
626
749
|
}
|
|
627
750
|
|
|
628
|
-
/** Returns the
|
|
629
|
-
function deviceIdsFor(plat) {
|
|
630
|
-
return new Set(lastDevices.filter(d => d.platform === plat).map(d => d.id));
|
|
631
|
-
}
|
|
632
|
-
|
|
633
|
-
/** Refresh the device manager list. Returns the fresh list. */
|
|
751
|
+
/** Refresh the device manager list. Returns the filtered list (only onboarded devices for this platform). */
|
|
634
752
|
async function refreshDeviceManager(justAddedIds = new Set()) {
|
|
635
753
|
const devs = await window.wizard.listDevices();
|
|
636
754
|
lastDevices = devs;
|
|
637
755
|
|
|
638
|
-
//
|
|
639
|
-
//
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
756
|
+
// Only show devices that have completed the wizard flow. Trusted-but-not-onboarded
|
|
757
|
+
// devices stay invisible until the user clicks "+ Add another" and walks them through.
|
|
758
|
+
const mine = devs.filter(d => d.platform === platform && isOnboarded(d));
|
|
759
|
+
|
|
760
|
+
// For ONBOARDED iPhones that lost Developer Mode (e.g. user toggled it off later),
|
|
761
|
+
// re-reveal so the option is visible in their Settings. Once per session per device.
|
|
762
|
+
for (const d of mine) {
|
|
643
763
|
if (d.platform === 'ios' && d.developerMode === false && !revealedUdids.has(d.id)) {
|
|
644
764
|
revealedUdids.add(d.id);
|
|
645
|
-
window.wizard.enableIosDevMode(d.id).catch(() => {});
|
|
765
|
+
window.wizard.enableIosDevMode(d.id).catch(() => {});
|
|
646
766
|
}
|
|
647
767
|
}
|
|
648
|
-
|
|
649
|
-
const mine = devs.filter(d => d.platform === platform);
|
|
650
768
|
const listEl = $('device-list');
|
|
651
769
|
const emptyEl = $('device-empty');
|
|
652
770
|
|
|
@@ -689,7 +807,6 @@
|
|
|
689
807
|
/** Activate the device manager screen with its polling and buttons. */
|
|
690
808
|
async function runDeviceManager(justAddedIds = new Set()) {
|
|
691
809
|
enterDeviceManagerScreen();
|
|
692
|
-
pendingAddSnapshot = null;
|
|
693
810
|
btnPrimary.style.display = '';
|
|
694
811
|
btnPrimary.disabled = false;
|
|
695
812
|
btnPrimary.textContent = 'Finish';
|
|
@@ -708,9 +825,9 @@
|
|
|
708
825
|
startLivePoll(screens.deviceManager, () => refreshDeviceManager(), 2000);
|
|
709
826
|
}
|
|
710
827
|
|
|
711
|
-
/**
|
|
828
|
+
/** Navigate into the add-flow. Detection is driven by onboarded (persistent set) —
|
|
829
|
+
* any device whose ID isn't in onboarded counts as "new". */
|
|
712
830
|
function beginAddDevice() {
|
|
713
|
-
pendingAddSnapshot = deviceIdsFor(platform);
|
|
714
831
|
if (platform === 'ios') {
|
|
715
832
|
navigate('iosDevice', 'Add an iPhone');
|
|
716
833
|
} else {
|
|
@@ -718,18 +835,142 @@
|
|
|
718
835
|
}
|
|
719
836
|
}
|
|
720
837
|
|
|
721
|
-
/**
|
|
838
|
+
/**
|
|
839
|
+
* Polled on iOS trust / Android USB screens. Advances when a device ID
|
|
840
|
+
* appears that has NEVER been onboarded. Reconnects of onboarded devices
|
|
841
|
+
* are ignored (so dropping/reconnecting an existing phone while you're
|
|
842
|
+
* adding a new one doesn't trigger a false-positive).
|
|
843
|
+
*/
|
|
722
844
|
async function pollForNewDevice() {
|
|
723
845
|
const devs = await window.wizard.listDevices();
|
|
724
846
|
lastDevices = devs;
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
847
|
+
const newOne = devs.find(d => d.platform === platform && !isOnboarded(d));
|
|
848
|
+
if (!newOne) return;
|
|
849
|
+
stopLivePoll();
|
|
850
|
+
if (newOne.platform === 'ios') {
|
|
851
|
+
// Don't mark onboarded yet — that happens at the END of the flow
|
|
852
|
+
// (after the dev mode step). If the user closes the wizard mid-flow,
|
|
853
|
+
// they should be walked through again next time.
|
|
854
|
+
runIosWirelessStep(newOne.id);
|
|
855
|
+
} else {
|
|
856
|
+
// Android USB add — no further steps after trust, mark and go to manager.
|
|
857
|
+
await markOnboarded('android', newOne.id);
|
|
858
|
+
runDeviceManager(new Set([newOne.id]));
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
/** Show the optional "Show this iPhone when on Wi-Fi" screen. Polls until either
|
|
863
|
+
* the user ticks the box in Finder (auto-advances to dev mode) or clicks Continue. */
|
|
864
|
+
async function runIosWirelessStep(udid) {
|
|
865
|
+
navigate('iosWireless', 'Optional: Wi-Fi');
|
|
866
|
+
btnPrimary.style.display = '';
|
|
867
|
+
btnPrimary.disabled = false;
|
|
868
|
+
// "Continue" instead of "Skip" — works for both "I don't want wireless"
|
|
869
|
+
// AND "I've already done it but you didn't catch it" (which can happen
|
|
870
|
+
// after re-pairing because mDNS state doesn't match the checkbox state
|
|
871
|
+
// until the box is toggled).
|
|
872
|
+
btnPrimary.textContent = 'Continue';
|
|
873
|
+
btnPrimary.onclick = () => {
|
|
730
874
|
stopLivePoll();
|
|
731
|
-
|
|
875
|
+
window.removeEventListener('focus', onWizardFocus);
|
|
876
|
+
runIosDevModeStep(udid);
|
|
877
|
+
};
|
|
878
|
+
$('btn-open-finder').onclick = () => {
|
|
879
|
+
window.wizard.openFinder().catch(() => {});
|
|
880
|
+
};
|
|
881
|
+
$('ios-wifi-status-line').innerHTML =
|
|
882
|
+
'<span class="live-dot"></span> Waiting for the box to be ticked… ' +
|
|
883
|
+
'<span style="display:block;margin-top:4px;font-size:12px">' +
|
|
884
|
+
'Already enabled? Click Continue — sometimes macOS doesn\'t update the state until you toggle.' +
|
|
885
|
+
'</span>';
|
|
886
|
+
|
|
887
|
+
// Immediate check — if the box is already ticked (e.g. user enabled it last time
|
|
888
|
+
// and we're re-adding this iPhone), skip straight to the dev mode step.
|
|
889
|
+
const alreadyEnabled = await window.wizard.iosWifiStatus(udid).catch(() => false);
|
|
890
|
+
if (alreadyEnabled) {
|
|
891
|
+
$('ios-wifi-status-line').innerHTML =
|
|
892
|
+
'<span class="live-dot"></span> Wireless already on — continuing…';
|
|
893
|
+
setTimeout(() => runIosDevModeStep(udid), 700);
|
|
894
|
+
return;
|
|
895
|
+
}
|
|
896
|
+
|
|
897
|
+
/** One-shot check that advances to dev mode step if WiFi visibility is on. */
|
|
898
|
+
const advanceIfEnabled = async () => {
|
|
899
|
+
const enabled = await window.wizard.iosWifiStatus(udid).catch(() => false);
|
|
900
|
+
if (!enabled) return false;
|
|
901
|
+
stopLivePoll();
|
|
902
|
+
window.removeEventListener('focus', onWizardFocus);
|
|
903
|
+
$('ios-wifi-status-line').innerHTML =
|
|
904
|
+
'<span class="live-dot"></span> Wireless enabled — continuing…';
|
|
905
|
+
setTimeout(() => runIosDevModeStep(udid), 700);
|
|
906
|
+
return true;
|
|
907
|
+
};
|
|
908
|
+
|
|
909
|
+
// When the user switches back to the wizard from Finder (after clicking Apply),
|
|
910
|
+
// re-check immediately rather than waiting for the next poll tick.
|
|
911
|
+
const onWizardFocus = () => {
|
|
912
|
+
if (screens.iosWireless.classList.contains('active')) advanceIfEnabled();
|
|
913
|
+
};
|
|
914
|
+
window.addEventListener('focus', onWizardFocus);
|
|
915
|
+
|
|
916
|
+
startLivePoll(screens.iosWireless, advanceIfEnabled, 1000);
|
|
917
|
+
}
|
|
918
|
+
|
|
919
|
+
/** Show the Developer Mode step. Auto-fires reveal-developer-mode (which makes
|
|
920
|
+
* the toggle appear in Settings → Privacy & Security on the iPhone), then
|
|
921
|
+
* polls listDevices() for that UDID's developerMode flag to flip to true.
|
|
922
|
+
* User can also Skip — the device manager will still show a warning if
|
|
923
|
+
* developer mode never gets enabled. */
|
|
924
|
+
async function runIosDevModeStep(udid) {
|
|
925
|
+
// If dev mode is already on (e.g. user re-adding a previously-set-up iPhone),
|
|
926
|
+
// skip this screen entirely and go straight to the manager. Mark onboarded.
|
|
927
|
+
const freshDevs = await window.wizard.listDevices().catch(() => []);
|
|
928
|
+
lastDevices = freshDevs;
|
|
929
|
+
const me = freshDevs.find(d => d.id === udid);
|
|
930
|
+
if (me?.developerMode === true) {
|
|
931
|
+
await markOnboarded('ios', udid);
|
|
932
|
+
runDeviceManager(new Set([udid]));
|
|
933
|
+
return;
|
|
732
934
|
}
|
|
935
|
+
|
|
936
|
+
navigate('iosDevMode', 'Enable Developer Mode');
|
|
937
|
+
btnPrimary.style.display = '';
|
|
938
|
+
btnPrimary.disabled = false;
|
|
939
|
+
btnPrimary.textContent = "Skip (I'll do this later)";
|
|
940
|
+
btnPrimary.onclick = async () => {
|
|
941
|
+
stopLivePoll();
|
|
942
|
+
// User explicitly chose to skip — still count as onboarded so they don't
|
|
943
|
+
// get re-walked through the flow next time. The device manager will show
|
|
944
|
+
// a yellow "Needs Developer Mode" banner as a reminder.
|
|
945
|
+
await markOnboarded('ios', udid);
|
|
946
|
+
runDeviceManager(new Set([udid]));
|
|
947
|
+
};
|
|
948
|
+
|
|
949
|
+
$('ios-devmode-status-line').innerHTML =
|
|
950
|
+
'<span class="live-dot"></span> Waiting for Developer Mode to come on… we\'ll continue automatically.';
|
|
951
|
+
|
|
952
|
+
// Surface the Developer Mode option in Settings on the iPhone. Apple ships it
|
|
953
|
+
// HIDDEN by default — this call makes it appear so the user can find it.
|
|
954
|
+
// Idempotent: tracked in revealedUdids so we don't spam the API.
|
|
955
|
+
if (!revealedUdids.has(udid)) {
|
|
956
|
+
revealedUdids.add(udid);
|
|
957
|
+
window.wizard.enableIosDevMode(udid).catch(() => {});
|
|
958
|
+
}
|
|
959
|
+
|
|
960
|
+
// Poll listDevices() — when developerMode flips to true, advance.
|
|
961
|
+
startLivePoll(screens.iosDevMode, async () => {
|
|
962
|
+
const devs = await window.wizard.listDevices().catch(() => null);
|
|
963
|
+
if (!devs) return;
|
|
964
|
+
lastDevices = devs;
|
|
965
|
+
const dev = devs.find(d => d.id === udid);
|
|
966
|
+
if (dev?.developerMode === true) {
|
|
967
|
+
stopLivePoll();
|
|
968
|
+
await markOnboarded('ios', udid);
|
|
969
|
+
$('ios-devmode-status-line').innerHTML =
|
|
970
|
+
'<span class="live-dot"></span> Developer Mode is on — continuing…';
|
|
971
|
+
setTimeout(() => runDeviceManager(new Set([udid])), 700);
|
|
972
|
+
}
|
|
973
|
+
}, 2000);
|
|
733
974
|
}
|
|
734
975
|
|
|
735
976
|
// ── iOS flow ──────────────────────────────────────────────────────────────
|
|
@@ -866,14 +1107,14 @@
|
|
|
866
1107
|
try {
|
|
867
1108
|
await window.wizard.pairAndroid({ ip, port, code });
|
|
868
1109
|
btnPrimary.disabled = false;
|
|
869
|
-
// Refresh devices
|
|
870
|
-
|
|
1110
|
+
// Refresh devices, identify which IDs are genuinely new (not yet onboarded),
|
|
1111
|
+
// mark them as onboarded, and return to manager with those highlighted.
|
|
871
1112
|
const devs = await window.wizard.listDevices();
|
|
872
1113
|
lastDevices = devs;
|
|
873
1114
|
const justAdded = new Set(
|
|
874
|
-
devs.filter(d => d.platform === platform && !
|
|
1115
|
+
devs.filter(d => d.platform === platform && !isOnboarded(d)).map(d => d.id)
|
|
875
1116
|
);
|
|
876
|
-
|
|
1117
|
+
for (const id of justAdded) await markOnboarded(platform, id);
|
|
877
1118
|
runDeviceManager(justAdded);
|
|
878
1119
|
} catch (err) {
|
|
879
1120
|
btnPrimary.disabled = false;
|
|
@@ -891,13 +1132,37 @@
|
|
|
891
1132
|
}
|
|
892
1133
|
|
|
893
1134
|
// ── Boot ──────────────────────────────────────────────────────────────────
|
|
894
|
-
window.wizard.init().then(({ platform: p }) => {
|
|
1135
|
+
window.wizard.init().then(async ({ platform: p }) => {
|
|
895
1136
|
platform = p;
|
|
896
1137
|
$('title').textContent = p === 'ios' ? 'Set up iPhone capture' : 'Set up Android capture';
|
|
897
1138
|
|
|
1139
|
+
// Load the persistent "onboarded" set. On very first wizard launch (no file
|
|
1140
|
+
// exists), migrate by auto-onboarding any device that's currently fully ready
|
|
1141
|
+
// — so previously-paired iPhones/Androids don't disappear from view.
|
|
1142
|
+
const state = await window.wizard.getOnboarded().catch(() => ({ initialized: false, ios: [], android: [] }));
|
|
1143
|
+
onboarded.ios = new Set(state.ios || []);
|
|
1144
|
+
onboarded.android = new Set(state.android || []);
|
|
1145
|
+
|
|
1146
|
+
if (!state.initialized) {
|
|
1147
|
+
try {
|
|
1148
|
+
const devs = await window.wizard.listDevices();
|
|
1149
|
+
for (const d of devs) {
|
|
1150
|
+
// iOS: only auto-onboard if Developer Mode is on (i.e. functional).
|
|
1151
|
+
// Android: any currently-connected device counts as functional.
|
|
1152
|
+
if (d.platform === 'ios' && d.developerMode === true) onboarded.ios.add(d.id);
|
|
1153
|
+
else if (d.platform === 'android') onboarded.android.add(d.id);
|
|
1154
|
+
}
|
|
1155
|
+
await window.wizard.setOnboarded({
|
|
1156
|
+
initialized: true,
|
|
1157
|
+
ios: [...onboarded.ios],
|
|
1158
|
+
android: [...onboarded.android],
|
|
1159
|
+
});
|
|
1160
|
+
} catch {}
|
|
1161
|
+
}
|
|
1162
|
+
|
|
898
1163
|
if (p === 'ios') {
|
|
899
1164
|
runIosDetect();
|
|
900
|
-
// iOS trust screen → poll listDevices() for a NEW
|
|
1165
|
+
// iOS trust screen → poll listDevices() for a NEW (non-onboarded) device.
|
|
901
1166
|
const obs = new MutationObserver(() => {
|
|
902
1167
|
if (screens.iosDevice.classList.contains('active')) {
|
|
903
1168
|
btnPrimary.style.display = 'none';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@8bitbish/screenshot-service",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.4",
|
|
4
4
|
"description": "Capture screenshots and recordings from connected iPhone and Android devices, with a built-in visual setup wizard.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|