Skip to content

Commit ae33cb1

Browse files
committed
Update README release documentation
1 parent 8359c39 commit ae33cb1

1 file changed

Lines changed: 80 additions & 15 deletions

File tree

README.md

Lines changed: 80 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,38 @@
11
# Switchify PC
22

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.
44

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.
66

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.
836

937
## Development
1038

@@ -49,6 +77,8 @@ npm run package:win
4977

5078
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`.
5179

80+
Local packaging builds artifacts under `dist`. It does not publish a GitHub release.
81+
5282
## Windows uiAccess packaging
5383

5484
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
88118

89119
Running from `npm run dev`, `dist/win-unpacked`, AppData, Downloads, or the repo does not prove that `uiAccess` is active.
90120

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.
92122

93-
## Bluetooth connection expectations
123+
## Production signing
94124

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`.
96126

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:
98128

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.
129+
```powershell
130+
$env:SWITCHIFY_SIGNING_MODE = "certum-simplysign"
131+
$env:SWITCHIFY_CERTUM_CERT_THUMBPRINT = "<certum-certificate-thumbprint>"
132+
$env:SWITCHIFY_CERTUM_TIMESTAMP_URL = "http://time.certum.pl"
133+
```
102134

103-
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.
104136

105137
## Release CI
106138

139+
Only the maintainer should publish releases.
140+
107141
Release builds are published from tags named `vX.Y.Z`, where `X.Y.Z` matches `package.json`.
108142

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+
109156
```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
112159
```
113160

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.
115174

116175
## MVP smoke checklist
117176

118177
Use this checklist after packaging changes and before publishing any installer:
119178

179+
- Signed installer verifies with Authenticode.
180+
- Installer installs under `C:\Program Files\Switchify PC\`.
120181
- App launches from `Switchify PC.exe`.
121182
- 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.
122185
- 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.
124187
- No local IP address or WebSocket address appears in Settings or troubleshooting.
125188
- Pairing approval requests appear and can be accepted or rejected.
126189
- 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:
136199
- Keyboard shortcut works, for example `Ctrl+C` or `Ctrl+V`.
137200
- Media key command works, for example play/pause or volume up.
138201
- 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.
139204
- Disconnect all removes active Bluetooth sessions.
140205
- Quit exits the app, removes the tray icon, and exits the native cursor overlay helper.
141206

0 commit comments

Comments
 (0)