Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
36f821b
Bump tar from 7.5.10 to 7.5.11 in /gui-js
dependabot[bot] Mar 11, 2026
696cfc5
Initial plan
Copilot Mar 17, 2026
aef3cc7
Fix Windows canvas deadlock: make destroyFrame synchronous and fix WM…
Copilot Mar 17, 2026
9d7b0a7
Fix Windows canvas deadlock: drawNativeWindows lock scope and remove …
Copilot Mar 17, 2026
718825d
Revert drawNativeWindows mutex release and destroyFrame synchronous d…
Copilot Mar 17, 2026
9cf906f
Fix warnings.
highperformancecoder Mar 19, 2026
8cca9f1
Fix warnings.
highperformancecoder Mar 19, 2026
a2dac78
Merge pull request #628 from highperformancecoder/copilot/fix-canvas-…
highperformancecoder Mar 19, 2026
8e03253
Release 3.25.0
highperformancecoder Mar 19, 2026
3a8601c
Pass CPLUSPLUS to EcoLab via MAKEOVERRIDES
highperformancecoder Mar 20, 2026
bee0ec2
Fix PlotWidget moveTo/position resolving to empty EventInterface stubs
primesoftnz Mar 20, 2026
7ee5fd1
Release 3.25.1
highperformancecoder Mar 20, 2026
86d0dd2
Pass MAKEOVERRIDES to test directory.
highperformancecoder Mar 20, 2026
967bc63
Fix test builds on Linux, now for testing Windows builds.
highperformancecoder Mar 20, 2026
21994a2
Merge branch 'fix/plotwidget-moveto-position' of github.com:primesoft…
highperformancecoder Mar 21, 2026
bc91900
Bump handlebars from 4.7.8 to 4.7.9 in /gui-js
dependabot[bot] Mar 27, 2026
679ba02
Bump brace-expansion from 1.1.12 to 1.1.13 in /gui-js
dependabot[bot] Mar 27, 2026
a25a4d4
Bump node-forge from 1.3.3 to 1.4.0 in /gui-js
dependabot[bot] Mar 29, 2026
9614def
Added a "bulk" Linear regression operator that returns a tensor of
highperformancecoder Mar 29, 2026
b085eea
Fix bulkLinearRegression: null ptr guards, LaTeX/render fixes, and ad…
Copilot Mar 30, 2026
7e01fa5
Address CodeRabbit and Copilot nits.
highperformancecoder Mar 30, 2026
3d969c8
Merge branch 'feature-bulk-linear-regression' of github.com:highperfo…
highperformancecoder Mar 30, 2026
a54d3f0
Merge pull request #634 from highperformancecoder/feature-bulk-linear…
highperformancecoder Mar 30, 2026
7d39042
Update manual
highperformancecoder Mar 30, 2026
35376df
Remove some spurious files added at last commit.
highperformancecoder Mar 30, 2026
bdba0e2
Merge branch 'master' of github.com:highperformancecoder/minsky
highperformancecoder Mar 30, 2026
a46bfd3
Merge branch 'master' into dependabot/npm_and_yarn/gui-js/tar-7.5.11
highperformancecoder Mar 31, 2026
f94abfa
Merge branch 'master' into dependabot/npm_and_yarn/gui-js/handlebars-…
highperformancecoder Mar 31, 2026
3c18e23
Merge branch 'master' into dependabot/npm_and_yarn/gui-js/brace-expan…
highperformancecoder Mar 31, 2026
50a6620
Merge branch 'master' into dependabot/npm_and_yarn/gui-js/node-forge-…
highperformancecoder Mar 31, 2026
7ba2cff
Upgrade Angular from 20.3.17->20.3.18
highperformancecoder Mar 31, 2026
0f5d248
Initial plan
Copilot Apr 8, 2026
58792a4
Fix Angular 21 change detection issues in header, import-csv, connect…
Copilot Apr 8, 2026
b7b8f63
Merge remote-tracking branch 'origin/develop' into copilot/fix-header…
Copilot Apr 8, 2026
08eaaee
Apply change pattern to new-database component as well.
highperformancecoder Apr 8, 2026
c9606be
Coalesce observer notifactions in header module.
highperformancecoder Apr 8, 2026
cb7779c
Code rabbit nits fixed.
highperformancecoder Apr 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
23 changes: 15 additions & 8 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@ endif

