Skip to content

gpget v0.2.0

Choose a tag to compare

@yager yager released this 05 Sep 22:26
· 24 commits to main since this release

v0.1.0 をお使いの方は、この版に上げてください。
v0.1.0 には、macOS と Windows のそれぞれに、自動起動まわりの重いバグがあります。

  • macOS: 通知の許可が一度も求められないまま「拒否」で固定される。
    転送は動きますが、終わったことが分かりません
  • Windows: 自動起動の登録が失敗しているのに「登録しました」と表示される。
    自動起動がまったく動きません
  • Linux: この版での変更はありません(自動起動は引き続き未検証です)

直したこと

macOS: 通知の許可が一度も出せなかった

v0.1.0 では、.app を ~/Library/Application Support に置いていました。
macOS はここを Launch Services のデータベースに載せないため、通知の担当プロセス
(usernoted)が「このプロセスがそのバンドル ID を名乗ってよいか」を検証できず、
許可のプロンプトを一度も出さないまま拒否していました。しかもその拒否は残るので、
以後は二度と聞かれません。

.app の置き場所を ~/Applications/gpget.app に変えました。ここは
Launch Services が自動で見る場所なので、普通のアプリと同じように許可を聞かれます。

あわせて、通知の許可の求められ方が分かりにくいことも分かりました。
macOS はこれをダイアログではなく、画面右上のバナーで聞いてきます。

  • タイトルが「gpget」、本文が「テキスト、サウンド、アイコンバッジにより通知されます」だけ
  • 許可は**バナー右下の「オプション」→「許可」**からしか出せない
  • バナー本体をクリックすると設定画面が開くだけで、許可にはならない
  • 60 秒で消え、放置すると「拒否」として記録される

gpget autostart install の出力で、この見た目と押し方を先に案内するようにしました。

macOS: install が「テスト通知を送りました」と嘘をついていた

通知の許可が無いとき、gpget は osascript に切り替えて送っていました。これは
macOS がほぼ確実に握りつぶす経路ですが、install は成功と表示していました。
許可が無いユーザーに「大丈夫です」と伝えていたことになります。
どの経路で通ったかを見るようにして、許可が無いときはそう表示します。

Windows: 自動起動の登録が無言で失敗していた

gpget autostart install が「登録しました」と出すのに、直後の
gpget autostart status が disabled を返す、という報告への対応です。
タスクの繰り返し期間にタスクスケジューラのスキーマが受け付けない値を渡しており、
かつ PowerShell 側でエラーを検出していなかったため、失敗が成功として報告されて
いました。タスク XML を直接渡す方式に変え、登録後に存在確認するようにしました。

タスクが毎分コンソール窓を一瞬出す問題も、同時に直しています。

その他

  • gpget autostart test-notify を .app の外から実行するとクラッシュしていた
  • README にアップデートとアンインストールの手順を追加(これまで無かった)
  • gpget autostart status が、実際に使われている .app の場所を表示するように

上げるときにやること

1. バイナリを入れ替える(インストールと同じコマンド。README 参照)

2. 自動起動を使っているなら、install をやり直す(macOS / Windows とも必須)

gpget autostart install
gpget autostart status
  • macOS: .app の置き場所が変わったため。status の app: 行が
    ~/Applications/gpget.app を指していれば移行できています
  • Windows: v0.1.0 では登録自体が失敗していたため、やり直しが要ります。
    status が enabled を返せば成功です。v0.1.0 では disabled が返っていました
  • Linux: 変更はありませんが、やり直しても害はありません

3. macOS で v0.1.0 を使っていた方は、通知を手で ON にしてください

システム設定 > 通知 > gpget

上げても通知の許可は聞かれません。 拒否はバンドル ID に紐づいて記録されており、
アプリ側から解除する手段がないためです。お手数ですが手動でお願いします。
ON にしたあと、こちらで確認できます:

"$HOME/Applications/gpget.app/Contents/MacOS/gpget" autostart test-notify

設定と、取り込み済みのファイルには影響しません。

検証状況

macOS(Apple Silicon / macOS 15 以降)は実機で検証済みです。
通知の許可については、使い捨てのバンドルを 13 本作って挙動を実測し、
初回インストールから許可・通知までの流れを通しで確認しています。

Windows の修正は実機で確認できていません。 報告された症状の原因は特定し、
Register-ScheduledTask の失敗を検出するようにしましたが、Windows 実機での
end-to-end は未実施です。Linux も未検証のままです。

試していただける方は docs/testing.md(英語) / docs/testing.ja.md(日本語) に
手順と報告方法をまとめてあります。うまくいかなかった報告も歓迎します。

注意

バージョンが 0.x の間は、コマンドの形や設定ファイルの項目が変わることがあります。