diff --git a/app.py b/app.py
index 04e40fd..fbe78b6 100644
--- a/app.py
+++ b/app.py
@@ -29,7 +29,7 @@ from ui_builder import install_ui_builder
from khl_site.khl_data_center import APP as khl_site_app
BASE_DIR = Path(__file__).resolve().parent
-BUILD_VERSION = "2026.08.26.11"
+BUILD_VERSION = "2026.08.27.1"
# compatibility: BUILD_VERSION = "2026.08.26.1"
# compatibility: BUILD_VERSION = "2026.08.25.1"
# compatibility: BUILD_VERSION = "2026.08.24.15"
diff --git a/ui_builder/static/app.js b/ui_builder/static/app.js
index a27183f..c8a8017 100644
--- a/ui_builder/static/app.js
+++ b/ui_builder/static/app.js
@@ -6833,29 +6833,17 @@ function openTimerQuickEditor(focusActionId = "") {
const limit = Math.max(1, Number(props.rosterLimit) || 40);
const players = (Array.isArray(rows) ? rows : [])
.map((row, index) => normalizeHockeyPlayer(component, row, side, index));
- const hasLineData = players.some((player) => String(player.line || "").trim());
+ // BUILD125: the main “Игра” roster is always a jersey-number list.
+ // Line/five ordering belongs only to the dedicated “Пятёрки” workspace.
players.sort((left, right) => {
- if (hasLineData) {
- const lineValue = (player) => {
- const raw = String(player.line || "").trim();
- if (!raw) return 10000;
- const number = Number(raw);
- return Number.isFinite(number) ? number : 9000;
- };
- const lineDiff = lineValue(left) - lineValue(right);
- if (lineDiff) return lineDiff;
- const leftOrder = Number(left.lineSortOrder || 0) || 10000;
- const rightOrder = Number(right.lineSortOrder || 0) || 10000;
- if (leftOrder !== rightOrder) return leftOrder - rightOrder;
- }
- const leftNumber = String(left.number || "").replace(/^#/, "");
- const rightNumber = String(right.number || "").replace(/^#/, "");
+ const leftNumber = String(left.number || "").replace(/^#/, "").trim();
+ const rightNumber = String(right.number || "").replace(/^#/, "").trim();
if (!leftNumber && rightNumber) return 1;
if (leftNumber && !rightNumber) return -1;
return leftNumber.localeCompare(rightNumber, undefined, {
numeric: true,
sensitivity: "base",
- }) || left.name.localeCompare(right.name);
+ }) || left.name.localeCompare(right.name, "ru", { numeric: true, sensitivity: "base" });
});
return players.slice(0, limit);
}
@@ -8888,8 +8876,8 @@ function openHockeyPrematchButtonsEditor() {
-
-
+
+
`;
diff --git a/ui_builder/static/styles.css b/ui_builder/static/styles.css
index dc72e35..92fa3ff 100644
--- a/ui_builder/static/styles.css
+++ b/ui_builder/static/styles.css
@@ -7805,3 +7805,35 @@ body.hockey-navigation-open .runtime-viewport.has-hockey-pbp { gap: 14px !import
.hockey-line-order{display:grid;place-items:center;width:22px;height:22px;border:1px solid rgba(84,229,196,.34);border-radius:999px;color:#07130f;background:#54e5c4;font-size:9px;font-weight:950;font-variant-numeric:tabular-nums}
.hockey-line-card.is-unassigned .hockey-line-player{grid-template-columns:10px 30px minmax(0,1fr) auto}
.hockey-lines-empty{position:absolute;inset:0;display:grid;place-content:center;gap:6px;color:#7890a8;text-align:center}.hockey-lines-empty strong{color:#d9e8f6;font-size:17px}.hockey-lines-empty span{font-size:9px}
+
+
+/* BUILD125 — visible lower-panel selector parameters.
+ Keep the option/value editor inside the card instead of clipping it past the right edge. */
+.prematch-editor-selector-row {
+ grid-template-columns: 28px 28px 92px minmax(160px,1fr) minmax(125px,.78fr) minmax(140px,.82fr) minmax(190px,1.05fr) 150px 34px;
+ align-items: end;
+}
+.prematch-editor-selector-row .quick-selector-options-field {
+ grid-column: 4 / 8;
+ min-width: 0;
+}
+.prematch-editor-selector-row .quick-selector-options-field input {
+ width: 100%;
+ min-width: 0;
+}
+.prematch-editor-selector-row .quick-selector-default-field {
+ grid-column: 8 / 9;
+ min-width: 0;
+}
+@media (max-width: 1350px) {
+ .prematch-editor-selector-row {
+ grid-template-columns: 28px 28px 92px repeat(3,minmax(145px,1fr)) 34px;
+ }
+ .prematch-editor-selector-row .quick-selector-options-field { grid-column: 4 / 7; }
+ .prematch-editor-selector-row .quick-selector-default-field { grid-column: 4 / 6; }
+}
+@media (max-width: 760px) {
+ .prematch-editor-selector-row { grid-template-columns: 1fr; }
+ .prematch-editor-selector-row .quick-selector-options-field,
+ .prematch-editor-selector-row .quick-selector-default-field { grid-column: auto; }
+}