Firefish neko flavor by naskya (https://code.naskya.net/naskya/firefish) + PR by sup39
Find a file
2023-09-22 14:02:48 +09:00
.config Firefish v1.0.5-dev11 2023-09-04 18:07:18 +09:00
custom chore: move custom assets 2023-08-10 06:31:17 +09:00
locales Firefish v1.0.5-dev17 2023-09-22 14:02:48 +09:00
neko Firefish v1.0.5-dev17 2023-09-22 14:02:48 +09:00
packages Firefish v1.0.5-dev17 2023-09-22 14:02:48 +09:00
scripts Firefish v1.0.5-dev11 2023-09-04 18:07:18 +09:00
.dockerignore Firefish v1.0 2023-07-20 04:17:05 +09:00
.gitignore Firefish v1.0.5-dev11 2023-09-04 18:07:18 +09:00
.node-version Firefish v1.0 2023-07-20 04:17:05 +09:00
.npmrc Firefish v1.0 2023-07-20 04:17:05 +09:00
biome.json Firefish v1.0.5-dev11 2023-09-04 18:07:18 +09:00
COPYING Firefish v1.0.5-dev17 2023-09-22 14:02:48 +09:00
docker-compose.yml Firefish v1.0.5-dev11 2023-09-04 18:07:18 +09:00
Dockerfile Firefish v1.0.5-dev6 2023-08-25 07:19:12 +09:00
gulpfile.js Firefish v1.0 2023-07-20 04:17:05 +09:00
LICENSE Firefish v1.0 2023-07-20 04:17:05 +09:00
package.json Firefish v1.0.5-dev17 2023-09-22 14:02:48 +09:00
patrons.json Firefish v1.0.4-beta 2023-08-02 23:59:31 +09:00
pnpm-lock.yaml Firefish v1.0.5-dev17 2023-09-22 14:02:48 +09:00
pnpm-workspace.yaml Firefish v1.0 2023-07-20 04:17:05 +09:00
README.md feat: ability to specify search engine for search MFM 2023-09-21 16:47:06 +09:00
update.sh dev: update upgrading script 2023-09-21 07:58:12 +09:00

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

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

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

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

変更点

今後の予定

Issues にあります。

主要な変更点

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

細かい変更点

  • 検索の 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. packages/backend/ormconfig.js をテキストエディターで開き、migrationsmigration-neko-revert/*.js を追加する
    $ vim packages/backend/ormconfig.js
    
    - migrations: ["migration/*.js", "migration-neko/*.js"],
    + migrations: ["migration/*.js", "migration-neko/*.js", "migration-neko-revert/*.js"],
    
  5. このフォークで加えられたデータベースへの変更を取り消す
    $ pnpm run migrate
    
  6. Firefish がインストールされているディレクトリの親ディレクトリ (e.g., /home/calckey) に行く
    $ cd ..
    
  7. Firefish がインストールされているディレクトリ (e.g., ./calckey) の名前を変える
    $ mv calckey calckey.old
    
  8. Firefish がインストールされているディレクトリと同じ名前で本家版の Firefish を clone する
    $ git clone https://git.joinfirefish.org/firefish/firefish.git calckey
    
  9. 必要なファイルをコピーする
    $ 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
    
  10. 新しい Firefish のディレクトリ (e.g., ./calckey) に入り、develop ブランチに行く(既にそうなっているはず)
    $ cd calckey
    $ git checkout develop
    Already on 'develop'
    Your branch is up to date with 'origin/develop'.
    
  11. Firefish をビルドする
    $ corepack prepare pnpm@latest --activate
    $ pnpm i
    $ NODE_ENV=production pnpm run build
    $ pnpm run migrate
    
  12. サーバーを起動して動作を確認する
    $ sudo systemctl start yourserver.example.com
    
  13. 元々 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