From c306daff925bc5d0422c440da6b5ff44f258f88e Mon Sep 17 00:00:00 2001 From: commilitia Date: Thu, 18 Jun 2026 17:01:41 +0800 Subject: [PATCH] =?UTF-8?q?docs=EF=BC=9ACHANGELOG=20=E8=A1=A5=202026-06-18?= =?UTF-8?q?=20=E6=8E=A8=E9=80=81=E9=80=9A=E7=9F=A5=EF=BC=88Web=20Push=20+?= =?UTF-8?q?=20=E6=A1=8C=E9=9D=A2=E5=8E=9F=E7=94=9F=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 网页 / PWA Web Push(VAPID)+ 桌面原生通知一条;HTML 与 md twin 同步,build.sh 重建 CHANGELOG.html --- CHANGELOG.html | 38 +++++++++++++++++++++++++++++++++++--- CHANGELOG.src.html | 22 ++++++++++++++++++++++ 2 files changed, 57 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.html b/CHANGELOG.html index 79c30e6..ad9a8e4 100644 --- a/CHANGELOG.html +++ b/CHANGELOG.html @@ -1,4 +1,4 @@ - + @@ -706,6 +706,14 @@ hr.line } hr.line::before { content: none; } +.lede +{ + /* 首字下沉為 float,本段行數不足以填滿下沉字高度時,浮標會探出段底, + 令次段首數行繞排、向右擠貼下沉字。將本段下沿托至下沉字下沿(高度= + 4.2em × line-height 0.85 + 頂距 8px,與下方 ::first-letter 同步), + 使次段恆起於下沉字之下。本段自然行高足夠時 min-height 不生效,無副作用。 */ + min-height: calc(4.2em * 0.85 + 8px); +} .lede::first-letter { font-family: var(--font-serif); @@ -2537,6 +2545,18 @@ main > *:nth-child(n+6) { animation-delay: 0.46s; }

本 Changelog 自 2026-05-22 起以 HTML 格式维护。此前之变更可从 main 分支 git log 取得;下表为近期较显著之 commit。

+

2026-06-18 — 推送通知:网页 / PWA Web Push + 桌面原生通知

+ +

页面 / PWA 关闭、或桌面窗口非前台时也能收到系统通知;判定统一为「页面打开走应用内提示,关闭则系统通知」,三端各自落地。

+ + +

2026-06-16 — 浏览器免重登 + 设备名持久化

浏览器端不再每次重启都要重新登录;长寿命 refresh_token 从此完全不进 JS,改由服务端 HttpOnly cookie 会话持有。对长寿命凭据而言比原先(refresh_token 在 JS 内存、开页期 XSS 可读)严格更安全。

@@ -2652,6 +2672,16 @@ main > *:nth-child(n+6) { animation-delay: 0.46s; } 时间倒序。细粒度迭代见 git 历史;本档只记录结构性 / 行为性变更与重要 fix。 +## 2026-06-18 — 推送通知:网页 / PWA Web Push + 桌面原生通知 + +页面 / PWA 关闭、或桌面窗口非前台时也能收到系统通知;判定统一为「页面打开走应用内提示,关闭则系统通知」。 + +- 网页 / PWA(Web Push, VAPID):服务端在事件未经 SSE 投递到设备时发 Web Push(收到文件 / 消息 / 传输完成 / 失败)。新增 push_subscriptions 表(含 locale,主键为 endpoint 的 SHA-256)+ /api/push/{vapid-key, subscribe} + internal/push 发送器(404 / 410 自动清理死订阅)。文案按设备语言服务端渲染(中简 / 中繁 / 英)。覆盖浏览器 / Android / iOS 16.4+ 已安装 PWA +- 桌面客户端原生通知:仅窗口非前台时弹(前台走应用内)。macOS UNUserNotificationCenter(未签名时安全空操作,待签名后显示)、Windows 原生 toast +- 判定复用 Hub.SendTo 的投递结果,零额外状态;离线消息改返 202,文本随推送送达 +- 设置页新增「推送通知」面板(仅浏览器 / PWA);prod 可选设 CDROP_VAPID_PUBLIC_KEY + CDROP_VAPID_PRIVATE_KEY(just vapid-keygen 生成;都留空则惰性关闭) +- commit 92a03ae + ## 2026-06-16 — 浏览器免重登 + 设备名持久化 浏览器端不再每次重启都要重新登录;长寿命 refresh_token 完全不进 JS,改由服务端 HttpOnly cookie 会话持有(比原先 refresh_token 在 JS 内存严格更安全)。 @@ -5019,7 +5049,9 @@ window.__JUZHEN_PUNCT__="quanjiao";window.__JUZHEN_JUSTIFY_ATOMS__=true;window._ .lede/.marginalia/.references/.appendix……)不命中、維持全功能。最近祖先勝, 故標題與 chrome 容器一旦命中,其後代(如 .slide-title 內的 .section-name/ .slide-dot、.title-page 內的作者欄)一併降級。選擇器涵蓋三模式;某模式不存在之 - class 自然不命中。 */ + class 自然不命中。**切記只列「非段落 chrome 本身」,切勿納入包裹正文的容器** + (如 .deck-stage/.deck/.cols-2)——否則「最近祖先勝」會把整個子樹正文一併降級、 + 喪失禁則/垂懸/長詞(曾誤納 .deck-stage 致 slides 全 deck 正文無禁則、標點落行首)。 */ level: { text: [ "h1, h2, h3, h4, h5, h6", // 全部標題(含 deck-/section-/slide-/tp-/toc-title) @@ -5027,7 +5059,7 @@ window.__JUZHEN_PUNCT__="quanjiao";window.__JUZHEN_JUSTIFY_ATOMS__=true;window._ ".subtitle, .section-subtitle, .deck-subtitle", // 副標題 ".meta, .timestamp, .actions, .page", // report chrome ".cover-block, .slide-foot, .toc-list", // slides 封面/頁尾/目錄條目 - ".deck-nav, .deck-counter, .deck-author, .deck-institute, .deck-date, .deck-actions, .deck-stage", + ".deck-nav, .deck-counter, .deck-author, .deck-institute, .deck-date, .deck-actions", ".title-page, .toc-page, .simple-title", // academic 前置 chrome(含 tp-/st- 欄位) ].join(", "), }, diff --git a/CHANGELOG.src.html b/CHANGELOG.src.html index e55fd8b..2b3b1c4 100644 --- a/CHANGELOG.src.html +++ b/CHANGELOG.src.html @@ -25,6 +25,18 @@

本 Changelog 自 2026-05-22 起以 HTML 格式维护。此前之变更可从 main 分支 git log 取得;下表为近期较显著之 commit。

+

2026-06-18 — 推送通知:网页 / PWA Web Push + 桌面原生通知

+ +

页面 / PWA 关闭、或桌面窗口非前台时也能收到系统通知;判定统一为「页面打开走应用内提示,关闭则系统通知」,三端各自落地。

+ + +

2026-06-16 — 浏览器免重登 + 设备名持久化

浏览器端不再每次重启都要重新登录;长寿命 refresh_token 从此完全不进 JS,改由服务端 HttpOnly cookie 会话持有。对长寿命凭据而言比原先(refresh_token 在 JS 内存、开页期 XSS 可读)严格更安全。

@@ -124,6 +136,16 @@ 时间倒序。细粒度迭代见 git 历史;本档只记录结构性 / 行为性变更与重要 fix。 +## 2026-06-18 — 推送通知:网页 / PWA Web Push + 桌面原生通知 + +页面 / PWA 关闭、或桌面窗口非前台时也能收到系统通知;判定统一为「页面打开走应用内提示,关闭则系统通知」。 + +- 网页 / PWA(Web Push, VAPID):服务端在事件未经 SSE 投递到设备时发 Web Push(收到文件 / 消息 / 传输完成 / 失败)。新增 push_subscriptions 表(含 locale,主键为 endpoint 的 SHA-256)+ /api/push/{vapid-key, subscribe} + internal/push 发送器(404 / 410 自动清理死订阅)。文案按设备语言服务端渲染(中简 / 中繁 / 英)。覆盖浏览器 / Android / iOS 16.4+ 已安装 PWA +- 桌面客户端原生通知:仅窗口非前台时弹(前台走应用内)。macOS UNUserNotificationCenter(未签名时安全空操作,待签名后显示)、Windows 原生 toast +- 判定复用 Hub.SendTo 的投递结果,零额外状态;离线消息改返 202,文本随推送送达 +- 设置页新增「推送通知」面板(仅浏览器 / PWA);prod 可选设 CDROP_VAPID_PUBLIC_KEY + CDROP_VAPID_PRIVATE_KEY(just vapid-keygen 生成;都留空则惰性关闭) +- commit 92a03ae + ## 2026-06-16 — 浏览器免重登 + 设备名持久化 浏览器端不再每次重启都要重新登录;长寿命 refresh_token 完全不进 JS,改由服务端 HttpOnly cookie 会话持有(比原先 refresh_token 在 JS 内存严格更安全)。