diff --git a/src/shared/versions.js b/src/shared/versions.js
index b8e0b96..b4d0a0a 100644
--- a/src/shared/versions.js
+++ b/src/shared/versions.js
@@ -1,6 +1,6 @@
export const HARBOR_VERSIONS = Object.freeze({
- macClient: '0.8.2',
- gatewayClient: '0.8.2',
+ macClient: '0.8.3',
+ gatewayClient: '0.8.3',
gatewayBackend: '0.8.0',
});
diff --git a/src/web/components/ClientOverviewPage.jsx b/src/web/components/ClientOverviewPage.jsx
index b1b46cf..81ede1a 100644
--- a/src/web/components/ClientOverviewPage.jsx
+++ b/src/web/components/ClientOverviewPage.jsx
@@ -1095,7 +1095,7 @@ export function ClientOverviewPage({
aria-expanded={localRulesOpen}
aria-controls="client-local-rules"
aria-label={gatewayDirect
- ? 'Сейчас работают правила Harbor Gateway'
+ ? 'Локальные правила недоступны: сейчас работают правила Harbor Gateway'
: localRulesOpen ? 'Закрыть локальные правила' : 'Настроить локальные правила'}
onClick={() => localRulesOpen ? requestCloseLocalRules() : openLocalRules()}
>
@@ -1105,7 +1105,7 @@ export function ClientOverviewPage({
{gatewayDirect
- ? 'Сейчас работают правила Gateway'
+ ? 'Локальные правила недоступны: сейчас работают правила Gateway'
: localRulesPendingRestart ? 'Правила ждут перезапуска' : 'Локальные правила'}
}
diff --git a/src/web/styles.css b/src/web/styles.css
index 91865ce..9ee7783 100644
--- a/src/web/styles.css
+++ b/src/web/styles.css
@@ -749,7 +749,13 @@ p {
}
.client-local-rules-toggle:disabled span {
- opacity: 0.7;
+ opacity: 0;
+ filter: blur(5px);
+ transform: translateX(8px);
+}
+
+.client-local-rules-toggle:disabled:hover span {
+ opacity: 1;
filter: blur(0);
transform: translateX(0);
}
@@ -3451,18 +3457,6 @@ p {
right: 8px;
}
- .client-local-rules-toggle:disabled span {
- opacity: 0;
- filter: blur(5px);
- transform: translateX(8px);
- }
-
- .client-local-rules-toggle:disabled:hover span {
- opacity: 1;
- filter: blur(0);
- transform: translateX(0);
- }
-
.client-access-tabs .client-access-tab,
.client-copy-button {
min-height: 44px;
diff --git a/test/web/responsive-layout-contract.test.js b/test/web/responsive-layout-contract.test.js
index 35c59f1..353c57e 100644
--- a/test/web/responsive-layout-contract.test.js
+++ b/test/web/responsive-layout-contract.test.js
@@ -74,10 +74,16 @@ test('tablet and mobile regions use normal flow with viewport-safe widths', () =
});
test('secondary menus share one right rail and both drawers open from the right', () => {
+ const disabledRulesLabel = rule('.client-local-rules-toggle:disabled span');
+
assert.match(component, /