Rectangle v0.97からv0.99まで:最新アップデートの全変更点

v0.95とv0.96で取り上げた変更点に続き、ここではその後の3つのリリースで実際に何が実装されたのかを、記憶を頼りにまとめるのではなく、プロジェクト自身のリリースノートに直接基づいて確認する。古いビルドを使っているなら、これが自分が見逃している内容だ。

v0.97

  • screensOrderedByXの並び替えの調整。計算にディスプレイの水平方向の中点(midX)を使うようになった ― このシリーズの他の記事で扱ったマルチモニターのディスプレイ並び順ロジックの改良で、単純ではないモニター配置において「次/前のディスプレイ」の挙動をより予測しやすくすることを狙っている。
  • Smaller/Largerコマンドのスナップ解除復元を無効化するデフォルト設定。スナップされたウィンドウでMake SmallerやMake Largerを使ったときに、Restoreに近い挙動が自動的に発動するかどうかを制御できるようになった。
  • 設定画面に直接追加された「Skip gap on top screen edge」チェックボックス。画面上端で余白設定が一貫しない挙動をするという具体的な不満に対応するもので、ピクセル精度に関する不満を扱った専用記事で取り上げた上端の余白問題と関連はあるが、必ずしも同じ根本原因とは限らない。
  • 半分割の比率が角のアクションとスナップ領域に一貫して適用されるようになった。単純な画面半分のアクションと、角やスナップ領域のアクションが、本来同一であるはずの境界について、以前はわずかに異なる分割ポイントを計算してしまうケースを修正した。
  • 隙間を残す代わりにclampedウィンドウをスナップ端に固定しclampedウィンドウをデフォルトでスナップ端に揃えるようになった。これは、最小ウィンドウサイズを強制するDiscordやSpotifyのようなアプリを扱った記事でより詳しく説明している修正で、計算上のフルサイズに達することができないウィンドウが、端にぴったり押し付けられるのではなく、望まない隙間を残したまま浮いた状態になっていた問題への対応だ。
  • 「Cooperative Window Resizer」機能。clampedウィンドウの修正と合わせて提供された。
  • ウィンドウIDが取得できない場合でもウィンドウアクションを実行するようになった。通常の経路でRectangleがウィンドウのIDを解決できなかった場合に、以前はアクションが何も起こらなかったという特定の内部的な失敗モードに対する堅牢性の修正だ。
  • Snap Area環境設定タブの読み込みが遅い問題のパフォーマンス修正。

v0.98

狭い範囲の、単一目的のリリースだ。サイド系アクション(左/右/上/下半分)の分割比率が、v0.97より前はきっかり1/2から始まっていたのに、それが崩れてしまったリグレッション(退行)を修正している。これは、十分にテストされたオープンソースプロジェクトであっても、あるリリースで加えた修正が次のリリースで追加の修正を必要とすることがある、という良い教訓だ ― v0.97での分割比率の一貫性に関する作業がまさにこのリグレッションを引き起こし、v0.98はそれを修正するためだけに存在する。

v0.99

