git_graph: Remove feature flag (#52972)

After #52953 gets merged the git graph will be ready for it's preview
release, so we can finally remove the feature flag! AKA this PR releases
the git graph

Self-Review Checklist:

- [ ] I've reviewed my own diff for quality, security, and reliability
- [ ] Unsafe blocks (if any) have justifying comments
- [ ] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [ ] Performance impact has been considered and is acceptable

Closes #ISSUE

Release Notes:

- Add Git Graph. Can be accessed through the button on the bottom of the
git panel or the `git graph: Open` action
This commit is contained in:
Anthony Eid 2026-04-02 11:26:37 -04:00 committed by GitHub
parent 06f939d355
commit 7892b93279
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 32 additions and 51 deletions

2
Cargo.lock generated
View file

@ -7132,7 +7132,6 @@ dependencies = [
"collections",
"db",
"editor",
"feature_flags",
"fs",
"git",
"git_ui",
@ -7190,7 +7189,6 @@ dependencies = [
"ctor",
"db",
"editor",
"feature_flags",
"file_icons",
"futures 0.3.31",
"fuzzy",

View file

@ -47,12 +47,6 @@ impl FeatureFlag for DiffReviewFeatureFlag {
}
}
pub struct GitGraphFeatureFlag;
impl FeatureFlag for GitGraphFeatureFlag {
const NAME: &'static str = "git-graph";
}
pub struct StreamingEditFileToolFeatureFlag;
impl FeatureFlag for StreamingEditFileToolFeatureFlag {

View file

@ -24,7 +24,6 @@ anyhow.workspace = true
collections.workspace = true
db.workspace = true
editor.workspace = true
feature_flags.workspace = true
git.workspace = true
git_ui.workspace = true
gpui.workspace = true

View file

@ -1,6 +1,5 @@
use collections::{BTreeMap, HashMap, IndexSet};
use editor::Editor;
use feature_flags::{FeatureFlagAppExt as _, GitGraphFeatureFlag};
use git::{
BuildCommitPermalinkParams, GitHostingProviderRegistry, GitRemote, Oid, ParsedGitRemote,
parse_git_remote_url,
@ -732,8 +731,7 @@ pub fn init(cx: &mut App) {
cx.observe_new(|workspace: &mut workspace::Workspace, _, _| {
workspace.register_action_renderer(|div, workspace, _, cx| {
div.when(
workspace.project().read(cx).active_repository(cx).is_some()
&& cx.has_flag::<GitGraphFeatureFlag>(),
workspace.project().read(cx).active_repository(cx).is_some(),
|div| {
let workspace = workspace.weak_handle();

View file

@ -27,7 +27,6 @@ db.workspace = true
editor.workspace = true
file_icons.workspace = true
futures.workspace = true
feature_flags.workspace = true
fuzzy.workspace = true
git.workspace = true
gpui.workspace = true

View file

@ -3,7 +3,6 @@ use buffer_diff::BufferDiff;
use collections::HashMap;
use editor::display_map::{BlockPlacement, BlockProperties, BlockStyle};
use editor::{Addon, Editor, EditorEvent, ExcerptRange, MultiBuffer, multibuffer_context_lines};
use feature_flags::{FeatureFlagAppExt as _, GitGraphFeatureFlag};
use git::repository::{CommitDetails, CommitDiff, RepoPath, is_binary_content};
use git::status::{FileStatus, StatusCode, TrackedStatus};
use git::{
@ -1045,21 +1044,19 @@ impl Render for CommitViewToolbar {
}),
)
.when(!is_stash, |this| {
this.when(cx.has_flag::<GitGraphFeatureFlag>(), |this| {
this.child(
IconButton::new("show-in-git-graph", IconName::GitGraph)
.icon_size(IconSize::Small)
.tooltip(Tooltip::text("Show in Git Graph"))
.on_click(move |_, window, cx| {
window.dispatch_action(
Box::new(crate::git_panel::OpenAtCommit {
sha: sha_for_graph.clone(),
}),
cx,
);
}),
)
})
this.child(
IconButton::new("show-in-git-graph", IconName::GitGraph)
.icon_size(IconSize::Small)
.tooltip(Tooltip::text("Show in Git Graph"))
.on_click(move |_, window, cx| {
window.dispatch_action(
Box::new(crate::git_panel::OpenAtCommit {
sha: sha_for_graph.clone(),
}),
cx,
);
}),
)
.children(remote_info.map(|(provider_name, url)| {
let icon = match provider_name.as_str() {
"GitHub" => IconName::Github,

View file

@ -20,7 +20,6 @@ use editor::{
actions::ExpandAllDiffHunks,
};
use editor::{EditorStyle, RewrapOptions};
use feature_flags::{FeatureFlagAppExt as _, GitGraphFeatureFlag};
use file_icons::FileIcons;
use futures::StreamExt as _;
use git::commit::ParsedCommitMessage;
@ -4529,7 +4528,6 @@ impl GitPanel {
let commit = branch.most_recent_commit.as_ref()?.clone();
let workspace = self.workspace.clone();
let this = cx.entity();
let can_open_git_graph = cx.has_flag::<GitGraphFeatureFlag>();
Some(
h_flex()
@ -4607,18 +4605,16 @@ impl GitPanel {
),
)
})
.when(can_open_git_graph, |this| {
this.child(
panel_icon_button("git-graph-button", IconName::GitGraph)
.icon_size(IconSize::Small)
.tooltip(|_window, cx| {
Tooltip::for_action("Open Git Graph", &Open, cx)
})
.on_click(|_, window, cx| {
window.dispatch_action(Open.boxed_clone(), cx)
}),
)
}),
.child(
panel_icon_button("git-graph-button", IconName::GitGraph)
.icon_size(IconSize::Small)
.tooltip(|_window, cx| {
Tooltip::for_action("Open Git Graph", &Open, cx)
})
.on_click(|_, window, cx| {
window.dispatch_action(Open.boxed_clone(), cx)
}),
),
),
)
}

View file

@ -131,14 +131,14 @@ if [[ "$DRY_RUN" == "true" ]]; then
echo "Would auto-apply suggestions to docs via Droid and create a draft PR."
echo "Model: $MODEL"
echo ""
# Show each suggestion file
for file in $(echo "$MANIFEST" | jq -r '.suggestions[].file'); do
echo "--- $file ---"
git show "origin/$SUGGESTIONS_BRANCH:$file" 2>/dev/null || echo "(file not found)"
echo ""
done
echo -e "${YELLOW}=== END DRY RUN ===${NC}"
echo ""
echo "Run without --dry-run to create the PR."
@ -213,7 +213,7 @@ fi
FLAGGED_PRS=()
FLAGS_FILE="$REPO_ROOT/crates/feature_flags/src/flags.rs"
if [[ -f "$FLAGS_FILE" ]]; then
# Extract feature flag struct names (e.g. SubagentsFeatureFlag, GitGraphFeatureFlag)
# Extract feature flag struct names (e.g. SubagentsFeatureFlag)
FLAG_NAMES=$(grep -oE 'pub struct \w+FeatureFlag' "$FLAGS_FILE" | awk '{print $3}')
if [[ -n "$FLAG_NAMES" ]]; then
FLAG_PATTERN=$(echo "$FLAG_NAMES" | tr '\n' '|' | sed 's/|$//')
@ -538,10 +538,10 @@ echo -e "${GREEN}PR created:${NC} $PR_URL"
if [[ "$KEEP_QUEUE" != "true" ]]; then
echo ""
echo "Resetting suggestions queue..."
git checkout --orphan "${SUGGESTIONS_BRANCH}-reset"
git rm -rf . > /dev/null 2>&1 || true
cat > README.md << 'EOF'
# Documentation Suggestions Queue
@ -562,19 +562,19 @@ run `script/docs-suggest-publish` to create a documentation PR from these sugges
3. At preview release, suggestions are collected into a docs PR
4. After docs PR is created, this branch is reset
EOF
mkdir -p suggestions
echo '{"suggestions":[]}' > manifest.json
git add README.md suggestions manifest.json
git commit -m "Reset documentation suggestions queue
Previous suggestions published in: $PR_URL"
# Force push required: replacing the orphan suggestions branch with a clean slate
git push -f origin "${SUGGESTIONS_BRANCH}-reset:$SUGGESTIONS_BRANCH"
git checkout "$ORIGINAL_BRANCH"
git branch -D "${SUGGESTIONS_BRANCH}-reset"
echo "Suggestions queue reset."
else
git checkout "$ORIGINAL_BRANCH"