firefish/README.md

15 KiB
Raw Blame History

Misskey のフォークの Firefish のフォークです。

本家 Firefish のリポジトリはこちら

main ブランチではこのフォークに適用された変更のコミット履歴のみが、history ブランチでは本家 Firefish のコミットを含む完全なコミット履歴が閲覧できます。

このフォークの機能について調べるには main ブランチを、コードの著者について調べるには history ブランチを参照してください。

変更点

今後の予定

Issues にあります。

一時的な変更点

  • Mastodon API 対応のために Megalodon 8.1.1 を使用する変更を取り消し
    • 正しく動いていないため

主要な変更点

  • 「秘密」という公開範囲を追加
    • 宛先無しのダイレクト投稿を言い換えているだけです
    • 既存の投稿を削除せずに後から秘密にすることもできます
  • パフォーマンス向上のためアクティブユーザー以外のチャート生成を無効化
    • サードパーティー製クライアントが動かなくなるのを阻止するため API のエンドポイントは残していますが、叩いても 0 が並んだ配列しか返しません。
  • モデレーターでない一般ユーザーにもカスタム絵文字の管理権を与えられるように
    • カスタム絵文字の管理が大変なサーバー管理者さんがたくさんいらっしゃったのでこの機能を追加するべきではないか他の開発者に訊いたところロール機能の実装を待つべきだと言われてしまったが、Firefish のロール機能は現状では仕様がまだ固まっておらず実装までに時間が掛かると考えられるため
    • 以下の権限を与えられます
      • 不許可: 絵文字の管理を許可しない
      • 追加: 新しい絵文字の追加のみを許可する
      • 追加と変更: 「追加」に加え、既存のカスタム絵文字の名前・カテゴリ・タグ・ライセンスの編集を許可する
      • 全て許可:「追加と変更」に加え、既存のカスタム絵文字の削除を許可する
  • モバイル表示の下部のウィジェットボタンを再読み込みボタンに変更可能に
    • スマートフォンでウィジェットは使わないけど再読み込みはたくさんする人はいそう
  • モバイル表示の下部のチャットボタンをアカウント切り替えボタンに変更可能に
    • これ無しで PWA で複数アカウントを使おうとすると腱鞘炎になる
  • ローカルタイムラインの位置をグローバルタイムラインの直前に移動
    • ローカルタイムラインよりもソーシャルタイムラインのほうが使いやすいと考えたため

