Skip to content

Releases: mirute02/limitchecker

limitchecker 0.2.1

Choose a tag to compare

@mirute02 mirute02 released this 20 Sep 15:05

hub を公開ネットワークに置いている場合は、hub 側の更新を優先してください。
接続コードの試行回数の上限が効かない状態でした。

直した不具合

症状 原因
接続コードの試行上限が効かない(セキュリティ) 回数の書き戻しが握り潰されており、pairing.json が読めるが書けない状態だと上限が無効になる。10回外したあと正解が通った。フェイルクローズに変更
Codex の取得が終わらず、子プロセスが溜まる タイムアウトが機能していなかった。readline() がブロックするため締切が評価されない。cron が10分ごとに起動するため蓄積する
横棒の行間が不揃いに見える サービスの区切りを見出しの後ろに入れていたため、見出しが下のグループから切り離されて見えていた
接続を開いたまま放置するとスレッドが残る 受信側にタイムアウトが無かった
install-agent.sh が settings.json の権限を緩める 600 が 644 になっていた。元の権限を引き継ぐように変更
パスに空白があると手順が壊れる 引用の漏れ
macOS で Tailscale のアドレスを引けない launchd の PATH に tailscale が無かった

isdigit() が全角数字を通す点、一時ファイルが 644 で作られる点、
systemd の ReadWritePaths で初回起動が失敗しうる点もあわせて直しました。

追加した機能

  • ウィジェットをタップすると、「あと何時間」と「何時に回復するか」(24時間表記)が切り替わります。 切り替えと同時に残量も更新します

ドキュメント

  • README にスクリーンショットを追加(日本語・英語)

検査

公開前に APK を検査しました。.env と keystore.properties から実際の値を
読み込んで照合する方式です。トークンと署名鍵のパスワードは含まれていません。
一致した3件はループバックの既定値とアプリ名で、秘密ではありません。

検査の途中で、対照試験が 0 件になる欠陥を1つ見つけて直しました。
grep の実体が ugrep で、バイナリに -a を付けないと何も出力せずに
終わるためです。strings を通す方式に変えました。

インストール

limitchecker-0.2.1.apk をダウンロードして開いてください。
0.1.0 / 0.2.0 と同じ鍵で署名しているため、そのまま上書きできます。

hub と agent も更新してください。 上記の修正の多くはそちら側です。

cd limitchecker
git pull
./deploy/install-hub.sh
./deploy/install-agent.sh --status

limitchecker 0.2.0

Choose a tag to compare

@mirute02 mirute02 released this 20 Sep 12:13

0.1.0 で実際に運用したところ、セットアップが最後まで通らない不具合が5件見つかりました。
すべて「設定は合っているのに動かない」型で、利用者側から原因が見えないものでした。
0.1.0 を使っている場合は更新してください。

直した不具合

症状 原因
残量が hub に届かない agent が送信先の判定を二重に持っており、LIMITCHECKER_HUB_URL を書いていないと一度も送信しなかった
設定を変えても反映されない systemctl enable --now は動作中のサービスを再起動しない。hub は .env を起動時にしか読まない
送信確認をすると表示がおかしくなる 確認用の偽データを本番の経路に保存しており、本物の残量を上書きしていた
週次リングが逼迫しても色が変わらない 逼迫色とオレンジの色差が 44 しかなかった(他は 279)。深紅に変更し 149 を確保
Codex の残量が取れない 通信に回避策の要る環境で、ラッパーではなく生のバイナリを起動していた

追加した機能

  • 接続コード — 43文字のトークンを手で写さずに済む。6桁、5分間有効、1回限り
  • install-agent.sh — settings.json への追記と Codex の定期実行を1コマンドで。既存の設定は壊さない
  • install-agent.sh --status — 送信が届くかをその場で試す。残量の値は書き換えない
  • LIMITCHECKER_BIND=tailscale — Tailscale のアドレスを自動で引く
  • 横棒グラフ — 大きいウィジェットで、枠の種類・残量・回復までの時間を並べて表示
  • サービス選択 — ステータスバーと通知に Claude / Codex / 両方 のどれを出すか
  • ステータスバーに4値 — 「両方」のとき、縦棒4本で両サービスの5時間枠と週次枠

見た目の改善

  • 縦積みの配置を等間隔にし、上下の空きをなくした
  • 1×1 まで縮小可能。幅に応じて表示する要素を減らす
  • 専用のアプリアイコン
  • 配色を3種に整理(選択肢を減らした)

ドキュメント

  • 「うまくいかないとき」を追加。実際に踏んだ順に並べてある
  • Tailscale では待ち受けアドレスと接続先 URL が別物であることを明記。
    アプリには MagicDNS 名が必要で、IP では通らない
  • 英語版 README を追加

インストール

limitchecker-0.2.0.apk をダウンロードして開いてください。0.1.0 と同じ鍵で
署名しているため、そのまま上書きできます。

hub と agent も更新してください。 上記の不具合の多くはそちら側です。

cd limitchecker
git pull
./deploy/install-hub.sh
./deploy/install-agent.sh --status

limitchecker 0.1.0

Choose a tag to compare

@mirute02 mirute02 released this 20 Sep 09:53

Claude Code の残量を Android のホーム画面と通知領域で把握するための最初のリリースです。

できること

  • 二重ドーナツのウィジェット。外側が5時間枠、中央が週次枠、中心にリセットまでの時間
  • 通知センターへの常設。ステータスバーには残量の形か数字を出せる
  • ウィジェットは 1×1 まで縮小可能。幅に応じて表示する要素が減る
  • 配色3種、ステータスバー表示4種、背景3種(不透明・半透明・透過)から選択

特徴: 認証情報を持ちません

このアプリは Claude のアカウントにログインしません。API キーも要求しません。
残量は、すでにログイン済みの Claude Code が statusLine に渡す値を使います。

アプリが保持する秘密は、自分で立てた hub のトークン1つだけです。
そのトークンも Android Keystore の鍵で暗号化して保存します。

要求する権限は INTERNET / ACCESS_NETWORK_STATE / POST_NOTIFICATIONS の3つ
(後者2つは WorkManager が追加する3つを除く)。位置情報、ストレージ、連絡先、
アクセシビリティ、電池最適化の除外は要求しません。

使うには hub が必要です

このアプリ単体では動きません。作業マシン(Mac / Linux)で hub を動かす必要があります。

git clone https://github.com/mirute02/limitchecker.git
cd limitchecker
./deploy/install-hub.sh

詳しい手順はアプリ内の「hub の準備手順を表示」か、README を参照してください。

制約

  • 残量は Claude Code が動いているときにしか更新されません。 10分を超えると薄く、
    1時間を超えるとグレーになって「未更新」と表示します。仕様です
  • モデル別の週次枠は取得できません。 statusLine が返すのは5時間枠と週次枠のみです
  • Codex は未対応です。 Codex CLI には、認証情報を読まずに残量を取る経路が
    現時点で存在しないことを実機で確認したため、方針を曲げずに保留としています

インストール

limitchecker-0.1.0.apk をダウンロードして開いてください。提供元不明のアプリの
許可が必要です。SHA-256 は limitchecker-0.1.0.apk.sha256 にあります。

自分でビルドすることもできます(README 参照)。その場合は署名が異なるため、
このリリース版とは共存できません。