:don: 170729 v1.5.0rc2

今回はv1.5.0rc1~rc2の範囲が対象です。

https://github.com/tootsuite/mastodon/compare/v1.5.0rc1…v1.5.0rc2

比較的大きいやつ

ドロップダウンメニューをスマホではモーダルとして表示するように

fix(dropdown_menu): Open as modal on mobile by sorin-davidoi · Pull Request #4295 · tootsuite/mastodon

トゥートの下にある「…」メニューや投稿の公開範囲設定はドロップダウンとして表示されていましたが、スマホでは小さくてタッチしづらい、下の方で表示されるとスクロールする必要がある、などの問題がありました。で、モーダルとしてポップアップするようになりました。なかなか便利ですよ。

シェアボタン

feat(status_action_bar): Web share button by sorin-davidoi · Pull Request #4365 · tootsuite/mastodon feat: Web Share for detailed status and account by sorin-davidoi · Pull Request #4402 · tootsuite/mastodon

トゥートやアカウントをブラウザやOSの機能で共有するボタンが追加されました。が、今のところ特に設定なく使えるブラウザはAndroidChromeの次期バージョンぐらいしかなく、すぐ試したいなら chrome://flags から有効にしたり、Canary版を使うことになります。

参考 Google、ウェブサイトのボタンでAndroidの共有メニューを表示できる「Web Share API」 -INTERNET Watch

アクセシビリティ周りの改善

aria属性などの追加やタグの変更だけでなく、Tab/Enterで多くの要素が操作できるようになったり、PageDown/PageUp/Home/EndでTL内を移動したりできるようになっています。

なおトゥートなどにフォーカス移動できるようになった関係で、クリック時にこれまでなかった枠が表示されたりします。ブーストボタンとか大して見た目が変わらないところもあります。CSSでいじれるところなので、指摘されればなんかなるかも?

admin向け

Docker環境でsw.jsが読み込めない(WebPushが動かない)件

fix #4356 : missing sw.js in Docker environment by skoji · Pull Request #4357 · tootsuite/mastodon

普段MastodonのJSファイルはpacks/に置かれていますが、ServiceWorkerのJSファイルはそれが置かれたディレクトリ以下のページにしか作用することができないため、このsw.jsだけpublic直下に置いていました。が、公式のDocker構成ではこれをボリュームに割り当てていないので、docker-compose run --rm assets:precompile でsw.jsを生成しても保存されずに消えてしまうという問題がありました。

で最終的に、public直下のsw.jsはassets/sw.jsへのシンボリックリンクということになりました。assets/はボリュームが割り当てられているので、ちゃんと保存されるというわけです。

PuSH 購読に何度も失敗する場合、購読を解除する

When PuSH subscribe attempts are exhausted, unsubscribe by Gargron · Pull Request #4422 · tootsuite/mastodon

リトライしなくする修正は少し前に入っていたのですが、失敗したままdeadに積まれ、DB上も購読が切れている(更新待ち)という扱いは変わらずでした。今回の修正でdeadに入ることなく、そのまま購読を解除するようになりました。

細かいやつ

development環境でwebpackが生成したファイルにハッシュ値をつけないように

Remove hash from chunk filename when dev env by ykzts · Pull Request #4411 · tootsuite/mastodon

Webpackでビルドしたファイルにはファイル名にハッシュ値がついていましたが、development環境ではこれを付けないようになりました。開発時は度々再ビルドすることになりますからね…。

ホイールイベントにPassive Event Listenerを使うように

fix(column): Use passive wheel listener by sorin-davidoi · Pull Request #4348 · tootsuite/mastodon

wheel イベントはキャンセル可能なイベントですが、これをあえてキャンセルしないと宣言しておくことで、パフォーマンスの向上を狙うものです。詳しくはこの辺が参考になります。

Passive Event Listeners によるスクロールの改善 | blog.jxck.io

お気に入り一覧の表示を高速化するためのインデックス追加

Add index favourites on account_id and id by akihikodaki · Pull Request #4360 · tootsuite/mastodon

これ自体はそれだけなんですが、Eugen氏からこんなにインデックスいるの?という意見と共に mastodon.social のインデックスサイズがいくつか挙げられていて、ちょっと面白いです。statusesテーブルのサイズと同じくらいstatusesテーブルのインデックスが食ってる。

その他いっぱい

WebPushの通知のグループ化

Sidekiqの管理画面を開いたときにForbiddenが表示されることがある件。

Fix current session not being displayed in sessions list by Gargron · Pull Request #4424 · tootsuite/mastodon

/auth/edit のセッション一覧で「現在のセッション」という表示がされなくなっていた件。一覧に項目自体はあるのですが、古いセッションと同じように表示されてしまっていました。

スワイプでカラムを切り替えたときに、タブの表示が先に切り替わるように。

Sidekiqの処理でPuSH関連のエラーがあった時に、原因のURLやユーザー名を表示するように。

ランディングページに表示されるタイムラインが、Safariでは途中から消えていた件。

federation先でrc1のトゥートに含まれるメンションをクリックしたときに、WebUI内で開かれずに新しいタブが開いていた件。

ランディングページの一番上の3つ並んだリンクがスマホで折り返されていた件とか、インスタンス名の下にやたらでかい空白があった件とか、/about/more に表示されていたデータがスマホでも一行に押し込められていた件とか。