@aiquants/spreadsheet 0.10.0 → 0.11.0

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/CHANGELOG.md CHANGED
@@ -2,6 +2,29 @@
2
2
 
3
3
  All notable changes to `@aiquants/spreadsheet` are documented here.
4
4
 
5
+ ## 0.11.0 (2026-09-22)
6
+
7
+ v0.11 はエンジン素通し 3 プロップ (`overscanRows` / `overscanCols` / `background`) — 高速スクロールで
8
+ 描画窓の前進が 1 フレーム遅れ、既定 overscan 3 (行高 48px で片端 144px) を超えたずれが白帯になる
9
+ 消費側報告への調整口。
10
+
11
+ - **新機能 — `overscanRows` / `overscanCols` プロップ新設 (先読み量の調整口)**: VirtualGrid
12
+ `overscanRows` / `overscanCols` への素通し (3 ファイル鎖 Spreadsheet → GridBody → エンジン)。未指定 =
13
+ エンジン既定 (3) とバイト恒等。エンジンは不正 overscan を無言クランプするため fail-fast は本層所有 —
14
+ 非整数・負値・NaN は render 時 RangeError (`validateOverscan`)。0 は正当値 (先読みなし)。行高と列数を
15
+ 知る利用側が必要な先読み量を決める形 (既定は上げない — 費用は 2 軸の積で増幅し、エンジンのセル上限
16
+ 32,768 で有界)。
17
+ - **新機能 — `background` プロップ新設 (スクロール帯の背景レイヤー)**: VirtualGrid `background` への
18
+ 素通し — スクロール帯行の背後・エンジンコンテンツ要素の直下に描画。**viewport 固定** (エンジンが
19
+ translate するのは行ラッパーのみ) のため、スクロール量には追従しない — 周期的な行罫線を置くと実際の
20
+ 行に対して滑る。overscan が尽きた帯で「まだ到着中」と読める静的テクスチャ向き。
21
+ - **検証 — 走行台帳 (census の錨は本未リリース節)**: 単体 / 統合 **79 ファイル 3,815 テスト** 全緑 —
22
+ 0.10.0 出荷時の 78 ファイル 3,806 に v0.11 進行分 +9 (新規
23
+ [overscanPassthrough.spec.tsx](<./src/overscanPassthrough.spec.tsx>) の 8 — 先頭位置の片側クランプ
24
+ 差分 +7 の行・列 / 省略 = 明示 3 の等値対照 / ライブ差替え追随 / RangeError 4 形 / 0 の正当性 /
25
+ background の着地位置と省略時不在 — と、0.10.0 節の出荷時凍結ピンで `hxCensus` +1)。変異 3 本
26
+ red 実測 (ガード除去 / GridBody の overscanRows・background 転送脱落) — バイト復元済み。
27
+
5
28
  ## 0.10.0 (2026-09-22)
6
29
 
7
30
  v0.10 は読み取り専用セル (isCellReadOnly) — 統治文書は
package/README.md CHANGED
@@ -720,6 +720,8 @@ Keymap notes:
720
720
  | `onReadOnlyRejected` | `(rejection: ReadOnlyRejection) => void` | v0.10 — the single read-only refusal channel: fired once per refused gesture, the adapter was never called (neither an `EditRejection` nor an operation limit). The edit variant carries the cell and the required `editSession: "none" \| "kept" \| "discarded"` fate; the operation variant carries the explicit 7-literal `op` (`"cut"` has two producers — the Ctrl+X arming refusal and the move-time source re-check) and the producer’s overlap-naive `cellCount`. Never fired when `isCellReadOnly` is undeclared. |
721
721
  | `formatReadOnlyAnnouncement` | `(rejection: ReadOnlyRejection) => string` | v0.10 — opt-in live-region text for a read-only refusal (inherits the 200 ms announce debounce + rAF collapse, so autorepeat / IME refusal storms cannot spam the live region). Omit for silence (no built-in strings). |
722
722
  | `tapScrollCircleOptions` | `ScrollBarTapCircleOptions` | v0.10 — position / enable-disable tuning of the touch tap-scroll circle; an engine-validated pass-through onto VirtualGrid’s `scrollBarOptions.tapScrollCircleOptions` (the engine’s `resolveTapScrollCircleOptions` is the validation SSOT — no second layer here). LIVE prop. |
723
+ | `overscanRows` / `overscanCols` | `number` | v0.11 — per-axis overscan pass-through onto VirtualGrid’s `overscanRows` / `overscanCols` (undefined ⇒ the engine default 3). This slack is what absorbs the engine’s one-frame rendering-window lag during fast scrolling — raise it when fast flicks show blank bands (slack per edge = overscan × row height / column width). The engine clamps invalid values silently, so THIS surface fail-fasts: a non-integer or negative value throws a RangeError at render. Cost multiplies across the two axes (bounded by the engine cell cap). LIVE props. |
724
+ | `background` | `ReactNode` | v0.11 — background layer rendered behind the scroll-band rows inside the engine content element (the VirtualGrid `background` pass-through). VIEWPORT-PINNED: the engine translates only its row wrapper, so this layer does not follow the scroll offset — periodic row ruling placed here slides against the real rows. Suited to a static “content still arriving” texture for the overscan-exhausted band, not to row-aligned gridlines. LIVE prop. |
723
725
  | `testId` / `className` | `string` | Test hook / root class extension. |
724
726
 
725
727
  ## Imperative handle