simple terminal UI for git commands
This report summarizes scanner evidence for jesseduffield/lazygit, a Go project with 83,553 GitHub stars. SynthScan examined 202,067 lines of code across 1400 source files, recording 222 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 1.3 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 191 finding(s).
Are imports declared and package/API names verified? 24 finding(s).
Are wrappers, guards, and repeated structures necessary? 7 finding(s).
Which changes need focused human review? 222 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 222 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .golangci.yml | 41 | # ST1003 complains about names like remoteUrl or itemId (should be | COMMENT |
| LOW | .golangci.yml | 61 | COMMENT | |
| LOW | demo/record_demo.sh | 81 | mkdir -p "$OUTPUT_DIR" | COMMENT |
| LOW | demo/rerecord_demos.sh | 1 | #!/bin/sh | COMMENT |
| LOW | cmd/author_colors_repo/main.go | 1 | // author_colors_repo creates a git repository for checking that the colors | COMMENT |
| LOW | docs/Config.md | 81 | # If true, do not show a warning when attempting to commit without any staged | COMMENT |
| LOW | docs/Config.md | 101 | COMMENT | |
| LOW | docs/Config.md | 121 | - [status] | COMMENT |
| LOW | docs/Config.md | 141 | # the right) | COMMENT |
| LOW | docs/Config.md | 161 | timeFormat: 02 Jan 06 | COMMENT |
| LOW | docs/Config.md | 261 | # If true, display the files in the file views as a tree. If false, display the | COMMENT |
| LOW | docs/Config.md | 301 | # If true (default), file icons are shown in the file views. Only relevant if | COMMENT |
| LOW | docs/Config.md | 401 | git: | COMMENT |
| LOW | docs/Config.md | 421 | # # e.g. | COMMENT |
| LOW | docs/Config.md | 481 | COMMENT | |
| LOW | docs/Config.md | 541 | log: | COMMENT |
| LOW | docs/Config.md | 561 | # How branches are sorted in the local branches view. | COMMENT |
| LOW | docs/Config.md | 661 | # If true, don't display introductory popups upon opening Lazygit. | COMMENT |
| LOW | scripts/just_e2e_completion.zsh | 1 | # Zsh completion for the `e2e` and `e2e-cli` recipes in lazygit's justfile. | COMMENT |
| LOW | docs-master/Config.md | 81 | # If true, do not show a warning when attempting to commit without any staged | COMMENT |
| LOW | docs-master/Config.md | 101 | COMMENT | |
| LOW | docs-master/Config.md | 121 | - [status] | COMMENT |
| LOW | docs-master/Config.md | 141 | # the right) | COMMENT |
| LOW | docs-master/Config.md | 161 | timeFormat: 02 Jan 06 | COMMENT |
| LOW | docs-master/Config.md | 261 | # If true, display the files in the file views as a tree. If false, display the | COMMENT |
| LOW | docs-master/Config.md | 301 | # If true (default), file icons are shown in the file views. Only relevant if | COMMENT |
| LOW | docs-master/Config.md | 401 | git: | COMMENT |
| LOW | docs-master/Config.md | 421 | # # e.g. | COMMENT |
| LOW | docs-master/Config.md | 481 | COMMENT | |
| LOW | docs-master/Config.md | 541 | log: | COMMENT |
| LOW | docs-master/Config.md | 561 | # How branches are sorted in the local branches view. | COMMENT |
| LOW | docs-master/Config.md | 661 | # If true, don't display introductory popups upon opening Lazygit. | COMMENT |
| LOW | pkg/tasks/tasks.go | 81 | // different from what the view last showed (a different command key) calls | COMMENT |
| LOW | pkg/tasks/tasks.go | 101 | COMMENT | |
| LOW | pkg/tasks/tasks.go | 121 | // for last when StartLoading was called. It is cleared when that task has | COMMENT |
| LOW | pkg/tasks/tasks.go | 141 | // A gocui task simply represents the fact that lazygit is busy doing something, | COMMENT |
| LOW | pkg/tasks/tasks.go | 161 | // satisfied. This is an absolute count from the start of the task, not a | COMMENT |
| LOW | pkg/tasks/tasks.go | 201 | // RenderRestore puts a view back where it was when it re-renders content the user | COMMENT |
| LOW | pkg/tasks/tasks.go | 221 | // | COMMENT |
| LOW | pkg/tasks/tasks.go | 541 | case <-done: | COMMENT |
| LOW | pkg/tasks/tasks.go | 601 | go utils.Safe(func() { | COMMENT |
| LOW | pkg/tasks/tasks.go | 981 | // Note we don't reset the origin here even when the command key changed: | COMMENT |
| LOW | pkg/tasks/read_request_queue.go | 1 | package tasks | COMMENT |
| LOW | pkg/tasks/read_request_queue.go | 21 | // Only once the task asked for last has given the view all of its content does the | COMMENT |
| LOW | pkg/config/user_config.go | 21 | ConfirmOnQuit bool `yaml:"confirmOnQuit"` | COMMENT |
| LOW | pkg/config/user_config.go | 81 | ScrollOffBehavior string `yaml:"scrollOffBehavior"` | COMMENT |
| LOW | pkg/config/user_config.go | 101 | // Number from 0 to 1.0. | COMMENT |
| LOW | pkg/config/user_config.go | 121 | // Possible values: | COMMENT |
| LOW | pkg/config/user_config.go | 141 | ColorScheme string `yaml:"colorScheme" jsonschema:"enum=auto,enum=dark,enum=light"` | COMMENT |
| LOW | pkg/config/user_config.go | 161 | // One of: 'mixed' (default) | 'filesFirst' | 'foldersFirst' | COMMENT |
| LOW | pkg/config/user_config.go | 181 | // If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty. | COMMENT |
| LOW | pkg/config/user_config.go | 201 | // Whether to split the main window when viewing file changes. | COMMENT |
| LOW | pkg/config/user_config.go | 241 | // Border color of focused window | COMMENT |
| LOW | pkg/config/user_config.go | 281 | COMMENT | |
| LOW | pkg/config/user_config.go | 301 | // | COMMENT |
| LOW | pkg/config/user_config.go | 321 | // See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_DiffRenderers.md for more information. | COMMENT |
| LOW | pkg/config/user_config.go | 361 | CommitPrefixes map[string][]CommitPrefixConfig `yaml:"commitPrefixes"` | COMMENT |
| LOW | pkg/config/user_config.go | 421 | // If true, run merges in a subprocess so that if a commit message is required, Lazygit will not hang | COMMENT |
| LOW | pkg/integration/clients/go_test.go | 81 | // not writing stderr to the pty because we want to capture a panic if | COMMENT |
| LOW | pkg/integration/tests/ui/accordion.go | 1 | package ui | COMMENT |
| 121 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | pkg/integration/tests/ui/accordion.go | 10 | // ╶─Status─────────────────────────╴┌─Patch──────────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | pkg/integration/tests/ui/accordion.go | 11 | // ╶─Files - Submodules──────0 of 0─╴│commit 6e56dd04b70e548976f7f2928c4d9c359574e2bc ▲ | COMMENT |
| MEDIUM⚡ | pkg/integration/tests/ui/accordion.go | 13 | // ┌─Commits - Reflog───────────────┐│Date: Wed Jul 19 22:00:03 2023 +1000 │ | COMMENT |
| MEDIUM⚡ | pkg/integration/tests/ui/accordion.go | 15 | // │6e56dd04 CI commit-11 █└────────────────────────────────────────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | pkg/integration/tests/ui/accordion.go | 16 | // │a35c687d CI commit-10 ▼┌─Command log────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | pkg/integration/tests/ui/accordion.go | 17 | // └───────────────────────10 of 20─┘│Random tip: To filter commits by path, press '<ctrl+s>' │ | COMMENT |
| MEDIUM⚡ | pkg/integration/tests/ui/accordion.go | 18 | // ╶─Stash───────────────────0 of 0─╴└────────────────────────────────────────────────────────────────┘ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pkg/integration/tests/commit/copy_tag_to_clipboard.go | 19 | shell.SetAuthor("John Doe", "john@doe.com") | CODE |
| LOW | …g/integration/tests/commit/copy_author_to_clipboard.go | 19 | shell.SetAuthor("John Doe", "john@doe.com") | CODE |
| LOW⚡ | pkg/integration/tests/commit/auto_wrap_message.go | 31 | Type("Lorem ipsum dolor sit amet, consectetur adipiscing elit."). | CODE |
| LOW⚡ | pkg/integration/tests/commit/auto_wrap_message.go | 31 | Type("Lorem ipsum dolor sit amet, consectetur adipiscing elit."). | CODE |
| LOW⚡ | pkg/integration/tests/commit/auto_wrap_message.go | 33 | Content(Equals("Lorem ipsum dolor \nsit amet, \nconsectetur \nadipiscing elit.")). | CODE |
| LOW | pkg/integration/tests/commit/auto_wrap_message.go | 44 | "subject\n \n Lorem ipsum dolor\n sit amet,\n consectetur\n adipiscing elit.")) | CODE |
| LOW | pkg/integration/tests/commit/auto_wrap_message.go | 54 | Content(Equals("Lorem ipsum dolor \nsit amet, \nconsectetur \nadipiscing elit.")). | CODE |
| LOW | pkg/gocui/text_area_test.go | 1056 | var testContent = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. | CODE |
| LOW | pkg/gocui/text_area_test.go | 1056 | var testContent = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. | CODE |
| LOW⚡ | pkg/gui/presentation/commits_test.go | 635 | models.NewCommit(hashPool, models.NewCommitOpts{Hash: "authorcolors1", AuthorName: "Jane Doe", Parents: []string{"auth | CODE |
| LOW⚡ | pkg/gui/presentation/commits_test.go | 636 | models.NewCommit(hashPool, models.NewCommitOpts{Hash: "authorcolors2", AuthorName: "Jane Doe"}), | CODE |
| LOW⚡ | pkg/gui/presentation/commits_test.go | 642 | authors.SetCustomAuthors(map[string]string{"Jane Doe": "red"}) | CODE |
| LOW⚡ | pkg/gui/presentation/commits_test.go | 645 | authors.SetCustomAuthors(map[string]string{"Jane Doe": "blue"}) | CODE |
| LOW⚡ | pkg/gui/presentation/authors/authors_test.go | 54 | SetCustomAuthors(map[string]string{"Jane Doe": "red"}) | CODE |
| LOW⚡ | pkg/gui/presentation/authors/authors_test.go | 55 | assert.Equal(t, style.FgRed.Sprint("JD"), ShortAuthor("Jane Doe")) | CODE |
| LOW⚡ | pkg/gui/presentation/authors/authors_test.go | 56 | assert.Equal(t, style.FgRed.Sprint("Jane Doe"), LongAuthor("Jane Doe", 8)) | CODE |
| LOW⚡ | pkg/gui/presentation/authors/authors_test.go | 58 | SetCustomAuthors(map[string]string{"Jane Doe": "blue"}) | CODE |
| LOW⚡ | pkg/gui/presentation/authors/authors_test.go | 59 | assert.Equal(t, style.FgBlue.Sprint("JD"), ShortAuthor("Jane Doe")) | CODE |
| LOW⚡ | pkg/gui/presentation/authors/authors_test.go | 60 | assert.Equal(t, style.FgBlue.Sprint("Jane Doe"), LongAuthor("Jane Doe", 8)) | CODE |
| LOW | pkg/gui/presentation/authors/authors_test.go | 71 | SetCustomAuthors(map[string]string{"Jane Doe": "red"}) | CODE |
| LOW | pkg/gui/presentation/authors/authors_test.go | 76 | assert.Equal(t, style.FgRed.Sprint("JD"), ShortAuthor("Jane Doe")) | CODE |
| LOW | pkg/commands/git_commands/commit_loader_test.go | 550 | AuthorName: "Jane Doe", | CODE |
| LOW | pkg/commands/git_commands/commit_loader_test.go | 577 | AuthorName: "Jane Doe", | CODE |
| LOW | pkg/commands/git_commands/commit_loader_test.go | 740 | AuthorName: "John Doe", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | pkg/tasks/tasks_test.go | 207 | // A dummy reader that simply yields as many blank lines as requested. The only | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/run_integration_tests.sh | 26 | # harness appends to), print them sorted by slowest first so they show up in the | COMMENT |
| MEDIUM | pkg/tasks/tasks.go | 619 | // the user is looking at seamless, and blanking the view for a message | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | demo/fonts/fit_flog_symbols.py | 66 | CODE | |
| LOW | demo/fonts/fit_flog_symbols.py | 93 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/default_test_config/config.yml | 26 | # TODO: add tests which explicitly test auto-refresh functionality | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/bisect.sh | 3 | # How to use: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/check_filenames.sh | 6 | # Check if the file name contains uppercase letters | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/ci.yml | 177 | # If you change this, make sure to also update scripts/golangci-lint-shim.sh | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pkg/gui/layout.go | 100 | // already), so we need to check if it did | COMMENT |