Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1196 commits
Select commit Hold shift + click to select a range
80ef174
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Sep 22, 2026
afd9e43
Security Simulations: never carry a null entry in the situation, find…
github-actions[bot] Sep 22, 2026
47ff16c
perf(mem): stream export-backed mem reports
github-actions[bot] Sep 23, 2026
8bb8886
Merge pull request #707 from kris6673/fix/hide-inapplicable-actions
github-actions[bot] Sep 23, 2026
1d9fd25
Merge pull request #705 from kris6673/feat/dashboard-card-header-links
github-actions[bot] Sep 23, 2026
6ee5eae
feat(conditional): clone CA templates to detach them from template li…
github-actions[bot] Sep 23, 2026
10db1b3
Merge pull request #710 from CyberDrain/feat/template-sync-ux
github-actions[bot] Sep 23, 2026
4c05864
Merge pull request #490 from CyberDrain/preview/bec-case-workflow
github-actions[bot] Sep 23, 2026
73c1031
Merge pull request #509 from CyberDrain/feat/custom-tests-cache-shape
github-actions[bot] Sep 23, 2026
1ef87a0
refactor(identity): move Business Email Compromise under Identity > A…
github-actions[bot] Sep 23, 2026
e4076bc
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Sep 23, 2026
be41265
docs(bec): document remediation defaults and bring the BEC pages up t…
github-actions[bot] Sep 23, 2026
77a6439
feat(sharepoint): enhance site template deployment with channels and …
github-actions[bot] Sep 24, 2026
418ae34
Update openapi.json
github-actions[bot] Sep 24, 2026
bc0fada
feat(docker): enhance Windows Docker startup script for Node.js compa…
github-actions[bot] Sep 24, 2026
7c9720a
fix(alerts): name the STS logon AADSTS code field ErrorCode in the au…
github-actions[bot] Sep 24, 2026
7c9bdea
fix(alerts): offer AADSTS error codes and names for failed sign-in co…
github-actions[bot] Sep 24, 2026
df1058e
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Sep 24, 2026
5d9f32b
fix(bec): show the configured default containment actions in the case…
github-actions[bot] Sep 24, 2026
a1b6573
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Sep 24, 2026
75e857b
fix(baselines): expand excluded group ids to member tenants
github-actions[bot] Sep 24, 2026
16e06fe
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Sep 25, 2026
4ad76c3
fix(ScheduledTaskDetails): rely on unmountOnExit for lazy result tables
github-actions[bot] Sep 25, 2026
1213b36
fix(jit-admin): chain follow-up exclusions
github-actions[bot] Sep 25, 2026
c50776b
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Sep 25, 2026
f596a98
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Sep 25, 2026
bd085a1
version up
github-actions[bot] Sep 25, 2026
8c5a895
refactor(dashboard): remove the classic v1 dashboard
github-actions[bot] Sep 25, 2026
adc62a2
chore(sponsors): update augmentt link with utm params
github-actions[bot] Sep 25, 2026
370efcd
fix(alerts): load audit log alert actions from alertActions.json
github-actions[bot] Sep 26, 2026
39108b1
fix(bec): stop Microsoft and IPv6 addresses cascading into false atta…
github-actions[bot] Sep 26, 2026
0ea2787
fixes baselines max stages and app consents
github-actions[bot] Sep 28, 2026
76f4fee
fixes scenarios
github-actions[bot] Sep 28, 2026
e9a2e6a
feat(standards): add EWS allowed applications standard
github-actions[bot] Sep 28, 2026
8a1aacf
build: add version bump script, bump to 11.0.1
github-actions[bot] Sep 28, 2026
1e97bfe
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into feat/sp…
github-actions[bot] Sep 29, 2026
5942502
perf(dbcache): stream the mailbox cache and cut its allocation
github-actions[bot] Sep 29, 2026
9d23d72
Update openapi.json
github-actions[bot] Sep 29, 2026
aea6552
fix(bec): look up users via Graph and block case creation on AllTenants
github-actions[bot] Sep 29, 2026
a54274a
Update openapi.json
github-actions[bot] Sep 29, 2026
d24ecbc
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Sep 29, 2026
b02f94c
universal search fixes
github-actions[bot] Sep 29, 2026
d1ecac7
fix(bec): judge password resets and MFA-stopped sign-ins on evidence
github-actions[bot] Sep 29, 2026
4425736
fix(baselines): edge-trigger remediation alerts and report failed wri…
github-actions[bot] Sep 29, 2026
afcdd87
fix(enterprise-apps): hide saml signing actions on the list
github-actions[bot] Sep 29, 2026
94d9393
fix(securescore): route the Remediate button to a page that exists
github-actions[bot] Sep 29, 2026
f4c4cb7
fix(baselines): keep per-standard actions after the first save
github-actions[bot] Sep 29, 2026
817fd9f
feat: MS365 Service Health Page
github-actions[bot] Sep 30, 2026
8c4a53c
chore(deps): bump undici to 8.11.2 in the frontend lockfile
github-actions[bot] Sep 30, 2026
35170d1
feat(bec): run each investigation phase as its own sequential job
github-actions[bot] Sep 30, 2026
90c1605
fix: switch to api calls on table
github-actions[bot] Oct 1, 2026
3148c41
macosx support
github-actions[bot] Oct 1, 2026
810911d
fixes shortcut looping and makes it multipost
github-actions[bot] Oct 1, 2026
ea9fa28
Merge pull request #762 from CyberDrain/dependabot/npm_and_yarn/front…
github-actions[bot] Oct 1, 2026
b66ade9
Merge pull request #763 from CyberDrain/dependabot/npm_and_yarn/front…
github-actions[bot] Oct 1, 2026
01e8167
Merge pull request #764 from CyberDrain/dependabot/npm_and_yarn/front…
github-actions[bot] Oct 1, 2026
58e50e3
Merge pull request #765 from CyberDrain/dependabot/npm_and_yarn/front…
github-actions[bot] Oct 1, 2026
ae28926
Merge pull request #766 from CyberDrain/dependabot/npm_and_yarn/front…
github-actions[bot] Oct 1, 2026
d048ef2
fix(licenses): resolve SKU names from a point-lookup table instead of…
github-actions[bot] Oct 2, 2026
f3d5981
Update openapi.json
github-actions[bot] Oct 2, 2026
3eac021
fix(dbcache): schedule baseline-read activity timeout and SMTP AUTH o…
github-actions[bot] Oct 2, 2026
a3af667
chore: remove deprecated endpoint from caching
github-actions[bot] Oct 2, 2026
c2784c5
fix(standards): correct the device retirement days range in the helpe…
github-actions[bot] Oct 2, 2026
2d042ac
feat(notifications): gate Push on enrolment and point forms at Prefer…
github-actions[bot] Oct 2, 2026
b4c4a64
chore: bump version to 11.0.2
github-actions[bot] Oct 2, 2026
4c810b7
fix(ci): clear the audit, analyzer and test failures on the hotfix PR
github-actions[bot] Oct 2, 2026
1825a98
feat(integrations): move API egress usage into its own API Usage tab
github-actions[bot] Oct 2, 2026
e99e1cc
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Oct 3, 2026
a35d27e
fix(tables): open AllTenants row links scoped to the row's tenant
github-actions[bot] Oct 5, 2026
1cae235
fix(alerts): keep storage quota alert snoozes matching across runs
github-actions[bot] Oct 5, 2026
9a31e85
Merge pull request #732 from TechSG-Martin/feat/license-pricing-csv
github-actions[bot] Oct 5, 2026
e5c4a7d
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Oct 5, 2026
3ed5ae4
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Oct 5, 2026
c586af3
feat(vacation): add tenant vacation defaults & usageLocation default
github-actions[bot] Oct 5, 2026
66db6c8
feat(autopilot): assign profiles to groups with exclusions, grade ass…
github-actions[bot] Oct 6, 2026
e21d7e7
Merge pull request #835 from CyberDrain/dependabot/npm_and_yarn/front…
github-actions[bot] Oct 6, 2026
4f4b380
Merge pull request #833 from CyberDrain/dependabot/npm_and_yarn/front…
github-actions[bot] Oct 6, 2026
ff08489
Merge pull request #831 from CyberDrain/dependabot/npm_and_yarn/front…
github-actions[bot] Oct 6, 2026
bc8f28d
test(auth): pin built-in and custom role permissions and their access…
github-actions[bot] Oct 6, 2026
6a28052
refactor(teams-share): move reports into a Reports folder
github-actions[bot] Oct 6, 2026
d79ed3d
feat(hudu): per-tenant opt-out of LAPS and BitLocker sync
github-actions[bot] Oct 6, 2026
3cff8b6
feat(users): surname prefix and core tokens for username formats
github-actions[bot] Oct 6, 2026
d454098
fix(tenant-selector): sort favourite tenants alphabetically
github-actions[bot] Oct 6, 2026
a28f813
feat(vacation): add users to groups for the vacation period
github-actions[bot] Oct 6, 2026
f420ae0
feat(transport): template mode on the rule editor; variables resolve …
github-actions[bot] Oct 6, 2026
e1fe585
feat(exchange): add support for custom mailbox attributes management
github-actions[bot] Oct 7, 2026
a81e9dd
Merge pull request #846 from kris6673/feat/dashboard-service-health
github-actions[bot] Oct 7, 2026
f02d7ab
Merge pull request #822 from NickVAg/feat/add-login-hint
github-actions[bot] Oct 7, 2026
b159384
fixes login hint issue
github-actions[bot] Oct 7, 2026
533fcd8
Update openapi.json
github-actions[bot] Oct 7, 2026
31ddfe3
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Oct 7, 2026
79add11
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Oct 7, 2026
993e4e3
allow moving of stages
github-actions[bot] Oct 7, 2026
d6e82bb
new ondrive alert
github-actions[bot] Oct 7, 2026
6a8e161
chore(openapi): type baseline storage fields
github-actions[bot] Oct 7, 2026
e260a62
standard items
github-actions[bot] Oct 7, 2026
84a550f
feat(realtime): live queue and job progress over Craft SSE
github-actions[bot] Oct 8, 2026
73d3e7f
docs(identity): document JIT Admin approval
github-actions[bot] Oct 8, 2026
11533fc
add sort
github-actions[bot] Oct 8, 2026
4d21041
add group ownership removal
github-actions[bot] Oct 8, 2026
60bdb28
fix(tests): grade security simulations against secure values the scen…
github-actions[bot] Oct 8, 2026
e5938d7
fix(conditional): allow selecting multiple authentication flow transf…
github-actions[bot] Oct 9, 2026
cf5b956
test(tests): cover combined authentication flow transfer methods in C…
github-actions[bot] Oct 9, 2026
95d149c
fix(tests): normalise numeric SharePoint sharing enums in CIS 7.2.3, …
github-actions[bot] Oct 9, 2026
5b8bf2a
fix(cache): report a skipped duplicate cache run instead of claiming …
github-actions[bot] Oct 9, 2026
928491c
fix(api): return an error status when an endpoint's catch block fails
github-actions[bot] Oct 9, 2026
f4ca7d9
docs(api): document endpoint status codes and error-signalling helpers
github-actions[bot] Oct 9, 2026
368f00d
feat(msp-apps): add NinjaOne to MSP vendor apps
github-actions[bot] Oct 9, 2026
9ddde67
feat(branding): add option to turn off the cover image fade
github-actions[bot] Oct 9, 2026
683f630
feat(halo): background auto-map with tenant ID and exact name matching
github-actions[bot] Oct 9, 2026
f3eb3c6
feat(hudu): auto-map tenants via HaloPSA client and exact company name
github-actions[bot] Oct 9, 2026
51de266
feat(conditional): add list custom variables for CA templates
github-actions[bot] Oct 10, 2026
b3063c6
new GSA deployment standard
github-actions[bot] Oct 10, 2026
9c3493b
Merge pull request #742 from kris6673/feat/teams-files-policy
github-actions[bot] Oct 10, 2026
ba9bebb
feat(onedrive): allow a custom name when adding a OneDrive shortcut
github-actions[bot] Oct 10, 2026
5b29fed
fix(build): rebuild Loki indexes after loading paged azurite tables
github-actions[bot] Oct 10, 2026
4fee265
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Oct 10, 2026
ef156bb
fix(exchange): fall back to Get-MessageTraceV2 for GCC message traces
github-actions[bot] Oct 10, 2026
5407058
Update openapi.json
github-actions[bot] Oct 11, 2026
0bbde7d
feat(baselines): filter the fleet overview by baseline and stage
github-actions[bot] Oct 11, 2026
6310868
fix(baselines): stop the unsaved-changes prompt when saving a new bas…
github-actions[bot] Oct 12, 2026
e7ae1fb
Merge pull request #876 from kris6673/feat/jit-approval-tenant-scope
github-actions[bot] Oct 12, 2026
ad00412
Fix push notification permission handling
github-actions[bot] Oct 12, 2026
3100b18
feat(sharepoint): show per-tenant storage table on AllTenants
github-actions[bot] Oct 12, 2026
54b3413
mime encoding words and long names fixes
github-actions[bot] Oct 12, 2026
4a0cbbd
chore: bump version to 11.1.0
github-actions[bot] Oct 12, 2026
8841f79
fix(intune): use flex gap on wrapping settings catalog stacks
github-actions[bot] Oct 12, 2026
6462fdc
chore(frontend): bump sharp, prosemirror-view, source-map-js
github-actions[bot] Oct 12, 2026
ca86739
fix(CippApiDialog): remove double HTML escaping in confirm text
github-actions[bot] Oct 12, 2026
4942502
fix(quarantine): label unanalysed links and attachments instead of Un…
github-actions[bot] Oct 12, 2026
b3e4aca
fix(ninjaone): sort secure scores by createdDateTime so the latest sc…
github-actions[bot] Oct 13, 2026
8b91486
CA policy reporting
github-actions[bot] Oct 13, 2026
23c32f9
Update openapi.json
github-actions[bot] Oct 13, 2026
31377a0
Merge pull request #903 from TecharyJames/feat/macos-laps-retrieval
github-actions[bot] Oct 13, 2026
6048402
fix(sam-cert): verify the certificate can sign before enabling certif…
github-actions[bot] Oct 13, 2026
520dd04
fix(bec): stop marking quiet investigation runs as abandoned
github-actions[bot] Oct 14, 2026
33be7cf
feat(email): test mail flow rules with Test-Message
github-actions[bot] Oct 14, 2026
6c723eb
fix(webhooks): create Graph subscriptions on the current instance URL
github-actions[bot] Oct 14, 2026
9e72afe
fix(mcp): flag a disabled MCP Server feature during setup
github-actions[bot] Oct 14, 2026
272b5e5
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Oct 14, 2026
10e400a
feat(logs): add IP/AppId filters, search, quick ranges, URL state
github-actions[bot] Oct 14, 2026
f6c60a2
Update openapi.json
github-actions[bot] Oct 14, 2026
a2cee85
fix(intune): refuse templates missing a setting their chosen option r…
github-actions[bot] Oct 14, 2026
ea62393
feat(sharepoint): redrive sharing-link scans while they progress and …
github-actions[bot] Oct 15, 2026
ccfcc98
Merge pull request #933 from kris6673/fix/planner-standard-help-text
github-actions[bot] Oct 15, 2026
1a78793
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Oct 15, 2026
58a06d2
Merge pull request #923 from CyberDrain/dependabot/npm_and_yarn/front…
github-actions[bot] Oct 15, 2026
9b4f2b7
Merge pull request #850 from kris6673/fix/sidenav-follow-route
github-actions[bot] Oct 15, 2026
4c3b4bd
Merge pull request #867 from kris6673/fix/intune-include-replace-broa…
github-actions[bot] Oct 15, 2026
e4edfa2
Merge pull request #902 from kris6673/fix/policy-deploy-template-refetch
github-actions[bot] Oct 15, 2026
809e68c
Merge pull request #908 from kris6673/fix/user-reported-admin-submiss…
github-actions[bot] Oct 15, 2026
df05a9d
Merge pull request #912 from kris6673/fix/frontend-ui-slips
github-actions[bot] Oct 15, 2026
7ba6bc3
Merge pull request #921 from CyberDrain/dependabot/npm_and_yarn/front…
github-actions[bot] Oct 15, 2026
e0b48f0
Merge pull request #922 from CyberDrain/dependabot/npm_and_yarn/front…
github-actions[bot] Oct 15, 2026
2877279
Merge pull request #924 from CyberDrain/dependabot/npm_and_yarn/front…
github-actions[bot] Oct 15, 2026
6ef8498
Merge pull request #925 from CyberDrain/dependabot/npm_and_yarn/front…
github-actions[bot] Oct 15, 2026
0167c2d
fix(sharepoint): match the storage report's last refresh line to the …
github-actions[bot] Oct 15, 2026
8507d24
docs(teams-share): move report pages under Reports to match the app
github-actions[bot] Oct 15, 2026
12b3188
Update openapi.json
github-actions[bot] Oct 15, 2026
24c2c08
perf(sharepoint): run the site caches as their own tasks and fan out …
github-actions[bot] Oct 15, 2026
9438c91
Merge pull request #947 from kris6673/fix/form-condition-clear-on-hide
github-actions[bot] Oct 16, 2026
e313b20
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Oct 16, 2026
5952e1f
fix permissions
github-actions[bot] Oct 16, 2026
2ebd890
fixes conditionals.
github-actions[bot] Oct 16, 2026
3a25868
fix(intune): tell same-named settings apart in the catalog picker
github-actions[bot] Oct 16, 2026
405c0c9
Update alerts.json
github-actions[bot] Oct 16, 2026
26e1a5c
Update openapi.json
github-actions[bot] Oct 16, 2026
277b3ac
feat(auditlog): add app- and user-actor presets for high-risk app cha…
github-actions[bot] Oct 17, 2026
6c5fc88
chore(config): expand RiskyPermissions and VendorTenantList catalogs
github-actions[bot] Oct 17, 2026
a1a58ec
fix(credentials): spin the refresh icon while status reloads
github-actions[bot] Oct 17, 2026
3c9389f
chore: bump version to 11.1.1
github-actions[bot] Oct 17, 2026
8065317
fix(auditlog): match credentials added when an app registration is cr…
github-actions[bot] Oct 17, 2026
6c0102d
chore: bump version to 11.2.0
github-actions[bot] Oct 17, 2026
542d1e6
fix(auditlog): drop PIM operations that are never in the unified audi…
github-actions[bot] Oct 17, 2026
d72b8ee
added presets and scripted alerts
github-actions[bot] Oct 17, 2026
60846ac
v up
github-actions[bot] Oct 17, 2026
bc54e7d
Merge pull request #938 from CTaylor-1/chore/next-16.4.1-security
github-actions[bot] Oct 18, 2026
a260f3f
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Oct 18, 2026
38a9ead
feat(sharepoint): show the storage report under Teams & SharePoint re…
github-actions[bot] Oct 19, 2026
7c703e9
Merge pull request #968 from kris6673/feat/gdap-active-no-autoextend-…
github-actions[bot] Oct 19, 2026
94f128d
feat(apps): hide Microsoft apps by default
github-actions[bot] Oct 19, 2026
e2e35ac
perf(table): skip faceted value scans for non-dropdown columns and st…
github-actions[bot] Oct 19, 2026
0032eac
fix(table): preserve filters across tenant switches
github-actions[bot] Oct 19, 2026
27ef10f
minor fix
github-actions[bot] Oct 19, 2026
325637a
feat(auth): block app secrets during certificate-only auth
github-actions[bot] Oct 20, 2026
64728c6
perf(table): stop large tables retaining old row generations
github-actions[bot] Oct 20, 2026
f49e465
build(frontend): drop unused query-sync-storage-persister
github-actions[bot] Oct 20, 2026
fd08b41
feat(queue): cancel queues you started and show the queue position
github-actions[bot] Oct 20, 2026
64cc058
Update openapi.json
github-actions[bot] Oct 20, 2026
8279ad6
Update openapi.json
github-actions[bot] Oct 20, 2026
acb0bbd
fix(queue): return the bare queue id for a run already in progress
github-actions[bot] Oct 20, 2026
9947853
Merge pull request #980 from CyberDrain/dependabot/npm_and_yarn/front…
github-actions[bot] Oct 20, 2026
ec90134
Merge pull request #945 from kris6673/feat/securescore-points-to-gain
github-actions[bot] Oct 20, 2026
487dbc2
Merge pull request #976 from CyberDrain/dependabot/npm_and_yarn/front…
github-actions[bot] Oct 20, 2026
bdc0d06
Merge pull request #978 from CyberDrain/dependabot/npm_and_yarn/front…
github-actions[bot] Oct 20, 2026
4b4d2e5
Merge pull request #979 from CyberDrain/dependabot/npm_and_yarn/front…
github-actions[bot] Oct 20, 2026
ee8eb79
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Oct 20, 2026
7d9cf2b
fix(tests): licence-gate and correct identity test grading
github-actions[bot] Oct 20, 2026
dc87bad
fix(reports): honor report-specific PDF branding presets (#996)
github-actions[bot] Oct 21, 2026
26c64c8
refactor(reports): reuse helper preset fallback for BEC evidence PDFs
github-actions[bot] Oct 21, 2026
ccf1cce
feat(domains): add tenant-wide domain security assessment report
github-actions[bot] Oct 21, 2026
9647645
feat(diagnostics): show top caller IPs on the API egress card
github-actions[bot] Oct 21, 2026
26c2fe1
fix(scheduler): cap scheduled task logs and apply retention to genera…
github-actions[bot] Oct 21, 2026
5d76af5
fix(reports): stop saving database block preview data in report templ…
github-actions[bot] Oct 21, 2026
1a25527
feat(hudu): rich-text redesign for People, Devices and Magic Dash
github-actions[bot] Oct 21, 2026
650bbb2
docs(settings): describe report retention for generated reports
github-actions[bot] Oct 22, 2026
3f77c39
fix(alerts): key vulnerability alert items on their CVE and keep snoo…
github-actions[bot] Oct 22, 2026
6b92d22
fix(endpoint): stop autopilot group picker crashing on a shared query…
github-actions[bot] Oct 22, 2026
c932ba4
Merge pull request #1011 from kris6673/fix/service-issues-live-default
github-actions[bot] Oct 22, 2026
a3f0715
feat(baselines): tenant list, bulk triage drawer and paged alignment …
github-actions[bot] Oct 22, 2026
436a670
fix(baselines): readable compliance trend charts
github-actions[bot] Oct 22, 2026
c0c2e3f
fix(hudu): preserve partner-moved layout field positions
github-actions[bot] Oct 22, 2026
3721f2e
feat(groups): manage Send As and Send on Behalf on edit group
github-actions[bot] Oct 22, 2026
6ec5ee6
feat(endpoint): add on-demand remediation script runs
github-actions[bot] Oct 23, 2026
d07aa96
feat(endpoint): add device policy status report endpoint
github-actions[bot] Oct 23, 2026
c3a5c9f
fix(exchange): bulk removal of trusted/blocked senders
github-actions[bot] Oct 23, 2026
1be4152
fix(exchange): refresh trusted/blocked senders list after removal
github-actions[bot] Oct 23, 2026
7bdba29
Update openapi.json
github-actions[bot] Oct 23, 2026
971f871
fix(dashboard): mark cache collections stale after 48 hours
github-actions[bot] Oct 23, 2026
7fe50e3
fix(baselines): name tenant overrides in the single-baseline run note
github-actions[bot] Oct 23, 2026
d1d6a3a
fix(baselines): fix quoting in the single-baseline run note
github-actions[bot] Oct 23, 2026
844796a
Update openapi.json
github-actions[bot] Oct 23, 2026
a820c84
feat(ip-list): show IP list entries as Safe or Compromised
github-actions[bot] Oct 23, 2026
b12284e
fix(bec): compact IP review cards
github-actions[bot] Oct 23, 2026
78742da
fix(bec): refresh the case's run list after an IP review or containme…
github-actions[bot] Oct 23, 2026
5a5850b
feat(alerts): set minimum run intervals on alerts whose data refreshe…
github-actions[bot] Oct 23, 2026
3b1f15b
Update openapi.json
github-actions[bot] Oct 23, 2026
525f533
feat(endpoint): add enrollment configuration report to device policy …
github-actions[bot] Oct 23, 2026
7dc9289
feat(egress): show response encoding per endpoint and caller IP
github-actions[bot] Oct 23, 2026
112f44c
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Oct 23, 2026
b1a62d0
feat(bec): add release action to undo BEC containment lockouts
github-actions[bot] Oct 23, 2026
7bfbe75
fix(conditional): keep a template's authentication strength when savi…
github-actions[bot] Oct 26, 2026
b30cfaf
fix(licenses): remove licenses from the optimization report, includin…
github-actions[bot] Oct 26, 2026
e5e8957
fix(graph): stop Get-GraphRequestList reading a caller's $Rows when t…
github-actions[bot] Oct 27, 2026
906d17f
fix(api-clients): accept legacy string Enabled values on API clients
github-actions[bot] Oct 27, 2026
137c3b3
Merge pull request #1052 from kris6673/feat/jit-approver-email
github-actions[bot] Oct 27, 2026
2cd958c
fix(baselines): stop duplicate Conditional Access named locations and…
github-actions[bot] Oct 27, 2026
59e1ecf
fix(tenant): manage excluded groups for every authentication method
github-actions[bot] Oct 28, 2026
869c135
fix(intune): keep template references on settings added in the templa…
github-actions[bot] Oct 28, 2026
e9d26d6
fix(email): address mailbox actions by ExchangeGuid instead of the am…
github-actions[bot] Oct 28, 2026
ba1d55c
Update openapi.json
github-actions[bot] Oct 28, 2026
9dc4e7c
Update openapi.json
github-actions[bot] Oct 28, 2026
84743e6
fix(table): keep filters on columns that are empty in the first rows
github-actions[bot] Oct 28, 2026
3833c9e
feat(ninjaone): render the organisation fields with the documentation…
github-actions[bot] Oct 29, 2026
1488a1b
Update openapi.json
github-actions[bot] Oct 29, 2026
c424050
Update openapi.json
github-actions[bot] Oct 29, 2026
4697e4b
Update openapi.json
github-actions[bot] Oct 29, 2026
7cff033
fix(users): validate fields auto-filled from a user template
github-actions[bot] Oct 29, 2026
753c384
fix(baselines): treat nested license groups as AND in security simula…
github-actions[bot] Oct 29, 2026
96bf0c1
Update config.jsx
github-actions[bot] Oct 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
40 changes: 40 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
## Commit messages

Generate all commit messages in **Conventional Commits** format:

```
<type>(<optional scope>): <description>

[optional body]

[optional footer(s)]
```

**Rules:**

- **Type** is required and must be one of:
- `feat` — a new feature
- `fix` — a bug fix
- `docs` — documentation only
- `style` — formatting, whitespace, no code-behavior change
- `refactor` — code change that neither fixes a bug nor adds a feature
- `perf` — a performance improvement
- `test` — adding or correcting tests
- `build` — build system or dependency changes
- `ci` — CI/CD configuration changes
- `chore` — routine maintenance, no production code change
- `revert` — reverts a previous commit
- **Scope** is optional and given in parentheses after the type (e.g. `feat(identity):`). Use a short, lowercase area name when it adds clarity.
- **Description** is a short, imperative-mood summary ("add", not "added"/"adds"), lowercase, no trailing period, ideally ≤ 72 characters.
- **Body** (optional) explains the *what* and *why*, not the *how*. Separate it from the description with one blank line.
- **Breaking changes** are indicated with a `!` before the colon (e.g. `feat!:`) and/or a `BREAKING CHANGE:` footer describing the change.
- Reference issues/PRs in the footer where relevant (e.g. `Closes #123`).

**Examples:**

```
feat(identity): add bulk user offboarding endpoint
fix(graph): handle expired token on retry
docs: update authentication model overview
refactor(standards)!: rename remediation parameter
```
71 changes: 71 additions & 0 deletions .github/scripts/validate-json.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import { readFile, readdir, writeFile, appendFile } from "node:fs/promises";
import path from "node:path";

// Usage: node validate-json.mjs [--strip <prefix>] <dir> [dir...]
// --strip removes a leading path prefix from reported filenames, so a PR checked
// out into a subdirectory still reports repo-relative paths.
const argv = process.argv.slice(2);
let strip = "";
const roots = [];
for (let i = 0; i < argv.length; i++) {
if (argv[i] === "--strip") {
strip = argv[++i] ?? "";
} else {
roots.push(argv[i]);
}
}

async function collect(dir) {
let entries;
try {
entries = await readdir(dir, { withFileTypes: true });
} catch (error) {
if (error.code === "ENOENT") return [];
throw error;
}
const files = [];
for (const entry of entries) {
const full = path.join(dir, entry.name);
if (entry.isDirectory()) {
if (entry.name === "node_modules") continue;
files.push(...(await collect(full)));
} else if (entry.name.endsWith(".json")) {
files.push(full);
}
}
return files;
}

const report = (file) => {
const normalised = file.split(path.sep).join("/");
return strip && normalised.startsWith(strip) ? normalised.slice(strip.length) : normalised;
};

const failures = [];
let checked = 0;

for (const root of roots) {
for (const file of await collect(root)) {
checked++;
const contents = await readFile(file, "utf8");
try {
JSON.parse(contents);
} catch (error) {
failures.push({ file: report(file), message: error.message.replace(/\r?\n/g, " ") });
}
}
}

for (const { file, message } of failures) {
// Annotate the PR diff via a GitHub Actions error command.
console.log(`::error file=${file}::${message}`);
}
console.log(`Checked ${checked} JSON file(s), ${failures.length} invalid.`);

// Hand the results to the workflow so it can comment on the PR.
if (process.env.GITHUB_OUTPUT) {
await appendFile(process.env.GITHUB_OUTPUT, `invalid_count=${failures.length}\n`);
}
await writeFile("json-validation-results.json", JSON.stringify(failures, null, 2));

process.exit(failures.length > 0 ? 1 : 0);
9 changes: 7 additions & 2 deletions .github/workflows/CodeQL_Analyser.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
---
# OPTIONAL UPGRADE to the existing CodeQL_Analyser.yml (already deployed in CIPP).
# Changes vs. current: adds push trigger on main/dev, security-extended query suite,
# and javascript-typescript language alias.
name: "CodeQL"
on:
push:
branches: [main, dev]
pull_request:
branches: [master, main, dev, react]
schedule:
Expand All @@ -17,14 +21,15 @@ jobs:
strategy:
fail-fast: false
matrix:
language: ["javascript"]
language: ["javascript-typescript"]
steps:
- name: Checkout Repository
uses: actions/checkout@v6
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
queries: security-extended
- name: Autobuild
uses: github/codeql-action/autobuild@v4
- name: Perform CodeQL Analysis
Expand Down
65 changes: 65 additions & 0 deletions .github/workflows/Conventional_Commits.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: Conventional Commits Check

on:
# Using pull_request_target instead of pull_request for secure handling of fork PRs
pull_request_target:
# Re-run on title edits so a corrected title clears the check
types: [opened, synchronize, reopened, edited]
# Only check PRs targeting the dev branch
branches:
- dev

permissions:
pull-requests: write
issues: write

jobs:
conventional-commits:
name: Validate Conventional Commits
runs-on: ubuntu-slim
steps:
- name: Validate PR title
uses: actions/github-script@v9
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const title = context.payload.pull_request.title || '';
const pattern = /^(feat|fix|docs|style|refactor|perf|test|chore|ci|build|revert)(\(.+\))?!?: .+/i;

if (pattern.test(title)) {
console.log(`✓ PR title follows Conventional Commits format: "${title}"`);
return;
}

console.log(`❌ PR title does not follow Conventional Commits format: "${title}"`);

const message = [
'❌ **This PR title does not follow the [Conventional Commits](https://www.conventionalcommits.org/) format.**',
'',
'Expected format: `type(scope)?: description`',
'',
'Allowed types: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `chore`, `ci`, `build`, `revert`',
'',
'Examples:',
'- `feat: add tenant filter to the user table`',
'- `fix(auth): handle expired refresh tokens`',
'- `docs: update self-hosting guide`',
'',
`Received: \`${title}\``,
'',
'🔒 This PR has been automatically closed. Please update the title to match the format above and reopen the PR.'
].join('\n');

await github.rest.issues.createComment({
...context.repo,
issue_number: context.issue.number,
body: message
});

await github.rest.pulls.update({
...context.repo,
pull_number: context.issue.number,
state: 'closed'
});

core.setFailed(`PR title does not follow Conventional Commits format: "${title}"`);
24 changes: 0 additions & 24 deletions .github/workflows/Detect_Duplicate_Issues.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .github/workflows/Node_Project_Check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
steps:
- uses: actions/checkout@v6
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v6.4.0
uses: actions/setup-node@v7.0.0
with:
node-version: ${{ matrix.node-version }}
- name: Install and Build Test
Expand Down
117 changes: 117 additions & 0 deletions .github/workflows/Validate_JSON.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
---
name: Validate JSON
on:
# pull_request_target (not pull_request) so the token can comment on fork PRs.
# The PR's own code is never executed: it is checked out into ./pr as data only,
# and parsed by the validator script from the trusted base checkout.
pull_request_target:
types: [opened, synchronize, reopened]
branches:
- main
- dev
paths:
- "public/**/*.json"
- "src/data/**/*.json"
- ".github/workflows/Validate_JSON.yml"
- ".github/scripts/validate-json.mjs"
push:
branches:
- dev
paths:
- "public/**/*.json"
- "src/data/**/*.json"
- ".github/workflows/Validate_JSON.yml"
- ".github/scripts/validate-json.mjs"
concurrency:
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request_target' && github.event.pull_request.number || github.ref }}
cancel-in-progress: true
permissions:
contents: read
pull-requests: write
jobs:
validate:
name: Parse JSON in public and src/data
runs-on: ubuntu-latest
steps:
- name: Checkout base (trusted validator script)
uses: actions/checkout@v6

- name: Checkout PR head (untrusted, data only)
if: github.event_name == 'pull_request_target'
uses: actions/checkout@v6
with:
repository: ${{ github.event.pull_request.head.repo.full_name }}
ref: ${{ github.event.pull_request.head.sha }}
path: pr
persist-credentials: false

- name: Validate JSON files
id: validate
continue-on-error: true
env:
ROOT: ${{ github.event_name == 'pull_request_target' && 'pr/' || '' }}
run: node .github/scripts/validate-json.mjs --strip "$ROOT" "${ROOT}public" "${ROOT}src/data"

- name: Comment on PR
if: github.event_name == 'pull_request_target'
uses: actions/github-script@v9
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const fs = require('fs');
const marker = '<!-- validate-json -->';
const resultsFile = 'json-validation-results.json';
if (!fs.existsSync(resultsFile)) {
// The validator crashed before reporting; let its own error stand.
core.warning('No validation results found — skipping PR comment.');
return;
}
const failures = JSON.parse(fs.readFileSync(resultsFile, 'utf8'));

// Find a previous comment from this workflow so we update instead of piling up.
const { data: comments } = await github.rest.issues.listComments({
...context.repo,
issue_number: context.issue.number,
per_page: 100,
});
const existing = comments.find(
(c) => c.user.type === 'Bot' && c.body.includes(marker)
);

let body;
if (failures.length > 0) {
const list = failures
.map(({ file, message }) => `- \`${file}\`\n > ${message}`)
.join('\n');
body =
`${marker}\n### ⚠️ Invalid JSON detected\n\n` +
`${failures.length} JSON file(s) in this PR could not be parsed. ` +
`These files are loaded directly by CIPP, so a syntax error here breaks the app at runtime.\n\n` +
`${list}\n\n` +
`Please fix the syntax and push again — this comment will update automatically.`;
} else if (existing) {
body = `${marker}\n### ✅ JSON is valid\n\nAll JSON files in \`public\` and \`src/data\` parse correctly. Thanks for fixing it!`;
} else {
// Nothing was ever broken — stay quiet.
return;
}

if (existing) {
await github.rest.issues.updateComment({
...context.repo,
comment_id: existing.id,
body,
});
} else {
await github.rest.issues.createComment({
...context.repo,
issue_number: context.issue.number,
body,
});
}

- name: Fail if any JSON is invalid
if: steps.validate.outputs.invalid_count != '0'
run: |
echo "::error::${{ steps.validate.outputs.invalid_count }} invalid JSON file(s). See annotations above."
exit 1
4 changes: 2 additions & 2 deletions .github/workflows/cipp_dev_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
echo "node_version=$node_sanitized_version" >> $GITHUB_OUTPUT

- name: Set up Node.js
uses: actions/setup-node@v6.4.0
uses: actions/setup-node@v7.0.0
with:
node-version: ${{ steps.get_node_version.outputs.node_version }}

Expand Down Expand Up @@ -54,7 +54,7 @@ jobs:

# Upload to Azure Blob Storage
- name: Azure Blob Upload
uses: LanceMcCarthy/Action-AzureBlobUpload@v3.12.0
uses: LanceMcCarthy/Action-AzureBlobUpload@v3.15.0
with:
connection_string: ${{ secrets.AZURE_CONNECTION_STRING }}
container_name: cipp
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/cipp_frontend_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
echo "node_version=$node_sanitized_version" >> $GITHUB_OUTPUT

- name: Set up Node.js
uses: actions/setup-node@v6.4.0
uses: actions/setup-node@v7.0.0
with:
node-version: ${{ steps.get_node_version.outputs.node_version }}

Expand Down Expand Up @@ -54,7 +54,7 @@ jobs:

# Upload to Azure Blob Storage
- name: Azure Blob Upload
uses: LanceMcCarthy/Action-AzureBlobUpload@v3.12.0
uses: LanceMcCarthy/Action-AzureBlobUpload@v3.15.0
with:
connection_string: ${{ secrets.AZURE_CONNECTION_STRING }}
container_name: cipp
Expand Down
Loading
Loading