[2026-11-07] SatBox_Ver0.1.1d-beta: PC・Webの無線機／TS-2000通信速度保存を共通化
対象: Settings.cpp/h / SerialConfig.cpp / WebPage.cpp / SettingsBackup.cpp / SettingsBackupFormat.cpp / software/SatBox_Settings.py / software/dist/SatBox_Settings.exe / tests/test_pc_radio_settings.py / tests/test_ts2000_stage1.py / tests/test_ts2000_stage1_storage_web.py / tests/tests_settings_backup/fixtures/test.cpp / Documents/TS2000_Implementation_Notes_JP.md・EN.md
新規: tests/test_radio_shared_save.py
変更: TS-2000の4800／9600／19200／38400／57600bps（初期9600）をWebとPCから本体のsatbox-radio/configへ保存。WebのTS速度欄を有効化し、PC LOAD/SAVEで速度を同期・照合する。保存ID0/1/2/3と既存機種プロファイル・ICOM接続方式は維持。NVS版4（36バイト）で旧版1/2/3を読み継ぐ。シリアル設定通信版4／RADIOSAVE4へ拡張し、旧形式の更新ではTSプロファイルを保持。新PCで旧本体へのTS保存は設定書込み前に拒否。
一括設定: 無線機36バイトをダウンロード・復元対象へ追加し、旧20/32バイトも受付。不正TS速度は復元前に拒否。
検証: PC回帰12件、実PCシリアル化→実SerialConfig→実Web保存ハンドラー→実NVS→PC読戻し、5速度、旧設定移行、無効入力・保存失敗・旧形式更新時保持を確認。実Webスクリプトの表示順と5速度送信、版4バックアップの復元・失敗・中断時復旧も成功。PC PyInstaller EXE生成成功。
中間ビルド: core 3.3.8、esp32:esp32:esp32s3:PartitionScheme=huge_app。xtensa-esp32s3-elf-g++.exeのIllegal System DLL Relocationで起動時に失敗。新しいアプリケーション.binは生成していない。実機書込み・通信未実施。
範囲: TS-2000のCAT制御・USB通信設定・RTS/CTS・JTDX/Proxyは未実装。今回の変更は設定選択・本体保存まで。共通ドップラー・OFFSET・追尾・SQ・既存Proxyは変更なし。中間コンパイル成功前にCAT実装へ進まない。
コピー: 元ファイルは両版のbackupへ個別保存し、新規・変更ファイルを同一相対パスで通常版へコピーして内容照合。

[2026-11-07] SatBox_Ver0.1.1d-beta: 標高m・ホスト名.localを入力欄の直右へ配置
対象: software/SatBox_Settings.py / software/dist/SatBox_Settings.exe
変更: 単位・接尾辞付き入力欄はEntryとラベルを同じFrameにまとめ、BOX右側5pxの余白に配置。他の列幅から独立させた。通常欄とパスワード表示、entries辞書の参照は維持。
検証: 実Tkでm・.localの配置と入力参照・パスワードマスクを確認。PyInstaller EXE生成成功。両版へコピー・一致確認、変更前ファイルは各backupへ保存。

[2026-11-07] SatBox_Ver0.1.1d-beta: 通信速度単位bpsをBOXの直右へ移動
対象: software/SatBox_Settings.py / software/dist/SatBox_Settings.exe
変更: 速度BOXとbpsを同じFrameへ配置し、右側5pxの余白に単位を表示。他の長い欄の幅に影響されない。
検証: Tk配置確認、PyInstaller EXE生成成功。両版へコピー・一致確認。変更前ファイルは各backupへ保全。

[2026-11-07] SatBox_Ver0.1.1d-beta: PCのTS-2000通信速度を選択可能へ
対象: software/SatBox_Settings.py / software/dist/SatBox_Settings.exe / tests/test_ts2000_stage1.py / Documents/TS2000_Implementation_Notes_JP.md・EN.md
変更: TS-2000の速度固定を解除し、4800／9600／19200／38400／57600bpsを選択可能にした。初期値9600bps。選択値はPC側INIへ保存し、機種切替・再読込時に保持。本体速度同期・CATは第2段階未実装のため画面に明記。Web・ファームウェアは変更していない。
検証: 5速度のINI往復、機種切替保持、既存ICOMプロファイル保持、通信中の無効化、PC回帰12件と実SerialConfig往復が成功。PyInstaller EXE生成成功。両版の元ファイルを個別バックアップしコピー一致確認。

