diff --git a/bun.lock b/bun.lock index 4c5fafa8..1d7adf1f 100644 --- a/bun.lock +++ b/bun.lock @@ -19,7 +19,7 @@ "@electron-toolkit/utils": "^4.0.0", "@tailwindcss/postcss": "^4.2.1", "@tailwindcss/vite": "^4.2.1", - "@types/node": "^25.3.4", + "@types/node": "^25.4.0", "@types/plotly.js": "^3.0.10", "@vitejs/plugin-vue": "^6.0.4", "@vue/tsconfig": "^0.9.0", @@ -38,7 +38,7 @@ "stylelint-config-standard": "^40.0.0", "tailwindcss": "^4.2.1", "tailwindcss-primeui": "^0.6.1", - "tar": "^7.5.10", + "tar": "^7.5.11", "typescript": "^5.9.3", "unplugin-vue-components": "^31.0.0", "vite": "^7.3.1", @@ -377,7 +377,7 @@ "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], - "@types/node": ["@types/node@25.3.4", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-NB1qVMIPsjfYtrY+9cCTj2VqLBh/TIDmsZXtmM2Xsn+W2yMlkA9Q1Okpr9W3f1fyGgvelw8ojumDsv8Vc0xufQ=="], + "@types/node": ["@types/node@25.4.0", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-9wLpoeWuBlcbBpOY3XmzSTG3oscB6xjBEEtn+pYXTfhyXhIxC5FsBer2KTopBlvKEiW9l13po9fq+SJY/5lkhw=="], "@types/plist": ["@types/plist@3.0.5", "", { "dependencies": { "@types/node": "*", "xmlbuilder": ">=11.0.1" } }, "sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA=="], @@ -499,7 +499,7 @@ "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], - "caniuse-lite": ["caniuse-lite@1.0.30001776", "", {}, "sha512-sg01JDPzZ9jGshqKSckOQthXnYwOEP50jeVFhaSFbZcOy05TiuuaffDOfcwtCisJ9kNQuLBFibYywv2Bgm9osw=="], + "caniuse-lite": ["caniuse-lite@1.0.30001777", "", {}, "sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ=="], "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], @@ -687,7 +687,7 @@ "flat-cache": ["flat-cache@6.1.20", "", { "dependencies": { "cacheable": "^2.3.2", "flatted": "^3.3.3", "hookified": "^1.15.0" } }, "sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ=="], - "flatted": ["flatted@3.3.4", "", {}, "sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA=="], + "flatted": ["flatted@3.4.1", "", {}, "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ=="], "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="], @@ -1159,7 +1159,7 @@ "tapable": ["tapable@2.3.0", "", {}, "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg=="], - "tar": ["tar@7.5.10", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-8mOPs1//5q/rlkNSPcCegA6hiHJYDmSLEI8aMH/CdSQJNWztHC9WHNam5zdQlfpTwB9Xp7IBEsHfV5LKMJGVAw=="], + "tar": ["tar@7.5.11", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ=="], "temp": ["temp@0.9.4", "", { "dependencies": { "mkdirp": "^0.5.1", "rimraf": "~2.6.2" } }, "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA=="], @@ -1339,7 +1339,7 @@ "dmg-license/ajv": ["ajv@6.14.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw=="], - "electron/@types/node": ["@types/node@24.11.1", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-MOw3rIVR4djfMH7ft9ZJLPViaJwkZvMfrzumElas79IwMUEl8ykkuQmgL9MAMz7vO8G3vuz9b7Gu+keYZx7Xrw=="], + "electron/@types/node": ["@types/node@24.12.0", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ=="], "electron-builder/fs-extra": ["fs-extra@10.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ=="], diff --git a/package.json b/package.json index fa2ff584..ec03fa1b 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "url": "git+https://github.com/opencor/webapp.git" }, "type": "module", - "version": "0.20260306.0", + "version": "0.20260311.0", "engines": { "bun": ">=1.2.0" }, @@ -68,7 +68,7 @@ "@electron-toolkit/utils": "^4.0.0", "@tailwindcss/postcss": "^4.2.1", "@tailwindcss/vite": "^4.2.1", - "@types/node": "^25.3.4", + "@types/node": "^25.4.0", "@types/plotly.js": "^3.0.10", "@vitejs/plugin-vue": "^6.0.4", "@vue/tsconfig": "^0.9.0", @@ -87,7 +87,7 @@ "stylelint-config-standard": "^40.0.0", "tailwindcss": "^4.2.1", "tailwindcss-primeui": "^0.6.1", - "tar": "^7.5.10", + "tar": "^7.5.11", "typescript": "^5.9.3", "unplugin-vue-components": "^31.0.0", "vite": "^7.3.1" diff --git a/src/main/MainMenu.ts b/src/main/MainMenu.ts index 22d0db0d..52b2662f 100644 --- a/src/main/MainMenu.ts +++ b/src/main/MainMenu.ts @@ -238,7 +238,7 @@ export const enableDisableMainMenu = (enable: boolean): void => { label: 'Home Page', click: () => { electron.shell.openExternal('https://opencor.ws/').catch((error: unknown) => { - console.error('Failed to open the home page:', formatError(error)); + console.warn('OpenCOR: failed to open the home page:', formatError(error)); }); } }); @@ -247,7 +247,7 @@ export const enableDisableMainMenu = (enable: boolean): void => { label: 'Report Issue', click: () => { electron.shell.openExternal('https://github.com/opencor/webapp/issues/new').catch((error: unknown) => { - console.error('Failed to report an issue:', formatError(error)); + console.warn('OpenCOR: failed to report an issue:', formatError(error)); }); } }); diff --git a/src/main/MainWindow.ts b/src/main/MainWindow.ts index 4cdc5c73..4c190a5f 100644 --- a/src/main/MainWindow.ts +++ b/src/main/MainWindow.ts @@ -352,10 +352,10 @@ export class MainWindow extends ApplicationWindow { if (isHttpUrl(details.url)) { electron.shell.openExternal(details.url).catch((error: unknown) => { - console.error(`Failed to open external URL (${details.url}):`, formatError(error)); + console.warn(`OpenCOR: failed to open external URL (${details.url}):`, formatError(error)); }); } else { - console.warn(`Blocked attempt to open unsupported URL (${details.url}).`); + console.warn(`OpenCOR: blocked attempt to open unsupported URL (${details.url}).`); } return { @@ -366,7 +366,7 @@ export class MainWindow extends ApplicationWindow { // Load the renderer URL. this.loadURL(rendererUrl).catch((error: unknown) => { - console.error(`Failed to load URL (${rendererUrl}):`, formatError(error)); + console.error(`OpenCOR: failed to load URL (${rendererUrl}):`, formatError(error)); }); } @@ -462,7 +462,7 @@ export class MainWindow extends ApplicationWindow { this.enableDisableUi(true); }) .catch((error: unknown) => { - console.error('Failed to open file(s):', formatError(error)); + console.warn('OpenCOR: failed to open file(s):', formatError(error)); this.enableDisableUi(true); }); diff --git a/src/main/SplashScreenWindow.ts b/src/main/SplashScreenWindow.ts index 05dae0f9..ed66aaeb 100644 --- a/src/main/SplashScreenWindow.ts +++ b/src/main/SplashScreenWindow.ts @@ -29,7 +29,7 @@ export class SplashScreenWindow extends ApplicationWindow { }); this.loadFile('./src/main/assets/splashscreen.html').catch((error: unknown) => { - console.error('Failed to load splash screen:', formatError(error)); + console.warn('OpenCOR: failed to load splash screen:', formatError(error)); }); // Initialise our Web contents. diff --git a/src/main/index.ts b/src/main/index.ts index 92b8be64..65ca43cf 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -143,13 +143,13 @@ MimeType=x-scheme-handler/${URI_SCHEME}`; 'update-desktop-database ~/.local/share/applications', (error: nodeChildProcess.ExecException | null) => { if (error) { - console.error('Failed to update the desktop database:', formatError(error)); + console.warn('OpenCOR: failed to update the desktop database:', formatError(error)); } } ); } } catch (error: unknown) { - console.error('Failed to set up Linux desktop integration:', formatError(error)); + console.warn('OpenCOR: failed to set up Linux desktop integration:', formatError(error)); } }; @@ -309,13 +309,13 @@ electron.app }); }) .catch((error: unknown) => { - console.error('Failed to create the main window:', formatError(error)); + console.error('OpenCOR: failed to create the main window:', formatError(error)); }); // Ensure that the renderer server is stopped when quitting. electron.app.on('will-quit', () => { stopRendererServer().catch((error: unknown) => { - console.error('Failed to stop the renderer server:', formatError(error)); + console.warn('OpenCOR: failed to stop the renderer server:', formatError(error)); }); }); diff --git a/src/renderer/bun.lock b/src/renderer/bun.lock index 76163817..e4d46c1c 100644 --- a/src/renderer/bun.lock +++ b/src/renderer/bun.lock @@ -17,7 +17,7 @@ "@biomejs/biome": "^2.4.6", "@tailwindcss/postcss": "^4.2.1", "@tailwindcss/vite": "^4.2.1", - "@types/node": "^25.3.4", + "@types/node": "^25.4.0", "@types/plotly.js": "^3.0.10", "@vitejs/plugin-vue": "^6.0.4", "@vue/tsconfig": "^0.9.0", @@ -285,7 +285,7 @@ "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], - "@types/node": ["@types/node@25.3.4", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-NB1qVMIPsjfYtrY+9cCTj2VqLBh/TIDmsZXtmM2Xsn+W2yMlkA9Q1Okpr9W3f1fyGgvelw8ojumDsv8Vc0xufQ=="], + "@types/node": ["@types/node@25.4.0", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-9wLpoeWuBlcbBpOY3XmzSTG3oscB6xjBEEtn+pYXTfhyXhIxC5FsBer2KTopBlvKEiW9l13po9fq+SJY/5lkhw=="], "@types/plotly.js": ["@types/plotly.js@3.0.10", "", {}, "sha512-q+MgO4aajC2HrO7FllTYWzrpdfbTjboSMfjkz/aXKjg1v7HNo1zMEFfAW7quKfk6SL+bH74A5ThBEps/7hZxOA=="], @@ -343,7 +343,7 @@ "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], - "caniuse-lite": ["caniuse-lite@1.0.30001776", "", {}, "sha512-sg01JDPzZ9jGshqKSckOQthXnYwOEP50jeVFhaSFbZcOy05TiuuaffDOfcwtCisJ9kNQuLBFibYywv2Bgm9osw=="], + "caniuse-lite": ["caniuse-lite@1.0.30001777", "", {}, "sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ=="], "chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], @@ -407,7 +407,7 @@ "flat-cache": ["flat-cache@6.1.20", "", { "dependencies": { "cacheable": "^2.3.2", "flatted": "^3.3.3", "hookified": "^1.15.0" } }, "sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ=="], - "flatted": ["flatted@3.3.4", "", {}, "sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA=="], + "flatted": ["flatted@3.4.1", "", {}, "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ=="], "fraction.js": ["fraction.js@5.3.4", "", {}, "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ=="], diff --git a/src/renderer/package.json b/src/renderer/package.json index 7b9a3254..59dc7db7 100644 --- a/src/renderer/package.json +++ b/src/renderer/package.json @@ -42,7 +42,7 @@ }, "./style.css": "./dist/opencor.css" }, - "version": "0.20260306.0", + "version": "0.20260311.0", "scripts": { "build": "vite build && bun scripts/generate.version.js", "build:lib": "vite build --config vite.lib.config.ts && bun scripts/copy.indexdts.js", @@ -77,7 +77,7 @@ "@biomejs/biome": "^2.4.6", "@tailwindcss/postcss": "^4.2.1", "@tailwindcss/vite": "^4.2.1", - "@types/node": "^25.3.4", + "@types/node": "^25.4.0", "@types/plotly.js": "^3.0.10", "@vitejs/plugin-vue": "^6.0.4", "@vue/tsconfig": "^0.9.0", diff --git a/src/renderer/src/common/common.ts b/src/renderer/src/common/common.ts index 091ebc43..9c304d3d 100644 --- a/src/renderer/src/common/common.ts +++ b/src/renderer/src/common/common.ts @@ -203,7 +203,7 @@ export const fileName = (filePath: string): string => { try { return decodeURIComponent(res); } catch (error: unknown) { - console.error('Failed to decode the file path:', res, formatError(error)); + console.warn('OpenCOR: failed to decode the file path:', res, formatError(error)); return res; } diff --git a/src/renderer/src/common/gitHubIntegration.ts b/src/renderer/src/common/gitHubIntegration.ts index 88464444..a11ac8e9 100644 --- a/src/renderer/src/common/gitHubIntegration.ts +++ b/src/renderer/src/common/gitHubIntegration.ts @@ -10,7 +10,7 @@ export const clearGitHubCache = async (): Promise => { try { await electron.session.defaultSession.clearStorageData({ origin }); } catch (error: unknown) { - console.warn(`Failed to clear storage data for ${origin}:`, formatError(error)); + console.warn(`OpenCOR: failed to clear storage data for ${origin}:`, formatError(error)); } }) ); @@ -21,7 +21,7 @@ let storeAvailable = true; const gitHubAccessTokenError = (operation: string, error: unknown): void => { if (storeAvailable) { console.warn( - `Failed to ${operation} the GitHub access token using the system credential store. Subsequent attempts will be skipped.`, + `OpenCOR: failed to ${operation} the GitHub access token using the system credential store. Subsequent attempts will be skipped.`, error ); } @@ -79,7 +79,7 @@ export const loadGitHubAccessToken = async (): Promise => { export const saveGitHubAccessToken = async (token: string): Promise => { if (!token.trim()) { - console.warn('Ignoring request to store an empty GitHub access token.'); + console.warn('OpenCOR: ignoring request to store an empty GitHub access token.'); return false; } diff --git a/src/renderer/src/common/initialisation.ts b/src/renderer/src/common/initialisation.ts index a776d4ae..6da50a97 100644 --- a/src/renderer/src/common/initialisation.ts +++ b/src/renderer/src/common/initialisation.ts @@ -84,7 +84,7 @@ export const initialiseLocApi = async (): Promise => { ++crtNbOfSteps.value; } catch (error: unknown) { - console.error('Failed to load libOpenCOR:', common.formatError(error)); + console.error('OpenCOR: failed to load libOpenCOR:', common.formatError(error)); throw error; } @@ -133,7 +133,7 @@ const createLazyInitialiser = ( ++crtNbOfSteps.value; } } catch (error: unknown) { - console.error(`Failed to import ${name ?? url}:`, common.formatError(error)); + console.error(`OpenCOR: failed to import ${name ?? url}:`, common.formatError(error)); throw error; } diff --git a/src/renderer/src/common/settings.ts b/src/renderer/src/common/settings.ts index 883862df..f6d4fc23 100644 --- a/src/renderer/src/common/settings.ts +++ b/src/renderer/src/common/settings.ts @@ -59,8 +59,8 @@ class Settings { this._oldRawSettings = raw; } } catch (error: unknown) { - console.error( - 'Failed to load the settings from the local storage, so resetting to defaults:', + console.warn( + 'OpenCOR: failed to load the settings from the local storage, so resetting to defaults:', formatError(error) ); @@ -88,7 +88,7 @@ class Settings { this._oldRawSettings = rawSettings; } catch (error: unknown) { - console.error('Failed to save the settings to the local storage:', formatError(error)); + console.warn('OpenCOR: failed to save the settings to the local storage:', formatError(error)); } } } diff --git a/src/renderer/src/common/version.ts b/src/renderer/src/common/version.ts index fd146bc4..12562ac1 100644 --- a/src/renderer/src/common/version.ts +++ b/src/renderer/src/common/version.ts @@ -2,8 +2,6 @@ import * as vue from 'vue'; import packageJson from '../../package.json' with { type: 'json' }; -import { electronApi } from './electronApi.ts'; - const { version: currentVersion } = packageJson; // State to track whether an update is available and the latest version. @@ -18,12 +16,6 @@ interface IVersionInfo { } const checkForUpdates = async (): Promise => { - // Make sure that we are not running the desktop version of OpenCOR. - - if (electronApi) { - return false; - } - // Get the latest version information from the server and compare it with the current version. try { @@ -33,7 +25,7 @@ const checkForUpdates = async (): Promise => { const response = await fetch(`./assets/version.json?t=${Date.now()}`); if (!response.ok) { - console.warn('Failed to fetch the version information.'); + console.warn('OpenCOR: failed to fetch the version information.'); updateAvailable.value = false; latestVersion.value = ''; @@ -87,12 +79,6 @@ const isNewerVersion = (versionA: string, versionB: string): boolean => { let checkInterval: number | null = null; const startCheck = (): void => { - // Make sure that we are not running the desktop version of OpenCOR. - - if (electronApi) { - return; - } - // Check immediately on start. checkForUpdates(); diff --git a/src/renderer/src/components/OpenCOR.vue b/src/renderer/src/components/OpenCOR.vue index 2aa00b4f..c47f4f28 100644 --- a/src/renderer/src/components/OpenCOR.vue +++ b/src/renderer/src/components/OpenCOR.vue @@ -1,5 +1,5 @@