mikutter blog

mikutterのアナウンスなど

mikutter 5.1の新機能

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に出力されるログの改善

RubyLoggerライブラリを使ってログ出力を行うようにしました。これによって出力内容が変わります。

以下のコードで検証:

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 が追加されました。 指定すると、上記出力のエラーレベルを表す文字にエラーレベルに応じた色がつきます。

INFOの右側の肌色の部分は、私がターミナルの背景にしている初音ミクのふとももです

今気づきましたが、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としてリリースします。