Skip to content

Commit 5ffcaa2

Browse files
Merge branch 'KelvinTegelaar:main' into main
2 parents a893382 + 0710355 commit 5ffcaa2

131 files changed

Lines changed: 10062 additions & 262643 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/auto_comments.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
# 1) If the comment includes '!notasponsor', delete it using GitHub Script
1818
- name: Delete !notasponsor comment
1919
if: contains(github.event.comment.body, '!notasponsor')
20-
uses: actions/github-script@v8
20+
uses: actions/github-script@v9
2121
with:
2222
github-token: ${{ secrets.GITHUB_TOKEN }}
2323
script: |

.github/workflows/cipp_frontend_build.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@ jobs:
3838
- name: Build Project
3939
run: npm run build
4040

41+
# Update version.json with commit hash
42+
- name: Update version.json
43+
run: |
44+
VERSION=$(jq -r '.version' public/version.json)
45+
SHORT_SHA="${GITHUB_SHA::7}"
46+
echo "{\"version\": \"${VERSION}\", \"commit\": \"${SHORT_SHA}\"}" > out/version.json
47+
4148
# Create ZIP File in a New Source Directory
4249
- name: Prepare and Zip Build Files
4350
run: |

.github/workflows/pr_check.yml

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,40 @@ jobs:
2222
# Only process fork PRs with specific branch conditions
2323
# Must be a fork AND (source is main/master OR target is main/master)
2424
if: |
25-
github.event.pull_request.head.repo.fork == true &&
25+
github.event.pull_request.head.repo.fork == true &&
2626
((github.event.pull_request.head.ref == 'main' || github.event.pull_request.head.ref == 'master') ||
2727
(github.event.pull_request.base.ref == 'main' || github.event.pull_request.base.ref == 'master'))
28-
uses: actions/github-script@v8
28+
uses: actions/github-script@v9
2929
with:
3030
github-token: ${{ secrets.GITHUB_TOKEN }}
3131
script: |
3232
let message = '';
3333
34+
// Check if the fork has open PRs (indicates pull bot or similar is active)
35+
const forkOwner = context.payload.pull_request.head.repo.owner.login;
36+
const forkRepo = context.payload.pull_request.head.repo.name;
37+
const forkPullsUrl = context.payload.pull_request.head.repo.html_url + '/pulls';
38+
39+
let openPRs = [];
40+
try {
41+
const { data: prs } = await github.rest.pulls.list({
42+
owner: forkOwner,
43+
repo: forkRepo,
44+
state: 'open',
45+
per_page: 5
46+
});
47+
openPRs = prs;
48+
} catch (e) {
49+
// Can't read fork PRs — skip
50+
}
51+
3452
message += '🔄 If you are attempting to update your CIPP repo please follow the instructions at: https://docs.cipp.app/setup/self-hosting-guide/updating. Are you a sponsor? Contact the helpdesk for direct assistance with updating to the latest version.';
53+
54+
if (openPRs.length > 0) {
55+
message += ` It looks like you may already have a pending update PR on your fork — check your [open pull requests](${forkPullsUrl}) to accept it.`;
56+
} else {
57+
message += ` You can enable [Pull Bot](https://github.com/apps/pull) or [Repo Sync](https://github.com/apps/repo-sync) to automatically keep your fork up to date.`;
58+
}
3559
message += '\n\n';
3660
3761
// Check if PR is targeting main/master
@@ -40,7 +64,7 @@ jobs:
4064
}
4165
4266
// Check if PR is from a fork's main/master branch
43-
if (context.payload.pull_request.head.repo.fork &&
67+
if (context.payload.pull_request.head.repo.fork &&
4468
(context.payload.pull_request.head.ref === 'main' || context.payload.pull_request.head.ref === 'master')) {
4569
message += '⚠️ This PR cannot be merged because it originates from your fork\'s main/master branch. If you are attempting to contribute code please PR from your dev branch or another non-main/master branch.\n\n';
4670
}

.vscode/launch.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,13 @@
3535
"cwd": "${cwd}",
3636
"script": ". '${cwd}\\Tools\\Start-CIPPDevEmulators.ps1'"
3737
},
38+
{
39+
"type": "PowerShell",
40+
"name": "Launch in Windows Terminal with Offloading Proc and HTTP only workers",
41+
"request": "launch",
42+
"cwd": "${cwd}",
43+
"script": ". '${cwd}\\Tools\\Start-CippOffloadSimulation.ps1'"
44+
},
3845
{
3946
"type": "PowerShell",
4047
"name": "Launch in Kitty Terminal",

Tests/Shapes/ListTests.json

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,23 +103,19 @@
103103
"ExoAcceptedDomains": "number",
104104
"ExoAdminAuditLogConfig": "number",
105105
"ExoAntiPhishPolicies": "number",
106-
"ExoAntiPhishPolicy": "number",
107106
"ExoAntiPhishRules": "number",
108107
"ExoAtpPolicyForO365": "number",
109108
"ExoDkimSigningConfig": "number",
110109
"ExoHostedContentFilterPolicy": "number",
111110
"ExoHostedOutboundSpamFilterPolicy": "number",
112111
"ExoMalwareFilterPolicies": "number",
113-
"ExoMalwareFilterPolicy": "number",
114112
"ExoMalwareFilterRules": "number",
115113
"ExoOrganizationConfig": "number",
116114
"ExoQuarantinePolicy": "number",
117115
"ExoRemoteDomain": "number",
118116
"ExoSafeAttachmentPolicies": "number",
119-
"ExoSafeAttachmentPolicy": "number",
120117
"ExoSafeAttachmentRules": "number",
121118
"ExoSafeLinksPolicies": "number",
122-
"ExoSafeLinksPolicy": "number",
123119
"ExoSafeLinksRules": "number",
124120
"ExoSharingPolicy": "number",
125121
"ExoTenantAllowBlockList": "number",

Tools/Start-CippDevEmulators.ps1

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,35 @@ Write-Host 'Starting emulators...' -ForegroundColor Cyan
1818

1919
# Build commands with error handling
2020
$azuriteCommand = 'try { azurite } catch { Write-Error $_.Exception.Message } finally { Read-Host "Press Enter to exit" }'
21-
$apiCommand = 'try { func start } catch { Write-Error $_.Exception.Message } finally { Read-Host "Press Enter to exit" }'
21+
$apiCommand = @'
22+
try {
23+
# Use a stable local identity so timer node selection treats this as the catch-all host.
24+
$env:WEBSITE_SITE_NAME = "cipp"
25+
$env:CIPP_PROCESSOR = "false"
26+
$env:AzureFunctionsWebHost__hostid = "cipp-single"
27+
28+
# Ensure prior offload simulation env overrides do not disable triggers in this shell.
29+
Remove-Item -Path "Env:AzureWebJobs.CIPPTimer.Disabled" -ErrorAction SilentlyContinue
30+
Remove-Item -Path "Env:AzureWebJobs.CIPPActivityFunction.Disabled" -ErrorAction SilentlyContinue
31+
Remove-Item -Path "Env:AzureWebJobs.CIPPOrchestrator.Disabled" -ErrorAction SilentlyContinue
32+
Remove-Item -Path "Env:AzureWebJobs.CIPPQueueTrigger.Disabled" -ErrorAction SilentlyContinue
33+
Remove-Item -Path "Env:AzureWebJobs.CIPPHttpTrigger.Disabled" -ErrorAction SilentlyContinue
34+
35+
func start
36+
} catch {
37+
Write-Error $_.Exception.Message
38+
} finally {
39+
Read-Host "Press Enter to exit"
40+
}
41+
'@
2242
$frontendCommand = 'try { npm run dev } catch { Write-Error $_.Exception.Message } finally { Read-Host "Press Enter to exit" }'
2343
$swaCommand = 'try { npm run start-swa } catch { Write-Error $_.Exception.Message } finally { Read-Host "Press Enter to exit" }'
2444

45+
# Encode commands to avoid parsing issues with multi-line strings
46+
$azuriteEncoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($azuriteCommand))
47+
$apiEncoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($apiCommand))
48+
$frontendEncoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($frontendCommand))
49+
$swaEncoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($swaCommand))
50+
2551
# Start Windows Terminal with all tabs
26-
wt --title CIPP`; new-tab --title 'Azurite' -d $Path pwsh -c $azuriteCommand`; new-tab --title 'FunctionApp' -d $ApiPath pwsh -c $apiCommand`; new-tab --title 'CIPP Frontend' -d $FrontendPath pwsh -c $frontendCommand`; new-tab --title 'SWA' -d $FrontendPath pwsh -c $swaCommand
52+
wt --title CIPP`; new-tab --title 'Azurite' -d $Path pwsh -EncodedCommand $azuriteEncoded`; new-tab --title 'FunctionApp' -d $ApiPath pwsh -EncodedCommand $apiEncoded`; new-tab --title 'CIPP Frontend' -d $FrontendPath pwsh -EncodedCommand $frontendEncoded`; new-tab --title 'SWA' -d $FrontendPath pwsh -EncodedCommand $swaEncoded
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
[CmdletBinding()]
2+
param(
3+
[int]$HttpPort = 7071,
4+
[int]$ProcessorPort = 7072,
5+
[switch]$NoFrontend
6+
)
7+
8+
Write-Host 'Starting CIPP local offload simulation' -ForegroundColor Cyan
9+
10+
# Verify Windows Terminal is available
11+
Get-Command wt -ErrorAction Stop | Out-Null
12+
13+
# Stop any existing node processes
14+
Get-Process node -ErrorAction SilentlyContinue | Stop-Process -ErrorAction SilentlyContinue
15+
16+
# Run installation script to ensure dependencies are installed and updated before starting emulators
17+
pwsh -File (Join-Path $PSScriptRoot 'Start-CippDevInstallation.ps1')
18+
Write-Host 'Starting emulators...' -ForegroundColor Cyan
19+
20+
$repoRoot = (Get-Item $PSScriptRoot).Parent.Parent.FullName
21+
$apiPath = Join-Path -Path $repoRoot -ChildPath 'CIPP-API'
22+
$frontendPath = Join-Path -Path $repoRoot -ChildPath 'CIPP'
23+
24+
if (-not (Test-Path $apiPath)) {
25+
throw "CIPP-API path not found: $apiPath"
26+
}
27+
28+
$azuriteCommand = 'try { azurite } catch { Write-Error $_.Exception.Message } finally { Read-Host "Press Enter to exit" }'
29+
30+
$httpHostCommand = @'
31+
try {
32+
$env:WEBSITE_SITE_NAME = "cipp-http"
33+
$env:CIPP_PROCESSOR = "false"
34+
$env:AzureFunctionsWebHost__hostid = "cipp-http"
35+
36+
Set-Item -Path "Env:AzureWebJobs.CIPPTimer.Disabled" -Value "1"
37+
Set-Item -Path "Env:AzureWebJobs.CIPPActivityFunction.Disabled" -Value "1"
38+
Set-Item -Path "Env:AzureWebJobs.CIPPOrchestrator.Disabled" -Value "1"
39+
Set-Item -Path "Env:AzureWebJobs.CIPPQueueTrigger.Disabled" -Value "1"
40+
41+
func start --port {HTTP_PORT}
42+
} catch {
43+
Write-Error $_.Exception.Message
44+
} finally {
45+
Read-Host "Press Enter to exit"
46+
}
47+
'@
48+
49+
$processorHostCommand = @'
50+
try {
51+
$env:WEBSITE_SITE_NAME = "cipp-proc"
52+
$env:CIPP_PROCESSOR = "true"
53+
$env:AzureFunctionsWebHost__hostid = "cipp-proc"
54+
55+
Set-Item -Path "Env:AzureWebJobs.CIPPHttpTrigger.Disabled" -Value "1"
56+
57+
func start --port {PROCESSOR_PORT}
58+
} catch {
59+
Write-Error $_.Exception.Message
60+
} finally {
61+
Read-Host "Press Enter to exit"
62+
}
63+
'@
64+
65+
$httpHostCommand = $httpHostCommand.Replace('{HTTP_PORT}', $HttpPort.ToString())
66+
$processorHostCommand = $processorHostCommand.Replace('{PROCESSOR_PORT}', $ProcessorPort.ToString())
67+
68+
$frontendCommand = 'try { npm run dev } catch { Write-Error $_.Exception.Message } finally { Read-Host "Press Enter to exit" }'
69+
$swaCommand = 'try { npm run start-swa } catch { Write-Error $_.Exception.Message } finally { Read-Host "Press Enter to exit" }'
70+
71+
$azuriteEncoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($azuriteCommand))
72+
$httpHostEncoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($httpHostCommand))
73+
$processorHostEncoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($processorHostCommand))
74+
$frontendEncoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($frontendCommand))
75+
$swaEncoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($swaCommand))
76+
77+
if ($NoFrontend) {
78+
wt --title CIPP-Offload-Sim`; new-tab --title 'Azurite' -d $repoRoot pwsh -EncodedCommand $azuriteEncoded`; new-tab --title 'FunctionApp-HTTP' -d $apiPath pwsh -EncodedCommand $httpHostEncoded`; new-tab --title 'FunctionApp-Processor' -d $apiPath pwsh -EncodedCommand $processorHostEncoded
79+
} else {
80+
wt --title CIPP-Offload-Sim`; new-tab --title 'Azurite' -d $repoRoot pwsh -EncodedCommand $azuriteEncoded`; new-tab --title 'FunctionApp-HTTP' -d $apiPath pwsh -EncodedCommand $httpHostEncoded`; new-tab --title 'FunctionApp-Processor' -d $apiPath pwsh -EncodedCommand $processorHostEncoded`; new-tab --title 'CIPP Frontend' -d $frontendPath pwsh -EncodedCommand $frontendEncoded`; new-tab --title 'SWA' -d $frontendPath pwsh -EncodedCommand $swaEncoded
81+
}
82+
83+
Write-Host "Started offload simulation tabs (HTTP:$HttpPort, Processor:$ProcessorPort)." -ForegroundColor Green

