Merge #608/#602/#596: stale WaveC TODOs resolved, FOCAS/TwinCAT factory logging, Modbus health asymmetry documented, AbCip browsePageDelayMs field, Device1 by-design

Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe
This commit is contained in:
Joseph Doherty
2026-10-08 06:53:59 -04:00
17 changed files with 192 additions and 50 deletions
@@ -511,8 +511,9 @@ public sealed class RawTreeService(IDbContextFactory<OtOpcUaConfigDbContext> dbF
DriverConfig = string.IsNullOrWhiteSpace(driverConfigJson) ? "{}" : driverConfigJson,
});
// Auto-create the default device so a freshly-created driver has a child to show. Wave B (WP3)
// refines device/driver config authoring; here the default device carries an empty config.
// Auto-create the default device so a freshly-created driver has a child to show. By design
// (#596): every driver needs at least one device for browse + tags, and DriverDeviceConfigMerger treats
// the sole device's DeviceConfig as the endpoint. It is renamable/deletable and carries an empty config.
db.Devices.Add(new Device
{
DeviceId = NewId("DEV"),