diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 31302179..2221ecb2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,6 +17,12 @@ jobs: os: [macos-11, ubuntu-latest, windows-latest] steps: + - name: Exit if not on master branch + if: contains(env.BRANCH_NAME, 'master') == false + run: | + echo "Wrong environment ${{env.BRANCH_NAME}}" + exit 0 + - name: Check out Git repository uses: actions/checkout@v3 with: diff --git a/package-lock.json b/package-lock.json index 25fdd969..e26ff70c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "leaflet": "~1.7.1", "marked": "~4.0.19", "moment": "~2.29.4", - "mysql2": "~2.3.2", + "mysql2": "~3.5.2", "node-firebird": "~1.1.4", "pg": "~8.11.1", "pg-connection-string": "~2.5.0", @@ -9664,15 +9664,16 @@ "license": "ISC" }, "node_modules/mysql2": { - "version": "2.3.3", - "license": "MIT", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.5.2.tgz", + "integrity": "sha512-cptobmhYkYeTBIFp2c0piw2+gElpioga1rUw5UidHvo8yaHijMZoo8A3zyBVoo/K71f7ZFvrShA9iMIy9dCzCA==", "dependencies": { - "denque": "^2.0.1", + "denque": "^2.1.0", "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", - "long": "^4.0.0", - "lru-cache": "^6.0.0", - "named-placeholders": "^1.1.2", + "long": "^5.2.1", + "lru-cache": "^8.0.0", + "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" }, @@ -9680,19 +9681,18 @@ "node": ">= 8.0" } }, - "node_modules/mysql2/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } + "node_modules/mysql2/node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, - "node_modules/mysql2/node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" + "node_modules/mysql2/node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "engines": { + "node": ">=16.14" + } }, "node_modules/named-placeholders": { "version": "1.1.3", diff --git a/package.json b/package.json index cb6e143b..cdfbfc2a 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,7 @@ "target": "deb", "arch": [ "x64", + "arm64", "armv7l" ] }, @@ -73,6 +74,7 @@ "target": "AppImage", "arch": [ "x64", + "arm64", "armv7l" ] } @@ -134,7 +136,7 @@ "leaflet": "~1.7.1", "marked": "~4.0.19", "moment": "~2.29.4", - "mysql2": "~2.3.2", + "mysql2": "~3.5.2", "node-firebird": "~1.1.4", "pg": "~8.11.1", "pg-connection-string": "~2.5.0", diff --git a/scripts/translationCheck.js b/scripts/translationCheck.js new file mode 100644 index 00000000..e69de29b diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 701d2131..40c6f48a 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -4,7 +4,7 @@ summary: Open source SQL client made to be simple and complete. description: | Antares is an SQL client that aims to become an useful and complete tool, especially for developers. The target is to support as many databases as possible, and all major operating systems, including the ARM versions. -base: core20 +base: core22 grade: stable confinement: strict @@ -119,10 +119,10 @@ parts: cleanup: after: [antares] plugin: nil - build-snaps: [gnome-3-38-2004] + build-snaps: [gnome-42-2204] override-prime: | set -eux - cd /snap/gnome-3-38-2004/current + cd /snap/gnome-42-2204/current find . -type f,l -exec rm -f $SNAPCRAFT_PRIME/{} \; mdns-lookup: @@ -136,7 +136,7 @@ parts: - libnss-mdns override-prime: | set -eux - sed -Ee 's/^\s*hosts:(\s+)files/hosts:\1files mdns4_minimal \[NOTFOUND=return\]/' /snap/core20/current/etc/nsswitch.conf > $SNAPCRAFT_STAGE/etc/nsswitch.conf + sed -Ee 's/^\s*hosts:(\s+)files/hosts:\1files mdns4_minimal \[NOTFOUND=return\]/' /snap/core22/current/etc/nsswitch.conf > $SNAPCRAFT_STAGE/etc/nsswitch.conf snapcraftctl prime prime: - lib/$SNAPCRAFT_ARCH_TRIPLET/libnss_mdns4_minimal* @@ -146,10 +146,7 @@ apps: antares: command: opt/Antares/antares --no-sandbox desktop: usr/share/applications/antares.desktop - extensions: [gnome-3-38] - environment: - # Fallback to XWayland if running in a Wayland session. - DISABLE_WAYLAND: 1 + extensions: [gnome] plugs: - browser-support - cups-control diff --git a/src/common/shortcuts.ts b/src/common/shortcuts.ts index 46822cfe..0f63517c 100644 --- a/src/common/shortcuts.ts +++ b/src/common/shortcuts.ts @@ -1,22 +1,22 @@ export const shortcutEvents: { [key: string]: { l18n: string; l18nParam?: string | number; context?: 'tab' }} = { - 'run-or-reload': { l18n: 'message.runOrReload', context: 'tab' }, - 'open-new-tab': { l18n: 'message.openNewTab', context: 'tab' }, - 'close-tab': { l18n: 'message.closeTab', context: 'tab' }, - 'format-query': { l18n: 'message.formatQuery', context: 'tab' }, - 'kill-query': { l18n: 'message.killQuery', context: 'tab' }, - 'query-history': { l18n: 'message.queryHistory', context: 'tab' }, - 'clear-query': { l18n: 'message.clearQuery', context: 'tab' }, - 'next-tab': { l18n: 'message.nextTab' }, - 'prev-tab': { l18n: 'message.previousTab' }, - 'open-all-connections': { l18n: 'message.openAllConnections' }, - 'open-filter': { l18n: 'message.openFilter' }, - 'next-page': { l18n: 'message.nextResultsPage' }, - 'prev-page': { l18n: 'message.previousResultsPage' }, - 'toggle-console': { l18n: 'message.toggleConsole' }, - 'save-content': { l18n: 'message.saveContent' }, - 'create-connection': { l18n: 'message.createNewConnection' }, - 'open-settings': { l18n: 'message.openSettings' }, - 'open-scratchpad': { l18n: 'message.openScratchpad' } + 'run-or-reload': { l18n: 'application.runOrReload', context: 'tab' }, + 'open-new-tab': { l18n: 'application.openNewTab', context: 'tab' }, + 'close-tab': { l18n: 'application.closeTab', context: 'tab' }, + 'format-query': { l18n: 'database.formatQuery', context: 'tab' }, + 'kill-query': { l18n: 'database.killQuery', context: 'tab' }, + 'query-history': { l18n: 'database.queryHistory', context: 'tab' }, + 'clear-query': { l18n: 'database.clearQuery', context: 'tab' }, + 'next-tab': { l18n: 'application.nextTab' }, + 'prev-tab': { l18n: 'application.previousTab' }, + 'open-all-connections': { l18n: 'application.openAllConnections' }, + 'open-filter': { l18n: 'application.openFilter' }, + 'next-page': { l18n: 'application.nextResultsPage' }, + 'prev-page': { l18n: 'application.previousResultsPage' }, + 'toggle-console': { l18n: 'application.toggleConsole' }, + 'save-content': { l18n: 'application.saveContent' }, + 'create-connection': { l18n: 'connection.createNewConnection' }, + 'open-settings': { l18n: 'application.openSettings' }, + 'open-scratchpad': { l18n: 'application.openScratchpad' } }; interface ShortcutRecord { @@ -124,7 +124,7 @@ const shortcuts: ShortcutRecord[] = [ for (let i = 1; i <= 9; i++) { shortcutEvents[`select-tab-${i}`] = { - l18n: 'message.selectTabNumber', + l18n: 'application.selectTabNumber', l18nParam: i }; diff --git a/src/main/libs/importers/sql/MySQLlImporter.ts b/src/main/libs/importers/sql/MySQLlImporter.ts index 51c8e418..9888e0d0 100644 --- a/src/main/libs/importers/sql/MySQLlImporter.ts +++ b/src/main/libs/importers/sql/MySQLlImporter.ts @@ -47,7 +47,7 @@ export default class MySQLImporter extends BaseImporter { catch (error) { this.emit('query-error', { sql: query, - message: error.sqlMessage, + message: error.sqlMessage || error.message, sqlSnippet: error.sql, time: new Date().getTime() }); diff --git a/src/renderer/App.vue b/src/renderer/App.vue index 3d3b720f..3a20a72d 100644 --- a/src/renderer/App.vue +++ b/src/renderer/App.vue @@ -95,22 +95,22 @@ onMounted(() => { const InputMenu = Menu.buildFromTemplate([ { - label: t('word.cut'), + label: t('general.cut'), role: 'cut' }, { - label: t('word.copy'), + label: t('general.copy'), role: 'copy' }, { - label: t('word.paste'), + label: t('general.paste'), role: 'paste' }, { type: 'separator' }, { - label: t('message.selectAll'), + label: t('general.selectAll'), role: 'selectAll' } ]); diff --git a/src/renderer/components/BaseConfirmModal.vue b/src/renderer/components/BaseConfirmModal.vue index 76481f79..61a98278 100644 --- a/src/renderer/components/BaseConfirmModal.vue +++ b/src/renderer/components/BaseConfirmModal.vue @@ -31,13 +31,13 @@ class="btn btn-primary mr-2" @click.stop="confirmModal" > - {{ confirmText || t('word.confirm') }} + {{ confirmText || t('general.confirm') }} diff --git a/src/renderer/components/FakerSelect.vue b/src/renderer/components/FakerSelect.vue index 49385bd3..8aea2fb3 100644 --- a/src/renderer/components/FakerSelect.vue +++ b/src/renderer/components/FakerSelect.vue @@ -4,7 +4,7 @@ v-model="selectedGroup" class="form-select" :options="[{name: 'manual'}, ...fakerGroups]" - :option-label="(opt: any) => opt.name === 'manual' ? t('message.manualValue') : t(`faker.${opt.name}`)" + :option-label="(opt: any) => opt.name === 'manual' ? t('general.manualValue') : t(`faker.${opt.name}`)" option-track-by="name" :disabled="!isChecked" :style="'flex-grow: 0;'" @@ -41,7 +41,7 @@ diff --git a/src/renderer/components/KeyPressDetector.vue b/src/renderer/components/KeyPressDetector.vue index 283f6c96..df89eac5 100644 --- a/src/renderer/components/KeyPressDetector.vue +++ b/src/renderer/components/KeyPressDetector.vue @@ -4,7 +4,7 @@ class="form-input" type="text" :value="pressedKeys" - :placeholder="t('message.registerAShortcut')" + :placeholder="t('application.registerAShortcut')" @focus="isFocus = true" @blur="isFocus = false" @keydown.prevent.stop="onKey" @@ -49,7 +49,7 @@ const pressedKeys = computed(() => { keys.push('Shift'); if (keyboardEvent.value.code) { if (keys.length === 0 && (keyboardEvent.value.key.length === 1 || singleKeysToIgnore.includes(keyboardEvent.value.key))) - return t('message.invalidShortcutMessage'); + return t('application.invalidShortcutMessage'); else if (!specialKeys.includes(keyboardEvent.value.key)) { if (keyboardEvent.value.key === 'Dead') { keys.push(keyboardEvent.value.code @@ -82,7 +82,7 @@ const pressedKeys = computed(() => { } } else - return t('message.invalidShortcutMessage'); + return t('application.invalidShortcutMessage'); } } @@ -96,7 +96,7 @@ const onKey = (e: KeyboardEvent) => { }; watch(pressedKeys, (value) => { - if (value !== t('message.invalidShortcutMessage')) + if (value !== t('application.invalidShortcutMessage')) emit('update:modelValue', pressedKeys.value); }); diff --git a/src/renderer/components/ModalAllConnections.vue b/src/renderer/components/ModalAllConnections.vue index 16bd4131..3cadbaed 100644 --- a/src/renderer/components/ModalAllConnections.vue +++ b/src/renderer/components/ModalAllConnections.vue @@ -7,7 +7,7 @@ @@ -21,7 +21,7 @@ v-model="searchTerm" class="form-input" type="text" - :placeholder="t('message.searchForConnections')" + :placeholder="t('connection.searchForConnections')" @keypress.esc="searchTerm = ''" > @@ -58,7 +58,7 @@
@@ -130,12 +130,12 @@ > diff --git a/src/renderer/components/ModalAskCredentials.vue b/src/renderer/components/ModalAskCredentials.vue index d3f6f850..d506f086 100644 --- a/src/renderer/components/ModalAskCredentials.vue +++ b/src/renderer/components/ModalAskCredentials.vue @@ -6,7 +6,7 @@