diff --git a/.renovaterc.json b/.renovaterc.json
new file mode 100644
index 0000000..ff27ef5
--- /dev/null
+++ b/.renovaterc.json
@@ -0,0 +1,6 @@
+{
+  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+  "extends": [
+    "local>infrastructure/renovate-config"
+  ]
+}
diff --git a/internal/websocket/receive.go b/internal/websocket/receive.go
index 9493caf..889a8ce 100644
--- a/internal/websocket/receive.go
+++ b/internal/websocket/receive.go
@@ -1,10 +1,10 @@
 package websocket
 
 import (
-	"git.smsvc.net/pomodoro/ChronoTomato/internal/notifications"
-	"git.smsvc.net/pomodoro/ChronoTomato/internal/shared"
 	"encoding/json"
 	"fmt"
+	"git.smsvc.net/pomodoro/ChronoTomato/internal/notifications"
+	"git.smsvc.net/pomodoro/ChronoTomato/internal/shared"
 	"github.com/charmbracelet/log"
 	"github.com/gorilla/websocket"
 )
@@ -18,6 +18,11 @@ func ProcessServerMessages(conn *websocket.Conn) {
 	for {
 		_, message, err := conn.ReadMessage()
 		if err != nil {
+			if websocket.IsCloseError(err, 1000) {
+				// Ignore normal closure and exit gracefully
+				return
+			}
+			// Log any other errors
 			fmt.Println()
 			log.Error("Read error!", "reason", err)
 			return