feat(vault): pick a notebook vault folder on first run
Some checks failed
CI / Windows build (push) Has been cancelled
Some checks failed
CI / Windows build (push) Has been cancelled
Phase 0 of the file-based storage plan (docs/plans/ 2026-06-24-file-based-storage.md). Foundation only — no editor or DB change yet. - VaultService (SharedPreferences): stores the vault root path, vaultRootValid() = path set AND directory exists. - VaultSetupScreen: first-run folder picker (file_picker, Windows). - main.dart gates HomeScreen behind a valid vault, re-prompting if the saved folder is gone. - Settings: a Vault section to change the folder. Editors still use SQLite; later phases move annotations into per-file sidecars under the vault. analyze clean, tests green.
This commit is contained in:
@@ -571,6 +571,84 @@ abstract class AppLocalizations {
|
||||
/// In en, this message translates to:
|
||||
/// **'Close'**
|
||||
String get close;
|
||||
|
||||
/// No description provided for @vaultSetupTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Choose your vault'**
|
||||
String get vaultSetupTitle;
|
||||
|
||||
/// No description provided for @vaultSetupHeadline.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Pick a folder for your notebooks'**
|
||||
String get vaultSetupHeadline;
|
||||
|
||||
/// No description provided for @vaultSetupBody.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'BadNote stores your notebooks inside one folder you choose — like an Obsidian vault. Pick a folder you control (e.g. a synced folder) so your notes travel with their files.'**
|
||||
String get vaultSetupBody;
|
||||
|
||||
/// No description provided for @vaultChooseFolder.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Choose folder'**
|
||||
String get vaultChooseFolder;
|
||||
|
||||
/// No description provided for @vaultMissingTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Your vault folder is missing'**
|
||||
String get vaultMissingTitle;
|
||||
|
||||
/// No description provided for @vaultMissingBody.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The folder you picked can\'t be found (it may have been moved, deleted, or on a drive that\'s unplugged). Relocate it or pick a new one.'**
|
||||
String get vaultMissingBody;
|
||||
|
||||
/// No description provided for @vaultPickFailed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Couldn\'t open the folder picker: {error}'**
|
||||
String vaultPickFailed(String error);
|
||||
|
||||
/// No description provided for @vaultNotWritable.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'That folder isn\'t writable. Please choose another.'**
|
||||
String get vaultNotWritable;
|
||||
|
||||
/// No description provided for @vaultSection.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Vault'**
|
||||
String get vaultSection;
|
||||
|
||||
/// No description provided for @vaultFolderLabel.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Vault folder'**
|
||||
String get vaultFolderLabel;
|
||||
|
||||
/// No description provided for @vaultNoneSelected.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No folder selected'**
|
||||
String get vaultNoneSelected;
|
||||
|
||||
/// No description provided for @vaultChangeFolder.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Change vault folder'**
|
||||
String get vaultChangeFolder;
|
||||
|
||||
/// No description provided for @vaultUpdated.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Vault folder updated'**
|
||||
String get vaultUpdated;
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
|
||||
Reference in New Issue
Block a user