背景
セキュリティ/堅牢性ハードニング(PR #18)で、Canvas backing-store の暴走を防ぐため暫定の上限を入れた:
- 辺長上限
MAX_CANVAS_SIDE_PX = 16_384
- 面積上限
MAX_CANVAS_AREA_PX(両辺近傍での ~1GiB backing store 回避)
- 上限超過時は SVG(仮想化)へ fallback
これらはクラッシュ防止の暫定策であり、上限を超えるデータは Canvas で描けない(SVG fallback になる)。
やること(根治)
- viewport-sized canvas または tiling へ移行し、backing-store をビューポート(または一定タイル)に収める。これにより行数・日付範囲に依存せず、大規模データでも Canvas を破綻なく描画できる。
- 仮想化を端末 tier に依存させず、設計上の DOM/backing-store cap を常時保証する(監査指摘)。
- 幅・高さ同時最大のブラウザ統合テストで境界を固定する。
完了条件
- 暫定 caps(side/area)に頼らず、大規模入力でも Canvas がブラウザ最大辺を超えない。
- SVG/Canvas 双方で境界テストが緑。
関連: PR #18(暫定 caps + SVG fallback)。監査 Medium「Canvas 面積/寸法」系の根治。
背景
セキュリティ/堅牢性ハードニング(PR #18)で、Canvas backing-store の暴走を防ぐため暫定の上限を入れた:
MAX_CANVAS_SIDE_PX = 16_384MAX_CANVAS_AREA_PX(両辺近傍での ~1GiB backing store 回避)これらはクラッシュ防止の暫定策であり、上限を超えるデータは Canvas で描けない(SVG fallback になる)。
やること(根治)
完了条件
関連: PR #18(暫定 caps + SVG fallback)。監査 Medium「Canvas 面積/寸法」系の根治。