dsh-happy-reader 0.2.5 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -21,8 +21,8 @@
21
21
  收起会话标题栏,阅读区域更大。
22
22
  - 只作用于应用内的标题栏;Windows 最上方的系统窗口标题条(拖动窗口、
23
23
  最小化/最大化/关闭)不受影响
24
- - **自动避让导航头部**:进入"查询用量"等内嵌页面时,顶部会变成唯一的"返回"按钮——
25
- 这种对话框/嵌入页的头部**不会被隐藏**,不必担心回不去
24
+ - **只收会话标题栏本身**(v0.2.6 起):插件页("添加插件"入口所在)、"查询用量"等
25
+ 嵌入页(顶部唯一的"返回"按钮)、弹出对话框——这些页面的头部一律不受影响
26
26
 
27
27
  ### 3. 字号 10–40px
28
28
  面板里 −/+ 步进调节,突破官方 22px 的调整上限:
@@ -30,6 +30,9 @@
30
30
  在官方设置里调,插件显示也跟着变,两边永远一致
31
31
  - **23–40px 段:由缩放层补足**——超出官方上限的部分照样能放大,
32
32
  此时官方设置保持原样不动
33
+ - **代码块内容随字号同步缩放**(v0.2.7 起):官方原版代码块字号固定 11px 完全不动;
34
+ 插件按官方标题同款的"增量"机制补齐——调大调小都跟着走(14px 时与官方逐值一致,
35
+ 无任何覆盖痕迹)
33
36
  - 随时调回 22px 以内即交还官方
34
37
 
35
38
  ### 4. 字体选择(只列出本机已装字体)
package/lib/client.js CHANGED
@@ -3,7 +3,7 @@
3
3
  // 九项功能:
4
4
  // ① 隐藏输入区(composer)
5
5
  // ② 隐藏上边栏(会话标题栏;最上方的系统窗口标题条是系统窗口控制区,未触碰)
6
- // ③ 字号 10–40px(10–22 与官方设置直连,超出部分用缩放层补齐)
6
+ // ③ 字号 10–40px(10–22 与官方设置直连,超出部分用缩放层补齐;代码块内容随之同步缩放)
7
7
  // ④ 内容宽度(官方范围内与官方手柄同键同步;超出官方钳制上限时扩展,拖手柄即交还)
8
8
  // ⑤ 字体选择(正文字体·中文/西文分设 + 代码字体,只列出本机已装字体)
9
9
  // ⑥ 全屏(网页全屏 API;Esc 或再点开关退出,状态与真实全屏双向同步)
