Releases: Liplus-Project/dipper_ai
Releases · Liplus-Project/dipper_ai
Release list
v1.6.0
v1.5.0
Breaking Change
systemd oneshot+timer → 常駐デーモン方式へ変更
DDNS_TIME と UPDATE_TIME が任意の組み合わせで正しく動作するよう、アーキテクチャを変更しました。
インストール済みの場合は install.sh を再実行してください。
旧タイマーユニット(dipper_ai.timer)は install.sh が自動削除します。
変更内容
dipper_ai daemonコマンドで常駐起動(systemd が lifecycle 管理)- 2本の goroutine ticker が DDNS_TIME / UPDATE_TIME を独立管理
dipper_ai keepaliveコマンドを追加(手動 keepalive 用)systemd/dipper_ai.service: Type=simple、Restart=on-failuresystemd/dipper_ai.timer削除scripts/install.sh大幅シンプル化
v1.4.1
Changes
- feat(config): suffix duration format for time-gate keys (#51)
- Accepted formats:
1d,2h,5m,30s, plain integer (minutes, backward-compatible) - install.sh: systemd timer interval parsed from DDNS_TIME with same format
- Negative values are silently clamped to the configured minimum
- Accepted formats:
- fix(config): treat negative durations as below-minimum rather than error
v1.4.0 — check モード acceptance テスト・バイナリ DNS/IP 注入機構
変更内容
テスト強化
- check モードのバイナリ受入テスト追加 (#48, #20)
DIPPER_AI_FAKE_IP_V4/V6: IP 取得結果を固定(dig 不要)DIPPER_AI_FAKE_DNS: DNS ルックアップ結果を注入(domain=ip,...形式)- 新テスト:
TestBinary_Check_AllMatch_SilentExit— 全一致 → exit 0 / 無音TestBinary_Check_Mismatch_TriggersUpdate— 不整合 → ローカルサーバーに更新発火TestBinary_Check_PartialMismatch_OnlyStaleUpdated— 部分不整合 → 該当ドメインのみ更新
これらの環境変数は テスト専用。本番環境では設定しないこと。
アップデート手順
cd dipper_ai
git pull
go build -o dipper_ai ./cmd/dipper_ai
sudo bash scripts/install.shv1.3.3 — 無更新時のログを無音化
v1.3.2 — DDNS_TIME に連動した systemd タイマー間隔設定
変更内容
バグ修正 / 仕様実装
- install.sh: DDNS_TIME に合わせて systemd タイマー間隔を動的設定 (#36, #42)
- 以前は
OnUnitActiveSec=5minが固定値のため、DDNS_TIME=1等の設定が実際の動作に反映されなかった。 install.shがuser.confからDDNS_TIMEを読み取り、systemd タイマーのOnUnitActiveSecを自動的に設定するよう変更。DDNS_TIME=0(無効/デフォルト)の場合は 5 分をフォールバックとして使用。
- 以前は
ドキュメント更新
docs/Installation.mdにDDNS_TIMEとタイマー間隔の対応を追記。
アップデート手順
cd dipper_ai
git pull
go build -o dipper_ai ./cmd/dipper_ai
sudo bash scripts/install.sh
DDNS_TIMEを変更した場合もsudo bash scripts/install.shを再実行することでタイマー間隔が更新されます。
v1.3.1 — check: ミスマッチドメインのみ DDNS 更新
変更内容
バグ修正
- check モード: 一部ドメインの DNS 不整合で全ドメインが更新される問題を修正 (#40, #41)
- 以前は
checkでいずれか 1 ドメインが不整合だった場合、全ドメインのキャッシュがリセットされ、変更のないドメインにも DDNS API リクエストが送られていた。 - DNS 不整合が確認されたドメインのみキャッシュをリセット。正常なドメインは
Update()がスキップする。
- 以前は
アップデート手順
cd dipper_ai
git pull
go build -o dipper_ai ./cmd/dipper_ai
sudo bash scripts/install.shv1.3.0 — check ゲート削除・DNS 検証を毎回実行
変更内容
バグ修正
- check モード: DNS 検証ゲートを削除 (#38, #39)
- 以前は
UPDATE_TIME(デフォルト 1440 分)を check ゲートとして流用していたため、DNS レコードを手動で変更しても最大 1 日間修正されなかった。 - ゲートを廃止し、systemd タイマー(5 分間隔)がレート制限の役割を担う。
- これにより DNS レコードの不整合は次回タイマー起動時(最大 5 分以内)に検出・修正される。
- 以前は
テスト
- acceptance テスト
TestBinary_Check_GatedExitZeroをTestBinary_Check_NoProviders_ExitZeroに置き換え(ゲートが存在しないため)
アップデート手順
cd dipper_ai
git pull
go build -o dipper_ai ./cmd/dipper_ai
sudo bash scripts/install.shv1.2.0 — per-domain IP cache + MyDNS-only keepalive
変更内容
リファクタリング: per-domain IP キャッシュ設計 (issue #32)
internal/state/state.go
ReadDomainCache/WriteDomainCache/ResetDomainCacheを追加- プロバイダ×ドメイン単位でキャッシュ管理(
cache_mydns_0_ipv4等)
internal/mode/update.go
- DDNS_TIME: 全体レートリミッター(0=無制限)
- UPDATE_TIME: MyDNS keepalive ゲート(MyDNS のみ適用)
- Cloudflare: keepalive なし — IP 変化時のみ更新
- 変更があったドメインのみ DDNS 更新(per-domain)
anyIPChange/anyKeepAliveを個別追跡してメール通知に反映
internal/mode/check.go
- DNS ミスマッチ検出時に per-domain キャッシュをリセット
gate_ddns削除で Update() の DDNS_TIME 遮断を回避
破壊的変更
ip_ipv4/ip_ipv6グローバル IP キャッシュを廃止、cache_*per-domain キャッシュに移行- 既存の
state/ディレクトリはそのまま利用可能(初回実行時に自動再構築)
v1.1.1 — DDNS_TIME デフォルト修正
バグ修正
DDNS_TIME デフォルト値を 0 に変更
IP が変化していないのに毎回 DDNS 更新が走る問題を修正。
変更前: DDNS_TIME 未設定 → 1分ごとにキープアライブ(IP変化なしでも毎回更新)
変更後: DDNS_TIME 未設定(= 0) → IP変化時のみ更新
MyDNS のような定期 keepalive が必要なサービスを使う場合は user.conf で明示設定してください:
DDNS_TIME=60 # 60分ごとにキープアライブ