summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrail Finder <wohilas@gmail.com>2026-03-03 14:26:06 +0300
committerGrail Finder <wohilas@gmail.com>2026-03-03 14:26:06 +0300
commit6b0d03f2d632597a75e63d03a9932d189d354a2b (patch)
treec5c5509e49395b5a571b5c7be38f8077abac7456
parentfb4deb1161cca50d1affea850f842c7683647ecd (diff)
Fix: decompres before notify
-rw-r--r--bot.go12
-rw-r--r--session.go13
2 files changed, 24 insertions, 1 deletions
diff --git a/bot.go b/bot.go
index 75444e4..60d8f22 100644
--- a/bot.go
+++ b/bot.go
@@ -3,6 +3,7 @@ package main
import (
"bufio"
"bytes"
+ "compress/gzip"
"context"
"encoding/json"
"fmt"
@@ -495,6 +496,17 @@ func monitorModelLoad(modelID string) {
// extractDetailedErrorFromBytes extracts detailed error information from response body bytes
func extractDetailedErrorFromBytes(body []byte, statusCode int) string {
+ // Try to decompress gzip if the response is compressed
+ if len(body) >= 2 && body[0] == 0x1f && body[1] == 0x8b {
+ reader, err := gzip.NewReader(bytes.NewReader(body))
+ if err == nil {
+ decompressed, err := io.ReadAll(reader)
+ reader.Close()
+ if err == nil {
+ body = decompressed
+ }
+ }
+ }
// Try to parse as JSON to extract detailed error information
var errorResponse map[string]any
if err := json.Unmarshal(body, &errorResponse); err == nil {
diff --git a/session.go b/session.go
index 5784333..42d5001 100644
--- a/session.go
+++ b/session.go
@@ -170,6 +170,17 @@ func copyToClipboard(text string) error {
}
func notifyUser(topic, message string) error {
- cmd := exec.Command("notify-send", topic, message)
+ // Sanitize message to remove control characters that notify-send doesn't handle
+ sanitized := strings.Map(func(r rune) rune {
+ if r < 32 && r != '\t' {
+ return -1
+ }
+ return r
+ }, message)
+ // Truncate if too long
+ if len(sanitized) > 200 {
+ sanitized = sanitized[:197] + "..."
+ }
+ cmd := exec.Command("notify-send", topic, sanitized)
return cmd.Run()
}