Files
disco-ad-compare-plugin/.claude-context/00-overview.md
T

1.7 KiB

Disco AD Compare Plugin — Project Overview

Purpose

A Disco ICT plugin that compares the Active Directory managedBy attribute on computer objects against the Disco AssignedUserId, reporting mismatches. Also provides AD details (last login, account status) on device and user pages via UIExtension features.

Architecture

  • C# .NET Framework 4.5 class library compiled with .NET Framework MSBuild v4.0
  • C# 5 syntax only — no modern C# features (server has no VS/Roslyn)
  • Plugin system: extends Plugin, PluginWebHandler, PluginConfigurationHandler, UIExtensionFeature<T>
  • Build toolchain: PowerShell script (Build-Plugin.ps1) that resolves assembly refs from Disco install bin, compiles, generates manifest, packages as .discoPlugin (zip renamed)
  • No external dependencies — all refs come from Disco's own WebApp\bin

Key Components

Component Purpose
DeviceCompareService DN-to-DN comparison engine, filters invalid devices
ADCompareWebHandler Server-side rendered dashboard + CSV export
DeviceUIExtension Device page panel (managedBy match, last login)
UserUIExtension User page panel (last login, AD status, OU)
ADCompareConfigurationHandler Required config handler with WebViewPage

Current State

  • Working: Comparison dashboard, CSV export, DN comparison logic, build pipeline
  • Not working: UIExtension panels on device/user pages (features initialize without errors but HTML doesn't render — needs investigation)

Session Log

  • 2026-04-28 — Initial build and iteration — Built plugin from scratch, resolved C#5/MSBuild constraints, fixed DN comparison, got dashboard working, UIExtension rendering still unresolved