fish で暮らしていて大体同じことができるなら別に zsh でもいいかと思いつつもイマイチ手を動かさないでいたのだけど、ワンライナーで実行する時のエスケープの挙動で bash とは違う動きでちょっとハマってしまう事象があり、fish 最悪!となったので zsh に戻った。
とりあえず手元にある config.fish を copilot に命じて、zsh を使って fish と config.fish を読み込んだ時とほぼ同じような挙動になるように zshrc を書けと言って出てきたのがこれ。
https://github.com/hsbt/hsbt/blob/master/toolbox/xdg/config/zsh/.zshrc
zsh 単体では fish にある suggest コマンドをぼんやりと表示して選択して実行、というのができないようだったので typo さんから教えてもらった https://github.com/zsh-users/zsh-autosuggestions は手で入れた。
あと zsh は 2026 年にもなって XDG に対応してない最悪な感じだったので ZDOTDIR=/Users/hsbt/.config/zsh というのをシェルではなく macOS のログインシェルレベルで入れるようにして、~/.config/zsh/.zshrc を読み込むようにした。
ここまできて Terminal.app から zsh を起動してみたらびっくりするくらい fish っぽい zsh が起動してエラーもなんもなしという結果だったのでこれで過ごすことにした。最後に tmux.conf のシェルを fish から
set-option -g default-shell /opt/homebrew/bin/zsh
と変更して ghostty を再起動して全て終わり。大変便利。
default gems である win32-registry は fiddle に依存しており、その fiddle は bundled gems なので fiddle をアンインストールすると default gems であるところの win32-registry が動かなくなるのはイマイチ、という話があり、じゃあ全部 bundled gems にしましょうかということでやっておいた。
https://bugs.ruby-lang.org/issues/21855
この辺、昨年のうちに気がつくべきではあったのだろうけど、なんでやってなかったのかもはや記憶がないんだよなあ。本当に秋くらいからは本当にダメで年が明けてからやっとペースが戻ったって感じ。
朝起きてデイリーの mswin ビルドを実行しようとしたら、zoxide の初期化で
Shim: Could not determine if target is a GUI app. Assuming console.
Shim: Could not create process with command '"C:\Users\hsbt\scoop\apps\zoxide\current\zoxide.exe" init --cmd j powershell'.
というエラーが出たので、scoop のなんかが腐ったかな、と scoop update * や scoop reset などを試しても全くダメで、それどころか git がないから scoop を入れ直せ、とか出てきてなんだこりゃとなって調べて gemini が提案する symlink の リモート/ローカルでの有効権限を以下のようにいじってもまるでダメ。
fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
他にも sshd.exe の権限を administrator にしてみるとか、色々やってもダメで GitHub の issue を探してみると preview ビルドの時から踏んでいて、Windows Update で regression がそのまま降ってきたよ、というこれそのものの報告があった。
https://github.com/ScoopInstaller/Scoop/issues/6594
要は Windows Update で ssh 経由のジャンクションポイントの扱いが変わったらしく、それの余波で Scoop が爆死した、ということだった。流石にこれは Windows の方でなんとかしてもらうしかなさそうなので当面は ssh 経由ではなく直接ターミナルなどを開いて頑張ろうと思う。ほんとまいったなー。
いつからか一部のホストに ssh すると以下のような警告が出るようになった。
** WARNING: connection is not using a post-quantum key exchange algorithm.
** This session may be vulnerable to "store now, decrypt later" attacks.
** The server may need to be upgraded. See https://openssh.com/pq.html
警告にある url を見たり、周辺情報を調べてると量子暗号化スイートに対応してないやや古い sshd に接続すると警告が出るらしい。とはいえ、じゃあ sshd をアップデートします、というわけにもいかず OS のバージョンそのものを上げないといけないとかですぐには対応できそうにもないので
Loglevel error
という感じに特定のホストだけログレベルを変えてエラーは無視することにした。サーバーのバージョンアップを頑張ろう。
bundler.io のエントリなど諸々が古いままなんだけど...という issue があり、そりゃまあ誰も面倒見てないからね...という感じだったので重い腰を上げて rubygems.org に migrate し始めた。
まずは blog エントリはただの markdown かつ、サイトの構成を細かくいじる必要が一切ないのでエントリ全部をエイっと移動してから middleman に html の meta refreash で redirect するようにした。この辺、middleman が本当に使いにくいところで、redirect するには index.html でやらないとダメってところなんだよなあ。config.rb とかでサクッとやらせてほしい。
次は guides を引っ越そうとかと思ってるけど、こっちは Directory index 的な表示のところも工夫しないとダメなのでもうちょい考えないとダメそう。guides.rubygems.org もこれはこれでやや古いので頑張らないとなあ。
bundler の lockfile から SBOM を生成するプラグインの bundler-sbom に without で development や test を除外したいんだけど、という issue がきたので copilot に作らせた。
https://github.com/hsbt/bundler-sbom/pull/5
これくらいだとあっさりできてしまうけど、そろそろコードベースがやばい感じになってきてるので copilot ぶん投げでどこまで行けるかなあ。bundler の plugin は引き続き全部を Agent にぶん投げてやっていこうと思う。
rdoc に GEM_HOME が複数あって、それぞれに rdoc がインストールされている、という摩訶不思議環境の時に warning がうるさいのだけど、という issue ができてたので、GEM_HOME を無効にして Ruby インストール時のデフォルトで使われる GEM_HOME から rdoc をアンインストールせよというアドバイスで
$ GEM_HOME= gem uninstall rdoc
というのを伝えたのだけど、実はこれは GEM_HOME のディレクトリを組み立てる時に空文字を使って組み立ててしまってエラーになるのだった。
https://github.com/ruby/rdoc/issues/1609#issuecomment-3918980576
正しくは unset とか set -e を使ってちゃんと消すというのが必要になる。こういうの本当に紛らわしいから最初のやり方でもちゃんと無効化されるようにしてしまっていい気がするんだけど、非互換の提供になってどっかで困る人が出てくるかなあ。うーん。