[2026-11-07] SatBox_Ver0.1.1d-beta: 無線機選択を標準Comboboxへ統一
対象: software/SatBox_Settings.py / software/dist/SatBox_Settings.exe
変更: 無線機欄を下3欄と同じreadonly ttk.Comboboxへ戻し、標準テーマの枠・プルダウン矢印に統一。チェックマーク付きメニューは使用しない。SA818S等の未対応項目は選択時に元の機種へ戻し、プロファイル・INI・本体設定を変更しない。
検証: 実TkでTComboboxと標準スタイル、4機種の切替、未対応項目・通信中の選択拒否を確認。PyInstaller EXE再生成成功。通常版へコピー・一致確認。ファームウェア変更なし。

[2026-11-07] SatBox_Ver0.1.1d-beta: 無線機選択欄の枠を明示
対象: software/SatBox_Settings.py / software/dist/SatBox_Settings.exe
変更: Windowsテーマ依存で枠が見えないttk.Menubuttonを、白い背景・1pxの枠・ドロップダウン表示を明示したtk.Menubuttonへ変更。通常コマンド項目でチェックマークを表示せず、SA818S選択不可と保存IDを維持。
検証: 実Tk部品の枠・背景・選択矢印、4機種の選択通知、SA818S無効を確認。PyInstaller EXE生成成功。両版へコピー・一致確認。ファームウェア変更なし。

[2026-11-07] SatBox_Ver0.1.1d-beta: PC無線機選択メニューの文字重なりを修正
対象: software/SatBox_Settings.py / software/dist/SatBox_Settings.exe
変更: チェックマーク付きOptionMenuを通常コマンドのMenubutton/Menuへ変更し、Windows上で機種名にチェックが重なる問題を解消。表示順・保存ID・機種切替処理は維持。SA818Sは選択不可。
検証: 実Tkメニューで全項目がチェックマークなしのcommand型、4機種の選択通知、SA818Sの無効状態を確認。PC EXEは再生成。ファームウェアは変更なし。TS CATは第2段階未実装のまま。

[2026-11-07] SatBox_Ver0.1.1d-beta: TS-2000／TS-2000X対応 第1段階（機種選択・保存）
対象: Settings.cpp/h / SerialConfig.cpp / WebPage.cpp / RigControl.cpp / SettingsBackupFormat.cpp / software/SatBox_Settings.py / software/dist/SatBox_Settings.exe / tests/test_pc_radio_settings.py
新規: tests/test_ts2000_stage1.py / tests/test_ts2000_stage1_storage_web.py / tests/ts2000_stage1_fixtures/Arduino.h・Preferences.h / Documents/TS2000_Implementation_Notes_JP.md・EN.md
変更: 表示順はIC-820H、IC-9700、FT-847、TS-2000、SA818S（選択不可）。保存IDは従来の0、1、2を維持しTS-2000は3。TS-2000Xも同じ項目。NVS版3は旧版1/2を読込み、PC通信版3で機種3を送受信する。旧PC/旧本体との不適合は保存前に拒否。既存機種プロファイルとICOM接続設定を保持。一括バックアップ検証も版3へ対応。
第1段階の範囲: TS-2000は選択・保存のみ。USB Host RS-232Cと9600bpsの予定を表示し、速度編集は未実装。TS選択時は他機種のドライバー初期化前に停止し、CATを送信しない。ドップラー計算・CSV・OFFSET・追尾・Proxy・SQ処理は変更していない。
検証: PC回帰12件、実SerialConfig解析との往復、実NVS関数の旧ID・移行・再起動復元、実Webスクリプトの表示順とID・既存プロファイル保持を確認。PCのPyInstaller EXE生成成功。
中間コンパイル: ESP32 core 3.3.8、esp32:esp32:esp32s3:PartitionScheme=huge_appで実施。変更前と変更後の両方がxtensa-esp32s3-elf-g++.exeのIllegal System DLL Relocationでコンパイラー起動時に失敗。ファームウェア.binは未生成。実機書込み・通信テストは未実施。
次工程: 仕様書1.1の必須条件に従い、中間コンパイル成功まで第2段階のTS-2000 CAT実装へ進まない。通常版へ同一相対パスでコピー・照合。既存履歴はDocuments内の配置を維持。

