Crowi v1.7.8 (と v1.7 の新機能ダイジェスト)

Sotaro KARASAWA
Crowi Book
Published in
8 min readJun 29, 2019

--

v1.7.8 リリースをリリースしました。v1.7.8 は v1.7 系としては最後のリリースとなり、今後は v1.8 にむけて開発を進めていく予定です。にもかかわらず、Crowi Book としては v1.6.2 以来リリースノートを書いていなかったので、1.7 系のリリースをダイジェストでお伝えします。

なお v1.7.x に入ったリリースでその後のリリースで変更されたものは基本 v1.7.8 ベースで紹介します。

⚠️XSS の脆弱性を修正しました (v1.7.6)

URL をもとにページタイトルを決定するため、scriptタグをURLに書き込むことで任意のJavaScriptコードの実行が可能であるセキュリティ上の問題を修正しました。

v1.7.6 以前を利用している方は速やかに最新版への更新をお願いします。

GitHub 連携でのログイン設定がきるようになりました (v1.7.0)

特に G Suite を利用していないような団体 (研究室やOSS 等) では有効かもしれません。

GitHub/Google の連携強制化 + パスワードログイン禁止の設定ができるようになりました (v1.7.8)

特に企業で利用されるケースで G Suite アカウントとの連携を必須にしたいケースに対応するため、Google / GitHub アカウントの連携のされていない人を強制化し、パスワードログインを禁止にする (Google/GitHub 連携でのみログインできる) という設定ができるようになりました。

ある程度 SSO 的に利用可能ですが、そういった設定をした場合でも新規登録時にパスワードの設定が必要等、まだイケてない部分が残っているので、今後このあたりは更に改善していく予定です。

階層をまるごと移動できるようになりました (v1.7.0)

たとえば /hoge/fuga を /hoge/piyo に移動しようとした際、下層ページもすべてまとめで move できるようになりました。

この機能を利用した場合、最新の更新日時を変更しないようになっています (v1.7.8 で変更)。これは、大量に移動した際に大量に updated が書き換えられてしまいトップページが混乱する、また、基本的に更新日時順でページが並べられているため、更新日時順序を考慮せずに update をかけると、コンテキストが失われてしまう事が多いからです。

どのページが移動対象になるかの確認が出ます。

非ログインユーザーに向けてページをシェアできるようになりました (v1.7.0)

アカウントのない人にむけて、シェア用の URL を生成し、ページをシェアできるようになりました。業務上連携をしている社外の人等にページ内容を共有する際に有用かと思います。この機能を有効にするには、管理設定が必要です。

例えば、Crowi の開発チームで利用している Wiki のあるページはこのようにシェアできます

検索結果が Portal, Public, User の3つに分割されるようになりました (v1.7.0)

特に、User ページ以下の memo や日報等が大量に引っかかった際、それ以外のページ (プロジェクトやチームで利用しているページ) が検索結果に埋もれてしまう問題を解決するため、Portal と、/user/xxx 以下のページと、それ以外のページ (public) で結果を分割して表示するようにしました。

サジェストではない結果ページのほうでは、デフォルトが今の所 All (まぜこぜ) になっていますが、用意に絞り込みができるようになっています。

検索のスコアリングを改善しました (v1.7.5)

検索スコアに、Bookmark 数を反映するようにしました。多くのユーザーが定期的にアクセスするような重要なページが相対的に上に来やすくなっています。

なお、Like は反映していません。これは、Like は一過性の情報に当たることが多いためです。例えば、”XXXの分析結果” や調査メモ、ポエムっぽいページなどが、Like を集めやすいが、検索として重要性が高いわけではない事が多い、といった現実的なユースケースをもとにしたロジックとなっています。

最近見たページ (v1.7.8)

検索窓にフォーカスしたときにデフォルトで最近見たページの5件を表示するようにしました。個人的に Crowi を利用していて特に最近関わっているプロジェクト、とかだとやはり最近見たページに再度アクセスする、ということがよくあるから … です。

こちらは Redis が有効になっているときにのみ有効になる機能です。

Slack の unfurl に対応しました (v1.7.8)

Slack に Crowi の URL を貼った際、内容が展開されます。

この設定を有効にするには、Slack App の設定が必要です。お使いの Slack App の Event Subscription で link_shared を有効にしてください。詳しくは管理画面の “通知設定” タブに説明の記載があります。

その他の改善

  • 個別ページやリストページ等で不要な処理を削ることで、高速化しました。
  • ユーザー管理画面で、ユーザー検索機能を追加しました。
  • プロフィール画像をアップロード前に resize するように変更しました。
  • svg+xml 形式の画像アップロードに対応しました。
  • 検索インデックス再構築時に、検索のDowntimeが発生しないようになりました。(これまでは、Index を削除→作成→全ページの追加、という処理を行っていましたが、Index を新規に作成し全ページを追加したあとで Index を切り替える、という処理になりました)
  • 複数台の node.js サーバーを利用して運用している場合に設定が各サーバーに適用されない問題を修正しました。
  • Authorization: Bearer 形式の認証ヘッダに対応しました。

コミュニティについてのご連絡

これまで、Gitter に部屋を設けてきたのですが、今後これを廃止し、

  • コアコミッターのコミュニケーションとしての Slack
  • サポートやユーザーコミュニティとしての Spectrum

を活用していこうと思っています。

Spectrum のほうはぜひ皆さんもジョインしてください。

Slack については、今後方針を変更する可能性もあります (月1のミーティングを Discord でしているので、いっそ Discord でも良いという話はあるのですが、通知系の Integration の Dogfooding や、使い慣れという点で今の所 Slack を利用しています)

謝辞

今回も、コアコミッター以外からの多くのみなさまの Pull Request や Issue により多くの改善や機能追加を行うことができました。ありがとうございました。

v1.8 に向けて

v1.7.8 がリリースできたことにより、開発のメインストリームを v1.8.x に変更していきます。(master も近いうち)

v1.8 では通知機能やバックリンク等、また新機能モリモリなので楽しみにしていてください。

それではまた。

--

--

Sotaro KARASAWA
Crowi Book

Mercari, Inc. / Crocos, nequal, Ethna, PHP, Git, Python, C++, パーフェクトPHP, Red Bull, Cycling, Motor Sports, Perfume