[Pull Request] Dev=UI separate si - #39
Closed
StardustSeemsInk wants to merge 57 commits into
Closed
Conversation
…cts to separate the front-end and back-end.
…ating immediately on language change
- ConstantTable 引用 KitX.Core.ConstantTable 获取端口信息 - AppViewModel 订阅 PluginDisconnected 事件,从 UIStateService.PluginInfos 移除断开插件 - 使用 PluginInfo.Name 属性比较替代 Equals() 引用比较 - PluginBarViewModel 和 RepoPageViewModel 响应插件状态变化 - WorkflowScriptEditorWindowViewModel 传递已连接插件列表给脚本引擎
Fix: normalize Csharpell reference path casing for Linux
- 新增 VariableNode 节点 UI(调色板按钮、类型选择器模板,Teal 主题色) - 实现 ResolveVariablePinType 动态类型解析,ConstNode/VariableNode 类型变更自动传播到 Get/Set 端口 - BlueprintConnectionVM 订阅源端口 PinType 变化,连线颜色实时更新 - 加载蓝图时批量解析 Get/Set 端口类型并初始化 Const 输出端口颜色 - CallHelperNode 返回类型推断,Get/Set VarName 变更触发重新解析 - ExportDrawingToBlueprint 从当前 VM 重建 ConstValues - WorkflowScriptEditorWindowViewModel 构建 constantOverrides 同步用户编辑值到执行
- BlueprintEditorViewModel: Branch 节点输出引脚按 descriptor.RelativeY 排序(True在上/False在下), 替代字母序排序 - WorkflowScriptEditorWindow: TextChanged 添加 500ms 防抖, 减少频繁重解析
ViewModel层: - 新增 PluginFunctionPaletteItem / HelperFunctionPaletteItem 模型类 - BlueprintEditorViewModel 新增 PluginFunctions / HelperFunctions 集合 - 通过 IPluginServer.Connections (DI) 获取已连接插件函数列表 - 通过 WorkflowEditorBridge 获取当前脚本 Helper 函数列表 - 订阅 IPluginService.PluginStatusChanged 事件自动刷新 - 新增 AddPluginCallNode / AddHelperCallNode 命令, 带参数引脚和类型标识 - SetBridge 时自动刷新 Helper 函数列表 - Cleanup() 取消事件订阅, OnClosed 时调用 AXAML层: - Actions Expander 中静态按钮替换为动态 ItemsControl - Plugin Functions / Helper Functions 子 Expander (折叠) - 无数据时显示兜底静态按钮 - 修复 Helper 节点重复 Return 引脚 (跳过 descriptor 模板的 Return)
…赖包,迁移 FAColorPicker 至原生 ColorView(FAColorPickler已被FAUI库弃用),移除未使用的Microsoft.Extensions.DependencyInjection
…vice,更新相关服务注册和依赖注入
…WorkflowScriptEditorWindowViewModel 构造函数
- BlueprintNodeVM 新增 IsExecuting/ExecutionCompleted/IsBreakpoint 状态及 BorderBrushOverride/ThicknessOverride 计算属性
- OnIsExecutingChanged/OnExecutionCompletedChanged/OnIsBreakpointChanged 触发边框重绘通知
- WorkflowEditorWindow 新增 WireUpDebugHighlight,直接操控 Node 控件 BorderBrush/BorderThickness 实现绿色高亮
- BlueprintNodeStyles.axaml 绑定调试高亮到 BorderBrushOverride/BorderThicknessOverride
- BlueprintConnectorVM 新增 RuntimeValue 属性
- BlueprintEditorViewModel.OnDebugVariableChanged 按变量名查找连接器并设 RuntimeValue,结束后清空
- CreateConnectionFromBlueprintConnection 中注册 PubVar 名称至 _variableNameToConnector 映射
- CancelExecution 补设 IsExecuting=false 修复 Stop 按钮状态
- WorkflowEditorWindow.axaml: 连接器 DataTemplate 新增 ToolTip.Tip="{Binding RuntimeValue}"
- WorkflowEditorViewModel 暴露 BlueprintVM.IsDebugging/IsPaused 等调试状态
- AppFramework.RunFramework 重构启动流程:DI→读取日志级别→配置Logger→Load配置→重配Logger
…nager/IRealPluginManagerBridge 接口并初始化 ServiceLocator、WorkflowPageViewModel 改用 ITriggerManager、BlueprintEditorViewModel 适配新库命名空间
[Pull Request]🧩 Refactor(Workflow): 适配 KitX.Workflow 独立库
崩溃修复(根因在 NodifyM 库,详见 fork 的 ava11 分支): - NodifyM.Avalonia 从 NuGet 1.1.9 切换为 ProjectReference 指向 Crequency/NodifyM.Avalonia fork 的 ava11 分支(携带 SelectItem null-guard 补丁) - 保留 NuGet 1.1.9 fallback for 无源码树构建 前端呈现优化(C1-C5): - C1 修新节点堆叠:BlueprintEditorViewModel 新增 GetNextNodeLocation(), 5 处硬编码 Location=(100,100) 改为按 Nodes.Count 级联偏移,新节点不再全叠同点 - C2 面板可调宽:WorkflowEditorWindow 两处静态 Border 分隔条改为 GridSplitter (ResizeDirection=Columns, ResizeBehavior=PreviousAndNext),节点面板/输出面板可拖拽调宽 - C3 输出面板增强:新增 ClearOutputCommand + Clear 按钮(X 图标,绑定命令); OutputScrollViewer/OutputTextBox 命名 + code-behind 监听 ExecutionOutput 变化 ScrollToEnd 自动滚底;7 个语言文件新增 Text_WorkflowEditor_ClearOutput 键 - C4 引脚 tooltip:BlueprintConnectorVM 新增 PinTypeText 属性,输入/输出连接器 tooltip 从 RuntimeValue(仅调试可见)改为 MultiBinding 显示 "Title (PinType)"(始终可见) - C5 跨平台字体栈:代码编辑器 + 输出面板 FontFamily 从 Consolas 改为 "Cascadia Mono,Consolas,Menlo,monospace"
1. 活动日志面板接入工作流 Print() 输出
- OnWorkflowExecutionResult 把 Output 每行以 │ 前缀缩进追加到
ExecutionLog(成功与失败时均显示),便于在不打开编辑器的情况下
追踪执行过程
2. 日志面板高度可调
- 面板上方加 GridSplitter(6px),用户可拖动调整高度
- 面板加 MinHeight=40 防止拖到不可见
3. 运行/触发/停止/删除全生命周期日志(Debug 模式)
- mounted/trigger-armed/trigger-miss/run/done/error/stop/delete
- 仅 Debug 构建可见(#if DEBUG 控制 IsDebugLogVisible)
4. ClearLogCommand 绑定扫帚按钮清空日志
- 将 TryExpandStringConcatPins 泛化为 TryExpandVariadicPins,改为读取 NodeDescriptor 的 InputVariadic/OutputVariadic 标志,输入/输出双向通用 - 消除 StringConcat 的硬编码函数名匹配,改为标志驱动 - 新增 Switch 节点面板按钮(AddSwitchNodeCommand) - 新端口命名从节点现有端口数推导,每实例独立,往返自动保真
跟随 Workflow 后端 Contract→Abstractions 重命名,更新 BlueprintEditorViewModel 的 using KitX.Workflow.Contract → using KitX.Workflow.Abstractions。 # Date: 2026-06-19 # Author: StarInk
Workflow项目将根目录服务归集至 Services/ 子目录(namespace KitX.Workflow.Services),同步更新 Dashboard 中唯一一处对 WorkflowOutput 的限定名引用。 Date: 2026-06-20 Author: StarInk
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What does this PR do?
将Dashboard的后端逻辑分离为Core项目(和Core.Contract项目),并添加了Workflow相关的功能(包括BlockScript与蓝图,它们的互译与编译运行/debug模式运行,前端编辑器窗口与工作流库管理界面)。
This pull request introduces several significant improvements to the project, focusing on dependency injection, build pipeline modernization, and general codebase upgrades. The most notable change is the addition of a centralized dependency injection (DI) setup in the application, which streamlines service management and improves maintainability. The build workflow has also been updated to use newer tools and SDK versions. Additionally, several project files have been updated for consistency and to use newer package versions, and a new Visual Studio solution file has been added for easier development.
Dependency injection and service initialization:
App.axaml.cswith the newInitializeServiceProvidermethod, explicit service registrations, and aGetService<T>()helper for type-safe service resolution throughout the app. This replaces previous ad-hoc service access patterns and enforces explicit registration. ([[1]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-3fbbf7122e50f2a6670df3dd38aeb423c79de4048ca78e183a725af616258988L1-R128),[[2]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-3fbbf7122e50f2a6670df3dd38aeb423c79de4048ca78e183a725af616258988L51-R165))[KitX Dashboard/App.axaml.csL51-R165](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-3fbbf7122e50f2a6670df3dd38aeb423c79de4048ca78e183a725af616258988L51-R165))Build and CI improvements:
actions/checkout@v4, .NET 8, and improved SDK/project checkout logic. Added an explicit reference initialization step and updated the publish step to use the correct working directory and command. ([[1]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-c75ece290902613d146fa97829a726b28022d805b21263008c68df094665c4d8L26-R49),[[2]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-c75ece290902613d146fa97829a726b28022d805b21263008c68df094665c4d8R79-R84))[.github/workflows/auto-build.ymlL89-R102](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-c75ece290902613d146fa97829a726b28022d805b21263008c68df094665c4d8L89-R102))Project and package upgrades:
AvaloniaandAvalonia.Desktoppackage references from version 11.0.4 to 11.2.3 in bothKitX.Dashboard.Assets.csprojandKitX.Dashboard.Fonts.csproj. ([[1]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-28ed6351689783083adeef286ebb36b8e61bc77284f071f8ef39f51fac210796L42-R44),[[2]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-3e37ff94d636e97c5c6eca6d01d0aca1475d7549d68ca452df944ee76c30f46eL18-R20))RootNamespaceproperties to all relevant.csprojfiles for clarity and to prevent namespace issues. ([[1]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-28ed6351689783083adeef286ebb36b8e61bc77284f071f8ef39f51fac210796R8),[[2]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-3e37ff94d636e97c5c6eca6d01d0aca1475d7549d68ca452df944ee76c30f46eR4),[[3]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-3ea96398b174de00d7eb32934189f9b176a22b7167a49f186097b4d2c90bb53dR5),[[4]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-51db02f1a18557d62bbf3cd4ff5c3efd80e5a74148a7f69a9648ed3a76d786d0R5))Solution and housekeeping:
KitX Dashboard.slnto group all projects and configurations, improving developer experience. ([KitX Dashboard.slnR1-R54](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-8bf4e21d1fca823f2eab4a7a004ce01c71efe6d043796140c6ab938f2a34ad29R1-R54)).gitignoreto exclude runtime-generated folders. ([KitX Dashboard/.gitignoreR1-R3](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-c4a23e28f460055ba298bfb9f687f0e0154f8c4b6a0db5be14ff19168b45e5e3R1-R3))UI and minor improvements:
App.axaml. ([KitX Dashboard/App.axamlR65-R71](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-df8f26a67950b77adda986cf8f696ed87791b27164b7360e5129b97f0f40477fR65-R71))[KitX Dashboard/App.axamlR48-R49](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-df8f26a67950b77adda986cf8f696ed87791b27164b7360e5129b97f0f40477fR48-R49))[KitX Dashboard/App.axamlR6-R7](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-df8f26a67950b77adda986cf8f696ed87791b27164b7360e5129b97f0f40477fR6-R7))KitX.Dashboard.CoreandKitX.Dashboard.Core/Program.cs. ([[1]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-0d9fc29e7d1c4ae981ec01a4a1e5a33be43ae7b359195fc79e1ac4a2a6fffb53L1-L10),[[2]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-ff15b873fc3f44a696ac1b3e4ec1229a30aa169dec6a2b08b64df65fb33d2817L1-L2))KitX.Dashboard.Updater. ([[1]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-51db02f1a18557d62bbf3cd4ff5c3efd80e5a74148a7f69a9648ed3a76d786d0R5),[[2]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-c243c0372c42918c66fa55fd04575476f580bb4c149f1ce877375ec8accf273fL3-R3),[[3]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-c243c0372c42918c66fa55fd04575476f580bb4c149f1ce877375ec8accf273fL37-L65))These changes collectively modernize the codebase, improve maintainability, and set a strong foundation for future development.