Commit graph

4207 commits

Author SHA1 Message Date
Neil Dorin
6852f47ce2 feat: add multiview layout support with new interface and state classes 2026-07-15 11:35:51 -06:00
Neil Dorin
f05a25c3e2 feat: update RoutingFeedbackManager to use ConcurrentDictionary for update timers to ensure thread safety 2026-07-14 21:47:52 -06:00
Neil Dorin
079f2beb8b feat: enhance routing graph handling for tile-sink children and add RoutingGraphHelpers utility class 2026-07-14 19:34:14 -06:00
Neil Dorin
7d1e0432cb feat: add IRoutingSinkWithLayouts interface to support layouts with multiple tile sinks 2026-07-13 12:26:57 -06:00
Neil Dorin
21995db550 feat: refactor FeedbackCollection and RoutingPortCollection to enforce unique keys and add AddRange method 2026-07-13 10:40:56 -06:00
Neil Dorin
dddb67317a
Merge pull request #1441 from PepperDash/feature/package-manifest-v3-routing-backport
Backport PR #1439: packageManifest CWS endpoint + v1/v2 config merge fix
2026-07-10 21:58:45 -06:00
Neil Dorin
3f8b97bff7 feat: add IHasDynamicMultiviewLayout interface and MultiviewParticipantSource class for dynamic layout support 2026-07-10 21:48:01 -06:00
jkdevito
4a366a5a51 fix: guard against empty Version in configured-but-not-loaded package passthrough
PopulatePackages' "configured but not currently loaded" pass-through could
still emit PackageVersion entries with a null/empty Version, reintroducing
the schema issue the loaded-reflection branch's own guard already prevents
(downstream parsers drop entries whose version isn't a string).
2026-07-10 13:03:28 -05:00
jkdevito
4631d3a537 refactor: replace client-reported UI app version tracking with disk-based check
Remove ConnectedClientVersionInfo and the per-client version dictionary in
MobileControlSystemController, which grew unbounded and depended on a UI
client connecting and self-reporting its APP_VERSION.

Add TouchpanelWrapperAppVersionChecker, which instead scans the deployed
mcUserApp files on disk for the configured versions.touchpanelWrapperApp
version string. This works without any client connected and doesn't
accumulate state. Wired into the mobileinfo console command output.
2026-07-10 12:25:43 -05:00
Neil Dorin
f0b546f97d feat: add custom logo URL feedback for light and dark backgrounds 2026-07-10 10:05:49 -06:00
jkdevito
e7406dbead ci(force-patch): increment patch by force 2026-07-10 09:51:23 -05:00
jkdevito
2d8e42f566 style: use file-scoped namespace in GetPackageManifestRequestHandler
Matches the convention used by the other request handlers in this
folder (ReportVersionsRequestHandler.cs, AppDebugRequestHandler.cs,
etc). Addresses PR #1441 review comment.
2026-07-10 09:37:29 -05:00
jkdevito
f0025ce56c Backport PR #1439: packageManifest CWS endpoint + v1/v2 config merge fix
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.
2026-07-10 09:37:29 -05:00
Neil Dorin
73bc50ef0d feat: update IP address retrieval logic to handle invalid values 2026-07-09 11:51:53 -06:00
Neil Dorin
f68e033850 feat(force-build): Rebuild with updated dev tools 2026-07-09 09:33:59 -06:00
Neil Dorin
d5432e489d feat: add USB camera input ports for enhanced multi-camera routing support 2026-07-08 15:51:53 -06:00
Neil Dorin
94837a60cf feat: update debounce timer logic to handle multiple input ports for a single sink 2026-07-08 15:37:14 -06:00
Neil Dorin
4ab4ee1680 feat: update directory contact name from "Corporate Bridge" to "Overflow" 2026-07-08 14:41:04 -06:00
Neil Dorin
122881100a feat: enhance MockVC to support participant management and add HDMI output port 2026-07-08 14:39:50 -06:00
Neil Dorin
34c82588f0 feat: add additional HDMI output ports to MockVC for enhanced routing capabilities 2026-07-07 15:10:08 -06:00
Neil Dorin
7de2aa7c2e feat: update directory contacts and enhance directory messaging to include current root directory 2026-07-07 14:57:23 -06:00
Neil Dorin
f3f7755735 feat: refine messenger factory to prevent conflicting state shapes for IDialerCallStatus and ICodecCallControls 2026-07-02 17:21:06 -06:00
Neil Dorin
d771320fff feat: refactor DeviceJsonApi parameter conversion and add MockRoutingMidpoint with configuration properties 2026-07-02 15:43:07 -06:00
Neil Dorin
9f18275f81 feat: update RoutingFeedbackManager to map downstream sink input ports and optimize performance in route updates 2026-07-02 10:53:51 -06:00
Neil Dorin
fb4ba8ccfa feat: enhance routing functionality with additional parameters in RouteDescriptor and update RouteDescriptorCollection for change notifications 2026-07-01 17:14:32 -06:00
Neil Dorin
4bb2917b69 feat: add RouteDescriptorCollectionChanged event to notify changes in route descriptors 2026-06-30 17:00:26 -06:00
Neil Dorin
aae41b5947 feat: refactor messaging interfaces and remove subscription support from IMobileControlMessengerWithSubscriptions 2026-06-26 15:53:51 -06:00
Neil Dorin
b945ecb470 feat: add Dial method with password support and implement ICodecCallControlsMessenger for call control messaging 2026-06-25 20:30:48 -06:00
Neil Dorin
8748157362 feat: enhance IHasDirectoryMessenger with new actions and state messaging for directory management
feat: update MobileControlConfig to enable messenger subscriptions by default
fix: improve HandleBatchDeviceFullStatus to support granular device status requests and enhance error handling
2026-06-25 11:46:27 -06:00
Neil Dorin
77c78af74b feat: add VideoMuteFb property to Participant class for video mute feedback 2026-06-24 22:29:31 -06:00
Neil Dorin
f7c3ed4b8b feat: add mobile control messengers for participant audio and video mute functionality 2026-06-24 22:28:40 -06:00
Neil Dorin
f4fe8eff90 feat: enhance routing and messaging logic with improved source handling and batch processing capabilities 2026-06-24 20:10:52 -06:00
Neil Dorin
a732c5e08e feat: enhance WebSocket services with HTTP GET handler for certificate confirmation and increase timeout for port forwarding 2026-06-23 16:08:42 -06:00
Neil Dorin
a18f7800d1 fix: improve port forwarding logic and error handling in RoutingFeedback session 2026-06-23 15:33:46 -06:00
Neil Dorin
00c7128778 Merge remote-tracking branch 'origin/fix/mobile-static-asset-mime-types' into dev/v3-routing 2026-06-23 15:33:34 -06:00
equinoy
b7b4b56cec fix(mobile-control): serve correct MIME types for app static assets
Use query-stripped file path for extension detection
Add content types for svg, png, jpg/jpeg, gif, webp, and ico
Keep existing html/js/css/json handling unchanged
2026-06-23 15:32:16 -05:00
Neil Dorin
a1d168c4ed feat: add HTTP GET handler to RoutingFeedbackWebSocket for client certificate confirmation 2026-06-22 22:48:16 -06:00
Neil Dorin
b65f895e06 feat: implement Routing Feedback WebSocket service and associated request handlers 2026-06-22 21:30:47 -06:00
Neil Dorin
be545bbfa4 fix: format constructor for IDeviceInfoProviderMessenger for improved readability 2026-06-18 16:41:47 -06:00
Neil Dorin
846fd711c5 fix: update namespace for ICourtSession interface to correct location 2026-06-18 10:57:17 -06:00
Neil Dorin
1588cc4667 feat: add ICourtSession interface for court session management and recording control 2026-06-18 10:37:25 -06:00
Neil Dorin
747b595b59 feat: add actions to accept and reject calls in IHasDialerMessenger 2026-06-17 22:25:38 -06:00
Neil Dorin
cff46532be feat: update Dial method to limit active calls based on maxCalls 2026-06-16 18:42:14 -06:00
Neil Dorin
0098673a5e feat: enhance audio codec phonebook functionality and messaging integration 2026-06-16 16:14:07 -06:00
Neil Dorin
c8faa19835 Merge remote-tracking branch 'origin/dev/v3-routing' into dev/v3-routing 2026-06-16 08:58:01 -06:00
Neil Dorin
fb0afc8c41 feat: implement DeviceActionMessenger for executing device actions via JSON API 2026-06-16 08:57:31 -06:00
Erik Meyer
27b3d9cf58 feat: updates IAudioCodecPhonebook interface 2026-06-15 13:46:32 -04:00
Neil Dorin
4403e91b79 fix: correct UserInterfaces type and initialize TouchpanelWrapperApp in VersionData constructor 2026-06-12 11:17:11 -06:00
Neil Dorin
1b2f86eb43 feat: add UserInterfaces and TouchpanelWrapperApp properties to VersionData class 2026-06-12 10:53:04 -06:00
Neil Dorin
2dd99da67f feat: implement IAudioCodecPhonebookMessenger for phonebook messaging functionality 2026-06-11 16:55:03 -06:00