diff --git a/SHA256SUMS b/SHA256SUMS index 4592a74..0626246 100644 --- a/SHA256SUMS +++ b/SHA256SUMS @@ -92,8 +92,8 @@ e655bb17583e46f182226d7d2e1da45e6dffd0a8fd457e0cfb776778445e4358 integrations/r 3f092a9ab80221eddd67be4d1a776acbc6e04c1eb6011b588280c28e83b2582f integrations/routeros-oci-build/build-routeros-oci.sh 3f267cafa16006e5456ade78ee2d5fae02cc7ce747839523068ffd8d7c98798a integrations/routeros-oci-build/docker-entrypoint.sh 13189fa546c3488dddd8efc80c47f6da5241e5fc28b79cbfe795414ea05c7a4f langs/README.md -a83dd54e685cdf96c2f3c8dc82c8df2ccc4c3e46268d9c1dbc68d293cbebf8bb langs/en_US.json -8b9b4ea09b9f946167805173f27fab9b17a6579dc28811cbc0aee619a13c5166 langs/pl_pl.json +9aee5697423f618e2d913f071240d288134ad1e6d9aeedc37636a5185ae33fb2 langs/en_US.json +1a0b5a24daf53fb04f92bb4fbd5dfa501e0a5a7c0bb0dad7f58668c3be1b5110 langs/pl_pl.json 9664543e4d03422788a65e42f968c1f026c2235cb5be6fc3e0ad318997077538 make_zip.py e830d37dd1f81a4b0aa7d535f5bba69e34e433b0fd99cc8ee0b296786c32379a migrations/0002_admin.sql 20112cc82192098b8d602f1c4f7ca08712e9e1366c845fabb92753187c370d35 migrations/0003_certificate_renewals.sql @@ -185,7 +185,7 @@ eafb1afb4bf3dd967c18313d4725cc69edf7ad9d351b89f4e1da545f08e7e941 src/admin/test c18c369124368f58524652565102817ed69fd25b222b0c5e737ef7632b45dcfb src/admin/web/acl-picker.js 48fcd818c522fe80f2c7b2e218f87de6a7772ffd0a24e93502780b03ec78e335 src/admin/web/acme.js 86abf50f39862d821cd2e43ca425671aa85289272915132c5a9a5dd1fc4182e2 src/admin/web/api-tokens.js -5a9842a3f3ac5f6c769413496ea5ea1d019446d051cdde252784b1a1cc46996f src/admin/web/app/backend-dashboard.js +faa9735c2a02746b2954bc4955eb609f94afebb685cd5521d2629640cea2777a src/admin/web/app/backend-dashboard.js aed3aea4eef0011c6b51d39736782e7d1ec52662e422f40e0c7b9ddfc19d0378 src/admin/web/app/certificate-inspection.js 1a4d40a86067493e75b47f2d735d50fa4d161344ce145d4e502b0225144ed45a src/admin/web/app/chart-scales.js e5b39b5592ba81292571033f26934ac0cd42bcdca7395e91094973cecb3eeaf8 src/admin/web/app/config-history.js @@ -193,7 +193,7 @@ fcce3b0204ca2c679f5d8049d020619664a3c0a45889975681258d82ae329988 src/admin/web/ d695ec90fb5c98c27d7ba1d2bebf54f9840985fc530efcec3fcaf48d74b36c6b src/admin/web/app/dashboard-inline-layout.js e4238322a985d3e8b7f2de94b7af31e1c718775590b2c7b3428b878cd43337b7 src/admin/web/app/dashboard-layout-editor.js a184c50e1ca6bb5a14954e31b15f09ff9978fb939064ca724851bbb4e661dc56 src/admin/web/app/dashboard-presets.js -07d4bdafa83e591fbe90d2f6199d4efa2e7207973c83c402c43d3631e64539c7 src/admin/web/app/icons.js +2bfc071e4d50b01f39650ac74380b355daf847a9b3c015cb5b3f17d8771114c6 src/admin/web/app/icons.js 32aa11f041eafdf16e66adef6f5847a67413785224da2c19ecbf825996622aff src/admin/web/app/overview-extra-metrics.js 5e62cccf6a9507fe208e9f41bbd08453c3d8c6a6b83c56d93a2bb22550ea6e9a src/admin/web/app/overview-masonry.js 4d1d4760cdff44771c9d880a7c0da81d7233ef6e3a4868111a522703831a7a54 src/admin/web/app/overview-samples.js @@ -210,13 +210,13 @@ b7ead49224a4ec67181d3f24f9d9634bd6d76756f826a4d5d993300637d1d8f3 src/admin/web/ f5855db3327f51170a28114e07d207745b4d6c8822d88d24c1a81eb92f345b14 src/admin/web/cache-panel.js 9f323507649910561518b63cf6632e81b3ecc4b09501ae53b635705f34ea6587 src/admin/web/certificate-api.js a09f060b47771c56e9b9e57f1b896a32a2f87f1fb33401ac76932a91d247c67e src/admin/web/css/00-tokens.css -8a008583f2e15dddb6e5a2f45a91a21784bc2c49357f92d49ba49da4b6ae0602 src/admin/web/css/10-base.css +422a8c04d6499f806516be1694f316a4881d7cc191072218ea851445e2493506 src/admin/web/css/10-base.css 6ed54b27a4a81b073f1d30cf61e366f3d5c1f6f8495f0d0a8af48e061937eb4e src/admin/web/css/20-shell.css -a07b840826c97706b3bab9ae805445531faaceb033ca61034dd8428c3af56d3c src/admin/web/css/30-overview.css +feca0078ca889900a75d08a4a241e1a8ec787c8f4de25933d4883aac955e8023 src/admin/web/css/30-overview.css dd82b5e3ead91c20bb08cf8d71bbba31ea8e3d108c417913c63409f3e34da7e1 src/admin/web/css/40-editors.css 24defe4c76df881da43498e2fc9ebd2927178f4a6f4dc964dbbae03353634008 src/admin/web/css/50-settings.css f8b515c63080c71ee647cfd8c36628271e8357b31cd84f00cf591e9b752b44fe src/admin/web/css/60-monitoring.css -33c556cd4be0310117ea5324d27e622b0b5ca2190c8d6f70aa551d94fb411d38 src/admin/web/css/70-responsive.css +fb7cc4d733cb9a3e320a8cb95269ca047394dded8846120ffb50aaeaaab4d749 src/admin/web/css/70-responsive.css 8009afdb04d5170687816730cc930a22fead1fe0248835ca7e8de81d6907395d src/admin/web/css/README.md 8241bd9489dfed082863948829a44a49bf0a8e9cd63c55809655109e393e0918 src/admin/web/css/manifest.json ee51ab0912e0ade6a3e1c2ea6f533bb2f65a6d3e6ec9087e25b9f0df009c19b2 src/admin/web/dashboard-defaults.json @@ -243,14 +243,14 @@ e6c4d91d1542d0a5b47bb8736f9539d43a6713df5a473b635519d5b7eac2eb9c src/admin/web/ 0a5fff35555153f59d4346933030a67b6e1a8768cee7a47cfa2fcf1a2c564f63 src/admin/web/favicon.svg 7cbdef9192a9dee1f8eac42b85f52b3190f7f6efae50004aa7ad116a910e4036 src/admin/web/file-logs.js 3f0525ca1d4e088ccd4988b8a117b26a8cf8c12213b24c37081d41b68d2b0ff2 src/admin/web/host404.js -1809fefeccaf951a81d685445334d324de4c0aaf4cbe8d1f92bfe17fabee90ab src/admin/web/index.html +d9b226ebdd93b3e829f20e84dddb34f9bdba1ab01aefb33455102077ef0c94dd src/admin/web/index.html 7979c490b7fcfcd8f5e52e99fcf7757d78509337a625341c98f62c6da50da374 src/admin/web/integrations.js 7a12f020fc587205694978ab41b660e9a80487d413fbf6e34fc525eabc58308f src/admin/web/login-keys.json ac9f667273918e18406df06cb2613c923f50a88897693a03a18f500e22dc6ec2 src/admin/web/login.html c2e5f554810b8e34fb47361fb90a01073a2e332ee26d82e030956fad3ec1f83e src/admin/web/login.js 16d848a25f744e55d18757ce82cfd80e85bcc5b1777342c41e7bd732e13d8913 src/admin/web/management.js 1f3d10e389c9c20e6eb019509fa6e82b50c6b43bbf988c1210a4d42bb73985d0 src/admin/web/partials/overview-charts.html -72d151410dbbad1572309da366c19343587fa72fdf47a1849fcf2ae9b6bab93e src/admin/web/partials/overview-metrics.html +95ba5fa72c04628f211ca216931a895ddf2059a791fa9d17c74812acd6c874d0 src/admin/web/partials/overview-metrics.html 3928afce2ed6d5f2d3e29475dd29e4c3bd3c6df180ad5119beaff0c7a58e3b3b src/admin/web/prometheus-token.js 2d491fe9a547fe109dc5db6a74806d50b08c3daca15a6622c79c9fea33b10c63 src/admin/web/redirects.js 76a01f590d49649dcb1f554c221290919b2a8438e6001737f3c096fa6daec74d src/admin/web/settings.js @@ -347,7 +347,7 @@ cc75698be2828000e88f2c482bd26f2fa4050e3432bec1b5a581dca17fef4a37 src/config/mod dd9a6ad8f58e0cdd1ae74f3f972fee0ac14383cd8b8f518403b9a36c169f35bd src/config/snapshot.rs 477cddaa1e1c0b9b605a2f550971a04cf30287519cba70cfbb2e1860e3a93ff2 src/config/tests.rs f35de0ee1516ece6bbfd2b2a7db7d1e0f5048b0ec47cf2a3765dffb799abfd93 src/config/transport_tests.rs -76bf74a51fa5c4d12c5fe3e5ba066fbf7a73d83bd62f349b18be100930f204a8 src/db.rs +a09f361d70510d6226f4dd6785e649c3dc01ccafc70a4c8b0dcd098e224129b7 src/db.rs c290d0cb02dfa5d2c60ecabac1cfb20c8884e3d14cca1944906c6d8e677f1784 src/db/api_tokens.rs 892ec0e5985700cca399c861197f6c9d2f1c823d8d95b88abac9d27ae15a069a src/db/certificate_api.rs 5491dd7bb9b3fceac97c4dea63aba6d5c7abcb0fbd06e36ae986e00c79bc07d0 src/db/dashboard_presets.rs @@ -558,7 +558,7 @@ b791762b4ab7a43c3be19df84e523faf3dfb4df055f66d02178f93edb60d2204 src/web_server 714418c86ab241020a561fcf662a8fe324a6a70cc2fd3a313c56d7939c14b9e8 src/web_server/tests.rs f00743af2cf4a5952caef7a1dcf68e7817b5599a252a9973e1c22045517c0b0e tests/fixtures/argon2id.json 2f7f0453c817dc9e3d4ab61296af5821ff3e0826ad70511714afd7486c6105bc tests/panel_icons_browser.py -d136ebe964e83aa7194d70ec7e9dda36cf0e9832e7cd0d357d199440a705e4f2 tests/panel_icons_contract.js +5db3215d2e43e9dc9348a42b2351b7c605991ed8757f598de539f8f84e3f9593 tests/panel_icons_contract.js 01af3008be27fabb486c141c67099af104f2725cc56f4c656aea9741a3c150cd tests/panel_interface_contract.py 24a815a280de87a7ccec6f4d212d1468022c844e9e7d0b113349ff26bde5fc52 tests/panel_refresh_contract.js e24a0f84f1bfc46964df865ac387d651f7b384d781cbc8f3a9a5b0b60f3d69ca tests/vhost_auth_selection.js diff --git a/langs/en_US.json b/langs/en_US.json index 4599bc1..25b07f9 100644 --- a/langs/en_US.json +++ b/langs/en_US.json @@ -2643,7 +2643,7 @@ "backendWidgetInFlight": "In flight", "backendWidgetErrorsRate": "Recent errors/s", "backendWidgetErrorPercent": "Recent failed requests", - "backendWidgetProbeCount": "Probed healthy origins", + "backendWidgetProbeCount": "Health Origins", "backendWidgetH2c": "H2C origins", "backendWidgetModeUnknown": "Unknown", "vhProtocolCompatibilityWarning": "Compatibility mode: saved HTTP/2 HTTPS origins retain the previous H2/H1 TLS fallback. Choose H2 only if HTTP/1.1 must be rejected.", diff --git a/langs/pl_pl.json b/langs/pl_pl.json index f8aff2a..ea9f2ce 100644 --- a/langs/pl_pl.json +++ b/langs/pl_pl.json @@ -2643,7 +2643,7 @@ "backendWidgetInFlight": "W toku", "backendWidgetErrorsRate": "Błędy/s", "backendWidgetErrorPercent": "Błędne żądania w ostatnim okresie", - "backendWidgetProbeCount": "Zdrowe backendy z sondami", + "backendWidgetProbeCount": "Zdrowe źródła", "backendWidgetH2c": "Backendy h2c", "backendWidgetModeUnknown": "Nieznane", "vhProtocolCompatibilityWarning": "Tryb zgodności: zapisane wcześniej backendy HTTPS HTTP/2 zachowują fallback TLS H2/H1. Wybierz „Tylko H2”, jeżeli HTTP/1.1 ma być odrzucony.", diff --git a/src/admin/web/app/backend-dashboard.js b/src/admin/web/app/backend-dashboard.js index 44c88bc..f4de018 100644 --- a/src/admin/web/app/backend-dashboard.js +++ b/src/admin/web/app/backend-dashboard.js @@ -45,7 +45,7 @@ window.rustProxyBackendDashboard = (() => { for (const id of ids) { if (!visible(id)) continue; set(`backend-dashboard-${id.slice("backend_".length)}`, "-"); - set(`backend-dashboard-${id.slice("backend_".length)}-detail`, t("backendWidgetUnavailable")); + set(`backend-dashboard-${id.slice("backend_".length)}-detail`, id === "backend_latency" ? `${t("backendWidgetProbeCount")} -` : t("backendWidgetUnavailable")); } for (const id of ["backend-dashboard-in-rate", "backend-dashboard-out-rate"]) set(id, "-"); for (const id of ["backend-dashboard-active-line", "backend-dashboard-error-line", "backend-dashboard-latency-line", "backend-dashboard-in-line", "backend-dashboard-out-line", "backend-dashboard-request-line", "backend-dashboard-capacity-line", "backend-dashboard-5xx-line", "backend-dashboard-timeout-line", "backend-dashboard-network-line", "backend-dashboard-retry-line", "backend-dashboard-queue-line"]) @@ -191,7 +191,7 @@ window.rustProxyBackendDashboard = (() => { } if (visible("backend_latency")) { set("backend-dashboard-latency", latency === null ? "-" : `${fmt(latency, 1)} ms`); - set("backend-dashboard-latency-detail", `${t("backendWidgetProbeCount")}: ${probes.length}`); + set("backend-dashboard-latency-detail", `${t("backendWidgetProbeCount")} ${probes.length}`); paintSeries("latency", "backend-dashboard-latency-line", Math.max(1, ...samples.latency)); } if (visible("backend_traffic")) { diff --git a/src/admin/web/app/icons.js b/src/admin/web/app/icons.js index 1676def..fc64818 100644 --- a/src/admin/web/app/icons.js +++ b/src/admin/web/app/icons.js @@ -50,6 +50,8 @@ const UI_ICON_SHAPES = Object.freeze({ sortDown: [["path", { d: "M8 5v14M5 16l3 3 3-3M14 8h5M14 12h4M14 16h3" }]], sortUp: [["path", { d: "M8 19V5M5 8l3-3 3 3M14 8h3M14 12h4M14 16h5" }]], trash: [["path", { d: "M4 7h16M9 3h6l1 4H8l1-4ZM7 7l1 14h8l1-14M10 11v6M14 11v6" }]], + toggleOff: [["rect", { x: "3", y: "7", width: "18", height: "10", rx: "5" }], ["circle", { cx: "8", cy: "12", r: "3", fill: "currentColor", stroke: "none" }]], + toggleOn: [["rect", { x: "3", y: "7", width: "18", height: "10", rx: "5" }], ["circle", { cx: "16", cy: "12", r: "3", fill: "currentColor", stroke: "none" }]], undo: [["path", { d: "M9 7H4v-5M4 7l4-4M4.5 8A8 8 0 1 1 5 17" }]], upload: [["path", { d: "M12 16V4m0 0-4 4m4-4 4 4M4 20h16" }]], users: [["circle", { cx: "9", cy: "9", r: "3" }], ["path", { d: "M3 20v-2a5 5 0 0 1 10 0v2M16 8a3 3 0 0 1 0 6M16 15a5 5 0 0 1 5 5" }]], @@ -128,6 +130,8 @@ function uiIconForTarget(target) { if (target.matches(".overview-inline-grip, .overview-inline-narrow, .overview-inline-widen, .overview-inline-up, .overview-inline-down, .overview-inline-hide, .overview-layout-narrow, .overview-layout-widen, .overview-layout-up, .overview-layout-down, .overview-layout-hide")) return null; if (target.matches("#tunnels-open")) return null; if (target.matches("#web-service-preset-apply")) return "wand"; + if (target.matches(".vhost-quick-toggle.is-enable")) return "toggleOn"; + if (target.matches(".vhost-quick-toggle.is-disable")) return "toggleOff"; if (target.matches(".listener-h2-settings-link, .listener-h3-settings-link")) return "settings"; if (target.dataset.panel && UI_PANEL_ICONS[target.dataset.panel]) return UI_PANEL_ICONS[target.dataset.panel]; if (target.dataset.settingsTab && UI_SETTINGS_TAB_ICONS[target.dataset.settingsTab]) return UI_SETTINGS_TAB_ICONS[target.dataset.settingsTab]; diff --git a/src/admin/web/css/10-base.css b/src/admin/web/css/10-base.css index b6819f7..8c9bc27 100644 --- a/src/admin/web/css/10-base.css +++ b/src/admin/web/css/10-base.css @@ -1456,9 +1456,16 @@ body[data-density=compact] .page-footer { text-align: left; } +.about-repository span:first-child { + margin-right: auto; + text-align: left; +} + .about-repository span:last-child { + margin-left: auto; color: var(--muted); font: 10px var(--mono); + text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; diff --git a/src/admin/web/css/30-overview.css b/src/admin/web/css/30-overview.css index ca195bb..245a032 100644 --- a/src/admin/web/css/30-overview.css +++ b/src/admin/web/css/30-overview.css @@ -638,6 +638,28 @@ body[data-density=compact] .pool-card .table-scroll { top: 44px; } +#panel-overview .backend-latency-stat>span:first-child { + display: block; + padding-right: 104px; +} + +#panel-overview .backend-latency-stat .backend-health-origins { + position: absolute; + top: 10px; + right: 10px; + margin: 0; + max-width: 100px; + color: var(--muted); + font: 9px var(--mono); + line-height: 1.25; + text-align: right; + white-space: nowrap; +} + +#panel-overview .dashboard-overview-grid.is-unlocked .backend-latency-stat .backend-health-origins { + top: 44px; +} + .stat-chart strong { margin-bottom: 3px; } diff --git a/src/admin/web/css/70-responsive.css b/src/admin/web/css/70-responsive.css index 59bcc76..825c5b5 100644 --- a/src/admin/web/css/70-responsive.css +++ b/src/admin/web/css/70-responsive.css @@ -897,8 +897,7 @@ grid-template-columns: repeat(2, minmax(0, 1fr)); } - .logs-card>.card-heading, - .about-repository { + .logs-card>.card-heading { align-items: flex-start; flex-direction: column; } diff --git a/src/admin/web/index.html b/src/admin/web/index.html index 9f185f8..6421643 100644 --- a/src/admin/web/index.html +++ b/src/admin/web/index.html @@ -4467,16 +4467,16 @@ log_errors = On