3つの中で最も規模が大きく、複数の初参加のコントリビューターからの貢献が含まれている。

  • 最大化されたウィンドウを別のディスプレイに移動する際にウィンドウサイズを保持する設定トグル。それまでは、「次/前のディスプレイ」を使って最大化されたウィンドウを別のディスプレイに移動すると、おそらくそのディスプレイの全体サイズにリサイズされていた。この設定によって、代わりに元のサイズを保持できるようになる。
  • 重なったウィンドウのためのホバーバッジとスイッチャー。v0.96のオーバーラップオフセット機能の直接の続編であり、その機能を扱った専用記事で詳しく説明している。これは、以前のオーバーラップオフセットのPRをマージした際にメンテナーが言及していた「ホバーカウントバッジ」というアイデアが、実際に形になったものだ。
  • ユーザーセッションの切り替え後もショートカットを復元するようになった。Macを別のユーザーセッションに切り替えてから戻ってきたときにショートカットが失われてしまう問題の修正だ。
  • ショートカットの記録中にTodoのショートカットが発動しないようにした。新しいカスタムショートカットを記録しようとしたときに、誤ってTodo Modeのアクションが発動してしまうという意図しない相互作用を止めるものだ。
  • ActiveEventMonitor.stop()内でイベントタップのCFMachPortを無効化するようにした。Rectangle appがシステムイベントをどう監視しているかに関する、より低レベルの技術的な修正で、ユーザーから見える挙動の変化というより、特定の種類のリソース処理に関する問題を防ぐことを狙ったものだ。
  • 0を指定することで最小ウィンドウサイズの制限を無効化できるようにした。これはRectangle自身が課している最小サイズの適用について、より直接的な制御を与えるものであり、他の記事で扱っている個々のアプリ自身が課す最小サイズ(Discord/Spotifyのような制約)とは別物で、そちらは引き続きRectangleが上書きすることはできない。
  • 設定をインポートする際に省略されたショートカットをクリアし現在のデフォルトを復元する際にショートカットを再適用するようにした。これは関連する2つの修正で、保存済みの設定をインポートしたり、デフォルトにリセットしたりする際に、新しい設定に存在しないショートカットの扱い方に関するものであり、以前のセットアップから残ったキー割り当てが予期せず残り続けないようにする。
  • 「smaller」で、縦方向に最大化されたウィンドウの高さを縮められるようにした。Make Smallerアクションを拡張し、特に高さ方向に最大化されたウィンドウを正しく扱えるようにしたものだ。
  • 別のディスプレイに移動する際にウィンドウの相対的な位置を保持するようにした。サイズの異なるディスプレイ間でウィンドウを移動したときに、新しいディスプレイ上のデフォルト位置にリセットするのではなく、比例的な配置を一貫して保つ。
  • JSONDefaultキーに対するdefaults writeによるカスタマイズを尊重するようにした。ターミナル経由のカスタマイズが、Rectangle mac自身のJSONデフォルト値に組み込まれた値によって黙って上書きされないようにする修正だ。
  • 高さが4で割り切れないディスプレイにおける、縦向きの8分割スナップの隙間をなくした。縦向きのモニターにおけるディスプレイの高さと8分割グリッドの特定の組み合わせに対する、狭いながらも具体的なピクセル精度の修正だ。
  • オーバーラップオフセットのスキャン範囲を制限し、最大化されたウィンドウにもオフセットを適用するようにした。v0.96のオーバーラップオフセット機能(専用記事で扱っている)を拡張し、最大化されたウィンドウにも適用されるようにしたもので、検出スキャンが不必要に広い範囲で実行されないよう制限も加えられている。
  • 小さなインターフェースの変更として、Generalタブの「…」ボタンに、それまでラベルがなかったのに対し、「Extras」というラベルが付くようになった。

このアップデートのペースが示すもの

比較的短い間隔で3つのリリースが続き、そのうち複数に初参加の外部コントリビューターが関わっているというのは、古いコードベースにあぐらをかいているプロジェクトではなく、活発にメンテナンスされているプロジェクトであることを示す妥当なシグナルだ。特定のピクセル精度やマルチモニターの問題をトラブルシューティングしていて、1年以上前の、未解決のように見える古い報告を見つけたなら、その挙動が恒久的なものだと決めつける前に、上で挙げた具体的な修正のどれか ― 半分割比率の一貫性、clampedウィンドウの固定、ディスプレイ間での相対位置の保持など ― がすでにそれを解決していないか確認する価値がある。

自分のバージョンをこのリストと照らし合わせる

Rectangle appのメニューバーアイコンを開き、About(Optionキーを押さない状態)で現在のバージョン番号を確認する。そのうえでGitHubのReleasesページと比較して、ここで説明した修正のどれかが自分に欠けていないか、そしてこの記事が書かれてから何がリリースされたかを確認しよう。