BoxPistols / BoxPistols/enddayd
実機で確認すること / 決めること(作者の手元でしかできない残り)
- Dominant language
- Shell
- Stars
- 1
- Forks
- 0
- Avg merge
- 1h 31m
- Merged PRs (30d)
- 1
Description
コードは仕上がっていますが、**このツールの中核機能が一度も実機で確認されていません**。テストが見ているのは `/sbin/shutdown` が呼ばれるところまでで、その先はスタブです。
ここに残っているのは、いずれも私(作者)の手元でしか実施できないものだけです。所要は全部で40分程度、うち30分は電源が落ちる確認に使います。
---
## A. メニューの描画確認(3分・非破壊)
**設定画面はこちらで確認済みです。** 画面に出さずにPNGへ落とす道具を用意し、ライト/ダーク両方を見て、見つかった見た目の欠陥(曜日の選択状態が判別できない・フッターの折り返し・箱の幅がバラバラ)は直してあります。手元でも再現できます。
```bash
./menubar/tools/snapshot.sh # menubar/snapshots/ に出る。画面には何も出ません
```
**残っているのはメニューバーのメニューだけです。** これはネイティブUIなので撮れず、人が開いて見るしかありません。
**すでに起動している場合は、先に終了させてください。** 二重起動を防ぐため、古いプロセスが動いていると新しい方は自分で終了します。
```bash
osascript -e 'quit app "Enddayd"' 2>/dev/null || pkill -f 'Enddayd.app/Contents/MacOS/Enddayd'
cd menubar && ./build.sh && open dist/Enddayd.app
```
`/Applications/Enddayd.app` に古い版(0.2.0)が残っています。使わないなら削除するか、確認後に新しいものを上書きしてください。
- [ ] メニュー最下部が **「バージョン0.5.0 (5)」** になっている(古い版を見ていないことの確認)
- [ ] 「本体を入れ直す…」が出ている(同梱と導入済みの中身が違うため)
- [ ] 状態の行が読める。「常駐していません」が**出ていない**こと
- [ ] 「最後に本番で実行」または「本番ではまだ一度も実行されていません」が出ている
- [ ] **メニューの横幅が狭くなっている**(ログ行から当日の日付を落としました。`05:16:41 [DRY] …` の形になっているはず)
- [ ] 「時刻・曜日・レベルを変更…」を開き、閉じてから開き直すと現在値が入っている
- [ ] 「今日だけ調整する」に30 / 60 / 90 / 120分が並び、押すと状態行に「今日だけ: …(明日には戻ります)」が出る
崩れている箇所があれば、スクリーンショットを貼ってください。
## B. 本体の入れ直し(2分)
`/usr/local/bin/enddayd.sh` が今日の変更より古い状態です。Aで出る「本体を入れ直す…」から、または次で更新します。
```bash
sudo ./enddayd.sh install
```
- [ ] 実行後の表示が **「入れ直しました(ドライランのまま:まだ終了しません)」** になっている
- [ ] `sudo ./enddayd.sh status` の「モード」がドライランのまま変わっていない
> `install` は現在のモードを保つようにしました(以前は無条件でドライランへ戻していました)。本番で使っている環境を更新しても勝手に無効化されません。ここはその確認も兼ねています。
## D. 実機での通し確認(30分・**途中で電源が落ちます**)
手順は [`docs/verify-on-device.md`](https://github.com/BoxPistols/enddayd/blob/main/docs/verify-on-device.md) にあります。**始める前に保存していない作業をすべて閉じてください。**
逃げ道は3つあります。どれでも止まります。
- メニューの**「止める(電源を落とさなくする)」**
- メニューの**「今日だけ調整する」→「今日はレベルをnotifyにする」**
- ターミナル: `sudo touch /etc/enddayd.dryrun`(強制終了の10秒前にアラートが出るので、その間に打てます)
**すべてメニューから操作できます。** CLIが要るのは、途中で緊急停止したいときだけです。
- [ ] **D-1自動化の許可** — システム設定 → プライバシーとセキュリティ → 自動化 で許可を外す → メニューの**「通しで確認(リハーサル)」**。許可ダイアログが出るか、メニューに「「自動化」の許可がありません」が出るかを見る
- [ ] **D-2本番で落とす** — メニューの**「時刻・曜日・レベルを変更…」**で4段階を数分後に設定して保存 → **「動かす(本番に切り替える)…」**。実際に電源が落ちるか
- [ ] **D-3猶予の内側で再起動** — D-2で落ちた直後に電源を入れ、もう一度落ちるか
- [ ] 終わったら「時刻・曜日・レベルを変更…」で普段の時刻に戻す
### Dで特に見てほしいこと
D-1で **ダイアログが出ないまま失敗した場合、ログが `automation denied` になっているか**を必ず確認してください。なっていなければ検出そのものが効いていません(許可なしでも `osascript` が0を返している可能性があり、その場合は判定方法を変える必要があります)。
## E. 決めてほしいこと(2件)
コードではなく仕様の判断なので、こちらでは決められません。
- [ ] **E-1日をまたぐ猶予に対応するか** — 金曜23:55の猶予が土曜に伸びたとき、土曜が対象外なら発火しないのが正しいのか、金曜の続きとして発火すべきか。現状は警告を出すだけで、対応はしていません
- [ ] **E-2導入経路に本物を通すテストを入れるか** — rootで走るCIが要ります。「本物と差し替えたスタブが通っただけになりやすい」という懸念は残るので、費用対効果の判断です
## F. 記事の公開(任意)
- [ ] `docs/zenn-article.md` を公開するか決める(実装との食い違いは解消済み)
---
## 済んでいること(参考)
| | |
| --- | --- |
| テスト | bats 65件 / Swift 49件、すべて通過 |
| CI | lint / test(ubuntu)/ macosの3ジョブsuccess |
| 静的検査 | `shellcheck` 指摘なし、`/bin/bash -n`(3.2)通過、Swift 6言語モードの型検査通過、ビルド警告0 |
| 未対応の課題 | 10件 → 7件(実機待ち3 / やらないと決めた2 / 判断待ち2)。詳細は [`docs/known-issues.md`](https://github.com/BoxPistols/enddayd/blob/main/docs/known-issues.md) |
Dが終われば実機待ち3件が閉じ、Eが決まれば判断待ち2件が閉じます。残るのは「やらないと決めた2件」(GUIが無いときのアラート/Windows実装)だけになります。
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with docs/verify-on-device.md, then build from menubar with ./build.sh and review the listed menu checks, installation checks, and destructive device tests. Done means the on-device checklist is completed, the automation-denied behavior is verified, and the two specification decisions in E-1 and E-2 are recorded.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, shell, swift
- Domain
- desktop, operating-systems, testing
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 15/100