diff --git a/CMakeLists.txt b/CMakeLists.txt index d472022b..87f1c319 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,7 @@ endforeach() # Project details. -project(libOpenCOR VERSION 0.20251204.0) +project(libOpenCOR VERSION 0.20260211.0) # Enable C++20. diff --git a/README.md b/README.md index d31f8029..7dcde3cc 100644 --- a/README.md +++ b/README.md @@ -8,3 +8,4 @@ There are two versions of OpenCOR: 2. **OpenCOR's Web app:** a [Web app](https://en.wikipedia.org/wiki/Web_application) that can be run on a Web browser. [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/opencor/webapp) +![Alt](https://repobeats.axiom.co/api/embed/d0a1f79856e596650302d182fea50cdccfed853a.svg "Repobeats analytics image") diff --git a/bun.lock b/bun.lock index 74d3a19b..6362c36d 100644 --- a/bun.lock +++ b/bun.lock @@ -7,7 +7,7 @@ "@napi-rs/keyring": "^1.2.0", "@primeuix/themes": "^2.0.3", "@primevue/auto-import-resolver": "4.2.5", - "@vueuse/core": "^14.2.0", + "@vueuse/core": "^14.2.1", "crypto-js": "^4.2.0", "jsonschema": "^1.5.0", "jszip": "^3.10.1", @@ -26,7 +26,7 @@ "@tailwindcss/postcss": "^4.1.18", "@tailwindcss/vite": "^4.1.18", "@types/crypto-js": "^4.2.2", - "@types/node": "^25.2.2", + "@types/node": "^25.2.3", "@types/plotly.js": "^3.0.9", "@vitejs/plugin-vue": "^6.0.4", "@vue/tsconfig": "^0.8.1", @@ -40,7 +40,7 @@ "electron-vite": "^5.0.0", "esbuild": "^0.27.3", "node-addon-api": "^8.5.0", - "stylelint": "^17.1.1", + "stylelint": "^17.2.0", "stylelint-config-standard": "^40.0.0", "tailwindcss": "^4.1.18", "tailwindcss-primeui": "^0.6.1", @@ -117,6 +117,8 @@ "@cacheable/utils": ["@cacheable/utils@2.3.4", "", { "dependencies": { "hashery": "^1.3.0", "keyv": "^5.6.0" } }, "sha512-knwKUJEYgIfwShABS1BX6JyJJTglAFcEU7EXqzTdiGCXur4voqkiJkdgZIQtWNFhynzDWERcTYv/sETMu3uJWA=="], + "@csstools/css-calc": ["@csstools/css-calc@3.0.1", "", { "peerDependencies": { "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0" } }, "sha512-bsDKIP6f4ta2DO9t+rAbSSwv4EMESXy5ZIvzQl1afmD6Z1XHkVu9ijcG9QR/qSgQS1dVa+RaQ/MfQ7FIB/Dn1Q=="], + "@csstools/css-parser-algorithms": ["@csstools/css-parser-algorithms@4.0.0", "", { "peerDependencies": { "@csstools/css-tokenizer": "^4.0.0" } }, "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w=="], "@csstools/css-syntax-patches-for-csstree": ["@csstools/css-syntax-patches-for-csstree@1.0.26", "", {}, "sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA=="], @@ -389,7 +391,7 @@ "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], - "@types/node": ["@types/node@25.2.2", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-BkmoP5/FhRYek5izySdkOneRyXYN35I860MFAGupTdebyE66uZaR+bXLHq8k4DirE5DwQi3NuhvRU1jqTVwUrQ=="], + "@types/node": ["@types/node@25.2.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ=="], "@types/plist": ["@types/plist@3.0.5", "", { "dependencies": { "@types/node": "*", "xmlbuilder": ">=11.0.1" } }, "sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA=="], @@ -425,11 +427,11 @@ "@vue/tsconfig": ["@vue/tsconfig@0.8.1", "", { "peerDependencies": { "typescript": "5.x", "vue": "^3.4.0" }, "optionalPeers": ["typescript", "vue"] }, "sha512-aK7feIWPXFSUhsCP9PFqPyFOcz4ENkb8hZ2pneL6m2UjCkccvaOhC/5KCKluuBufvp2KzkbdA2W2pk20vLzu3g=="], - "@vueuse/core": ["@vueuse/core@14.2.0", "", { "dependencies": { "@types/web-bluetooth": "^0.0.21", "@vueuse/metadata": "14.2.0", "@vueuse/shared": "14.2.0" }, "peerDependencies": { "vue": "^3.5.0" } }, "sha512-tpjzVl7KCQNVd/qcaCE9XbejL38V6KJAEq/tVXj7mDPtl6JtzmUdnXelSS+ULRkkrDgzYVK7EerQJvd2jR794Q=="], + "@vueuse/core": ["@vueuse/core@14.2.1", "", { "dependencies": { "@types/web-bluetooth": "^0.0.21", "@vueuse/metadata": "14.2.1", "@vueuse/shared": "14.2.1" }, "peerDependencies": { "vue": "^3.5.0" } }, "sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ=="], - "@vueuse/metadata": ["@vueuse/metadata@14.2.0", "", {}, "sha512-i3axTGjU8b13FtyR4Keeama+43iD+BwX9C2TmzBVKqjSHArF03hjkp2SBZ1m72Jk2UtrX0aYCugBq2R1fhkuAQ=="], + "@vueuse/metadata": ["@vueuse/metadata@14.2.1", "", {}, "sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw=="], - "@vueuse/shared": ["@vueuse/shared@14.2.0", "", { "peerDependencies": { "vue": "^3.5.0" } }, "sha512-Z0bmluZTlAXgUcJ4uAFaML16JcD8V0QG00Db3quR642I99JXIDRa2MI2LGxiLVhcBjVnL1jOzIvT5TT2lqJlkA=="], + "@vueuse/shared": ["@vueuse/shared@14.2.1", "", { "peerDependencies": { "vue": "^3.5.0" } }, "sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw=="], "@wasm-fmt/clang-format": ["@wasm-fmt/clang-format@21.1.8", "", { "bin": { "clang-format": "clang-format-cli.cjs", "git-clang-format": "git-clang-format", "clang-format-diff": "clang-format-diff.py" } }, "sha512-RA+6pPO4LEQpn3nrIUGzbC+Wzw88nMmfBINWccSSmng2M7UZPdIbk7mfMJZqjxIDhMEXJZb3Z+OufDm746LtFw=="], @@ -1163,7 +1165,7 @@ "strip-json-comments": ["strip-json-comments@2.0.1", "", {}, "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="], - "stylelint": ["stylelint@17.1.1", "", { "dependencies": { "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-syntax-patches-for-csstree": "^1.0.25", "@csstools/css-tokenizer": "^4.0.0", "@csstools/media-query-list-parser": "^5.0.0", "@csstools/selector-resolve-nested": "^4.0.0", "@csstools/selector-specificity": "^6.0.0", "balanced-match": "^3.0.1", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.3", "css-tree": "^3.1.0", "debug": "^4.4.3", "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", "file-entry-cache": "^11.1.2", "global-modules": "^2.0.0", "globby": "^16.1.0", "globjoin": "^0.1.4", "html-tags": "^5.1.0", "ignore": "^7.0.5", "import-meta-resolve": "^4.2.0", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", "known-css-properties": "^0.37.0", "mathml-tag-names": "^4.0.0", "meow": "^14.0.0", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.5.6", "postcss-safe-parser": "^7.0.1", "postcss-selector-parser": "^7.1.1", "postcss-value-parser": "^4.2.0", "string-width": "^8.1.0", "supports-hyperlinks": "^4.4.0", "svg-tags": "^1.0.0", "table": "^6.9.0", "write-file-atomic": "^7.0.0" }, "bin": { "stylelint": "bin/stylelint.mjs" } }, "sha512-SBHVcLEcRF1M9OkD3oT0hT2PayDNLw2hd+aovmzfNQ2ys4Xd3oS9ZNizILWqhQvW802AqKN/vUTMwJqQYMBlWw=="], + "stylelint": ["stylelint@17.2.0", "", { "dependencies": { "@csstools/css-calc": "^3.0.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-syntax-patches-for-csstree": "^1.0.26", "@csstools/css-tokenizer": "^4.0.0", "@csstools/media-query-list-parser": "^5.0.0", "@csstools/selector-resolve-nested": "^4.0.0", "@csstools/selector-specificity": "^6.0.0", "balanced-match": "^3.0.1", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.3", "css-tree": "^3.1.0", "debug": "^4.4.3", "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", "file-entry-cache": "^11.1.2", "global-modules": "^2.0.0", "globby": "^16.1.0", "globjoin": "^0.1.4", "html-tags": "^5.1.0", "ignore": "^7.0.5", "import-meta-resolve": "^4.2.0", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", "known-css-properties": "^0.37.0", "mathml-tag-names": "^4.0.0", "meow": "^14.0.0", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.5.6", "postcss-safe-parser": "^7.0.1", "postcss-selector-parser": "^7.1.1", "postcss-value-parser": "^4.2.0", "string-width": "^8.1.0", "supports-hyperlinks": "^4.4.0", "svg-tags": "^1.0.0", "table": "^6.9.0", "write-file-atomic": "^7.0.0" }, "bin": { "stylelint": "bin/stylelint.mjs" } }, "sha512-602jhMkRt6P1dSh9kEzbFIaOKY//h4D0E7u/w2WHKxmi5VAjjMqe6P8rQPJuCWdbB3apOkjOFN5kcg6qWPIZWQ=="], "stylelint-config-recommended": ["stylelint-config-recommended@18.0.0", "", { "peerDependencies": { "stylelint": "^17.0.0" } }, "sha512-mxgT2XY6YZ3HWWe3Di8umG6aBmWmHTblTgu/f10rqFXnyWxjKWwNdjSWkgkwCtxIKnqjSJzvFmPT5yabVIRxZg=="], diff --git a/package.json b/package.json index b8339b52..c2e746d4 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "url": "git+https://github.com/opencor/webapp.git" }, "type": "module", - "version": "0.20260209.5", + "version": "0.20260211.0", "scripts": { "archive:web": "bun src/renderer/scripts/archive.web.js", "build": "electron-vite build", @@ -54,7 +54,7 @@ "@napi-rs/keyring": "^1.2.0", "@primeuix/themes": "^2.0.3", "@primevue/auto-import-resolver": "4.2.5", - "@vueuse/core": "^14.2.0", + "@vueuse/core": "^14.2.1", "crypto-js": "^4.2.0", "jsonschema": "^1.5.0", "jszip": "^3.10.1", @@ -73,7 +73,7 @@ "@tailwindcss/postcss": "^4.1.18", "@tailwindcss/vite": "^4.1.18", "@types/crypto-js": "^4.2.2", - "@types/node": "^25.2.2", + "@types/node": "^25.2.3", "@types/plotly.js": "^3.0.9", "@vitejs/plugin-vue": "^6.0.4", "@vue/tsconfig": "^0.8.1", @@ -87,7 +87,7 @@ "electron-vite": "^5.0.0", "esbuild": "^0.27.3", "node-addon-api": "^8.5.0", - "stylelint": "^17.1.1", + "stylelint": "^17.2.0", "stylelint-config-standard": "^40.0.0", "tailwindcss": "^4.1.18", "tailwindcss-primeui": "^0.6.1", diff --git a/src/renderer/bun.lock b/src/renderer/bun.lock index 4487a8c6..b2275bd8 100644 --- a/src/renderer/bun.lock +++ b/src/renderer/bun.lock @@ -7,7 +7,7 @@ "@napi-rs/keyring": "^1.2.0", "@primeuix/themes": "^2.0.3", "@primevue/auto-import-resolver": "4.2.5", - "@vueuse/core": "^14.2.0", + "@vueuse/core": "^14.2.1", "crypto-js": "^4.2.0", "jsonschema": "^1.5.0", "jszip": "^3.10.1", @@ -23,13 +23,13 @@ "@tailwindcss/postcss": "^4.1.18", "@tailwindcss/vite": "^4.1.18", "@types/crypto-js": "^4.2.2", - "@types/node": "^25.2.2", + "@types/node": "^25.2.3", "@types/plotly.js": "^3.0.9", "@vitejs/plugin-vue": "^6.0.4", "@vue/tsconfig": "^0.8.1", "autoprefixer": "^10.4.24", "esbuild": "^0.27.3", - "stylelint": "^17.1.1", + "stylelint": "^17.2.0", "stylelint-config-standard": "^40.0.0", "tailwindcss": "^4.1.18", "tailwindcss-primeui": "^0.6.1", @@ -77,6 +77,8 @@ "@cacheable/utils": ["@cacheable/utils@2.3.4", "", { "dependencies": { "hashery": "^1.3.0", "keyv": "^5.6.0" } }, "sha512-knwKUJEYgIfwShABS1BX6JyJJTglAFcEU7EXqzTdiGCXur4voqkiJkdgZIQtWNFhynzDWERcTYv/sETMu3uJWA=="], + "@csstools/css-calc": ["@csstools/css-calc@3.0.1", "", { "peerDependencies": { "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0" } }, "sha512-bsDKIP6f4ta2DO9t+rAbSSwv4EMESXy5ZIvzQl1afmD6Z1XHkVu9ijcG9QR/qSgQS1dVa+RaQ/MfQ7FIB/Dn1Q=="], + "@csstools/css-parser-algorithms": ["@csstools/css-parser-algorithms@4.0.0", "", { "peerDependencies": { "@csstools/css-tokenizer": "^4.0.0" } }, "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w=="], "@csstools/css-syntax-patches-for-csstree": ["@csstools/css-syntax-patches-for-csstree@1.0.26", "", {}, "sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA=="], @@ -293,7 +295,7 @@ "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], - "@types/node": ["@types/node@25.2.2", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-BkmoP5/FhRYek5izySdkOneRyXYN35I860MFAGupTdebyE66uZaR+bXLHq8k4DirE5DwQi3NuhvRU1jqTVwUrQ=="], + "@types/node": ["@types/node@25.2.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ=="], "@types/plotly.js": ["@types/plotly.js@3.0.9", "", {}, "sha512-nHKn7czWIPN7rT5wWI5qhML2O1Prm/Gx0NNe1MVr5GUL1zuzxbvIDmG7hlKMMtDsEtNfNQLMlMwk0CRtd3uqhg=="], @@ -321,11 +323,11 @@ "@vue/tsconfig": ["@vue/tsconfig@0.8.1", "", { "peerDependencies": { "typescript": "5.x", "vue": "^3.4.0" }, "optionalPeers": ["typescript", "vue"] }, "sha512-aK7feIWPXFSUhsCP9PFqPyFOcz4ENkb8hZ2pneL6m2UjCkccvaOhC/5KCKluuBufvp2KzkbdA2W2pk20vLzu3g=="], - "@vueuse/core": ["@vueuse/core@14.2.0", "", { "dependencies": { "@types/web-bluetooth": "^0.0.21", "@vueuse/metadata": "14.2.0", "@vueuse/shared": "14.2.0" }, "peerDependencies": { "vue": "^3.5.0" } }, "sha512-tpjzVl7KCQNVd/qcaCE9XbejL38V6KJAEq/tVXj7mDPtl6JtzmUdnXelSS+ULRkkrDgzYVK7EerQJvd2jR794Q=="], + "@vueuse/core": ["@vueuse/core@14.2.1", "", { "dependencies": { "@types/web-bluetooth": "^0.0.21", "@vueuse/metadata": "14.2.1", "@vueuse/shared": "14.2.1" }, "peerDependencies": { "vue": "^3.5.0" } }, "sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ=="], - "@vueuse/metadata": ["@vueuse/metadata@14.2.0", "", {}, "sha512-i3axTGjU8b13FtyR4Keeama+43iD+BwX9C2TmzBVKqjSHArF03hjkp2SBZ1m72Jk2UtrX0aYCugBq2R1fhkuAQ=="], + "@vueuse/metadata": ["@vueuse/metadata@14.2.1", "", {}, "sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw=="], - "@vueuse/shared": ["@vueuse/shared@14.2.0", "", { "peerDependencies": { "vue": "^3.5.0" } }, "sha512-Z0bmluZTlAXgUcJ4uAFaML16JcD8V0QG00Db3quR642I99JXIDRa2MI2LGxiLVhcBjVnL1jOzIvT5TT2lqJlkA=="], + "@vueuse/shared": ["@vueuse/shared@14.2.1", "", { "peerDependencies": { "vue": "^3.5.0" } }, "sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw=="], "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], @@ -643,7 +645,7 @@ "strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], - "stylelint": ["stylelint@17.1.1", "", { "dependencies": { "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-syntax-patches-for-csstree": "^1.0.25", "@csstools/css-tokenizer": "^4.0.0", "@csstools/media-query-list-parser": "^5.0.0", "@csstools/selector-resolve-nested": "^4.0.0", "@csstools/selector-specificity": "^6.0.0", "balanced-match": "^3.0.1", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.3", "css-tree": "^3.1.0", "debug": "^4.4.3", "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", "file-entry-cache": "^11.1.2", "global-modules": "^2.0.0", "globby": "^16.1.0", "globjoin": "^0.1.4", "html-tags": "^5.1.0", "ignore": "^7.0.5", "import-meta-resolve": "^4.2.0", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", "known-css-properties": "^0.37.0", "mathml-tag-names": "^4.0.0", "meow": "^14.0.0", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.5.6", "postcss-safe-parser": "^7.0.1", "postcss-selector-parser": "^7.1.1", "postcss-value-parser": "^4.2.0", "string-width": "^8.1.0", "supports-hyperlinks": "^4.4.0", "svg-tags": "^1.0.0", "table": "^6.9.0", "write-file-atomic": "^7.0.0" }, "bin": { "stylelint": "bin/stylelint.mjs" } }, "sha512-SBHVcLEcRF1M9OkD3oT0hT2PayDNLw2hd+aovmzfNQ2ys4Xd3oS9ZNizILWqhQvW802AqKN/vUTMwJqQYMBlWw=="], + "stylelint": ["stylelint@17.2.0", "", { "dependencies": { "@csstools/css-calc": "^3.0.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-syntax-patches-for-csstree": "^1.0.26", "@csstools/css-tokenizer": "^4.0.0", "@csstools/media-query-list-parser": "^5.0.0", "@csstools/selector-resolve-nested": "^4.0.0", "@csstools/selector-specificity": "^6.0.0", "balanced-match": "^3.0.1", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.3", "css-tree": "^3.1.0", "debug": "^4.4.3", "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", "file-entry-cache": "^11.1.2", "global-modules": "^2.0.0", "globby": "^16.1.0", "globjoin": "^0.1.4", "html-tags": "^5.1.0", "ignore": "^7.0.5", "import-meta-resolve": "^4.2.0", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", "known-css-properties": "^0.37.0", "mathml-tag-names": "^4.0.0", "meow": "^14.0.0", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.5.6", "postcss-safe-parser": "^7.0.1", "postcss-selector-parser": "^7.1.1", "postcss-value-parser": "^4.2.0", "string-width": "^8.1.0", "supports-hyperlinks": "^4.4.0", "svg-tags": "^1.0.0", "table": "^6.9.0", "write-file-atomic": "^7.0.0" }, "bin": { "stylelint": "bin/stylelint.mjs" } }, "sha512-602jhMkRt6P1dSh9kEzbFIaOKY//h4D0E7u/w2WHKxmi5VAjjMqe6P8rQPJuCWdbB3apOkjOFN5kcg6qWPIZWQ=="], "stylelint-config-recommended": ["stylelint-config-recommended@18.0.0", "", { "peerDependencies": { "stylelint": "^17.0.0" } }, "sha512-mxgT2XY6YZ3HWWe3Di8umG6aBmWmHTblTgu/f10rqFXnyWxjKWwNdjSWkgkwCtxIKnqjSJzvFmPT5yabVIRxZg=="], diff --git a/src/renderer/package.json b/src/renderer/package.json index 8c493b63..2ca0e912 100644 --- a/src/renderer/package.json +++ b/src/renderer/package.json @@ -39,7 +39,7 @@ }, "./style.css": "./dist/opencor.css" }, - "version": "0.20260209.5", + "version": "0.20260211.0", "scripts": { "build": "vite build && bun scripts/generate.version.js", "build:lib": "vite build --config vite.lib.config.ts && cp index.d.ts dist/index.d.ts", @@ -64,7 +64,7 @@ "@napi-rs/keyring": "^1.2.0", "@primeuix/themes": "^2.0.3", "@primevue/auto-import-resolver": "4.2.5", - "@vueuse/core": "^14.2.0", + "@vueuse/core": "^14.2.1", "crypto-js": "^4.2.0", "jsonschema": "^1.5.0", "jszip": "^3.10.1", @@ -80,13 +80,13 @@ "@tailwindcss/postcss": "^4.1.18", "@tailwindcss/vite": "^4.1.18", "@types/crypto-js": "^4.2.2", - "@types/node": "^25.2.2", + "@types/node": "^25.2.3", "@types/plotly.js": "^3.0.9", "@vitejs/plugin-vue": "^6.0.4", "@vue/tsconfig": "^0.8.1", "autoprefixer": "^10.4.24", "esbuild": "^0.27.3", - "stylelint": "^17.1.1", + "stylelint": "^17.2.0", "stylelint-config-standard": "^40.0.0", "tailwindcss": "^4.1.18", "tailwindcss-primeui": "^0.6.1", diff --git a/src/renderer/scripts/version.js b/src/renderer/scripts/version.js index 46eb13a8..18d746ac 100644 --- a/src/renderer/scripts/version.js +++ b/src/renderer/scripts/version.js @@ -2,48 +2,44 @@ import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; -// Major version. +// Current version from our package.json file. -const majorVersion = 0; - -// Minor version. +const scriptDirName = path.dirname(fileURLToPath(import.meta.url)); +const oldVersion = JSON.parse(fs.readFileSync(`${scriptDirName}/../package.json`)).version; -const now = new Date(); -const year = now.getFullYear(); -const month = now.getMonth() + 1; -const day = now.getDate(); -const minorVersion = `${year}${String(month).padStart(2, '0')}${String(day).padStart(2, '0')}`; +const oldVersionParts = oldVersion.split('.'); +const oldMajorVersion = oldVersionParts[0]; +const oldMinorVersion = oldVersionParts[1]; +const oldPatchVersion = oldVersionParts[2]; -// Patch version. +// Determine the new version based on the current version and the current date. -const scriptDirName = path.dirname(fileURLToPath(import.meta.url)); -const currentVersion = JSON.parse(fs.readFileSync(`${scriptDirName}/../package.json`)).version; -const currentVersionParts = currentVersion.split('.'); -let patchVersion = 0; +const now = new Date().toISOString().split('T')[0].replace(/-/g, ''); -patchVersion = parseInt(currentVersionParts[2], 10); +const newMajorVersion = oldMajorVersion; +const newMinorVersion = now; +let newPatchVersion = 0; -if (currentVersionParts[1] === minorVersion) { - ++patchVersion; -} else { - patchVersion = 0; +if (oldMinorVersion === newMinorVersion) { + newPatchVersion = parseInt(oldPatchVersion, 10) + 1; } -// (Full) version. - -const version = `${majorVersion}.${minorVersion}.${patchVersion}`; +const newVersion = `${newMajorVersion}.${newMinorVersion}.${newPatchVersion}`; // Update our package.json files. const updatePackageJsonFile = (filePath) => { const contents = JSON.parse(fs.readFileSync(filePath)); - contents.version = version; + contents.version = newVersion; fs.writeFileSync(filePath, `${JSON.stringify(contents, null, 2)}\n`); }; -// Perform the updates. - updatePackageJsonFile(`${scriptDirName}/../../../package.json`); updatePackageJsonFile(`${scriptDirName}/../package.json`); + +// Display the old and new versions. + +console.log(`\x1b[1mOld version:\x1b[0m ${oldVersion}`); +console.log(`\x1b[1mNew version:\x1b[0m ${newVersion}`); diff --git a/src/renderer/src/libopencor/locApi.ts b/src/renderer/src/libopencor/locApi.ts index 4d4f1e2f..6096e03e 100644 --- a/src/renderer/src/libopencor/locApi.ts +++ b/src/renderer/src/libopencor/locApi.ts @@ -146,7 +146,7 @@ export const initialiseLocApi = async () => { try { const libOpenCOR = ( await import( - /* @vite-ignore */ corsProxyUrl('https://opencor.ws/libopencor/downloads/wasm/libopencor-0.20251204.0.js') + /* @vite-ignore */ corsProxyUrl('https://opencor.ws/libopencor/downloads/wasm/libopencor-0.20260211.0.js') ) ).default; diff --git a/src/renderer/src/libopencor/locFileApi.ts b/src/renderer/src/libopencor/locFileApi.ts index 76f5bfa5..e1eb7116 100644 --- a/src/renderer/src/libopencor/locFileApi.ts +++ b/src/renderer/src/libopencor/locFileApi.ts @@ -107,7 +107,7 @@ export interface IWasmFile { issues: IWasmIssues; path: string; contents(): Uint8Array; - setContents(ptr: number, length: number): void; + setContents(contents: Uint8Array): void; childFileFromFileName(fileName: string): File | null; } @@ -126,13 +126,7 @@ export class File { } else if (contents) { this._wasmFile = vue.markRaw(new _wasmLocApi.File(path)); - const heapContentsPtr = _wasmLocApi._malloc(contents.length); - - new Uint8Array(_wasmLocApi.HEAPU8.buffer, heapContentsPtr, contents.length).set(contents); - - this._wasmFile.setContents(heapContentsPtr, contents.length); - - _wasmLocApi._free(heapContentsPtr); + this._wasmFile.setContents(contents); this._issues = wasmIssuesToIssues(this._wasmFile.issues); } else {