From 7b4691ea9120343c93109cd1d92ba88260cf676d Mon Sep 17 00:00:00 2001 From: Christian Rocha Date: Wed, 19 Nov 2025 21:32:55 -0500 Subject: [PATCH 1/6] chore: add gopls settings from Carlos's dotfiles (#1424) Co-authored-by: Crush --- crush.json | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/crush.json b/crush.json index f5daef89add28ad4924c2bb87ca70020af005d67..5f2ed2f0295b558a998c805524d632650b30f585 100644 --- a/crush.json +++ b/crush.json @@ -1,6 +1,40 @@ { "$schema": "https://charm.land/crush.json", "lsp": { - "gopls": {} + "gopls": { + "options": { + "gofumpt": true, + "codelenses": { + "gc_details": true, + "generate": true, + "run_govulncheck": true, + "test": true, + "tidy": true, + "upgrade_dependency": true + }, + "hints": { + "assignVariableTypes": true, + "compositeLiteralFields": true, + "compositeLiteralTypes": true, + "constantValues": true, + "functionTypeParameters": true, + "parameterNames": true, + "rangeVariableTypes": true + }, + "analyses": { + "nilness": true, + "unusedparams": true, + "unusedvariable": true, + "unusedwrite": true, + "useany": true + }, + "staticcheck": true, + "directoryFilters": [ + "-.git", + "-node_modules" + ], + "semanticTokens": true + } + } } } From b363612510b0d5071a7d4e5643682ddb003728d3 Mon Sep 17 00:00:00 2001 From: Christian Rocha Date: Fri, 21 Nov 2025 07:13:53 -0500 Subject: [PATCH 2/6] chore(ui): adjust status notification details (#1490) --- internal/tui/components/core/status/status.go | 6 +++++- internal/tui/tui.go | 4 ++-- internal/tui/util/util.go | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/internal/tui/components/core/status/status.go b/internal/tui/components/core/status/status.go index 66903704e3effcc800b36222381f05ca1be895aa..6d14c5db4c5c343e16bbda7f0846a0fcbfa61b36 100644 --- a/internal/tui/components/core/status/status.go +++ b/internal/tui/components/core/status/status.go @@ -82,7 +82,11 @@ func (m *statusCmp) infoMsg() string { info := ansi.Truncate(m.info.Msg, widthLeft, "…") message = t.S().Base.Foreground(t.BgOverlay).Width(widthLeft+2).Background(t.Warning).Padding(0, 1).Render(info) default: - infoType = t.S().Base.Foreground(t.BgSubtle).Background(t.Green).Padding(0, 1).Bold(true).Render("HEY!") + note := "OKAY!" + if m.info.Type == util.InfoTypeUpdate { + note = "HEY!" + } + infoType = t.S().Base.Foreground(t.BgSubtle).Background(t.Green).Padding(0, 1).Bold(true).Render(note) widthLeft := m.width - (lipgloss.Width(infoType) + 2) info := ansi.Truncate(m.info.Msg, widthLeft, "…") message = t.S().Base.Background(t.GreenDark).Width(widthLeft+2).Foreground(t.BgSubtle).Padding(0, 1).Render(info) diff --git a/internal/tui/tui.go b/internal/tui/tui.go index e4eea700a4c109fa291fbaad3dc764e6df23921b..c53220094ef6af67f789b98ff177a09fa3dfd7b1 100644 --- a/internal/tui/tui.go +++ b/internal/tui/tui.go @@ -380,9 +380,9 @@ func (a *appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { statusMsg = fmt.Sprintf("This is a development version of Crush. The latest version is v%s.", msg.LatestVersion) } s, statusCmd := a.status.Update(util.InfoMsg{ - Type: util.InfoTypeInfo, + Type: util.InfoTypeUpdate, Msg: statusMsg, - TTL: 30 * time.Second, + TTL: 10 * time.Second, }) a.status = s.(status.StatusCmp) return a, statusCmd diff --git a/internal/tui/util/util.go b/internal/tui/util/util.go index 297a9d36fa47170cae787c82419a17b51fc13b05..ca5c20a837caffbbb257f0527a3b7802c1cf580a 100644 --- a/internal/tui/util/util.go +++ b/internal/tui/util/util.go @@ -38,6 +38,7 @@ const ( InfoTypeSuccess InfoTypeWarn InfoTypeError + InfoTypeUpdate ) func ReportInfo(info string) tea.Cmd { From 8703bedd8aff2a1783d04d9018a47dad208401ae Mon Sep 17 00:00:00 2001 From: Charm <124303983+charmcli@users.noreply.github.com> Date: Sat, 22 Nov 2025 02:23:26 -0300 Subject: [PATCH 4/6] chore(legal): @heimoshuiyu has signed the CLA --- .github/cla-signatures.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/cla-signatures.json b/.github/cla-signatures.json index 435347c246578e4158818c36032fa318c1b1fa21..01ed8f63b35bda38dfb64a92f2a1c5f22b2d0042 100644 --- a/.github/cla-signatures.json +++ b/.github/cla-signatures.json @@ -871,6 +871,14 @@ "created_at": "2025-11-19T15:59:07Z", "repoId": 987670088, "pullRequestNo": 1478 + }, + { + "name": "heimoshuiyu", + "id": 22657774, + "comment_id": 3565689668, + "created_at": "2025-11-22T05:23:17Z", + "repoId": 987670088, + "pullRequestNo": 1496 } ] } \ No newline at end of file From dac33ca8bc662193af5e64b56c3e34213375e79c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Nov 2025 11:11:01 +0000 Subject: [PATCH 5/6] chore(deps): bump the all group with 2 updates (#1503) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/nightly.yml | 2 +- .github/workflows/schema-update.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 1e711cfcaa5beb465f7dabacdb10157f4f35ac68..5a8ab11c13c2d19f1a042bf0fe85bb349463f295 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -11,7 +11,7 @@ jobs: outputs: should_run: ${{ steps.check.outputs.should_run }} steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: fetch-depth: 1 - id: check diff --git a/.github/workflows/schema-update.yml b/.github/workflows/schema-update.yml index ecfaf140ecb65d8d59fdc88a810d88c53765e264..ca2cf5e8118174795d33b42e8e5c39f9f6dee6f4 100644 --- a/.github/workflows/schema-update.yml +++ b/.github/workflows/schema-update.yml @@ -10,10 +10,10 @@ jobs: update-schema: runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} - - uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 + - uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0 with: go-version-file: go.mod - run: go run . schema > ./schema.json From a34a8a3291fb8db97903acc43b3a136c75d5def8 Mon Sep 17 00:00:00 2001 From: Adam Stringer Date: Mon, 24 Nov 2025 12:05:37 +0000 Subject: [PATCH 6/6] chore: swap error related logs to use error log level (#1505) --- internal/agent/tools/edit.go | 8 ++++---- internal/agent/tools/multiedit.go | 6 +++--- internal/agent/tools/write.go | 4 ++-- internal/lsp/client.go | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/internal/agent/tools/edit.go b/internal/agent/tools/edit.go index 7012afc8f525a39c2c431ec7327a9fb2d378ef42..0ade26b7500ed70a231b14f325086e6c096f6cfd 100644 --- a/internal/agent/tools/edit.go +++ b/internal/agent/tools/edit.go @@ -163,7 +163,7 @@ func createNewFile(edit editContext, filePath, content string, call fantasy.Tool _, err = edit.files.CreateVersion(edit.ctx, sessionID, filePath, content) if err != nil { // Log error but don't fail the operation - slog.Debug("Error creating file history version", "error", err) + slog.Error("Error creating file history version", "error", err) } recordFileWrite(filePath) @@ -290,13 +290,13 @@ func deleteContent(edit editContext, filePath, oldString string, replaceAll bool // User Manually changed the content store an intermediate version _, err = edit.files.CreateVersion(edit.ctx, sessionID, filePath, oldContent) if err != nil { - slog.Debug("Error creating file history version", "error", err) + slog.Error("Error creating file history version", "error", err) } } // Store the new version _, err = edit.files.CreateVersion(edit.ctx, sessionID, filePath, "") if err != nil { - slog.Debug("Error creating file history version", "error", err) + slog.Error("Error creating file history version", "error", err) } recordFileWrite(filePath) @@ -431,7 +431,7 @@ func replaceContent(edit editContext, filePath, oldString, newString string, rep // Store the new version _, err = edit.files.CreateVersion(edit.ctx, sessionID, filePath, newContent) if err != nil { - slog.Debug("Error creating file history version", "error", err) + slog.Error("Error creating file history version", "error", err) } recordFileWrite(filePath) diff --git a/internal/agent/tools/multiedit.go b/internal/agent/tools/multiedit.go index 72b7583afe0e43a84a13629ae58644b795fc0755..1956653f49ea49194e8435f668339fb0b6e7dbac 100644 --- a/internal/agent/tools/multiedit.go +++ b/internal/agent/tools/multiedit.go @@ -196,7 +196,7 @@ func processMultiEditWithCreation(edit editContext, params MultiEditParams, call _, err = edit.files.CreateVersion(edit.ctx, sessionID, params.FilePath, currentContent) if err != nil { - slog.Debug("Error creating file history version", "error", err) + slog.Error("Error creating file history version", "error", err) } recordFileWrite(params.FilePath) @@ -338,14 +338,14 @@ func processMultiEditExistingFile(edit editContext, params MultiEditParams, call // User manually changed the content, store an intermediate version _, err = edit.files.CreateVersion(edit.ctx, sessionID, params.FilePath, oldContent) if err != nil { - slog.Debug("Error creating file history version", "error", err) + slog.Error("Error creating file history version", "error", err) } } // Store the new version _, err = edit.files.CreateVersion(edit.ctx, sessionID, params.FilePath, currentContent) if err != nil { - slog.Debug("Error creating file history version", "error", err) + slog.Error("Error creating file history version", "error", err) } recordFileWrite(params.FilePath) diff --git a/internal/agent/tools/write.go b/internal/agent/tools/write.go index 0868b9f62306e7b43b1c7218ff68a6a7aae140eb..82684001372ee45b1d71fa34384e6e6c7a92db25 100644 --- a/internal/agent/tools/write.go +++ b/internal/agent/tools/write.go @@ -147,13 +147,13 @@ func NewWriteTool(lspClients *csync.Map[string, *lsp.Client], permissions permis // User Manually changed the content store an intermediate version _, err = files.CreateVersion(ctx, sessionID, filePath, oldContent) if err != nil { - slog.Debug("Error creating file history version", "error", err) + slog.Error("Error creating file history version", "error", err) } } // Store the new version _, err = files.CreateVersion(ctx, sessionID, filePath, params.Content) if err != nil { - slog.Debug("Error creating file history version", "error", err) + slog.Error("Error creating file history version", "error", err) } recordFileWrite(filePath) diff --git a/internal/lsp/client.go b/internal/lsp/client.go index afbe95cc2deb1c37b64c9e9b68fb705a4a0a59f9..7d914d9a52ce75f621715273e8f6b9588aa912b7 100644 --- a/internal/lsp/client.go +++ b/internal/lsp/client.go @@ -417,7 +417,7 @@ func (c *Client) openKeyConfigFiles(ctx context.Context) { if _, err := os.Stat(file); err == nil { // File exists, try to open it if err := c.OpenFile(ctx, file); err != nil { - slog.Debug("Failed to open key config file", "file", file, "error", err) + slog.Error("Failed to open key config file", "file", file, "error", err) } else { slog.Debug("Opened key config file for initialization", "file", file) }