# リリースノート
# 1.1.33 → 2.0.0
201件のコミットをまとめたアップデートで以下が主な内容です。
- モデル層のリファクタリング
- 詰み判定機能の追加
- 指し手を読み上げるためのテキスト生成処理の完全削除
- 不具合修正
- 安定性向上
- 高速化
通常の使い方であればそのままアップデートして問題ないはずですが、もし動かなくなった場合は、いったん 1.x 系に戻すかご一報ください。
また、本体とは別で、あわせてスタイルエディタも更新しています。 これまでサイドバー下部にコンポーネント引数やCSS変数をすべて表示していましたが、 知りたいのはデフォルトとの差分なので、差分のみを表示する仕様に変更したりしています。
# 新機能
- 詰み判定を追加しました。(デフォルトでは機能OFF)
- 詰み判定を追加できたことで打歩詰め等の反則判定もできるようになりました。(デフォルトでは機能OFF)
- オプションにより盤上の特定の領域だけを表示できるようにしました。(例えば左上の5x5など)
- 星の位置をカスタマイズできるようにしました (いらん機能)
- カーソル形状を整理しました。(駒を持ってない・駒を持つことができる・駒を持っている の3つの状態に合わせて形状が適切に変化する)
- 盤の種類(正確にはSVGによる模様エフェクト)を追加しました。
sp_request_*系のオプションをいろいろ有効にしたとき、ev_play_mode_moveに追加情報を含めるようにしました。
# 内部的なもの
- CSSをなるべくモダンブラウザに対応したシンプルな書き方に置き換えました。
- 反則時のイベントを強化しました。(主に共有将棋盤用)
- 思考印機能を追加しました。(が、一般的な機能ではないのでドキュメントにも詳しく書いてない)
- 移動元印機能を追加しました。指し手の移動元を盤上に表示できます。(が、一般的な機能ではないのでドキュメントにも詳しく書いてない)
- 棋譜を正しくパースできないときに alert を表示するようにしました。
- 縦配置のときは、プレイヤー名の背景バルーンの角を丸めないようにしました。
- 駒数表示の部分のボーダーをカスタマイズできるようにしました。
# 修正
- プレイヤー名が英字のとき縦書きにすると文字の頭が右を向いてしまう問題を修正しました。
- 座標表示がクリックイベントを奪ってしまう問題を修正しました。
- 予期しないイベントが発生していたため、持駒操作を主ボタンに限定しました。
- 操作モード用の API を再生モード用と誤記していたドキュメントを修正しました。
# 内部変更・リファクタリング
- System Spec の導入でブラウザ上のでテストをできるようにしました。
- 移動元印のシステムテストを追加しました。
- 持駒が空のときは
MembershipStandコンポーネントを表示しないようにしました。(CSSを当てやすくするため) - SVG の
hsl()表記からパーセント記号を削除しました。 sp_lift_cancel_actionのデフォルト値をstandardに変更しました。.ShogiPlayerでcontainer-type: inline-sizeを指定するようにしました。sp_board_variant_to_standprop を追加しました。- 明示的に ☗☖▲△ を返す
Location#pentagon_char/Location#polygon_charを追加しました。 - 盤面だけを見て手合割を推測する
guess_preset_infoを追加しました。 illegal_infoに千日手のレコードを追加しました。ev_illegal_click_but_self_is_not_turnイベントの引数にeventを渡すようにしました(右クリック判定用)。- 持駒を非表示にできる機能を追加しました(実験的)。
- リサイズ監視の機能を prop
sp_resize_observer_featureで ON / OFF できるようにしました。 Membershipにsp_membership_vertical_gap/sp_membership_horizontal_gapを追加しました。- 盤の上と右に表示する符号をただの飾りではなく本当の位置を表示するようにしました。
- 神クラス化していた
Xcontainerを関心事ごとにファイル分割しました(持駒・手数・シリアライズ等)。 xcontainerのpiece_boxを Hash 型から Value Object のPieceBox型に置き換えました。mod_vectorを Vue.js に依存しないVec2dに置き換え、マジックナンバーを削減しました。Xcontainer/Soldier/Placeなどのインスタンスをnewで直接生成せず、適切なファクトリメソッド経由で生成するようにしました。- 千日手判定用のハッシュを
to_sfen_without_turnからposition_hash(旧 snapshot_hash)に統一しました。 - 「読み上げ」に関するコードをすべて削除しました。
deep-object-diffへの依存を整理しました。- CSS を全面的に見直しました(
100vhなどを100dvh表記に統一、AspectRatioFixedBlockを padding-top ハックからaspect-ratioプロパティに置換、CSS カラー形式をhsl(h s% l% / a)に統一)。 DeviseHelper.mouse_click_event_pが呼べない問題を修正しました。DomHelper.focus_on_input_tag_pで radio ボタンにフォーカスしているときもtrueになるように修正しました。OpDisabledBlock.vueでis_layer_onが指定する階層がずれていた問題を修正しました。TheSpをTheSPに統一しました。- 各種モデル(
Board/Piece/Place/Soldier/Xcontainer等)のテストを大幅に追加・強化しました。 sp_request_snapshot_hashをsp_request_position_hashにリネームしました。あわせてモデル内部のsnapshot_hashもposition_hashに統一しています。sp_request_snapshot_hash(現sp_request_position_hash)の初期値をfalseに変更しました。
# スタイルエディタの変更
- コンポーネント引数や CSS 変数について、デフォルトから変化した差分だけを表示するオプションを追加しました。
- カスタム CSS のプリセットを大幅に追加・更新しました(「ノイズ盤」「ノイズビニ盤」「木目」「紙面風」など)。
- 思考印や移動元印の動作を確認できるようにしました。
- 盤のマスの表示領域を指定を確認できるようにしました。
- ショートカットの種類を増やしました。
# 内部的なもの
- UI コンポーネントのラッパーを用意して DRY 化しました。
- 色変換ライブラリを chroma-js から colorjs.io (opens new window) に移行しました。
VariableInfoにrelative_modelと min / max / step を追加し、コントロールパネルを整理しました。- プリセットを SVG ファイル読み込みに移行しました。
se_tf_*_modeをse_tf_*_switchにリネームしました。- 設定の永続化バージョンを変更しました。