From dd31267cbb698d6ae4b1364157ad9434cae63ee6 Mon Sep 17 00:00:00 2001 From: Pablo Colturi Date: Fri, 13 Feb 2026 19:03:19 +0100 Subject: [PATCH 01/10] fix validation input target index --- src/lib/utils/connectionsValidation.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/utils/connectionsValidation.js b/src/lib/utils/connectionsValidation.js index ea9c4209..c066e982 100644 --- a/src/lib/utils/connectionsValidation.js +++ b/src/lib/utils/connectionsValidation.js @@ -44,7 +44,8 @@ const isValidConnection = (connection) => { // If the expected input type is 'any', allow any connection const targetNode = nodes.find((node) => node.id === connection.target) const handleIndexInput = parseInt(connection.targetHandle.split('-')[1]) - const expectedInputType = targetNode.data.arguments[handleIndexInput].type + const targetIndexInput = targetNode.data.inputs[handleIndexInput] + const expectedInputType = targetNode.data.arguments[targetIndexInput].type if (expectedInputType === Type.ANY) { console.log(`Handle ${connection.targetHandle} accepts any type`) connectionCache.set(cacheKey, true) From f5696af102f9f1289543c1daa015d724d67903e1 Mon Sep 17 00:00:00 2001 From: Pablo Colturi Date: Mon, 16 Feb 2026 15:03:19 +0100 Subject: [PATCH 02/10] update default nodes to include those from step 4 poisson solver --- src/lib/data/defaultNodes.json | 87 +++++++++ src/lib/data/register_with_poisson.json | 242 ------------------------ 2 files changed, 87 insertions(+), 242 deletions(-) delete mode 100644 src/lib/data/register_with_poisson.json diff --git a/src/lib/data/defaultNodes.json b/src/lib/data/defaultNodes.json index f9c027b9..f5e0aa8b 100644 --- a/src/lib/data/defaultNodes.json +++ b/src/lib/data/defaultNodes.json @@ -45,6 +45,54 @@ "outputs": [2], "type": "GridOut::write_vtk<2>" }, + "PoissonSolver<2, 2>": { + "arguments": [ + { + "connection_type": "input", + "name": "triangulation", + "type": "dealii::Triangulation<2, 2>" + }, + { + "connection_type": "input", + "name": "fe", + "type": "dealii::FiniteElement<2, 2>" + }, + { + "connection_type": "input", + "name": "output_file_name", + "type": "std::string" + }, + { + "connection_type": "input", + "name": "rhs_function_expression", + "type": "std::string" + }, + { + "connection_type": "input", + "name": "dirichlet_boundary_ids", + "type": "std::set" + }, + { + "connection_type": "input", + "name": "dirichlet_function_expression", + "type": "std::string" + }, + { + "connection_type": "input", + "name": "neumann_boundary_ids", + "type": "std::set" + }, + { + "connection_type": "input", + "name": "neumann_function_expression", + "type": "std::string" + } + ], + "inputs": [0, 1, 2, 3, 4, 5, 6, 7], + "node_type": "constructor", + "outputs": [-1], + "type": "PoissonSolver<2, 2>" + }, "Triangulation<2>::refine_global": { "arguments": [ { @@ -63,6 +111,7 @@ "outputs": [0], "type": "Triangulation<2>::refine_global" }, + "__backend_name": "dealii", "bool": { "arguments": [], "inputs": [], @@ -71,6 +120,14 @@ "type": "bool", "value": "false" }, + "coral::Network": { + "arguments": [], + "inputs": [], + "node_type": "network", + "outputs": [], + "type": "coral::Network", + "value": {} + }, "dealii::DoFHandler<2, 2>": { "arguments": [ { @@ -84,6 +141,28 @@ "outputs": [-1], "type": "dealii::DoFHandler<2, 2>" }, + "dealii::FE_Q<2, 2>": { + "arguments": [ + { + "connection_type": "input", + "name": "fe_degree", + "type": "unsigned int" + } + ], + "base": "dealii::FiniteElement<2, 2>", + "inputs": [0], + "node_type": "constructor", + "outputs": [-1], + "type": "dealii::FE_Q<2, 2>" + }, + "dealii::FiniteElement<2, 2>": { + "arguments": [], + "derived": ["dealii::FE_Q<2, 2>"], + "inputs": [], + "node_type": "abstract", + "outputs": [], + "type": "dealii::FiniteElement<2, 2>" + }, "dealii::GridOut": { "arguments": [], "inputs": [], @@ -136,6 +215,14 @@ "outputs": [], "type": "std::ostream" }, + "std::set": { + "arguments": [], + "inputs": [], + "node_type": "elementary_constructor", + "outputs": [-1], + "type": "std::set", + "value": "[]" + }, "std::string": { "arguments": [], "inputs": [], diff --git a/src/lib/data/register_with_poisson.json b/src/lib/data/register_with_poisson.json deleted file mode 100644 index f5e0aa8b..00000000 --- a/src/lib/data/register_with_poisson.json +++ /dev/null @@ -1,242 +0,0 @@ -{ - "GridGenerator::generate_from_name_and_arguments<2>": { - "arguments": [ - { - "connection_type": "pass_through", - "name": "triangulation", - "type": "dealii::Triangulation<2, 2>" - }, - { - "connection_type": "input", - "name": "grid_generator_function_name", - "type": "std::string" - }, - { - "connection_type": "input", - "name": "grid_generator_function_arguments", - "type": "std::string" - } - ], - "inputs": [0, 1, 2], - "node_type": "void_function", - "outputs": [0], - "type": "GridGenerator::generate_from_name_and_arguments<2>" - }, - "GridOut::write_vtk<2>": { - "arguments": [ - { - "connection_type": "input", - "name": "grid_out", - "type": "dealii::GridOut" - }, - { - "connection_type": "input", - "name": "triangulation", - "type": "dealii::Triangulation<2, 2>" - }, - { - "connection_type": "pass_through", - "name": "output_file", - "type": "std::ostream" - } - ], - "inputs": [0, 1, 2], - "node_type": "void_const_method", - "outputs": [2], - "type": "GridOut::write_vtk<2>" - }, - "PoissonSolver<2, 2>": { - "arguments": [ - { - "connection_type": "input", - "name": "triangulation", - "type": "dealii::Triangulation<2, 2>" - }, - { - "connection_type": "input", - "name": "fe", - "type": "dealii::FiniteElement<2, 2>" - }, - { - "connection_type": "input", - "name": "output_file_name", - "type": "std::string" - }, - { - "connection_type": "input", - "name": "rhs_function_expression", - "type": "std::string" - }, - { - "connection_type": "input", - "name": "dirichlet_boundary_ids", - "type": "std::set" - }, - { - "connection_type": "input", - "name": "dirichlet_function_expression", - "type": "std::string" - }, - { - "connection_type": "input", - "name": "neumann_boundary_ids", - "type": "std::set" - }, - { - "connection_type": "input", - "name": "neumann_function_expression", - "type": "std::string" - } - ], - "inputs": [0, 1, 2, 3, 4, 5, 6, 7], - "node_type": "constructor", - "outputs": [-1], - "type": "PoissonSolver<2, 2>" - }, - "Triangulation<2>::refine_global": { - "arguments": [ - { - "connection_type": "pass_through", - "name": "triangulation", - "type": "dealii::Triangulation<2, 2>" - }, - { - "connection_type": "input", - "name": "n_refinements", - "type": "unsigned int" - } - ], - "inputs": [0, 1], - "node_type": "void_method", - "outputs": [0], - "type": "Triangulation<2>::refine_global" - }, - "__backend_name": "dealii", - "bool": { - "arguments": [], - "inputs": [], - "node_type": "elementary_constructor", - "outputs": [-1], - "type": "bool", - "value": "false" - }, - "coral::Network": { - "arguments": [], - "inputs": [], - "node_type": "network", - "outputs": [], - "type": "coral::Network", - "value": {} - }, - "dealii::DoFHandler<2, 2>": { - "arguments": [ - { - "connection_type": "input", - "name": "triangulation", - "type": "dealii::Triangulation<2, 2>" - } - ], - "inputs": [0], - "node_type": "constructor", - "outputs": [-1], - "type": "dealii::DoFHandler<2, 2>" - }, - "dealii::FE_Q<2, 2>": { - "arguments": [ - { - "connection_type": "input", - "name": "fe_degree", - "type": "unsigned int" - } - ], - "base": "dealii::FiniteElement<2, 2>", - "inputs": [0], - "node_type": "constructor", - "outputs": [-1], - "type": "dealii::FE_Q<2, 2>" - }, - "dealii::FiniteElement<2, 2>": { - "arguments": [], - "derived": ["dealii::FE_Q<2, 2>"], - "inputs": [], - "node_type": "abstract", - "outputs": [], - "type": "dealii::FiniteElement<2, 2>" - }, - "dealii::GridOut": { - "arguments": [], - "inputs": [], - "node_type": "empty_constructor", - "outputs": [-1], - "type": "dealii::GridOut" - }, - "dealii::Triangulation<2, 2>": { - "arguments": [], - "inputs": [], - "node_type": "empty_constructor", - "outputs": [-1], - "type": "dealii::Triangulation<2, 2>" - }, - "double": { - "arguments": [], - "inputs": [], - "node_type": "elementary_constructor", - "outputs": [-1], - "type": "double", - "value": "0.0" - }, - "int": { - "arguments": [], - "inputs": [], - "node_type": "elementary_constructor", - "outputs": [-1], - "type": "int", - "value": "0" - }, - "std::ofstream": { - "arguments": [ - { - "connection_type": "input", - "name": "file_name", - "type": "std::string" - } - ], - "base": "std::ostream", - "inputs": [0], - "node_type": "constructor", - "outputs": [-1], - "type": "std::ofstream" - }, - "std::ostream": { - "arguments": [], - "derived": ["std::ofstream"], - "inputs": [], - "node_type": "abstract", - "outputs": [], - "type": "std::ostream" - }, - "std::set": { - "arguments": [], - "inputs": [], - "node_type": "elementary_constructor", - "outputs": [-1], - "type": "std::set", - "value": "[]" - }, - "std::string": { - "arguments": [], - "inputs": [], - "node_type": "elementary_constructor", - "outputs": [-1], - "type": "std::string", - "value": "" - }, - "unsigned int": { - "arguments": [], - "inputs": [], - "node_type": "elementary_constructor", - "outputs": [-1], - "type": "unsigned int", - "value": "0" - } -} From f22605d1cb628a8f7a8a865e3ae33f48489b69c5 Mon Sep 17 00:00:00 2001 From: Pablo Colturi Date: Mon, 16 Feb 2026 15:30:44 +0100 Subject: [PATCH 03/10] remove not compliant node from default registry + fix nodeData value type to include network --- src/lib/data/defaultNodes.json | 1 - src/lib/types/nodeTypes.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/lib/data/defaultNodes.json b/src/lib/data/defaultNodes.json index f5e0aa8b..04cc1a25 100644 --- a/src/lib/data/defaultNodes.json +++ b/src/lib/data/defaultNodes.json @@ -111,7 +111,6 @@ "outputs": [0], "type": "Triangulation<2>::refine_global" }, - "__backend_name": "dealii", "bool": { "arguments": [], "inputs": [], diff --git a/src/lib/types/nodeTypes.ts b/src/lib/types/nodeTypes.ts index 78da716c..4cefda53 100644 --- a/src/lib/types/nodeTypes.ts +++ b/src/lib/types/nodeTypes.ts @@ -111,7 +111,7 @@ export type NodeData = { derived?: string[] base?: string method_name?: string - value?: string + value?: any is_valid?: boolean } From 935d7a92ec21c2b86beca599fa5f99cf718186ec Mon Sep 17 00:00:00 2001 From: Pablo Colturi Date: Mon, 16 Feb 2026 16:06:55 +0100 Subject: [PATCH 04/10] add missing node type from BE --- src/lib/data/defaultNodes.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/lib/data/defaultNodes.json b/src/lib/data/defaultNodes.json index 04cc1a25..9d77ff45 100644 --- a/src/lib/data/defaultNodes.json +++ b/src/lib/data/defaultNodes.json @@ -45,6 +45,19 @@ "outputs": [2], "type": "GridOut::write_vtk<2>" }, + "PoissonSolver::solve<2>": { + "arguments": [ + { + "connection_type": "pass_through", + "name": "poisson_solver", + "type": "PoissonSolver<2, 2>" + } + ], + "inputs": [0], + "node_type": "void_method", + "outputs": [0], + "type": "PoissonSolver::solve<2>" + }, "PoissonSolver<2, 2>": { "arguments": [ { From 5edaaf538618d24ccce81235953e92063aea4d69 Mon Sep 17 00:00:00 2001 From: Pablo Colturi Date: Mon, 16 Feb 2026 16:18:27 +0100 Subject: [PATCH 05/10] add step 4 poisson solver network jsons --- test_files/poisson-solver-creation.json | 226 ++++++++++++++++++++++ test_files/poisson-solver-solution.json | 240 ++++++++++++++++++++++++ 2 files changed, 466 insertions(+) create mode 100644 test_files/poisson-solver-creation.json create mode 100644 test_files/poisson-solver-solution.json diff --git a/test_files/poisson-solver-creation.json b/test_files/poisson-solver-creation.json new file mode 100644 index 00000000..39ae347b --- /dev/null +++ b/test_files/poisson-solver-creation.json @@ -0,0 +1,226 @@ +{ + "workflow": { + "nodes": { + "0": { + "type": "GridGenerator::generate_from_name_and_arguments<2>", + "position": { + "x": 349, + "y": 285 + }, + "qualified_id": "0" + }, + "1": { + "type": "dealii::Triangulation<2, 2>", + "position": { + "x": -138.6244238453006, + "y": 235.70695519035294 + }, + "qualified_id": "1" + }, + "2": { + "type": "std::string", + "position": { + "x": -162.44546446968224, + "y": 335.4437074273444 + }, + "value": "hyper_cube", + "qualified_id": "2" + }, + "3": { + "type": "std::string", + "position": { + "x": -165.59970909934447, + "y": 453.72788103967997 + }, + "value": "0 : 1 : false", + "qualified_id": "3" + }, + "4": { + "type": "Triangulation<2>::refine_global", + "position": { + "x": 375.353244887737, + "y": 559.3950761333665 + }, + "qualified_id": "4" + }, + "6": { + "type": "unsigned int", + "position": { + "x": -130.53338013052084, + "y": 631.942702615599 + }, + "value": "1", + "qualified_id": "6" + }, + "7": { + "type": "dealii::FE_Q<2, 2>", + "position": { + "x": 320.5236019111856, + "y": 750.2268762279346 + }, + "base": "dealii::FiniteElement<2, 2>", + "qualified_id": "7" + }, + "8": { + "type": "unsigned int", + "position": { + "x": -53.50389238250847, + "y": 808.5804018766869 + }, + "value": "1", + "qualified_id": "8" + }, + "9": { + "type": "std::string", + "position": { + "x": 77.3972597484763, + "y": 969.4468779894634 + }, + "value": "\"./solution.vtk\"", + "qualified_id": "9" + }, + "10": { + "type": "std::string", + "position": { + "x": 67.93452585948947, + "y": 1094.0395408611234 + }, + "value": "1", + "qualified_id": "10" + }, + "11": { + "type": "std::set", + "position": { + "x": 83.70574900780089, + "y": 1218.6322037327836 + }, + "value": "[]", + "qualified_id": "11" + }, + "12": { + "type": "std::set", + "position": { + "x": 85.28287132263199, + "y": 1429.9665939201566 + }, + "value": "[]", + "qualified_id": "12" + }, + "13": { + "type": "std::string", + "position": { + "x": 104.20833910060571, + "y": 1327.4536434561326 + }, + "value": "0", + "qualified_id": "13" + }, + "14": { + "type": "std::string", + "position": { + "x": 101.05409447094348, + "y": 1538.7880336435053 + }, + "value": "0", + "qualified_id": "14" + }, + "15": { + "type": "PoissonSolver<2, 2>", + "position": { + "x": 1152.994678463315, + "y": 512.0814066884323 + }, + "qualified_id": "15" + } + }, + "edges": { + "0": { + "source": 1, + "target": 0, + "source_output": 0, + "target_input": 0 + }, + "1": { + "source": 2, + "target": 0, + "source_output": 0, + "target_input": 1 + }, + "2": { + "source": 3, + "target": 0, + "source_output": 0, + "target_input": 2 + }, + "3": { + "source": 0, + "target": 4, + "source_output": 0, + "target_input": 0 + }, + "4": { + "source": 6, + "target": 4, + "source_output": 0, + "target_input": 1 + }, + "5": { + "source": 8, + "target": 7, + "source_output": 0, + "target_input": 0 + }, + "6": { + "source": 4, + "target": 15, + "source_output": 0, + "target_input": 0 + }, + "7": { + "source": 7, + "target": 15, + "source_output": 0, + "target_input": 1 + }, + "8": { + "source": 9, + "target": 15, + "source_output": 0, + "target_input": 2 + }, + "9": { + "source": 10, + "target": 15, + "source_output": 0, + "target_input": 3 + }, + "10": { + "source": 11, + "target": 15, + "source_output": 0, + "target_input": 4 + }, + "11": { + "source": 13, + "target": 15, + "source_output": 0, + "target_input": 5 + }, + "12": { + "source": 12, + "target": 15, + "source_output": 0, + "target_input": 6 + }, + "13": { + "source": 14, + "target": 15, + "source_output": 0, + "target_input": 7 + } + } + }, + "version": 1, + "author": "dealiix-platform", + "date_time_utc": "2026-02-13T11:40:14.982Z" +} diff --git a/test_files/poisson-solver-solution.json b/test_files/poisson-solver-solution.json new file mode 100644 index 00000000..723c96f5 --- /dev/null +++ b/test_files/poisson-solver-solution.json @@ -0,0 +1,240 @@ +{ + "workflow": { + "nodes": { + "0": { + "type": "GridGenerator::generate_from_name_and_arguments<2>", + "position": { + "x": 349, + "y": 285 + }, + "qualified_id": "0" + }, + "1": { + "type": "dealii::Triangulation<2, 2>", + "position": { + "x": -138.6244238453006, + "y": 235.70695519035294 + }, + "qualified_id": "1" + }, + "2": { + "type": "std::string", + "position": { + "x": -162.44546446968224, + "y": 335.4437074273444 + }, + "value": "hyper_cube", + "qualified_id": "2" + }, + "3": { + "type": "std::string", + "position": { + "x": -165.59970909934447, + "y": 453.72788103967997 + }, + "value": "0 : 1 : false", + "qualified_id": "3" + }, + "4": { + "type": "Triangulation<2>::refine_global", + "position": { + "x": 375.353244887737, + "y": 559.3950761333665 + }, + "qualified_id": "4" + }, + "6": { + "type": "unsigned int", + "position": { + "x": -130.53338013052084, + "y": 631.942702615599 + }, + "value": "1", + "qualified_id": "6" + }, + "7": { + "type": "dealii::FE_Q<2, 2>", + "position": { + "x": 320.5236019111856, + "y": 750.2268762279346 + }, + "base": "dealii::FiniteElement<2, 2>", + "qualified_id": "7" + }, + "8": { + "type": "unsigned int", + "position": { + "x": -53.50389238250847, + "y": 808.5804018766869 + }, + "value": "1", + "qualified_id": "8" + }, + "9": { + "type": "std::string", + "position": { + "x": 77.3972597484763, + "y": 969.4468779894634 + }, + "value": "solution.vtu", + "qualified_id": "9" + }, + "10": { + "type": "std::string", + "position": { + "x": 67.93452585948947, + "y": 1094.0395408611234 + }, + "value": "1", + "qualified_id": "10" + }, + "11": { + "type": "std::set", + "position": { + "x": 83.70574900780089, + "y": 1218.6322037327836 + }, + "value": "[0]", + "qualified_id": "11" + }, + "12": { + "type": "std::set", + "position": { + "x": 85.28287132263199, + "y": 1429.9665939201566 + }, + "value": "[]", + "qualified_id": "12" + }, + "13": { + "type": "std::string", + "position": { + "x": 104.20833910060571, + "y": 1327.4536434561326 + }, + "value": "0", + "qualified_id": "13" + }, + "14": { + "type": "std::string", + "position": { + "x": 101.05409447094348, + "y": 1538.7880336435053 + }, + "value": "0", + "qualified_id": "14" + }, + "15": { + "type": "PoissonSolver<2, 2>", + "position": { + "x": 1152.994678463315, + "y": 512.0814066884323 + }, + "qualified_id": "15" + }, + "16": { + "type": "PoissonSolver::solve<2>", + "position": { + "x": 1800.0768250057545, + "y": 782.0812376960318 + }, + "qualified_id": "16" + } + }, + "edges": { + "0": { + "source": 1, + "target": 0, + "source_output": 0, + "target_input": 0 + }, + "1": { + "source": 2, + "target": 0, + "source_output": 0, + "target_input": 1 + }, + "2": { + "source": 3, + "target": 0, + "source_output": 0, + "target_input": 2 + }, + "3": { + "source": 0, + "target": 4, + "source_output": 0, + "target_input": 0 + }, + "4": { + "source": 6, + "target": 4, + "source_output": 0, + "target_input": 1 + }, + "5": { + "source": 8, + "target": 7, + "source_output": 0, + "target_input": 0 + }, + "6": { + "source": 4, + "target": 15, + "source_output": 0, + "target_input": 0 + }, + "7": { + "source": 7, + "target": 15, + "source_output": 0, + "target_input": 1 + }, + "8": { + "source": 9, + "target": 15, + "source_output": 0, + "target_input": 2 + }, + "9": { + "source": 10, + "target": 15, + "source_output": 0, + "target_input": 3 + }, + "10": { + "source": 11, + "target": 15, + "source_output": 0, + "target_input": 4 + }, + "11": { + "source": 13, + "target": 15, + "source_output": 0, + "target_input": 5 + }, + "12": { + "source": 12, + "target": 15, + "source_output": 0, + "target_input": 6 + }, + "13": { + "source": 14, + "target": 15, + "source_output": 0, + "target_input": 7 + }, + "14": { + "source": 15, + "target": 16, + "source_output": 0, + "target_input": 0 + } + } + }, + "version": 1, + "author": "dealiix-platform", + "date_time_utc": "2026-02-16T09:15:09.826Z" +} From 209754159cc91f31be47237cefddef8a7a6e17af Mon Sep 17 00:00:00 2001 From: Pablo Colturi Date: Mon, 16 Feb 2026 16:20:36 +0100 Subject: [PATCH 06/10] update coral to PR 46 make poisson solver compatible with front end --- coral | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coral b/coral index e2325a8d..f94f8219 160000 --- a/coral +++ b/coral @@ -1 +1 @@ -Subproject commit e2325a8d1cedafbfae97f997b53d26d5d353d204 +Subproject commit f94f821948e41d978c8f778b1491a279722e81a9 From dd3fca82de8adb7b5da965120d193ed6aab34288 Mon Sep 17 00:00:00 2001 From: Pablo Colturi Date: Mon, 16 Feb 2026 16:34:12 +0100 Subject: [PATCH 07/10] changelog --- CHANGELOG.md | 49 ++++++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 35a2097f..3b09df31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,24 +6,26 @@ See [docs/changelog-template.md](docs/changelog-template.md) for formatting your ### Documentation -- [#122](https://github.com/2listic/dealiiX-platform/pull/82) Update registry and network exaples to the new protocol indtroduced by PR #120 -- [#82](https://github.com/2listic/dealiiX-platform/pull/82) Add instructions to debug Svelte-renderer code in the Electron-Chromium dev tools -- [#38](https://github.com/2listic/dealiiX-platform/pull/39) Add Git Hub section to the readme file. Update the pull request template. -- [#42](https://github.com/2listic/dealiiX-platform/pull/42) Add debugging instructions for Electron and Svelte -- [#17](https://github.com/2listic/dealiiX-platform/pull/17) Create readme with install, run and packaging instructions +- [#151](https://github.com/2listic/dealiiX-platform/pull/151) Updated registry and network exaples to include Step 4 Poisson solver example. +- [#122](https://github.com/2listic/dealiiX-platform/pull/82) Updated registry and network exaples to the new protocol indtroduced by PR #120. +- [#82](https://github.com/2listic/dealiiX-platform/pull/82) Added instructions to debug Svelte-renderer code in the Electron-Chromium dev tools. +- [#38](https://github.com/2listic/dealiiX-platform/pull/39) Added Git Hub section to the readme file. Update the pull request template. +- [#42](https://github.com/2listic/dealiiX-platform/pull/42) Added debugging instructions for Electron and Svelte. +- [#17](https://github.com/2listic/dealiiX-platform/pull/17) Created readme with install, run and packaging instructions. ### Canvas-graph +- [#151](https://github.com/2listic/dealiiX-platform/pull/151) Bug fix over validation of new connections between nodes. - [#143](https://github.com/2listic/dealiiX-platform/pull/143) Network node `value` (sub-graph) is stripped from canvas data and restored during export. `createNewNetworkNode` now takes snapshot arrays as parameters. Stronger typing for network nodes with dedicated `RegisteredNetworkNodes` / `NetworkNodeOfTypeNetwork` types. Added `getNodesSnapshot()` / `getEdgesSnapshot()` helpers. Added `isNumericType()` utility and `NUMERIC_TYPES` constant. - [#134](https://github.com/2listic/dealiiX-platform/pull/134) Added button to create a network node from the current graph. Added support for new network nodes during the loading and the exporting of a graph. Added feature to validate all the connection types of every input-output linked by an edge in a graph. -- [#99](https://github.com/2listic/dealiiX-platform/pull/99) Fix connection validation after deleting an edge. Added caching for is_valid. -- [#67](https://github.com/2listic/dealiiX-platform/pull/67) Add missing nodes for the complete MWE. Added validation for nodes derived from abstract classes. Drag and drop state simplified. -- [#59](https://github.com/2listic/dealiiX-platform/pull/59) Add button to import graph from previously exported JSON file or from a JSON file adhering to the protocol. +- [#99](https://github.com/2listic/dealiiX-platform/pull/99) Fixed connection validation after deleting an edge. Added caching for is_valid. +- [#67](https://github.com/2listic/dealiiX-platform/pull/67) Added missing nodes for the complete MWE. Added validation for nodes derived from abstract classes. Drag and drop state simplified. +- [#59](https://github.com/2listic/dealiiX-platform/pull/59) Added button to import graph from previously exported JSON file or from a JSON file adhering to the protocol. - [#52](https://github.com/2listic/dealiiX-platform/pull/52) Nodes are removable by clicking on a dedicated button - [#29](https://github.com/2listic/dealiiX-platform/pull/29) Added new nodes: std string, gridGenerator generate_from_name_and_arguments function, gridOut constructor, write_vtk method and bool. Nodes are rendered now more dynamically with a declarative approach based on the type of the node and the corresponding information provided in the uploaded JSON file. - [#27](https://github.com/2listic/dealiiX-platform/pull/27) Added first new real Deal.II nodes: Unsigned, Triangulation<2,2> and Triangulation<2>::refine_global. Also included validation for new connections, validation for Unsigned internal values, drag&drop functionality and includes a bug fix on node id generation. -- [#22](https://github.com/2listic/dealiiX-platform/pull/22) Add type validation for new connections. Prevent multiple connections entering the same input handle. Added a simple cache system to reduce computation for connections already checked. -- Initial nodes and edges with string concatenation +- [#22](https://github.com/2listic/dealiiX-platform/pull/22) Added type validation for new connections. Prevent multiple connections entering the same input handle. Added a simple cache system to reduce computation for connections already checked. +- Initial nodes and edges with string concatenation. ### UI/UX @@ -32,7 +34,7 @@ See [docs/changelog-template.md](docs/changelog-template.md) for formatting your - [#138](https://github.com/2listic/dealiiX-platform/pull/138) Added button in the jobs table to read content of corresponding .out file. New library ansiUp is used to transform color ASCII codes into HTML tags. - [#134](https://github.com/2listic/dealiiX-platform/pull/134) Added section in the sidebar to display and drag the network nodes in the canvas. - [#118](https://github.com/2listic/dealiiX-platform/pull/120) Added button to download the current graph locally. -- [#113](https://github.com/2listic/dealiiX-platform/pull/120) Display logged-in user's username +- [#113](https://github.com/2listic/dealiiX-platform/pull/120) Display logged-in user's username. - [#120](https://github.com/2listic/dealiiX-platform/pull/120) Added functionality for editing the displayed node's name. - [#116](https://github.com/2listic/dealiiX-platform/pull/116) Input argument names are now displayed for clarity, along with the output types. Handlers are now larger and easier to interact with. - [#114](https://github.com/2listic/dealiiX-platform/pull/114) Added reusable confirmation modal to user logout and project deletion. @@ -60,9 +62,9 @@ See [docs/changelog-template.md](docs/changelog-template.md) for formatting your - [#142](https://github.com/2listic/dealiiX-platform/pull/142) Jobs state is now persistent across sessions. Added new persistent store to track internal job Ids with scheduler job Ids. - [#139](https://github.com/2listic/dealiiX-platform/pull/139) App persistent storage moved from localStorage in the renderer to electron-store in the main process. - [#72](https://github.com/2listic/dealiiX-platform/pull/72) Color mode made persistent across sessions -- Electron setup with IPC communication -- SSH command execution via password and private key -- SSH file writing via private key +- Electron setup with IPC communication. +- SSH command execution via password and private key. +- SSH file writing via private key. ### Remote-Server @@ -71,7 +73,7 @@ See [docs/changelog-template.md](docs/changelog-template.md) for formatting your ### Protocol -- [#146](https://github.com/2listic/dealiiX-platform/issues/146) Validate registry JSON during import: filter out non-compliant nodes. Exclude `abstract` and `network` node types from the sidebar available nodes list. +- [#146](https://github.com/2listic/dealiiX-platform/issues/146) Validated registry JSON during import: filter out non-compliant nodes. Excluded `abstract` and `network` node types from the sidebar available nodes list. - [#143](https://github.com/2listic/dealiiX-platform/pull/143) Added `qualified_id` to all nodes during export/save/download, encoding nesting hierarchy (e.g., `"12_3"`). Removed on import. Added `parseGraphWithQualifiedIds()`, `addQualifiedIds()` and `removeQualifiedIds()`. Fixed removal of duplicate fields in standard nodes during export/save/download. - [#141](https://github.com/2listic/dealiiX-platform/pull/141) Network nodes have the corresponding sub-graph saved in 'value' field as regular JSON instead of escaped string. - [#134](https://github.com/2listic/dealiiX-platform/pull/134) Added support for the new "network node" type. @@ -85,11 +87,11 @@ See [docs/changelog-template.md](docs/changelog-template.md) for formatting your - [#78](https://github.com/2listic/dealiiX-platform/pull/78) Added Coral repo as a sub-dependency - [#77](https://github.com/2listic/dealiiX-platform/pull/77) Dependency versions updated in package-lock.json - [#67](https://github.com/2listic/dealiiX-platform/pull/67) Nodes are unified in one unique component. -- [#41](https://github.com/2listic/dealiiX-platform/pull/41) Add Prettier plugin for Svelte -- [#35](https://github.com/2listic/dealiiX-platform/pull/35) Update icon and title of the .deb distributable -- [#34](https://github.com/2listic/dealiiX-platform/pull/34) Add Prettier and automatic formatting on commit +- [#41](https://github.com/2listic/dealiiX-platform/pull/41) Added Prettier plugin for Svelte +- [#35](https://github.com/2listic/dealiiX-platform/pull/35) Updated icon and title of the .deb distributable +- [#34](https://github.com/2listic/dealiiX-platform/pull/34) Added Prettier and automatic formatting on commit - [#16](https://github.com/2listic/dealiiX-platform/pull/16) gitignore .vscode and .continue folders -- [#21](https://github.com/2listic/dealiiX-platform/pull/21) added husky to automatically lint on commit +- [#21](https://github.com/2listic/dealiiX-platform/pull/21) Added husky to automatically lint on commit ### SSH communication @@ -104,13 +106,14 @@ See [docs/changelog-template.md](docs/changelog-template.md) for formatting your ### Building -- [#12](https://github.com/2listic/dealiiX-platform/pull/12) Add electron-forge -- [#4](https://github.com/2listic/dealiiX-platform/pull/4) Add .deb distributable for Linux -- [#14](https://github.com/2listic/dealiiX-platform/pull/14) Add .dmg distributable for macOS +- [#12](https://github.com/2listic/dealiiX-platform/pull/12) Added electron-forge. +- [#4](https://github.com/2listic/dealiiX-platform/pull/4) Added .deb distributable for Linux. +- [#14](https://github.com/2listic/dealiiX-platform/pull/14) Added .dmg distributable for macOS. ### Submodules -- [#95](https://github.com/2listic/dealiiX-platform/pull/95) Update Coral Visualizer submodule to show carotid vtk file + fix add Coral submodule +- [#151](https://github.com/2listic/dealiiX-platform/pull/151) Coral submodule updated to include Step 4 Poisson Solver. +- [#95](https://github.com/2listic/dealiiX-platform/pull/95) Coral Visualizer submodule updated to show carotid vtk file + fix add Coral submodule. ### Docker From 1af8807591aac6a9e9ee2f6d2e0e1e43140b22ed Mon Sep 17 00:00:00 2001 From: Pablo Colturi Date: Wed, 18 Feb 2026 10:46:03 +0100 Subject: [PATCH 08/10] update visualizer submodule --- coral-visualizer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coral-visualizer b/coral-visualizer index 5af3ba38..30ef4b42 160000 --- a/coral-visualizer +++ b/coral-visualizer @@ -1 +1 @@ -Subproject commit 5af3ba38a693be3346536b2eeba04a7377de4f9e +Subproject commit 30ef4b42c0bcd1ec6e68d1c7fb6f25231bcc4aa4 From 0ca34828fbb8b68fa960d9d96fd5bec15f17329c Mon Sep 17 00:00:00 2001 From: Pablo Colturi Date: Wed, 18 Feb 2026 10:48:23 +0100 Subject: [PATCH 09/10] changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b09df31..6b613a6f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -112,7 +112,7 @@ See [docs/changelog-template.md](docs/changelog-template.md) for formatting your ### Submodules -- [#151](https://github.com/2listic/dealiiX-platform/pull/151) Coral submodule updated to include Step 4 Poisson Solver. +- [#151](https://github.com/2listic/dealiiX-platform/pull/151) Coral submodule updated to include Step 4 Poisson Solver. Coral-Visualizer submodule updated to support .vtu files. - [#95](https://github.com/2listic/dealiiX-platform/pull/95) Coral Visualizer submodule updated to show carotid vtk file + fix add Coral submodule. ### Docker From 5585fb91459460d9c0ad8751832259802e61277a Mon Sep 17 00:00:00 2001 From: Pablo Colturi Date: Tue, 24 Feb 2026 11:06:56 +0100 Subject: [PATCH 10/10] update coral-visualizer to show solution field + changelog --- CHANGELOG.md | 2 +- coral-visualizer | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b613a6f..2f90ecc8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -112,7 +112,7 @@ See [docs/changelog-template.md](docs/changelog-template.md) for formatting your ### Submodules -- [#151](https://github.com/2listic/dealiiX-platform/pull/151) Coral submodule updated to include Step 4 Poisson Solver. Coral-Visualizer submodule updated to support .vtu files. +- [#151](https://github.com/2listic/dealiiX-platform/pull/151) Coral submodule updated to include Step 4 Poisson Solver. Coral-Visualizer submodule updated to support .vtu files and show solution field. - [#95](https://github.com/2listic/dealiiX-platform/pull/95) Coral Visualizer submodule updated to show carotid vtk file + fix add Coral submodule. ### Docker diff --git a/coral-visualizer b/coral-visualizer index 30ef4b42..3bb6042d 160000 --- a/coral-visualizer +++ b/coral-visualizer @@ -1 +1 @@ -Subproject commit 30ef4b42c0bcd1ec6e68d1c7fb6f25231bcc4aa4 +Subproject commit 3bb6042dd85d17fd7b7e6b9c67bfeff2facde7ea