DocSearchテーマで、日本語入力、キーボード操作、小さい画面の表示を改善しました。あわせてdocker-docsearchのテーマ同期処理も修正し、稼働中のコンテナーでテーマを更新した際に検索画面が404になる問題を解消しています。
変換確定のEnterで検索しない
コマンドパレットや検索候補の操作では、IME変換中のEnter、矢印、Escapeを検索画面のコマンドとして処理しないようにしました。日本語の変換確定で意図せず検索が実行されるのを防ぐ変更です。実機のIMEによる測定はPRでは行っておらず、合成したcompositionイベントによるテストが中心です。
閉じた検索オプションや旧検索フォームがTab移動の対象から外れ、オプションを開くとフォーカスが中へ移ります。Escapeや外側のクリックで閉じ、開いた操作元へ戻せます。ホーム画面の検索候補も上下矢印、Enter、Escapeで操作できるようになりました。
小さい画面と共有URL
幅768px未満ではヘッダーのナビゲーションをメニューボタンから開けるようにし、Helpやテーマ切り替えなどへアクセスできます。長い検索語の折り返し、ダークモードのロゴ、ラベル名の表示も改善しています。「類似した結果」の状態はsdhとしてURLへ反映され、再読み込みや共有で同じ表示を再現できるようになります。
変更はdocsearchテーマに限定され、他のテーマへ一律に適用されるものではありません。テーマのバージョンは15.9.9、theme.ymlのminFessVersionは15.9です。確認時点のFess最新正式リリースは15.8.0なので、15.9.9というテーマ番号をFess 15.9の正式リリースと混同しないでください。
Dockerでテーマを更新する
docker-docsearchのsetup.shは、ホスト側のテーマディレクトリーを削除して作り直す方式から、中身だけを置き換える方式へ変わりました。bind mountを維持できるため、稼働中のfess01からテーマが消えなくなります。取得や検証に失敗した場合は、既存テーマを置き換えません。
git pull
bash ./bin/setup.sh
docker compose -f compose.yaml restart fess01
HTMLやassetsは次のリクエストから反映できますが、theme.ymlのバージョンなどは起動時に読むため、テーマ更新後はfess01を再起動します。docker compose up -dだけでは、テーマのみの更新を検知してコンテナーを作り直すとは限りません。ブラウザーではアセットが最大1日キャッシュされるので、確認時は強制再読み込みも行います。
初期値と更新時の注意点
テーマ取得元FESS_THEMES_REPOの初期値はhttps://github.com/codelibs/fess-themes.git、FESS_THEMES_REFはmainです。FESS_THEMES_DIRは未設定が初期値で、ローカルのチェックアウトを指定した場合はそのthemes/docsearchを使い、REFは無視されます。mainを使うと開発中のテーマを取得するため、対応するFessとの組み合わせを確認してください。
setup.shはテーマ内のローカル変更を置き換えます。独自編集は事前に保管してください。一方、既存のdata/fess/opt/fess/system.propertiesは上書きしません。Composeの標準構成はまだFess 15.8.0とOpenSearch 3.8.0で、今回の15.9向けテーマを標準構成のまま動作保証する変更ではありません。
15.9移行時はGroovy継続かJavaScript移行を選びます。Groovyを継続する場合は対応するプラグインを起動前に配置し、JavaScriptへ移す場合は起動後すぐ管理画面で既存ジョブを変更します。起動ログの未登録エンジン警告はジョブ以外の設定も確認する手がかりになります。今回の記事は、マージ済みの開発変更と更新時の注意点をまとめたものです。