: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を自動で有効化するように

feat: Enable push subscription for mobile devices by default by sorin-davidoi · Pull Request #4321 · tootsuite/mastodon

スマホレイアウトで投稿カラムに切り替えたときにtextareaに自動でフォーカスしないように

fix(compose_from): Do not autofocus on mobile by sorin-davidoi · Pull Request #4344 · tootsuite/mastodon

え…まじか…(PCでも1カラム勢)

細かいの・admin向け

メール認証が完了していないアカウントのクリーンアップをSidekiqに移行

Move clean up of unconfirmed users to sidekiq-scheduler by Gargron · Pull Request #4336 · tootsuite/mastodon

これでやっと 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

こんなロゴになりました。

f:id:unarist:20170723235508p:plain

ほどほど

読み込み中のカラムタイトルを本来のものに揃える

fix(columns_area): Show correct title for preview columns by sorin-davidoi · Pull Request #4310 · 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タスク追加

Add rake task mastodon:feeds:build to regenerate all active users' feeds by Gargron · Pull Request #4303 · tootsuite/mastodon

何らかの理由でHomeTLに不整合が生じているとき、あるいはRedisを飛ばしてしまった時などに便利です。あるあるですね。ない?

LPの雲のアニメーションにease-in-outを使うように

Changed landing page cloud animation to be smoother and more natural by MightyPork · Pull Request #4304 · tootsuite/mastodon

折り返しが緩やかになりました。

: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

トゥートの詳細表示を連続で表示したときにメディアの非表示状態が更新されないバグ

Fixed issue that the NSFW image is not hidden on detail page by abcang · Pull Request #4244 · 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

ほどほどなやつ

モバイルレイアウトかつ高さが十分にないときに、投稿欄上部のメニューや検索ボックスを隠す

feat(compose): More space on mobile devices by sorin-davidoi · Pull Request #4282 · tootsuite/mastodon

feat(compose): Change media query for compact mode to max-height: 400px by sorin-davidoi · Pull Request #4291 · tootsuite/mastodon

高さの条件があるので例えば…スマホを横持ちにした時とか。

アカウントロックの説明からトゥートの公開範囲に関する記述を削除

Don’t mention default post privacy on hints for locked accounts by unarist · Pull Request #4222 · 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でいきなり実行してもエラーにならないように

Check table existence on prepare_for_foreign_keys by unarist · Pull Request #4225 · tootsuite/mastodon

SMTPS (SMTP over SSL) 用のオプション追加

Add SMTP_TLS variable for configuring TLS when server uses non-standard port by Gargron · Pull Request #4227 · tootsuite/mastodon

これまでも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の再試行キューにたまってしまうということもあって、かな。

管理画面に特定インスタンスのアカウントをまとめて再講読するボタンを追加

Add button to re-subscribe to all accounts from a domain by Gargron · Pull Request #4285 · tootsuite/mastodon

:don: 170715

bug

未知のアカウントに対する返信への返信がHomeに表示される

Fix subsequent replies to unresolved status not being filtered from home by Gargron · Pull Request #4190 · tootsuite/mastodon

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やなんかでも使われてるやつ。スマホではAndroidChromeが対応してるとかどうとか。

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の購読リクエストにアカウントによる署名が付けられれば、その購読が確かにそのアカウントによるものとわかるので、安心して配信することができます。というのがこちら。

Fix #2672 - Connect signed PuSH subscription requests to instance domain by Gargron · Pull Request #4205 · tootsuite/mastodon

ちなみに、これによって購読する側のインスタンスMastodon流のHTTP署名に対応しているかどうかを識別することができるので、privateやdirectといった公開範囲の指定に対応していない他の OStatus 互換のソフトウェア、例えば GNU Social からの購読にはそれらのトゥートを流さない、といった制御も可能になります。

自分の公開ページにnoindexを付けられるように

Add option to opt out of search engines on public profile/status pages by Gargron · Pull Request #4199 · tootsuite/mastodon

プロフィールページや個別トゥートページに noindex を出力する、という設定がユーザー設定に追加されました。要は検索避けですね。

mastodon:media:remove_remote の閾値を設定できるように

Fix #3904 - Adjustable time period for mastodon:media:remove_remote via NUM_DAYS by Gargron · Pull Request #4191 · tootsuite/mastodon

リモートインスタンスから受信した添付メディアのうち、古いものを削除する 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を入れると…という。

しかしこれ、呼び出す側で対応してるけど、フィードからプロフィール設定する側でもローカルユーザーだったら例外投げていいような気もする。そしてテストないのか。

未マージ

一度あることは二度ある。