# TODO - [ ] **MAJOR** Implement configuration manager: - configuration is a set of signals (that can be organized in group and subgroup) that are used to configure a system or a sub system - with configuration manager user should be able to: - Define and manage configuration sets: delete (keep server side copy of deleted config), create (specifying default to parameters, mandatory, optional etc), edit (with versioning git style) and compare set - user can fork an existing config instance to create a new one - user can compare two instances: show unified diff or side by side diff - etc... - Create, delete (keep server cache), edit (git style versioning) and compare configuration instances: meaning set actual value to a configuration set - user can fork an existing config instance to create a new one - user can compare two instances: show unified diff or side by side diff - etc... - user can apply and save configuration instances - in logic editor and control loop add nodes to read/write/create/apply config instances - [ ] Improve UX: - [x] Synthetic editor: - [x] color code the node link by type - [x] hover on a block in error should show the reason - [x] add proper array functionality - [x] add shortcut to add Signals (S) and nodes (N) with HUD - [ ] Panels: - [x] in view mode the widgets should have no border/bg but blend with background - [ ] add widgets such as toggle switch, table and other industrial hmi widgets - [ ] Implement git style versioning for: synthetic variable, panels, control logic: - possibility to fork any version - click to view the version - possibility to view graphical diff between versions (side by side or unified diff) - simple slick versioning pane: - vertical tree like - each version represented by a circle - active (the one currently view/edited) version has circle bigger then rest - selected (the one that will be executed/showed by user) version has circle full, not active only border - unsaved / new version appear with connection line dashed - [ ] Implement admin pane: create / manage groups, set users permits, manage auditors etc - [ ] Implement new datasources: - [ ] Finalize alarm service - [ ] modbus tcp - [ ] scpi tcp - [ ] udp? other? - [ ] **MAJOR** Implement proper distributed server side nodes to balance load and have redundancy (if a node is not available anymore all its clients migrate seamelessly to another)