[2026-11-06] ドプラー設定の初回起動データとREV第3列の説明を追加
対象: DopplerDefaults.cpp/h / Doppler.cpp / WebPage.cpp / Doppler_Setup_JP.md / Doppler_Setup_EN.md / README.md / README_JP.md / tests/tests_doppler_defaults
変更: 作者指定の43件・コメント3行をファームウェアへ内蔵。LittleFSの/doppler.csvがない場合だけ一時ファイルへ書込み、全量確認後に反映。既存CSV（空も含む）・OFFSET・TLEは上書きしない。新規初期化でのFSフォーマットは行わない。Web読込み時も未保存なら再試行し、失敗はエラー応答。
説明: 送受信USB/LSBかつREVの第3列はC=送信MHz+実受信MHz。FO-29は145.950+435.850=581.800、受信=581.800-145.950=435.850MHz。日英Web画面と文書へ記載。
検証: C++ホストで初回・再起動・既存/空ファイル保持・失敗と再試行・43行とコメント3行・FO-29/NOR/DNONLY計算・Webハンドラーの日英表示を確認。全体ビルドは既知のIllegal System DLL Relocationでコンパイラー起動時に停止。更新.bin未生成、実機書込み・実機通信は未実施。

[2026-11-05] IC-9700 CI-V制御をCOM（RS-232C／CT-17）へ追加
対象: IC9700.cpp/h / RigControl.cpp/h / Pin.h / CatProxy.cpp / Doppler.cpp/h / DopplerOffsets.cpp / Settings.cpp/h / WebPage.cpp / tests_ic9700 / tests_offset_radio
変更: IC-9700サテライトの本体MAIN=RX・SUB=TXに対応。SAT状態・アクセス対象・周波数・モードの確認を非同期CI-V処理へ実装。通信失敗は3秒後に再接続。UART1 GPIO15/16、8N1を使用。USB FT232Bは未対応のまま。IC-9700 OFFSETを分離し96件へ拡張。既存FTDI・FT847実装は変更なし。
検証: CI-V専用・実RigControl結合・3機種OFFSET・設定保存・FT847/Proxy回帰のホストテスト合格。ESP32全体コンパイルはWindows DLL relocationエラーで未完了。IC-9700実機未検証。
詳細: IC9700_CI-V_実装メモ.md
全体バックアップ: C:\Users\kueno\OneDrive\Desktop\Ham\3_Arduino\ESP32_SatBox\SatBox_Ver0.1.1c\backup\full_before_IC9700_20261105_133327.zip

[2026-11-05] 言語選択をメイン・設定メニューへ移動
対象: WebPage.cpp
変更: メインの地図ボタン右側、設定メニューのネットワーク上にLanguage（English/Japanese）を表示。変更時に既存言語設定へ保存し同じ画面へ戻る。運用局情報から言語欄・言語更新処理を削除。

[2026-11-05] 機種別通信速度の選択肢を更新
IC-9700: 4800/9600/19200/38400/57600/115200bps。IC-820H: 300/1200/4800/9600bps。FT-847: 4800/9600/57600bps。画面と保存・再読込時の検証を一致。