MAKEOVERRIDES+=DEBUG=$(DEBUG)

ifndef MXE
ifdef MXE
CPLUSPLUSOVERRIDE=
else
ifdef GCC
COMPILER=g++
else
Expand All @@ -44,23 +46,27 @@ COMPILER=g++
endif
LINK=$(COMPILER)
endif
endif
export COMPILER
export CPLUSPLUS=$(COMPILER)
CPLUSPLUSOVERRIDE=CPLUSPLUS="$(COMPILER)"
endif

ifneq ($(MAKECMDGOALS),clean)
# make sure EcoLab is built first, even before starting to include Makefiles
# disable AEGIS build here, as EcoLab 6 is still a little raw
build_ecolab:=$(shell cd ecolab; if $(MAKE) $(MAKEOVERRIDES) CPLUSPLUS="$(COMPILER)" AEGIS= $(JOBS) only-libs >build.log 2>&1; then echo "ecolab built"; fi)
build_ecolab:=$(shell cd ecolab; if $(MAKE) $(MAKEOVERRIDES) $(CPLUSPLUSOVERRIDE) AEGIS= $(JOBS) only-libs >build.log 2>&1; then echo "ecolab built"; fi)

#$(warning $(build_ecolab))
ifneq ($(build_ecolab),ecolab built)
$(warning $(shell cat ecolab/build.log))
$(error Making ecolab failed: check ecolab/build.log)
endif
include $(ECOLAB_HOME)/include/Makefile

ifndef MXE
# rewrite CPLUSPLUS after clobber in Makefile
CPLUSPLUS=$(COMPILER)
endif

