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
run: dotnet test src/SwitchifyPc.sln -c Release --no-build
62
61
63
62
- name: Verify Certum signing certificate
64
63
shell: powershell
@@ -73,34 +72,34 @@ jobs:
73
72
Select-Object -First 1
74
73
75
74
if (-not $cert) {
76
-
throw "Certum code-signing certificate $thumbprint was not found in Cert:\CurrentUser\My. Make sure SimplySign Desktop is logged in before running the release."
75
+
throw "Certum code-signing certificate was not found in Cert:\CurrentUser\My. Make sure SimplySign Desktop is logged in before running the release."
77
76
}
78
77
79
78
if (-not $cert.HasPrivateKey) {
80
-
throw "Certum certificate $thumbprint is present but has no private key."
79
+
throw "Certum certificate is present but has no private key."
Copy file name to clipboardExpand all lines: AGENTS.md
+32-30Lines changed: 32 additions & 30 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,29 +2,29 @@
2
2
3
3
## Project overview
4
4
5
-
Switchify PC is the desktop companion app for Switchify Android. Its first target is a Windows-first Electron app that accepts authenticated local WebSocket commands from the Android app and turns them into PC mouse, keyboard, text, media, and status actions.
5
+
Switchify PC is the Windows-native C#/.NET WPF desktop companion app for Switchify Android. It accepts authenticated Bluetooth commands from the Android app and turns them into PC mouse, keyboard, text, media, window, and status actions.
6
6
7
7
The app should be treated as a trusted local control agent. Be conservative with networking, authentication, logging, and desktop input behavior.
8
8
9
9
## Work flow
10
10
11
11
- Every change needs a GitHub issue before implementation.
12
12
- Every change needs its own branch from `main`.
13
-
- Branch names should be short and scoped, for example `chore/electron-scaffold-1`, `feat/pairing-auth-3`, or `fix/ws-reconnect`.
13
+
- Branch names should be short and scoped, for example `chore/dotnet-package-1`, `feat/pairing-auth-3`, or `fix/bluetooth-reconnect`.
14
14
- Keep pull requests tightly scoped to one issue wherever possible.
15
15
- Do not mix implementation work with broad refactors unless the issue explicitly calls for it.
16
16
- Prefer existing project patterns once the app scaffold exists.
17
17
- Before creating a milestone, verify whether the intended milestone already exists.
18
18
- Reuse an existing open milestone instead of creating a duplicate.
19
19
- Create a release milestone only when it is missing.
20
-
- Do not create future release milestones casually. The active release milestone should normally be the next version after `package.json`.
21
-
- Before release work starts, verify the target milestone name exactly matches the version being released, for example `Release 0.1.8` for `package.json`version `0.1.8`.
20
+
- Do not create future release milestones casually. The active release milestone should normally be the next version after the C# app project `<Version>`.
21
+
- Before release work starts, verify the target milestone name exactly matches the version being released, for example `Release 0.2.0` for app project version `0.2.0`.
22
22
23
23
## Development standards
24
24
25
-
- Use TypeScript for app code.
26
-
- Keep Electron main-process code, renderer code, and shared protocol code clearly separated.
27
-
- Keep OS input execution behind a narrow adapter interface so protocol handling is not tied directly to a native automation library.
- Keep OS input execution behind a narrow adapter interface so protocol handling is not tied directly to Win32 APIs.
28
28
- Validate all WebSocket messages at runtime before using them.
29
29
- Prefer small, testable modules for protocol parsing, pairing, auth, command routing, and desktop input mapping.
30
30
- Do not log pairing tokens, shared secrets, raw auth headers, or full typed text payloads.
@@ -47,13 +47,12 @@ The app should be treated as a trusted local control agent. Be conservative with
47
47
- Convert native automation failures into structured command errors.
48
48
- Manual Windows smoke testing matters for input changes because unit tests should use fake adapters instead of controlling the real OS.
49
49
50
-
## Electron app guidance
50
+
## Windows app guidance
51
51
52
-
- The main process owns WebSocket server lifecycle, pairing/auth state, tray behavior, and desktop input execution.
53
-
- The renderer shows pairing, connection status, server status, and recent non-sensitive errors.
54
-
- Communicate between renderer and main process through explicit IPC channels.
52
+
- The app owns Bluetooth lifecycle, pairing/auth state, tray behavior, update checks, and desktop input execution.
53
+
- The UI shows pairing, connection status, Bluetooth status, update state, and recent non-sensitive errors.
55
54
- Keep the app useful from the tray: show window, server status, disconnect, and quit.
56
-
- Avoid blocking the Electron main process with long-running work.
55
+
- Avoid blocking the UI thread with long-running work.
57
56
58
57
## Design language
59
58
@@ -68,8 +67,9 @@ The app should be treated as a trusted local control agent. Be conservative with
68
67
Before pushing implementation changes, run the most relevant checks available for the current scaffold. As the repo matures, this should normally include:
dotnet test src/SwitchifyPc.sln -c Release --no-build
73
73
```
74
74
75
75
For desktop input or packaging changes, also run the relevant manual smoke path:
@@ -85,14 +85,14 @@ For desktop input or packaging changes, also run the relevant manual smoke path:
85
85
86
86
Only the maintainer should publish releases.
87
87
88
-
Release builds are published from tags named `vX.Y.Z`, where `X.Y.Z` must match `package.json`.
88
+
Release builds are published from tags named `vX.Y.Z`, where `X.Y.Z` must match `src/SwitchifyPc.App/SwitchifyPc.App.csproj``<Version>`.
89
89
90
90
Before creating a release milestone, verify whether the intended milestone already exists. Reuse an existing open milestone. Create the milestone only if it is missing. If the milestone exists but is closed, reopen it only when the work truly belongs in that release.
91
91
92
92
The release workflow is `.github/workflows/release.yml`. It runs on the self-hosted Windows signing runner with the `switchify-signing` label. The runner is expected to have:
93
93
94
94
- Windows.
95
-
-Node and npm.
95
+
-.NET SDK.
96
96
- GitHub CLI authentication available to the workflow.
97
97
- Windows SDK signing tools available, including `signtool`.
98
98
- The Certum SimplySign certificate available in `Cert:\CurrentUser\My`.
0 commit comments