Feature history on the left side, with contiguous folders (#449)

The feature history can sit in a panel on the left, with folders that hold one unbroken run of features, drag and drop as one undo step, and a resizable divider. Timeline folders save under format 17.
This commit is contained in:
Alexander Nutz authored and GitHub committed 2026-10-13 13:01:31 -04:00
1 parent be55a49b04
commit a8b3b21fd0
17 files changed
+2336 -37

No files matched your search

+11 -3
View File
@@ -4,7 +4,7 @@
//! commands ([`SolveApp::run`]). Nothing here owns design data. The layout follows the familiar
//! parametric-CAD desktop: application bar, a toolbar of workspace tabs and panels, the browser
//! on the left, the 3D viewport with an axis view and navigation bar, the command dialog on the
//! right of the viewport, the command palette and the timeline at the bottom.
//! right of the viewport, the command palette and a bottom or left-sidebar feature timeline.
#![deny(clippy::unwrap_used, clippy::expect_used, clippy::panic, clippy::unimplemented, clippy::todo, clippy::unreachable)]
#![forbid(unsafe_code)]
@@ -117,6 +117,7 @@ pub mod sketch_tools;
pub mod stand_up;
pub mod theme;
pub mod timeline;
pub mod timeline_left;
pub mod titlebar;
pub mod toolbar;
pub mod toolbar_custom;
@@ -1077,12 +1078,19 @@ impl SolveApp {
}
}
toolbar::toolbar(self, ui);
if self.ui.show_timeline {
let left_timeline = self.ui.show_timeline && self.preferences.timeline_left;
if self.ui.show_timeline && !left_timeline {
timeline::timeline(self, ui);
}
palette::palette_bar(self, ui);
if self.ui.show_browser {
browser::browser(self, ui);
if left_timeline {
browser::browser_below_timeline(self, ui);
} else {
browser::browser(self, ui);
}
} else if left_timeline {
timeline_left::left_panel(self, ui);
}
preview::update(self, ui.ctx());
egui::CentralPanel::default().frame(egui::Frame::NONE).show(ui, |ui| {