feat: pre-populate commit dialog with heuristic message from git diff

Generate a commit message from modified files (e.g. "Update winter-2026"
or "Update 12 notes") and pre-fill the CommitDialog textarea so users can
commit immediately or edit the suggestion.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Test
2026-03-30 16:30:54 +02:00
parent 81f986a065
commit 6b0bb5173c
5 changed files with 139 additions and 4 deletions

View File

@@ -0,0 +1,33 @@
import type { ModifiedFile } from '../types'
const VERB_MAP: Record<string, string> = {
modified: 'Update',
added: 'Add',
untracked: 'Add',
deleted: 'Delete',
renamed: 'Rename',
}
const MAX_LISTED_FILES = 3
function noteName(relativePath: string): string {
const basename = relativePath.split('/').pop() ?? relativePath
return basename.replace(/\.md$/, '')
}
function verb(files: ModifiedFile[]): string {
const statuses = new Set(files.map((f) => f.status))
if (statuses.size === 1) return VERB_MAP[files[0].status] ?? 'Update'
return 'Update'
}
/** Generate a heuristic commit message from modified files. */
export function generateCommitMessage(files: ModifiedFile[]): string {
if (files.length === 0) return ''
const action = verb(files)
if (files.length <= MAX_LISTED_FILES) {
const names = files.map((f) => noteName(f.relativePath)).join(', ')
return `${action} ${names}`
}
return `${action} ${files.length} notes`
}