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>
25 lines
470 B
JSON
25 lines
470 B
JSON
{
|
|
"name": "Junction",
|
|
"version": "0.3.0",
|
|
"milestone": {
|
|
"name": "Data-Item Selection + UX",
|
|
"version": "0.3.0",
|
|
"status": "in_progress"
|
|
},
|
|
"phase": {
|
|
"number": 3,
|
|
"name": "Data-Item Selection",
|
|
"status": "complete"
|
|
},
|
|
"loop": {
|
|
"plan": "v0.3-appui",
|
|
"position": "PAUSED"
|
|
},
|
|
"timestamps": {
|
|
"created_at": "2026-07-21T23:30:00Z",
|
|
"updated_at": "2026-07-22T00:40:00Z"
|
|
},
|
|
"satellite": {
|
|
"groom": true
|
|
}
|
|
}
|