v2.2.1
Highlights
- Added server-side Hub branding configuration (
HubOptionsinappsettings.json) covering logo, app name, icon, favicon/manifest, and UI feature toggles, applied at runtime without rebuilding Hub. - Registry now auto-upgrades the embedded Hub only when the bundled version exceeds the on-disk version, avoiding unnecessary re-extractions on every startup.
- [Hub] Added an update notice dialog shown after a Hub upgrade, listing component versions (Hub, Registry, DroneDB) with links to their release pages.
Added / Changed
- Added
HubOptionsconfiguration block inappsettings.jsonto customize app logo, name, icon, favicon/manifest, and UI feature flags (ShowRegistrationLink,DisableDatasetCreation,DisableStorageInfo,DisableAccountManagement,SingleOrganization,ReadOnlyOrgs). - Added
/branding/static route serving{StoragePath}/branding/for user-supplied logos, favicons, and manifests; the folder is preserved across Hub upgrades. - Extended
GET /sys/featuresto returnHubVersion,RegistryVersion, andDdbVersionalongside existing feature flags. - Made
GET /sys/featuresanonymous so branding and feature flags are available on the login page without authentication. - Added Hub version-aware upgrade logic via
HubVersionComparer: the embedded Hub is re-extracted only when its version exceeds the on-disk version; a missing or unparseable on-disk version always triggers an upgrade. - Restricted Hub extraction to webserver instances only; worker nodes (processing node, thumbnail generator) skip Hub deployment to avoid races on a shared storage folder during upgrades.
- Added
Cache-Control: no-cache, no-store, must-revalidateonindex.htmlresponses so browsers fetch a new Hub build after a server-side upgrade. - Hub version is now stamped into
ClientApp.zipat build time frompackage.jsonand written toversion.txtinside the archive. - Added
HubVersionComparerandHubInfoservices with unit tests (HubVersionComparerTest). - [Hub] Added
hubBranding.jsto applyHubOptionsfrom/sys/featuresat runtime, populatingwindow.HubOptions, the document title, and favicon/manifest link tags; branding is applied before login. - [Hub] Added
hubUpdateChecker.jsto detect version mismatches between the running bundle and the server-reported Hub version, forcing a hard reload on mismatch with a per-session loop guard. - [Hub] Header branding:
AppIconcan now be a URL or path (rendered as an<img>) in addition to a CSS icon class. - [Hub]
AppNameno longer falls back to "DroneDB" when unset; the logo banner takes precedence when no explicit app name is configured.
Fixed
- [Hub] Fixed embed-mode navigation crash (
TypeError: Cannot read properties of null (reading '__vccOpts')) caused by passingnullas a named-view component in vue-router 4.6+. - [Hub] Fixed map image popup showing a broken Semantic UI icon (
external alternate), replaced withfa-solid fa-image.
Merged PRs
Full Changelog: v2.2.0...v2.2.1