adiary置き換え計画始動から連なる、Lyndbaum v4.43アップデートの続き。怒涛の一日二回更新。なんか前にも見た気がするな…?

v4.43は二日がかりで実装したが、今回は半日くらいなのでまぁ…。基本的にはv4.43で出たバグ対応が中心だが、ついでに機能改善もしている。

バグ対応

lyndbaumテーマで、サイドバーを開くボタンの位置がv4.43の変更で壊れていたのを修正

2カラムテーマを追加した影響で2カラムテーマ側の位置オフセットが3カラムテーマ側にもかかっており、二重にオフセットされていた関係でずれていたのを修正した。

編集画面で本文に((を入力するとフリーズする問題を修正

正規表現の書き方が悪く((の後に50文字あると処理が数年終わらない次元になっていた。ReDoS的なやつ。正規表現を直して対応した。

Markdown記法ヘルパーの見出しボタンでシャープの後ろに半角スペースが入らない問題を対応

adiary時代からある不具合。手打ちしたほうが早いため使うことはないのだが、画面上存在しており、消すのも微妙な存在なので対応した。

H2, H3...みたいにレベルを増やすのは画面にボタンが増えすぎる、セレクトボックスにすると邪魔などの問題で対応しなかった。

本文を検索できない問題の対応+αで検索機能の強化

Lyndbaum v4.42アップデートで入れた長文だとIMEがまともに動かない問題の対策の副作用で、Ctrl+Fを使った本文の検索ができなくなっていたため、これを出来るようにした。

具体的にはCodeMirrorは表示領域以外を隠すことで軽量化しているため、CodeMirror組み込みの検索機能を入れて対応した。

標準でわけわからんほど高機能なCodeMirrorの検索機能

標準でかなり豪華な検索機能だったので、非常に優秀な検索機能と、更に置換機能までもが手に入った。エディタにフォーカスがあるときにCtrl+FやF3すると起動するため、使い勝手は結構いい。

機能改善

なんか追加とか変更ってよくわからないから改善でまとめたほうがいいんじゃないかなとか…。

記法ヘルパーのボタンで出る入力のダイアログを開いたら、最初の入力欄にフォーカスするようにした

変更前 変更後
入力欄にフォーカスがなかった 入力欄にフォーカスが入るようにした

変更前は入力欄にフォーカスがかかっておらず、わざわざクリックする必要があったが、開いたときに自動で最初の入力要素にフォーカスするようにした。

<div>実装だったためついでに<dialog>にしようと考えたが、Opus 5.5先生に<dialog>は最も最初の要素にTabIndexが貼られ、閉じるボタンにフォーカスが入るのでハンドリングコストが重いと告げられ考えるのをやめた。

記法ヘルパーのリンクで、最初から入っているhttp://をhttps://にした

いまどきhttp://は零細企業か何も考えてないか妙なこだわりのある個人サイトや、放置サイトくらいでしか存在しないと思うので標準でhttps://に変えた。

ブランクにしたり、https://+全選択でコピペ上書できるような配慮も考えたが、手打ちしたほうが早くなるようにする機能を入れたため、凝った作りにはせず単にプレースホルダの初期値だけを変えた。

編集画面でMarkdownモードの時に入力補助機能を追加

簡単なMarkdownエディタレベルの入力補助を入れているので大分快適だと思う。

Markdownモード以外では動かないと思うが確認はしていない。ここは私がすべて手動で動作確認している。

以降の説明では¦の部分にキャレットが入る想定で書いている。

ショートカットキー

文字列選択時は選択した文字列を記法で囲み、文字列選択状態となり、キャレットは出ない(←→を押すと選択文字列の始端ないし終端に移動する)

Key Syntax
Ctrl+B **¦**
Ctrl+I *¦*
Ctrl+K [¦]()

取り消し線のショートカットキーは作っていない。これはCtrl+DもCtrl+Sもブラウザのキーバインドに干渉するためだ。まぁ作る作らない以前にCodeMirrorの標準機能をそのまま使っているだけだが…w

文字列を選択してURLペースト

[文字列](ペーストしたURL)¦

相対パスや記事IDなど、URL形式でないものは手動で入力する必要がある

自動カッコ入力

かっこを入力すると対のかっこが入る

  • (→(¦)
  • ((→((¦))
  • [→[¦]

<(「のようにMarkdownに存在しないものは対象外。

バックスペースを使ってかっこの内側からかっこを削除すると対になったかっこも消える。消したくない場合はかっこの外側から消せば片方だけが残る。

リストぶら下げ

バレットリストや数字リストを打つとエンター時にぶら下がる。

数字リストの自動調整

初期状態

1. a
2. a¦
3. a
4. a

バックスペースを一度押下

1. a
2. ¦
3. a
4. a

バックスペースを一度押下(. のスペースが消える、後続の項番が自動調整される)

1. a
  ¦
2. a
3. a

リストぶら下げ文字列入力一行目(後続の項番が自動調整されない)

1. a
  b¦
2. a
3. a

リストぶら下げ改行入力二行目(オートインデントされ、後続の項番が自動調整されない)

1. a
  b
  ¦
2. a
3. a

リストぶら下げ文字列入力二行目(後続の項番が自動調整されない)

1. a
  b
  b¦
2. a
3. a

リストぶら下げ改行入力三行目(オートインデントされ、後続の項番が自動調整されない)

1. a
  b
  b
  ¦
2. a
3. a

リストぶら下げ文字列入力三行目(後続の項番が自動調整されない)

1. a
  b
  b
  b¦
2. a
3. a

システムチェックに、OSの名前とバージョンを出すようにした

このシステムを使ってバグ報告を上げてくる人がどれほどいるかはわからないがDebianとRHELではアドバイスすることも変わるので出すことにした。UbuntuとFreeBSDでは表示できることを確認している。

Busyboxで出るかどうかは環境構築が面倒なので確認していない。Busyboxで動かないって報告が来たら考えるかも…。

既知の不具合

Android Edge或いはChromeで編集画面の記事本文を全選択した後にコピーなどの操作ができない

CodeMirrorはどうもスマホ対応が微妙らしく、掲題の環境で編集画面の記事本文を全選択するまではいけるのだが、ここでコンテキストメニューが切れてしまい、次の操作に繋げることができない状態になっている。

ここをどうにかするにはCodeMirror本体を改造するか、同等機能を持ったライブラリを自作する以外に道はなさそうだ…。

あとがき

はてさて、わずか半日でv4.43リリースから7時間で、アップデート記事の見出し行数で、15行も変更を重ねてしまう、謎バージョンが爆誕してしまった。

Ver リリース記事の
変更関連見出し行数
v4.43 39
v4.34 30
v4.17 23
v4.19 19
v4.44 15
v4.26 15
v4.22 14
v4.36 9
v4.20 6
v4.37 6
v4.42 5
v4.39 4
v4.40 3
v4.35 1

前回、v4.43のあとがきに本当に落ち着かせていきたいとか書いたのはいったい何だったのか…という感じだが、今回はあくまでバグ対応してたらなんかわきから生えてきた感じなので、今度こそは落ち着くんじゃないかな!?

GitHubにはまだパンドラの箱が眠っているのかもしれない…

GitHubのIssueにはまだなんか不穏な爆弾が見えるが、破壊的変更は多分起きないので、のんびりやれる奴だと思う。恐らく、きっと。

というか私はLyndbaum開発以外にもMastodonの改造や、Lyndbaumをベースにしたアクセス解析(それは何?)だったり、作りたいものが他にもあるし、何よりリアルが割と火の車というか、ヤバな状況なので、そっちも片をつけないといけないとかで、こればっかりに注力しているわけにもいかないという事情があるので、そろそろ本当に落ち着かせていかないといけないのである。

というかブログを快適に書くために開発しているのに肝心の更新がリリース情報ばかりというのも何ともである。いや、リリース情報はすごく書きやすいんだけど!

あとはちょっとまだまとめ切れていないが、Lyndbaumの開発で、なぜこうなっているのかみたいな知見が色々得られたのは非常にいいことだった。

例えばPrism.jsがやってることをサーバーサイドでやるとJS読み込みやCLSはなくなるけど、その分クソデカHTMLが降ってくるから総合的に見るとよくないとか、CSSの@import()はCSSが読まれた後に追加でHTTPリクエストを飛ばすのでPageSpeed Insightsのパフォーマンススコアに影響するとか、他にもレンタルサーバーではサブドメインから攻撃ができるとか、様々な知見を溜めることができた。

コミットメッセージやらIssue、PRの本文、仕様書や、このブログの過去ログとかその辺にこういった情報をちりばめてきた気がするので、そのうち気力と時間と機会があれば、それらをまとめて書いていきたいと思う。気を使わないといけない部分はかなりあるし、LLMの使い方も仕事で使うよりはるかに磨けたような気がしている。

ブログは使いやすくなるし、それどこか新システムの基盤になりそうだし、Web開発の知識は増えるし、地味に人との関わりも増えるし、Lyndbaumの開発は本当にいいことづくめである。

僅か一日強でPro換算も105%消費してしまったClaudeの使用量画面

Claudeの使用量は土曜のリセットから25時間半で21%にも達してしまい、Pro換算だと105%で超過してしまっている。とはいえ朝から2%しか伸びてないので大体v4.43のせいである。開発は起きてる間しか動かしてないのでいわゆるループエンジニアリングはしておらず、基本張り付いて動きを見てリアルタイムレビューしつつ、なんか動きがあかんかったら即停止からの、指示のやり直し、方向転換みたいなことをしている。