Skip to content

[pull] dev from KelvinTegelaar:dev - #108

Open
pull[bot] wants to merge 1316 commits into
isgq-github01:devfrom
KelvinTegelaar:dev
Open

pull[bot] wants to merge 1316 commits into
isgq-github01:devfrom
KelvinTegelaar:dev

Conversation

@pull

@pull pull Bot commented Aug 13, 2026 •

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

@pull pull Bot locked and limited conversation to collaborators Aug 13, 2026
@pull pull Bot added the ⤵️ pull label Aug 13, 2026
Feat: Scope JIT admin approval to specific tenants and tenant groups

Synced from CyberDrain/CIPP@1280c64
The push-subscription flow now surfaces browser notification permission denials instead of swallowing them. The preferences page shows a clear status message while waiting for permission and explains how to enable notifications if the browser prompt does not appear.

Synced from CyberDrain/CIPP@6d5e904
Update yarn.lock for sharp 0.35.5, prosemirror-view 1.42.6, and source-map-js 1.2.2.

Synced from CyberDrain/CIPP@a2cb181
React already escapes text node values, so manually escaping with escapeHtml caused values like '&' and '<' to render as '&amp;'/'&lt;' to the user. Remove the redundant escapeHtml helper and use raw nested values directly, and add a test covering HTML-special characters rendering verbatim.

Closes #883

Synced from CyberDrain/CIPP@15fffcd
…known

Without Defender for Office 365 Plan 2 the message details come from the
exported message, which lists the URLs and attachments but carries no
verdict. The chip rendered that gap as "Unknown", which reads as a verdict
Microsoft never gave. It now says "Not analysed" on the header fallback and
keeps "Unknown" for a Defender answer without a verdict.

Closes #873

Synced from CyberDrain/CIPP@74e7304
…icate auth

Enabling certificate authentication (wizard toggle or certificate-only
first setup) switched every Graph call onto the SAM certificate as soon as
the registration step returned, without proving the certificate could
obtain a token. When the stored certificate was not actually registered on
the application, that produced a full AADSTS700027 outage that the wizard
reported as success.

Backend:
- Add Test-CIPPSAMCertificateAuth, which reads the stored certificate
  uncached and requests an app-only token with it. Both enable paths now
  run it first; on failure the flag stays off (or is rolled back) and the
  client secret remains in use.
- Get-GraphToken: on AADSTS700027 re-read the certificate from storage and
  retry once when the thumbprint differs, so a runspace holding a stale
  certificate self-heals instead of failing until restart.
- Update-CIPPSAMCertificate: refresh the process-wide preload after a
  drift re-register, not only after a mint.
- Get-CIPPAuthentication: do not burn the one-shot provisioning attempt
  while the vault still holds deployment placeholders, so the manual
  credential route provisions a certificate on the next reload.
