Collapse a project's sessions by clicking its name

This commit is contained in:
Georg Bauer
2026-07-25 23:58:21 +02:00
parent e44680541d
commit ce18a2db9b
7 changed files with 49 additions and 17 deletions

View File

@@ -178,7 +178,7 @@ pub(crate) enum Message {
ProjectNameChanged(String),
ConfirmProject,
CancelProject,
SelectProject(i32),
ToggleProject(i32),
DeleteProject(i32),
CreateSession(i32),
DiscardSession(i32),
@@ -718,20 +718,22 @@ impl App {
self.project_name_input.clear();
self.error = None;
}
Message::SelectProject(project_id) => {
if self.generating {
self.error =
Some("Stop the active generation before changing sessions.".into());
// Sidebar-only: collapsing a project leaves the open chat alone.
Message::ToggleProject(project_id) => {
let Some(item) = self
.projects
.iter_mut()
.find(|item| item.project.id == project_id)
else {
return Task::none();
};
let collapsed = !item.project.collapsed;
item.project.collapsed = collapsed;
if let Some(database) = &mut self.database
&& let Err(error) = database.set_project_collapsed(project_id, collapsed)
{
self.error = Some(error);
}
self.remember_project(project_id);
self.selected_session = None;
self.conversation.clear();
self.composer.clear();
self.context_used = 0;
self.context_limit = self.preferences.context_tokens.max(0) as u32;
self.tokens_per_second = None;
self.error = None;
}
Message::DeleteProject(project_id) => {
if self.generating && self.selected_project == Some(project_id) {