* fix: only show connection lost when the server check fails too

* fix: load the macOS tray icon from the right unpacked folder (#1728)

* fix: hide update and review buttons on disabled plugins (#1745)

* fix: save the database without blocking the server, bump to 26.11.0

* fix: try the key before the password for hosts with both (Plugin-SSH-Terminal#50)

* fix: add macOS Window menu item to reopen main window

* feat: upload Mac App Store screenshots on submit

* chore: drop internal note from changelog

* chore: update translations and plugin pins

* chore: lint, format, and bump version to 26.11.0
This commit is contained in:
Luke Gustafson authored and GitHub committed 2026-11-01 17:16:04 -06:00
1 parent c759a147c6
commit 1d4eac3e20
24 files changed
+337 -56

No files matched your search

+6 -4
View File
@@ -1812,6 +1812,8 @@ async function saveMemoryDatabaseToFile(): Promise<void> {
if (!memoryDatabase) return;
try {
// Before the copy, so a write during the slow part below stays dirty.
DatabaseSaveTrigger.markClean();
const buffer = memoryDatabase.serialize();
if (!fs.existsSync(dataDir)) {
@@ -1832,11 +1834,10 @@ async function saveMemoryDatabaseToFile(): Promise<void> {
encryptedDbPath,
);
} else {
fs.writeFileSync(dbPath, buffer);
await fs.promises.writeFile(dbPath, buffer);
}
DatabaseSaveTrigger.markClean();
} catch (error) {
DatabaseSaveTrigger.markDirty();
databaseLogger.error("Failed to save in-memory database", error, {
operation: "memory_db_save_failed",
enableFileEncryption,
@@ -1855,7 +1856,8 @@ async function handlePostInitFileEncryption() {
setInterval(() => {
if (DatabaseSaveTrigger.isDirty) {
saveMemoryDatabaseToFile();
// Through the trigger so it waits for any save already running.
void DatabaseSaveTrigger.forceSave("periodic_save").catch(() => {});
}
}, 5 * 60 * 1000);
}