/ 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)