[2026-11-05] 無線機設定画面の接続方式・IC-9700選択追加
対象: WebPage.cpp / Settings.h / Settings.cpp / SerialConfig.cpp / RigControl.cpp
変更: ICOMはCOM（RS-232C / CT-17）とUSB（FT232B）を選択可能。FT-847はCOMのみ選択可能としCI-Vアドレスを無効化。IC-9700を選択可能にし通信速度・CI-Vアドレスを別プロファイルで保存。旧NVS設定を保持して読込。旧PC保存では新設プロファイルを保持。
範囲: 今回は画面・保存のみ。CT-17通信・IC-9700のCI-V制御は未実装。未実装選択ではIC-820Hドライバーへの誤接続を防止。
検証: 画面JavaScriptの切替・入力保持・送信値テスト、C++保存処理の旧設定移行・再読込・不正値拒否テスト合格。ESP32全体ビルド・実機確認は未実施。

[2026-11-05] 独立FT-847 Proxyを本番SatBoxへ統合
対象: CatProxy.* / CatProxyConfig.h / CatProxyTuning.h / ProxyProtocol.* / RigControl.* / FT847.* / Doppler.* / SatBox_Ver0.1.1c.ino
変更: TCP4532のHamlib NET rigctl互換サービスを既存Wi-Fi・CATへ統合。外部USBのPTTは維持。共有CAT排他、ドプラーON時の公称周波数表示と一時調整、反転衛星の連動、既存OFFSET保持、受信マニュアルへの調整引継ぎを追加。無線機読出しは100ms間隔・500ms待ち・読出し1回再試行後に再接続。
検証: ホスト統合テスト、既存OFFSET保存テスト、FT-847電源・再接続テスト合格。ESP32ビルドはツールチェーンのIllegal System DLL Relocationにより未完了。統合版の実機試験は未実施。
詳細: CAT_Proxy_移植手順.md

[2026-11-03] 無線機接続・設定メッセージの日本語対応
対象: WebPage.cpp
変更: LANGUAGE設定の既存トークンを使い、無線機未接続・設定失敗・設定中・タイムアウト・VFO読出し失敗を日本語／英語で切替。無線機未接続時も本体の動作と再接続処理は継続。

[2026-11-02] FT-847電源OFF・遅延起動からの自動復帰
対象: FT847.cpp / FT847.h / SatBox_Ver0.1.1c.ino / WebPage.cpp
変更: CAT/SAT起動待ちをloop駆動の状態遷移へ変更。読出し失敗時は無線機の準備状態と周波数キャッシュを破棄し、3秒後からCAT ON/SAT ONとRX/TX確認を再試行。SatBox本体の処理は待機させない。
変更: 再接続後は衛星の全プリセットを再設定。ドプラーの409応答をJSON誤解析せず再試行し、連打を抑止。ドプラーOFFは無線機の設定中も受付。通信エラー文を表示し、設定待ちを最大10秒に統一。
検証: tests_ft847_power/test_driver.pyで電源OFF起動・遅延ON・通信断・復帰・UART失敗・コマンド間隔・millis周回を確認。web-test.cjsで409再試行・連打抑止・OFF操作・HTTPエラーを確認。
制限: ESP32用ビルドはインストール済みツールチェーンのIllegal System DLL Relocationでコンパイラー起動に失敗。実機書込み・電源切替試験は未実施。

[2026-09-29] タッチパネル操作を今回の調査開始前へ復元
対象: Display.cpp / RotaryEncoder.cpp
ユーザー依頼: 他の衛星で確認するため元に戻す。
変更: 今回追加したタッチ入力対策、LCD Manual操作停止、Locked表示、LCD-MANUAL-LOCK-1ログを撤回し、保存済み変更前ファイルへ復元。
バックアップ: backup\Display.cpp.20260929_153719.before_touch_restore
バックアップ: backup\RotaryEncoder.cpp.20260929_153719.before_touch_restore
検証: 両ファイルとも復元元とのSHA256一致。コンパイル・実機動作は未確認。
適用方法: 再コンパイルしてESP32へ書き込む。

[2026-09-29 16:03:34] LCD SAVE成功表示を追加
対象: Display.cpp
内容: LCD SAVEでreceiveControlSaveOffset()が成功した場合のみ800ms間グリーン表示し、その後灰色に戻す。失敗・Manual OFF時は点灯しない。点灯/消灯時の再描画判定を追加。
バックアップ: backup\Display.cpp.20260929_160334.before_save_feedback
確認: 差分確認、反映先SHA256一致。コンパイル・実機確認は未実施。

