Skip to content

Commit fb18836

Browse files
committed
Closes #4189 expands ai-powered changelog support
- Generates changelogs between two references - Adds a "Generate Changelog (Preview)..." commands accessible via: - Command Palette - Context menus on branches and tags in views and the Commit Graph
1 parent 5c4f19b commit fb18836

20 files changed

+471
-70
lines changed

CHANGELOG.md

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,18 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
88

99
### Added
1010

11+
- Adds an AI-powered "Create with AI" button to assist with creating pull requests for GitHub and GitLab
12+
- Adds AI-powered ability to automatically generate changelogs ([#4189](https://github.com/gitkraken/vscode-gitlens/issues/4189))
13+
- Adds a _Generate Changelog (Preview)..._ command to the Command Palette
14+
- Adds a _Generate Changelog (Preview)..._ context menu item to branches and tags in the _Commit Graph_ and in GitLens views
15+
- Adds a _Generate Changelog (Preview)_ context menu item to Behind/Ahead comparison results in Gitlens views
1116
- Adds AI model status and model switcher to the _Home_ view ([#4064](https://github.com/gitkraken/vscode-gitlens/issues/4064))
12-
- Adds an optional "Create with AI" button to generate pull requests using AI assistance for GitHub and GitLab.
1317
- Adds Anthropic Claude 3.7 Sonnet model for GitLens' AI features ([#4101](https://github.com/gitkraken/vscode-gitlens/issues/4101))
1418
- Adds Google Gemini 2.5 Pro (Experimental) and Gemini 2.0 Flash-Lite model for GitLens' AI features ([#4104](https://github.com/gitkraken/vscode-gitlens/issues/4104))
15-
- Adds integration with Bitbucket Cloud and Data Center ([#3916](https://github.com/gitkraken/vscode-gitlens/issues/3916))
16-
- shows enriched links to PRs and issues ([#4045](https://github.com/gitkraken/vscode-gitlens/issues/4045))
17-
- shows Bitbucket Cloud and Data Center PRs in Launchpad ([#4046](https://github.com/gitkraken/vscode-gitlens/issues/4046))
18-
- supports Bitbucket issues in Start Work and lets associate issues with branches ([#4047](https://github.com/gitkraken/vscode-gitlens/issues/4047), [#4107](https://github.com/gitkraken/vscode-gitlens/issues/4107))
19+
- Adds new Bitbucket Cloud and Data Center integration ([#3916](https://github.com/gitkraken/vscode-gitlens/issues/3916))
20+
- Adds enriched links to PRs and issues ([#4045](https://github.com/gitkraken/vscode-gitlens/issues/4045))
21+
- Adds Bitbucket Cloud and Data Center PRs in _Launchpad_ ([#4046](https://github.com/gitkraken/vscode-gitlens/issues/4046))
22+
- Adds support for Bitbucket issues in _Start Work_ and allows associating issues with branches ([#4047](https://github.com/gitkraken/vscode-gitlens/issues/4047), [#4107](https://github.com/gitkraken/vscode-gitlens/issues/4107))
1923
- Adds ability to control how worktrees are displayed in the views
2024
- Adds a `gitlens.views.worktrees.worktrees.viewAs` setting to specify whether to show worktrees by name, path, or relative path
2125
- Adds a `gitlens.views.worktrees.branches.layout` setting to specify whether to show branch worktrees as a list or tree, similar to branches
@@ -24,7 +28,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
2428
### Changed
2529

2630
- Curated the list of AI models available for GitLens' AI features
27-
- Updates the _Switch AI Model_ command and flow:
31+
- Updates the _Switch AI Model_ command and flow
2832
- Renames the _Switch AI Model_ command to _Switch AI Provider/Model_
2933
- Allows the provider to be selected before displaying a list of models
3034
- Adds inline actions to reset or configure a provider at the provider step
@@ -511,7 +515,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
511515
- Adds a new _Connect Additional Integrations_ button to the _Launchpad_ titlebar to allow connecting additional integrations (GitHub and GitLab currently)
512516
- Adds an new experimental _Launchpad_ view to provide a persistent view of the _Launchpad_ in the sidebar
513517
- To try it out, run the _Show Launchpad View_ command or set the `gitlens.views.launchpad.enabled` setting to `true` — let us know what you think!
514-
- While its functionality is currently limited, pull requests can be expanded to show changes, commits, and code suggestions, as well as actions to open changes in the multi-diff editor, open a comparision, and more
518+
- While its functionality is currently limited, pull requests can be expanded to show changes, commits, and code suggestions, as well as actions to open changes in the multi-diff editor, open a comparison, and more
515519
- Adds new features and improvements to the _Commit Graph_
516520
- Branch visibility options, formerly in the _Graph Filtering_ dropdown, are now moved to the new _Branches Visibility_ dropdown in the _Commit Graph_ header bar
517521
- Adds a new _Smart Branches_ visibility option to shows only relevant branches — the current branch, its upstream, and its base or target branch, to help you better focus
@@ -1190,7 +1194,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
11901194
- Adds a highlight (green) to the linked GitKraken Cloud workspace when the current VS Code workspace is associated with it in the _GitKraken Workspaces_ view
11911195
- Adds deep link support for comparisons in the _Search & Compare_ view
11921196
- Deep link format: `vscode://eamodio.gitlens/r/{repoId}/compare/{ref1}[..|...]{ref2}?[url={remoteUrl}|path={repoPath}]`
1193-
- Adds a _Share_ submenu with a _Copy Link to Comparison_ command to comparisions in the _Search & Compare_ view
1197+
- Adds a _Share_ submenu with a _Copy Link to Comparison_ command to comparisons in the _Search & Compare_ view
11941198
- Adds support for Anthropic's Claude 2 AI model
11951199
- Adds a progress notification while repositories are being added to a GitKraken Cloud workspace
11961200

contributions.json

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@
2323
]
2424
}
2525
},
26+
"gitlens.ai.generateChangelog": {
27+
"label": "Generate Changelog (Preview)...",
28+
"commandPalette": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && !gitlens:hasVirtualFolders && gitlens:gk:organization:ai:enabled"
29+
},
2630
"gitlens.ai.generateCommitMessage": {
2731
"label": "Generate Commit Message...",
2832
"commandPalette": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && !gitlens:hasVirtualFolders && gitlens:gk:organization:ai:enabled && config.gitlens.ai.generateCommitMessage.enabled"
@@ -1457,6 +1461,19 @@
14571461
]
14581462
}
14591463
},
1464+
"gitlens.graph.ai.generateChangelogFrom": {
1465+
"label": "Generate Changelog (Preview)...",
1466+
"icon": "$(sparkle)",
1467+
"menus": {
1468+
"webview/context": [
1469+
{
1470+
"when": "webviewItem =~ /gitlens:(branch|tag)\\b/ && gitlens:gk:organization:ai:enabled",
1471+
"group": "1_gitlens_actions_3",
1472+
"order": 100
1473+
}
1474+
]
1475+
}
1476+
},
14601477
"gitlens.graph.ai.generateCommitMessage": {
14611478
"label": "Generate Commit Message...",
14621479
"menus": {
@@ -1967,7 +1984,7 @@
19671984
},
19681985
{
19691986
"when": "webviewItem =~ /gitlens:tag\\b/ && !gitlens:hasVirtualFolders && !gitlens:readonly && !gitlens:untrusted",
1970-
"group": "1_gitlens_actions",
1987+
"group": "1_gitlens_actions_3",
19711988
"order": 4
19721989
}
19731990
]
@@ -3836,7 +3853,12 @@
38363853
],
38373854
"view/item/context": [
38383855
{
3839-
"when": "viewItem =~ /gitlens:(branch|commit|stash|tag)\\b(?!.*?\\b\\+closed\\b)/ && !listMultiSelection",
3856+
"when": "viewItem =~ /gitlens:(branch|tag)\\b(?!.*?\\b\\+closed\\b)/ && !listMultiSelection",
3857+
"group": "1_gitlens_action",
3858+
"order": 100
3859+
},
3860+
{
3861+
"when": "viewItem =~ /gitlens:(commit|stash)\\b(?!.*?\\b\\+closed\\b)/ && !listMultiSelection",
38403862
"group": "3_gitlens_explore",
38413863
"order": 1
38423864
},
@@ -4927,6 +4949,19 @@
49274949
]
49284950
}
49294951
},
4952+
"gitlens.views.ai.generateChangelogFrom": {
4953+
"label": "Generate Changelog (Preview)...",
4954+
"icon": "$(sparkle)",
4955+
"menus": {
4956+
"view/item/context": [
4957+
{
4958+
"when": "viewItem =~ /gitlens:(branch|tag)\\b/ && gitlens:gk:organization:ai:enabled",
4959+
"group": "1_gitlens_actions_3",
4960+
"order": 100
4961+
}
4962+
]
4963+
}
4964+
},
49304965
"gitlens.views.applyChanges": {
49314966
"label": "Apply Changes",
49324967
"enablement": "!operationInProgress",
@@ -6588,7 +6623,7 @@
65886623
},
65896624
{
65906625
"when": "viewItem =~ /gitlens:tag\\b/ && !listMultiSelection && !gitlens:hasVirtualFolders && !gitlens:readonly && !gitlens:untrusted",
6591-
"group": "1_gitlens_actions",
6626+
"group": "1_gitlens_actions_3",
65926627
"order": 3
65936628
}
65946629
]
@@ -12878,7 +12913,7 @@
1287812913
{
1287912914
"when": "viewItem =~ /gitlens:(branch|commit|file\\b(?=.*?\\b\\+committed\\b)|stash|tag)\\b/ && !listMultiSelection && !gitlens:hasVirtualFolders",
1288012915
"group": "3_gitlens_explore",
12881-
"order": 10
12916+
"order": 100
1288212917
}
1288312918
]
1288412919
}

package.json

Lines changed: 54 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6004,6 +6004,11 @@
60046004
"category": "GitLens",
60056005
"icon": "$(person-add)"
60066006
},
6007+
{
6008+
"command": "gitlens.ai.generateChangelog",
6009+
"title": "Generate Changelog (Preview)...",
6010+
"category": "GitLens"
6011+
},
60076012
{
60086013
"command": "gitlens.ai.generateCommitMessage",
60096014
"title": "Generate Commit Message...",
@@ -6565,6 +6570,11 @@
65656570
"title": "Add as Co-author",
65666571
"icon": "$(person-add)"
65676572
},
6573+
{
6574+
"command": "gitlens.graph.ai.generateChangelogFrom",
6575+
"title": "Generate Changelog (Preview)...",
6576+
"icon": "$(sparkle)"
6577+
},
65686578
{
65696579
"command": "gitlens.graph.ai.generateCommitMessage",
65706580
"title": "Generate Commit Message..."
@@ -7859,6 +7869,11 @@
78597869
"title": "Generate Changelog (Preview)",
78607870
"icon": "$(sparkle)"
78617871
},
7872+
{
7873+
"command": "gitlens.views.ai.generateChangelogFrom",
7874+
"title": "Generate Changelog (Preview)...",
7875+
"icon": "$(sparkle)"
7876+
},
78627877
{
78637878
"command": "gitlens.views.applyChanges",
78647879
"title": "Apply Changes",
@@ -10321,6 +10336,10 @@
1032110336
"command": "gitlens.addAuthors",
1032210337
"when": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && !gitlens:hasVirtualFolders"
1032310338
},
10339+
{
10340+
"command": "gitlens.ai.generateChangelog",
10341+
"when": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && !gitlens:hasVirtualFolders && gitlens:gk:organization:ai:enabled"
10342+
},
1032410343
{
1032510344
"command": "gitlens.ai.generateCommitMessage",
1032610345
"when": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && !gitlens:hasVirtualFolders && gitlens:gk:organization:ai:enabled && config.gitlens.ai.generateCommitMessage.enabled"
@@ -10737,6 +10756,10 @@
1073710756
"command": "gitlens.graph.addAuthor",
1073810757
"when": "false"
1073910758
},
10759+
{
10760+
"command": "gitlens.graph.ai.generateChangelogFrom",
10761+
"when": "false"
10762+
},
1074010763
{
1074110764
"command": "gitlens.graph.ai.generateCommitMessage",
1074210765
"when": "false"
@@ -11717,6 +11740,10 @@
1171711740
"command": "gitlens.views.ai.generateChangelog",
1171811741
"when": "false"
1171911742
},
11743+
{
11744+
"command": "gitlens.views.ai.generateChangelogFrom",
11745+
"when": "false"
11746+
},
1172011747
{
1172111748
"command": "gitlens.views.applyChanges",
1172211749
"when": "false"
@@ -16140,6 +16167,11 @@
1614016167
"when": "viewItem =~ /gitlens:branch\\b(?!.*?\\b\\+(current|closed|checkedout|worktree)\\b)/ && !listMultiSelection && !gitlens:hasVirtualFolders",
1614116168
"group": "1_gitlens_action@3"
1614216169
},
16170+
{
16171+
"command": "gitlens.showInCommitGraph",
16172+
"when": "viewItem =~ /gitlens:(branch|tag)\\b(?!.*?\\b\\+closed\\b)/ && !listMultiSelection",
16173+
"group": "1_gitlens_action@100"
16174+
},
1614316175
{
1614416176
"command": "gitlens.views.publishBranch",
1614516177
"when": "viewItem =~ /gitlens:branch\\b(?!.*?\\b\\+(closed|remote|tracking)\\b)/ && !listMultiSelection && gitlens:repos:withRemotes && !gitlens:hasVirtualFolders && !gitlens:readonly && !gitlens:untrusted",
@@ -16220,6 +16252,11 @@
1622016252
"when": "viewItem =~ /gitlens:branch\\b(?=.*?\\b\\+(tracking|remote)\\b)(?!.*?\\b\\+closed\\b)/ && !listMultiSelection && gitlens:action:createPullRequest && gitlens:repos:withRemotes",
1622116253
"group": "1_gitlens_actions_3@10"
1622216254
},
16255+
{
16256+
"command": "gitlens.views.ai.generateChangelogFrom",
16257+
"when": "viewItem =~ /gitlens:(branch|tag)\\b/ && gitlens:gk:organization:ai:enabled",
16258+
"group": "1_gitlens_actions_3@100"
16259+
},
1622316260
{
1622416261
"command": "gitlens.views.openBranchOnRemote",
1622516262
"when": "viewItem =~ /gitlens:branch\\b(?=.*?\\b\\+(tracking|remote)\\b)/ && !listMultiSelection",
@@ -16230,16 +16267,6 @@
1623016267
"when": "viewItem =~ /gitlens:branch\\b(?=.*?\\b\\+(tracking|remote)\\b)/ && listMultiSelection",
1623116268
"group": "2_gitlens_quickopen@1"
1623216269
},
16233-
{
16234-
"command": "gitlens.showInCommitGraph",
16235-
"when": "viewItem =~ /gitlens:(branch|commit|stash|tag)\\b(?!.*?\\b\\+closed\\b)/ && !listMultiSelection",
16236-
"group": "3_gitlens_explore@1"
16237-
},
16238-
{
16239-
"submenu": "gitlens/commit/browse",
16240-
"when": "viewItem =~ /gitlens:(branch|commit|file\\b(?=.*?\\b\\+committed\\b)|stash|tag)\\b/ && !listMultiSelection && !gitlens:hasVirtualFolders",
16241-
"group": "3_gitlens_explore@10"
16242-
},
1624316270
{
1624416271
"command": "gitlens.views.openChangedFileDiffsWithMergeBase",
1624516272
"when": "viewItem =~ /gitlens:branch\\b(?!.*?\\b\\+current\\b)/ && !listMultiSelection",
@@ -16250,6 +16277,11 @@
1625016277
"when": "viewItem =~ /gitlens:(branch|tag)\\b/ && !listMultiSelection && !gitlens:hasVirtualFolders",
1625116278
"group": "3_gitlens_explore@12"
1625216279
},
16280+
{
16281+
"submenu": "gitlens/commit/browse",
16282+
"when": "viewItem =~ /gitlens:(branch|commit|file\\b(?=.*?\\b\\+committed\\b)|stash|tag)\\b/ && !listMultiSelection && !gitlens:hasVirtualFolders",
16283+
"group": "3_gitlens_explore@100"
16284+
},
1625316285
{
1625416286
"command": "gitlens.views.compareWithUpstream",
1625516287
"when": "viewItem =~ /gitlens:branch\\b(?=.*?\\b\\+tracking\\b)/ && !listMultiSelection && !gitlens:hasVirtualFolders",
@@ -16501,6 +16533,11 @@
1650116533
"when": "viewItem =~ /gitlens:(commit|stash)\\b/ && !listMultiSelection",
1650216534
"group": "3_gitlens_explore@0"
1650316535
},
16536+
{
16537+
"command": "gitlens.showInCommitGraph",
16538+
"when": "viewItem =~ /gitlens:(commit|stash)\\b(?!.*?\\b\\+closed\\b)/ && !listMultiSelection",
16539+
"group": "3_gitlens_explore@1"
16540+
},
1650416541
{
1650516542
"command": "gitlens.revealCommitInView",
1650616543
"when": "viewItem =~ /gitlens:commit\\b/ && view =~ /gitlens\\.views\\.(?!commits|branches\\b)/ && !listMultiSelection",
@@ -17687,7 +17724,7 @@
1768717724
{
1768817725
"command": "gitlens.views.createBranch",
1768917726
"when": "viewItem =~ /gitlens:tag\\b/ && !listMultiSelection && !gitlens:hasVirtualFolders && !gitlens:readonly && !gitlens:untrusted",
17690-
"group": "1_gitlens_actions@3"
17727+
"group": "1_gitlens_actions_3@3"
1769117728
},
1769217729
{
1769317730
"command": "gitlens.views.createTag",
@@ -19836,6 +19873,11 @@
1983619873
"when": "webviewItem =~ /gitlens:branch\\b(?=.*?\\b\\+(tracking|remote)\\b)/ && gitlens:action:createPullRequest && gitlens:repos:withRemotes",
1983719874
"group": "1_gitlens_actions_3@4"
1983819875
},
19876+
{
19877+
"command": "gitlens.graph.ai.generateChangelogFrom",
19878+
"when": "webviewItem =~ /gitlens:(branch|tag)\\b/ && gitlens:gk:organization:ai:enabled",
19879+
"group": "1_gitlens_actions_3@100"
19880+
},
1983919881
{
1984019882
"command": "gitlens.graph.openBranchOnRemote",
1984119883
"when": "webviewItem =~ /gitlens:branch\\b(?=.*?\\b\\+(tracking|remote)\\b)/ && gitlens:repos:withRemotes",
@@ -20139,7 +20181,7 @@
2013920181
{
2014020182
"command": "gitlens.graph.createBranch",
2014120183
"when": "webviewItem =~ /gitlens:tag\\b/ && !gitlens:hasVirtualFolders && !gitlens:readonly && !gitlens:untrusted",
20142-
"group": "1_gitlens_actions@4"
20184+
"group": "1_gitlens_actions_3@4"
2014320185
},
2014420186
{
2014520187
"command": "gitlens.graph.hideTag",

src/commands.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import './commands/diffWithRevision';
2121
import './commands/diffWithRevisionFrom';
2222
import './commands/diffWithWorking';
2323
import './commands/externalDiff';
24+
import './commands/generateChangelog';
2425
import './commands/generateCommitMessage';
2526
import './commands/ghpr/openOrCreateWorktree';
2627
import './commands/gitWizard';

0 commit comments

Comments
 (0)