You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+80-15Lines changed: 80 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,38 @@
1
1
# Switchify PC
2
2
3
-
Desktop companion app for Switchify Android.
3
+
Switchify PC is the Windows desktop companion for Switchify Android. It runs in the tray, accepts authenticated Bluetooth commands from paired Android devices, and turns them into mouse, keyboard, text, media, window, and status actions on the PC.
4
4
5
-
## Status
5
+
Switchify PC is early-stage Windows-first software. Expect Bluetooth and Windows packaging behavior to be the main supported path for now.
6
6
7
-
Switchify PC is early-stage Windows-first software. It is intended for local-network use with paired Switchify Android devices.
7
+
## Download
8
+
9
+
Download the latest Windows installer from GitHub Releases:
10
+
11
+
-[Latest Switchify PC release](https://github.com/switchifyapp/switchify-pc/releases/latest)
12
+
13
+
Install Switchify Android from Google Play:
14
+
15
+
-[Switchify for Android](https://play.google.com/store/apps/details?id=com.enaboapps.switchify)
16
+
17
+
The Windows installer is a per-machine installer and should be installed under `C:\Program Files\Switchify PC\` so Windows can honor `uiAccess`.
18
+
19
+
## Requirements
20
+
21
+
- Windows 10 or later.
22
+
- Bluetooth enabled on the PC.
23
+
- Switchify Android installed on a nearby Android device.
24
+
- Per-machine install under `C:\Program Files\Switchify PC\` for full `uiAccess` behavior.
25
+
26
+
## Using Switchify PC
27
+
28
+
1. Install Switchify PC.
29
+
2. Install Switchify Android.
30
+
3. Launch Switchify PC and leave it running in the tray.
31
+
4. Open Switchify Android near the PC.
32
+
5. Approve the pairing request on the PC and confirm the verification code.
33
+
6. Use the Android app to control the PC.
34
+
35
+
If the main window is closed, Switchify PC continues running from the tray. Use the tray menu to reopen it or quit.
8
36
9
37
## Development
10
38
@@ -49,6 +77,8 @@ npm run package:win
49
77
50
78
The package script runs `npm run build` and `npm run native:build-overlay` first, then creates an unpacked Windows artifact in `dist/win-unpacked` and a per-machine NSIS installer in `dist`.
51
79
80
+
Local packaging builds artifacts under `dist`. It does not publish a GitHub release.
81
+
52
82
## Windows uiAccess packaging
53
83
54
84
Switchify PC uses `uiAccess="true"` so the installed app can interact with elevated or higher-integrity windows for accessibility and input automation scenarios.
@@ -88,39 +118,72 @@ npm run package:win:verify-uiaccess
88
118
89
119
Running from `npm run dev`, `dist/win-unpacked`, AppData, Downloads, or the repo does not prove that `uiAccess` is active.
90
120
91
-
Self-signed certificates are for dev/testing only. Production users should not be asked to trust a self-signed certificate manually. Azure Artifact Signing is the preferred low-cost production signing path when eligible; traditional OV/EV code-signing certificates remain possible. Production signing configuration must come from environment variables or CI secrets, never committed files.
121
+
Self-signed certificates are for development and testing only. Production users should not be asked to trust a self-signed certificate manually.
92
122
93
-
## Bluetooth connection expectations
123
+
## Production signing
94
124
95
-
Switchify PC uses Bluetooth for PC control pairing and reconnect. The Android device must be near the PC, Bluetooth must be enabled on both devices, and the first pairing still requires approval on the PC.
125
+
Production Windows packages are signed with the Certum SimplySign code-signing certificate through `signtool`.
96
126
97
-
Paired devices reconnect over Bluetooth using the existing app-level pairing token and authenticated command flow. Local-network WebSocket control, mDNS discovery, manual IP entry, and QR connection are not part of the product path.
127
+
Required environment variables:
98
128
99
-
## Security
100
-
101
-
Bluetooth proximity is not authentication. Pairing approval and authenticated commands remain required, and pairing tokens, auth proofs, and typed text payloads must not be exposed in logs or UI.
Please report vulnerabilities by email to owen@switchifyapp.com instead of opening public issues.
135
+
The release workflow expects the Certum certificate to be available in `Cert:\CurrentUser\My` on the Windows signing runner and the SimplySign session to be available before the release job runs.
104
136
105
137
## Release CI
106
138
139
+
Only the maintainer should publish releases.
140
+
107
141
Release builds are published from tags named `vX.Y.Z`, where `X.Y.Z` matches `package.json`.
108
142
143
+
The release workflow runs on the self-hosted Windows signing runner with the `switchify-signing` label. It:
144
+
145
+
- installs dependencies with `npm ci`
146
+
- runs `npm run typecheck`
147
+
- runs `npm test`
148
+
- verifies the Certum signing certificate
149
+
- builds native helpers
150
+
- packages the Windows x64 NSIS installer
151
+
- verifies the tag matches `package.json`
152
+
- uploads the installer and update metadata to GitHub Releases
153
+
154
+
The maintainer can publish a release by pushing an annotated tag:
155
+
109
156
```powershell
110
-
git tag v0.1.0
111
-
git push origin v0.1.0
157
+
git tag -a vX.Y.Z -m "Release vX.Y.Z"
158
+
git push origin vX.Y.Z
112
159
```
113
160
114
-
The release workflow builds the Windows x64 installer and uploads it to GitHub Releases. Current CI release installers are unsigned until production code signing is configured.
161
+
The workflow can also be dispatched manually by the maintainer with a `tag` input.
162
+
163
+
## Bluetooth connection expectations
164
+
165
+
Switchify PC uses Bluetooth for PC control pairing and reconnect. The Android device must be near the PC, Bluetooth must be enabled on both devices, and the first pairing still requires approval on the PC.
166
+
167
+
Paired devices reconnect over Bluetooth using the existing app-level pairing token and authenticated command flow. Local-network WebSocket control, mDNS discovery, manual IP entry, and QR connection are not part of the product path.
168
+
169
+
## Security
170
+
171
+
Bluetooth proximity is not authentication. Pairing approval and authenticated commands remain required, and pairing tokens, auth proofs, and typed text payloads must not be exposed in logs or UI.
172
+
173
+
Please report vulnerabilities by email to owen@switchifyapp.com instead of opening public issues.
115
174
116
175
## MVP smoke checklist
117
176
118
177
Use this checklist after packaging changes and before publishing any installer:
119
178
179
+
- Signed installer verifies with Authenticode.
180
+
- Installer installs under `C:\Program Files\Switchify PC\`.
120
181
- App launches from `Switchify PC.exe`.
121
182
- Tray menu opens and can show the main window.
183
+
- Main window shows Android download QR/link before a device is connected.
184
+
- Android download link opens externally in the browser.
122
185
- Bluetooth helper starts and reports a safe status.
123
-
- No QR/manual local-network connection UI appears.
186
+
- No QR/manual local-network connection UI appears for pairing or control.
124
187
- No local IP address or WebSocket address appears in Settings or troubleshooting.
125
188
- Pairing approval requests appear and can be accepted or rejected.
126
189
- Android can pair with the PC using Bluetooth and approval.
@@ -136,6 +199,8 @@ Use this checklist after packaging changes and before publishing any installer:
136
199
- Keyboard shortcut works, for example `Ctrl+C` or `Ctrl+V`.
137
200
- Media key command works, for example play/pause or volume up.
138
201
- Window control commands work, for example next app and show desktop.
202
+
- Settings > Updates can check for updates in packaged builds.
203
+
- Downloaded updates show an `Install update` action.
139
204
- Disconnect all removes active Bluetooth sessions.
140
205
- Quit exits the app, removes the tray icon, and exits the native cursor overlay helper.
0 commit comments