[2026-09-29 17:20:56] ログ起動時の17件再挿入とJH1HGI重複を修正
対象: SatBox_Log_Server.py / C:\JI1FGX\SatBox\SatBox_Log_Server.exe / C:\Logs\Sat_logbook.db
原因: ADIFのHHMM時刻とDBのzfill(6)処理で重複キーが不一致。0930がDB側で0009となり、起動ごとに過去17件を再挿入。
修正: DBとADIの重複キー生成を共通化。検索APIは4桁HHMMをHHMM00へ変換し、画面の時刻誤表示を修正。DB初期化ログは実際のパスを表示。
整理: JH1HGI / 20260217 / 0930 / RS-44 のID以外が完全一致する18件からID227を残して17件削除。20260929の交信は保持。他の交信は削除していない。
バックアップ: backup\SatBox_Log_Server.py.20260929_171955.before_qso_fix / backup\SatBox_Log_Server.exe.20260929_171955.before_qso_fix / backup\Sat_logbook.db.20260929_171955.before_jh1hgi_dedup
検証: 実DBコピーで旧版17件再挿入を再現。修正版は連続取り込み0件。時刻形式混在と新規交信の挿入テスト通過。DB整合性ok。exeビルド成功、稼働exeを置換・再起動。health正常、実APIで該当1件・093000を確認。

[2026-09-29 17:25:53] PASS-TOUCH-1診断ログ追加
対象: Display.cpp
背景: RS-44でもLCD由来Manual ON/OFFが再発。AOS→LOS→同衛星AOS待機との関連を調査。
内容: 選択衛星のパス状態・AOS/LOS時刻が変化した時のPASS TRACE、LCD Manual入力時の生座標・レジスタ値・前回読出し状態・読取り間隔、起動時の版識別ログを追加。
既存動作: タッチ受付条件・ボタン操作は変更なし。SAVE成功時800ms表示も保持。
バックアップ: backup\Display.cpp.20260929_172553.before_pass_touch_trace
確認: 差分は診断情報の追加のみ。反映先SHA256一致。実機コンパイル・再現試験は未実施。原因修正ではなく診断用。

[2026-09-29 17:50:31] LCD OFFSET表示をWeb版と共通化
対象: Display.cpp / WebPage.cpp / Doppler.cpp / Doppler.h
原因: LCDは内部追尾OFFSETを常時表示し、Webの保存校正OFFSETを使う表示仕様と異なっていた。
変更: Web既存のgetDisplayedRxOffset本体をdopplerGetDisplayedRxOffsetへ移し、WebとLCD両方から使用。手動調整中は現在値、その他は衛星別保存値（未登録時は現在値）。AOS待機時・Resume後もWebと同じ表示。
制御周波数・追尾ロジックは変更なし。PASS-TOUCH-1診断とSAVE成功表示を維持。
バックアップ: backup\各対象ファイル.20260929_175030.before_offset_display
検証: 移動前後の関数本体一致、呼出箇所・診断・SAVE表示保持を確認。反映先ハッシュ一致。実機ビルド・動作確認は未実施。

2026-11-07 TS-2000 CAT (0.1.1d-beta)
TS-2000／TS-2000XのUART1 RS-232C CATを追加（GPIO15/16、設定画面に保存したTS-2000用速度、初期9600bps）。既存TCP4532 Proxy・外部PTT、TS-2000用OFFSET分離保存と一括バックアップ復元、模擬応答試験・日英テスト手順。実機未確認。

2026-11-07 TS-2000 115200 bps
TS-2000／TS-2000Xに115200bps（8N1）を追加。Web、PC設定、疑似TS-2000、保存・読戻し・一括復元の許可速度を統一。初期値9600bpsは維持。

2026-11-07 PC TS-2000 save fix
PC設定プログラムのTS-2000保存時に、本体との通信仕様確認前に仕様2の既定値で誤判定していた不具合を修正。入力事前検証と本体の仕様確認を分離。読込み機能・ファームウェアは変更なし。