- ExecSAMCertificate Get: return the application id and the certificate
  credentials registered on the application (name, thumbprint, dates,
  whether it is this instance's). No key material is returned.

Frontend:
- Certificate step: clearer copy, a collapsed "Certificate details" panel
  with an Open in Entra button and a table of registered credentials
  (this instance sorted first, refreshable), a Renew certificate action,
  and status polling after renew while Graph catches up.

Tests cover the enable gate on both entrypoints, the probe helper, the
token self-heal, the drift env refresh and the status endpoint shape.

Synced from CyberDrain/CIPP@b4f930b
- A phase can use the full task timeout, so a poll no longer fails a run with no progress for 20 minutes

Synced from CyberDrain/CIPP@b87fbb3
Adds Email > Tools > Test Mail Flow Rules, plus a button in the message
viewer. It runs Exchange's Test-Message against the tenant's mail flow
rules (and optionally DLP), then reads the dropped message's trace to
show which rules applied, were not reached or are disabled. Exchange
also emails its report to the chosen mailbox. Recipient domains that
cannot take mail (no MX, null MX, NXDOMAIN) are refused up front.
New-ExoRequest keeps the error text when an innererror has no
internalException.

Closes #888

Synced from CyberDrain/CIPP@df6cab6
- Show an alert  on the CIPP API integration page and in the API client dialog when the MCP Server feature flag is disabled
- Return a JSON-RPC error from ExecMcp when the feature is disabled

Synced from CyberDrain/CIPP@5b98c4a
Logbook enhancements:
- Backend: filter log entries by IP (substring match) and AppId (exact match).
- Frontend: Logbook page now defaults to all tenants (with opt-in tenant limit switch), adds message search, IP/App ID filters, quick date range buttons (Today/2d/7d/30d), and persists applied filters in the URL query so views can be bookmarked/shared.
- Adds/updates tests for the new backend filters and the overhauled Logbook filter UI.
- Updates Logbook documentation to describe the new filters, defaults, and shareable URL behavior.

Synced from CyberDrain/CIPP@f6489af
…equires

- record each option's required settings in the backend catalog and definition index
- run catalog checks when a template is added or its payload is edited

Synced from CyberDrain/CIPP@6643737
…show per-library progress

- Re-queue a library for as long as it saves pages; one that saved none in a round stops with its rows, position and dropped-read tally kept, and the next scan resumes it or rescans it in full if the position is rejected
- Stamp rows with the scan that started their pass so a pass spanning scans sweeps only what it did not rewrite
- Treat 503 and 504 like throttling, and report libraries a scan stopped part way on the sharing report
- Record each library's SharePoint item count, OneDrives included, and its items seen, returned by ListSharePointSharing with ScanStatusOnly
- Show each round's phase and each library's progress in the sync status, with finished libraries collapsed, and track only a running scan's queue
- Describe the sharing-links endpoints against the cached sharing links

Synced from CyberDrain/CIPP@94e6261
Fix: Rewrite help text for Planner task deletion standard

Synced from CyberDrain/CIPP@f2763d5
…end/dev/stylis-4.4.0

chore(deps): bump stylis from 4.2.0 to 4.4.0 in /frontend

Synced from CyberDrain/CIPP@d790368
Feat: Expand side nav sections on route change

Synced from CyberDrain/CIPP@fedad34
- keep the newest caps.directoryActions (5000) of the app's actions, read as a stream
- bound the events read past other apps of the same name

Synced from CyberDrain/CIPP@a9f9c3b
fix(dashboard): link Managed tile to Intune devices and Guests tile to filtered users

Synced from CyberDrain/CIPP@fbb7e0a
…-site-access

feat(sharepoint): per-site guest expiration, extend and remove from site

Synced from CyberDrain/CIPP@2628050
fix(standards): let the MDE connector standard control the Defender attach setting

Synced from CyberDrain/CIPP@7c7b9ff
fix(reports): show unknown instead of a negative when sign-in or MFA enforcement data is missing

Synced from CyberDrain/CIPP@ccd2b1f
feat: add alert for pending self-service license requests

Synced from CyberDrain/CIPP@d5e4739
- Read CIPP_TIMEZONE via GetEnvironmentVariable
- Move the test to Tests/ActivityTriggers and drop the unused -UFormat mock branch
- Drop the notification timing docs section

Synced from CyberDrain/CIPP@2214609
Add HideLicenseFull/HideLicenseNearFull options to suppress fully or nearly-full license warnings in the Hudu Magic Dash attention items, configurable via new Extensions.json switches and tested.

Synced from CyberDrain/CIPP@c444aa9
fix(users): turn on remove all licenses when the last license is removed

Synced from CyberDrain/CIPP@0de26ab
Graph can take a few seconds to reflect added/removed app credentials, so refetch the app data again after short delays (4s, 12s) instead of relying on a single immediate refetch. Timers are cleared on unmount and before each new refresh.

Synced from CyberDrain/CIPP@edf1f5d
SkipCache only bypassed the report cache, so edits to credentials/URIs/audience could still be masked by a stale response cache entry. Add InvalidateCIPPCache: true to force a fresh fetch.

Synced from CyberDrain/CIPP@624b769
- retries Graph's concurrent-requests error

- returns 207/500 when a removal fails

Synced from CyberDrain/CIPP@e997c31
Import handler closures were memoised with a stale `forceImport` value, so toggling the switch and importing immediately could send the previous state. Read the current value through `forceImportRef` instead, and add a regression test covering the first import click after toggling.

Synced from CyberDrain/CIPP@0f30c09
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants