Я вот пытаясь уснуть, думаю как мне хранение организовать ...
Есть вариант:
При создании не записывать в файл (т.к это дефолтная фигня с названием "New Note"), а вот при изменении названия - записывать в файл уже.
Маленьшее изменение - файл полностью перезаписывается.
Т.е на время удаеляется, и записывается новым содержимым.
Что касается при новом запуске вкладки / программы, то каждый раз при нажатии на кнопку, которая включает окно с заметками - будет запускаться и заметки ... Или же уже в запущенном окне будут ...
Попробуй двойную буферизацию. Создавай файл, а потом меняй старый на новый (модифицированный). имя файла - дата в человекочитаемом формате. Пиши в файл асинхронно, но делай flush в деструкторе.
Если чувствуешь в себе силы, можно упороться в одном файле. Пишешь свой формат, где есть заголовок - смещение на её реальное расположение. Пишешь строки, нумеруя каждую строку порядковым номером. В случае модификации всей строки, ты просто дописываешь в конец файла модифицированную строку, и в заголовке меняешь оффсет. А в старой строке, на место индекса пишешь -1. Или иное MagicValue, обозначающее невалидность.
После, в очерденом закрытии файла, читаешь счетчик строк (его тоже надо учесть в заголовке файла), у которых порядковый номер -1, и если их набролось много (к примеру, больше 10), то создавай новый файл, и копируй в него старый построчно, за исключением строк с порядковым -1.
После, меняй старый - новым.
Можно, ради быстродействия (не факт), указывать ещё и размер каждой строки в заголовке строки, рядом с номером строки. Тогда читать строки можно будет не потоково, до \n, а сразу весь блок, т.к. размер тебе известен.