Merge branch 'charmbracelet:main' into esc_permission

bbrodriges created

Change summary

.github/cla-signatures.json         | 16 ++++++++++++++++
.github/labeler.yml                 |  4 ++++
.github/workflows/cla.yml           |  2 +-
.github/workflows/issue-labeler.yml |  2 +-
internal/log/http.go                |  3 +++
5 files changed, 25 insertions(+), 2 deletions(-)

Detailed changes

.github/cla-signatures.json 🔗

@@ -183,6 +183,22 @@
       "created_at": "2025-08-01T22:18:28Z",
       "repoId": 987670088,
       "pullRequestNo": 480
+    },
+    {
+      "name": "yumosx",
+      "id": 141902143,
+      "comment_id": 3146472558,
+      "created_at": "2025-08-02T12:24:29Z",
+      "repoId": 987670088,
+      "pullRequestNo": 504
+    },
+    {
+      "name": "bold84",
+      "id": 21118257,
+      "comment_id": 3146962342,
+      "created_at": "2025-08-03T04:07:16Z",
+      "repoId": 987670088,
+      "pullRequestNo": 519
     }
   ]
 }

.github/labeler.yml 🔗

@@ -1,3 +1,5 @@
+"area: ci":
+  - "/^ci: /i"
 "area: diff":
   - "/diff/i"
 "area: images":
@@ -40,3 +42,5 @@
   - "/(openai|gpt)/i"
 "provider: openrouter":
   - "/openrouter/i"
+"provider: qwen":
+  - "/qwen/i"

.github/workflows/cla.yml 🔗

@@ -29,7 +29,7 @@ jobs:
           path-to-signatures: ".github/cla-signatures.json"
           path-to-document: "https://github.com/charmbracelet/crush/blob/main/CLA.md"
           branch: "main"
-          allowlist: dependabot[bot]
+          allowlist: charmcli,charmcrush,dependabot[bot]
           custom-pr-sign-comment: "I have read the Contributor License Agreement (CLA) and hereby sign the CLA."
           custom-notsigned-precomment: "Thank you for your submission. We really appreciate it! Like many open-source projects, we ask that you sign our [Contributor License Agreement](https://github.com/charmbracelet/crush/blob/main/CLA.md) before we can accept your contribution. You can sign the CLA by just posting a Pull Request comment same as the below format."
           lock-pullrequest-aftermerge: false

internal/log/http.go 🔗

@@ -79,6 +79,9 @@ func (h *HTTPRoundTripLogger) RoundTrip(req *http.Request) (*http.Response, erro
 }
 
 func bodyToString(body io.ReadCloser) string {
+	if body == nil {
+		return ""
+	}
 	src, err := io.ReadAll(body)
 	if err != nil {
 		slog.Error("Failed to read body", "error", err)