From 81c921c842658092b54cc0b7c28db4420fc5da48 Mon Sep 17 00:00:00 2001 From: Luke Policinski Date: Tue, 6 Oct 2026 01:43:40 +0000 Subject: [PATCH 1/3] Show plugin version on dedicated server page The header flagged Version Mismatch without saying which version the server runs. Add a chip with the installed plugin version and, on a mismatch, the expected version linked to its release. --- i18n/locales/ar_SA.json | 1 + i18n/locales/da_DK.json | 1 + i18n/locales/de_DE.json | 1 + i18n/locales/en.json | 1 + i18n/locales/es_ES.json | 1 + i18n/locales/fr_FR.json | 1 + i18n/locales/it_IT.json | 1 + i18n/locales/ja_JP.json | 1 + i18n/locales/ko_KR.json | 1 + i18n/locales/pl_PL.json | 1 + i18n/locales/pt_BR.json | 1 + i18n/locales/ru_RU.json | 1 + i18n/locales/sv_SE.json | 1 + i18n/locales/tr_TR.json | 1 + i18n/locales/uk_UA.json | 1 + i18n/locales/zh_Hans.json | 1 + i18n/locales/zh_Hant.json | 1 + pages/dedicated-servers/[id].vue | 41 ++++++++++++++++++++++++++++++++ 18 files changed, 58 insertions(+) diff --git a/i18n/locales/ar_SA.json b/i18n/locales/ar_SA.json index 079d8608b..04755d688 100644 --- a/i18n/locales/ar_SA.json +++ b/i18n/locales/ar_SA.json @@ -4395,6 +4395,7 @@ "config_location": "يجب وضع هذه الإعدادات في:", "files": "ملفات", "player_management": "إدارة اللاعبين", + "plugin_version_unknown": "Unknown version", "no_players": "لا يوجد لاعبون على هذا السيرفر حاليًا", "player_management_plugin": { "active": "إضافة إدارة اللاعبين نشطة", diff --git a/i18n/locales/da_DK.json b/i18n/locales/da_DK.json index 1fa7508da..82aee02c8 100644 --- a/i18n/locales/da_DK.json +++ b/i18n/locales/da_DK.json @@ -4395,6 +4395,7 @@ "config_location": "Denne konfiguration skal placeres i:", "files": "Filer", "player_management": "Spillerstyring", + "plugin_version_unknown": "Unknown version", "no_players": "Ingen spillere på denne server lige nu", "player_management_plugin": { "active": "Player Management-plugin aktivt", diff --git a/i18n/locales/de_DE.json b/i18n/locales/de_DE.json index 1a97cc48d..9717ca449 100644 --- a/i18n/locales/de_DE.json +++ b/i18n/locales/de_DE.json @@ -4395,6 +4395,7 @@ "config_location": "Diese Config gehört nach:", "files": "Dateien", "player_management": "Spielerverwaltung", + "plugin_version_unknown": "Unknown version", "no_players": "Aktuell keine Spieler auf diesem Server", "player_management_plugin": { "active": "Player-Management-Plugin aktiv", diff --git a/i18n/locales/en.json b/i18n/locales/en.json index d44b6a103..c40f992f0 100644 --- a/i18n/locales/en.json +++ b/i18n/locales/en.json @@ -4397,6 +4397,7 @@ "config_location": "This config should be placed in:", "files": "Files", "player_management": "Player Management", + "plugin_version_unknown": "Unknown version", "no_players": "No players currently on this server", "player_management_plugin": { "active": "Player Management plugin active", diff --git a/i18n/locales/es_ES.json b/i18n/locales/es_ES.json index 1663cda4c..1fa87a500 100644 --- a/i18n/locales/es_ES.json +++ b/i18n/locales/es_ES.json @@ -4395,6 +4395,7 @@ "config_location": "Esta configuración debe colocarse en:", "files": "Archivos", "player_management": "Gestión de jugadores", + "plugin_version_unknown": "Unknown version", "no_players": "Ahora mismo no hay jugadores en este servidor", "player_management_plugin": { "active": "Plugin de gestión de jugadores activo", diff --git a/i18n/locales/fr_FR.json b/i18n/locales/fr_FR.json index d5aefdb18..7743b8cc5 100644 --- a/i18n/locales/fr_FR.json +++ b/i18n/locales/fr_FR.json @@ -4395,6 +4395,7 @@ "config_location": "Cette config doit être placée dans :", "files": "Fichiers", "player_management": "Gestion des joueurs", + "plugin_version_unknown": "Unknown version", "no_players": "Aucun joueur actuellement sur ce serveur", "player_management_plugin": { "active": "Plugin de gestion des joueurs actif", diff --git a/i18n/locales/it_IT.json b/i18n/locales/it_IT.json index 3fb05cda4..a7bf747e2 100644 --- a/i18n/locales/it_IT.json +++ b/i18n/locales/it_IT.json @@ -4395,6 +4395,7 @@ "config_location": "Questa config va inserita in:", "files": "File", "player_management": "Gestione giocatori", + "plugin_version_unknown": "Unknown version", "no_players": "Nessun giocatore attualmente su questo server", "player_management_plugin": { "active": "Plugin di gestione giocatori attivo", diff --git a/i18n/locales/ja_JP.json b/i18n/locales/ja_JP.json index 9b8270660..ae16b39c5 100644 --- a/i18n/locales/ja_JP.json +++ b/i18n/locales/ja_JP.json @@ -4395,6 +4395,7 @@ "config_location": "この設定は次の場所に配置してください:", "files": "ファイル", "player_management": "プレイヤー管理", + "plugin_version_unknown": "Unknown version", "no_players": "現在このサーバーにプレイヤーはいません", "player_management_plugin": { "active": "プレイヤー管理プラグイン稼働中", diff --git a/i18n/locales/ko_KR.json b/i18n/locales/ko_KR.json index fce7b35a2..3362c3380 100644 --- a/i18n/locales/ko_KR.json +++ b/i18n/locales/ko_KR.json @@ -4395,6 +4395,7 @@ "config_location": "이 설정 파일은 다음 위치에 두어야 합니다:", "files": "파일", "player_management": "플레이어 관리", + "plugin_version_unknown": "Unknown version", "no_players": "현재 이 서버에 접속 중인 플레이어가 없습니다", "player_management_plugin": { "active": "플레이어 관리 플러그인 활성", diff --git a/i18n/locales/pl_PL.json b/i18n/locales/pl_PL.json index 1ad64f5b4..17c293615 100644 --- a/i18n/locales/pl_PL.json +++ b/i18n/locales/pl_PL.json @@ -4395,6 +4395,7 @@ "config_location": "Ten plik konfiguracyjny należy umieścić w:", "files": "Pliki", "player_management": "Zarządzanie graczami", + "plugin_version_unknown": "Unknown version", "no_players": "Obecnie brak graczy na tym serwerze", "player_management_plugin": { "active": "Wtyczka zarządzania graczami aktywna", diff --git a/i18n/locales/pt_BR.json b/i18n/locales/pt_BR.json index c406469c8..bfe84e487 100644 --- a/i18n/locales/pt_BR.json +++ b/i18n/locales/pt_BR.json @@ -4395,6 +4395,7 @@ "config_location": "Esta configuração deve estar localizada em:", "files": "Arquivos", "player_management": "Gerenciamento de Jogadores", + "plugin_version_unknown": "Unknown version", "no_players": "Nenhum jogador atualmente neste servidor", "player_management_plugin": { "active": "Plugin de gerenciamento de jogadores ativo", diff --git a/i18n/locales/ru_RU.json b/i18n/locales/ru_RU.json index 0b2f05891..5ed9b0080 100644 --- a/i18n/locales/ru_RU.json +++ b/i18n/locales/ru_RU.json @@ -4395,6 +4395,7 @@ "config_location": "Этот конфиг нужно разместить в:", "files": "Файлы", "player_management": "Управление игроками", + "plugin_version_unknown": "Unknown version", "no_players": "На этом сервере сейчас нет игроков", "player_management_plugin": { "active": "Плагин управления игроками активен", diff --git a/i18n/locales/sv_SE.json b/i18n/locales/sv_SE.json index 6a05cf77a..bbc94ec2b 100644 --- a/i18n/locales/sv_SE.json +++ b/i18n/locales/sv_SE.json @@ -4395,6 +4395,7 @@ "config_location": "Denna konfiguration ska placeras i:", "files": "Filer", "player_management": "Spelarhantering", + "plugin_version_unknown": "Unknown version", "no_players": "Inga spelare på servern just nu", "player_management_plugin": { "active": "Plugin för spelarhantering aktivt", diff --git a/i18n/locales/tr_TR.json b/i18n/locales/tr_TR.json index d7cf4dff8..2fdec2152 100644 --- a/i18n/locales/tr_TR.json +++ b/i18n/locales/tr_TR.json @@ -4395,6 +4395,7 @@ "config_location": "Bu yapılandırma şuraya yerleştirilmeli:", "files": "Dosyalar", "player_management": "Oyuncu yönetimi", + "plugin_version_unknown": "Unknown version", "no_players": "Bu sunucuda şu anda oyuncu yok", "player_management_plugin": { "active": "Oyuncu yönetimi eklentisi etkin", diff --git a/i18n/locales/uk_UA.json b/i18n/locales/uk_UA.json index c4a3a4ca1..c2d2dee27 100644 --- a/i18n/locales/uk_UA.json +++ b/i18n/locales/uk_UA.json @@ -4395,6 +4395,7 @@ "config_location": "Цей конфіг слід розмістити в:", "files": "Файли", "player_management": "Керування гравцями", + "plugin_version_unknown": "Unknown version", "no_players": "Наразі на цьому сервері немає гравців", "player_management_plugin": { "active": "Плагін керування гравцями активний", diff --git a/i18n/locales/zh_Hans.json b/i18n/locales/zh_Hans.json index 82dd88b40..c945d0fe3 100644 --- a/i18n/locales/zh_Hans.json +++ b/i18n/locales/zh_Hans.json @@ -4395,6 +4395,7 @@ "config_location": "此配置应放置在:", "files": "文件", "player_management": "玩家管理", + "plugin_version_unknown": "Unknown version", "no_players": "此服务器上当前无玩家", "player_management_plugin": { "active": "玩家管理插件运行中", diff --git a/i18n/locales/zh_Hant.json b/i18n/locales/zh_Hant.json index 1c267b1ba..7ab488a85 100644 --- a/i18n/locales/zh_Hant.json +++ b/i18n/locales/zh_Hant.json @@ -4395,6 +4395,7 @@ "config_location": "此設定應放置於:", "files": "檔案", "player_management": "玩家管理", + "plugin_version_unknown": "Unknown version", "no_players": "此伺服器上目前沒有玩家", "player_management_plugin": { "active": "玩家管理外掛運作中", diff --git a/pages/dedicated-servers/[id].vue b/pages/dedicated-servers/[id].vue index cfe0123c8..a55959c15 100644 --- a/pages/dedicated-servers/[id].vue +++ b/pages/dedicated-servers/[id].vue @@ -143,6 +143,33 @@ const titleClasses = {{ server.region }} {{ server.type }} + + {{ + server.plugin_version + ? `v${server.plugin_version}` + : $t("pages.dedicated_servers.detail.plugin_version_unknown") + }} + + {{ serverNode.label || serverNode.id }} @@ -440,6 +467,8 @@ import { import { useAuthStore } from "~/stores/AuthStore"; import { getQueryString } from "~/composables/useRouteTab"; import { connectAddress } from "~/utilities/connectAddress"; +import { effectivePluginRuntime } from "~/constants/rconCommands"; +import { pluginReleaseUrl } from "~/constants/gameServerReleases"; import type { ServerRosterStatus } from "~/types/serverOverview"; // Literals, not the generated enum: a type added by a migration is absent @@ -619,6 +648,18 @@ export default { void this.$router.replace({ query }); }, }, + currentPluginVersion() { + return useApplicationSettingsStore().currentPluginVersion; + }, + pluginReleaseLink() { + return pluginReleaseUrl( + effectivePluginRuntime( + this.server?.plugin_runtime, + useApplicationSettingsStore().gameServerPluginRuntime, + ), + this.currentPluginVersion, + ); + }, pluginVersionMismatch() { if (!this.server || this.server.type !== "Ranked") { return false; From 2c74656fdea7f4385f848927b3dbd6754f555414 Mon Sep 17 00:00:00 2001 From: Luke Policinski Date: Tue, 6 Oct 2026 01:43:40 +0000 Subject: [PATCH 2/3] Align schedule rows on the play page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Each row sized its own action column to its button, so the state text (Live · Round 2, Check-in opens ...) started at a different x per row. Rows are now subgrids of one shared set of tracks on the list. --- components/play/PlaySchedule.vue | 16 +++++++++++++++- components/play/PlayScheduleRow.vue | 5 ++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/components/play/PlaySchedule.vue b/components/play/PlaySchedule.vue index 7a2983360..0f076e835 100644 --- a/components/play/PlaySchedule.vue +++ b/components/play/PlaySchedule.vue @@ -118,7 +118,7 @@ const matchesById = computed( + + diff --git a/components/play/PlayScheduleRow.vue b/components/play/PlayScheduleRow.vue index 8f3be1510..8cf17f45c 100644 --- a/components/play/PlayScheduleRow.vue +++ b/components/play/PlayScheduleRow.vue @@ -153,8 +153,11 @@ async function checkIn() {