next.config.js

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,27 @@
1+
const disableOptimizePackageImports = process.env.NEXT_DISABLE_OPTIMIZE_PACKAGE_IMPORTS === '1'
2+
13
/** @type {import('next').NextConfig} */
24
const config = {
35
reactStrictMode: false,
6+
experimental: {
7+
optimizePackageImports: disableOptimizePackageImports
8+
? []
9+
: [
10+
'@mui/material',
11+
'@mui/icons-material',
12+
'@mui/lab',
13+
'@mui/system',
14+
'@mui/x-date-pickers',
15+
'material-react-table',
16+
'mui-tiptap',
17+
'recharts',
18+
'@react-pdf/renderer',
19+
],
20+
webpackMemoryOptimizations: true,
21+
preloadEntriesOnStart: false,
22+
turbopackFileSystemCacheForDev: false,
23+
turbopackMemoryLimit: 4096,
24+
},
425
images: {
526
unoptimized: true,
627
},
@@ -12,12 +33,6 @@ const config = {
1233
},
1334
},
1435
},
15-
experimental: {
16-
webpackMemoryOptimizations: true,
17-
preloadEntriesOnStart: false,
18-
turbopackFileSystemCacheForDev: false,
19-
turbopackMemoryLimit: 4096,
20-
},
2136
async redirects() {
2237
return []
2338
},

