# リリースノート
# 1.1.33 → 2.0.0
201件のコミットをまとめたアップデートです。 モデル層のリファクタリング、詰み判定などの機能追加、軽微な修正、および全体の安定性向上が主な内容です。
通常の使い方であればそのままアップデートして問題ないはずですが、もし動かなくなった場合は、いったん 1.x 系に戻すかご一報ください。
また、本体とは別で、あわせてスタイルエディタもいろいろいじっています。 これまでサイドバー下部にコンポーネント引数やCSS変数をすべて表示していましたが、 知りたいのはデフォルトとの差分なので、差分のみを表示する仕様に変更したりしています。
# 新機能
- 詰み判定を追加しました。(デフォルトでは機能OFF)
- 詰み判定を追加できたことで打歩詰め等の反則判定もできるようになりました。(デフォルトでは機能OFF)
- オプションにより盤上の特定の領域だけを表示できるようにしました。(例えば左上の5x5など)
- 星の位置をカスタマイズできるようにしました (いらん機能)
- カーソル形状を整理しました。(駒を持ってない・駒を持つことができる・駒を持っている の3つの状態に合わせて形状が適切に変化する)
- 盤テクスチャの種類に SVG エフェクトをいくつか追加しました。
- ボードバリアントを追加・拡充しました。
- 移動元印機能を実装しました。指し手の移動元を盤上に表示できます。(が、一般的な機能ではないのでドキュメントにも詳しく書いてない)
- 思考印にバリアント機能を追加しました。(が、一般的な機能ではないのでドキュメントにも詳しく書いてない)
- 反則ブロック時にも局面・手数・指し手の情報をイベントに含めるようにしました。(主に共有将棋盤用)
sp_request_*なオプションをいろいろ有効にしたとき、ev_play_mode_moveに追加情報を含めるようにしました。- 持駒が空のときは
MembershipStandコンポーネントを表示しないようにしました。(CSSを当てやすくするため)
# 内部的なもの
- 棋譜を正しくパースできないときに alert を表示するようにしました。
- 縦配置のときは、プレイヤー名の背景バルーンの角を丸めないようにしました。
.ShogiPlayerでcontainer-type: inline-sizeを指定するようにしました。GeneralMarkの基本色を CSS 変数sp_general_mark_base_colorで制御できるようにしました。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 できるようにしました。 PieceCountにボーダー機能を追加しました。Membershipにsp_membership_vertical_gap/sp_membership_horizontal_gapを追加しました。
# 修正
- プレイヤー名が英字のとき縦書きにすると文字の頭が右を向いてしまう問題を修正しました。
- 座標表示がクリックイベントを奪ってしまう問題を修正しました。
- 予期しないイベントが発生していたため、持駒操作を主ボタンに限定しました。
sp_lift_cancel_actionのデフォルト値をstandardに変更しました。- SVG の
hsl()表記からパーセント記号を削除しました。 - 操作モード用の API を再生モード用と誤記していたドキュメントを修正しました。
DeviseHelper.mouse_click_event_pが呼べない問題を修正しました。DomHelper.focus_on_input_tag_pで radio ボタンにフォーカスしているときもtrueになるように修正しました。OpDisabledBlock.vueでis_layer_onが指定する階層がずれていた問題を修正しました。
# 内部変更・リファクタリング
- 盤の上と右に表示する符号をただの飾りではなく本当の位置を表示するようにしました。
- 神クラス化していた
Xcontainerを関心事ごとにファイル分割しました(持駒・手数・シリアライズ等)。 xcontainerのpiece_boxを Hash 型から Value Object のPieceBox型に置き換えました。beetleshineを根元でGXに置き換えました。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)に統一)。 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に変更しました。OriginMark/ThinkMarkのバリアントを color / gray 分離から単一に統合しました(square_color/square_gray→square、circle_color/circle_gray→circle)。GeneralMark系コンポーネントの属性キーをgeneral_mark_*からgm_*に短縮しました。sp_origin_mark_list/sp_think_mark_listを*_collectionにリネームしました(GeneralMarkList→GeneralMarkCollection)。OriginMark/ThinkMarkの prop 名を専用名に変更しました(general_mark_pos_key→origin_mark_pos_key/think_mark_pos_key)。
# スタイルエディタの変更
スタイルエディタを大きく刷新しました。
- 色変換ライブラリを chroma-js から colorjs.io (opens new window) に移行しました。あわせて
GeneralMarkの色システムを hsl から oklch に移行しています。 - Smart 系コンポーネントを新規導入し、旧コンポーネントを置き換えました(
VariableSwitch/VariableRadio/VariableSlider等)。 VariableInfoにrelative_modelと min / max / step を追加し、コントロールパネルを整理しました。- コンポーネント引数や CSS 変数について、デフォルトから変化した差分だけを表示するオプションを追加しました。
- 移動元印の確認をできるようにしました(System Spec も追加)。
- 思考印の管理機能を追加しました。思考印カテゴリーに「全消し」「所有者消去」ボタンを追加しました。
- 印設定を共通化し(
se_current_user_name/se_color_index)、印・リサイズのカテゴリー UI を追加しました。 - 3D 関連を改善しました(値をなるべく係数化、
tf0→wall/tf1→board/tf2→pieceのリネーム、カメラプリセットに「初期値」を追加)。 - カスタム CSS のプリセットを大幅に追加・更新しました(「ノイズ盤」「ノイズビニ盤」「木目」「紙面風」など)。
- プリセットを SVG ファイル読み込みに移行しました。
- 盤のどこを表示するかを指定できるようにしました。
se_tf_*_modeをse_tf_*_switchにリネームしました。- モード切替ショートカット(v / p / e)にトースト通知を追加しました。
- 設定の永続化バージョンを 8 に更新しました。以前のバージョンで保存した設定は初期化される場合があります。
# スタイルエディタの修正
- 自由入力で色を変更しても emit イベントが起きない問題を修正しました(PureColorPicker)。
- プリセット「3D」を押しても 3D にならない問題を修正しました。
- 「ランダム」を押してもコンポーネントの呼び出し側が変化しない問題を修正しました。
SmartRadioからデバッグ用コードを削除しました。variable_infoの演算子まわりのスペースを修正しました。ControlPanelの名前フィールドのラベルを「所有者名」に修正しました。