junction/src/Junction.Core
dtrentin 53ce8ab4da feat: per-machine data-item selection (v0.3)
Users pick which data items each machine monitors. Catalog comes from the
protocol probe; selection is opt-in and filters persistence (only selected
items are read/kept/saved). Whole solution green, 138 tests + 2 docker integration.

Domain:
- Machine.MonitoredItemIds (opt-in, empty = monitor nothing); backward-compatible
  optional ctor param + With override.
- DataItemDescriptor (protocol-agnostic catalog entry).
- IProtocolDriver.ProbeAsync → full unfiltered item catalog.

MTConnect:
- MtconnectDriver.ProbeAsync (GET /probe → parser → descriptors).
- ReadCurrentAsync filters snapshot items to selected ids (ConnectionState
  preserved); factory passes selection into driver.

Persistence:
- machines.MonitoredItemIdsJson column + idempotent ALTER-if-missing migration.
- Repository maps selection (System.Text.Json); round-tripped.

Core:
- IMachineMonitor.ProbeAsync(machine) exposes catalog to the UI via the plugin
  factory.

App:
- Config: "Load items" probes the machine, shows a checklist (select all/none),
  pre-selects existing choices in edit mode, offline fallback, saves selection.
- Detail: empty-state hint when a machine has no monitored items.

PAUL: v0.3 Phase 3 shipped; Phase 3.1 (theming/UX) next.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 00:28:47 +02:00
..
Monitoring feat: per-machine data-item selection (v0.3) 2026-07-22 00:28:47 +02:00
Plugins init: scaffold Junction multi-protocol machine monitor (M1 walking skeleton) 2026-07-21 23:32:56 +02:00
Polling feat: machine management UX + PAUL init (v0.2) 2026-07-21 23:55:10 +02:00
Junction.Core.csproj init: scaffold Junction multi-protocol machine monitor (M1 walking skeleton) 2026-07-21 23:32:56 +02:00
ServiceCollectionExtensions.cs init: scaffold Junction multi-protocol machine monitor (M1 walking skeleton) 2026-07-21 23:32:56 +02:00