From 70252124ba869e0bf43fef2c5f18ab15666d1f7f Mon Sep 17 00:00:00 2001 From: Acbox Date: Wed, 11 Mar 2026 17:24:39 +0800 Subject: [PATCH] fix(filemanager): return raw file content in FSRead to avoid embedded line numbers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The FSRead handler was using client.ReadFile() which formats each line with a line number prefix (for MCP AI tools). Switch to client.ReadRaw() so the file viewer gets unmodified content — fixes duplicate line numbers in the Monaco editor. --- internal/handlers/filemanager.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/internal/handlers/filemanager.go b/internal/handlers/filemanager.go index 62c197bf..627e0c78 100644 --- a/internal/handlers/filemanager.go +++ b/internal/handlers/filemanager.go @@ -256,15 +256,21 @@ func (h *ContainerdHandler) FSRead(c echo.Context) error { return echo.NewHTTPError(http.StatusServiceUnavailable, fmt.Sprintf("container not reachable: %v", err)) } - resp, err := client.ReadFile(ctx, containerPath, 0, 0) + rc, err := client.ReadRaw(ctx, containerPath) if err != nil { return fsHTTPError(err) } + defer func() { _ = rc.Close() }() + + data, err := io.ReadAll(rc) + if err != nil { + return echo.NewHTTPError(http.StatusInternalServerError, "failed to read file") + } return c.JSON(http.StatusOK, FSReadResponse{ Path: containerPath, - Content: resp.GetContent(), - Size: int64(len(resp.GetContent())), + Content: string(data), + Size: int64(len(data)), }) }