mikutter 5.1の季節がやってきました。
5.0以降ほとんど動きはないですが、リリースしないとまずいレベルで溜まっているのでいい加減リリースします。
プラグインが起動時のサブコマンドを追加できるようになった
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としてリリースします。