dsh-xueqiu 1.22.3 → 1.22.5

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.en.md CHANGED
@@ -135,6 +135,8 @@ The data layer is defended in depth — safe to leave open for hours:
135
135
 
136
136
  ## Changelog
137
137
 
138
+ - **1.22.5** (2026-08-26) — **Fix: hover OHLC legend wrapped to two lines over the candles** (leftover from 1.22.3). After `follow_cross`, the default English time/open/high/low/close/volume titles were too long for the narrow panel and the legend folded onto two lines covering candles on hover. Now a compact single-line Chinese legend (`开 高 低 收 量`, size 10) with the ticker title hidden — measured on hover: one 10px line at 45% width, no wrapping.
139
+ - **1.22.4** (2026-08-26) — **Fix: switching to the minute tab crashed the whole panel** (1.22.3 regression). The double-click-to-latest cleanup used `boxRef.current.removeEventListener`, but React clears refs before running effect cleanup on unmount, so `boxRef.current` was null → TypeError → the `conversation.input.dock` slot crashed entirely, leaving only the mini badge with no way back in. Now the node is captured in a closure inside the effect. Regression-tested: K-line↔minute 4 toggle rounds + collapse/badge-reopen/re-enter detail, 0 errors.
138
140
  - **1.22.3** (2026-08-26) — **Fix: K-line OHLC legend permanently drawn over the candles**. KLineChart v10 defaults `candle.tooltip.showRule` to `'always'`, painting time/OHLC/volume in the candle pane's top-left corner at all times (pixel-scan measured 1394 text pixels covering candles from y=23). Changed to `'follow_cross'` (shown on crosshair hover, like Xueqiu) — the indicator tooltip had been disabled but the candle's own legend was missed. Also: the chart footer promised "double-click to return to latest" but no dblclick handler existed (verified: after left-drag loaded 999 bars, double-click did nothing) — now wired to `chart.scrollToRealTime()` (verified: visible range 132→430-500). Minor: K-line date label now includes the year (a 500-bar daily range showed "08-26 ~ 08-24", reading like time travel across two years); the detail-page hero price/change now follows the quote's actual decimal digits (HK 00700 previously 440.40 → 440.4).
139
141
  - **1.22.2** (2026-08-24) — **Fix: MA / avg-price lines landed in sub-panes instead of overlaying the main chart**. KLineChart v10's `createIndicator('MA')` opens a new pane by default — MAs were not on the candle pane (squeezed to 72px) and the minute chart's avg/prev-close lived in their own sub-pane. The fix passes `{ name, paneId: 'candle_pane' }` to explicitly overlay the main pane (pane id confirmed from engine source). Result: candlestick pane at 173px with MA5/10/30/60 overlaid (volume remains the only sub-pane); minute chart is a single pane with price + avg + prev-close overlaid, matching Xueqiu's layout. Also a Xueqiu-inspired detail-page restyle: hero quote header (large red/green price + change + pct), lighter 16-stat grid (tinted cards, tabular numerals), accent bar on card titles, theme-tinted active states for mode/period buttons, chart height 264→300px, harmonized 4-color MA palette, and high/low duplicate price marks disabled.
140
142
  - **1.22.1** (2026-08-24) — chore: drop peerDependencies to silence install warnings; static smoke script falls back to local `npx dsh` (dsh not on PATH under prepublishOnly).
package/README.md CHANGED
@@ -190,6 +190,10 @@ dsh-xueqiu/
190
190
 
191
191
  ## 📋 更新日志
192
192
 
193
+ - **1.22.5**(2026-08-26)
194
+ - 修复:**悬停 OHLC 图例折成两行压图**(1.22.3 遗留)。`follow_cross` 后默认英文 time/open/high/low/close/volume 标题过长,悬停时图例在窄面板折两行盖住蜡烛。改为紧凑中文单行(`开 高 低 收 量`,字号 10)+ 隐藏 ticker 标题——实测悬停图例单行 10px 高、占宽 45%,不再折行。
195
+ - **1.22.4**(2026-08-26)
196
+ - 修复:**切分时整个面板崩溃消失**(1.22.3 回归)。双击回最新的清理函数里用了 `boxRef.current.removeEventListener`,但 React 卸载组件时先清 ref 再跑 effect 清理,此时 `boxRef.current` 已是 null → 抛 TypeError → `conversation.input.dock` 槽位整体崩溃,只剩自选股小徽章且无法重开。改为 effect 内闭包捕获节点。回归:K线↔分时来回 4 轮 + 收起/徽章重开/再进详情,0 报错。
193
197
  - **1.22.3**(2026-08-26)
194
198
  - 修复:**K线 OHLC 图例常驻压蜡烛**。KLineChart v10 默认 `candle.tooltip.showRule: 'always'` 把 time/open/high/low/close/volume 永久画在蜡烛区左上角(像素级实测 1394 个文字像素自 y=23 起覆盖蜡烛)。改为 `follow_cross`(十字光标悬停才显示,与雪球一致),此前只关了指标 tooltip 漏了蜡烛自身的。
195
199
  - 修复:**"双击回最新"标签承诺无实现**。图表下方文案写了"双击回最新"但代码没有 dblclick 处理(实测左拖加载 999 根后双击无反应)。现监听容器 dblclick → `chart.scrollToRealTime()`(实测可视区 132→430-500 回到最新)。
