From 4a8eddf1d8a870178d55680a8c793fc97b5e0602 Mon Sep 17 00:00:00 2001 From: core Date: Mon, 1 Jun 2026 22:59:56 +0500 Subject: [PATCH] settings: group transcode params into 3 boxes (codec / bitrate / preset) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The flat transcode parameter row is reorganised into three bordered group cards: «Кодек» (codec, H.264 profile, preset, keyframe interval), «Битрейт» (rate control, bitrate, QP) and «Готовый профиль» (the SOFT/MEDIUM/HARD preset). All data-f controls and the .qpreset select keep their attributes, so the existing load/save and sync logic is unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) --- VERSION | 2 +- frontend/static/app.js | 29 ++++++++++++++++++++--------- frontend/static/style.css | 13 ++++++++----- 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/VERSION b/VERSION index cc5ed63..7547e44 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.147 +0.0.148 diff --git a/frontend/static/app.js b/frontend/static/app.js index 3d9e3ae..5b51a72 100644 --- a/frontend/static/app.js +++ b/frontend/static/app.js @@ -1765,16 +1765,27 @@ const Settings = { [["", "— свой —"]].concat(Object.keys(TR_PRESETS).map((k) => [k, k])).map(([v, t]) => ``).join("") + ``; return ( - `
` + - `` + - `` + - `` + - `` + - `` + - `` + - `` + + `
` + + `
Кодек
` + + `
` + + `` + + `` + + `` + + `` + + `
` + `
` + - `
` + `
` + + `
Битрейт
` + + `
` + + `` + + `` + + `` + + `
` + + `
` + + `
` + + `
Готовый профиль
` + + `
` + + `
` ); }, diff --git a/frontend/static/style.css b/frontend/static/style.css index ec4d981..8717e3d 100644 --- a/frontend/static/style.css +++ b/frontend/static/style.css @@ -432,13 +432,16 @@ footer.grid-bar { .tab.active { color: #fff; border-bottom-color: #c0392b; } .tab-panel[hidden] { display: none; } /* ряд настроек профиля: слева — ровная сетка параметров, справа — «Готовый профиль» */ -.tr-row { display: flex; gap: 18px; margin-top: 10px; padding-left: 28px; align-items: flex-start; } +.tr-row { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 10px; padding-left: 28px; align-items: flex-start; } .tr-row[hidden] { display: none; } -.tr-params { flex: 1; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px 16px; align-items: end; } -.tr-quality { flex: 0 0 auto; } +/* 3 группы параметров перекодирования: Кодек / Битрейт / Готовый профиль */ +.tr-group { border: 1px solid var(--border); border-radius: 10px; padding: 8px 12px 12px; background: var(--panel-2); } +.tr-gtitle { font-size: 11px; color: var(--text-dim); text-transform: uppercase; letter-spacing: .4px; margin-bottom: 8px; } +.tr-gbody { display: flex; flex-wrap: wrap; gap: 12px 14px; align-items: flex-end; } .tr-row label { display: flex; flex-direction: column; gap: 5px; font-size: 12px; color: var(--text-dim); } -.tr-params select, .tr-params input[type="number"] { display: block; width: 100%; } -.tr-quality select { display: block; min-width: 120px; } +.tr-gbody select, .tr-gbody input[type="number"] { display: block; } +.tr-gbody input[type="number"] { width: 80px; } +.tr-group-preset select { min-width: 120px; } .tr-row select:disabled, .tr-row input:disabled { opacity: .4; cursor: not-allowed; } /* блок профиля: режим (свой плеер / перекодировать) + ряд параметров */ .tr-block { padding: 12px 0; border-top: 1px solid var(--border); }