New GET https://{ip}/cws/app{xx}/api/packageManifest route returning a JSON
package manifest (Essentials + plugins + user interfaces) shaped to hydrate
the vsce-essentials-version-manager extension's VersionsSnapshot object.
- EssentialsConfig.cs: add [JsonProperty("versions")] to EssentialsConfig.Versions
(was attribute-less); add NugetVersion.Name; NullValueHandling.Ignore on
PackageId/RepoUrl/Name.
- New GetPackageManifestRequestHandler: deep-copies the config's VersionData
(never mutates the live config object), then enriches it via reflection:
- essentials: version from Global.AssemblyVersion, repoUrl/name from the
RepositoryUrl AssemblyMetadata + AssemblyProduct of
PepperDash.Essentials.Core's own assembly (PluginLoader.EssentialsAssembly.Assembly
is null at runtime due to a pre-existing name-matching bug, so this route
reads its own loaded assembly instead), packageId from config or a constant.
- packages[]: merges PluginLoader.EssentialsPluginAssemblies (matched to config
packages by packageId via AssemblyTitle -> AssemblyName -> AssemblyName minus
a trailing .4Series suffix) with reflection supplying version and filling
missing repoUrl/name; unmatched loaded assemblies are emitted without a
packageId; configured-but-not-loaded packages pass through unchanged.
- userInterfaces/touchpanelWrapperApp are passed through from config as-is.
- Entries with no resolvable version are skipped (the extension's parser drops
entries whose version isn't a string).
- EssentialsWebApi.cs: register the new packageManifest route next to versions.
Build verified clean (Core + Essentials program, 0 errors). Not yet tested on
hardware.
Stream debugging now uses CrestronConsole instead of debug methods, so that the debug statements will be printed regardless of console debug level. This also means that comm debug statements will NOT be in the Crestron Error log or in the files created by the logging system
* changed path for DevJson to include the device key instead of requiring it in the body
* Made the `GetRequestBody` method an extension method for the `HttpCwsRequest` class