# 本家版からの変更点

## Firefish そのものに関する変更点(メタな変更点)

- [ローリングリリース](https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9)を採用
  - いわゆる「新バージョンのリリース」はありません。細かい更新が頻繁に行われるので、好きなタイミングでアップデートしてください。
  - バージョン番号は `{本家のバージョン}+neko:{コミットの日付}.{コミットハッシュの上 2 桁}` です。
    - 例えば [`6424b685e9` というコミット](https://code.naskya.net/repos/a3WPw/commits/6424b685e971578427c8db5b14710494c5cdc0fd)の直後のバージョンは `1.0.5-dev20+neko:231107.64` です。
    - 元々私は `neko.なんとか` というドメインで登録を一般開放したサーバーを立てようと思っていて、そのサーバーにこの Firefish をインストールしようと思っていたことからバージョン番号に `neko` が含まれています。
      - 現在は生活に余裕が無く、管理に時間を割けなそうにないためこのサーバーを立てる計画は中断しています。
    - この Firefish はよく Firefish neko flavor と呼ばれていますが、これはこのバージョン番号に由来します。私自身は特にこの呼称を普及させたいわけではなかったのですが、[私のアカウント](https://post.naskya.net/@dev)の数割のフォロワーが英語圏の本家 Firefish の利用者であるため単に「この機能を追加しました!」などと投稿すると本家版の更新と誤解される恐れがありますし、「私の Firefish フォークにこの機能を追加しました!」などと投稿すると私が本家 Firefish の開発を離れて新たなハードフォークを作っているのだと誤解される恐れがあるため、投稿を機械翻訳で英訳されて読まれてもなるべく誤解されないための苦肉の策としてこの呼称を使い始めました。このソフトフォークはあくまで本家 Firefish の私による「味付け」です。
- 依存ライブラリをほとんど常に最新版にアップデート
  - 本家版を更新する前にちゃんと動くか実験したいという意図もあります

## クライアントの変更点

### 主要な変更点

- 投稿ごとに言語を指定できるように([!10616](https://git.joinfirefish.org/firefish/firefish/-/merge_requests/10616) を独断でマージ)
  - これにより Mastodon の翻訳機能や言語フィルターなどが正常に機能します。今後 Firefish 側でもこの情報をもっと活用できるようにしたいです。
- 検索フィルターを強化
  - 以下の機能があります
    - AND 検索
    - OR 検索
    - 自分の(未収載・フォロワー限定・ダイレクト・秘密を含む)全ての投稿からの検索
    - 特定のユーザーの投稿の検索
    - 特定のサーバーの投稿の検索
    - 特定の期間の投稿の検索
    - 添付ファイル付きの投稿の検索
- 「秘密」という公開範囲を追加
  - 宛先無しのダイレクト投稿を言い換えているだけです
  - 既存の投稿を削除せずに後から秘密にすることもできます
- モバイル表示の下部のチャットボタンをアカウント切り替えボタンに変更可能に
  - これ無しで PWA で複数アカウントを使おうとすると腱鞘炎になる
- ローカルタイムラインの位置をグローバルタイムラインの直前に移動
  - ローカルタイムラインよりもソーシャルタイムラインのほうが使いやすいと考えたため
  - TODO: もっとカスタムできるようにして、本家にもその機能を入れたい ([#rw0Dw](https://code.naskya.net/decks/4wJQ3/tickets/rw0Dw))
- 画面を下に引いてタイムラインなどを更新する機能を追加([Misskey から取り込み](https://github.com/misskey-dev/misskey/commit/c239058624dcd880ec1c5f3c436f3a2a06fc22c3))
  - 本家にもマージリクエストを出しています ([!10644](https://git.joinfirefish.org/firefish/firefish/-/merge_requests/10644))

### 細かい変更点

- モバイル表示の下部のウィジェットボタンを再読み込みボタンに変更可能に
  - スマートフォンでウィジェットは使わないけど再読み込みはたくさんする人はいそう
- 設定のバックアップファイルに `misskeyVersion` の値が含まれていなくても警告しないように変更
  - TODO: 本家版にもマージリクエストを出す
- RTL Layout(右から左に書く言語の表示)の部分的なサポート([!10452](https://git.joinfirefish.org/firefish/firefish/-/merge_requests/10452) を独断でマージ)
- アップデート時に更新内容を確認できる機能を追加
- HTML のコードに入るコメントアートを削除
  - 全ページにこんなの入れなくても……
- デフォルトではバイブレーションを無効に
- 投稿と投稿の間を空けて表示する設定をデフォルトでは無効に
- Enter キーのみでチャットを送信する設定をデフォルトでは無効に
- デフォルトのアイコンの太さを細めに変更
- スタイルを選択する画面のサンプルのアイコンを星に変更
- 標準のフォントを Atkinson Hyperlegible にする変更を取り消し
  - フォントを変更したい場合は[このカスタム CSS](https://gitlab.com/LunarEclipse363/lunar-misskey-tweaks#setting-a-different-font) を使ってください
- 簡体中文の翻訳が存在しない項目では繁体中文の翻訳を用いるように(本家では逆)
  - [サポミク](https://fedi.sup39.dev/@sup39)さんが独自機能に使われているラベルの繁体中文訳を提供してくださったため
- オンラインステータスが非公開のアカウントにはステータスを表す丸印を表示しないように
  - 灰色の丸が表示されていてもそんなに嬉しくないため
- デフォルトで検索エンジンからのクロールを拒否するように変更
- 検索の MFM で使用する検索エンジンを設定から変更可能に
  - 以下の選択肢から選べます
    - DuckDuckGo (duckduckgo.com)
    - SearXNG (searx.be)
    - Google Search (google.com)
    - Moon Search (search.naskya.net)
      - まだこの検索エンジンは作っていません……
    - サーバーの投稿検索
- 身バレ防止の設定を追加
  - 「おかえりなさい、◯◯さん」が出ないようにできるように
  - 自分のアイコンを非表示にできるように
  - 自分の名前と ID を非表示にできるように
    - 名前と ID の部分をただ空白にするだけです
- ユーザーページのデフォルトのタブを「投稿と返信」に変更
- タイムラインにリプライを表示する設定をデフォルトで有効に
- 未読通知のタブをリアクションの通知を表示するタブに変更
  - 未読のタブ、使ってる人いる?
- MFM チートシートのボタンを投稿画面から左下のヘルプメニューに移動
	- これがあるために投稿画面下部のボタンが 2 段になってしまうことがあるため
- 「フォローされています」の表示を目立たせられるように
	- デフォルトの表示は目立たないため
- 投稿ボタンを巨大にできるように
  - [mstdn.maud.io / mstdn.poyo.me の機能](https://mstdn.poyo.me/@prime/110668364208741253) を真似しました
- 猫のアカウントはアイコンを常に丸く表示する
  - そのほうがかわいいため
- NSFW メディアを隠す設定をブラウザごとの設定からブラウザごとかつアカウントごとの設定に変更
  - 「このアカウントでは NSFW の画像を常に表示したい」みたいな需要が私にあったため
- インスタンスティッカーをデフォルトで常に表示する
  - そのほうが楽しいと思ったから
- 藍ちゃんウィジェットの復活
- インスタンスティッカーのツールチップにソフトウェアのバージョン番号も表示する
  - 気になるから
- いいねボタン(リアクションピッカーの左にある、⭐とか👍のリアクションをワンクリックで押せるやつ)で空のリアクション(Mastodon がふぁぼで送ってくるものと同じ)ではなく本当にその絵文字リアクション(⭐とか👍とか)を送るようにする
  - 最新の Misskey ではデフォルトリアクションが❤️になったため空のリアクションを送ると❤️として表示されてしまうが、❤️は ℒℴ𝓋ℯ... という気持ちを伝えるためのリアクションであってただの「いいね」とは異なるため、このボタンで❤️は送りたくないから
- 通知の表示を簡潔にする
  - 「がリアクションしました」とかリプライの上にある白い線とかが邪魔に思えたため
  - 一部の表示の色も Misskey の通知の色が個人的に好みだったので戻しました
- インスタンスティッカーに表示するサーバーのアイコンとして favicon を優先する
  - favicon のほうがよくカスタマイズされているため
  - TODO: サーバーによってはちゃんと動いていない気がするので調べる ([#13EQ3](https://code.naskya.net/decks/4wJQ3/tickets/13EQ3))
- 誤爆しやすい位置にあるフォローボタンを隠す設定を追加
  - フォローを誤爆すると悲しいため
- 投稿プレビューをデフォルトでオンにする設定を追加

## サーバーの変更点

### 主要な変更点

- 非ログインユーザーにもローカルタイムラインとグローバルタイムラインを公開できるように変更
  - コントロールパネルから設定すると `https://server.example.com/timeline` で公開されます
- 全文検索のエンジンを [PGroonga](https://pgroonga.github.io/) に変更([tamaina さんの PGroonga パッチ](https://gist.github.com/tamaina/29e88e02d0dc5acfa2f50b3347d3d20d)を拡張)
  - Meilisearch, Elasticsearch, Sonic は使えません
- モデレーターでない一般ユーザーにもカスタム絵文字の管理権を与えられるように変更
	- カスタム絵文字の管理が大変なサーバー管理者さんがたくさんいらっしゃったのでこの機能を追加するべきではないか他の開発者に訊いたところロール機能の実装を待つべきだと言われてしまったが、Firefish のロール機能は現状では仕様がまだ固まっておらず実装までに時間が掛かると考えられるため
	- 以下の権限を与えられます
		- 不許可: 絵文字の管理を許可しない
		- 追加: 新しい絵文字の追加のみを許可する
		- 追加と変更: 「追加」に加え、既存のカスタム絵文字の名前・カテゴリ・タグ・ライセンスの編集を許可する
		- 全て許可:「追加と変更」に加え、既存のカスタム絵文字の削除を許可する
- 特定のユーザーのリプライをタイムラインから非表示する機能(「ブーストをミュート」のリプライ版)を追加
  - 本家版にもマージリクエストを出しています ([!10658](https://git.joinfirefish.org/firefish/firefish/-/merge_requests/10658))

### 細かい変更点

- 設定の初期値を変更
  - 新規登録を無効化
    - 新規登録を受け付けたくないのに無効化する前にアカウントを登録されてしまうことを防ぐため
  - プライベートモード(連合しないモード)を有効化
    - サーバーの準備が整っていないうちにリモートサーバーに認識されてしまうことを防ぐため
  - サーバーメトリクスの表示を有効化
    - 有効化しているサーバーが多いため
  - ランダムなアイコンの生成を無効化
    - ランダムなアイコンはそんなにかわいくないため
- パフォーマンス向上のためアクティブユーザー以外のチャート生成を無効化
  - サードパーティー製クライアントが動かなくなるのを阻止するため API のエンドポイントは残していますが、叩いても `0` が並んだ配列しか返しません。
- 猫語で "nA" を "nYA" に置換しない
  - この置き換えはあまり嬉しくないことが多い
- `reset-db` という API を無効化
  - エンドポイント自体は残してありますが、叩いても何もしません
  - データベースをリセットする API って何?怖すぎる
- ユーザーページでプロフィール画像を選択すると画像を拡大する([Catodon から取り込み](https://codeberg.org/catodon/catodon/commit/a4b74d9b6bd7db56f0a4ce3439c29b9df4b41100))
  - 本家版にもマージリクエストを出しています ([!10659](https://git.joinfirefish.org/firefish/firefish/-/merge_requests/10659))
- 署名アルゴリズムとして ECDSA や Ed25519 なども受け入れる([mei23/misskey-v12 から取り込み](https://github.com/mei23/misskey-v12/commit/b008e1e7169ea7cbb4a49fb1856f8cd838333230))
  - TODO: 本家版にもマージリクエストを出す
- Pleroma のチャットに対応([Catodon から取り込み](https://codeberg.org/catodon/catodon/commit/0ed49d05a98ecb3df938f5558fdfe7011844732f))
  - 本家版にもマージリクエストを出しています ([!10660](https://git.joinfirefish.org/firefish/firefish/-/merge_requests/10660))
- 翻訳機能にて、投稿言語が指定されていない場合にのみ言語の自動検出を用いるように変更
  - TODO: 本家版にもマージリクエストを出す
- 中国語の猫モードでは 0.1 の確率で投稿の末尾に「喵」を追加するように
  - TODO: 様子を見て、良さそうだったら本家版にもマージリクエストを出す
- `emojis` API(Misskey v13- 互換)を追加([firefish-mkdir から取り込み](https://git.mkdir.uk/hiira/firefish-mkdir/commit/e98af2b2a78463bd64393936dbe223127552bff5))
- ログインしていなければ投稿検索ができないように
  - 攻撃対策のため
  - もしこのせいでサードパーティークライアントに不具合が出る場合には変更するかもしれません
- 管理者アカウントも引っ越しできるように
- リアクションの履歴を公開する設定をデフォルトで有効に
  - 私がみんなのリアクションを見たいと思っているため
  - もちろん設定から無効にできます
- 最大 15 件の投稿を固定できるように
	- 5 件は少ないと思ったため
- アンテナにフォロー中のユーザーのホーム投稿も表示する
  - フォロー中のユーザーの投稿は見たいから
- 支援者リストをファイルから読み込む
  - 外部のサーバーが落ちるとユーザーページが開けなくなることを防ぐため
- 閲覧注意の注釈~~と添付ファイルの代替テキスト~~もアンテナで調べる対象にする
  - ~~「そぎぎ」でアンテナを作れる~~
  - TODO: 代替テキストがちゃんと調べられていない気がするので直す ([#q32v3](https://code.naskya.net/decks/4wJQ3/tickets/q32v3))
- インデックス拒否に `noindex` に加えて `nofollow,noarchive,nocache,noimageindex` も指定
- デフォルトの robots.txt の設定を変更し、クローラーを拒否するように
  - joinfirefish と FediDB のクローラーは許可しています

## コンテナイメージの変更点

- ベースイメージに [`docker.io/node:21-slim`](https://hub.docker.com/layers/library/node/21-slim/images/sha256-5a3290b496bb63e1e19d440810a55eea3e004eeda7cc15f75a8b256995e41542) を使用
- イメージのビルドに [buildah](https://github.com/containers/buildah) を使用
  - もし Docker との互換性に問題があったりしたら教えてください
- Rust のリンカーに [mold](https://github.com/rui314/mold) を使用
- `custom` ディレクトリの内容が反映されない不具合を修正
  - TODO: 本家版も修正する

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

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

- iOS で効果音と音楽の再生が干渉する問題を修正([Misskey から取り込み](https://github.com/misskey-dev/misskey/commit/38d6580a36bb6474153536edb50b59376ce16779))
- サーバーの管理者が左下のヘルプメニューに利用規約以外のページも固定できるように
- 絵文字ピッカーに表示されるカスタム絵文字の検索結果の件数を最大 100 件に変更([Misskey から取り込み](https://github.com/misskey-dev/misskey/commit/e11320dbb70bbae0da78975718cc06b440daa6a4))
- 投稿中に表示されるインスタンスティッカーをクリックするとサーバー情報を開くように
- UI 用の言語とは別に、投稿翻訳に使用する言語を設定可能に
  - UI 用の言語は翻訳先の言語の第二候補として使われます(投稿の言語と投稿翻訳先に設定した言語が同じだった場合には UI 用の言語に翻訳されます)
- 投稿言語を自動検出して外国語の投稿に翻訳ボタンを表示する設定を追加
- 繁体中文への投稿翻訳を繁体字で表示する
  - DeepL 翻訳や LibreTranslate は簡体中文への翻訳しか提供していない……。
- 「Firefish について」のページに Misskey の主要な貢献者を表示
  - このソフトウェアは Misskey のフォークであるため
- 閲覧注意の投稿への返信で注釈の先頭に "re:" をつける設定を追加
  - 返信で閲覧注意は維持したいけどそのままの注釈を用いるのには違和感を覚えることがよくあるため
- 猫耳の角を少し丸くする([Misskey から取り込み](https://github.com/misskey-dev/misskey/commit/1a96425768b743cf6a7f93b7813c082152497461))
  - そのほうがかわいいため
- インスタンスティッカーをマウスオーバーしたときに出るソフトウェア名で FoundKey, PeerTube, GNU social, WriteFreely などを正しく表示する