{
  "_meta": {
    "last_updated": "2026-04-27"
  },
  "todos": [
    {
      "added": "2026-04-23",
      "status": "open",
      "title": "Idea セクションの CSS が崩れている",
      "detail": ""
    },
    {
      "added": "2026-04-23",
      "status": "open",
      "title": "Food セクションの過去データを移行",
      "detail": "https://mblog.com/health-log からデータを持ってきて入れる。かつ DB (wiki/data/food/) にも格納する。"
    },
    {
      "added": "2026-04-27",
      "status": "open",
      "title": "Food 旧スキーマ(35 days)を HH:MM 形式に変換",
      "detail": "2026-01-21 〜 2026-03-06 の 35 days は『??:?? - Breakfast (11:00): ... Lunch (14:00): ...』の旧スキーマで複数食が1行にまとめられている。PHP パーサの label-fallback でも拾えないため totals 集計から脱落。`python3 wiki/scripts/audit-food-format.py` で対象一覧。各日を `08:00 - Breakfast: ...` / `14:00 - Lunch: ...` の複数エントリに分割する必要あり。"
    },
    {
      "added": "2026-04-27",
      "status": "open",
      "title": "Food 04-01 〜 04-17 の Japanese 混入エントリを英訳",
      "detail": "audit-food-language.py で 04-01〜04-17 に 36 lines の native日本語混入エントリを発見(味噌汁/エリンギ/きくらげ/カオマンガイ/カレーライス/餃子等の食材名+ヘルスメモ voice 残骸)。`python3 wiki/scripts/audit-food-language.py --since 2026-04-01` で対象一覧。convention 通り英訳(romaji)に統一。voice の体調メモ残骸は # Body 行に移すか signal-only ルールで削除。"
    },
    {
      "added": "2026-04-23",
      "status": "open",
      "title": "URL から「.php」を削除",
      "detail": "なぜ入ってしまっているのか? その原因を AI が考え、改善提案してから実装する。"
    },
    {
      "added": "2026-04-24",
      "status": "done",
      "completed": "2026-04-25",
      "title": "音声同期(sync-voice-notes)を2時間毎に実行するよう launchd を再読込",
      "detail": "完了 (2026-04-25): bootout + bootstrap で再読込済み。launchctl list で登録確認、12 calendarinterval (0,2,...,22時) アクティブ。"
    },
    {
      "added": "2026-04-25",
      "status": "open",
      "title": "家政婦さんへ支払い: 1日分のフィー + 250バーツ(夜・休日出勤分)",
      "detail": "前回(夜8時+休日出勤)の支払いが250バーツ加算分。次回 メイドさんが来た際に1日分フィー+250バーツを渡す。"
    },
    {
      "added": "2026-04-26",
      "status": "done",
      "completed": "2026-04-27",
      "title": "extract-food-from-voice.py が Idea voice を food として誤検出する",
      "detail": "完了 (2026-04-27): wiki/data/voice/.skip-food にスキップリスト機構を追加。2026-04-23/18-37-32 を登録。今後同様の誤検出があれば該当 voice ID を追加するだけで対処可能。"
    },
    {
      "added": "2026-04-27",
      "status": "done",
      "completed": "2026-04-27",
      "title": "extract-food-from-voice.py の build_skeleton_entry が先頭8行で打ち切り、後半のingredientを取りこぼす",
      "detail": "完了 (2026-04-27): 2026-04-24 08:12 の Oats Bowl で Cacao 99% 17g / ココナッツウォーター 180ml / ブルーベリー 54g が取りこぼされていた(whisper hallucination「チョコレートの上に」反復が先頭8行を埋めて real ingredient を押し下げていた)。修正: (1) `[:8]` slice 撤廃、(2) WEIGHT_PAT (g/ml/個/本/杯/枚/cup/片/スクープ/匙) または FOOD_KEYWORDS マッチ行のみ抽出、(3) HALLUCINATION_PAT で whisper の常套句(「お腹が空い」「私はあなたを愛」「水を注ぎ」「卵と砂糖」等)除外、(4) 単語ノイズ(「塩」「コショウ」「砂糖」「卵黄」等)除外、(5) FOOD_KEYWORDS にキウイ/リンゴ/イチゴ/マンゴー/アボカド等の果物を追加、(6) safety cap 25行。再発防止のため毎回 voice 同期後に audit 実行で確認。"
    },
    {
      "added": "2026-04-25",
      "status": "open",
      "title": "Just Press Record の iCloud 同期が iPhone から走っていない問題を解決",
      "detail": "症状: Mac側のsync-voice.shは2時間毎に正常稼働しているが、iCloud source (~/Library/Mobile Documents/iCloud~com~openplanetsoftware~just-press-record/Documents/) に 2026-04-24 / 2026-04-25 のフォルダが存在しない。原因はiPhone → iCloud のアップロードが遅延 or 停止している。確認手順: (1) iPhone 設定 → Apple ID → iCloud → iCloud Drive がオンか / Just Press Record が同期対象になっているか、(2) Just Press Record アプリを開いてバックグラウンドアップロードを促す、(3) Wi-Fi接続 + 充電中で同期が走るか確認、(4) 省電力モードオフ。本問題が解決しないと、当日の朝食ログ等が AI に渡らずカロリー計算が誤る(2026-04-24 朝食欠落事例あり)。改善案: Just Press Record の代替として Whisper Transcription on iPhone等への移行 or アプリ起動を毎朝のルーチン化"
    }
  ]
}