@@ -29,7 +29,7 @@ window.__ModuleLoader__.load({
29
29
  var exports = module.exports
30
30
 
31
31
  // ── 常量 ────────────────────────────────────────────────────────────
32
- const VERSION = '0.2.5'
32
+ const VERSION = '0.2.7'
33
33
  const STATE_KEY = 'dsh.reader-boost.v1'
34
34
  const FAB_ID = 'dsrb-fab'
35
35
  const PANEL_ID = 'dsrb-panel'
@@ -132,12 +132,19 @@ window.__ModuleLoader__.load({
132
132
  .dsrb-pairCol{flex:1;min-width:0}
133
133
  .dsrb-mini{font-size:11px;color:#9a9a9a;margin-bottom:3px}
134
134
  .dsrb-pairCol .dsrb-select{margin-top:0}
135
+ /* 代码块随字号缩放(v0.2.7):官方代码块 token 固定 11px 不随字号,按官方标题同款增量写法
136
+ 补齐;14px 时计算值与官方原值一致(零覆盖痕迹)。:root body 提权以压过官方主题对同名
137
+ token 的任何 body/root 重声明;字族仍引用官方变量,字体选择链路不变 */
138
+ :root body{--dsw-font-markdown-code-block:calc(11px + var(--dsh-content-font-delta))/calc(19px + var(--dsh-content-font-delta)) var(--ds-font-family-code);--dsw-font-markdown-code-block-small:calc(11px + var(--dsh-content-font-delta))/calc(16px + var(--dsh-content-font-delta)) var(--ds-font-family-code)}
135
139
  `
136
140
  // 隐藏输入区(关键:height:0 而非 display:none —— 官方滚动锚定依赖该元素的几何信息)
137
141
  const HIDE_CSS = '[data-composer-seat]{height:0!important;min-height:0!important;overflow:hidden!important}'
138
- // 隐藏上边栏(会话标题栏)—— 排除对话框内的头部:嵌入页覆盖层(如"查询用量")的
139
- // 头部承载它唯一的返回按钮(button.back),一并隐藏会把用户锁在页面里回不去
140
- const HIDE_TOP_CSS = 'header[data-window-drag]:not([role="dialog"] *){display:none!important}'
142
+ // 隐藏上边栏(会话标题栏)—— 正向判据:官方 "conversation.header" 槽位宿主带
143
+ // data-conversation-header-leading,全应用仅此一处;其余 header[data-window-drag]
144
+ // 各带关键控件(插件页标题含"添加插件"按钮、嵌入页头含唯一返回按钮),不得误伤
145
+ // (v0.2.6 修:旧写法"匹配全部再排除对话框"曾把插件页标题整条隐藏,安装入口消失)。
146
+ // 对话框排除条款保留:弹出层内永不隐藏(防锁死返回,v0.10.4)。
147
+ const HIDE_TOP_CSS = 'header[data-window-drag]:has(> [data-conversation-header-leading]):not([role="dialog"] *){display:none!important}'
141
148
  // 字号缩放层(!important 样式表仅在需要缩放时启用;官方内联值原样保留在其下)
142
149
  const FONT_CSS = `body{--dsh-content-font-size:calc(var(--dsrb-font-base,14px)*var(--dsrb-font-scale,1))!important}`
143
150
  // 全屏补偿层:不归零官方定位变量 —— --dsh-windows-titlebar-height(=40px)是
@@ -319,6 +326,17 @@ window.__ModuleLoader__.load({
319
326
  let next = value
320
327
  if (famNames.length && next.indexOf('var(--dsw-font-family)') !== -1) next = next.split('var(--dsw-font-family)').join(fam)
321
328
  if (code && next.indexOf('var(--ds-font-family-code)') !== -1) next = next.split('var(--ds-font-family-code)').join(cod)
329
+ // 代码块类 token 并入字号增量(v0.2.7;官方原版固定 11px 不随字号,基础层已有同式
330
+ // 兜底覆盖,这里只在因字族/行距本就需重发时带上,维持"非必要不重发")。先换形
331
+ //(11px→calc(11px + delta))再走下方行距倍率,与正文 calc 形同一条放大路径。
332
+ if (
333
+ (name === '--dsw-font-markdown-code-block' || name === '--dsw-font-markdown-code-block-small') &&
334
+ (next !== value || lineH !== null)
335
+ ) {
336
+ next = next
337
+ .replace(/^(\d+(?:\.\d+)?)px/, 'calc($1px + var(--dsh-content-font-delta))')
338
+ .replace(/(\/\s*)(\d+(?:\.\d+)?)px/, (m, lead, n) => lead + 'calc(' + n + 'px + var(--dsh-content-font-delta))')
339
+ }
322
340
  // 行距:官方行高 token 有两种真实形态(简写里的 "/ 行高" 段,均出自 asar 实测)——
323
341
  // 正文/标题:"/ calc(Npx + var(--dsh-content-font-delta))"(增量由官方自管、随字号缩放)
324
342
  // 代码类: "/ Npx"(纯 px,不随字号)
@@ -1430,7 +1448,7 @@ window.__ModuleLoader__.load({
1430
1448
  window.addEventListener('resize', onResize)
1431
1449
 
1432
1450
  // 会话 DOM 迟现/被替换 → 轻量定时器持续核对(同节点零开销),顺带漂移兜底与
1433
- // 占位符刷新;列宽突变由 columnObserver 即时处理,定时器只兜底重挂。
1451
+ // 面板宽度行刷新;列宽突变由 columnObserver 即时处理,定时器只兜底重挂。
1434
1452
  attachWidthObserver()
1435
1453
  attachColumnObserver()
1436
1454
  const retryTimer = setInterval(() => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-happy-reader",
3
- "version": "0.2.5",
3
+ "version": "0.2.7",
4
4
  "description": "Happy Reader(阅读增强):隐藏输入框 / 上边栏、全屏切换、字号 10–40px、行距/字距微调、面板可拖动可拉高、复制为 Markdown(公式→LaTeX)、内容宽度扩展、中英文分别选正文字体 + 代码字体(仅列本机已装)—— 与官方设置协同,不冲突",
5
5
  "type": "module",
6
6
  "license": "MIT",