✨ feat(vscode): 摘修复可按作者筛选,高亮发布点后第一条

This commit is contained in:
cruldra committed 2026-09-01 19:15:32 +08:00
1 parent 54fc2ead4c
commit beb7750eac
9 files changed
+137 -33

No files matched your search

@@ -0,0 +1,47 @@
import type { ReleaseCommitGroup } from './messages'
export function uniqueAuthors(groups: ReleaseCommitGroup[]): string[] {
const out: string[] = []
for (const g of groups) {
for (const a of g.authors) {
if (!out.includes(a))
out.push(a)
}
}
return out
}
export function filterCherryPickGroups(
groups: ReleaseCommitGroup[],
query: string,
authors: ReadonlySet<string>,
): ReleaseCommitGroup[] {
const q = query.trim().toLowerCase()
const out: ReleaseCommitGroup[] = []
for (const g of groups) {
const commits = g.commits.filter(c => authors.has(c.author))
if (commits.length === 0)
continue
if (!q) {
out.push({ ...g, authors: uniqueAuthors([{ ...g, commits }]), commits })
continue
}
const head = `#${g.pr ?? ''} ${g.title} ${g.authors.join(' ')}`.toLowerCase()
if (head.includes(q)) {
out.push({ ...g, authors: uniqueAuthors([{ ...g, commits }]), commits })
continue
}
const hit = commits.filter(c =>
`${c.subject} ${c.author} ${c.sha} ${c.date}`.toLowerCase().includes(q),
)
if (hit.length > 0)
out.push({ ...g, authors: uniqueAuthors([{ ...g, commits: hit }]), commits: hit })
}
return out
}
export function groupContainingSha(groups: ReleaseCommitGroup[], sha: string | undefined): ReleaseCommitGroup | undefined {
if (!sha)
return undefined
return groups.find(g => g.commits.some(c => c.sha === sha))
}