@@ -175,44 +175,123 @@ const flashEnabled = settings.flashOnMeetingStart === true;
175175
176176## Release Process
177177
178- ### Creating a Release Package
178+ ### Complete Release Workflow
179+
180+ Follow these steps in order for a complete release:
181+
182+ #### 1. Pre-Release Checklist
183+
184+ ``` powershell
185+ # Ensure all tests pass
186+ npm test
187+
188+ # Ensure you're on the feature branch with all changes committed
189+ git status
190+ git log --oneline -5
191+ ```
192+
193+ #### 2. Update Version Numbers
194+
195+ Update version in both files (must match):
196+ - ` manifest.json ` : 4-part version ` "Version": "X.Y.Z.0" `
197+ - ` package.json ` : 3-part version ` "version": "X.Y.Z" `
198+
199+ #### 3. Merge Feature Branch to Main
200+
201+ ``` powershell
202+ # Switch to main and pull latest
203+ git checkout main
204+ git pull origin main
205+
206+ # Merge feature branch (use --no-ff to preserve history)
207+ git merge --no-ff feature/vX.Y.Z-branch-name -m "Merge feature/vX.Y.Z-branch-name: Brief description"
208+
209+ # Push to main
210+ git push origin main
211+ ```
212+
213+ #### 4. Create Release Package
179214
180215** CRITICAL** : Always use the Stream Deck CLI to create packages. Manual zipping will create invalid packages.
181216
182217``` powershell
183- # 1. Build for production (outputs to release/ folder)
218+ # Build for production (outputs to release/ folder)
184219npm run build:production
185220
186- # 2. Create package using Stream Deck CLI
221+ # Create package using Stream Deck CLI
187222streamdeck pack "release/com.pedrofuentes.ical.sdPlugin" --output release
188223
189- # 3. Creates: release/com.pedrofuentes.ical.streamDeckPlugin
224+ # Verify package was created
225+ Get-Item "release/com.pedrofuentes.ical.streamDeckPlugin"
190226```
191227
192- ### Creating a GitHub Release
228+ #### 5. Test the Package (Optional but Recommended)
193229
194230``` powershell
195- # 1. Create annotated tag
196- git tag -a vX.Y.Z -m "vX.Y.Z - Description"
231+ # Remove dev plugin and test the package
232+ Stop-Process -Name "StreamDeck" -Force
233+ Remove-Item "$env:APPDATA\Elgato\StreamDeck\Plugins\com.pedrofuentes.ical.sdPlugin" -Recurse -Force
234+ Start-Process "$env:ProgramFiles\Elgato\StreamDeck\StreamDeck.exe"
235+ # Then double-click the .streamDeckPlugin file to install and verify it works
236+ ```
237+
238+ #### 6. Create Git Tag
239+
240+ ``` powershell
241+ # Create annotated tag on main branch
242+ git tag -a vX.Y.Z -m "vX.Y.Z - Brief description of release"
243+
244+ # Push tag to remote
197245git push origin vX.Y.Z
246+ ```
247+
248+ #### 7. Create GitHub Release
198249
199- # 2. Create release with plugin package
250+ ``` powershell
251+ # Create release with plugin package attached
200252gh release create vX.Y.Z "release/com.pedrofuentes.ical.streamDeckPlugin" `
201- --title "vX.Y.Z - Title" `
202- --notes "Release notes"
253+ --title "vX.Y.Z - Release Title" `
254+ --notes "## What's New
255+
256+ - ✨ Feature 1
257+ - ✨ Feature 2
258+ - 🐛 Bug fix 1
259+
260+ ## Installation
261+
262+ Download the \`.streamDeckPlugin\` file and double-click to install."
203263```
204264
205- ### Testing Before Release
265+ Or create manually on GitHub:
266+ 1 . Go to https://github.com/pedrofuentes/stream-deck-ical/releases/new
267+ 2 . Choose the tag ` vX.Y.Z `
268+ 3 . Set release title
269+ 4 . Add release notes
270+ 5 . Attach ` release/com.pedrofuentes.ical.streamDeckPlugin `
271+ 6 . Publish release
272+
273+ #### 8. Post-Release Cleanup
206274
207275``` powershell
208- # Remove dev plugin and test the package
209- Stop-Process -Name "StreamDeck" -Force
210- Remove-Item "$env:APPDATA\Elgato\StreamDeck\Plugins\com.pedrofuentes.ical.sdPlugin" -Recurse -Force
211- Start-Process "$env:ProgramFiles\Elgato\StreamDeck\StreamDeck.exe"
212- # Then double-click the .streamDeckPlugin file to install
276+ # Delete merged feature branch (optional)
277+ git branch -d feature/vX.Y.Z-branch-name
278+ git push origin --delete feature/vX.Y.Z-branch-name
279+
280+ # Re-link development plugin if needed
281+ streamdeck link "dist/com.pedrofuentes.ical.sdPlugin"
213282```
214283
215- ### Version Numbers
284+ ### Quick Reference Commands
216285
217- - ` manifest.json ` : 4-part version ` "Version": "X.Y.Z.0" `
218- - ` package.json ` : 3-part version ` "version": "X.Y.Z" `
286+ ``` powershell
287+ # Full release sequence (after testing is complete)
288+ git checkout main
289+ git pull origin main
290+ git merge --no-ff feature/vX.Y.Z-name -m "Merge feature/vX.Y.Z-name"
291+ git push origin main
292+ npm run build:production
293+ streamdeck pack "release/com.pedrofuentes.ical.sdPlugin" --output release
294+ git tag -a vX.Y.Z -m "vX.Y.Z - Description"
295+ git push origin vX.Y.Z
296+ gh release create vX.Y.Z "release/com.pedrofuentes.ical.streamDeckPlugin" --title "vX.Y.Z" --notes "Release notes"
297+ ```
0 commit comments