fix: less fragile dev brain sources revisions

This commit is contained in:
Georg Bauer
2026-07-28 20:47:44 +02:00
parent ed8f7c4a01
commit 9b5b3a2f6a
4 changed files with 156 additions and 86 deletions

View File

@@ -67,6 +67,7 @@ pub(crate) struct App {
config: Config,
preference_draft: PreferenceDraft,
preference_error: Option<String>,
restore_dev_brain_confirmation: bool,
selected_project: Option<i32>,
selected_session: Option<i32>,
/// Unsaved sessions, keyed by project. A draft only becomes a `sessions` row
@@ -361,6 +362,8 @@ pub(crate) enum Message {
ChooseDevBrainVault,
DevBrainVaultPicked(Option<PathBuf>),
RestoreDevBrainDefaultGuides,
ConfirmRestoreDevBrainDefaultGuides,
CancelRestoreDevBrainDefaultGuides,
PreferenceContextChanged(String),
PreferenceMaxTokensChanged(String),
PreferenceSystemPromptAction(text_editor::Action),
@@ -526,6 +529,7 @@ impl App {
config,
preference_draft,
preference_error: None,
restore_dev_brain_confirmation: false,
selected_project: last_project,
selected_session: None,
drafts,
@@ -669,6 +673,7 @@ impl App {
config,
preference_draft,
preference_error: None,
restore_dev_brain_confirmation: false,
selected_project: None,
selected_session: None,
drafts: HashMap::new(),
@@ -951,6 +956,7 @@ impl App {
Message::ClosePreferences => {
if let Some(id) = self.preferences_window {
self.preference_error = None;
self.restore_dev_brain_confirmation = false;
return window::close(id);
}
}
@@ -1033,6 +1039,7 @@ impl App {
if self.preferences_window == Some(id) {
self.preferences_window = None;
self.preference_error = None;
self.restore_dev_brain_confirmation = false;
}
if self.help_window == Some(id) {
self.help_window = None;
@@ -1048,6 +1055,10 @@ impl App {
Message::CancelQuit => self.quit_confirmation = false,
Message::Escape(id) => {
if self.preferences_window == Some(id) {
if self.restore_dev_brain_confirmation {
self.restore_dev_brain_confirmation = false;
return Task::none();
}
return self.update(Message::ClosePreferences);
}
if id == self.main_window {
@@ -1239,11 +1250,19 @@ impl App {
}
}
Message::RestoreDevBrainDefaultGuides => {
self.preference_error = None;
self.restore_dev_brain_confirmation = true;
}
Message::ConfirmRestoreDevBrainDefaultGuides => {
self.restore_dev_brain_confirmation = false;
self.preference_error = crate::dev_brain::restore_default_guides(Path::new(
&self.preference_draft.dev_brain_vault_path,
))
.err();
}
Message::CancelRestoreDevBrainDefaultGuides => {
self.restore_dev_brain_confirmation = false;
}
Message::PreferenceContextChanged(value) => {
self.preference_draft.context_tokens = value;
self.preference_error = None;