/ CHANGELOG.md
CHANGELOG.md
1 # Changelog 2 3 All notable changes to Mnemonic will be documented in this file. 4 5 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 6 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 8 ## [2.1.0] - 2026-01-25 9 10 ### Added 11 12 - **Three-Way Merge for Sync** - Intelligent conflict resolution that prevents data loss when multiple browsers or Syncthing make concurrent changes 13 - Stores ancestor state after each successful sync 14 - Computes local changes (diff vs ancestor) and external changes separately 15 - Merges both change sets together - additions from both sides are preserved 16 - Falls back to timestamp-based merge when no ancestor exists 17 - New files: `src/lib/sync/ancestor-storage.ts`, `src/lib/sync/merge-utils.ts` 18 19 - **CacheIO Pattern for Python Daemon** - In-memory caching with file persistence 20 - Fast reads from memory (no file I/O per API request) 21 - Automatic external change detection via mtime (detects Syncthing updates) 22 - Thread-safe operations with proper locking 23 24 - **OS-Level File Locking** - `fcntl.flock()` based locking in Python daemon 25 - Prevents concurrent write corruption 26 - Exclusive locks for write operations 27 - Proper timeout handling 28 29 - **Atomic File Writes** - Temp-file-then-rename pattern 30 - Ensures readers never see partial/corrupted files 31 - Safe even during power failures 32 33 - **Comprehensive Documentation** - `docs/three-way-merge-and-cacheio.md` 34 - Detailed architecture documentation 35 - Algorithm explanations with diagrams 36 - Troubleshooting guide 37 38 ### Changed 39 40 - Sync polling interval increased from 30 seconds to 60 seconds to reduce background CPU usage 41 - Updated `docs/sync-and-backup.md` with new three-way merge information 42 - Python daemon now uses CacheIO instead of direct file I/O 43 44 ### Fixed 45 46 - Data loss when Syncthing updates file while local changes are being made 47 - Duplicate tabs appearing after sync (now deduplicated by normalized URL) 48 - Race conditions in concurrent read/write operations 49 50 ## [2.0.0] - 2026-01-25 51 52 ### Added 53 54 - Todoist integration for task management within workspaces 55 - Versioned backup system with automatic pruning 56 - Backup browser modal for viewing and restoring backups 57 - Notes sidebar with markdown support 58 - Archive functionality for workspaces 59 60 ### Changed 61 62 - Major UI refresh with improved phosphor theme 63 - Restructured sync system for better reliability 64 65 ## [1.0.0] - 2026-01-23 66 67 ### Added 68 69 - Initial release 70 - Hierarchical workspace organization (Parent/Child/Standalone) 71 - Context switching between parent workspaces 72 - Tab management with save/restore 73 - Window position memory 74 - Syncthing-based cross-device sync via Native Messaging 75 - File System Access API sync option (Chrome only) 76 - Manual export/import functionality 77 - Chrome and Firefox support (MV3)