From 7182bc2c1a66215b07edfd38a9d1fa75444b04f9 Mon Sep 17 00:00:00 2001 From: Dmitriy Petrov Date: Sun, 12 Jul 2026 01:45:47 +0300 Subject: [PATCH] Bump Harbor versions and add delete dimming animation --- src/shared/versions.js | 4 ++-- src/web/styles.css | 9 +++++++++ test/web/rule-editor-contract.test.js | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/shared/versions.js b/src/shared/versions.js index 9f09f5f..210080a 100644 --- a/src/shared/versions.js +++ b/src/shared/versions.js @@ -1,6 +1,6 @@ export const HARBOR_VERSIONS = Object.freeze({ - macClient: '0.6.13', - gatewayClient: '0.6.12', + macClient: '0.6.14', + gatewayClient: '0.6.13', gatewayBackend: '0.6.0', }); diff --git a/src/web/styles.css b/src/web/styles.css index cb9dea9..9540886 100644 --- a/src/web/styles.css +++ b/src/web/styles.css @@ -1004,6 +1004,10 @@ p { z-index: 0; } +.client-deletable-row.is-removing > :not(.client-delete-strike):not(.client-local-rule-enabled) { + animation: client-delete-content-dim 820ms ease-out both; +} + .client-deletable-row.is-removing > .client-local-rule-enabled { z-index: 101; color: oklch(0.68 0.15 28); @@ -1352,6 +1356,11 @@ p { 100% { opacity: 0; transform: scaleX(0); transform-origin: right center; } } +@keyframes client-delete-content-dim { + 0%, 42% { opacity: 1; filter: brightness(1); } + 62%, 100% { opacity: 0.28; filter: brightness(0.42) saturate(0.5); } +} + @keyframes client-local-rules-notice { from { opacity: 0; filter: blur(6px); transform: translateY(-6px); } to { opacity: 1; filter: blur(0); transform: translateY(0); } diff --git a/test/web/rule-editor-contract.test.js b/test/web/rule-editor-contract.test.js index d0b3534..2587fac 100644 --- a/test/web/rule-editor-contract.test.js +++ b/test/web/rule-editor-contract.test.js @@ -33,6 +33,7 @@ test('rule editor add latency stays constant and dirty exits are guarded', () => assert.match(styles, /@keyframes client-delete-strike[\s\S]*scaleX\(0\)[\s\S]*scaleX\(1\)/); assert.match(styles, /53%[\s\S]*transform-origin: right center[\s\S]*100%[\s\S]*scaleX\(0\)/); assert.match(styles, /@keyframes client-local-rule-leave[\s\S]*translateX\(28px\)/); + assert.match(styles, /@keyframes client-delete-content-dim[\s\S]*brightness\(0\.42\)/); assert.match(styles, /\.client-local-rule:has\(\.client-rule-type\.is-open\)[\s\S]*z-index: 5/); });