Skip to content

Releases: RobinMJD/QuickPIM-PlusPlus

QuickPIM++ v2.18.14

Choose a tag to compare

@github-actions github-actions released this 02 Oct 13:21

Full Changelog: v2.18.13...v2.18.14

QuickPIM++ v2.18.13

Choose a tag to compare

@github-actions github-actions released this 08 Sep 19:47

Fixes scoped Entra role activation when the optional validation check reports that the role assignment already exists. The same role can be activated at the tenant and administrative-unit scopes in either order, including multiple administrative units.

QuickPIM++ now submits the unchanged requested scope once after an explicit validation-only duplicate response. Microsoft still enforces eligibility, MFA, approval, and genuine same-scope duplicate rules on the actual request. Actual failures and uncertain write outcomes are never converted into success or retried by this fallback.

Regression coverage includes localized service codes, both activation orders, independent scope selection and locks, scope-specific tracking, pending approvals, and rejected or ambiguous writes.

QuickPIM++ v2.18.12

Choose a tag to compare

@github-actions github-actions released this 19 Aug 19:34

Extension lifecycle and approval\n\n- Preserve Microsoft approval-required extension states instead of reporting them as already scheduled.\n- Prevent duplicate extension requests while approval or scheduling is already in progress.\n- Show approval-aware wording in Activity and desktop notifications, including approved, denied, failed, and canceled outcomes.\n- Keep expiry reminders informational while an extension is awaiting approval or already scheduled.\n- Reconcile active-role rows at the Microsoft end time and refresh only the affected role source.\n- Fix duplicate Microsoft Edge notification actions and clear the original reminder after an action.\n- Release stale extension locks when Microsoft never exposes an accepted continuation, while keeping real pending approvals protected.\n\nFull changelog: v2.18.10...v2.18.12

QuickPIM++ v2.18.10

Choose a tag to compare

@github-actions github-actions released this 18 Aug 22:48

v2.18.10

Release safety

  • Blocks every publication job unless the tagged commit is on main and the exact same commit already has a completed, successful CI run.
  • Keeps GitHub release creation, Chrome Web Store submission, and Microsoft Edge Add-ons submission downstream of the full package verification job.
  • Fails closed for missing, failed, cancelled, skipped, timed-out, or otherwise non-successful CI results.

Store publication

  • Adds Chrome Web Store status checks and replacement of an older active review or staged submission before uploading the new version.
  • Makes same-version Chrome publication retries idempotent when that version is already pending review.
  • Documents the Microsoft Edge API boundary: Edge review cancellation remains a Partner Center action because the publishing API has no cancellation endpoint.

Verification

  • Adds focused tests for the exact-commit CI gate and Chrome submission replacement behavior.
  • Revalidates version synchronization, Edge compatibility, type checking, 579 unit tests, dependency audit, production build, browser visual checks, and Store ZIP integrity.

Compare changes

QuickPIM++ v2.18.9

Choose a tag to compare

@github-actions github-actions released this 18 Aug 22:03

Access recovery consistency

  • Reloads the persisted capability cache after Settings hydration and pending autosaves complete.
  • Prevents Open missing portal pages from opening unnecessary Microsoft tabs when a valid token and fresh capability cache are already available.
  • Makes Recheck now evaluate the same current cache snapshot instead of a stale render-time value.

Verification

  • 46 Vitest files and 574 tests passed, including repeated execution of the timing-sensitive portal-rescan scenario.
  • Type checking, production build, Microsoft Edge compatibility and sideload smoke tests passed.
  • All 8 Playwright popup and Settings flows passed.
  • Dependency audit reported zero known vulnerabilities.

QuickPIM++ v2.18.8

Choose a tag to compare

@github-actions github-actions released this 18 Aug 21:54

Full Changelog: v2.18.2...v2.18.8

QuickPIM++ v2.18.2

Choose a tag to compare

@github-actions github-actions released this 17 Aug 10:21

Access and activation recovery

  • Restores tenant identity on older cached role records and verifies both the Microsoft principal and tenant before privileged writes.
  • Requires a genuinely refreshed target token after a portal-access failure, closes stale managed recovery tabs, and preserves the selected roles and activation inputs while recovery runs.
  • Separates claims/MFA challenges from ordinary missing-scope recovery, with clearer guidance and bounded foregrounding of the Microsoft prompt when interaction is required.

Browser Sync reliability

  • Batches snapshot chunks and coalesces rapid local or remote changes to stay within Chrome and Edge sync-write budgets.
  • Reduces installation heartbeat writes and adds a persisted cooldown with automatic retry when the browser temporarily enforces its write-rate quota.
  • Replaces raw quota errors with a friendly status and next-retry time while keeping local data authoritative.
  • Keeps the installation-name field focused and editable while its autosave is running.

Validation

  • 522 unit tests across 44 files.
  • 8 Playwright browser flows.
  • TypeScript, production build, dependency audit, version synchronization, Edge compatibility, and Store-package verification passed.

Full changelog: v2.18.0...v2.18.2

QuickPIM++ v2.18.0

Choose a tag to compare

@github-actions github-actions released this 15 Aug 04:53

v2.18.0

This release completes a broad lifecycle, concurrency, recovery, and distribution hardening pass.

