:don: 170724 v1.5.0rc1
v1.5.0rc1 がリリースされました。
https://github.com/tootsuite/mastodon/releases/tag/v1.5.0rc1
末代鯖にはまだ入っていないものもありますが、ついでに紹介してしまいます。
そこそこでかいの
デザイン変更色々
/about/more
Redesign extended information page by Gargron · Pull Request #4322 · tootsuite/mastodon
サイドバーがなくなりました(!)。
/terms
Redesign /terms page by Gargron · Pull Request #4338 · tootsuite/mastodon
リモートアカウントのプロフィールの下に、ここに表示されている情報が完全でない可能性がある旨の注意書きが表示されるように
Improve remote profile disclaimer by Gargron · Pull Request #4342 · tootsuite/mastodon
「トゥートに抜けがあるんだけど!」「投稿数やf/f数が少ないんだけど!」
というのは幾度となく耳にした話ですね。数値に関しては *
印があったりマウスオーバーで説明が出たりもしていましたが、より分かりやすくなった形です。
Content Warning のプレースホルダテキストの変更
Change the content warning placeholder by Sylvhem · Pull Request #4313 · tootsuite/mastodon
これまでは「Content Warning」を「Write your warning here」に変更して、そこに何を書けばいいのかがよりわかりやすくなりました。これも迷う人がちらほらいた印象ですね。
日本語訳では「警告」だったものが「ここに警告を書いてください」になりました。
メディアモーダルの背景に背景色を設定、というか不透明に
Add background to media modal by Gargron · Pull Request #4317 · tootsuite/mastodon
スワイプ回りをいわゆるカルーセルやスライドショーのようにしたことで、大きさの異なる画像が複数添付されていた時でも、前後に移動するボタンが画像にひっついてこなくなっていました。そのうえ背景はモーダル共通の半透明背景なので、そこには何もないように見え、ついでに言えばクリックで閉じそうに見えていたわけです。
以前と同じように幅が画像に合わせて変化するようにするのは面倒ということもあり、背景色を付けて、そこもスライドの一部なのだとわかるようにした感じです。
スマホやタブレットでは(可能なら)WebPushを自動で有効化するように
スマホレイアウトで投稿カラムに切り替えたときにtextareaに自動でフォーカスしないように
え…まじか…(PCでも1カラム勢)
細かいの・admin向け
メール認証が完了していないアカウントのクリーンアップをSidekiqに移行
これでやっと mastodon:daily
タスクが空になり、cron から完全に解放されました。やったね。
JavaScriptが無効になっている時のメッセージで、ネイティブアプリについて言及するように
Improve noscript message and style by Gargron · Pull Request #4315 · tootsuite/mastodon
:don: 170723
比較的でかいの
ロゴの変更
New logo by Gargron · Pull Request #4306 · tootsuite/mastodon
こんなロゴになりました。
ほどほど
読み込み中のカラムタイトルを本来のものに揃える
ローカルタイムラインがカラム切り替え直後だけローカルと表示されていたやつですね。コンポーネントの遅延読み込みからなので比較的最近の話ではありますが。
モバイルレイアウトでGetting Startedをスクロールできるように
fix(getting_started): Scroll on mobile by sorin-davidoi · Pull Request #4312 · tootsuite/mastodon
Getting Started には flex-shrink: 0
を指定して全体を表示するようにしていたんですが、例えばスマホを横向きにした時に下の方のメニューを触ることができない、ということで。縦向きで高さが足りないときにも、Getting Started の下に表示されているリンク集や説明文がある程度見えるようになりました。
こまかいの・admin向け
アクティブユーザーのHomeTLを再生成するRakeタスク追加
何らかの理由でHomeTLに不整合が生じているとき、あるいはRedisを飛ばしてしまった時などに便利です。あるあるですね。ない?
LPの雲のアニメーションにease-in-outを使うように
折り返しが緩やかになりました。
:don: 170716-22
結局一週間空いてますね。細かいのや、メディアモーダルみたいにずっと直してるみたいなのは省略。
比較的でかいやつ
ミュートしたアカウントからのあらゆる通知を表示しないように
Fix #4172 - Mutes now block notifications by Gargron · Pull Request #4300 · tootsuite/mastodon
以前からお気に入り通知は表示されなかったんですが、ブーストやメンションも表示されなくなりました。はい。
プロフィール編集画面でアバターやヘッダーのプレビューが表示されるように
Fix #3220 - Show avatar/header on edit profile page by Gargron · Pull Request #4288 · tootsuite/mastodon Dynamicaly change avatar and header bg from account setting by ykzts · Pull Request #4289 · tootsuite/mastodon
正規表現フィルタが自分のトゥートには適用されないように
Exclude self toots from regular expression filter by ykzts · Pull Request #4245 · tootsuite/mastodon
トゥートの詳細表示を連続で表示したときにメディアの非表示状態が更新されないバグ
非NSFW画像を含むトゥートAとNSFW画像を含むトゥートBがあった時に、Aをクリックして詳細表示、そのままBをクリックして詳細表示、とやるとNSFWが反映されずに最初から表示されてしまう。逆もしかり。結構前からあったバグのようで…。
フォロー解除時の確認ダイアログを追加
Add unfollow modal (optional) by ykzts · Pull Request #4246 · tootsuite/mastodon
カラム切り替えでスクロール位置がリセットされても新着マークが消えない件
Update scroll top state on column mounting by unarist · Pull Request #4276 · tootsuite/mastodon
ほどほどなやつ
モバイルレイアウトかつ高さが十分にないときに、投稿欄上部のメニューや検索ボックスを隠す
高さの条件があるので例えば…スマホを横持ちにした時とか。
アカウントロックの説明からトゥートの公開範囲に関する記述を削除
日本語訳だと「デフォルトではトゥートの公開範囲はフォロワーのみです。」なんて書いてあったんですが、これが適用されるのは
- WebUIから投稿する時のデフォルト (ただし一度も変更していない場合に限る)
- APIでvisibilityを省略したときのデフォルト (多分大抵のアプリは自前のデフォルト値と選択UIを持っていて、投稿時に選択されているものがvisibilityに設定されるので、省略されることはほとんどないのでは)
という限定された場面だけだったので、削りました。個人的には上記の微妙な仕様も消した方がすっきりするのではと思ったけれど、反応が今一つだったので文言だけ。
セッションをrevokeできるように
Add feature to revoke sessions by ykzts · Pull Request #4259 · tootsuite/mastodon
revokeって日本語でなんて言うのがいいんでしょうね。
セッションが無駄に再作成されていたバグを修正
Fix sessions being replaced needlessly by Gargron · Pull Request #4292 · tootsuite/mastodon
WebPushの登録完了通知が度々現れる件もこれで落ち着くのかな?
admin向け
mastodon:maintenance:prepare_for_foreign_keys を1.3.3でいきなり実行してもエラーにならないように
SMTPS (SMTP over SSL) 用のオプション追加
これまでもSTARTTLSを使った暗号化には対応していたんですが、SMTPSには必要なオプションは環境変数で設定できなかったので、それが追加されました。ポート465の方ですね。
モデレーション周りのUI強化
Improve admin page by abcang · Pull Request #4121 · tootsuite/mastodon
まとめてNSFW・削除ができるようになったり、削除が非同期になったり、通報同様にそういった操作が行えるようなトゥート一覧ページを追加したり。
WebFinger周りのエラー処理を整理して、どうしようもないエラーは無視するように
Fix webfinger retries by Gargron · Pull Request #4275 · tootsuite/mastodon
普通に例外投げるとSidekiqの再試行キューにたまってしまうということもあって、かな。
管理画面に特定インスタンスのアカウントをまとめて再講読するボタンを追加
:don: 170715
bug
未知のアカウントに対する返信への返信がHomeに表示される
A(未知)←B←C みたいに返信していったときに、BとCをフォローしているとB←Cが見えてしまうという話。多分。
Mastodonでは単に@がついているだけ(メンション)ではHomeからフィルタされず、返信の流れを追っています。ただ返信の返信(以降)で毎回 in_reply_to を追っかけるのは手間なので、in_reply_to_account_id
として一連の会話の最初の返信先を保持することで、フィルタを行っています。
この id もローカルの id なので、未知のアカウントの場合は nil になるわけですが、この場合をカバーする条件が漏れていた、という話のようです。
master: ブースト・ふぁぼ解除を二回クリックしないといけない件
Fix response of unreblog/unfavourite APIs by unarist · Pull Request #4204 · tootsuite/mastodon
ブースト・ふぁぼは同期的に処理されるのに対し、それぞれの解除はSidekiqを使い非同期に処理されます。つまりレスポンスを返す段階ではふぁぼ数やふぁぼ済みフラグが更新されていません。
で、処理後の状態を推測して上書きしていたんですが、ActiveModelSerializersを導入したときに消えていたために、解除しても解除したように見えないというバグでした。コメントで指摘があるブースト数・ふぁぼ数は気づきはしたんですが、どう実装したものかというのもあり、大きなバグではないということで今回は後回しにしました。はい。
master: モバイルレイアウトでのカラム切り替え
Fix column swiping by unarist · Pull Request #4211 · tootsuite/mastodon
- アニメーションをオフにしているとイベントの発火順序が異なるために、正しくURL変更が行われなかった。
- スワイプ移動するときはアニメーションをかけたいはずなのに、URL変更から発生した遷移の直後はアニメーションがかかっていない。スワイプ時の挙動に影響するのは既存の設定なので、アニメーション有効に戻しておかないといけないという。
- あと個人的な好みで、隣のカラムだからといってスワイプでない遷移でアニメーションしないように。
最後のは私の好みも多分にありますが、同じ「アニメーションする」といってもスワイプ時と見え方が違うんですよね。スワイプの場合 react-swipeable-views 側でスワイプを検知したらアニメーション完了を待ってURL変更=遷移先をマウントしますが、そうでない場合まずURL変更=マウントがあってから react-swipeable-views でアニメーションすることになります。
先にマウントが発生するので、そこに時間がかかればアニメーション前に待たされることになります。また、遷移前のカラムが空っぽになり遷移先のカラムが描画された状態でアニメーションが行われます。この二点がスワイプ時と違うのでちょっと違和感が…とりわけ遷移前が先に消えるのが気になるんだろうか。
feature
お気に入り一覧をピン留めできるように
Fix #3773 - Pin favourites column by Gargron · Pull Request #4201 · tootsuite/mastodon
結局今でもリアルタイム更新はされないけどいいんだろうか…。
improvement
一番下までスクロールしたときに、LoadMoreボタンが消えてガクンとなる件
Small style fixes by sorin-davidoi · Pull Request #4206 · tootsuite/mastodon
あれ地味に気になってたんですが、要素を消すのではなく opacity: 0
にすることで高さを維持するようにしたようです。いや…それより読み込み中とわかる表示にすればいいのでは…。
:don: 170714
WebPush対応
Web Push Notifications by sorin-davidoi · Pull Request #3243 · tootsuite/mastodon
ページを開いていないときでも機能するプッシュ通知ですね。Gmailやなんかでも使われてるやつ。スマホではAndroidのChromeが対応してるとかどうとか。
admin視点ではWebPush用の鍵を生成(取得?)して .env.production
に記載する必要があります。これは rake mastodon:webpush:generate_vapid_key
でいけるようになってます。なりました。
絵文字をサーバー側でUnicodeに変換
Fix #4149, fix #1199 - Store emojis as unicode by Gargron · Pull Request #4189 · tootsuite/mastodon
これまで :emoji: 形式で書かれた絵文字はJS側で処理していたのを、サーバー側でUnicode絵文字に変換するように。JS側の負担が減るのもそうですが、:emoji: 形式に対応していないクライアントでも正しく表示されるようになります。 (フォントがその絵文字に対応していれば、ではあるけども)
ところで、元々emojione付属の正規表現を使って行っていた、JS側での絵文字検出・SVGへの置き換えも、しばらく前から独自のものに置き換えられています。加えて上記の変更。使ってない部分がほとんどなのでは、ということで必要な部分だけ取り込むようになりました。gzip後でも40KB程の削減になったようです。
🎄🔨 Force tree shake emojione by sorin-davidoi · Pull Request #4202 · tootsuite/mastodon
惜しむべくは、title属性に埋め込まれていた、つまりツールチップとして表示されるshortnameのヒントがなくなってしまうこと。自分で入力するときの参考に、また絵文字の意味を理解するのに便利だったけど、まあPCでしか使えない機能に場所取るのかと言われると…userscriptを復活させるか…。
購読リクエストへのHTTP署名
HTTP signatures by Gargron · Pull Request #4146 · tootsuite/mastodon
Mastodonが送信するHTTPリクエストに、アカウントによる署名を付けられるように、またそれを検証できるようにというもの。これがどう役に立つか。
トゥートの配信に使われるWebSubの購読リクエストには、自らがどのユーザであるかという証明が含まれていません。フォロワー限定のトゥートやダイレクトトゥートを身元のわからない購読に配信するわけにはいかないので、これまではコールバックURLのドメインとアカウント名のドメインを比較していました。が、これだとアカウント名のドメインとサーバーを動かすドメインを別にしたい時に不便です。
ここでWebSubの購読リクエストにアカウントによる署名が付けられれば、その購読が確かにそのアカウントによるものとわかるので、安心して配信することができます。というのがこちら。
ちなみに、これによって購読する側のインスタンスがMastodon流のHTTP署名に対応しているかどうかを識別することができるので、privateやdirectといった公開範囲の指定に対応していない他の OStatus 互換のソフトウェア、例えば GNU Social からの購読にはそれらのトゥートを流さない、といった制御も可能になります。
自分の公開ページにnoindexを付けられるように
プロフィールページや個別トゥートページに noindex を出力する、という設定がユーザー設定に追加されました。要は検索避けですね。
mastodon:media:remove_remote の閾値を設定できるように
リモートインスタンスから受信した添付メディアのうち、古いものを削除する
mastodon:media:remove_remote
というタスクがあるのですが、その閾値が1週間固定だったのが、環境変数で指定できるようになりました。
:don: 170713
Fix #1010 - When spoiler text is set, enforce sensitivity too by Gargron · Pull Request #4176 · tootsuite/mastodon
これまでspoiler_text(CW)とsensitive(NSFW)は完全に独立した機能でしたが、spoiler_textが設定されている投稿に添付したメディアは常にsensitiveとして扱われるように。
「投稿全体に対する警告文」と考えれば特に問題ない変更ですが、現実には単に長文を折りたたむために使われていることもあり、issueでも議論になっていました。個人的には、画像を投稿する際にURL*1やハッシュタグを隠すために使われているのも見たことがあります。
で、WebUIでメディアを丸ごと “read more” の中に隠してしまう実装を棄却してのこの実装ですが、投稿時の挙動を変える方がサードパーティクライアントにも強制できますし、また既存の投稿に影響を及ぼさないという点では優れているように思います。もっとも、クライアント側でもこの挙動が投稿時にわかるようにすべきではありますが。
Fix threaded replies to non-federated statuses not being filtered from the timeline by nightpool · Pull Request #4177 · tootsuite/mastodon
実装はまだ議論中のようですが、例えばAがBをフォローしているときに、BとCの会話はホームに流れるべきではないのに、BとCの会話の途中にあるBのセルフリプライ(に限らない?)が流れてしまうことがある、という話。私もよく遭遇してました。
これもビフォーアフターを読み切れていないので後で読む…。
私物
Add object-fit polyfill for Edge by unarist · Pull Request #4182 · tootsuite/mastodon
object-fit
を使う箇所が増えてきたものの、Edgeの現行バージョンが対応してないので…。
srcset
はまあ認識できなくても壊れるわけではないので、とりあえず様子見。
Make tag search case insensitive again by unarist · Pull Request #4184 · tootsuite/mastodon
正直すまんかった。今回はちゃんとテストも足したので…。
*1:URLはWebUIが自動的に付加しているだけで、実際には必須ではないですし付加しないクライアントもあるのですが
:don: 170712
マージ済み
(beforeとafterを把握しきれていないので後で埋める)
これは単に無駄を省くだけでなく、ローカルユーザーのbioが壊れるのを防ぐ意味もある。というのも、Atomフィードから取得したプロフィールはHTMLになっているのだけど、ローカルユーザーはプレーンテキストで保持しているので、そこにHTMLを入れると…という。
しかしこれ、呼び出す側で対応してるけど、フィードからプロフィール設定する側でもローカルユーザーだったら例外投げていいような気もする。そしてテストないのか。
未マージ
一度あることは二度ある。