package/dynamic/client.js CHANGED
@@ -355,8 +355,20 @@ return {
355
355
  upBorderColor: pal.up, downBorderColor: pal.down, noChangeBorderColor: pal.text,
356
356
  upWickColor: pal.up, downWickColor: pal.down, noChangeWickColor: pal.text
357
357
  },
358
- // OHLC 图例:十字光标悬停才显示(v10 默认 always 常驻左上角,压蜡烛且与坐标轴数值重复)
359
- tooltip: { showRule: 'follow_cross' },
358
+ // OHLC 图例:十字光标悬停才显示(v10 默认 always 常驻左上角,压蜡烛且与坐标轴数值重复)。
359
+ // 默认英文 time/open/... 标题太长会折成两行压图——换紧凑中文单行(开 高 低 收 量)+ 隐藏标题
360
+ tooltip: {
361
+ showRule: 'follow_cross',
362
+ title: { show: false },
363
+ legend: {
364
+ size: 10, color: pal.text,
365
+ template: [
366
+ { title: '开', value: '{open}' }, { title: '高', value: '{high}' },
367
+ { title: '低', value: '{low}' }, { title: '收', value: '{close}' },
368
+ { title: '量', value: '{volume}' }
369
+ ]
370
+ }
371
+ },
360
372
  priceMark: {
361
373
  // 关闭最高/最低点重复标注(窄图时易与坐标轴重叠成杂乱数字),保留最新价标
362
374
  high: { show: false }, low: { show: false },
@@ -479,10 +491,12 @@ return {
479
491
  chart.createIndicator('VOL')
480
492
  chart.setOffsetRightDistance(16)
481
493
  // 双击回最新(标签文案承诺过;kline v10 自带 dblclick 仅做空十字,需手动 scrollToRealTime)
494
+ const box = boxRef.current
482
495
  const onDbl = function () { try { chart.scrollToRealTime() } catch (e) { /* 忽略 */ } }
483
- boxRef.current.addEventListener('dblclick', onDbl)
496
+ box.addEventListener('dblclick', onDbl)
484
497
  return function () {
485
- boxRef.current.removeEventListener('dblclick', onDbl)
498
+ // 卸载清理时 boxRef.current 已被 React 置 null(切 tab 触发,曾致槽位整体崩溃),须闭包捕获节点
499
+ try { box.removeEventListener('dblclick', onDbl) } catch (e) { /* 忽略 */ }
486
500
  h.dispose()
487
501
  }
488
502
  }, [])
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-xueqiu",
3
- "version": "1.22.3",
3
+ "version": "1.22.5",
4
4
  "description": "雪球 mini 行情面板 — DeepSeek Harness 免登录 A股/港美股实时行情、K线(蜡烛/成交量/均线)、分时图、热榜、搜索、7x24 快讯、热议用户。嵌入式面板 + 可拖拽行情徽标,内置请求节流、TTL 缓存与 Cookie 自动续期。",
5
5
  "keywords": [
6
6
  "dsh",
@@ -386,8 +386,20 @@ exports.default = {
386
386
  upBorderColor: pal.up, downBorderColor: pal.down, noChangeBorderColor: pal.text,
387
387
  upWickColor: pal.up, downWickColor: pal.down, noChangeWickColor: pal.text
388
388
  },
389
- // OHLC 图例:十字光标悬停才显示(v10 默认 always 常驻左上角,压蜡烛且与坐标轴数值重复)
390
- tooltip: { showRule: 'follow_cross' },
389
+ // OHLC 图例:十字光标悬停才显示(v10 默认 always 常驻左上角,压蜡烛且与坐标轴数值重复)。
390
+ // 默认英文 time/open/... 标题太长会折成两行压图——换紧凑中文单行(开 高 低 收 量)+ 隐藏标题
391
+ tooltip: {
392
+ showRule: 'follow_cross',
393
+ title: { show: false },
394
+ legend: {
395
+ size: 10, color: pal.text,
396
+ template: [
397
+ { title: '开', value: '{open}' }, { title: '高', value: '{high}' },
398
+ { title: '低', value: '{low}' }, { title: '收', value: '{close}' },
399
+ { title: '量', value: '{volume}' }
400
+ ]
401
+ }
402
+ },
391
403
  priceMark: {
392
404
  // 关闭最高/最低点重复标注(窄图时易与坐标轴重叠成杂乱数字),保留最新价标
393
405
  high: { show: false }, low: { show: false },
@@ -510,10 +522,12 @@ exports.default = {
510
522
  chart.createIndicator('VOL')
511
523
  chart.setOffsetRightDistance(16)
512
524
  // 双击回最新(标签文案承诺过;kline v10 自带 dblclick 仅做空十字,需手动 scrollToRealTime)
525
+ const box = boxRef.current
513
526
  const onDbl = function () { try { chart.scrollToRealTime() } catch (e) { /* 忽略 */ } }
514
- boxRef.current.addEventListener('dblclick', onDbl)
527
+ box.addEventListener('dblclick', onDbl)
515
528
  return function () {
516
- boxRef.current.removeEventListener('dblclick', onDbl)
529
+ // 卸载清理时 boxRef.current 已被 React 置 null(切 tab 触发,曾致槽位整体崩溃),须闭包捕获节点
530
+ try { box.removeEventListener('dblclick', onDbl) } catch (e) { /* 忽略 */ }
517
531
  h.dispose()
518
532
  }
519
533
  }, [])