fix: simplify revision diff selection into a flat list

Revisions still used ancestry lanes and placed author/date/bookmark metadata before the summary. Show short change IDs and summaries first, move metadata to a dimmed detail row, and remove the obsolete picker graph projection.
This commit is contained in:
Valdemar Lorenzen
2026-11-05 14:54:03 +01:00
parent 1afc896cab
commit 2368091d93
6 changed files with 40 additions and 293 deletions
-69
View File
@@ -1688,75 +1688,6 @@ fn graph_state() -> DiffState {
state
}
#[test]
fn picker_graph_preserves_forks_merges_and_marks_filtered_ancestry() {
let mut state = graph_state();
let graph = state.picker_graph();
assert_eq!(graph.len(), 5);
assert_eq!(graph["merge"][1].trim_end(), "├─┐");
assert_eq!(graph["right"][1].trim_end(), "├─┘");
assert!(!graph.values().flatten().any(|prefix| prefix.contains('~')));
state.category = 1;
state.refilter();
assert_eq!(state.entries().len(), 3);
assert_eq!(
state
.graph_revision(state.entries().nth(1).unwrap())
.unwrap()
.0,
"merge"
);
assert!(matches!(
state.entries().nth(1).unwrap().target,
RevisionTarget::Bookmark { .. }
));
state.category = 0;
state.query = "left root".into();
state.refilter();
assert!(state.picker_graph().is_empty());
assert_eq!(state.entries().len(), 1);
state.before = Some(state.catalog.as_ref().unwrap().entries[1].clone());
state.query = "right".into();
state.refilter();
assert_eq!(state.picker_graph().len(), 2);
assert!(state.picker_graph()["merge"][1].contains('~'));
}
#[test]
fn graph_crossings_do_not_join_unrelated_ancestry() {
let mut state = DiffState::new();
let mut catalog = Catalog {
kind: RepoKind::Jujutsu,
entries: Vec::new(),
graph: Default::default(),
notice: None,
};
for (id, parents) in [
("a", vec!["x"]),
("b", vec!["y"]),
("merge", vec!["x", "z"]),
("x", vec![]),
("y", vec![]),
("z", vec![]),
] {
catalog.entries.push(revision(
RevisionTarget::Commit(id.into()),
id,
"",
Category::Revisions,
));
catalog.graph.insert(
id.into(),
RevisionGraph {
parents: parents.into_iter().map(String::from).collect(),
..Default::default()
},
);
}
state.apply_result(1, Ok(Outcome::Catalog(catalog)));
assert_eq!(state.picker_graph()["merge"][1].trim_end(), "├─╪─┤");
}
#[test]
fn before_identity_survives_query_and_category_without_duplicate_graph_nodes() {
let mut state = graph_state();