# link statically to ecolab (needed until all bugs in EcoLab 6 ironed out)
LIBS:=$(subst -lecolab,$(ECOLAB_HOME)/lib/libecolab.a,$(LIBS))
Expand All @@ -81,7 +87,7 @@ export GCOV
export CLASSDESC=$(shell pwd)/ecolab/classdesc/classdesc
MAKEOVERRIDES+=FPIC=1 CLASSDESC=$(CLASSDESC)
ifneq ($(MAKECMDGOALS),clean)
build_ravelcapi:=$(shell cd RavelCAPI; if $(MAKE) $(JOBS) $(MAKEOVERRIDES) CPLUSPLUS="$(COMPILER)" >build.log 2>&1; then echo "ravelcapi built"; fi)
build_ravelcapi:=$(shell cd RavelCAPI; if $(MAKE) $(JOBS) $(MAKEOVERRIDES) >build.log 2>&1; then echo "ravelcapi built"; fi)
$(warning $(build_ravelcapi))
ifneq ($(strip $(build_ravelcapi)),ravelcapi built)
$(error Making RavelCAPI failed: check RavelCAPI/build.log)
Expand Down Expand Up @@ -285,10 +291,10 @@ endif
ifdef MXE
EXE=.exe
DL=dll
FLAGS+=-DMXE
FLAGS+=-DMXE -D_WIN32 -DUSE_UNROLLED -Wa,-mbig-obj
CXXFLAGS+=-std=c++20
PYMINSKY=gui-js/dynamic_libraries/pyminsky.pyd
PYTHONCAPI=ecolab/classdesc/pythonCAPI.o # extra python.lib shims required on Windows
FLAGS+=-D_WIN32 -DUSE_UNROLLED -Wa,-mbig-obj
# DLLS that need to be copied into the binary directory
MXE_DLLS=libboost_thread-mt-x64 libbrotlidec libbrotlicommon libbz2 libcairo-2 \
libcroco-0 libcrypto-3-x64 \
Expand All @@ -302,8 +308,6 @@ libsoci libpq libsqlite
BINDIR=$(subst bin,$(MXE_PREFIX)/bin,$(dir $(shell which $(CPLUSPLUS))))
$(warning $(BINDIR))
DLLS=$(notdir $(wildcard $(MXE_DLLS:%=$(BINDIR)/%*.dll)))
# Add soci support for RAVELPRO
#DLLS+=$(wildcard $(BINDIR)/libsoci*.dll) $(BINDIR)/libpq.dll $(BINDIR)/libsqlite3-0.dll
else
EXE=
DL=so
Expand Down Expand Up @@ -551,6 +555,9 @@ doc/Ravel/labels.pl: $(wildcard doc/*.tex)
install-manual: doc/Ravel/labels.pl
rsync -r -z --progress --delete doc/minsky.html doc/Ravel $(SF_WEB)/manual

desktop-manual:
rsync -r --delete doc/minsky.html doc/Ravel gui-js/minsky-docs

# run this after every full release
install-release: install-doxydoc install-manual upload-schema

Expand Down
Binary file modified doc/Ravel.pdf
Binary file not shown.
9 changes: 8 additions & 1 deletion doc/Reference.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1468,12 +1468,19 @@ \subsubsection{Linear Regression}\label{Operation:linearRegression}

This operation performs linear regression of the inputs along a named
dimension. The output has the same rank and x-vector as the $x$ input,
and consists of the linear fitted $y$ values.
or the x-vector of the $y$ input, and consists of the linear fitted $y$ values.

The slope and intercept of the fitted line is available as a tooltip.

\noindent\includegraphics[width=\textwidth]{images/linearRegression}

\subsubsection{Bulk Linear Regression}\label{Operation:bulkLinearRegression}

This operation performs elementwise linear regression of the inputs
along a named dimension. The output has length along the named
dimension, reporting the slope and intercept of the fitted line, but
otherwise has the same dimensionality as the $x$ input.

\subsection{Switch}

\label{SwitchIcon}
Expand Down
1 change: 1 addition & 0 deletions engine/derivative.cc
Original file line number Diff line number Diff line change
Expand Up @@ -650,6 +650,7 @@ namespace MathDAG
VECTOR_DERIVATIVE_NOT_IMPLEMENTED(covariance)
VECTOR_DERIVATIVE_NOT_IMPLEMENTED(correlation)
VECTOR_DERIVATIVE_NOT_IMPLEMENTED(linearRegression)
VECTOR_DERIVATIVE_NOT_IMPLEMENTED(bulkLinearRegression)
VECTOR_DERIVATIVE_NOT_IMPLEMENTED(sum)
VECTOR_DERIVATIVE_NOT_IMPLEMENTED(product)
VECTOR_DERIVATIVE_NOT_IMPLEMENTED(infimum)
Expand Down
23 changes: 20 additions & 3 deletions engine/equationDisplayRender.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1009,7 +1009,7 @@ namespace MathDAG
parenthesise(surf, [&](Surface& surf){
arguments[0][0]->render(surf);
print(surf.cairo(),",",Anchor::nw);
arguments[0][1]->render(surf);
arguments[1][0]->render(surf);
});
}
else
Expand All @@ -1026,7 +1026,7 @@ namespace MathDAG
parenthesise(surf, [&](Surface& surf){
arguments[0][0]->render(surf);
print(surf.cairo(),",",Anchor::nw);
arguments[0][1]->render(surf);
arguments[1][0]->render(surf);
});
}
else
Expand All @@ -1043,7 +1043,24 @@ namespace MathDAG
parenthesise(surf, [&](Surface& surf){
arguments[0][0]->render(surf);
print(surf.cairo(),",",Anchor::nw);
arguments[0][1]->render(surf);
arguments[1][0]->render(surf);
});
}
else
print(surf.cairo(),"0",Anchor::nw);
}

template <>
void OperationDAG<OperationType::bulkLinearRegression>::render(Surface& surf) const
{
if (!arguments.empty() && !arguments[0].empty() && arguments[0][0] &&
arguments.size()>1 && !arguments[1].empty() && arguments[1][0])
{
print(surf.cairo(),"bLinReg",Anchor::nw);
parenthesise(surf, [&](Surface& surf){
arguments[0][0]->render(surf);
print(surf.cairo(),",",Anchor::nw);
arguments[1][0]->render(surf);
});
}
else
Expand Down
79 changes: 67 additions & 12 deletions engine/minskyTensorOps.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1111,8 +1111,7 @@ namespace minsky
}
};

// OperationType template parameter is arbitrary, its going to be overridden anyway
template <> struct GeneralTensorOp<OperationType::linearRegression>: public ITensor, public OpState
struct LinearRegression: public ITensor, public OpState
{
TensorPtr x, y;
std::size_t dimension;
Expand Down Expand Up @@ -1151,11 +1150,9 @@ namespace minsky
hypercube({});
return;
}
m_index=y->index();
hypercube(y->hypercube());

{
auto& xv=m_hypercube.xvectors;
auto& xv=y->hypercube().xvectors;
dimension=rank()>1? rank(): 0;
for (auto i=xv.begin(); i!=xv.end(); ++i)
if (i->name==args.dimension)
Expand All @@ -1171,7 +1168,7 @@ namespace minsky
}
else
{
if (rank()>1 && dimension>=rank()) return;
if (rank()>1 && dimension>=y->rank()) return;
// construct x from y's x-vector
auto tv=make_shared<TensorVal>();
spreadX=tv;
Expand Down Expand Up @@ -1206,14 +1203,33 @@ namespace minsky

assert(sumx.hypercube()==sumy.hypercube());
assert(sumx.index()==sumy.index());

this->x=spreadX;
this->y=y;
scale.index(sumx.index());
scale.hypercube(sumx.hypercube());
offset.index(sumx.index());
offset.hypercube(sumx.hypercube());
}

this->x=spreadX;
this->y=y;
civita::ITensor::Timestamp timestamp() const override {
if (!y) return {};
if (!x) return y->timestamp();
return std::max(x->timestamp(), y->timestamp());
}


};

// OperationType template parameter is arbitrary, its going to be overridden anyway
template <> struct GeneralTensorOp<OperationType::linearRegression>: public LinearRegression
{
void setArguments(const TensorPtr& y, const TensorPtr& x,
const ITensor::Args& args) override
{
LinearRegression::setArguments(y,x,args);
if (!y) return;
hypercube(y->hypercube());
m_index=y->index();
}

double operator[](size_t i) const override
Expand All @@ -1235,12 +1251,51 @@ namespace minsky
return scale[0]* (*x)[i] + offset[0];
}

civita::ITensor::Timestamp timestamp() const override {return std::max(x->timestamp(), y->timestamp());}

};

// OperationType template parameter is arbitrary, its going to be overridden anyway
template <> struct GeneralTensorOp<OperationType::bulkLinearRegression>: public LinearRegression
{
void setArguments(const TensorPtr& y, const TensorPtr& x,
const ITensor::Args& args) override
{
LinearRegression::setArguments(y,x,args);
if (!y) return;
if (dimension>=y->rank())
throw_error("Need to specify axis");
auto hc=y->hypercube();
hc.xvectors[dimension]=civita::XVector("Linear Parameters",{},{"Slope","Intercept"});
hypercube(hc);
m_index.clear();
}

double operator[](size_t i) const override
{
if (rank()>1 && dimension>=rank())
throw_error("Need to specify axis");
if (!x) return nan("");
assert(dimension<rank() || scale.size()==1);

if (timestamp()>m_timestamp) computeScaleAndOffset();

size_t param=i, hcIdx=0;
if (dimension<rank())
{
auto splitted=hypercube().splitIndex(i);
param=splitted[dimension];
splitted.erase(splitted.begin()+dimension);
hcIdx=scale.hypercube().linealIndex(splitted);
}
switch (param)
{
case 0: return scale.atHCIndex(hcIdx);
case 1: return offset.atHCIndex(hcIdx);
default: return nan("");
}
}

};


template <> struct GeneralTensorOp<OperationType::mean>: public civita::Average {};
template <> struct GeneralTensorOp<OperationType::stdDev>: public civita::StdDeviation {};

Expand Down
14 changes: 12 additions & 2 deletions engine/node_latex.cc
Original file line number Diff line number Diff line change
Expand Up @@ -399,11 +399,21 @@ namespace MathDAG
if (!arguments.empty() && !arguments[0].empty() && arguments[0][0] &&
arguments.size()>1 && !arguments[1].empty() && arguments[1][0])
return o<<"{\\mathrm{linReg}\\left("<<arguments[0][0]->latex()<<
","<<arguments[1][0]<<"\\right)";
","<<arguments[1][0]->latex()<<"\\right)}";
return o<<"0";
}


template <>
ostream& OperationDAG<OperationType::bulkLinearRegression>::latex(ostream& o) const
{
if (!arguments.empty() && !arguments[0].empty() && arguments[0][0] &&
arguments.size()>1 && !arguments[1].empty() && arguments[1][0])
return o<<"{\\mathrm{bLinReg}\\left("<<arguments[0][0]->latex()<<
","<<arguments[1][0]->latex()<<"\\right)}";
return o<<"0";
}



template <>
ostream& OperationDAG<OperationType::size>::latex(ostream& o) const
Expand Down
10 changes: 10 additions & 0 deletions engine/node_matlab.cc
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,16 @@ namespace MathDAG
return o<<"0";
}

template <>
ostream& OperationDAG<OperationType::bulkLinearRegression>::matlab(ostream& o) const
{
if (!arguments.empty() && !arguments[0].empty() && arguments[0][0] &&
arguments.size()>1 && !arguments[1].empty() && arguments[1][0])
return o<<"bLinReg("<<arguments[0][0]->matlab()<<"," <<
arguments[1][0]->matlab()<<")";
return o<<"0";
}

template <>
ostream& OperationDAG<OperationType::size>::matlab(ostream& o) const
{
Expand Down
13 changes: 5 additions & 8 deletions gui-js/apps/minsky-electron/jest.config.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,19 @@
/* eslint-disable */
import { createRequire } from 'module';
const require = createRequire(import.meta.url);

export default {
displayName: 'minsky-electron',
preset: '../../jest.preset.js',
setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
coverageDirectory: '../../coverage/apps/minsky-electron',
transform: {
'^.+\\.(ts|mjs|js|html)$': [
'jest-preset-angular',
{
tsconfig: '<rootDir>/tsconfig.spec.json',
stringifyContentPathRegex: '\\.(html|svg)$',
},
],
'^.+\\.[tj]s$': require.resolve('ts-jest'),
},
transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'],
snapshotSerializers: [
'jest-preset-angular/build/serializers/no-ng-attributes',
'jest-preset-angular/build/serializers/ng-snapshot',
'jest-preset-angular/build/serializers/html-comment',
],
};
};
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ abstract class HelpFilesManager {
private static topicNodeMap: Record<string, string> = {};

public static getHelpFileForType(type: string): string {
console.log(this.topicNodeMap);
if (type in this.topicNodeMap) {
return this.topicNodeMap[type];
}
Expand Down Expand Up @@ -46,7 +47,7 @@ abstract class HelpFilesManager {
const buffer = await fsPromises.readFile(fName);
if (buffer) {
const contents = buffer.toString();
const matches = contents.matchAll(/<A[ \t]+NAME="([^"]*)"/g);
const matches = contents.matchAll(/<A[ \t]+ID="([^"]*)"/g);
for (const match of matches) {
this.topicNodeMap[match[1]] = `minsky.html?Ravel/${path.basename(fName)}`;
}
Expand Down
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/acos.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/all.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/any.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/asin.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/atan.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/correlation.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/cos.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/cosh.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/covariance.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/difference.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/differentiate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/eq.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/euler.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/exp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/floor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/frac.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/index.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/inf.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/infIndex.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/infimum.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/innerProduct.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/le.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/ln.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/log.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/lt.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/max.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/median.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/min.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/percent.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/pi.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/polygamma.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/pow.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/product.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/runningAv.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/runningProduct.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/runningSum.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/shape.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/sin.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/sinh.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/size.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/slice.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/stdDev.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/sum.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/supIndex.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/supremum.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/tan.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/tanh.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/time.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/userFunction.png
Binary file modified gui-js/apps/minsky-web/src/assets/images/icons/zero.png
6 changes: 5 additions & 1 deletion gui-js/jest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,8 @@ import { getJestProjectsAsync } from '@nx/jest';

export default async () => ({
projects: await getJestProjectsAsync(),
});
// Add any global configurations here if needed
transform: {
'^.+\\.(ts|mjs|js|html)$': 'jest-preset-angular',
},
});
Loading
Loading