)]}'
{
  "commit": "09eaa5b7e3acefcde37cf6cce8a8317ad24568cf",
  "tree": "f683171e4d7357c16d227c23199a9884775b8708",
  "parents": [
    "2746bf5b455fa67f1bec6178c75121397a3816f5"
  ],
  "author": {
    "name": "Luke Gao",
    "email": "dhangao@hotmail.com",
    "time": "Sat May 30 15:33:54 2026 +0800"
  },
  "committer": {
    "name": "LinkinStars",
    "email": "linkinstar@foxmail.com",
    "time": "Fri Jul 10 10:19:39 2026 +0800"
  },
  "message": "feat: add reasoning content to AI conversation records and update related components (#1530)\n\nFix #1524 \n\nRoot cause\n\nDeepSeek\u0027s reasoning models stream reasoning_content alongside content.\nAnswer ignored it, so follow-up requests failed with 400: The\nreasoning_content in the thinking mode must be passed back to the API,\nand the thinking text was never shown or saved.\n\nFix\n\n- Capture reasoning_content from the stream and pass it back to theAPI\non subsequent rounds.\n - Persist it with the conversation (new DB column via migrationv2.0.2).\n- Render it in the chat UI as a collapsible \"Thinking…/Thoughts\"panel\nabove the answer.\n\nCompatibility\n\nNullable column, omitempty field, UI hides the panel when empty — old\nconversations and non-reasoning models behave exactly as before.\n\nDemo\n\n\n\nhttps://github.com/user-attachments/assets/49b1a2a1-9133-4ac2-bbeb-860215a50285",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "57a23d432ab9a5aab5cb47102fc3a883eb5560b9",
      "old_mode": 33188,
      "old_path": "docs/docs.go",
      "new_id": "03b06701b2121fe0db48d1053fd318e1c9f256e6",
      "new_mode": 33188,
      "new_path": "docs/docs.go"
    },
    {
      "type": "modify",
      "old_id": "dac2b38fd68737889a65f331411227df3349c214",
      "old_mode": 33188,
      "old_path": "docs/swagger.json",
      "new_id": "3bfb2e3ce16914982a24cadfb1d3d6e7daa82be2",
      "new_mode": 33188,
      "new_path": "docs/swagger.json"
    },
    {
      "type": "modify",
      "old_id": "7a7adb6811ffc6726a1b135a0e3f77010c1027b6",
      "old_mode": 33188,
      "old_path": "docs/swagger.yaml",
      "new_id": "c08f1e8d43967fc100e209e48ff141b6622d80bb",
      "new_mode": 33188,
      "new_path": "docs/swagger.yaml"
    },
    {
      "type": "modify",
      "old_id": "9a0d198b360d2656c347d7513c11403e0cd541d9",
      "old_mode": 33188,
      "old_path": "i18n/en_US.yaml",
      "new_id": "61f4965000b90a28f0481cf15cb20414124f5095",
      "new_mode": 33188,
      "new_path": "i18n/en_US.yaml"
    },
    {
      "type": "modify",
      "old_id": "125cdab22421cbb137dd8a8b563ee17e86270538",
      "old_mode": 33188,
      "old_path": "internal/controller/ai_controller.go",
      "new_id": "e7495253bb14d4bb4ba1e487abdf84d61cda67eb",
      "new_mode": 33188,
      "new_path": "internal/controller/ai_controller.go"
    },
    {
      "type": "modify",
      "old_id": "14dea34707c9e1d56f5c21165618ef07b41720c4",
      "old_mode": 33188,
      "old_path": "internal/entity/ai_conversation_record.go",
      "new_id": "da8f11b1119ea83cc2cb4a5b3392d7a095456430",
      "new_mode": 33188,
      "new_path": "internal/entity/ai_conversation_record.go"
    },
    {
      "type": "modify",
      "old_id": "682a7b207765374050db5a8c5787dec75c91abc1",
      "old_mode": 33188,
      "old_path": "internal/migrations/migrations.go",
      "new_id": "7fca2d50d752a78a68277194fc64319b48934a32",
      "new_mode": 33188,
      "new_path": "internal/migrations/migrations.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "810c21011d68c1cdb4f888ebbda035f10daac314",
      "new_mode": 33188,
      "new_path": "internal/migrations/v33.go"
    },
    {
      "type": "modify",
      "old_id": "fd34278a146d675f4b6390619498eadfd7b02129",
      "old_mode": 33188,
      "old_path": "internal/schema/ai_conversation_schema.go",
      "new_id": "60ec5d74789e06d6010db740514ea14fb7c16e0d",
      "new_mode": 33188,
      "new_path": "internal/schema/ai_conversation_schema.go"
    },
    {
      "type": "modify",
      "old_id": "d095ac0e96a4fa2eec2149344357c65bb7a5bbbe",
      "old_mode": 33188,
      "old_path": "internal/service/ai_conversation/ai_conversation_service.go",
      "new_id": "b7ddc6b108c95d622cf4190fa991e8554b355bbe",
      "new_mode": 33188,
      "new_path": "internal/service/ai_conversation/ai_conversation_service.go"
    },
    {
      "type": "modify",
      "old_id": "308726e80d94ccb0140b65794223411fba1a57d6",
      "old_mode": 33188,
      "old_path": "ui/src/common/interface.ts",
      "new_id": "dbcec6c04f49ecdb22b7f8488dfbd7b3fabe9994",
      "new_mode": 33188,
      "new_path": "ui/src/common/interface.ts"
    },
    {
      "type": "modify",
      "old_id": "1e79ca7c44a1162eefa9af78b85d5648426a26c9",
      "old_mode": 33188,
      "old_path": "ui/src/components/BubbleAi/index.tsx",
      "new_id": "4cbd2417978c6443939243822dbc9be80a120756",
      "new_mode": 33188,
      "new_path": "ui/src/components/BubbleAi/index.tsx"
    },
    {
      "type": "modify",
      "old_id": "ec4bd7d79bcfbaff0ccad7f9bf6b12d3c96e686c",
      "old_mode": 33188,
      "old_path": "ui/src/pages/Admin/AiAssistant/components/DetailModal/index.tsx",
      "new_id": "02bbc682644bd21e79bdd2e4006c3394d4e01227",
      "new_mode": 33188,
      "new_path": "ui/src/pages/Admin/AiAssistant/components/DetailModal/index.tsx"
    },
    {
      "type": "modify",
      "old_id": "83ffe8f1e345d7746f602d96da32ec930ea13839",
      "old_mode": 33188,
      "old_path": "ui/src/pages/AiAssistant/index.tsx",
      "new_id": "e355e80414c2ad2c1ff588fa0529de508a0da2f6",
      "new_mode": 33188,
      "new_path": "ui/src/pages/AiAssistant/index.tsx"
    },
    {
      "type": "modify",
      "old_id": "99e21adc826c956a9a0a263a13ef3bd9c74971c6",
      "old_mode": 33188,
      "old_path": "ui/src/pages/Search/components/AiCard/index.tsx",
      "new_id": "c6cc699ce29f23cb84cf787b4a67813fe9eb0b30",
      "new_mode": 33188,
      "new_path": "ui/src/pages/Search/components/AiCard/index.tsx"
    }
  ]
}
