diff --git a/internal/api/sessions.go b/internal/api/sessions.go index 3b8722a..8fd4d9c 100644 --- a/internal/api/sessions.go +++ b/internal/api/sessions.go @@ -229,7 +229,7 @@ func (h *SessionsHandler) HandleDiff(w http.ResponseWriter, r *http.Request) { if baseCommit == "" { baseCommit = inferBaseCommit(h.db, worktreePath, sourceBranch, repoID) if baseCommit == "" { - WriteJSON(w, http.StatusOK, git.DiffResult{}) + WriteJSON(w, http.StatusOK, git.DiffResult{Files: []git.DiffFile{}}) return } // Backfill so we don't recompute next time diff --git a/internal/git/diff.go b/internal/git/diff.go index 6e6673d..fa59a46 100644 --- a/internal/git/diff.go +++ b/internal/git/diff.go @@ -88,7 +88,7 @@ func Diff(worktreePath, baseCommit string) (*DiffResult, error) { // parseDiff parses unified diff output into structured types. func parseDiff(raw string) (*DiffResult, error) { - result := &DiffResult{} + result := &DiffResult{Files: []DiffFile{}} if strings.TrimSpace(raw) == "" { return result, nil @@ -111,7 +111,7 @@ func parseDiff(raw string) (*DiffResult, error) { if currentFile != nil { result.Files = append(result.Files, *currentFile) } - currentFile = &DiffFile{Status: "modified"} + currentFile = &DiffFile{Status: "modified", Hunks: []DiffHunk{}} currentHunk = nil continue } @@ -270,7 +270,7 @@ func parseHunkHeader(line string) (*DiffHunk, error) { return nil, fmt.Errorf("malformed hunk range") } - hunk := &DiffHunk{Header: line} + hunk := &DiffHunk{Header: line, Lines: []DiffLine{}} // Parse old range (-start,count) oldRange := strings.TrimPrefix(parts[0], "-")