Repository Analysis

gitbutlerapp/gitbutler

The GitButler version control client, backed by Git, powered by Tauri/Rust/Svelte

2.6 Likely human-written View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of gitbutlerapp/gitbutler, a Rust project with 21,290 GitHub stars. SynthScan v2.0 examined 568,689 lines of code across 2572 source files, recording 1157 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 2.6 places this repository in the Likely human-written band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

2.6
Adjusted Score
2.6
Raw Score
100%
Time Factor
2026-07-14
Last Push
21.3K
Stars
Rust
Language
568.7K
Lines of Code
2.6K
Files
1.2K
Pattern Hits
2026-07-14
Scan Date
0.00
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 1HIGH 4MEDIUM 116LOW 1036

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 1157 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Over-Commented Block763 hits · 718 pts
SeverityFileLineSnippetContext
LOWCargo.toml1[workspace]COMMENT
LOWCargo.toml21 "crates/but-feedback", # 📄It's very small and very special, but documented and well-enough tested.COMMENT
LOWCargo.toml81 # 👉Experimental; needs docs, it's used from `but` CLI and not a libraryCOMMENT
LOWCargo.toml101 "crates/but-api-macros/tests", # 📄Compile-time coverage for all `#[but_api]` macro features.COMMENT
LOWdeny.toml1# This template contains all of the possible sections and their default valuesCOMMENT
LOWdeny.toml21# `target_family = "unix"` configuration, that only having windows targets inCOMMENT
LOWdeny.toml41#exclude = []COMMENT
LOWdeny.toml61COMMENT
LOWdeny.toml121# Some crates don't have (easily) machine readable licensing information,COMMENT
LOWdeny.toml141# published to private registries.COMMENT
LOWdeny.toml161# with multiple versionsCOMMENT
LOWdeny.toml181 #"ansi_term@0.11.0",COMMENT
LOWdeny.toml201# "rustls",COMMENT
LOWdeny.toml221 #"ansi_term@0.11.0", # will be skipped along with _all_ of its direct and transitive dependenciesCOMMENT
LOWcrates/but-cherry-apply/src/lib.rs1//! Cherry Apply - Applying individual commits into the workspace.COMMENT
LOWcrates/but-secret/src/secret.rs1//! This module contains facilities to handle the persistence of secrets.COMMENT
LOWcrates/gitbutler-repo/tests/repo/create_wd_tree.rs21/// These tests exercise the truth table that we use to update the HEADCOMMENT
LOWcrates/gitbutler-repo/src/commands.rs121 /// `FileInfo` stores valid text in `content` with no `mime_type`. Binary files either have noCOMMENT
LOWcrates/gitbutler-repo/src/commands.rs181COMMENT
LOWcrates/but-testsupport/src/in_memory_meta.rs221 branches: vec![stack_segment_from_partial_name(stack_name)],COMMENT
LOWcrates/but-testsupport/src/in_memory_meta.rs241 // .collect(),COMMENT
LOWcrates/but-transaction/src/lib.rs41///COMMENT
LOWcrates/but-transaction/src/lib.rs61///COMMENT
LOW…es/but-rebase/tests/rebase/graph_rebase/cherry_pick.rs1121"#]]COMMENT
LOW…ut-rebase/tests/rebase/graph_rebase/graph_workspace.rs1//! Snapshot tests for the [`GraphWorkspace`] projection, covering theCOMMENT
LOWcrates/but-rebase/src/lib.rs41 /// Squashes an existing commit into the one in the first `Pick` or `Merge` RebaseStep that precedes it.COMMENT
LOWcrates/but-rebase/src/lib.rs121 }COMMENT
LOWcrates/but-rebase/src/lib.rs161}COMMENT
LOWcrates/but-rebase/src/cherry_pick.rs1/// How to perform a cherry-pick.COMMENT
LOW…es/but-rebase/src/graph_rebase/merge_commit_changes.rs21 /// The selected commit whose change range should be merged.COMMENT
LOW…es/but-rebase/src/graph_rebase/merge_commit_changes.rs101 conflict,COMMENT
LOW…es/but-rebase/src/graph_rebase/merge_commit_changes.rs221enum TraversalMode {COMMENT
LOWcrates/but-rebase/src/graph_rebase/rebase.rs241COMMENT
LOWcrates/but-rebase/src/graph_rebase/mod.rs41 /// their parents.COMMENT
LOWcrates/but-rebase/src/graph_rebase/mod.rs161COMMENT
LOWcrates/but-rebase/src/graph_rebase/mod.rs301 /// This repository may contain objects that have not been persisted yet,COMMENT
LOWcrates/but-rebase/src/graph_rebase/cherry_pick.rs41/// (base) and the new parents (ontos) are merged pairwise. This enum controlsCOMMENT
LOWcrates/but-rebase/src/graph_rebase/cherry_pick.rs61 /// [`SignCommit`] to sign/unsign commits that are otherwise unchanged.COMMENT
LOWcrates/but-rebase/src/graph_rebase/cherry_pick.rs81/// X's "base" sub-tree as the base.COMMENT
LOWcrates/but-rebase/src/graph_rebase/cherry_pick.rs221/// Materialize the narrow synthetic-merge case where building the mergedCOMMENT
LOWcrates/but-rebase/src/graph_rebase/workspace.rs61 /// If we're on the workspace branch, this will contain a list of subgraphsCOMMENT
LOWcrates/but-rebase/src/graph_rebase/workspace.rs81 /// topology, so a fixture can look like N obviously-distinct stacks andCOMMENT
LOWcrates/but-rebase/src/graph_rebase/workspace.rs101 /// [`PushStatus::Integrated`].COMMENT
LOWcrates/but-rebase/src/graph_rebase/workspace.rs341 }COMMENT
LOWcrates/but-rebase/src/graph_rebase/testing.rs701├───╯COMMENT
LOWcrates/but-rebase/src/graph_rebase/testing.rs841 fn three_way_fork_with_a_shared_target() {COMMENT
LOWcrates/but-rebase/src/graph_rebase/mutate.rs21 ///COMMENT
LOWcrates/but-rebase/src/graph_rebase/mutate.rs361 /// `parents_to_disconnect` - Parent nodes to disconnect from `target.parent`.COMMENT
LOWcrates/but-rebase/src/graph_rebase/mutate.rs581 ///COMMENT
LOWcrates/but-rebase/src/graph_rebase/mutate.rs721 self.graph.add_edge(target.id, child.id, new_weight);COMMENT
LOWcrates/but-rebase/src/graph_rebase/materialize.rs101 /// Materializes a rebase without performing a checkout.COMMENT
LOWcrates/but-irc/src/client.rs121 /// Set connection state and emit a StateChanged event.COMMENT
LOWcrates/but-irc/src/client.rs761 debug!("> PRIVMSG {} :{}", target, line);COMMENT
LOWcrates/but-irc/src/lib.rs1//! IRC client implementation for GitButler.COMMENT
LOWcrates/but-irc/src/lib.rs21//! let config = IrcConfig {COMMENT
LOWcrates/but-irc/src/lifecycle.rs1//! Shared IRC connection lifecycle management.COMMENT
LOWcrates/but-irc/src/lifecycle.rs81COMMENT
LOWcrates/but-irc/src/message_store.rs101/// Channel metadata returned by queries.COMMENT
LOWcrates/gitbutler-operating-modes/src/lib.rs81 /// The ref of the vbranch which owns this commit.COMMENT
LOWcrates/but-oplog/src/lib.rs1//! The operations log, short: Oplog, is a sequence of restore points, which each restore point implemented as snapshotsCOMMENT
703 more matches not shown…
Decorative Section Separators101 hits · 348 pts
SeverityFileLineSnippetContext
MEDIUMcrates/but-workspace/src/branch/mod.rs170//! ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs172//! ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs174//! └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs224//! │ e │ │ ├──────┴─────┐ ├──────┴─────┐ COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs227//! │ A │ TMB◀─────┘ └─┘◀── feat └─────▶TMB └─┘◀──S:feat TMB └─┘◀──S:feat COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs232//! │ │ └─┘───────────┘ WMB───────────┘ WMB───────────┘ COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs259//! │ e │ COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs262//! │ │ └──┘ └──┘ parentCOMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs263//! │ I │ │ │ COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs265//! │ i │ ┌─┐ ┌─┐ ┌─┐ ┌─ S:feat/1 COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs266//! │ t │ H:S:main H:S:main────▶└─┘ S:main ────▶└─┘◀── S:feat S:main ──▶└─┘◀┴─ B:feat S:maCOMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs269//! └───┘ Need ws/1 for metadata: - Need ws/1 for metadata: COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs271//! - Stack name changed to COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs185//! │ h │ │ │ ┌──────┴─────┐ │ ┌────COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs193//! │ │ WMB───────────┘ WMB───────────┘ WMB───────────┘COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs205//! │ a │ ┌──────┴─────┐COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs213//! └───┘ └─┘───────────┘ WMB───────────┘ └─┘───────────┘COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs287//! │ │ └─┘───────┘ └─┘───────┘ └─┘───────COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs307//! │ h │ │ ┌─────┴────┐ │ │ COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs315//! │ S │ └─┘────────┘ WMB─────────┘ └─┘────────┘ COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs372//! │ e │ ┌──────┼──────┐ │ A ││ B ││ C │COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs383//! └───┘ WMB───────┘ all commits at once.COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs391//! │ n │ ┌──────┼──────┐ main┐COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs403//! └───┘ └1┘───────┘ Problem is that lanes wouldn't haveCOMMENT
MEDIUMcrates/but-graph/src/lib.rs138//! ┌────────────────────┐COMMENT
MEDIUMcrates/but-graph/src/lib.rs140//! └────────────────────┘COMMENT
MEDIUMcrates/but-graph/src/lib.rs143//! ┌────────────────────────┐COMMENT
MEDIUMcrates/but-graph/src/lib.rs150//! └────────────────────────┘COMMENT
MEDIUMcrates/but-graph/src/lib.rs163//! ┌───────────────────┐COMMENT
MEDIUMcrates/but-graph/src/lib.rs165//! └───────────────────┘COMMENT
MEDIUMcrates/but-graph/src/lib.rs166//! │ ┌────────────────────┐COMMENT
MEDIUMcrates/but-graph/src/lib.rs168//! │ └────────────────────┘COMMENT
MEDIUMcrates/but-graph/src/lib.rs170//! │ ┌─────────┴─────────┐COMMENT
MEDIUMcrates/but-graph/src/lib.rs173//! │ ┌───────────────┐ │COMMENT
MEDIUMcrates/but-graph/src/lib.rs175//! │ └───────────────┘ ┌───────────────┐COMMENT
MEDIUMcrates/but-graph/src/lib.rs177//! │ ▼ └───────────────┘COMMENT
MEDIUMcrates/but-graph/src/lib.rs178//! │ ┌───────────────┐ │COMMENT
MEDIUMcrates/but-graph/src/lib.rs180//! │ └───────────────┘ │COMMENT
MEDIUMcrates/but-graph/src/lib.rs182//! │ └─────────┬─────────┘COMMENT
MEDIUMcrates/but-graph/src/lib.rs185//! │ ┌────────┐COMMENT
MEDIUMcrates/but-graph/src/lib.rs187//! └─────────────────▶│ ------ │COMMENT
MEDIUMcrates/but-graph/src/lib.rs189//! └────────┘COMMENT
MEDIUMcrates/but/src/tui/editor.rs20// ── Hard wrap utility for commit messages ───────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs69// ── Colour palette (inspired by the screenshot) ──────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs87// ── Editor mode ──────────────────────────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs96// ── Menu definitions ─────────────────────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs154// ── Help overlay ─────────────────────────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs161// ── About overlay ────────────────────────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs168// ── Editor state ─────────────────────────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs238 // ── Cursor helpers ───────────────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs266 // ── Edit operations ──────────────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs315 // ── Menu action dispatch ─────────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs340 // ── Input handling ───────────────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs382 // ── Ctrl shortcuts ────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs390 // ── Navigation ────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs459 // ── Text editing ──────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs655 // ── Dropdown rect calculation ────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs674// ── Rendering ────────────────────────────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs1067// ── Public API ───────────────────────────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/command/legacy/diff/display.rs62 // ────────╮COMMENT
41 more matches not shown…
Hyper-Verbose Identifiers191 hits · 208 pts
SeverityFileLineSnippetContext
LOWpackages/ui/tests/test-utils.ts143export async function waitForTextContentWithIdle(CODE
LOWpackages/ui/tests/test-utils.ts334export async function waitForScrollHeightIncrease(CODE
LOWpackages/ui/tests/test-utils.ts466export async function waitForScrollHeightChange(CODE
LOWpackages/ui/tests/HardWrapPlugin.spec.ts26async function waitForParagraphCountGreaterThan(CODE
LOWpackages/ui/tests/HardWrapPlugin.spec.ts154 initialText: "```javascript\nfunction veryLongFunctionNameThatExceedsMax() {}\n```",CODE
LOWpackages/ui/src/lib/utils/timeAgo.ts145function getSecondsUntilTimestampUpdate(seconds: number): number {CODE
LOWpackages/ui/src/lib/utils/diffParsing.ts551function computeBaseInlineWordDiff(CODE
LOWpackages/ui/src/lib/utils/tooltipPosition.ts56function calculateHorizontalAlignment(CODE
LOWpackages/ui/src/lib/utils/tooltipPosition.ts81function autoDetectHorizontalAlignment(measurements: MeasurementCache): {CODE
LOWpackages/ui/src/lib/utils/tooltipPosition.ts107function calculateVerticalPosition(CODE
LOWpackages/ui/src/lib/focus/domUtils.ts25export function findNearestSuitableAncestor(element: HTMLElement): {CODE
LOWpackages/ui/src/lib/focus/shortcutUtils.ts11export function generateTwoLetterShortcut(used: Map<string, unknown>): string | undefined {CODE
LOWpackages/ui/src/lib/components/VirtualList.svelte693 async function handleItemsRemovedOrReplaced(): Promise<void> {CODE
LOWpackages/ui/src/lib/components/VirtualList.svelte733 function compensateScrollForResize(index: number, oldHeight: number): void {CODE
LOWpackages/ui/src/lib/richText/linewrap.ts122function isLogicalParagraphBoundary(para: ParagraphNode, previousIndent: string): boolean {CODE
LOWpackages/ui/src/lib/richText/linewrap.ts158function combineLogicalParagraphText(CODE
LOWpackages/ui/src/lib/richText/linewrap.ts207function updateParagraphsWithWrappedLines(CODE
LOW…ckages/ui/src/lib/richText/plugins/IndentPlugin.svelte17 function normalizeNonSimpleTextNode(CODE
LOWpackages/ui/src/lib/richText/plugins/InlineCode.svelte18 function inlineCodeTextNodeTransform(node: TextNode): void {CODE
LOW…ges/ui/src/lib/richText/plugins/HardWrapPlugin.test.ts666 function inlineCodeTextNodeTransform(node: TextNode): void {CODE
LOWpackages/ui/src/lib/richText/node/mention.ts148function getTextSurroundingMention(text: string, start: number, end: number): [string, string] {CODE
LOWpackages/ui/src/lib/richText/node/emoji.ts193export function findAndReplaceShortCodeEmoji(node: TextNode): TextNode | undefined {CODE
LOWpackages/shared/src/lib/persisted.ts50 function setAndPersist(value: T, set: (value: T) => void) {CODE
LOWpackages/shared/src/lib/persisted.ts129 function setAndPersist(value: T, set: (value: T) => void) {CODE
LOWpackages/shared/src/lib/contributors.ts14async function getUsersWithAvatarsFromMails(userEmails: string[]) {CODE
LOWpackages/shared/src/lib/contributors.ts38async function getAvatarsForContributors(contributors: UserMaybe[]) {CODE
LOWpackages/shared/src/lib/contributors.ts50export async function getContributorsWithAvatars(branch: Branch) {CODE
LOWpackages/shared/src/lib/contributors.ts54export async function getPatchContributorsWithAvatars(patch: PatchCommit) {CODE
LOWpackages/shared/src/lib/contributors.ts58export async function getPatchApproversWithAvatars(patch: PatchCommit) {CODE
LOWpackages/shared/src/lib/contributors.ts62export async function getPatchApproversAllWithAvatars(patch: PatchCommit) {CODE
LOWpackages/shared/src/lib/contributors.ts66export async function getPatchRejectorsWithAvatars(patch: PatchCommit) {CODE
LOWpackages/shared/src/lib/contributors.ts70export async function getPatchRejectorsAllWithAvatars(patch: PatchCommit) {CODE
LOWpackages/shared/src/lib/contributors.ts74export async function getPatchViewersWithAvatars(patch: PatchCommit) {CODE
LOWpackages/shared/src/lib/contributors.ts78export async function getPatchReviewersAllWithAvatars(patch: PatchCommit) {CODE
LOWpackages/shared/src/lib/contributors.ts83export async function getPatchViewersAllWithAvatars(patch: PatchCommit) {CODE
LOW…shared/src/lib/organizations/projectsPreview.svelte.ts53export function getRecentlyInteractedProjects(inView?: InView): Reactive<LoadableProject[]> {CODE
LOW…shared/src/lib/organizations/projectsPreview.svelte.ts68export function getRecentlyPushedProjects(inView?: InView): Reactive<LoadableProject[]> {CODE
LOW…shared/src/lib/organizations/projectsPreview.svelte.ts98export function getFeedIdentityForRepositoryId(CODE
LOWpackages/shared/src/lib/settings/types.ts21export function apiToNotificationSettings(CODE
LOWpackages/shared/src/lib/settings/types.ts59export function notificationSettingsToApi(CODE
LOW…rc/lib/settings/notificationSetttingsPreview.svelte.ts8export function getNotificationSettingsInterest(CODE
LOW…ages/shared/src/lib/chat/chatChannelsPreview.svelte.ts33export function getChatChannelParticipants(CODE
LOWpackages/shared/src/lib/chat/types.ts76export function apiToChatMessageInReplyTo(CODE
LOWpackages/shared/src/lib/chat/types.ts239export function toApiCreateChatMessageParams(CODE
LOWpackages/shared/src/lib/chat/types.ts282export function toApiPatchChatMessageParams(CODE
LOWpackages/shared/src/lib/patchEvents/types.ts310export function createPatchEventChannelKey(CODE
LOWpackages/shared/src/lib/branches/utils.ts37export function getMultipleContributorNames(contributors: UserMaybe[]): string {CODE
LOW…ages/shared/src/lib/branches/branchesPreview.svelte.ts18export function getBranchReviewsForRepository(CODE
LOWe2e/playwright/tests/unifiedDiffView.spec.ts97async function seedRemoteFileAndCloneFresh(CODE
LOWe2e/playwright/tests/startTheApp.spec.ts16async function addProjectAndOpenWorkspace(page: Page, projectPath: string) {CODE
LOWe2e/playwright/tests/moveCommitToNewStack.spec.ts10async function applyTwoIndependentStacks(gitbutler: GitButler, page: Page) {CODE
LOWe2e/playwright/tests/forge.spec.ts32async function openWorkspaceWithMockedPr(CODE
LOWe2e/playwright/tests/forge.spec.ts120async function openGithubPrWithChecksRoute(CODE
LOWe2e/playwright/tests/projectOffboarding.spec.ts5async function openProjectSettingsAndDelete(page: import("@playwright/test").Page) {CODE
LOWe2e/playwright/tests/branches.spec.ts36async function applyBranchFromBranchesView(page: Page, branchName: string) {CODE
LOWe2e/playwright/tests/branches.spec.ts54async function storeFakeGitHubEnterprisePat(page: Page, fakeGitHub: FakeGitHubServer) {CODE
LOWe2e/playwright/tests/branches.spec.ts76async function openProjectWithFakeGitHub(CODE
LOWe2e/playwright/tests/branches.spec.ts88async function applyReviewFromBranchesView(page: Page, title: string) {CODE
LOWe2e/playwright/tests/branches.spec.ts96async function applyReviewBranchFromBranchesView(page: Page, branchName: string) {CODE
LOWe2e/playwright/tests/commitActions.spec.ts174async function amendCommitMessageMultipleTimes(TIMES: number, page: Page) {CODE
131 more matches not shown…
Verbosity Indicators24 hits · 42 pts
SeverityFileLineSnippetContext
LOWcrates/but-irc/src/client.rs370 // Step 1: Tell the server we want PLAIN mechanismCOMMENT
LOWcrates/but-irc/src/client.rs375 // Step 2: Wait for the server's AUTHENTICATE + responseCOMMENT
LOWcrates/but-workspace/src/commit/move_commit.rs103 // Step 1: Determine the parents to disconnect.COMMENT
LOWcrates/but-workspace/src/commit/move_commit.rs106 // Step 2: DisconnectCOMMENT
LOWcrates/but-workspace/src/commit/move_commit.rs114 // Step 3: InsertCOMMENT
LOWcrates/but-workspace/src/commit/move_changes.rs63 // Step 1: Get the source commit and its treeCOMMENT
LOW…workspace/src/branch/integrate_branch_upstream/plan.rs117 // Step 1: Find all the local commits associated with a change ID.COMMENT
LOW…workspace/src/branch/integrate_branch_upstream/plan.rs139 // Step 2: Figure out which upstream-commits to squash into which local commits.COMMENT
LOW…workspace/src/branch/integrate_branch_upstream/plan.rs165 // Step 3: Return the steps in the right order.COMMENT
LOW…workspace/src/branch/integrate_branch_upstream/plan.rs343 // Step 1: We interpret the integration steps and transform them into graph steps disconnected from their parents.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs181 // Step 3: Disconnect the segment, isolating it so that we can freely manipulate it.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs189 // Step 4: Based on the prepared steps, we rebuild the chain.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs192 // Step 5: Once we have our new chain, we reconnect it to the original children and parents.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs126 // Step 1: We prepare the steps before building.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs144 // Step 2: We determine which children and parents to disconnect from the segment above.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs240 // Step 1: We create the editor, which maps every segment in the graph -COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs251 // Step 2: We traverse the editor graph and determine the divergence between the local and remote branch.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs262 // Step 3: We determine the integration state of all the relevant commits, to know which are editableCOMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs285 // Step 4: Build the initial set of integration steps.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs302 // Step 5: Build the return payload, including the integration steps recommendedCOMMENT
LOWcrates/but/src/command/legacy/setup.rs279 // Step 2: Determine remoteCOMMENT
LOWcrates/but/src/command/legacy/pull/mod.rs248 // Step 1: Check upstream dataCOMMENT
LOWcrates/but/src/command/legacy/pull/mod.rs337 // Step 2: Dry-run integration and derive statuses from the preview, like the desktop app.COMMENT
LOWcrates/but/src/command/legacy/pull/mod.rs424 // Step 3: Actually perform the integrationCOMMENT
Structural Annotation Overuse24 hits · 42 pts
SeverityFileLineSnippetContext
LOWcrates/but-irc/src/client.rs370 // Step 1: Tell the server we want PLAIN mechanismCOMMENT
LOWcrates/but-irc/src/client.rs375 // Step 2: Wait for the server's AUTHENTICATE + responseCOMMENT
LOWcrates/but-workspace/src/commit/move_commit.rs103 // Step 1: Determine the parents to disconnect.COMMENT
LOWcrates/but-workspace/src/commit/move_commit.rs106 // Step 2: DisconnectCOMMENT
LOWcrates/but-workspace/src/commit/move_commit.rs114 // Step 3: InsertCOMMENT
LOWcrates/but-workspace/src/commit/move_changes.rs63 // Step 1: Get the source commit and its treeCOMMENT
LOW…workspace/src/branch/integrate_branch_upstream/plan.rs117 // Step 1: Find all the local commits associated with a change ID.COMMENT
LOW…workspace/src/branch/integrate_branch_upstream/plan.rs139 // Step 2: Figure out which upstream-commits to squash into which local commits.COMMENT
LOW…workspace/src/branch/integrate_branch_upstream/plan.rs165 // Step 3: Return the steps in the right order.COMMENT
LOW…workspace/src/branch/integrate_branch_upstream/plan.rs343 // Step 1: We interpret the integration steps and transform them into graph steps disconnected from their parents.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs181 // Step 3: Disconnect the segment, isolating it so that we can freely manipulate it.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs189 // Step 4: Based on the prepared steps, we rebuild the chain.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs192 // Step 5: Once we have our new chain, we reconnect it to the original children and parents.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs126 // Step 1: We prepare the steps before building.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs144 // Step 2: We determine which children and parents to disconnect from the segment above.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs240 // Step 1: We create the editor, which maps every segment in the graph -COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs251 // Step 2: We traverse the editor graph and determine the divergence between the local and remote branch.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs262 // Step 3: We determine the integration state of all the relevant commits, to know which are editableCOMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs285 // Step 4: Build the initial set of integration steps.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs302 // Step 5: Build the return payload, including the integration steps recommendedCOMMENT
LOWcrates/but/src/command/legacy/setup.rs279 // Step 2: Determine remoteCOMMENT
LOWcrates/but/src/command/legacy/pull/mod.rs248 // Step 1: Check upstream dataCOMMENT
LOWcrates/but/src/command/legacy/pull/mod.rs337 // Step 2: Dry-run integration and derive statuses from the preview, like the desktop app.COMMENT
LOWcrates/but/src/command/legacy/pull/mod.rs424 // Step 3: Actually perform the integrationCOMMENT
Self-Referential Comments9 hits · 27 pts
SeverityFileLineSnippetContext
MEDIUM…scripts/project-with-remote-branches__add-submodule.sh7# Create a simple repository to use as a submoduleCOMMENT
MEDIUMe2e/playwright/scripts/create-postcommit-fail-marker.sh2# Create a marker file to trigger post-commit failureCOMMENT
MEDIUMe2e/playwright/scripts/create-allowed-file.sh2# Create a file with allowed contentCOMMENT
MEDIUMe2e/playwright/scripts/project-with-commit-hooks.sh21 # Create a commit-msg hook that modifies the messageCOMMENT
MEDIUMe2e/playwright/scripts/project-with-commit-hooks.sh43 # Create a pre-commit hook that checks for forbidden contentCOMMENT
MEDIUMe2e/playwright/scripts/project-with-commit-hooks.sh66 # Create a post-commit hook that can be triggered to failCOMMENT
MEDIUMe2e/playwright/scripts/create-forbidden-file.sh2# Create a file with forbidden contentCOMMENT
MEDIUM…-with-remote-branches__commit-file-into-remote-base.sh10# Create a new branch in the remote project, add a file, and commit it.COMMENT
MEDIUM…t/scripts/project-in-single-branch-apply-transition.sh45# Create a managed workspace whose metadata will become stale after the direct checkout below.COMMENT
Fake / Example Data17 hits · 18 pts
SeverityFileLineSnippetContext
LOWcrates/but/src/tui/text.rs137 assert_eq!(truncate_text("lorem ipsum", 5), "lore…");CODE
LOWcrates/but/src/args/config.rs27 /// but config user set name "John Doe"COMMENT
LOWcrates/but/src/args/config.rs315 /// but config user set name "John Doe"COMMENT
LOWcrates/but/src/args/mod.rs1100 /// but config user set name "John Doe"COMMENT
LOWpackages/ui/src/stories/utils/Sticky.stories.svelte49 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt utCODE
LOWpackages/ui/src/stories/utils/Sticky.stories.svelte49 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt utCODE
LOWpackages/ui/src/stories/utils/Sticky.stories.svelte75 Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisciCODE
LOWpackages/ui/src/stories/utils/Sticky.stories.svelte75 Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisciCODE
LOWpackages/ui/src/stories/utils/Sticky.stories.svelte118 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>CODE
LOWpackages/ui/src/stories/utils/Sticky.stories.svelte118 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>CODE
LOW…kages/ui/src/stories/components/Textbox.stories.svelte60 let emailValue = $state("user@example.com");CODE
LOW…kages/ui/src/stories/components/Textbox.stories.svelte395 placeholder="user@example.com"CODE
LOW…kages/ui/src/stories/components/Textbox.stories.svelte479 placeholder="user@example.com"CODE
LOW…kages/ui/src/stories/components/Textbox.stories.svelte527 placeholder="user@example.com"CODE
LOW…kages/ui/src/stories/components/Textbox.stories.svelte544 placeholder="user@example.com"CODE
LOWe2e/playwright/tests/branches.spec.ts60 accessToken: "fake-token",CODE
LOWapps/desktop/src/lib/ai/service.test.ts111 constructor(private response = "lorem ipsum") {}CODE
AI Slop Vocabulary6 hits · 16 pts
SeverityFileLineSnippetContext
MEDIUMcrates/but/src/id/mod.rs79 /// utilize. The purpose is to not cause a shortening of an ID to invalidate a longer form ofCOMMENT
MEDIUMcrates/gitbutler-stack/src/target.rs22 // up the same anyway? Definitely could use a test then.COMMENT
MEDIUMcrates/but-meta/src/virtual_branches_legacy_types.rs486 // up the same anyway? Definitely could use a test then.COMMENT
MEDIUMcrates/but-installer/src/shell.rs123 // Check for PATH setup with more robust detectionCOMMENT
MEDIUMcrates/but-hunk-dependency/src/lib.rs81//! Essentially, perform the same algorithm as with simple `Branches`, but operate on a merge commit instead, simulatingCOMMENT
LOWscripts/add-but-symlink-to-deb.sh10# manager can't track the symlink, so it's better for everyone to just add itCOMMENT
TODO Padding7 hits · 15 pts
SeverityFileLineSnippetContext
LOWcrates/but-forge/src/review.rs154 // TODO: implementCOMMENT
LOWcrates/but-forge/src/review.rs159 // TODO: implementCOMMENT
LOWcrates/but-forge/src/review.rs164 // TODO: implementCOMMENT
LOWcrates/but-forge/src/review.rs169 // TODO: implementCOMMENT
LOWcrates/but-forge/src/review.rs174 // TODO: implementCOMMENT
LOWcrates/but-forge/src/review.rs179 // TODO: implementCOMMENT
LOWcrates/but-api/src/json.rs424 // TODO: implement this. How to get description and what not?COMMENT
Cross-Language Confusion (JS/TS)3 hits · 15 pts
SeverityFileLineSnippetContext
HIGH…top/src/lib/dragging/dropHandlers/branchDropHandler.ts23 print(): string {CODE
HIGH…top/src/lib/dragging/dropHandlers/branchDropHandler.ts40 print(): string {CODE
HIGH…top/src/lib/dragging/dropHandlers/branchDropHandler.ts102 print(): string {CODE
Slop Phrases8 hits · 14 pts
SeverityFileLineSnippetContext
MEDIUMcrates/but-graph/tests/graph/init/with_workspace.rs2700 // It's worth noting that we avoid double-listing remote commits that are alsoCOMMENT
LOWcrates/but-db/src/transaction.rs43 /// Don't forget to call [commit()](Transaction::commit()) to actually persist the result.COMMENT
LOWcrates/but-db/src/transaction.rs62 /// Don't forget to call [commit()](Transaction::commit()) to actually persist the result.COMMENT
LOWcrates/but-db/src/transaction.rs79 /// Don't forget to call [commit()](Transaction::commit()) to actually persist the result.COMMENT
LOWcrates/but-db/src/transaction.rs101 /// Don't forget to call [commit()](Transaction::commit()) to actually persist the result.COMMENT
LOWcrates/but-db/src/transaction.rs118 /// Don't forget to call [commit()](Transaction::commit()) to actually persist the result.COMMENT
LOWcrates/but-db/src/transaction.rs140 /// Don't forget to call [commit()](Transaction::commit()) to actually persist the result.COMMENT
LOWcrates/but-db/src/transaction.rs157 /// Don't forget to call [commit()](Transaction::commit()) to actually persist the result.COMMENT
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALcrates/but-rebase/src/graph_rebase/workspace.rs356 let Some(target_ref) = self.workspace.graph.project_meta.target_ref.as_ref() else {CODE
Synthetic Comment Markers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHcrates/but/skill/references/reference.md248but squash <branch> -i # Squash with AI-generated commit messageCODE
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWignore-vercel.sh23# Check if we're in a git repositoryCOMMENT
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippetContext
LOWe2e/playwright/src/fakeGithub.ts81function handleRequest(CODE