feat(5f): 代码块窗条+书评纸卡(T5/T6 车道收编,视觉复核 PASS)

- T5:≥4 行块挂 .code-win 窗条(JS 数行标类+伪元素渲染:语言
  标签取 shiki pre[data-language]+灰阶三点 #30363d 投影法一点化
  三点,弃红黄绿;条 #161b22 恒深区亮暗同判);单行/2行裸块;
  csge 文 4/18 判定边界实测准确;scoped 够不着 Content 内 pre
  坑用 :global 解
- T6:书评正文圆角纸卡(亮 #f4f4f2/暗 #201d18 暖棕夜灯,零新
  变量吃 T7 已入 tokens;1px hairline 四边抑制长文竖线感;标题
  区外置结构未动)
- 视觉复核(glm-5.3-flash:max 像素级):T5 四项全 PASS(三点实
  采样无红黄绿、条/点/体 github-dark 同族灰、与块顶圆角对齐);
  T6 双态 PASS;暗态窗条未入截图框为残留观察项(恒定 CSS 推定
  成立,判词 /tmp/beauty-impl/verdict.md)
- tasks.md T5 verify 落点修正(src/pages/archives,车道如实报
  告);E2E ? 浮层偶发竞态 2/2 复跑绿

车道:op-artalk(自验 5/5+2/2);收编验收:窗条 4/18+data-lang+
纸卡双态 computed+视觉双卡 PASS

验证: E2E 34/34 PASS(E2E_BASE=dist 口);窗条/纸卡 computed 与
      像素采样全对

Spec: 2026-10-26_blog-5f

Co-authored-by: GLM-5.3
This commit is contained in:
wait4xandGLM-5.3 committed 2026-11-01 09:31:22 +08:00
1 parent 814b138f89
commit 2bfe2ef3db
4 files changed
+146 -25

No files matched your search

+60
View File
@@ -78,4 +78,64 @@ const minutes = Math.max(1, Math.ceil(words / 220));
.pn { display: flex; flex-direction: column; gap: var(--space-2); margin-top: var(--space-5); }
.pn-item { font-size: 14px; color: var(--ink-2); transition: color var(--dur) var(--ease); }
.pn-item:hover { color: var(--accent); }
/* ---- T5 code window bar (§6-3): ≥4-line blocks only ---- */
.prose-tech :global(pre.code-win) {
position: relative;
padding-top: calc(var(--space-3) + 30px);
}
.prose-tech :global(pre.code-win::before) {
content: attr(data-lang);
position: absolute;
inset: 0 0 auto 0;
height: calc(var(--space-3) + 30px - 1px);
display: flex;
align-items: flex-end;
padding: 0 14px 8px 66px;
background: #161b22;
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
border-radius: 8px 8px 0 0;
font-family: var(--font-mono);
font-size: 11px;
letter-spacing: 0.04em;
color: #6e7681;
text-transform: lowercase;
}
.prose-tech :global(pre.code-win::after) {
content: '';
position: absolute;
top: 10px;
left: 14px;
width: 10px;
height: 10px;
border-radius: 50%;
background: #30363d;
box-shadow: 18px 0 0 #30363d, 36px 0 0 #30363d;
}
/* ---- T6 reading paper card (§6-2) ---- */
.prose-reading {
border: 1px solid var(--paper-line);
border-radius: 12px;
padding: var(--space-5) clamp(20px, 4vw, 32px);
}
</style>
<script>
// Code window bar marker (same as zh track): count lines, tag .code-win + data-lang
const markCodeWins = () => {
document.querySelectorAll('.prose-tech pre:not(.code-win)').forEach((pre) => {
const code = pre.querySelector('code');
if (!code) return;
const lines = (code.textContent ?? '').split('\n').length;
if (lines >= 4) {
// astro shiki 语言落 pre[data-language](code 类名为空)
const lang = pre.dataset.language ?? /language-([\w-]+)/.exec(code.className)?.[1] ?? 'text';
pre.dataset.lang = lang;
pre.classList.add('code-win');
}
});
};
document.addEventListener('astro:page-load', markCodeWins);
markCodeWins();
</script>