Release 1.0.3: refine tablet layouts, pointer selection and account sync cleanup
Build iOS / build (push) Successful in 4m45s
Build App Bundle / build (push) Successful in 7m7s

This commit is contained in:
Ayushya Amitabh
2026-10-09 00:36:42 -04:00
parent 79085874a1
commit 0a4608e6c3
67 changed files with 1740 additions and 451 deletions
@@ -194,6 +194,16 @@ final class SyncCoordinator {
/// removal under the same mutex as runs - a run still holding the old
/// state would otherwise write it back over the removal (and a transfer
/// finishing after it would leave a file the state doesn't know about).
func removeAccountData(accountId: String) async throws {
cancel(accountId: accountId, forget: true)
try await mutex.withLock {
try store.removeAccountData(accountId: accountId)
for conflict in bus.snapshot().conflicts where conflict.accountId == accountId {
bus.removeConflict(accountId: accountId, fileId: conflict.fileId)
}
}
}
func removeLocalSync(accountId: String, path: String) async {
cancelRun(accountId: accountId, invalidateQueued: true)
_ = try? await mutex.withLock {
@@ -108,6 +108,13 @@ final class SyncStore {
if changed { _ = write(Array(current).sorted(), to: file(accountId, "missing.json")) }
}
func removeAccountData(accountId: String) throws {
for directory in ["sync", "sync-state"] {
let url = base.appendingPathComponent(directory).appendingPathComponent(accountId)
if fileManager.fileExists(atPath: url.path) { try fileManager.removeItem(at: url) }
}
}
// MARK: - Removing a path's mirror
/// Deletes [path]'s local mirror (a file, or a whole folder's worth) and