Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1317 commits
Select commit Hold shift + click to select a range
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
eccb95d
fix(backup): include baselines in CIPP backups
github-actions[bot] Oct 29, 2026
0227331
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Oct 29, 2026
bb63017
feat(ninjaone): add NinjaOne Ticketing as a PSA target
github-actions[bot] Oct 29, 2026
a608f36
feat(timers): show Craft's recorded timer state and jitter on the Tim…
github-actions[bot] Oct 30, 2026
1343058
feat(app-permissions): audit-backed exposure signals, directory roles…
github-actions[bot] Oct 30, 2026
02b1b18
fix(search): open the BitLocker key drawer from universal search results
github-actions[bot] Oct 30, 2026
0e5781c
fix(graph-explorer): always page AllTenants reads from the cache
github-actions[bot] Oct 30, 2026
c2ad1a1
Merge pull request #1098 from kris6673/feat/memberof-dynamic-group-fi…
github-actions[bot] Nov 1, 2026
f9bb2bd
Merge pull request #1088 from TecharyJames/enrollment-restrictions
github-actions[bot] Nov 1, 2026
67b1b55
Merge pull request #1085 from kris6673/feat/add-group-drawer
github-actions[bot] Nov 1, 2026
f8f0c8e
Merge pull request #1083 from kris6673/feat/calendar-permissions-bulk…
github-actions[bot] Nov 1, 2026
63ef0ed
feat: Add Exchange application roles and access policies to CIPP
github-actions[bot] Nov 2, 2026
dca5ff1
build(deps): bump frontend deps and CodeQL action to v4.39.1
github-actions[bot] Nov 2, 2026
3533a9b
fix(integrations): hide Syncro and update logo
github-actions[bot] Nov 2, 2026
be33af6
chore: bump version to 11.3.0
github-actions[bot] Nov 2, 2026
b7bfac1
Merge pull request #1076 from TMGCL-TS/feat/transport-template-priority
github-actions[bot] Nov 2, 2026
5ca024b
docs: add Compare CA Policies user guide
github-actions[bot] Nov 2, 2026
3e5273e
feat(roles): add BlockAllTenants custom role flag
github-actions[bot] Nov 3, 2026
197da0e
fix(container-update): store remote build date as ISO UTC
github-actions[bot] Nov 3, 2026
ae2ee9a
feat(container-mgmt): pin verified channel image digests
github-actions[bot] Nov 3, 2026
1acb0e8
Merge pull request #1119 from CyberDrain/dependabot/npm_and_yarn/fron…
github-actions[bot] Nov 3, 2026
cbfa133
Merge pull request #1120 from CyberDrain/dependabot/npm_and_yarn/fron…
github-actions[bot] Nov 3, 2026
bbdb174
fix(history): read logs from Results property
github-actions[bot] Nov 3, 2026
bc829cf
feat(container-management): label channel trust level
github-actions[bot] Nov 3, 2026
47a3a47
docs(container): clarify dev channel usage guidance
github-actions[bot] Nov 4, 2026
90395fd
fix(users): reset bulk add and invite drawers to the current tenant o…
github-actions[bot] Nov 4, 2026
d542f43
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Nov 4, 2026
9dd2a3b
feat: Add functionality for managing deleted applications
github-actions[bot] Nov 4, 2026
ba13783
feat: Add federated credential support and app sign-in activity tracking
github-actions[bot] Nov 4, 2026
923c69d
fix(roles): list built-in roles when no custom roles exist
github-actions[bot] Nov 4, 2026
91c536f
chore(sponsors): replace Augmentt with Maester Cloud
github-actions[bot] Nov 4, 2026
f513232
Merge pull request #882 from kris6673/feat/ca-policy-duplicate
github-actions[bot] Nov 4, 2026
bf2ef35
Merge pull request #991 from kris6673/feat/group-template-deploy-drawer
github-actions[bot] Nov 4, 2026
259dee3
Merge pull request #1005 from kris6673/fix/group-license-supported-types
github-actions[bot] Nov 4, 2026
bfe3fcd
refactor(app-deploy): combine package search field and button
github-actions[bot] Nov 4, 2026
ef98e5c
refactor(drawers): move CippApiResults into drawer footers
github-actions[bot] Nov 4, 2026
4dd7a68
Merge pull request #1015 from kris6673/feat/shared-mailbox-last-signin
github-actions[bot] Nov 4, 2026
dbbd396
Merge pull request #1063 from kris6673/feat/bulk-add-shared-room-equi…
github-actions[bot] Nov 4, 2026
c12836b
docs: fix alert history path and conditional access policy copy spec
github-actions[bot] Nov 4, 2026
74f34de
Merge pull request #1065 from kris6673/fix/sp-guest-peoplepicker-text
github-actions[bot] Nov 4, 2026
c75f0e0
Merge pull request #1068 from kris6673/feat/vacation-end-now
github-actions[bot] Nov 4, 2026
aa2c8ed
Merge pull request #1073 from kris6673/feat/alltenants-securescore-co…
github-actions[bot] Nov 4, 2026
7a3d510
feat(roles): show app role tenants in the role summary
github-actions[bot] Nov 4, 2026
9c32809
Merge pull request #1077 from kris6673/feat/non-compliant-devices-page
github-actions[bot] Nov 4, 2026
8df2919
fix(tests): require a literal type in custom test data reads and proj…
github-actions[bot] Nov 4, 2026
9fd3093
Merge pull request #1146 from Corsw/patch-3
github-actions[bot] Nov 5, 2026
77632a5
Merge pull request #1124 from kris6673/fix/securescore-status-single-…
github-actions[bot] Nov 5, 2026
f8fa139
Merge pull request #1123 from kris6673/feat/unassign-device-users
github-actions[bot] Nov 5, 2026
4f3726c
feat(layout): use the shared error card for the pick-a-tenant and ten…
github-actions[bot] Nov 5, 2026
fa091fd
fix(licenses): filter cached licence rows by their RowKey tenant so r…
github-actions[bot] Nov 5, 2026
bd2d5a0
fix(baselines): open the right baseline from Edit Baseline in the sta…
github-actions[bot] Nov 5, 2026
972f1bf
fix(tenant-groups): reserve placeholder group names, lock the onboard…
github-actions[bot] Nov 5, 2026
507d003
fix(tenant-groups): refuse reserved group names in the add and edit form
github-actions[bot] Nov 5, 2026
8ac6600
feat(intune): add sync status drawer for device sync
github-actions[bot] Nov 5, 2026
ccb517a
Merge pull request #1081 from kris6673/feat/intune-policy-failures
github-actions[bot] Nov 5, 2026
52c6630
fix(breadcrumbs): copy the trail as a single line
github-actions[bot] Nov 6, 2026
8938b6d
fix(dashboard): ignore on-demand caches instead of flagging tenants t…
github-actions[bot] Nov 6, 2026
ca8c95d
feat(preferences): add an option to hide recent tenants in the tenant…
github-actions[bot] Nov 6, 2026
95832bb
fix(sam): report a client secret deleted from the app instead of show…
github-actions[bot] Nov 6, 2026
daa1479
fix(scheduler): match stored parameter names to the command's casing
github-actions[bot] Nov 6, 2026
6639c79
fix(gdap): stop reset role mapping recreating groups that were alread…
github-actions[bot] Nov 6, 2026
344ee69
fix(apps): only offer display languages Intune accepts for Microsoft …
github-actions[bot] Nov 6, 2026
fa214b6
feat(conditional): all tenants view for named locations
github-actions[bot] Nov 6, 2026
2764704
fix(conditional): named locations page no longer imports an unrelease…
github-actions[bot] Nov 6, 2026
1d78ef3
perf(intune): share one group name snapshot across the Intune caches
github-actions[bot] Nov 6, 2026
836118e
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Nov 6, 2026
53c565f
feat(tenants): view data for a tenant group from the tenant selector
github-actions[bot] Nov 6, 2026
398fcc7
fix(ui): use the standard tabbed list shell on App Mailbox Access and…
github-actions[bot] Nov 6, 2026
7f7c61b
fix(tenants): open pages that don't use a tenant while a tenant group…
github-actions[bot] Nov 6, 2026
f61ceb0
Merge pull request #1168 from CyberDrain/feat/multi-partner-tenants
github-actions[bot] Nov 6, 2026
7653527
perf(reporting): size branding images when they are uploaded
github-actions[bot] Nov 9, 2026
f8b4a99
Merge pull request #1176 from chris-dewey-1991/fix-sort-vacation-mode…
github-actions[bot] Nov 9, 2026
9d54829
Merge pull request #1177 from chris-dewey-1991/fix-sort-compare-ca-po…
github-actions[bot] Nov 9, 2026
c1efe38
fixes renewal for sherweb decrease
github-actions[bot] Nov 9, 2026
a080e03
Merge pull request #1127 from kris6673/feat/intune-deployment-status
github-actions[bot] Nov 9, 2026
33b86a3
fixes bulk input
github-actions[bot] Nov 9, 2026
1029157
fix team mailnick feature
github-actions[bot] Nov 9, 2026
f91edf8
add set timezone
github-actions[bot] Nov 9, 2026
ae71c42
add copy action
github-actions[bot] Nov 9, 2026
a398a34
add offboarding option to remove roles
github-actions[bot] Nov 9, 2026
b565c78
configure days
github-actions[bot] Nov 9, 2026
1961829
Merge pull request #891 from StoricU/feature/travel-existing-locations
github-actions[bot] Nov 9, 2026
3ad4d8d
fix(reporting): keep line breaks when sanitizing report text
github-actions[bot] Nov 10, 2026
e9bcd20
Update openapi.json
github-actions[bot] Nov 10, 2026
eaaa139
Merge pull request #1215 from CyberDrain/dependabot/npm_and_yarn/fron…
github-actions[bot] Nov 10, 2026
903bb64
Merge pull request #1218 from CyberDrain/dependabot/npm_and_yarn/fron…
github-actions[bot] Nov 10, 2026
eba3343
fix(ui): move MUI system props into sx
github-actions[bot] Nov 10, 2026
19240d7
fix(frontend): fix tenantFilter order in restore backup drawer
github-actions[bot] Nov 10, 2026
7e2d72d
Merge pull request #1217 from CyberDrain/dependabot/npm_and_yarn/fron…
github-actions[bot] Nov 10, 2026
6083b1f
Merge pull request #1214 from CyberDrain/dependabot/npm_and_yarn/fron…
github-actions[bot] Nov 10, 2026
2264cb7
Update openapi.json
github-actions[bot] Nov 10, 2026
3fda237
Update openapi.json
github-actions[bot] Nov 10, 2026
e3e1d2c
feat(baselines): open a baseline in the editor from its alignment car…
github-actions[bot] Nov 10, 2026
44686c1
fix(nhi): cap the directory audit read of a busy app
github-actions[bot] Nov 10, 2026
5ee7feb
Merge pull request #1183 from kris6673/fix/dashboard-metric-links
github-actions[bot] Nov 10, 2026
511d2ba
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Nov 10, 2026
d9cf017
Merge pull request #1116 from ADV-Technical-Consulting/feat/spo-guest…
github-actions[bot] Nov 10, 2026
64300c1
Merge pull request #1227 from kris6673/fix/mde-attach-toggle
github-actions[bot] Nov 11, 2026
9717ddc
fix(alerts): skip new accounts in the Global Admin password alert
github-actions[bot] Nov 11, 2026
bd31f49
fix(exchange): label internal forwards resolved to a UPN as internal
github-actions[bot] Nov 11, 2026
09efa7b
feat(integrations): warn on the API egress card when a client takes u…
github-actions[bot] Nov 11, 2026
01fa50c
Merge pull request #1238 from kris6673/fix/reports-unknown-not-negative
github-actions[bot] Nov 11, 2026
6e21c7f
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Nov 11, 2026
9351adb
refactor: replace loading state checks with pending state for better …
github-actions[bot] Nov 11, 2026
a3671b8
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Nov 11, 2026
7e2b8cf
Merge pull request #1242 from Kyle-Luchsinger/feat/license-request-alert
github-actions[bot] Nov 12, 2026
ff877b3
refactor(notifications): tidy day-rollover notification fix
github-actions[bot] Nov 12, 2026
7d64fc6
feat(hudu): allow hiding license warnings in Magic Dash
github-actions[bot] Nov 12, 2026
80ef5ce
Merge pull request #1258 from TMGCL-TS/fix/edit-user-remove-last-license
github-actions[bot] Nov 12, 2026
729f7c0
adds pim group eligibility.
github-actions[bot] Nov 12, 2026
dd85a0f
added tags
github-actions[bot] Nov 12, 2026
577df4c
fixes reportDate variable
github-actions[bot] Nov 12, 2026
6ae8950
fixed dropping reference and haloid
github-actions[bot] Nov 12, 2026
b29e1e0
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
github-actions[bot] Nov 12, 2026
3516863
fix(app-registration): retry refetch after credential change
github-actions[bot] Nov 12, 2026
1466c80
fix(app-registration): bust response cache on reload
github-actions[bot] Nov 12, 2026
80f2586
fix(tenant-groups): skip tenant group on licence name backfill
github-actions[bot] Nov 12, 2026
86d29a3
fix(nhi): count containment history rows, not runs
github-actions[bot] Nov 12, 2026
557cde4
fix(applications): remove client secrets one at a time and report each
github-actions[bot] Nov 13, 2026
948096d
fix(templates): read force-import via ref in handler
github-actions[bot] Nov 13, 2026
810b754
fix(frontend): handle single-row graph bulk responses
github-actions[bot] Nov 13, 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