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
+27-12Lines changed: 27 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -59,15 +59,15 @@ In the Stream Deck desktop app, right click on one of the Google Meet actions in
59
59
60
60
The Stream Deck plugin launches a localhost-only Websocket server on port 2394, which our browser extension connects to. The plugin and browser extension send messages back and forth over that websocket to notify the Stream Deck when Meet changes its device on/off status, and simulates Meet mute button clicks in your browser when you press a key on your Stream Deck.
61
61
62
-
The Stream Deck plugin code is in the `streamdeck-plugin` directory. The browser extension code is in the `browser-extension` directory. The `com.chrisregado.googlemeet.sdPlugin` directory contains our Stream Deck assets and it becomes our Stream Deck plugin distributable once we bundle our code with the Elgato DistributionTool.
62
+
The Stream Deck plugin code is in the `streamdeck-plugin` directory. The browser extension code is in the `browser-extension` directory. The `com.chrisregado.googlemeet.sdPlugin` directory contains our Stream Deck assets and it becomes our Stream Deck plugin distributable once we bundle our code with the Elgato `streamdeck` CLI.
63
63
64
64
## Developing the Stream Deck Plugin
65
65
66
66
### First Time Setup
67
67
68
68
The plugin is written in Python. Create a venv to hold your package's dependencies, and install those dependencies:
69
69
70
-
MacOS:
70
+
**MacOS:**
71
71
72
72
```
73
73
cd streamdeck-plugin
@@ -76,7 +76,7 @@ source venv/bin/activate
76
76
pip install -r requirements.txt
77
77
```
78
78
79
-
Windows:
79
+
**Windows:**
80
80
81
81
```
82
82
cd streamdeck-plugin
@@ -89,15 +89,15 @@ Remember that virtualenvs are not portable. If you move this folder at all, you'
89
89
90
90
### Running Unit Tests
91
91
92
-
MacOS:
92
+
**MacOS:**
93
93
94
94
```
95
95
cd streamdeck-plugin
96
96
source venv/bin/activate
97
97
python -m unittest
98
98
```
99
99
100
-
Windows:
100
+
**Windows:**
101
101
102
102
```
103
103
cd streamdeck-plugin
@@ -107,11 +107,13 @@ python -m unittest
107
107
108
108
### Bundling
109
109
110
-
We use `pyinstaller` to bundle our code, dependencies, and a Python runtime environment into an executable. We put that executable into the `com.chrisregado.googlemeet.sdPlugin` folder, which in turn gets zipped up by the [Elgato DistributionTool](https://developer.elgato.com/documentation/stream-deck/sdk/packaging/) as our final distributable plugin package. That plugin package ends up including any assets we need (e.g. icons), the `manifest.json` file that defines our plugin for the Stream Deck desktop app, and our executable plugin code. Double-click that plugin package and the Stream Deck software will prompt you to install it.
110
+
We use `pyinstaller` to bundle our code, dependencies, and a Python runtime environment into an executable. We put that executable into the `com.chrisregado.googlemeet.sdPlugin` folder, which in turn gets zipped up by the [Elgato streamdeck CLI tool](https://docs.elgato.com/streamdeck/cli/intro) as our final distributable plugin package. That plugin package ends up including any assets we need (e.g. icons), the `manifest.json` file that defines our plugin for the Stream Deck desktop app, and our executable plugin code. Double-click that plugin package and the Stream Deck software will prompt you to install it.
111
111
112
-
To build the bundle:
112
+
Our plugin code is written in Python, but the Elgato CLI tool is distributed as a Node module, so you'll need Node.js installed.
113
113
114
-
MacOS:
114
+
To build the plugin:
115
+
116
+
**MacOS:**
115
117
116
118
```
117
119
cd streamdeck-plugin
@@ -121,7 +123,7 @@ pyinstaller --clean --dist "../com.chrisregado.googlemeet.sdPlugin/dist/macos" s
121
123
rm -rf build
122
124
```
123
125
124
-
Windows:
126
+
**Windows:**
125
127
126
128
```
127
129
cd streamdeck-plugin
@@ -133,23 +135,36 @@ rmdir /q /s build
133
135
134
136
Note that the resulting executable is only valid for the OS you built it on. MacOS and Windows bundles must be created separately from a machine/VM of that OS, and then combined into the `com.chrisregado.googlemeet.sdPlugin/dist/` folder with `macos` and `windows` subdirectories for release.
135
137
136
-
If you're just testing locally (so you only care about one OS), you can place any file in the other OS's executable location (`CodePath`s from `manifest.json`) to appease the Elgato DistributionTool. Example:
138
+
If you're just testing locally (so you only care about one OS), you can place any file in the other OS's executable location (`CodePath`s from `manifest.json`) to appease the Elgato packaging tool. Example:
type nul > com.chrisregado.googlemeet.sdPlugin\dist\macos\main\main
141
148
```
142
149
143
150
Or, if you don't ever plan on publishing your local builds, delete the other OS's CodePath and `OS` entry in manifest.json so you don't have to worry about multi-OS support.
144
151
145
-
Finally, use the DistributionTool to bundle everything into the Stream Deck plugin distributable that you can send to users:
152
+
Finally, use Elgato's `streamdeck` CLI tool to bundle everything into the Stream Deck plugin distributable that you can install or send to users. From the root of this git repo, run:
In the Stream Deck desktop app, uninstall any old copies of the plugin because the app won't overwrite your installation unless the new build has a newer version number.
161
+
162
+
You can then double-click the `./build/com.chrisregado.googlemeet.streamDeckPlugin` file to install your build of the plugin into the Stream Deck desktop app.
163
+
151
164
## Developing the Browser Extension
152
165
166
+
Our build tools rely on Node.js, so make sure you have Node.js installed.
167
+
153
168
### Using Google Chrome
154
169
155
170
Follow the usual "Load unpacked" installation instructions described above, but point Chrome at the `browser-extension` folder of your git workspace instead of using a release artifact. You can then edit the extension's source code and click the reload button on Chrome's extension settings page. (No build commands/steps are needed.) See https://developer.chrome.com/extensions/getstarted for more details.
Copy file name to clipboardExpand all lines: RELEASE_INSTRUCTIONS.md
+13-13Lines changed: 13 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -34,16 +34,16 @@ Finally, we'll add auth tokens from the Firefox Add-on portal as GitHub Action s
34
34
35
35
Follow these steps each time you want to release a new version of the plugin and/or browser extension:
36
36
37
-
1.Manually update the version number of the Stream Deck plugin by editing `com.chrisregado.googlemeet.sdPlugin/manifest.json` and changing the `Version` field. Make sure that change gets merged into `master`. (We have CI jobs to manage version numbers for the browser extensions, so you don't need to touch those.)
38
-
2. Tag the commit you wish to release and push it to GitHub. We use semantic versioning with a "v" prefix for our releases. For example: `git checkout master && git tag v1.2.3 && git push origin tag v1.2.3`
39
-
3. CI jobs should automatically launch against that tag to build the [Stream Deck plugin](https://github.com/ChrisRegado/streamdeck-googlemeet/actions/workflows/streamdeck-plugin-build.yml) and [browser extensions](https://github.com/ChrisRegado/streamdeck-googlemeet/actions/workflows/browser-extension-build.yml). (The list of workflow runs should show one copy of each of those two jobs with your `v1.2.3` tag.) Wait for them to complete successfully.
40
-
4. Click into those two build jobs, and on each job's "Summary" tab, download our build artifacts. The browser extension build job should have `chrome-extension` and `firefox-extension-signed` artifacts, and the plugin build job should have `com.chrisregado.googlemeet.streamDeckPlugin`.
41
-
5. Do a final manual validation of those release artifacts. Install the plugin, Firefox extension, and Chrome extension, and verify basic functionality.
42
-
6. On the Github page for your repo, click "Releases". (https://github.com/ChrisRegado/streamdeck-googlemeet/releases)
43
-
7. Click "Draft a new release".
44
-
8. Click the "Tag" button and select the tag you made in the previous step.
45
-
9. Use the your tag name as the "Release title", and enter a description summarizing notable changes in this release.
46
-
10. Select the "Set as a pre-release" checkbox near the bottom of the page.
47
-
11. Click "Publish release".
48
-
12. Our [release CI job](https://github.com/ChrisRegado/streamdeck-googlemeet/actions/workflows/release.yaml) should automatically start and attach our tag's artifacts to the GitHub Release. Wait for it to complete. If all goes well, in a minute or two you should see 3 attachments appear on the release: the `com.chrisregado.googlemeet.streamDeckPlugin` plugin, a zip of the Chrome extension, and an `.xpi` file for the Firefox extension.
49
-
13. Edit the release, uncheck the "Set as a pre-release" checkbox at the bottom of the page, select the "Set as the latest release" checkbox, and click "Update release".
37
+
1.Tag the commit you wish to release and push it to GitHub. We use semantic versioning with a "v" prefix for our releases. For example: `git checkout master && git tag v1.2.3 && git push origin tag v1.2.3`
38
+
* Our CI jobs will update version numbers automatically to match that tag for both the plugin and browser extensions. You don't need to manually change any version numbers in code/config.
39
+
2. CI jobs should automatically launch against that tag to build the [Stream Deck plugin](https://github.com/ChrisRegado/streamdeck-googlemeet/actions/workflows/streamdeck-plugin-build.yml) and [browser extensions](https://github.com/ChrisRegado/streamdeck-googlemeet/actions/workflows/browser-extension-build.yml). (The list of workflow runs should show one copy of each of those two jobs with your `v1.2.3` tag.) Wait for them to complete successfully.
40
+
3. Click into those two build jobs, and on each job's "Summary" tab, download our build artifacts. The browser extension build job should have `chrome-extension` and `firefox-extension-signed` artifacts, and the plugin build job should have `com.chrisregado.googlemeet.streamDeckPlugin`.
41
+
4. Do a final manual validation of those release artifacts. Install the plugin, Firefox extension, and Chrome extension, and verify basic functionality.
42
+
5. On the Github page for your repo, click "Releases". (https://github.com/ChrisRegado/streamdeck-googlemeet/releases)
43
+
6. Click "Draft a new release".
44
+
7. Click the "Tag" button and select the tag you made in the previous step.
45
+
8. Use the your tag name as the "Release title", and enter a description summarizing notable changes in this release.
46
+
9. Select the "Set as a pre-release" checkbox near the bottom of the page.
47
+
10. Click "Publish release".
48
+
11. Our [release CI job](https://github.com/ChrisRegado/streamdeck-googlemeet/actions/workflows/release.yaml) should automatically start and attach our tag's artifacts to the GitHub Release. Wait for it to complete. If all goes well, in a minute or two you should see 3 attachments appear on the release: the `com.chrisregado.googlemeet.streamDeckPlugin` plugin, a zip of the Chrome extension, and an `.xpi` file for the Firefox extension.
49
+
12. Edit the release, uncheck the "Set as a pre-release" checkbox at the bottom of the page, select the "Set as the latest release" checkbox, and click "Update release".
0 commit comments