Sync-Fix, Dateinamen mit Leerzeichen, E-Mail-Dropdown, Defaults-System
- Fix: Pull überschreibt lokale Vorlagen nicht mehr (Merge statt Replace) - Fix: toFilename behält Leerzeichen und Groß-/Kleinschreibung - E-Mail in Settings ist jetzt ein Dropdown mit TB-Identitäten - Optionale defaults.local.js für vorkonfigurierte Verbindungsdaten (.gitignored)
This commit is contained in:
@@ -203,13 +203,13 @@ class SyncManager {
|
||||
|
||||
static toFilename(name) {
|
||||
return name
|
||||
.toLowerCase()
|
||||
.replace(/[äÄ]/g, 'ae')
|
||||
.replace(/[öÖ]/g, 'oe')
|
||||
.replace(/[üÜ]/g, 'ue')
|
||||
.replace(/ß/g, 'ss')
|
||||
.replace(/[^a-z0-9]+/g, '-')
|
||||
.replace(/^-+|-+$/g, '');
|
||||
.replace(/[/\\:*?"<>|]/g, '-')
|
||||
.replace(/^[\s.-]+|[\s.-]+$/g, '')
|
||||
.trim();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -291,7 +291,13 @@ class SyncManager {
|
||||
}
|
||||
}
|
||||
|
||||
await this.saveLocalTemplates(newTemplates);
|
||||
// Merge: keep local-only templates that aren't now on the server
|
||||
const existingTemplates = await this.getLocalTemplates();
|
||||
const pulledFilenames = new Set(newTemplates.map(t => SyncManager.toFilename(t.name).toLowerCase()));
|
||||
const localOnly = existingTemplates.filter(t => !t.remotePath && !pulledFilenames.has(SyncManager.toFilename(t.name).toLowerCase()));
|
||||
|
||||
const merged = [...newTemplates, ...localOnly];
|
||||
await this.saveLocalTemplates(merged);
|
||||
syncState.fileShas = newShas;
|
||||
await this.saveSyncState(syncState);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user