Backports PepperDash/Essentials#1439 (merged to main at 6ceddcf5) onto
dev/v3-routing (v3.0.0-dev-v3-routing.40):
- New GET /packageManifest CWS route reporting Essentials/plugin/touchpanel
UI package version info (GetPackageManifestRequestHandler).
- EssentialsConfig.Versions now round-trips via [JsonProperty("versions")].
- ConfigReader now detects v1 vs v2 config by presence of system/template
nodes (previously any versions node caused the v1->v2 merge to be
skipped), and re-applies the versions node after merge since
PortalConfigReader.MergeConfigs does not carry it forward.
- Mobile control: track and validate UI client app versions
(ConnectedClientVersionInfo, MobileControlSystemController changes merged
cleanly from the PR).
- Directory.Build.props: adds PackageId AssemblyMetadata item (kept this
branch's 3.0.0-local version).
Conflict resolution notes:
- This branch had already introduced its own AppVersion type (Version +
RepoUrl only) for TouchpanelWrapperApp/UserInterfaces. Replaced it with
the PR's unified NugetVersion (adds PackageId/RepoUrl/Name, all
NullValueHandling.Ignore) to match main's schema, since AppVersion had
no other references in the codebase.
- ConfigReader.LoadConfig on this branch had already fixed a double
Stream.ReadToEnd() bug (reading fileContents once); kept that fix and
layered the PR's v1/v2 detection fix + versions-node preservation on
top of it, plus this branch's null-ConfigObject-after-merge guard.
- EssentialsWebApi.SetupRoutes: inserted the new packageManifest route
into this branch's existing (longer) route list, which already
includes routing-specific endpoints not present on main.
Builds clean (dotnet build on the full solution, 0 errors).
Not pushed - pending local hardware/config testing before push.
In order to provide some backwards compatibility for internal things,
cpz & cplz files are being added to the nuget packages. The files
are added in the `content` folder.
All files necessary for loading to a processor will be copied to the
`/output` folder at the root fo the repository. This includes the
Essentials cpz, along with cplz files for the Devices Common,
DM, and Core projects.