Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
153 commits
Select commit Hold shift + click to select a range
0eabf95
App permission updates
Zacgoose Sep 14, 2025
4769fb5
UI Support for Removing all Teams Phone DIDs from user
Zacgoose Sep 14, 2025
2e2996f
Merge pull request #4639 from Zacgoose/teams-phone
KelvinTegelaar Sep 15, 2025
c87e098
code cleanup
JohnDuprey Sep 15, 2025
d1e4ab7
add parameter helperText
JohnDuprey Sep 16, 2025
b952c55
Add Avg CPU Load Factor and Cloud Block Level fields to DeployDefende…
kris6673 Sep 16, 2025
7ca5d99
Add Cloud Extended Timeout field and adjust spacing in DeployDefender…
kris6673 Sep 16, 2025
c7b1981
fix network protection audit mode
kris6673 Sep 16, 2025
4b286fc
Add Signature Update Interval field to DeployDefenderForm
kris6673 Sep 16, 2025
a5b8a58
Add placeholder for Avg CPU Load Factor, Signature Update Interval, a…
kris6673 Sep 16, 2025
98774c3
Add Allow On Access Protection and Disable Local Admin Merge fields t…
kris6673 Sep 16, 2025
564b3db
Add remediation action fields for varying threat severities to Deploy…
kris6673 Sep 16, 2025
f6383a6
fix numeric sorting
JohnDuprey Sep 17, 2025
2ba54e9
fix boolean sort
JohnDuprey Sep 17, 2025
2d1006f
fix watcher for ooo
JohnDuprey Sep 18, 2025
0272f96
Standards
KelvinTegelaar Sep 19, 2025
4573a32
Backup in tenant overview information
KelvinTegelaar Sep 21, 2025
ba37ea1
date correction
KelvinTegelaar Sep 21, 2025
9afc997
Fixing tenant
KelvinTegelaar Sep 21, 2025
93c4a45
names
KelvinTegelaar Sep 21, 2025
742b54e
find bug
KelvinTegelaar Sep 21, 2025
342ef3f
links improvements
KelvinTegelaar Sep 21, 2025
e66230c
Feat: Add "None" option to permission levels in calendar and contact …
kris6673 Sep 22, 2025
0f32a7b
catalog stuff
KelvinTegelaar Sep 22, 2025
63551db
Merge pull request #4663 from kris6673/feat-none-permissions
KelvinTegelaar Sep 22, 2025
2ee3eaf
Merge pull request #4653 from kris6673/defender-more-options
KelvinTegelaar Sep 22, 2025
c7c6343
added check page
KelvinTegelaar Sep 22, 2025
74ffa3c
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP into dev
KelvinTegelaar Sep 22, 2025
6c61aa8
fix autocomplete errors, prettifications
KelvinTegelaar Sep 22, 2025
c92b1f9
updates
KelvinTegelaar Sep 23, 2025
7f470bf
clone role functionality
JohnDuprey Sep 23, 2025
930aa8d
wording
JohnDuprey Sep 23, 2025
98af5cb
Clarify help text for excludeGroup field
PeterVive Sep 24, 2025
7f97f3f
improve cipp role add/edit page
JohnDuprey Sep 24, 2025
79f4404
fix advanced mapping bug
JohnDuprey Sep 24, 2025
1d9daf8
fix: Add boolean sorting function for status columns in tables
renada-jacob Sep 25, 2025
a490312
Merge pull request #4694 from renada-jacob/dev
KelvinTegelaar Sep 25, 2025
821625d
Merge pull request #4685 from PeterVive/patch-1
KelvinTegelaar Sep 25, 2025
20554e5
Add standard for configuring WHFB enrollment configuration - FR #4698
PeterVive Sep 25, 2025
91f261b
Fix: Change filter value from 'failed' to 'failure'
kris6673 Sep 26, 2025
ceefabe
Adds api description support to roles pages
Zacgoose Sep 27, 2025
ecc8ef7
Merge pull request #4707 from kris6673/huge-mega-pr
KelvinTegelaar Sep 27, 2025
590b44b
Merge pull request #4705 from PeterVive/whfb-enrollment-configuration
KelvinTegelaar Sep 27, 2025
12642fb
Merge pull request #4709 from Zacgoose/api-helper-desc
KelvinTegelaar Sep 27, 2025
488f61e
string percentage
KelvinTegelaar Sep 27, 2025
9fe6cab
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP into dev
KelvinTegelaar Sep 27, 2025
0cb5fb0
Show subgroups and type in the category for blocked endpoints
kris6673 Sep 28, 2025
35115bb
Add reason field to JIT Admin form
kris6673 Sep 28, 2025
db00561
Fix: Form validation messages and correct casing for useForm mode so …
kris6673 Sep 28, 2025
962a173
Merge pull request #4710 from kris6673/blocked-endpoint
KelvinTegelaar Sep 28, 2025
e15e7ef
Merge pull request #4711 from kris6673/jit-admin-reason
KelvinTegelaar Sep 28, 2025
44215d3
fix: form validation in guest and policy deploy drawers
kris6673 Sep 28, 2025
4b550c9
feat: implement add equipment, room, and room list drawers with form …
kris6673 Sep 28, 2025
3515330
fix: adjust grid sizes for display name and username fields in equipm…
kris6673 Sep 28, 2025
13775bb
Feat: Enhance CippAutoComplete and CippFormDomainSelector for improve…
kris6673 Sep 28, 2025
1c3bd7e
feat: add requiredPermissions prop to room, roomlist and equipment pa…
kris6673 Sep 28, 2025
b105441
Feat: Add CippAddContactDrawer component for adding new contacts
kris6673 Sep 28, 2025
ac5a59b
Feat: Change CippDeployContactTemplate to drawer for deploying contac…
kris6673 Sep 28, 2025
44442ec
Refactor: Remove unused imports from contacts page
kris6673 Sep 28, 2025
d25a499
Merge pull request #4716 from kris6673/contact-drawers
KelvinTegelaar Sep 28, 2025
ccbeafe
Merge pull request #4712 from kris6673/resource-drawers
KelvinTegelaar Sep 28, 2025
5c09b75
Added "Clear Capabilities Cache" action button on tenants page.
PeterVive Sep 29, 2025
942655b
disable change status button for defender controls
JohnDuprey Sep 29, 2025
e711f10
Merge pull request #4723 from PeterVive/tenant-clear-capabilities-cache
KelvinTegelaar Sep 29, 2025
65a7d6a
Update Azurite launch task to ensure en-US locale.
PeterVive Sep 29, 2025
48a8358
Feat: Update confirmation messages to include device name
kris6673 Sep 29, 2025
448567a
Feat: Add conditions for Windows OS in confirmation prompts and updat…
kris6673 Sep 29, 2025
fe121f8
Add UPN column back to CA Vacation Mode list. Fixes #4647
PeterVive Sep 29, 2025
67ff1f7
Refactor: Remove redundant conditions for Windows OS in scan actions …
kris6673 Sep 29, 2025
cda1ee5
Add internal reference field to GDAP invites
Zacgoose Sep 30, 2025
22032e7
Add new transport rule creation page
Zacgoose Sep 30, 2025
a927168
remove console log
JohnDuprey Sep 30, 2025
871817d
Feat: Add RestrictedUsers alert for users restricted from sending ema…
kris6673 Sep 30, 2025
0c8797f
Feat: Add Restricted Users page to manage email sending restrictions
kris6673 Sep 30, 2025
705a4be
Feat: Update DashboardLayout to reflect if it supports all tenants in…
kris6673 Sep 30, 2025
8614872
Feat: Enhance alert message for restricted users with a link to secur…
kris6673 Sep 30, 2025
9479663
Merge pull request #4726 from PeterVive/ca-vacationmode-upn-column
KelvinTegelaar Sep 30, 2025
7653802
Merge pull request #4727 from kris6673/mem-actions
KelvinTegelaar Sep 30, 2025
155b776
Fix: Add preselectedEnabled prop to tenant filter and pass requiredPe…
kris6673 Oct 1, 2025
04ed852
Merge pull request #4725 from PeterVive/azurite-locale-fix
KelvinTegelaar Oct 1, 2025
418aeb9
Merge pull request #4713 from kris6673/domain-picker-default
KelvinTegelaar Oct 1, 2025
b109dff
Merge pull request #4728 from Zacgoose/gdap-internal-message
KelvinTegelaar Oct 1, 2025
31e081c
Merge pull request #4736 from kris6673/restricted-users
KelvinTegelaar Oct 1, 2025
79b3736
Merge pull request #4740 from kris6673/fix-perms-and-preselect
KelvinTegelaar Oct 1, 2025
6ace1eb
Merge pull request #4732 from Zacgoose/new-transport-rule
KelvinTegelaar Oct 1, 2025
0217f58
adds removal of package
KelvinTegelaar Oct 2, 2025
0fc71a5
Allow standard "DisableGuests" to have inactivity period be configura…
PeterVive Oct 2, 2025
e86660c
Allow assignment of intune policies to custom group from table list F…
PeterVive Oct 2, 2025
0b2173d
Merge pull request #4748 from PeterVive/disableguestsinactivity
KelvinTegelaar Oct 2, 2025
fcefa72
Merge pull request #4749 from PeterVive/intune-policy-listview-custom…
KelvinTegelaar Oct 2, 2025
ebf0911
Feat:: New Teams Chat Protection settings standard
kris6673 Oct 2, 2025
819333f
custom data manual entry support
JohnDuprey Oct 3, 2025
ea929fe
Update patch-wizard.jsx
JohnDuprey Oct 3, 2025
d46cbec
custom variable autocomplete
JohnDuprey Oct 3, 2025
4ab1d1a
fix querykey
JohnDuprey Oct 3, 2025
4f7ecec
null safety on empty $select options
JohnDuprey Oct 3, 2025
d95bea1
null safety around persisted filters
JohnDuprey Oct 3, 2025
2ac5d61
debugging
JohnDuprey Oct 3, 2025
64581be
fix tenant filter on variable autocomplete
JohnDuprey Oct 3, 2025
06e26ea
fix defaults
JohnDuprey Oct 3, 2025
a29c597
add system fields to intune policy page
JohnDuprey Oct 3, 2025
dddb359
Merge pull request #4750 from kris6673/teams-chat-protection
JohnDuprey Oct 3, 2025
8e61d48
fix query key
JohnDuprey Oct 3, 2025
a5b6096
Fix #4751 - Format non-compliant policy JSON in standards compare nic…
PeterVive Oct 3, 2025
72362c0
Fixes #4743 - Switch assignedLicenses filter to "some" instead of "ev…
PeterVive Oct 3, 2025
9f88d53
Merge pull request #4754 from PeterVive/filter-multiple-licenses-user…
JohnDuprey Oct 3, 2025
aa3bbba
Merge pull request #4753 from PeterVive/noncompliant-standard-valuewrap
JohnDuprey Oct 3, 2025
ef16ec3
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP into dev
JohnDuprey Oct 3, 2025
695ff4e
null safety on the tenant form selector
JohnDuprey Oct 3, 2025
bc97634
memoize autocomplete
JohnDuprey Oct 4, 2025
428d2f0
Add array checks for backup and config data
Zacgoose Oct 4, 2025
792671b
Merge pull request #4755 from Zacgoose/tenant-backup
JohnDuprey Oct 4, 2025
068e4e0
fix variable autocomplete
JohnDuprey Oct 4, 2025
8c941c0
Add custom variables to backups
Zacgoose Oct 4, 2025
e4b8280
use tenant id instead of default domain for tenant group editing
Zacgoose Oct 4, 2025
0837877
Refactor user stats and chart card props
Zacgoose Oct 4, 2025
4965b8c
Implemented Assignment Filters
PeterVive Oct 4, 2025
481eaff
Implemented #4759 - retains full backwards compatibility.
PeterVive Oct 4, 2025
0368ba6
fix rerender loop
JohnDuprey Oct 4, 2025
054e2b9
keyboard shortcuts for autocomplete
JohnDuprey Oct 4, 2025
aeb9f72
autocomplete ux tweaks
JohnDuprey Oct 4, 2025
52fa53f
Implement Office custom XML support during deployment - FR #469
PeterVive Oct 4, 2025
d1214a5
Implement custom chocolatey arguments #4683
PeterVive Oct 4, 2025
66d9f29
Merge pull request #4756 from Zacgoose/custom-variables-backup
JohnDuprey Oct 5, 2025
1339a41
Merge pull request #4757 from Zacgoose/tenant-group-fix
JohnDuprey Oct 5, 2025
1b10289
Merge pull request #4763 from PeterVive/custom-chocolatey-arguments
JohnDuprey Oct 5, 2025
3464ebc
Merge pull request #4758 from Zacgoose/dashboard-update
JohnDuprey Oct 5, 2025
2a5fdc6
Merge pull request #4760 from PeterVive/assignment-filters-feature
JohnDuprey Oct 5, 2025
81d5abd
Merge pull request #4761 from PeterVive/custom-standardpolicy-names
JohnDuprey Oct 5, 2025
06eca6e
Merge pull request #4762 from PeterVive/office-custom-xml-support
JohnDuprey Oct 5, 2025
c239168
fix pathing for tenant management
JohnDuprey Oct 6, 2025
3b7159e
fix link
JohnDuprey Oct 6, 2025
bc5c2f6
fix autopilot issue with hardware hash boolean
JohnDuprey Oct 6, 2025
19ebcfc
Update index.js
JohnDuprey Oct 6, 2025
61acc91
refactor: reorder actions and update confirm texts with CA policy names
kris6673 Oct 7, 2025
f09f56a
fix: handle potential null values in invite and onboarding retrieval
kris6673 Oct 7, 2025
467804c
feat: add option to exclude onboarded tenant from top-level standards
kris6673 Oct 7, 2025
37ed32d
Merge pull request #4771 from kris6673/standardsExcludeAllTenants-onb…
JohnDuprey Oct 7, 2025
dc8ad09
Merge pull request #4770 from kris6673/CA-actions
JohnDuprey Oct 7, 2025
5fa06a7
Feat: AllTenants support for listing CA policies
kris6673 Oct 7, 2025
84cb07f
fix query key
JohnDuprey Oct 7, 2025
21845cc
fix all tenants dialog actions
JohnDuprey Oct 7, 2025
cc28bd9
better handling of child intune objects
JohnDuprey Oct 7, 2025
24b7f13
fix layering issue with tables in dialogs
JohnDuprey Oct 7, 2025
73b0f83
better clipboard handling
JohnDuprey Oct 7, 2025
fc0d1f8
Merge pull request #4773 from kris6673/ca-alltenants
JohnDuprey Oct 7, 2025
b3c4083
fix missing data keys
JohnDuprey Oct 8, 2025
6a7cb8c
update to MUI components
JohnDuprey Oct 8, 2025
cc584f6
formatting
JohnDuprey Oct 8, 2025
d01b2d9
remove invalid link
JohnDuprey Oct 8, 2025
12aba14
mailbox restore tweaks
JohnDuprey Oct 8, 2025
dd181bd
up version
KelvinTegelaar Oct 8, 2025
ac351b0
Merge pull request #4775 from KelvinTegelaar/dev
KelvinTegelaar Oct 8, 2025
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
6 changes: 6 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@
"type": "shell",
"command": "azurite --location ../",
"isBackground": true,
"options": {
"env": {
"LC_ALL": "en-US.UTF-8",
"LANG": "en-US"
}
},
"problemMatcher": {
"pattern": [
{
Expand Down
1 change: 1 addition & 0 deletions cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
"Reshare",
"Rewst",
"Sherweb",
"superadmin",
"Syncro",
"TERRL",
"unconfigured",
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "cipp",
"version": "8.4.2",
"version": "8.5.0",
"author": "CIPP Contributors",
"homepage": "https://cipp.app/",
"bugs": {
Expand Down
20 changes: 20 additions & 0 deletions public/permissionsList.json
Original file line number Diff line number Diff line change
Expand Up @@ -7969,5 +7969,25 @@
"userConsentDescription": "Allows the app to manage workforce integrations, to synchronize data from Microsoft Teams Shifts, on your behalf.",
"userConsentDisplayName": "Read and write workforce integrations",
"value": "WorkforceIntegration.ReadWrite.All"
},
{
"description": "Read and Modify Tenant-Acquired Telephone Number Details",
"displayName": "Read and Modify Tenant-Acquired Telephone Number Details",
"id": "424b07a8-1209-4d17-9fe4-9018a93a1024",
"isEnabled": true,
"Origin": "Delegated",
"userConsentDescription": "Allows the app to read and modify your tenant's acquired telephone number details on behalf of the signed-in admin user. Acquired telephone numbers may include attributes related to assigned object, emergency location, network site, etc.",
"userConsentDisplayName": "Allows the app to read and modify your tenant's acquired telephone number details on behalf of the signed-in admin user. Acquired telephone numbers may include attributes related to assigned object, emergency location, network site, etc.",
"value": "TeamsTelephoneNumber.ReadWrite.All"
},
{
"description": "Read and Modify Tenant-Acquired Telephone Number Details",
"displayName": "Read and Modify Tenant-Acquired Telephone Number Details",
"id": "0a42382f-155c-4eb1-9bdc-21548ccaa387",
"isEnabled": true,
"Origin": "Application",
"userConsentDescription": "Allows the app to read your tenant's acquired telephone number details, without a signed-in user. Acquired telephone numbers may include attributes related to assigned object, emergency location, network site, etc.",
"userConsentDisplayName": "Allows the app to read your tenant's acquired telephone number details, without a signed-in user. Acquired telephone numbers may include attributes related to assigned object, emergency location, network site, etc.",
"value": "TeamsTelephoneNumber.ReadWrite.All"
}
]
2 changes: 1 addition & 1 deletion public/version.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"version": "8.4.2"
"version": "8.5.0"
}
77 changes: 74 additions & 3 deletions src/api/ApiCall.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,25 @@ export function ApiGetCall(props) {
if (relatedQueryKeys) {
const clearKeys = Array.isArray(relatedQueryKeys) ? relatedQueryKeys : [relatedQueryKeys];
setTimeout(() => {
clearKeys.forEach((key) => {
// Separate wildcard patterns from exact keys
const wildcardPatterns = clearKeys
.filter((key) => key.endsWith("*"))
.map((key) => key.slice(0, -1));
const exactKeys = clearKeys.filter((key) => !key.endsWith("*"));

// Use single predicate call for all wildcard patterns
if (wildcardPatterns.length > 0) {
queryClient.invalidateQueries({
predicate: (query) => {
if (!query.queryKey || !query.queryKey[0]) return false;
const queryKeyStr = String(query.queryKey[0]);
return wildcardPatterns.some((pattern) => queryKeyStr.startsWith(pattern));
},
});
}

// Handle exact keys
exactKeys.forEach((key) => {
queryClient.invalidateQueries({ queryKey: [key] });
});
}, 1000);
Expand All @@ -96,7 +114,25 @@ export function ApiGetCall(props) {
if (relatedQueryKeys) {
const clearKeys = Array.isArray(relatedQueryKeys) ? relatedQueryKeys : [relatedQueryKeys];
setTimeout(() => {
clearKeys.forEach((key) => {
// Separate wildcard patterns from exact keys
const wildcardPatterns = clearKeys
.filter((key) => key.endsWith("*"))
.map((key) => key.slice(0, -1));
const exactKeys = clearKeys.filter((key) => !key.endsWith("*"));

// Use single predicate call for all wildcard patterns
if (wildcardPatterns.length > 0) {
queryClient.invalidateQueries({
predicate: (query) => {
if (!query.queryKey || !query.queryKey[0]) return false;
const queryKeyStr = String(query.queryKey[0]);
return wildcardPatterns.some((pattern) => queryKeyStr.startsWith(pattern));
},
});
}

// Handle exact keys
exactKeys.forEach((key) => {
queryClient.invalidateQueries({ queryKey: [key] });
});
}, 1000);
Expand All @@ -117,6 +153,7 @@ export function ApiGetCall(props) {

export function ApiPostCall({ relatedQueryKeys, onResult }) {
const queryClient = useQueryClient();

const mutation = useMutation({
mutationFn: async (props) => {
const { url, data, bulkRequest } = props;
Expand Down Expand Up @@ -144,9 +181,43 @@ export function ApiPostCall({ relatedQueryKeys, onResult }) {
const clearKeys = Array.isArray(relatedQueryKeys) ? relatedQueryKeys : [relatedQueryKeys];
setTimeout(() => {
if (relatedQueryKeys === "*") {
console.log("Invalidating all queries");
queryClient.invalidateQueries();
} else {
clearKeys.forEach((key) => {
// Separate wildcard patterns from exact keys
const wildcardPatterns = clearKeys
.filter((key) => key.endsWith("*"))
.map((key) => key.slice(0, -1));
const exactKeys = clearKeys.filter((key) => !key.endsWith("*"));

// Use single predicate call for all wildcard patterns
if (wildcardPatterns.length > 0) {
queryClient.invalidateQueries({
predicate: (query) => {
if (!query.queryKey || !query.queryKey[0]) return false;
const queryKeyStr = String(query.queryKey[0]);
const matches = wildcardPatterns.some((pattern) =>
queryKeyStr.startsWith(pattern)
);

// Debug logging for each query check
if (matches) {
console.log("Invalidating query:", {
queryKey: query.queryKey,
queryKeyStr,
matchedPattern: wildcardPatterns.find((pattern) =>
queryKeyStr.startsWith(pattern)
),
});
}

return matches;
},
});
}

// Handle exact keys
exactKeys.forEach((key) => {
queryClient.invalidateQueries({ queryKey: [key] });
});
}
Expand Down
7 changes: 5 additions & 2 deletions src/components/CippCards/CippChartCard.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -93,12 +93,15 @@ export const CippChartCard = ({
title,
actions,
onClick,
totalLabel = "Total",
customTotal,
}) => {
const [range, setRange] = useState("Last 7 days");
const [barSeries, setBarSeries] = useState([]);
const chartOptions = useChartOptions(labels, chartType);
chartSeries = chartSeries.filter((item) => item !== null);
const total = chartSeries.reduce((acc, value) => acc + value, 0);
const calculatedTotal = chartSeries.reduce((acc, value) => acc + value, 0);
const total = customTotal !== undefined ? customTotal : calculatedTotal;
useEffect(() => {
if (chartType === "bar") {
setBarSeries(
Expand Down Expand Up @@ -160,7 +163,7 @@ export const CippChartCard = ({
>
{labels.length > 0 && (
<>
<Typography variant="h5">Total</Typography>
<Typography variant="h5">{totalLabel}</Typography>
<Typography variant="h5">{isFetching ? "0" : total}</Typography>
</>
)}
Expand Down
Loading