mikutter 5.1の季節がやってきました。
5.0以降ほとんど動きはないですが、リリースしないとまずいレベルで溜まっているのでいい加減リリースします。
Mastodonのブックマーク機能 (2024/12/20 追加)

ブックマークデータソースを追加します。抽出タブデータソースの中に、各Mastodonアカウント用のブックマークデータソースが追加されているので、それを含んだ抽出タブを作成することでブックマークの中から新しいものをmikutterで確認できます。
また、mikutterコマンドに「ブックマークする」「ブックマークを解除する」が追加されており、右クリックメニューやショートカットキーでブックマークできます。
mixi2のポスト表示機能 (2024/12/20 追加)

ずっと放置していたmikutterのリリース準備を突然始めたせいで時空が歪み、mixi2がリリースされる世界線と統合されてしまいました。
mixi2の外部APIは公式には存在していないためmixi2 worldを追加することはできませんが、mixi2の投稿パーマリンクが取得できることが分かったので、取れる限りの情報を使ってリンクがはられた時にURL引用として扱われるようにしました。唯一投稿時間だけは取得できなかったので、常に今投稿されたかのように見えてしまいます。
アップデートとは関係ないですがmixi2にmikutterコミュニティを作成しました。以下の招待リンクを使うとmixi2にアカウントを作れる代わりにmikutterコミュニティに参加してしまうようです。
プラグインが起動時のサブコマンドを追加できるようになった
mikutter起動時のコマンドで、引数にサブコマンド名を渡すとmikutterを起動するのではなくone-shotのプログラムを実行し、終了します。
そのようなサブコマンドは、 --help オプションで確認できます。
> ruby mikutter.rb --help
Usage: mikutter.rb [options] [command]
options are:
--debug Debug mode (for development)
--profile Profiling mode (for development)
--skip-version-check Skip library and environment version check
-p, --plugin= Load specified plugins and depended plugins (comma separated)
--confroot= set confroot directory
-d, --daemon
--color Colorize terminal output
--clean delete all caches and duplicated files
-v, --version Show mikutter version
-h, --help Show this message
command are:
generate [plugin_slug] generate plugin template at ~/.mikutter/plugin/
spec [directory] generate plugin spec. ex) mikutter spec ~/.mikutter/plugin/test
makepot generate .pot file all plugins.
plugin commands are:
plugin_depends Output plugin dependencies.
従来は command are: の後に列挙されるものがサブコマンドでしたが、プラグインによって追加されたものが plugin commands are: 以下に新たに列挙されるようになります。
標準のものとプラグインのものでできることは特に変わりません。従来まであった plugin_depends サブコマンドは、 新たな標準プラグイン plugin_depends で提供されるようになりました。
実行方法は変わらず、 ruby mikutter.rb plugin_depends のように実行することができます。
プラグインでサブコマンドを追加する方法については紹介しませんが、 plugin_depends の実装が参考になると思います。
/plugin/plugin_depends - リポジトリ - mikutter - やること
STDERRに出力されるログの改善
RubyのLoggerライブラリを使ってログ出力を行うようにしました。これによって出力内容が変わります。
以下のコードで検証:
notice "test"
5.0以前:
notice: (eval):1:in `block (3 levels) in <top (required)>': test
5.1:
I, [2024-12-15T22:07:56.601656 #254053] INFO -- (eval at {MIKUTTER_DIR}/plugin/console/console.rb:31):1:in `block (3 levels) in <top (required)>': test
また、新たに起動オプション --color が追加されました。
指定すると、上記出力のエラーレベルを表す文字にエラーレベルに応じた色がつきます。

今気づきましたが、Ruby 3.5ではbundled gemになるからGemfileに書いとかなきゃいけないんですね。忘れずにやっておこう。
非公式RT機能を廃止
mikutterコマンド「引用」が削除されました。右クリックメニューや設定のキー割当で「引用」が使えなくなります。
非公式RTとは、mikutterの開発初期のTwitterでユーザー同士がツイートで会話するために慣用されていた記法で、後に実装されるReTweet機能相当であったり、WebやほとんどのTwitterクライアントでリプライ元を表示できなかったことから、文脈のある会話をするために用いられていました。 Fediverseにはもともとリプライなどの機能が備わっていて不要であったこと、「引用」という汎用的な名前のせいで間違って使ってしまい懐かしくなってしまうことなどから廃止しました。
新しいmikutterでも非公式RTを使いたい場合は、以下のプラグインをインストールすると引き続き利用できます。 https://github.com/toshia/legacy_retweet
アカウント情報保存時の暗号化をRubyで実行する
worldの情報はBlowfishで暗号化して保存されていますが、OpenSSL 3ではBlowfishはdeprecatedとなっています。このためworldがアカウント情報を復号化できず、起動できません。 新しめの環境で起動できなくなっていたので、これをRubyで実装して回避しています。
worldの永続化は本気で機密情報を守るためではなく、ローカルディレクトリをgrepした時にこういう情報が生で出てくるのやだなぁというくらいの気持ちでやっていることなので、OpenSSLがdeprecatedとする暗号化アルゴリズムを使うことについては特に問題はないと思っています。安全性を高めたいと考える人は、別の方法で対応してください。
Ruby 3.2以降をサポート
Ruby 3.1は2025年3月31日でサポートが終了します。 mikutter 5.1リリース時点ではまだRuby 3.1のサポートは続いていますが、もうすぐなので3.2を前提にコードを書いています。
書き忘れていること
書き忘れていることです。
試用する
https://mikutter.hachune.net/develop のページ下部に書いてあるGitリポジトリをcloneして、developブランチを使ってください。
バグを見つけた場合の報告は、 https://dev.mikutter.hachune.net よりお願いします。ユーザ登録が必要ですが、報告する予定がなくても通知を受け取るためだけに登録しても大丈夫です。
リリース時期
12月25日の状態を5.1.0としてリリースします。