Releases: adamgell/IntuneCommander
Release list
v0.5.0.0
What's Changed
- chore(deps): bump picomatch from 4.0.3 to 4.0.4 in /intune-commander-react in the npm_and_yarn group across 1 directory by @dependabot[bot] in #206
- fix: align installer package metadata and versioning by @adamgell in #201
- chore(deps): bump yaml from 1.10.2 to 1.10.3 in /intune-commander-react in the npm_and_yarn group across 1 directory by @dependabot[bot] in #207
- feat: add Vitest frontend tests — all 25 stores covered (263 tests) by @adamgell in #213
- feat: settings-only diff with friendly names and navigation in Policy Comparison by @adamgell in #212
- fix: hide membership rule column when Assigned filter is active by @adamgell in #210
- fix: eliminate white flash on login screen in dark mode by @adamgell in #209
- feat: wire Drift Detection, Export/Import, and Tenant Admin workspaces by @adamgell in #211
- chore: update OIB baselines by @github-actions[bot] in #214
- fix: Conditional Access state mapping, filter, and export buttons (#205) by @adamgell in #215
- chore: bump version to 0.5.0.0 by @adamgell in #216
New Contributors
- @dependabot[bot] made their first contribution in #206
Full Changelog: v0.4.7.0...v0.5.0.0
v0.4.7.0
Biggest UI expansion to date — 16 new React workspaces, a new top-level Admin tab, and full Application management coverage. Over 13,000 lines of new code across 100+ files.
Workspaces
- Groups workspace (
Admin > Groups) — full list + detail view of Entra ID groups used by your Intune tenant. DataGrid with type filter chips (All, Dynamic Device, Dynamic User, Assigned), detail panel with group properties, dynamic membership rule viewer, members table with user/device/group type icons, and Intune assignments table. Backend fetches member counts, members list, and assignments in parallel viaTask.WhenAll; detail cached with 1-hour TTL. - Security Posture workspace (
Security > Security Posture) — tenant-wide security overview with animated circular score ring (0–100), score breakdown by category with progress bars, stat cards for CA Policies/Compliance/Endpoint Security/App Protection/Auth Strengths/Named Locations, security gaps with severity-colored cards, and policy summary tables. - Assignment Explorer workspace (
Operations > Assignment Explorer) — cross-tenant assignment analysis with six report modes (All Policies, Group Lookup, All Users, All Devices, Unassigned Policies, Empty Groups), group search with autocomplete, dynamic policy type filter chips, and paginated results. - Policy Comparison workspace (
Operations > Policy Diff) — side-by-side JSON diff of any two policies within the same category using the Monaco diff editor with syntax highlighting and normalized JSON. - Applications workspace (
Applications > Applications) — app gallery with enhanced detail panel showing categories, superseded app count, information/privacy URLs, install context, and filter/filterMode on assignment entries. - Conditional Access workspace (
Security > Conditional Access) — policy list with detail panel showing conditions, grant controls, session controls, and assignments. - Compliance Policy, Device Configuration, Endpoint Security, Enrollment, Scripts Hub workspaces — list + detail views for the remaining Intune object types.
Application sub-workspaces
- App Assignments (
Applications > Application Assignments) — flat, denormalized view of every app-to-group assignment across the tenant. Pre-resolves group names in parallel (5 concurrent). Uses 180-second timeout for large tenants. - Bulk App Assignments (
Applications > Bulk Assignment) — apply assignment changes to multiple apps at once. Bootstraps by loading all apps and assignment filters, validates targets, merges with existing assignments, and returns per-app success/failure counts. - App Protection Policies — list + detail view for iOS/Android MAM policies.
- Managed Device App Configurations — list + detail for managed device app configuration policies.
- Targeted Managed App Configurations — list + detail for MAM app configuration policies.
- VPP Tokens — list + detail for Apple Volume Purchase Program tokens.
Navigation
- Admin primary tab — new top-level tab with Tenant Admin and Groups sidebar items.
- Operations tab additions — Drift Detection and Export/Import sidebar items (placeholder workspaces).
- Two-tier secondary tab navigation — sidebar items that match secondary tabs trigger tab switches.
Infrastructure
- ApplicationDataMapper — extracted static helper handling 20+ Graph Beta
MobileAppsubtypes across Windows, iOS, Android, macOS, and Web. - DialogBridgeService — native OS file/folder/save picker dialogs bridged to React with UI thread marshaling and 5-minute timeout.
- ICacheService.GetSingle/SetSingle — new single-object cache API with async variants. NullCacheService updated.
- MonacoDiffViewer — reusable Monaco diff editor component with vs-dark theme, side-by-side rendering.
- Dynamic bridge command timeouts — three tiers: HEAVY (60s), LONG_RUNNING (180s), DIALOG (300s).
- Application assignment search integration — global search now includes app assignment matches.
- New unit tests — ApplicationServiceTests and GroupServiceTests.
Documentation
- Workspace expansion planning docs:
PLAN-react-workspaces.mdandREMAINING-WORK.md. - New user guide pages: Groups Workspace, Application Workspaces, Policy Comparison.
Intune Commander 0.4.6.2 - Installer reliability and ARM64 support
This release focuses on making installation and first launch much more reliable, especially on ARM64 systems. The desktop app now loads correctly from installer builds, and both x64 and ARM64 MSI/MSIX packages are published for the same release.
It also includes better startup behavior when another copy of Intune Commander is already running. Instead of crashing on a locked cache database, the app now falls back safely and shows a clear warning so you know what happened.
The installer pipeline was also simplified and hardened, which should make future releases easier to build and easier to trust.
v0.4.0
What's Changed
- Wave 7 (remaining): ADMX Files, Reusable Policy Settings, Notification Templates by @Copilot in #84
- Wave 11: Settings Catalog export/import, role assignments listing, CSV exports for high-value categories by @Copilot in #89
- Wave 12 P0: Add missing detail panes for DeviceManagementScript, DeviceShellScript, and ComplianceScript by @Copilot in #90
- Wave 8: Quality Update and Driver Update Profile Services by @Copilot in #85
- Wave 10: Cloud PC, VPP Tokens, and Role Assignments by @Copilot in #87
- feat: Wave 9 – AppleDepService, DeviceCategoryService + Desktop wiring by @Copilot in #86
- test: expand coverage to 1003 tests + fix four latent bugs by @adamgell in #93
- Fix cross-platform filename sanitization in ExportService by @Copilot in #94
- feat: Enhance MainWindowViewModel with additional properties and meth… by @adamgell in #96
- feat: permission check service, API page-size fixes, and permissions UI by @adamgell in #99
- feat: add GitHub Pages boilerplate website for intunecommander.com by @Copilot in #101
- Add real logo and app screenshot to website by @Copilot in #102
- UI: Replace accordion sidebar with flat section-header nav + redesign overview dashboard by @Copilot in #107
- Fix SettingsCatalogService: catch ApiException instead of ODataError for HTTP 500 retry by @Copilot in #109
- UI changes by @adamgell in #106
- docs: address MkDocs review feedback — pin deps, fix build-breaking config, improve content by @Copilot in #114
- docs: set up MkDocs documentation site at /docs/ [P2] by @adamgell in #112
- fix: unwrap inner exceptions in FormatGraphError for clearer auth errors by @adamgell in #111
- docs: clarify Syncfusion license key is not a secret credential by @Copilot in #117
- docs: split app-registration permissions by auth method, use Entra ID naming by @Copilot in #118
- feat: bake Syncfusion license key into released binary at build time and mkdoc edits for clarity by @adamgell in #116
- fixed markdown files by @adamgell in #119
- [WIP] Revert commit dbd0edb by @Copilot in #123
- fix(tests): add Assert.NotNull guards before null-forgiven variable access in ImportServiceTests by @Copilot in #122
- feat(tests): add NSubstitute 5.3 and replace hand-rolled stubs by @adamgell in #120
- Feature/ui-ux-login-redesign by @adamgell in #130
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's Changed
- Split service implementation plan into 5 wave tracking documents by @Copilot in #12
- Add Wave 1 service unit tests and fix SDK version by @Copilot in #14
- test(auth): add null and whitespace ClientSecret validation coverage by @Copilot in #18
- refactor(auth): remove deferred Certificate/ManagedIdentity auth options [P1] by @adamgell in #15
- docs: align encryption decision with DataProtection implementation by @Copilot in #23
- docs: correct dependency management section in ARCHITECTURE.md by @Copilot in #22
- docs: reconcile README and ARCHITECTURE.md with current implementation [P2] by @adamgell in #16
- docs: establish PR organization system and contribution standards by @Copilot in #24
- Remove cache-read from CategoryLoadHelper.ExecuteAsync to align with existing pattern by @Copilot in #26
- Add FormatError callback to CategoryLoadContext for consistent ODataError handling by @Copilot in #21
- Fix inconsistent status message casing in CategoryLoadHelper by @Copilot in #27
- feat(arch): add ICategoryLoader abstraction as a category-loading guardrail [P3] by @adamgell in #17
- bring p1 and p2 changes into p3 base for claude later by @adamgell in #28
- refactor(desktop): split MainWindowViewModel into focused partial classes by @Copilot in #30
- refactor(desktop): split MainWindowViewModel into focused partial classes by @adamgell in #29
- refactor: extract generic loader helpers and fix Graph \ issues by @adamgell in #31
- Complete CA PowerPoint export implementation (Phases 1-6) - Security reviewed by @Copilot in #33
- fix: handle null PATCH responses and stabilize integration tests by @adamgell in #37
- feat: add profile import from JSON file by @adamgell in #38
- feat: multi-platform auth — add DeviceCode flow + cross-platform token cache by @Copilot in #39
- Phase 1: Rename solution/projects/namespaces (IntuneManager → Intune.Commander) by @adamgell in #46
- docs: fix runtime storage paths, project filenames, and rename scope wording by @Copilot in #49
- Phase 2: Update CI/workflows/scripts/docs for Intune.Commander rename by @adamgell in #48
- Phase 3: Fix review comments — exception narrowing, disposal safety, robust key migration by @Copilot in #51
- Phase 3: Runtime storage migration (IntuneManager → Intune.Commander) by @adamgell in #50
- Phase 4: Cleanup — remove remaining active IntuneManager references by @adamgell in #52
- Enhance debug log viewer with filtering, grouping, export, and hotkey by @codex in #40
- fix: resolve three bugs found in code review by @adamgell in #53
- feat: add runtime UI theme switching (Fluent / Classic.Avalonia) by @Copilot in #56
- fix: Add assignment support to DeviceManagementScript and DeviceShellScript export/import by @Copilot in #57
- fix: wire assignment loading for script selection handlers + add Export/Import tests by @Copilot in #59
- fix: resolve merge conflicts by porting theme switching to Intune.Commander.Desktop paths by @Copilot in #58
- feat: rebase runtime theme switching onto latest main by @Copilot in #61
- fix: resolve CI build failures in script service test stubs and method signatures by @Copilot in #60
- feat: Add script service types (DeviceManagementScript, DeviceShellScript, ComplianceScript) by @adamgell in #55
- feat: add runtime UI theme switching (Fluent / Classic.Avalonia) by @Copilot in #62
- feat: add runtime UI theme switching (Fluent / Classic.Avalonia) by @adamgell in #54
- fix: restore Classic theme text and control rendering by @adamgell in #63
- Fix XAML comment accuracy and thread-safe device code UI updates by @Copilot in #65
- Add IntuneAssignmentChecker as git submodule by @Copilot in #66
- Improves user authentication experience by @adamgell in #64
- Add UserService unit tests for DownloadAllToCache feature by @Copilot in #75
- feat: Add DownloadAllToCache command with button + progress bar (#68,… by @adamgell in #74
- fix: resolve merge conflict in UserService.ListUsersAsync by @Copilot in #78
- Phase 3: add ListUsersAsync with paginated Graph listing by @adamgell in #77
- Fix assignment report: user search reliability, device wildcard lookup, parallel group compare, and parallel policy scanning by @Copilot in #67
New Contributors
Full Changelog: v0.2.0-alpha4...v0.3.0
v0.2.0-alpha4
Changelog
All notable changes to this project are documented in this file.
[2026-02-18 Release]
Added
- Added new Graph-backed services and interfaces for:
- Conditional Access Policies (
IConditionalAccessPolicyService,ConditionalAccessPolicyService) - Assignment Filters (
IAssignmentFilterService,AssignmentFilterService) - Policy Sets (
IPolicySetService,PolicySetService)
- Conditional Access Policies (
- Added manual
@odata.nextLinkpagination patterns to newly introduced list operations. - Added new navigation categories and table wiring for:
- Conditional Access
- Assignment Filters
- Policy Sets
- Added dedicated detail-pane sections for the new categories in the desktop UI.
- Added cache-first support for the new categories, including:
- cache keys
- lazy load flags
- cache restore on connect
- cache persistence on successful loads
- Added asynchronous lazy loading for the new categories when navigating to their tabs.
- Added
HumanDateTimeConverterand applied it to detail-pane timestamp displays. - Added Graph endpoint audit artifacts:
docs/graph-uri-inventory.csvdocs/GRAPH_URI_AUDIT.md
- Added
Micke-K/IntuneManagementas a Git submodule for endpoint parity and reference.
Changed
- Rebranded product/user-facing naming to Intune Commander across app surfaces and documentation.
- Updated assembly metadata (
AssemblyTitle,Product) to Intune Commander. - Updated repository URL references to the renamed remote.
- Improved dark/light theme behavior by moving hardcoded UI text/error colors to dynamic theme brushes.
- Tuned left navigation text color for dark mode readability with a dedicated nav text brush.
- Expanded
MainWindowViewModelcategory refresh/filter/selection flows to include new service categories. - Updated connection flow to use cache-first behavior for expanded cached dataset coverage.
- Updated refresh behavior to keep new categories lazy (load on selected tab) instead of always eagerly fetching.
Fixed
- Fixed right-pane “no selection” placeholder logic to account for newly added selection types.
- Fixed XAML issues introduced during detail card expansion:
- invalid
WrapPanelsize setting (ItemWidth="Auto") - invalid
PolicySetproperty binding
- invalid
- Resolved startup/runtime XAML load instability by correcting compile-time XAML errors and validating clean rebuilds.
- Fixed build regressions caused by temporary method-placement/bracing conflicts in
MainWindowViewModel.
UX Improvements
- Improved readability of secondary text and error text in dark theme.
- Enhanced new detail cards with richer metadata:
- Conditional Access: state, timestamps, control indicators
- Policy Sets: item count, timestamps
- Standardized detail-pane timestamp formatting to human-readable local time.
Documentation
- Updated branding and links in key project docs (
README.md,CLAUDE.md, planning docs, and Copilot instructions). - Documented Graph URI inventory and service expansion mapping.
Build & Validation
- Verified successful desktop project builds after each major implementation wave.
- Validated no remaining compile diagnostics for impacted files at release cut.