細かい変更点

  • 標準のフォントを Atkinson Hyperlegible にする変更を取り消し
  • 簡体中文の翻訳が存在しない項目では繁体中文の翻訳を用いるように(本家では逆)
    • @sup39 さんが独自機能に使われているラベルの繁体中文訳を提供してくださったため
  • オンラインステータスが非公開のアカウントにはステータスを表す丸印を表示しないように
    • 灰色の丸が表示されていてもそんなに嬉しくないため
  • デフォルトで検索エンジンからのクロールを拒否するように変更
  • 検索の MFM で使用する検索エンジンを設定から変更可能に
    • 以下の選択肢から選べます
      • DuckDuckGo (duckduckgo.com)
      • SearXNG (searx.be)
      • Google Search (google.com)
      • Moon Search (search.naskya.net)
      • サーバーの投稿検索
  • サーバー設定の初期値を変更
    • 新規登録を無効化
      • 新規登録を受け付けたくないのに無効化する前にアカウントを登録されてしまうことを防ぐため
    • プライベートモード(連合しないモード)を有効化
      • サーバーの準備が整っていないうちにリモートサーバーに認識されてしまうことを防ぐため
    • サーバーメトリクスの表示を有効化
      • 有効化しているサーバーが多いため
    • ランダムなアイコンの生成を無効化
      • ランダムなアイコンはそんなにかわいくないため
  • 身バレ防止の設定を追加
    • 「おかえりなさい、◯◯さん」が出ないようにできるように
    • 自分のアイコンを非表示にできるように
    • 自分の名前とIDを非表示にできるように
      • 名前とIDの部分が空白になるので慣れるまで時間が掛かります
  • ユーザーページのデフォルトのタブを「投稿と返信」に変更
  • タイムラインにリプライを表示する設定をデフォルトで有効に
  • 未読通知のタブをリアクションの通知を表示するタブに変更
    • 未読のタブ、使ってる人いる?
  • MFM チートシートのボタンを投稿画面から左下のヘルプメニューに移動
    • これがあるために投稿画面下部のボタンが 2 段になってしまうことがあるため
  • 「フォローされています」の表示を目立たせられるように
    • デフォルトの表示は目立たないため
  • 最大 15 件の投稿を固定できるように
    • 5 件は少ないと思ったため
  • 投稿ボタンを巨大にできるように
  • アンテナにフォロー中のユーザーのホーム投稿も表示する
    • フォロー中のユーザーの投稿は見たいから
  • 猫のアカウントはアイコンを常に丸く表示する
    • そのほうがかわいいため
  • NSFW メディアを隠す設定をブラウザごとの設定からブラウザごとかつアカウントごとの設定に変更
    • 「このアカウントでは NSFW の画像を常に表示したい」みたいな需要が私にあったため
  • インスタンスティッカーをデフォルトで常に表示する
    • そのほうが楽しいと思ったから
  • 藍ちゃんウィジェットの復活
  • インスタンスティッカーのツールチップにソフトウェアのバージョン番号も表示する
    • 気になるから
  • いいねボタン(リアクションピッカーの左にある、とか👍のリアクションをワンクリックで押せるやつで空のリアクションMastodon がふぁぼで送ってくるものと同じ)ではなく本当にその絵文字リアクション(とか👍とか)を送るようにする
    • 最新の Misskey ではデフォルトリアクションが❤️になったため空のリアクションを送ると❤️として表示されてしまうが、❤️𝓋... という気持ちを伝えるためのリアクションであってただの「いいね」とは異なるため、このボタンで❤️は送りたくないから
  • 通知の表示を簡潔にする
    • 「がリアクションしました」とかリプライの上にある白い線とかが邪魔に思えたため
    • 一部の表示の色も Misskey の通知の色が個人的に好みだったので戻した
  • 支援者リストをファイルから読み込む
    • 外部のサーバーが落ちるとユーザーページが開けなくなることを防ぐため
  • 閲覧注意の注釈と画像の代替テキストもアンテナで調べる対象にする
    • 「そぎぎ」でアンテナを作れる
  • インデックス拒否に noindex に加えて nofollow,noarchive,nocache,noimageindex も指定
  • インスタンスティッカーに表示するサーバーのアイコンとして favicon を優先する
    • favicon のほうがよくカスタマイズされているため
  • 誤爆しやすい位置にあるフォローボタンを隠す設定を追加
    • フォローを誤爆すると悲しいため
  • クローラーを拒否する robots.txt の追加
    • joinfirefish と FediDB のクローラーは許可しています
  • 投稿プレビューをデフォルトでオンにする設定を追加
  • バージョン番号にコミットハッシュが含まれるように
    • 正確なバージョンが分かるとバグ修正に役立つため

このフォークから本家 Firefish に輸出された変更点

このフォークは本家に push する前のテスト環境としても使われるため、有用な機能はよく輸出されます(そしてニッチな機能だけが残る)

  • 投稿中に表示されるインスタンスティッカーをクリックするとサーバー情報を開くように
  • UI 用の言語とは別に、投稿翻訳に使用する言語を設定可能に
    • UI 用の言語は翻訳先の言語の第二候補として使われます(投稿の言語と投稿翻訳先に設定した言語が同じだった場合には UI 用の言語に翻訳されます)
  • 投稿言語を自動検出して外国語の投稿に翻訳ボタンを表示する設定を追加
  • 繁体中文への投稿翻訳を繁体字で表示する
    • DeepL 翻訳や LibreTranslate は簡体中文への翻訳しか提供していない……。
  • 「Firefish について」のページに Misskey の主要な貢献者を表示
    • このソフトウェアは Misskey のフォークであるため
  • 閲覧注意の投稿への返信で注釈の先頭に "re:" をつける設定を追加
    • 返信で閲覧注意は維持したいけどそのままの注釈を用いるのには違和感を覚えることがよくあるため
  • 猫耳の角を少し丸くするMisskey から取り込み)
    • そのほうがかわいいため
  • インスタンスティッカーのツールチップに出るソフトウェア名で FoundKey, PeerTube, GNU social, WriteFreely などを正しく表示する

使用方法

インストール