Request reliability

  • Made activation and deactivation operations durable across popup closure, service-worker suspension, and browser restart.
  • Added per-item checkpoints so accepted or uncertain Microsoft requests are reconciled instead of blindly resent.
  • Prevented duplicate, conflicting, ambiguous, or cross-tenant result identities from targeting or clearing the wrong role.
  • Preserved successful Microsoft writes when a later cache refresh or local tracking step fails.

Access and performance

  • Hardened portal-token capture, tenant/principal matching, managed recovery tabs, authentication handoff, and target-specific diagnostics.
  • Kept partial Entra, PIM Group, and Azure results usable when another source or optional enrichment fails.
  • Added cancellation and bounded retries for timed-out Microsoft reads while preserving valid cached data.
  • Serialized progressive cache writes so slower source completions cannot overwrite newer snapshots.

Sync, settings, and notifications

  • Strengthened Browser Sync generation validation, quota accounting, concurrent merge behavior, purge/resume tombstones, and stale-device handling.
  • Made settings mutations, backup restore, tracked-request restore, and reset recovery atomic across extension contexts.
  • Improved expiry-reminder scheduling, permission recovery, missed-alarm catch-up, delivery backoff, and diagnostics.
  • Added bounded retention and sanitization across history, references, operations, request records, and imported backups.

Popup and distribution

  • Prevented rapid mixed-mode selections, permanently stuck operation polling, stale quiet-refresh errors, and duplicate result counting.
  • Made build metadata and Store packages reproducible within a build environment.
  • Added manifest/HTML asset validation, package-content allowlisting, broader Edge API compatibility detection, and bounded Store API timeouts.
  • Continued shipping one verified Manifest V3 archive to Chrome Web Store and Microsoft Edge Add-ons.

Verification

  • 514 unit and component tests across 44 files.
  • 8 Playwright interaction and layout flows.
  • TypeScript, production build, dependency audit, Edge compatibility, Edge sideload smoke, deterministic package repeat, and dual-Store release workflows passed.

Full changelog: v2.17.4...v2.18.0

QuickPIM++ v2.17.4

Choose a tag to compare

@github-actions github-actions released this 13 Aug 10:48

v2.17.4

  • Stabilized the Browser Sync UI regression test by waiting for the actual interactive control instead of treating a started background call as proof that React had rendered it.
  • Decoupled shared Chromium Store packaging tests from the current app version, preventing stale hard-coded assertions from blocking future releases.

v2.17.3

  • Queued Settings refresh requests made during initial page hydration so early clicks are no longer lost on slower computers or CI runners.
  • Serialized eligible-item refreshes, access rechecks, and pending preference saves so concurrent Settings actions cannot overwrite or interleave one another.
  • Prevented duplicate Access Setup and portal recheck operations while preserving the final recovery status before controls become available again.
  • Added deterministic delayed-hydration regression coverage and repeated stress verification for the Settings startup path.

v2.17.2

  • Hardened background activation and deactivation operations so popup closure, worker restarts, and repeated messages do not create duplicate privileged-access requests.
  • Improved operation journaling, request identifiers, retry handling, token freshness checks, and recovery from interrupted background work.
  • Serialized Browser Sync, request tracking, portal-token refresh, and background pre-refresh follow-up work to avoid stale or overlapping results.
  • Strengthened reset handling around in-flight work and synchronized cleanup.
  • Refined Browser Sync controls and installation layout for clearer state and more consistent spacing.

This release includes all changes since v2.17.0 because v2.17.2 and v2.17.3 were stopped by release verification before Store publication.

QuickPIM++ v2.17.0

Choose a tag to compare

@github-actions github-actions released this 12 Aug 23:33

QuickPIM++ v2.17.0 - Reliable multi-device sync

Browser Sync consistency

  • Added validated atomic snapshot generations so partially delivered, corrupt, stale, or unsupported cloud data is never applied.
  • Added field-aware reconciliation for preferences, enabled tabs, aliases, favorites, saved reasons, bundles, activity, and per-installation usage counters.
  • Preserved concurrent edits from multiple computers without double-counting activity or silently restoring deleted values.
  • Delayed generation acknowledgement until cloud read-back, allowing competing last-writer updates to reconcile on the next pass.
  • Accounted for the browser sync service's real JSON storage usage and retained complete local categories when a bounded cloud snapshot must be truncated.

Recovery and data integrity

  • Split cloud purge and resume state into independent monotonic markers, rejected stale snapshot epochs, and prevented older installations from recreating purged data.
  • Retired stale installation records while preserving active device names and source attribution.
  • Coalesced duplicate background synchronization, retried transient sync delivery errors, and kept Settings usable when the browser sync service is temporarily unavailable.
  • Canonicalized role identifiers across aliases, favorites, usage, activity, restored selections, and request fingerprints.
  • Hardened request recovery, token refresh coordination, partial Azure scope results, timestamps, and bounded imported or synchronized collections.

Verification

  • 467 automated unit and integration tests passed.
  • Type checking, production build, eight browser UI checks, Microsoft Edge compatibility, and Edge sideload smoke passed.
  • Dependency audit reported zero known vulnerabilities.
  • Chrome Web Store and Microsoft Edge Add-ons received the same verified Chromium package.

Full comparison: v2.16.5...v2.17.0