Repair selected text reply review blockers

This commit is contained in:
Frank Song
2026-05-18 07:26:19 +08:00
parent 9646773487
commit 8daf716307
2 changed files with 15 additions and 4 deletions
+3 -2
View File
@@ -1847,9 +1847,10 @@
.msg-row:hover .msg-actions{opacity:1;}
.msg-action-btn{background:none;border:none;color:var(--muted);cursor:pointer;font-size:13px;padding:2px 5px;border-radius:5px;transition:color .12s,background .12s;line-height:1;}
.msg-action-btn:hover{color:var(--accent-text);background:var(--accent-bg);}
.selected-text-reply-btn{position:fixed;z-index:1200;display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border:1px solid var(--accent-bg-strong);border-radius:999px;background:var(--surface);color:var(--accent-text);box-shadow:0 8px 24px rgba(0,0,0,.22);font-size:12px;font-weight:600;line-height:1;cursor:pointer;opacity:0;pointer-events:none;transform:translateY(4px);transition:opacity .12s ease,transform .12s ease,background .12s ease,border-color .12s ease;}
.selected-text-reply-btn{position:fixed;z-index:1200;display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border:2px solid var(--accent);border-radius:999px;background:var(--bg);color:var(--text);box-shadow:0 8px 24px rgba(0,0,0,.26),0 0 0 1px var(--surface);font-size:12px;font-weight:700;line-height:1;cursor:pointer;opacity:0;pointer-events:none;transform:translateY(4px);transition:opacity .12s ease,transform .12s ease,background .12s ease,border-color .12s ease;}
.selected-text-reply-btn.visible{opacity:1;pointer-events:auto;transform:translateY(0);}
.selected-text-reply-btn:hover,.selected-text-reply-btn:focus-visible{background:var(--accent-bg);border-color:var(--accent);outline:none;}
.selected-text-reply-btn:hover{background:var(--accent-bg);border-color:var(--accent-hover);}
.selected-text-reply-btn:focus-visible{background:var(--accent-bg);border-color:var(--accent-hover);outline:2px solid var(--focus-ring);outline-offset:2px;}
/* TTS speaker button: hidden by default, shown when TTS is enabled.
* Use body-class selector instead of JS inline-style so the rule survives
* subsequent renderMd() passes and is not subject to inline-style cascade
+12 -2
View File
@@ -10,12 +10,17 @@ def read(rel: str) -> str:
def _locale_blocks(src: str) -> dict[str, str]:
matches = list(re.finditer(r"\n ([a-z]{2}(?:-[A-Z]{2})?): \{", src))
matches = list(
re.finditer(
r"\n (?:(['\"])([A-Za-z][A-Za-z0-9-]*)\1|([A-Za-z][A-Za-z0-9-]*)): \{",
src,
)
)
blocks: dict[str, str] = {}
for idx, match in enumerate(matches):
start = match.end()
end = matches[idx + 1].start() if idx + 1 < len(matches) else src.rfind("\n};")
blocks[match.group(1)] = src[start:end]
blocks[match.group(2) or match.group(3)] = src[start:end]
return blocks
@@ -67,9 +72,14 @@ def test_selected_text_reply_styles_and_i18n_exist_for_all_locales():
assert "position:fixed" in css
assert "pointer-events:none" in css
assert "pointer-events:auto" in css
assert "border:2px solid var(--accent)" in css
assert "background:var(--bg)" in css
assert "color:var(--text)" in css
assert "outline:2px solid var(--focus-ring)" in css
blocks = _locale_blocks(i18n)
assert blocks, "No locale blocks found"
assert "zh-Hant" in blocks, "Locale parser must include quoted script locales"
required = {
"selected_text_reply",
"selected_text_reply_title",