Repository navigation
🔍 Notesify v1.3.1 — Interactive Diff Viewer & Cross-Tab Sync
⚡ Overview
Notesify v1.3.1 introduces an intelligent, Git-style diffing experience for conflict resolution, fixes local draft caching during concurrent edits, and enables instant cross-tab editor synchronization across browser sessions.
When edits clash across tabs, Notesify isolates only the changed sentences—no more scanning thousands of unchanged words side-by-side. You can now resolve conflicts with confidence and see updates propagate in real-time.
✨ What's New
1. 🔍 Interactive Note Diff Viewer (NoteDiffViewer)
- Smart Hunk Grouping: Automatically isolates changed sentences while keeping 3 lines of context above and below.
- Unchanged Context Folding: Hides large chunks of identical text behind an interactive accordion pill (
↕ Expand 24 unchanged lines) with a 1-click "Toggle Unchanged Lines" switch. - Unified & Split View Toggle:
- Unified Diff: Clean single-column stream showing added lines in green (
+) and removed lines in red (-). - Split Diff: Side-by-side synchronized comparison columns with independent line numbers.
- Unified Diff: Clean single-column stream showing added lines in green (
- Title Diff Detection: Clear visual indication when note titles differ between versions.
2. 🛡️ Frozen Conflict Draft Snapshots
- When an Optimistic Concurrency Control (
409 Conflict) triggers, Notesify captures a frozen snapshot of your draft (conflict.localDraft). - Clicking "Keep Mine (Rebase)" now guarantees your exact local draft is rebased onto the server, preventing subsequent autosaves from contaminating the chosen resolution.
3. 🌐 Authoritative Online Reload Revalidation
- Fixed an offline-first caching edge case where refreshing a tab could perpetually serve stale local Dexie data.
- Notesify now verifies if there are pending un-synced offline edits; if none exist, reloading a note fetches the authoritative cloud version and updates local IndexedDB storage.
4. 📻 Live Cross-Tab Synchronization
- Conflict resolutions now broadcast in real time across browser tabs via
BroadcastChannel("notesify_conflicts"). - When you resolve a conflict in Tab A, Tab B’s TipTap editor automatically updates to the resolved text immediately without needing a manual refresh.
🧪 How to Test
- Diff Viewer: Edit a note in two tabs simultaneously. Force a conflict (e.g., close one tab aggressively or simulate network lag) to trigger the diff viewer.
- Cross-Tab Sync: Resolve a conflict in Tab A → Watch Tab B update instantly without refreshing.
🛠️ Technical Details & Commits
NoteDiffViewer.tsx: Lightweight diffing engine powered bydiffLineswith custom hunk boundary detection.ConflictResolutionService.ts: Preserves local draft objects at conflict time and emits{ entityId, resolution, note }payloads over custom events and BroadcastChannel.HybridNoteRepository.ts: EnhancedgetNote(noteId)with offline-guard heuristic: protects local draft if offline or queued operations exist, otherwise revalidates against remote API.TipTap.tsx: Registered live resolution listener to update editor document nodes safely with{ emitUpdate: false }.
📦 Desktop Asset
- Windows Installer:
Notesify.Setup.1.3.1.exe(~133.17 MB)