package.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cipp",
3-
"version": "10.3.1",
3+
"version": "10.4.5",
44
"author": "CIPP Contributors",
55
"homepage": "https://cipp.app/",
66
"bugs": {
@@ -16,7 +16,7 @@
1616
},
1717
"scripts": {
1818
"dev": "next -H 127.0.0.1",
19-
"build": "next build && rm -rf package.json yarn.lock",
19+
"build": "next build --webpack && rm -rf package.json yarn.lock",
2020
"start": "next start",
2121
"export": "next export",
2222
"lint": "npx eslint .",
@@ -31,11 +31,11 @@
3131
"@emotion/styled": "11.14.1",
3232
"@heroicons/react": "2.2.0",
3333
"@monaco-editor/react": "^4.6.0",
34-
"@mui/icons-material": "7.3.7",
34+
"@mui/icons-material": "7.3.10",
3535
"@mui/lab": "7.0.0-beta.17",
36-
"@mui/material": "7.3.7",
37-
"@mui/system": "7.3.2",
38-
"@mui/x-date-pickers": "^8.27.2",
36+
"@mui/material": "7.3.10",
37+
"@mui/system": "7.3.10",
38+
"@mui/x-date-pickers": "^9.0.2",
3939
"@musement/iso-duration": "^1.0.0",
4040
"@nivo/core": "^0.99.0",
4141
"@nivo/sankey": "^0.99.0",
@@ -51,12 +51,12 @@
5151
"@tiptap/extension-image": "^3.20.5",
5252
"@tiptap/extension-table": "^3.19.0",
5353
"@tiptap/pm": "^3.22.3",
54-
"@tiptap/react": "^3.4.1",
54+
"@tiptap/react": "^3.20.5",
5555
"@tiptap/starter-kit": "^3.20.5",
5656
"@uiw/react-json-view": "^2.0.0-alpha.41",
5757
"@vvo/tzdb": "^6.198.0",
5858
"apexcharts": "5.10.4",
59-
"axios": "1.14.0",
59+
"axios": "1.15.0",
6060
"date-fns": "4.1.0",
6161
"diff": "^8.0.3",
6262
"eml-parse-js": "^1.2.0-beta.0",
@@ -100,7 +100,7 @@
100100
"react-redux": "9.2.0",
101101
"react-syntax-highlighter": "^16.1.0",
102102
"react-time-ago": "^7.3.3",
103-
"react-virtuoso": "^4.18.3",
103+
"react-virtuoso": "^4.18.5",
104104
"react-window": "^2.2.7",
105105
"recharts": "^3.7.0",
106106
"redux": "5.0.1",

public/languageList.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,13 @@
160160
"languageTag": "Danish (da-DK)",
161161
"LCID": "1030"
162162
},
163+
{
164+
"language": "Dutch",
165+
"Geographic area": "Belgium",
166+
"tag": "nl-BE",
167+
"languageTag": "Dutch (nl-BE)",
168+
"LCID": "2067"
169+
},
163170
{
164171
"language": "Dutch",
165172
"Geographic area": "Netherlands",

0 commit comments

Comments
 (0)