fix: drop frosted blur for clearer glass, right-align runtime without icon

This commit is contained in:
Aisland
2026-08-21 13:11:45 +08:00
parent 0324644d0c
commit 06fcd8bafb
4 changed files with 19 additions and 5 deletions
+1 -1
View File
@@ -1058,7 +1058,7 @@ function ConsolePane() {
<div className="dsh-wt_consoleDivider" aria-hidden />
<div className="dsh-wt_consoleStatusRow">
<span className={'dsh-wt_consoleStatus dsh-wt_consoleStatus-' + c.status}>{statusLabel[c.status]}</span>
{c.runtimeMs != null && <span className="dsh-wt_consoleRuntime">⏱ {fmtDur(c.runtimeMs)}</span>}
{c.runtimeMs != null && <span className="dsh-wt_consoleRuntime">{fmtDur(c.runtimeMs)}</span>}
</div>
<div className={'dsh-wt_consolePreview' + (c.preview ? '' : ' dsh-wt_consolePreviewNone')} title={c.preview}>
{c.preview || (c.bound ? T('console.noPreview') : T('console.unboundShort'))}
+4 -4
View File
@@ -391,10 +391,10 @@ export const css = xtermCss + '\n' + [
'.dsh-wt_consoleThemeBtn:hover{opacity:1;background:var(--wt-chip)}',
'.dsh-wt_consoleThemeBtnOn{background:var(--wt-chip);color:var(--wt-text);opacity:1}',
'.dsh-wt_consoleGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:64px;align-content:start;margin-top:clamp(32px,9vh,110px);max-width:856px;margin-left:auto;margin-right:auto}',
'.dsh-wt_consoleCard{position:relative;display:flex;flex-direction:column;gap:14px;aspect-ratio:1/1;min-height:192px;padding:21px;background:linear-gradient(135deg,rgba(255,255,255,.05) 0%,rgba(255,255,255,.01) 34%,rgba(0,0,0,.04) 100%),rgba(18,23,32,.18);backdrop-filter:blur(4px) saturate(1.25);-webkit-backdrop-filter:blur(4px) saturate(1.25);border:1px solid transparent;border-radius:16px;box-shadow:0 10px 28px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.07);cursor:pointer;transition:transform .14s ease,box-shadow .14s ease;overflow:hidden}',
'.dsh-wt_consoleCard{position:relative;display:flex;flex-direction:column;gap:14px;aspect-ratio:1/1;min-height:192px;padding:21px;background:linear-gradient(135deg,rgba(255,255,255,.05) 0%,rgba(255,255,255,.01) 34%,rgba(0,0,0,.04) 100%),rgba(18,23,32,.12);border:1px solid transparent;border-radius:16px;box-shadow:0 10px 28px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.07);cursor:pointer;transition:transform .14s ease,box-shadow .14s ease;overflow:hidden}',
// 玻璃边缘:四角黑白渐变描边(左上/右下=白,右上/左下=黑),1px 环挖空实现
'.dsh-wt_consoleCard::after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;background:conic-gradient(from 45deg,rgba(0,0,0,.4) 0deg,rgba(255,255,255,.55) 90deg,rgba(0,0,0,.4) 180deg,rgba(255,255,255,.55) 270deg,rgba(0,0,0,.4) 360deg);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;pointer-events:none;opacity:.5}',
'.dsh-wt_console[data-wt-theme=light] .dsh-wt_consoleCard{background:linear-gradient(135deg,rgba(255,255,255,.45) 0%,rgba(255,255,255,.15) 40%,rgba(31,41,55,.04) 100%),rgba(255,255,255,.28);box-shadow:0 10px 28px rgba(31,41,55,.18),inset 0 1px 0 rgba(255,255,255,1)}',
'.dsh-wt_console[data-wt-theme=light] .dsh-wt_consoleCard{background:linear-gradient(135deg,rgba(255,255,255,.45) 0%,rgba(255,255,255,.15) 40%,rgba(31,41,55,.04) 100%),rgba(255,255,255,.2);box-shadow:0 10px 28px rgba(31,41,55,.18),inset 0 1px 0 rgba(255,255,255,1)}',
'.dsh-wt_console[data-wt-theme=light] .dsh-wt_consoleCard::after{background:conic-gradient(from 45deg,rgba(27,31,36,.4) 0deg,rgba(255,255,255,1) 90deg,rgba(27,31,36,.4) 180deg,rgba(255,255,255,1) 270deg,rgba(27,31,36,.4) 360deg);opacity:.9}',
// 状态光效卡片:玻璃边缘让位给霓虹描边/旋转光环
'.dsh-wt_consoleCard-glowDone::after,.dsh-wt_consoleCard-glowNeed::after{opacity:0}',
@@ -404,7 +404,7 @@ export const css = xtermCss + '\n' + [
'.dsh-wt_consoleIcon{flex:none;font-size:31px;line-height:1}',
'.dsh-wt_consoleName{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:20px;font-weight:700;line-height:28px;color:var(--wt-text)}',
'.dsh-wt_consoleDivider{flex:none;height:1px;background:var(--wt-border)}',
'.dsh-wt_consoleStatusRow{display:flex;align-items:baseline;gap:9px;min-width:0}',
'.dsh-wt_consoleStatusRow{display:flex;align-items:baseline;justify-content:space-between;gap:9px;min-width:0}',
'.dsh-wt_consoleStatus{flex:none;font-size:22px;font-weight:700;line-height:30px;color:var(--wt-text2)}',
'.dsh-wt_consoleStatus-busy{color:var(--dsw-alias-state-accent-primary,#4f8ef7)}',
'.dsh-wt_consoleStatus-need{color:var(--dsw-alias-state-warning,#d29922)}',
@@ -422,7 +422,7 @@ export const css = xtermCss + '\n' + [
'.dsh-wt_consoleEmpty{padding:40px 0;text-align:center;font-size:12px;color:var(--wt-text3)}',
// 创建卡片:虚线 + 居中加号,永远最后一位
// 创建卡片:玻璃底 + 虚线边,永远最后一位
'.dsh-wt_consoleAdd{justify-content:center;align-items:center;gap:10px;background:rgba(18,23,32,.2);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1.5px dashed var(--wt-borderHover)}',
'.dsh-wt_consoleAdd{justify-content:center;align-items:center;gap:10px;background:rgba(18,23,32,.14);border:1.5px dashed var(--wt-borderHover)}',
'.dsh-wt_consoleAdd::after{display:none}',
'.dsh-wt_console[data-wt-theme=light] .dsh-wt_consoleAdd{background:rgba(255,255,255,.45)}',
'.dsh-wt_consoleAdd:hover{border-color:var(--dsw-alias-state-accent-primary,#4f8ef7);background:rgba(23,28,37,.45)}',
@@ -1342,3 +1342,14 @@
cleanSample「结论:完成了。 之后 结束」(围栏+行内代码全部滤除)✓、真实会话全代码消息
正确回退显示「暂无消息」✓;functional-diag 全 20 STEP ERROR_COUNT: 0。
- 备注:纯客户端改动,F5 即生效。
## 补记(控制室第九轮:去磨砂 + 运行时右对齐)
- 用户反馈:① 井字格透过来但被磨砂模糊了——去掉磨砂玻璃效果,透明度再加;② 工作时
右侧计时小表的 ⏱ logo 丑——去掉图标、时间右对齐。
- 实现:① 卡片与创建卡删除 backdrop-filter(blur 全部去掉);底再降:暗 .18→.12、
浅 .28→.2、创建卡 .2→.14;② ConsolePane 运行时 span 去掉 ⏱;statusRow 改
justify-content:space-between——状态在左、时间贴右。
- 验证(probe-batch16):cardBlur 'none' ✓、cardBgColor rgba(18,23,32,.12) ✓、
statusRowJustify 'space-between' ✓;functional-diag 全 20 STEP ERROR_COUNT: 0。
- 备注:纯客户端改动,F5 即生效。
+3
View File
@@ -172,6 +172,9 @@ const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
var gs0 = getComputedStyle(cardEl);
out.cardSheen = gs0.backgroundImage ? gs0.backgroundImage.slice(0, 70) : null;
out.cardBlur = gs0.backdropFilter ? gs0.backdropFilter.slice(0, 40) : null;
out.cardBgColor = gs0.backgroundColor;
var stRow = cardEl.querySelector('.dsh-wt_consoleStatusRow');
out.statusRowJustify = stRow ? getComputedStyle(stRow).justifyContent : null;
var ge = getComputedStyle(cardEl, '::after');
out.glassEdge = ge.backgroundImage ? ge.backgroundImage.slice(0, 70) : null;
out.glassEdgeOpacity = ge.opacity;