Merged
Conversation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…106) * fix(ci): pin cla action version and remove npm cache from commitlint Pin contributor-assistant/github-action to v2.6.1 — the bare v2 major version tag does not exist. Remove cache: 'npm' from commitlint workflow since package-lock.json is gitignored and commitlint is installed globally. Add 'ci' to allowed scope-enum in commitlintrc. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore(ci): trigger ci rerun with updated pr title Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Disable subject-case: lower-case rule — acronyms like DTO, MQTT, TwinCAT, CLAUDE.md are unavoidable in commit subjects and cause false positives. Add ci scope to CLAUDE.md. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Cherry-pick from hotfix/fix-cla-signatures-branch. The main branch is protected, so CLA action cannot commit signatures/cla.json there. Use develop instead. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Cherry-pick from hotfix/cla-signatures-branch. Both main and develop are protected, so CLA action needs a dedicated unprotected branch for signature storage. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: add architecture design documents for all modules Add BUILD_SERVER_DESIGN.md covering Beckhoff Automation Interface patterns, pipeline architecture, COM interop constraints, and code generation strategy. Add MODULE_ARCHITECTURE.md covering project structure, dependency graphs, and technology choices per module. Update ARCHITECTURE.md with cross-references to new design documents. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * ci: trigger CLA re-check * ci: trigger CLA re-check --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat(config): add shared DTO library with models, enums, and MQTT topics Create FlowForge.Shared class library containing DTOs for Flow, Build, Deploy, Project, Target, Auth, and Monitor domains. Add enums for Permission and ProjectRole. Add type-safe MQTT topic builders. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * ci: trigger CLA re-check --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat(frontend): add feature-based arch with auth, layout, modules Add feature-based folder structure with auth (Keycloak), layout, and feature modules (editor, projects, build, deploy, targets, monitoring, admin). Configure React Flow, Zustand, React Query, and SignalR hooks. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * ci: trigger commitlint re-check * ci: trigger CLA re-check --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat(config): add shared DTO library with models, enums, and MQTT topics Create FlowForge.Shared class library containing DTOs for Flow, Build, Deploy, Project, Target, Auth, and Monitor domains. Add enums for Permission and ProjectRole. Add type-safe MQTT topic builders. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(backend): add clean architecture layers Introduce Application and Infrastructure projects following Clean Architecture Lite pattern with service/repository interfaces, EF Core, and external integration stubs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * ci: trigger commitlint re-check * ci: trigger CLA re-check --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat(config): add shared DTO library with models, enums, and MQTT topics Create FlowForge.Shared class library containing DTOs for Flow, Build, Deploy, Project, Target, Auth, and Monitor domains. Add enums for Permission and ProjectRole. Add type-safe MQTT topic builders. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(build-server): add pipeline and TwinCAT facades Add build pipeline with sequential step architecture, INodeTranslator strategy for code generation, and IVisualStudioInstance / IAutomationInterface COM facades. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * ci: trigger commitlint re-check * ci: trigger CLA re-check --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
#102) * feat(config): add shared DTO library with models, enums, and MQTT topics Create FlowForge.Shared class library containing DTOs for Flow, Build, Deploy, Project, Target, Auth, and Monitor domains. Add enums for Permission and ProjectRole. Add type-safe MQTT topic builders. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(monitor-server): add typed hub interface, auth, and service layer Add monitor server architecture: - Hubs/IPlcDataHubClient — typed SignalR client interface - Auth/TokenValidator — short-lived HMAC token validation - Services/IMqttAdsClient + MqttAdsClient — ADS over MQTT interface - Services/SubscriptionManager — per-connection subscription tracking Add Shared project reference. Update solution to include Shared. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * ci: trigger CLA re-check --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* test: add test projects and root solution for all modules Create 6 xUnit test projects with NSubstitute + FluentAssertions covering Shared, Backend.Api, Backend.Application, Backend.Infrastructure, BuildServer, and MonitorServer. Add root FlowForge.sln with solution folders. Defer x86 platform target on BuildServer until COM references are added. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * ci: trigger CLA re-check --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* docs(config): update CLAUDE.md and CHANGELOG.md Update CLAUDE.md with new project structure (Shared, Clean Architecture, pipeline pattern, test projects, root solution) and add build/test commands. Add architecture skeleton entries to CHANGELOG.md [Unreleased]. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * ci: trigger commitlint re-check * ci: trigger CLA re-check --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Cherry-pick from hotfix/cla-allowlist-owner. Org members should not need to sign the CLA on every PR. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…113) Add PlcAdsState enum, PlcStateDto, AdsConnectionInfo, and AdsVariableSubscription to FlowForge.Shared for use across monitor and build server without requiring Beckhoff NuGet dependencies. Update PlcTargetDto with CurrentState and DeployRequestDto with AdsPort. Create doc/ADS_INTEGRATION.md documenting the decision to use direct Beckhoff.TwinCAT.Ads instead of custom MQTT ADS relay topics. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat(config): add shared ADS types and integration architecture doc Add PlcAdsState enum, PlcStateDto, AdsConnectionInfo, and AdsVariableSubscription to FlowForge.Shared for use across monitor and build server without requiring Beckhoff NuGet dependencies. Update PlcTargetDto with CurrentState and DeployRequestDto with AdsPort. Create doc/ADS_INTEGRATION.md documenting the decision to use direct Beckhoff.TwinCAT.Ads instead of custom MQTT ADS relay topics. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(monitor-server): add direct Beckhoff ADS client Replace IMqttAdsClient/MqttAdsClient with IAdsClient/AdsClientWrapper using Beckhoff.TwinCAT.Ads + TcpRouter for direct ADS-over-TCP from Linux Docker containers. Add batch read (Sum Commands), PLC state read, and ADS notification subscription to the interface. Update PlcDataHub to use IAdsClient with SubscriptionManager. Add ADS connection config (TargetHostname, AdsPort, AdsTcpPort) to MonitorOptions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat(config): add shared ADS types and integration architecture doc Add PlcAdsState enum, PlcStateDto, AdsConnectionInfo, and AdsVariableSubscription to FlowForge.Shared for use across monitor and build server without requiring Beckhoff NuGet dependencies. Update PlcTargetDto with CurrentState and DeployRequestDto with AdsPort. Create doc/ADS_INTEGRATION.md documenting the decision to use direct Beckhoff.TwinCAT.Ads instead of custom MQTT ADS relay topics. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(build-server): add ADS deploy client for direct PLC activation Add IAdsDeployClient/AdsDeployClient using Beckhoff.TwinCAT.Ads for deploy-time ADS operations (state read, config mode switch, restart). Update DeployStep with IAdsDeployClient + IAutomationInterface injection and documented deploy sequence. Add TargetConnectionInfo to BuildContext. Clarify MqttHandler is for FlowForge internal messaging only. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat(config): add shared ADS types and integration architecture doc Add PlcAdsState enum, PlcStateDto, AdsConnectionInfo, and AdsVariableSubscription to FlowForge.Shared for use across monitor and build server without requiring Beckhoff NuGet dependencies. Update PlcTargetDto with CurrentState and DeployRequestDto with AdsPort. Create doc/ADS_INTEGRATION.md documenting the decision to use direct Beckhoff.TwinCAT.Ads instead of custom MQTT ADS relay topics. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(build-server): add ADS deploy client for direct PLC activation Add IAdsDeployClient/AdsDeployClient using Beckhoff.TwinCAT.Ads for deploy-time ADS operations (state read, config mode switch, restart). Update DeployStep with IAdsDeployClient + IAutomationInterface injection and documented deploy sequence. Add TargetConnectionInfo to BuildContext. Clarify MqttHandler is for FlowForge internal messaging only. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(monitor-server): add direct Beckhoff ADS client Replace IMqttAdsClient/MqttAdsClient with IAdsClient/AdsClientWrapper using Beckhoff.TwinCAT.Ads + TcpRouter for direct ADS-over-TCP from Linux Docker containers. Add batch read (Sum Commands), PLC state read, and ADS notification subscription to the interface. Update PlcDataHub to use IAdsClient with SubscriptionManager. Add ADS connection config (TargetHostname, AdsPort, AdsTcpPort) to MonitorOptions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(config): remove ADS MQTT topics, add service stubs Remove AdsRead/AdsWrite/AdsNotification MQTT topics — ADS communication now uses Beckhoff.TwinCAT.Ads directly. Add DeployStatus topic for deploy progress. Update DeployService with IMqttService dependency and TODO stubs for deploy request/approval/status. Add TODO stubs to TargetService for target listing, deploy lock, and permission checks. Create BUILD_SERVER_DESIGN.md and MODULE_ARCHITECTURE.md. Update ARCHITECTURE.md to reflect ADS-direct architecture throughout. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release v0.3.0 — Architecture Skeleton & Beckhoff ADS Integration
Highlights
See CHANGELOG.md for full details.
🤖 Generated with Claude Code