Skip to content

Commit

Permalink
Merge pull request #180 from json-scada/master
Browse files Browse the repository at this point in the history
Version 0.42-alpha
  • Loading branch information
riclolsen authored Dec 1, 2024
2 parents bc1868e + 18f88cf commit ac0cb62
Show file tree
Hide file tree
Showing 12 changed files with 65 additions and 17 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
- MongoDB as the real-time core database, persistence layer, config store, SOE historian.
- Event-based realtime async data processing with MongoDB Change Streams.
- Portability and modular interoperability over Linux, Windows, Mac OSX, x86/64, ARM.
- Windows installer available in the [releases section](https://github.com/riclolsen/json-scada/releases/tag/V0.41-alpha).
- Windows installer available in the [releases section](https://github.com/riclolsen/json-scada/releases/tag/V0.42-alpha).
- Unlimited tags, servers, and users.
- Horizontal scalability, from a single computer to big clusters (MongoDB-sharding), Docker containers, VMs, Kubernetes, cloud, or hybrid deployments.
- Modular distributed architecture. Lightweight redundant data acquisition nodes can connect securely over TLS to the database server. E.g. a Raspberry PI can be a data acquisition node.
Expand Down Expand Up @@ -90,7 +90,7 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
## Documentation

- [Generic Install Guide](https://github.com/riclolsen/json-scada/blob/master/docs/install.md)
- [Windows Installer](https://github.com/riclolsen/json-scada/releases/tag/V0.41-alpha)
- [Windows Installer](https://github.com/riclolsen/json-scada/releases/tag/V0.42-alpha)
- [RedHat/Rocky Linux Installer](https://github.com/riclolsen/json-scada/blob/master/docs/install.md#rhel94-and-compatible-systems-automated-installation)
- [Docker Demo](https://github.com/riclolsen/json-scada/blob/master/demo-docker/README.md)
- [Schema Documentation](https://github.com/riclolsen/json-scada/blob/master/docs/schema.md)
Expand Down
2 changes: 1 addition & 1 deletion demo-docker/mongo_seed/files/demo_connections.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{"_id":{"$oid":"5f108e3e3d8adfd3eccb206e"},"protocolDriver":"IEC60870-5-104_SERVER","protocolDriverInstanceNumber":1,"protocolConnectionNumber":1001,"name":"IEC104DIST","description":"Demo distribution of IEC 104","enabled":true,"commandsEnabled":true,"ipAddressLocalBind":"0.0.0.0:2404","ipAddresses":[],"localLinkAddress":1.0,"remoteLinkAddress":2.0,"giInterval":null,"testCommandInterval":0.0,"timeSyncInterval":0.0,"sizeOfCOT":2.0,"sizeOfCA":2.0,"sizeOfIOA":3.0,"k":12.0,"w":8.0,"t0":10.0,"t1":15.0,"t2":10.0,"t3":20.0,"serverModeMultiActive":true,"maxClientConnections":20.0,"maxQueueSize":5000.0,"stats":null}
{"_id":{"$oid":"5f1090143d8adfd3eccb206f"},"protocolDriver":"IEC60870-5-104","protocolDriverInstanceNumber":1,"protocolConnectionNumber":61,"name":"IEC104DEMO","description":"Demo via IEC60870-5-104","enabled":true,"commandsEnabled":true,"ipAddressLocalBind":"","ipAddresses":["129.153.76.210:2404","150.230.171.172:2404"],"localLinkAddress":2.0,"remoteLinkAddress":1.0,"giInterval":250.0,"testCommandInterval":60.0,"timeSyncInterval":650.0,"sizeOfCOT":2.0,"sizeOfCA":2.0,"sizeOfIOA":3.0,"k":12.0,"w":8.0,"t0":10.0,"t1":15.0,"t2":10.0,"t3":20.0,"stats":null}
{"_id":{"$oid":"5ff3512268d80d68205b403f"},"protocolDriver":"OPC-UA","protocolDriverInstanceNumber":1,"protocolConnectionNumber":1003,"name":"OPCClient1","description":"OPC Client 1","enabled":true,"commandsEnabled":true,"endpointURLs":["opc.tcp://opcua.demo-this.com:51210/UA/SampleServer"],"configFileName":"c:\\json-scada\\conf\\Opc.Ua.DefaultClient.Config.xml","autoCreateTags":true,"useSecurity":false,"stats":null}
{"_id":{"$oid":"606c93aa46fda805647cce53"},"protocolDriver":"MQTT-SPARKPLUG-B","protocolDriverInstanceNumber":1,"protocolConnectionNumber":1200,"name":"MQTT-BROKER","description":"MQTT Demo","enabled":true,"commandsEnabled":true,"autoCreateTags":true,"endpointURLs":["mqtt://test.mosquitto.org:1883"],"topics":["spBv1.0/Edge Nodes/#","spBv1.0/MIMIC/#","home/Solax/livedata/$.*~"],"groupId":"","edgeNodeId":"","deviceId":"","scadaHostId":"","username":"","password":"","useSecurity":false,"chainValidation":true,"rootCertFilePath":"","localCertFilePath":"","privateKeyFilePath":"","pfxFilePath":"","passphrase":"","allowTLSv10":false,"allowTLSv11":false,"allowTLSv12":true,"allowTLSv13":true,"cipherList":"","publishTopicRoot":"","topicsAsFiles":[],"topicsScripted":[],"clientId":"","stats":null}
{"_id":{"$oid":"606c93aa46fda805647cce53"},"protocolDriver":"MQTT-SPARKPLUG-B","protocolDriverInstanceNumber":1,"protocolConnectionNumber":1200,"name":"MQTT-BROKER","description":"MQTT Demo","enabled":true,"commandsEnabled":true,"autoCreateTags":true,"endpointURLs":["mqtt://broker.hivemq.com:1883"],"topics":["spBv1.0/Edge Nodes/#","spBv1.0/Axxela/#","testtopic/munich/$.*~"],"groupId":"","edgeNodeId":"","deviceId":"","scadaHostId":"","username":"","password":"","useSecurity":false,"chainValidation":true,"rootCertFilePath":"","localCertFilePath":"","privateKeyFilePath":"","pfxFilePath":"","passphrase":"","allowTLSv10":false,"allowTLSv11":false,"allowTLSv12":true,"allowTLSv13":true,"cipherList":"","publishTopicRoot":"","topicsAsFiles":[],"topicsScripted":[],"clientId":"","stats":null}
{"_id":{"$oid":"60da25c2040e43523c8f4f57"},"protocolDriver":"OPC-UA_SERVER","protocolDriverInstanceNumber":1,"protocolConnectionNumber":123,"name":"OPC-UA DIST","description":"Test distribution of OPC-UA","enabled":true,"commandsEnabled":true,"ipAddressLocalBind":"0.0.0.0:4840","ipAddresses":[],"groupId":"UA/Test","topics":["KOR1","KAW2"],"stats":null}
{"_id":{"$oid":"6053887ea2e672638cc751d4"},"protocolDriver":"TELEGRAF-LISTENER","protocolDriverInstanceNumber":1,"protocolConnectionNumber":2001,"name":"TELEGRAFDEMO","description":"TELEGRAF Demo","enabled": true,"commandsEnabled":false,"ipAddresses":["127.0.0.1"],"ipAddressLocalBind":"0.0.0.0:51920","stats":null}
{"_id":{"$oid":"6675d176e2f7917450d7585b"},"protocolDriver":"PLC4X","protocolDriverInstanceNumber":1,"protocolConnectionNumber":2003,"name":"PLC1","description":"PLC #1 MODBUS","enabled":true,"commandsEnabled":true,"topics":["MBPLC1_HR1|holding-register:1:UINT","MBPLC1_10HRS|holding-register:2:INT[10]"],"autoCreateTags": true,"endpointURLs":["modbus-tcp://localhost:5001?unit-identifier=2"],"giInterval": 1.5,"stats":null}
Expand Down
2 changes: 1 addition & 1 deletion demo-docker/mongo_seed/files/demo_connections_linux.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{"_id":{"$oid":"5f108e3e3d8adfd3eccb206e"},"protocolDriver":"IEC60870-5-104_SERVER","protocolDriverInstanceNumber":1,"protocolConnectionNumber":1001,"name":"IEC104DIST","description":"Demo distribution of IEC 104","enabled":true,"commandsEnabled":true,"ipAddressLocalBind":"0.0.0.0:2404","ipAddresses":[],"localLinkAddress":1.0,"remoteLinkAddress":2.0,"giInterval":null,"testCommandInterval":0.0,"timeSyncInterval":0.0,"sizeOfCOT":2.0,"sizeOfCA":2.0,"sizeOfIOA":3.0,"k":12.0,"w":8.0,"t0":10.0,"t1":15.0,"t2":10.0,"t3":20.0,"serverModeMultiActive":true,"maxClientConnections":20.0,"maxQueueSize":5000.0,"stats":null}
{"_id":{"$oid":"5f1090143d8adfd3eccb206f"},"protocolDriver":"IEC60870-5-104","protocolDriverInstanceNumber":1,"protocolConnectionNumber":61,"name":"IEC104DEMO","description":"Demo via IEC60870-5-104","enabled":true,"commandsEnabled":true,"ipAddressLocalBind":"","ipAddresses":["129.153.76.210:2404","150.230.171.172:2404"],"localLinkAddress":2.0,"remoteLinkAddress":1.0,"giInterval":250.0,"testCommandInterval":60.0,"timeSyncInterval":650.0,"sizeOfCOT":2.0,"sizeOfCA":2.0,"sizeOfIOA":3.0,"k":12.0,"w":8.0,"t0":10.0,"t1":15.0,"t2":10.0,"t3":20.0,"stats":null}
{"_id":{"$oid":"5ff3512268d80d68205b403f"},"protocolDriver":"OPC-UA","protocolDriverInstanceNumber":1,"protocolConnectionNumber":1003,"name":"OPCClient1","description":"OPC Client 1","enabled":true,"commandsEnabled":true,"endpointURLs":["opc.tcp://opcua.demo-this.com:51210/UA/SampleServer"],"configFileName":"/home/jsonscada/json-scada/conf/Opc.Ua.DefaultClient.Config.xml","autoCreateTags":true,"useSecurity":false,"stats":null}
{"_id":{"$oid":"606c93aa46fda805647cce53"},"protocolDriver":"MQTT-SPARKPLUG-B","protocolDriverInstanceNumber":1,"protocolConnectionNumber":1200,"name":"MQTT-BROKER","description":"MQTT Demo","enabled":true,"commandsEnabled":true,"autoCreateTags":true,"endpointURLs":["mqtt://test.mosquitto.org:1883"],"topics":["spBv1.0/Edge Nodes/#","spBv1.0/MIMIC/#","home/Solax/livedata/$.*~"],"groupId":"","edgeNodeId":"","deviceId":"","scadaHostId":"","username":"","password":"","useSecurity":false,"chainValidation":true,"rootCertFilePath":"","localCertFilePath":"","privateKeyFilePath":"","pfxFilePath":"","passphrase":"","allowTLSv10":false,"allowTLSv11":false,"allowTLSv12":true,"allowTLSv13":true,"cipherList":"","publishTopicRoot":"","topicsAsFiles":[],"topicsScripted":[],"clientId":"","stats":null}
{"_id":{"$oid":"606c93aa46fda805647cce53"},"protocolDriver":"MQTT-SPARKPLUG-B","protocolDriverInstanceNumber":1,"protocolConnectionNumber":1200,"name":"MQTT-BROKER","description":"MQTT Demo","enabled":true,"commandsEnabled":true,"autoCreateTags":true,"endpointURLs":["mqtt://broker.hivemq.com:1883"],"topics":["spBv1.0/Edge Nodes/#","spBv1.0/Axxela/#","testtopic/munich/$.*~"],"groupId":"","edgeNodeId":"","deviceId":"","scadaHostId":"","username":"","password":"","useSecurity":false,"chainValidation":true,"rootCertFilePath":"","localCertFilePath":"","privateKeyFilePath":"","pfxFilePath":"","passphrase":"","allowTLSv10":false,"allowTLSv11":false,"allowTLSv12":true,"allowTLSv13":true,"cipherList":"","publishTopicRoot":"","topicsAsFiles":[],"topicsScripted":[],"clientId":"","stats":null}
{"_id":{"$oid":"60da25c2040e43523c8f4f57"},"protocolDriver":"OPC-UA_SERVER","protocolDriverInstanceNumber":1,"protocolConnectionNumber":123,"name":"OPC-UA DIST","description":"Test distribution of OPC-UA","enabled":true,"commandsEnabled":true,"ipAddressLocalBind":"0.0.0.0:4840","ipAddresses":[],"groupId":"UA/Test","topics":["KOR1","KAW2"],"stats":null}
{"_id":{"$oid":"6053887ea2e672638cc751d4"},"protocolDriver":"TELEGRAF-LISTENER","protocolDriverInstanceNumber":1,"protocolConnectionNumber":2001,"name": "TELEGRAFDEMO","description":"TELEGRAF Demo","enabled": true,"commandsEnabled":false,"ipAddresses":["127.0.0.1"],"ipAddressLocalBind":"0.0.0.0:51920","stats":null}
{"_id":{"$oid":"6675d176e2f7917450d7585b"},"protocolDriver":"PLC4X","protocolDriverInstanceNumber":1,"protocolConnectionNumber":2003,"name":"PLC1","description":"PLC #1 MODBUS","enabled":true,"commandsEnabled":true,"topics":["MBPLC1_HR1|holding-register:1:UINT","MBPLC1_10HRS|holding-register:2:INT[10]"],"autoCreateTags": true,"endpointURLs":["modbus-tcp://localhost:5001?unit-identifier=2"],"giInterval": 1.5,"stats":null}
Expand Down
4 changes: 2 additions & 2 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
- MongoDB as the real-time core database, persistence layer, config store, SOE historian.
- Event-based realtime async data processing with MongoDB Change Streams.
- Portability and modular interoperability over Linux, Windows, Mac OSX, x86/64, ARM.
- Windows installer available in the [releases section](https://github.com/riclolsen/json-scada/releases/tag/V0.41-alpha).
- Windows installer available in the [releases section](https://github.com/riclolsen/json-scada/releases/tag/V0.42-alpha).
- Unlimited tags, servers, and users.
- Horizontal scalability, from a single computer to big clusters (MongoDB-sharding), Docker containers, VMs, Kubernetes, cloud, or hybrid deployments.
- Modular distributed architecture. Lightweight redundant data acquisition nodes can connect securely over TLS to the database server. E.g. a Raspberry PI can be a data acquisition node.
Expand Down Expand Up @@ -90,7 +90,7 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
## Documentation

- [Generic Install Guide](docs/install.md)
- [Windows Installer](https://github.com/riclolsen/json-scada/releases/tag/V0.41-alpha)
- [Windows Installer](https://github.com/riclolsen/json-scada/releases/tag/V0.42-alpha)
- [RedHat/Rocky Linux Installer](docs/install.md#rhel94-and-compatible-systems-automated-installation)
- [Install Guide](docs/install.md)
- [Docker Demo](demo-docker/README.md)
Expand Down
8 changes: 4 additions & 4 deletions platform-windows/json-scada.nsi
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ RequestExecutionLevel admin

;--------------------------------

!define VERSION "v.0.41"
!define VERSION_ "0.41.0.0"
!define VERSION "v.0.42"
!define VERSION_ "0.42.0.0"

Function .onInit
System::Call 'keexrnel32::CreateMutexA(i 0, i 0, t "MutexJsonScadaInstall") i .r1 ?e'
Expand Down Expand Up @@ -245,7 +245,7 @@ SetRegView 64
File /a "..\platform-windows\nssm.exe"
File /a "..\platform-windows\sounder.exe"
File /a "..\platform-windows\vc_redist.x64.exe"
File /a "..\platform-windows\dotnet-runtime-8.0.10-win-x64.exe"
File /a "..\platform-windows\dotnet-runtime-8.0.11-win-x64.exe"
File /a "..\platform-windows\OPC Core Components Redistributable (x64) 3.00.108.msi"
;File /a "..\platform-windows\gbda_aut.dll"
;File /a "..\platform-windows\gbhda_aw.dll"
Expand All @@ -264,7 +264,7 @@ SetRegView 64
Sleep 1000
ExecWait '"$INSTDIR\platform-windows\vc_redist.x64.exe" /install /passive /quiet'
Sleep 1000
ExecWait '"$INSTDIR\platform-windows\dotnet-runtime-8.0.10-win-x64.exe" /install /passive /quiet'
ExecWait '"$INSTDIR\platform-windows\dotnet-runtime-8.0.11-win-x64.exe" /install /passive /quiet'
Sleep 1000
ExecWait 'msiexec /i "$INSTDIR\platform-windows\OPC Core Components Redistributable (x64) 3.00.108.msi" /qn'
Sleep 1000
Expand Down
26 changes: 25 additions & 1 deletion platform-windows/release_notes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,29 @@ See official repo:
Inkscape+SAGE:
* See http://wiki.inkscape.org/wiki/index.php/Compiling_Inkscape_on_Windows_with_MSYS2.

-------------------------------------------------------------------

Notes for version 0.42:

* ATTENTION: The default SVG folder has been moved to "c:\json-scada\svg\".

* Default login credentials: username=admin password=jsonscada.
* Metabase credentials: [email protected] password=jsonscada123.
* Fix add protocolDestination and calculation parcels in AdminUI.
* MQTT/Sparkplug: manage reconnection to broker, better property exploding with JSONPATH, only send node rebirths after 30s of the last one sent.
* Telegraf runtime updated to 1.32.3.
* Chromium updated to 131.0.6778.86.
* Dotnet runtime updated to 8.0.11.

Requirements and recommendations:

* Windows 10/11 64 bits or Server >=2019, Windows PowerShell. At least 20GB of free space in the "C:" drive.
* Administrative rights. Corporate Windows policies may cause problems with the creation of services and the opening of TCP ports.
* Free TCP ports 6688, 6689, 27017, 5432, 80, 8080, 3000, 3001, 9000. Other ports may be required for optional services and protocols.
* If the server already has MongoDB, PostgreSQL, Grafana, Metabase, Nginx or another webserver, please uninstall, disable or watch out for possible conflicts.
* Do not update previously installed JSON-SCADA. Please uninstall previous JSON-SCADA versions before installing a new version.
* If using VirtualBox configure "paravirtualization interface"=KVM, otherwise Nodejs errors may occur.
* MongoDB requires AVX instructions on x86 CPU.

-------------------------------------------------------------------

Expand Down Expand Up @@ -160,6 +183,7 @@ Requirements and recommendations:
* Do not update previously installed JSON-SCADA. Please uninstall previous JSON-SCADA versions before installing a new version.
* If using VirtualBox configure "paravirtualization interface"=KVM, otherwise Nodejs errors may occur.
* MongoDB requires AVX instructions on x86 CPU.

-------------------------------------------------------------------

Notes for version 0.40:
Expand All @@ -168,7 +192,7 @@ Notes for version 0.40:

* Default login credentials: username=admin password=jsonscada.
* Metabase credentials: [email protected] password=jsonscada123.
* Fixed problems with some new AdminUI dialogs. *
* Fixed problems with some new AdminUI dialogs.
* NPM packages updated.
* MongoDB Community Server updated to 8.0.3.
* MongoDB Compass updated to 1.44.6.
Expand Down
2 changes: 1 addition & 1 deletion src/AdminUI/public/i18n/messages_i18n-en_us.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
var Msg =
{
NomeProduto: '{json:scada}',
VersaoProduto: '0.41',
VersaoProduto: '0.42',

NomeVisorTelas: 'Display Viewer',
NomeVisorEventos: 'Events Viewer',
Expand Down
2 changes: 1 addition & 1 deletion src/AdminUI/public/i18n/messages_i18n-pt_br.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
var Msg =
{
NomeProduto: '{json:scada}',
VersaoProduto: '0.41',
VersaoProduto: '0.42',

NomeVisorTelas: 'Visor de Telas',
NomeVisorEventos: 'Visor de Eventos',
Expand Down
2 changes: 1 addition & 1 deletion src/AdminUI/public/i18n/messages_i18n-uk_ua.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
var Msg =
{
NomeProduto: '{json:scada}',
VersaoProduto: '0.41',
VersaoProduto: '0.42',

NomeVisorTelas: 'Перегляд ',
NomeVisorEventos: 'Події',
Expand Down
2 changes: 1 addition & 1 deletion src/AdminUI/public/i18n/messages_i18n.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
var Msg =
{
NomeProduto: '{json:scada}',
VersaoProduto: '0.41',
VersaoProduto: '0.42',

NomeVisorTelas: 'Display Viewer',
NomeVisorEventos: 'Events Viewer',
Expand Down
26 changes: 25 additions & 1 deletion src/AdminUI/public/release_notes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,29 @@ See official repo:
Inkscape+SAGE:
* See http://wiki.inkscape.org/wiki/index.php/Compiling_Inkscape_on_Windows_with_MSYS2.

-------------------------------------------------------------------

Notes for version 0.42:

* ATTENTION: The default SVG folder has been moved to "c:\json-scada\svg\".

* Default login credentials: username=admin password=jsonscada.
* Metabase credentials: [email protected] password=jsonscada123.
* Fix add protocolDestination and calculation parcels in AdminUI.
* MQTT/Sparkplug: manage reconnection to broker, better property exploding with JSONPATH, only send node rebirths after 30s of the last one sent.
* Telegraf runtime updated to 1.32.3.
* Chromium updated to 131.0.6778.86.
* Dotnet runtime updated to 8.0.11.

Requirements and recommendations:

* Windows 10/11 64 bits or Server >=2019, Windows PowerShell. At least 20GB of free space in the "C:" drive.
* Administrative rights. Corporate Windows policies may cause problems with the creation of services and the opening of TCP ports.
* Free TCP ports 6688, 6689, 27017, 5432, 80, 8080, 3000, 3001, 9000. Other ports may be required for optional services and protocols.
* If the server already has MongoDB, PostgreSQL, Grafana, Metabase, Nginx or another webserver, please uninstall, disable or watch out for possible conflicts.
* Do not update previously installed JSON-SCADA. Please uninstall previous JSON-SCADA versions before installing a new version.
* If using VirtualBox configure "paravirtualization interface"=KVM, otherwise Nodejs errors may occur.
* MongoDB requires AVX instructions on x86 CPU.

-------------------------------------------------------------------

Expand Down Expand Up @@ -160,6 +183,7 @@ Requirements and recommendations:
* Do not update previously installed JSON-SCADA. Please uninstall previous JSON-SCADA versions before installing a new version.
* If using VirtualBox configure "paravirtualization interface"=KVM, otherwise Nodejs errors may occur.
* MongoDB requires AVX instructions on x86 CPU.

-------------------------------------------------------------------

Notes for version 0.40:
Expand All @@ -168,7 +192,7 @@ Notes for version 0.40:

* Default login credentials: username=admin password=jsonscada.
* Metabase credentials: [email protected] password=jsonscada123.
* Fixed problems with some new AdminUI dialogs. *
* Fixed problems with some new AdminUI dialogs.
* NPM packages updated.
* MongoDB Community Server updated to 8.0.3.
* MongoDB Compass updated to 1.44.6.
Expand Down
2 changes: 1 addition & 1 deletion src/AdminUI/src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@
import { useRouter } from 'vue-router'
import { STORAGE_KEY } from './i18n'
const version = ref('v0.41-alpha')
const version = ref('v0.42-alpha')
const router = useRouter()
const theme = ref('dark')
const vuetifyTheme = useTheme()
Expand Down

0 comments on commit ac0cb62

Please sign in to comment.