Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
613b65c
fix: outlook credentials checkbox alignment (#3016)
dougfabris Apr 16, 2025
a89280f
Version 4.3.2 (#3021)
jeanfbrito Apr 16, 2025
75276d1
fix: Crashing when starting (#3024)
jeanfbrito Apr 16, 2025
1f7da37
Version 4.3.3
jeanfbrito Apr 16, 2025
17837bf
add back info
jeanfbrito Apr 16, 2025
92ce268
feat: Optimize server loading by deferring inactive webviews (#3028)
jeanfbrito May 12, 2025
86b60cf
Version 4.4.0
jeanfbrito May 12, 2025
5385a01
fix: Add network entitlements (#3029)
jeanfbrito May 19, 2025
a944394
Version 4.4.1
jeanfbrito May 20, 2025
6c93147
fix MAS build
jeanfbrito May 20, 2025
af11ebe
feat: Close video call window when Jitsi call is closed (#3033)
jeanfbrito May 29, 2025
6963504
fix: Zoom in not working with Control+Plus (#3035)
jeanfbrito May 29, 2025
05a056b
fix: Microphone permissions on Windows (#3036)
jeanfbrito May 29, 2025
3ee5083
Dev mode (#3037)
jeanfbrito May 29, 2025
1c567bc
Language update from Lingohub 🤖 (#3034)
lingohub[bot] May 29, 2025
084db04
Version 4.5.0
jeanfbrito May 29, 2025
9b94f75
feat: Alpha and beta update channels (#3042)
jeanfbrito Jun 13, 2025
641e69b
Version 4.6.0
jeanfbrito Jun 16, 2025
fedb593
chore: Update electron-builder v26.0.3 (#3047)
jeanfbrito Jun 28, 2025
fad023a
Version 4.7.0-alpha.1
jeanfbrito Jun 28, 2025
2949e54
fix linux and windows fuses
jeanfbrito Jun 28, 2025
bd3c373
Version 4.7.0-alpha.2
jeanfbrito Jun 28, 2025
b0e0f6f
add missing alpha and beta channels xml
jeanfbrito Jun 30, 2025
f0dbdc7
Version 4.7.0
jeanfbrito Jun 30, 2025
df65589
fix: Zoom client launch regression in video call windows (#3046)
jeanfbrito Jun 30, 2025
8765bef
feat: Support mapping users to exchange servers by domain (#3041)
cardoso Jun 30, 2025
d1bd90c
Language update from Lingohub 🤖 (#3048)
lingohub[bot] Jun 30, 2025
acaf577
docs: update badges (#2998)
ThatOneCalculator Jun 30, 2025
25542d5
chore: Add flip fuses to all the builds (#3052)
jeanfbrito Jul 3, 2025
6616033
chore: Update Electron to version 37.2.0 (#3050)
jeanfbrito Jul 3, 2025
7723c4a
Language update from Lingohub 🤖 (#3045)
lingohub[bot] Jul 3, 2025
157a64f
fix: Audio linux permission (#3049)
jeanfbrito Jul 3, 2025
4d4c984
Fix: Zoom-in shortcut (Ctrl +) not working, updated accelerator (#3000)
schourasia750 Jul 3, 2025
68bab71
Merge commit from fork
jeanfbrito Jul 3, 2025
7fcaaf6
Version 4.7.1
jeanfbrito Jul 3, 2025
fef5f6c
fix lint
jeanfbrito Jul 3, 2025
8062690
Add validation to 'will-navigate' to prevent smb:// (#3054)
julio-rocketchat Jul 4, 2025
a089f88
fix: disable dangerous fuses in `afterPack.js` (#3055)
julio-rocketchat Jul 15, 2025
86a6eb9
remove disable-library-validation from builder (#3056)
julio-rocketchat Jul 15, 2025
d051807
Language update from Lingohub 🤖 (#3060)
lingohub[bot] Jul 15, 2025
39884a7
fix: Jitsi not loading in some cases (#3059)
jeanfbrito Jul 30, 2025
6d9b521
fix: Ctrl+Shift+R force reload not working
SAYAN02-DEV Jul 30, 2025
f92960f
Version 4.8.0-alpha.1
jeanfbrito Jul 30, 2025
8b4208e
feat: enable prerelease updates for alpha and beta channels in autoUp…
jeanfbrito Jul 30, 2025
4426825
Version 4.8.0
jeanfbrito Jul 30, 2025
8a909cb
fix: Crashing app on close window when tray icon is disabled on linux…
jeanfbrito Aug 5, 2025
d2e27ee
fix: Duplicated download prompts and update electron-dl (#3068)
jeanfbrito Aug 5, 2025
a84f8ad
chore: Add video call translations and fix loading and closing states…
jeanfbrito Aug 5, 2025
eecd1e5
fix: UI translations in video call window (#3075)
jeanfbrito Aug 14, 2025
c770a8e
Potential fix for code scanning alert no. 36: Workflow does not conta…
jeanfbrito Aug 14, 2025
a948e21
feat: Enhance menu bar and sidebar functionality with disabling hints…
jeanfbrito Aug 14, 2025
cedf309
Fix: Add Swedish and Norweigan to resources.ts (#3074)
small1 Aug 14, 2025
a89bf17
Language update from Lingohub 🤖 (#3071)
lingohub[bot] Aug 14, 2025
ed43433
Fix: Prevent text selection in WindowDragBar (#3001)
Naetiksoni08 Aug 14, 2025
00588fa
feat: Add asset management functions for GitHub releases (#3080)
jeanfbrito Aug 19, 2025
135ff37
Language update from Lingohub 🤖 (#3078)
lingohub[bot] Aug 19, 2025
a14fa58
feat: Enhanced Module Loading and Setup in injected.ts (#3081)
jeanfbrito Aug 21, 2025
9a7fb81
Add .claude.md configuration file for Claude Code (#3083)
jeanfbrito Aug 25, 2025
7695c80
chore: Update windows certificate (#3086)
jeanfbrito Sep 3, 2025
69efb9e
fix: Fix PowerShell script encoding issues causing build failures (#3…
jeanfbrito Sep 3, 2025
c8857a6
fix: Remove last remaining emoji from PowerShell script (#3091)
jeanfbrito Sep 3, 2025
73c2f8e
ci: Add PowerShell linting to prevent script errors (#3092)
jeanfbrito Sep 3, 2025
d840c77
fix: Add Windows Installer service fix for MSI builds in release work…
jeanfbrito Sep 3, 2025
5fff3a6
feat: Implement build-then-sign workflow for Windows to fix MSI build…
jeanfbrito Sep 3, 2025
a5e0bc1
fix: Disable signing during build to prevent MSI failures (#3095)
jeanfbrito Sep 4, 2025
f8ee2c3
fix: Update Windows NSIS build command to include additional architec…
jeanfbrito Sep 4, 2025
5df82c6
fix: Add retry limit and automatic recovery to injected.ts startup (#…
jeanfbrito Sep 4, 2025
6e4e6c3
fix: Rebuild desktop-release-action to include all architectures for …
jeanfbrito Sep 4, 2025
5b77f31
fix: Remove nested dist/dist folder from desktop-release-action
jeanfbrito Sep 4, 2025
a167ecf
fix: Prevent ncc from creating nested dist folders (#3097)
jeanfbrito Sep 4, 2025
e0ab7d4
fix: App Now Remembers Your Download Folder Again (#3105)
jeanfbrito Sep 26, 2025
3cdfb16
fix: Jitsi loading freezes in RDP sessions (#3104)
jeanfbrito Sep 26, 2025
c3cb24e
fix: Update Windows auto-update checksums after signing (#3098)
jeanfbrito Sep 26, 2025
39ef03e
docs: Consolidate and update CLAUDE.md with comprehensive guidelines …
jeanfbrito Sep 26, 2025
f566baa
Version 4.9.1
jeanfbrito Sep 26, 2025
48d9c1a
chore(dev): bump electron to 37.6.0 (#3109)
jeanfbrito Sep 29, 2025
abe5390
ci(windows): pin Chocolatey gcloudsdk to 536.0.0 and rebuild action d…
jeanfbrito Sep 29, 2025
d614c2c
ci(windows): use google-github-actions/setup-gcloud@v2 (#3111)
jeanfbrito Sep 29, 2025
a78e4b7
refactor: Use `@rocket.chat/desktop-api` type (#3102)
tassoevan Oct 22, 2025
051c147
feat(errors): implement global error handling and critical error dete…
jeanfbrito Nov 7, 2025
d75e8ed
Language update from Lingohub 🤖 (#3129)
lingohub[bot] Nov 7, 2025
0e7d83e
chore: Improve Supported Versions data loading (#3130)
jeanfbrito Nov 7, 2025
98551b7
Version 4.9.2
jeanfbrito Nov 7, 2025
b0e794e
feat: Voice Notifications (#3136)
jeanfbrito Nov 22, 2025
76c6997
chore: Improve Media Permissions (#3135)
jeanfbrito Nov 22, 2025
e457303
fix(serverView): Improve error handling during URL loading (#3141)
jeanfbrito Nov 22, 2025
643a04a
chore: Update Electron version to 39.2.3 in package.json and yarn.loc…
jeanfbrito Nov 26, 2025
06c7765
fix: Showing notifications when downloads were cancelled (#3145)
jeanfbrito Nov 26, 2025
220992c
fix: Settings scrollbar and select not using Fuselage components (#3146)
jeanfbrito Nov 26, 2025
4663dcc
feat(videoCall): Enhance video call window functionality and UI
jeanfbrito Nov 27, 2025
b64105e
chore: Add transparent mode for macOS (#3107)
jeanfbrito Dec 3, 2025
84de523
fix: Windows executable not being signed (#3150)
jeanfbrito Dec 3, 2025
a70dfc6
fix: Freezing video call window on loading inside RDP sessions (#3143)
jeanfbrito Dec 3, 2025
8ba4976
fix: Skip signing non-singnable file types like appx (#3151)
jeanfbrito Dec 3, 2025
3b1c7c3
chore: Update Electron version to 39.2.5 in package.json and yarn.loc…
jeanfbrito Dec 5, 2025
6298e8c
fix: Wayland compatibility (#3159)
jeanfbrito Dec 11, 2025
376260f
feat: Enhance Linux support for screen sharing and dependencies (#3162)
jeanfbrito Jan 6, 2026
5f96eb0
Language update from Lingohub 🤖 (#3167)
lingohub[bot] Jan 6, 2026
22c1646
chore: Bump version numbers and update copyright year (#3169)
jeanfbrito Jan 6, 2026
4171c82
fix(linux): Prevent Wayland/X11 crashes (#3171)
jeanfbrito Jan 9, 2026
3dadff9
fix: apply Electron fuses before signing to preserve Windows signatur…
jeanfbrito Jan 13, 2026
5f76d14
feat: Enable alpha release channel support (#3182)
jeanfbrito Jan 26, 2026
f4fa783
Version 4.12.0 (#3189)
jeanfbrito Feb 3, 2026
ddb3abc
feat: Add Exchange/EWS debugging patches and error classification (#3…
jeanfbrito Feb 4, 2026
8e2b092
feat: Add scoped logging infrastructure and log viewer window (#3186)
jeanfbrito Feb 4, 2026
37379ce
fix: Add safe guards to prevent The application GUI just crashed (#3206)
jeanfbrito Feb 20, 2026
0af914a
fix: Screen picker not loading again after closing by clicking outsid…
jeanfbrito Feb 20, 2026
0299c92
chore: remove outdated Electron 10 comment (#3202)
SantamRC Feb 20, 2026
032fdda
Language update from Lingohub 🤖 (#3196)
lingohub[bot] Feb 20, 2026
a47fd4f
chore: Update hu.i18n.json (#3193)
urbalazs Feb 20, 2026
6c95653
chore: Remove package-lock.json in favor of yarn.lock (#3214)
jeanfbrito Feb 23, 2026
ad2cbf3
Version 4.13.0 (#3233)
jeanfbrito Mar 6, 2026
49261f5
fix: bump macOS bundleVersion to 26031 for 4.13.0 release
jeanfbrito Mar 6, 2026
672f676
feat: implement taskbar icon blinking for notifications
Ram-sah19 Mar 10, 2026
85ee1ac
feat: implement taskbar icon blinking for notifications
Ram-sah19 Mar 11, 2026
655fd55
feat: support afp:// links and open them with system handler
Ram-sah19 Mar 11, 2026
6c7e68b
fix: stop setInterval polling after all reactive features are initial…
Ram-sah19 Mar 11, 2026
d586834
fix: address CodeRabbit review - fix stop condition and crash recovery
Ram-sah19 Mar 11, 2026
8476653
fix: resolve merge conflicts with develop
Ram-sah19 Mar 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .cursor/worktrees.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"setup-worktree": [
"yarn install"
]
}
4 changes: 4 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/node_modules
/app
/workspaces/*
# Standalone tooling scripts (not part of main app, run with ts-node)
/scripts
# Patch source files (copied to node_modules, not compiled directly)
/patches-src
1 change: 1 addition & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"extends": ["@rocket.chat/eslint-config"],
"ignorePatterns": ["patches-src/**/*"],
"plugins": ["react", "react-hooks"],
"env": {
"browser": true,
Expand Down
31 changes: 24 additions & 7 deletions .github/workflows/build-release.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
permissions:
contents: read
name: Build release

on:
push:
branches:
- master
- develop
- dev
tags:
- '*'

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref }}
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
Expand All @@ -31,10 +32,10 @@ jobs:
with:
fetch-depth: 0

- name: Setup Node 22.13.1
- name: Setup Node 22.17.1
uses: actions/setup-node@v4
with:
node-version: '22.13.1'
node-version: '22.17.1'
Comment on lines +35 to +38
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
python - <<'PY'
import json, pathlib, re

pkg = json.loads(pathlib.Path("package.json").read_text())
wf = pathlib.Path(".github/workflows/build-release.yml").read_text()

m = re.search(r"node-version:\s*'([^']+)'", wf)
print("workflow.node-version =", m.group(1) if m else "<missing>")
print("package.engines.node =", pkg.get("engines", {}).get("node"))
print("package.devEngines.node =", pkg.get("devEngines", {}).get("node"))
print("package.volta.node =", pkg.get("volta", {}).get("node"))
PY

Repository: RocketChat/Rocket.Chat.Electron

Length of output: 204


Align release CI with the repo's declared Node floor.

package.json declares Node 24.11.1 in engines, devEngines, and volta, but this job still installs 22.17.1. The release workflow must use a supported Node version.

Suggested fix
-      - name: Setup Node 22.17.1
+      - name: Setup Node 24.11.1
         uses: actions/setup-node@v4
         with:
-          node-version: '22.17.1'
+          node-version: '24.11.1'
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Setup Node 22.17.1
uses: actions/setup-node@v4
with:
node-version: '22.13.1'
node-version: '22.17.1'
- name: Setup Node 24.11.1
uses: actions/setup-node@v4
with:
node-version: '24.11.1'
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/build-release.yml around lines 35 - 38, The workflow is
installing Node 22.17.1 while package.json/vоlta declare Node 24.11.1; update
the actions/setup-node usage in the release job (the step currently named "Setup
Node 22.17.1" that uses actions/setup-node@v4) to install node-version '24.11.1'
(or reference the engines/devEngines/volta value) so the CI Node runtime aligns
with the repository's declared Node floor.


- name: Setup node_modules cache
uses: actions/cache@v4
Expand Down Expand Up @@ -63,15 +64,31 @@ jobs:
NODE_ENV: production
BUGSNAG_API_KEY: ${{ secrets.BUGSNAG_API_KEY }}
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}

- name: Setup gcloud (Windows)
if: ${{ matrix.os == 'windows-latest' }}
uses: google-github-actions/setup-gcloud@v2
with:
version: '>=536.0.0'

- name: Authenticate to Google Cloud (Windows)
if: ${{ matrix.os == 'windows-latest' }}
uses: google-github-actions/auth@v2
with:
credentials_json: ${{ secrets.GCP_SA_JSON }}

- uses: ./workspaces/desktop-release-action
with:
mac_csc_link: ${{ secrets.MAC_CSC_LINK }}
mac_csc_key_password: ${{ secrets.MAC_CSC_KEY_PASSWORD }}
mac_apple_id: ${{ secrets.APPLEID }}
mac_apple_id_password: ${{ secrets.APPLEIDPASS }}
mac_asc_provider: 'S6UPZG7ZR3'
win_csc_link: ${{ secrets.WIN_CSC_LINK }}
win_csc_key_password: ${{ secrets.WIN_CSC_KEY_PASSWORD }}
gcp_sa_json: ${{ secrets.GCP_SA_JSON }}
win_kms_key_resource: ${{ secrets.WIN_KMS_KEY_RESOURCE }}
win_user_crt: ${{ secrets.WIN_USER_CRT }}
win_intermediate_crt: ${{ secrets.WIN_INTERMEDIATE_CRT }}
win_root_crt: ${{ secrets.WIN_ROOT_CRT }}
github_token: ${{ secrets.GH_TOKEN }}
env:
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}
Comment on lines 80 to 94
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

action_file="$(fd '^action\.ya?ml$' workspaces/desktop-release-action | head -n1)"
echo "Action metadata: ${action_file}"
echo

echo "== Action runtime / required inputs =="
rg -n -C2 'runs:|using:\s*node|snapcraft_token|required:\s*true' "$action_file"

echo
echo "== Workflow caller =="
rg -n -C2 'desktop-release-action|snapcraft_token|SNAPCRAFT_STORE_CREDENTIALS' .github/workflows/build-release.yml

Repository: RocketChat/Rocket.Chat.Electron

Length of output: 2101


Update ./workspaces/desktop-release-action to use Node.js 16+ runtime, and provide snapcraft_token as a required input matching this caller.

The action still declares runs.using: node12 (unsupported/deprecated) and requires snapcraft_token as a mandatory input. This workflow only passes SNAPCRAFT_STORE_CREDENTIALS as an environment variable, leaving the required snapcraft_token input unprovided—the action and caller are out of contract.

🧰 Tools
🪛 actionlint (1.7.11)

[error] 80-80: invalid runner name "node12" at runs.using in "Rocket.Chat Desktop App Release Action" action defined at "/home/jailuser/git/workspaces/desktop-release-action". valid runners are "composite", "docker", "node20", and "node24". see https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs

(action)


[error] 80-80: missing input "snapcraft_token" which is required by action "Rocket.Chat Desktop App Release Action" defined at "./workspaces/desktop-release-action". all required inputs are "gcp_sa_json", "github_token", "mac_apple_id", "mac_apple_id_password", "mac_asc_provider", "mac_csc_key_password", "mac_csc_link", "snapcraft_token", "win_kms_key_resource"

(action)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/build-release.yml around lines 80 - 94, The workflow
caller uses ./workspaces/desktop-release-action but the action still declares
runs.using: node12 and requires a snapcraft_token input while the workflow only
provides SNAPCRAFT_STORE_CREDENTIALS as an env var; update the action's metadata
(in workspaces/desktop-release-action) to use a supported Node.js runtime (e.g.,
runs.using: node16) and add/rename an input snapcraft_token (or make it
optional) so the action's inputs match this workflow, or alternatively change
this workflow step to pass snapcraft_token: ${{
secrets.SNAPCRAFT_STORE_CREDENTIALS }} and keep the action's inputs as-is;
ensure the change references runs.using and snapcraft_token in the action
metadata and the workflow step to keep caller and action contract consistent.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The flagged issues in i18n files, build-release.yml, and electron-builder.json are pre-existing in the develop branch and were pulled in during merge conflict resolution. This PR only modifies src/injected.ts and src/ui/main/rootWindow.ts.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Ram-sah19, understood — thanks for the clarification. The issues flagged in .github/workflows/build-release.yml, the i18n files, and electron-builder.json (including the node12 runtime and missing snapcraft_token input) are pre-existing in the develop branch and were not introduced by this PR. I'll note this for future reviews.

If you'd like, I can open a separate follow-up issue to track the node12 deprecation and the snapcraft_token contract mismatch in the action metadata, so they don't get lost. Just let me know!

(¬、¬)~♪


✏️ Learnings added
Learnt from: Ram-sah19
Repo: RocketChat/Rocket.Chat.Electron PR: 3254
File: .github/workflows/build-release.yml:80-94
Timestamp: 2026-03-11T06:38:34.676Z
Learning: In the RocketChat/Rocket.Chat.Electron repository, the issues flagged in `.github/workflows/build-release.yml` (e.g., `node12` runtime in the release action and missing `snapcraft_token` input), i18n files, and `electron-builder.json` are pre-existing in the `develop` branch and are pulled in during merge conflict resolution. Do not flag these as new issues introduced by PRs that only modify `src/injected.ts` and `src/ui/main/rootWindow.ts`.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.


🧠 Learnings used
Learnt from: CR
Repo: RocketChat/Rocket.Chat.Electron PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-04T19:29:54.650Z
Learning: Use two-phase Windows code signing: build packages without signing first (empty environment variables), then sign built packages using jsign with Google Cloud KMS to prevent MSI build failures from KMS CNG provider conflicts

48 changes: 48 additions & 0 deletions .github/workflows/powershell-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: PowerShell Lint

permissions:
contents: read

on:
pull_request:
paths:
- '**.ps1'
- '**.psm1'
- '**.psd1'
- '.github/workflows/powershell-lint.yml'
push:
branches:
- master
- dev
paths:
- '**.ps1'
- '**.psm1'
- '**.psd1'
- '.github/workflows/powershell-lint.yml'

jobs:
lint:
runs-on: windows-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Install PSScriptAnalyzer
shell: pwsh
run: |
Set-PSRepository PSGallery -InstallationPolicy Trusted
Install-Module -Name PSScriptAnalyzer -Force -Scope CurrentUser

- name: Run PSScriptAnalyzer
shell: pwsh
run: |
# Exclude Write-Host warnings as they're useful for CI output
$results = Invoke-ScriptAnalyzer -Path . -Recurse -ReportSummary -ExcludeRule PSAvoidUsingWriteHost
if ($results) {
$results | Format-Table -AutoSize
Write-Error "PSScriptAnalyzer found issues"
exit 1
} else {
Write-Host "✅ No PowerShell issues found"
}
Loading