Firefish のインストールスクリプトのプロンプトで尋ねられるリポジトリの URL にこのリポジトリの URL を使ってください。

Repository url where you want to install:
> https://code.naskya.net/naskya/firefish

アップデート

  1. サーバーのバックアップを取る
  2. サーバーを停止する
    $ sudo systemctl stop yourserver.example.com
    
  3. update.sh を実行し、表示される指示に従う
    $ ./update.sh
    
  4. サーバーを起動して動作を確認する
    $ sudo systemctl start yourserver.example.com
    

本家 Firefish からの乗り換え

  1. サーバーのバックアップを取る
  2. サーバーを停止する
    $ sudo systemctl stop yourserver.example.com
    
  3. Firefish がインストールされているディレクトリ (e.g., /home/calckey/calckey) の親ディレクトリ (e.g., /home/calckey) に移動する
    $ cd /home/calckey
    
  4. Firefish がインストールされているディレクトリ (e.g., ./calckey) の名前を変える
    $ mv calckey calckey.old
    
  5. 元々 Firefish がインストールされていたディレクトリ (e.g., ./calckey) と同じ名前でこのリポジトリをクローンする
    $ git clone https://code.naskya.net/naskya/firefish calckey
    
  6. 必要なファイルを元のディレクトリからコピーする
    $ rm -rf calckey/files calckey/custom calckey/.config
    $ cp -r calckey.old/files calckey
    $ cp -r calckey.old/custom calckey
    $ cp -r calckey.old/.config calckey
    
  7. 新しい Firefish のディレクトリに入ってビルドする
    $ cd calckey
    $ ./update.sh
    
  8. サーバーを起動して動作を確認する
    $ sudo systemctl start yourserver.example.com
    
  9. 元々 Firefish がインストールされていたディレクトリを削除する
    $ cd ..
    $ rm -rf calckey.old
    

このフォークから本家 Firefish へ戻る

  1. サーバーのバックアップを取る
  2. サーバーを停止する
    $ sudo systemctl stop yourserver.example.com
    
  3. Firefish がインストールされているディレクトリ (e.g., /home/calckey/calckey) へ移動する
    $ cd /home/calckey/calckey
    
  4. このフォークで加えられたデータベースへの変更を取り消す(dbname(以下の例では mk1)には .config/default.yml に記載されている PostgreSQL のデータベース名(db: の後に書かれているもの)を指定する)
    $ sudo -iu postgres psql --dbname=mk1 --file=neko/revert.sql
    
  5. Firefish がインストールされているディレクトリの親ディレクトリ (e.g., /home/calckey) に行く
    $ cd ..
    
  6. Firefish がインストールされているディレクトリ (e.g., ./calckey) の名前を変える
    $ mv calckey calckey.old
    
  7. Firefish がインストールされているディレクトリと同じ名前で本家版の Firefish を clone する
    $ git clone https://git.joinfirefish.org/firefish/firefish.git calckey
    
  8. 必要なファイルをコピーする
    $ rm -rf calckey/files calckey/custom calckey/.config
    $ cp -r calckey.old/files calckey
    $ cp -r calckey.old/custom calckey
    $ cp -r calckey.old/.config calckey
    
  9. 新しい Firefish のディレクトリ (e.g., ./calckey) に入り、develop ブランチに行く(既にそうなっているはず)
    $ cd calckey
    $ git checkout develop
    Already on 'develop'
    Your branch is up to date with 'origin/develop'.
    
  10. Firefish をビルドする
    $ corepack prepare pnpm@latest --activate
    $ pnpm i
    $ NODE_ENV=production pnpm run build
    $ pnpm run migrate
    
  11. サーバーを起動して動作を確認する
    $ sudo systemctl start yourserver.example.com
    
  12. 元々 Firefish がインストールされていたディレクトリを削除する
    $ cd ..
    $ rm -rf calckey.old
    

注意

この手順を踏むとあなたの Firefish サーバーは develop 版になります。他のバージョンを動かしたい場合も、次のアップデートがリリースされるまでは develop 版を動かしてください

例えば beta 版を動かしたい場合、次に beta 版がリリースされたらそちらに移れます。

$ git checkout beta
$ git pull --ff
$ corepack prepare pnpm@latest --activate
$ pnpm i
$ NODE_ENV=production pnpm run build
$ pnpm run migrate