Changelog (2026-01-13 to 2026-03-23)
Spotlight
This release delivers three major initiatives that dramatically reshape Logseq’s architecture and user experience:
-
New Sync Architecture (Worker Sync) with Self-Hosted Option — Complete rewrite of the real-time collaboration and sync engine, moving to a worker-based architecture with Cloudflare D1 metadata, R2 storage for snapshots and large block titles, end-to-end encryption (E2EE), sync checksums, chunked graph import/export for large graphs, collaborative presence indicators, and robust offline conflict resolution with rebase semantics. This replaces the legacy RTC implementation and brings significantly improved reliability and performance.
-
Keyboard Shortcut Redesign — Ground-up redesign of the keymap settings UI with a new three-mode shortcut badge component (inline, glow, compact), full keyboard accessibility (arrow navigation, ARIA roles, focus management), two-tier conflict detection (exact vs prefix), inline undo feedback, theme-aware keycap animations, shimmer sweep highlights, and intelligent cross-handler conflict resolution. The settings page now suppresses action execution while browsing shortcuts.
-
Logseq CLI — New command-line interface for programmatic graph interaction, offering offline search, Datascript queries, block/page/tag CRUD operations, graph import/export, doctor diagnostics, sync integration, shell completions (bash/zsh), and a db-worker-node backend. Developers and power users can now manage Logseq graphs entirely from the terminal.
New Feature
Real-Time Collaboration & Sync
-
Implement worker-based sync architecture with Cloudflare D1 metadata and R2 storage (75ff633380)
-
Add end-to-end encryption (E2EE) for graphs with per-entity leaf node encrypt/decrypt (1f71f9e78e)
-
Add sync checksum for data integrity verification (917309113f)
-
Add sync rebase with offline conflict resolution (576bcc5132)
-
Implement recycle (soft-delete) semantics for synced blocks (174cdfd865)
-
Add collaborative editing user avatar presence indicators (36c5afeece, d181b1bfa9)
-
Add emoji reactions to blocks (05be455371)
-
Add graph member management — invite collaborators, remove access, and leave graphs (59e1cd9af9, 35d28a976e)
-
Support zip-based graph import and export with progress bar (199ecb6bbd, 267587a551)
Keyboard Shortcuts
-
Redesign keyboard shortcut component with 3 display modes: inline, glow, and compact (67c123b4ed)
-
Implement V3 shortcut customization popover with two-tier conflict detection (def3dfb233)
-
Add tiered prefix-conflict banners and cross-handler detection (1cd7cad8ae)
-
Add inline compact keycaps in prefix-conflict banners (22a165472a)
Bi-directional Properties
-
Add bi-directional property support with class-scoped relationships (3f8c6cde92)
-
Add async query support for bi-directional properties (164d1c908c)
Search (Cmd+K)
-
Add code search functionality (cacf846bd2)
-
Implement Cmd+K state persistence and search options (aa74295d44)
-
Add current page badge with context-aware filtering (6b1f4f4ac4)
-
Add snippet highlighting with windowing for multi-term queries (3f8be4f3ed, 968a730724)
-
Implement scroll helpers for focus visibility and wheel anchoring (4cd5bfc102)
Import/Export
-
Add template import support in exporter (371b1d5301)
-
Add support for Template, Math blocks and Cards in exporter (ecad45531d)
-
Add code snippet extraction functionality in exporter with UI options (1c351aebff)
-
Support Zotero linked file import (zotfile-style) (1162f33c77)
Plugin System
-
Add support for invoking external plugin commands (55216f36f0)
-
Add support for DB graphs in plugin UI (6be47c18be)
-
Add managing property choice values API (e94959690d)
-
Add
setPropertyNodeTagsAPI for managing property tags (af51223ff6) -
Add today page API (110084e4ba)
Internationalization
- Add comprehensive initial Arabic translation (3d5758e9b0)
Enhancement
Sync & Collaboration
-
Stream snapshot import in batches for large graphs (f6b5a100d6)
-
Parallel asset uploading for faster graph sync (e18751c54e)
-
On-demand asset download instead of bulk download (53ca427ac7)
-
Gzip graph download for reduced transfer sizes (8bbc0fede8)
-
Upload large block titles to R2 storage (e7bb0963d4)
-
Cache user keys to speed up first sync (6bf5ae4682)
-
Use cache token for faster connection handshake (7bb9b50764)
-
Improve sync startup latency and connection flow (560ce3ca4f)
-
Improve snapshot import progress UX (80b48b7b86)
-
Preserve rebased tx boundaries for RTC (e3366e8e07)
-
Trigger sync after creating new remote graph (d46b66c228)
-
Fetch graphs automatically after login (1aa16b5355)
Keyboard Shortcuts
-
Arrow key navigation and focus management in keymap settings list (e45fb29061, 3aa5a36d4a)
-
Replace menu shortcut hints with shui components with glow style (ffbcd4fc90)
-
Suppress shortcut actions on keymap settings page (animate-only mode) (3359396c3d)
-
Theme-aware glow and brightness keycap animations (00e2a91f25)
-
Accent shimmer sweep row highlight on shortcut trigger (4dcdbcc44c)
-
Responsive keymap tab with ResizeObserver-based width sync (06d890f6ca)
-
Gradient fade header when search removes section headers (bf7ebc8d7e)
-
Redesign keymap header with search-first layout and contextual status (1594a122cc)
-
Replace external toasts with inline undo feedback in shortcut popover (776f5abc0a)
-
Internationalize all hardcoded English strings in shortcut redesign (c3df1d857d)
-
Add ARIA live regions, role=dialog, and aria-pressed for accessibility (ed0d6f0142)
-
Suppress animations for prefers-reduced-motion (6502bb53f6)
Search (Cmd+K)
-
Enhance mouse hover effects and highlight styles in search results (f49e472402)
-
Improve keyboard and mouse highlight handling (4514e0e989)
-
Enhance lazy visibility handling with root parameter for scroll management (8408cf55f3)
-
Optimize item rendering frequency and scrolling behavior (72c97dae21)
-
Improve input handling and reset scroll position on input change (73b6b7e0a4)
Export/Import
-
Export-EDN now exports property history (b18056c910)
-
Export-EDN exports nested children of text-property values (8216e1a177)
-
Export-EDN supports
:build/propertiesin property values (5e43f89af2) -
Export-EDN handles assets (991e38419a)
-
Ensure export EDN is idempotent across import and export (f28e001b5a)
UI/UX
-
Improve headings function to include normal text option (767540d85b)
-
Align for the image asset block container (1b0db68098)
-
Polish settings item alignments (ffdc77c5c4)
-
Add loading state and skeleton UI for user list (fa9a07b8df)
-
Add styles for priority level icons in property component (f6996c5e3e)
-
Block collapse state isolated per container (a0f737e3a8)
-
Copy as/export add open blocks only (a092470392)
-
Published page shows tags prefixed (7554e4e3f9)
-
Improve property sorting and display with plugin name (f818ba0e59)
-
Adjust image width in property value class (13e9781a1c)
Developer Tools
-
Add linters for db-sync module (cd7c1ef50e)
-
Add workflow to run db-sync tests (c1ca626b36)
-
Add linters and workflow for publish module (cd8f312b9f)
-
Able to generate large graphs with >1M blocks for testing (b1ceaa1216)
-
Add Sentry error collection (ef17ce59c3)
-
Add publish documentation (5d4a91eb7e)
Bug Fix
Sync & Collaboration
-
Handle recreated lookup refs in sync (2801276ce1)
-
Disable checksum for encrypted graphs (6ca2cc4312)
-
DB-worker stops working after hot-reload (55834b541d)
-
Improve undo/redo merge reliability for sync (7c5146afcd)
-
Cut-paste losing children after sync (7cddf537da)
-
Undo should skip conflicted move instead of clearing stack (c1a9bee798)
-
Batch tx should separate schema ops from data ops (e7bcdb0bcc)
-
Fix malformed remote tx including temp entity IDs (8d48e93ccb)
-
Fix missing :block/title during sync (ae9a37c889)
-
Reject stale pull response (7e565aeeeb)
-
Auto-reconnect after long sleep with websocket health check (dbef84fbb4)
-
Refresh access token when expired (dcb26353ec)
-
Undo/redo shouldn’t write invalid data to server (667e0d7f05)
-
Fix large graph download OOM (1b4ad6a416)
-
Fix attrs missing when rebase (fb57514530)
-
Offline conflicts with deleted nodes, parent cycle, and extends cycle (2f1b70b865, 0cf01ba780, ebf768e340)
-
Isolate chunked import sessions and close failed import setup DBs (6c3a94ea04, 0007c48003)
-
Reduce memory usage when encrypting large graphs (98e262d118)
-
Isolate E2EE import temp pool and reduce finalize memory (880d7d2c3f, 1b4943350b)
-
Server shouldn’t delete addrs; drop stale lookup-ref tx datoms (7386eec6db, 5d602c9d58)
-
Fix collaborator invite not working with E2EE (9e7f9332d0)
Keyboard Shortcuts
-
Limit prefix-conflict detection to same-handler only (e8bddda236)
-
Handle prefix conflicts and disabled edits (b3c9f75eec)
-
Fix conflict detection between block-editing and editor-global handlers (01f9904062)
-
Fix Option key recording and show ⌥ symbol on macOS (19c878cba0)
-
Fix chord-prefix shortcuts not being stripped during reassign (e8542d3028)
-
Fix focus loss in customize popover after Reassign and state transitions (8088b6f3f8)
-
Fix plain key recording, conflict detection precision, and quote formatting (82d699fc22)
-
Normalize undo bindings to prevent false Custom classification (814acd49fd)
-
Decompose customize dialog, fix reset conflict race, and auto-close popup (33dcefaa06)
Import/Export
-
Fix import of multi-word tags (3d88cd1fd6)
-
Fix import of namespace tags (e7bfd53a7c)
-
Fix import of unlinked PDF annotations (23d6f1538a)
-
Fix importing journals with tags (98ab051328)
-
Fix importing property values that change (4cc8ef3ce4)
-
Fix imported Template blocks property handling (fdf1a8f8cc, ae003f1469)
-
Fix Zotero import issues — linked files, picture highlights, and label/filename inconsistency (40c9c86129)
-
Fix UI import of example graph becoming invalid (6acf799b68)
-
Fix CLI import results in invalid nodes (e7b5c9a6b6)
-
Fix export tests with large graph having duplicate built-in pages (16beb18c92)
Search
-
Make FTS index build non-blocking (d8e7032e78)
-
Fix overlapping term matching for highlighted snippets (ad2a067ab7)
-
Fix unnecessary highlighted snippets in [[]] block search results (6263ba06d9)
-
Ensure case-insensitive comparison for page name matching (77305aaf19)
UI/UX
-
Fix Cmd+K hint showing Mac icon on Windows (2729eb58bd)
-
Fix ‘Copy ref’ rendering (()) instead of [[]] (3ae0ab9f5d)
-
Fix left sidebar resizer activating when sidebar is closed (5fe47fb69f)
-
Fix right sidebar toggle functionality (e6b5b1e372)
-
Fix blocks selection bar can’t be opened after visiting Graph view (5658b32153)
-
Fix incorrect sticky position for table header (e203d0465c)
-
Fix dropdown menu for choices values display (f023071ac3)
-
Fix UI refresh loop with custom journal format (a0b109399d)
-
Fix today journal created-at/updated-at keep updating (ed240ac01e)
-
Fix collapse button alignment on mobile (ea42e7595b)
-
Fix bullet disappearing when dragging (9c0bb07b82)
-
Fix drag-and-drop creating a blank asset (afe21733a2)
-
Fix CSS overflow for flex items (3c9c18500f)
-
Fix new window behavior (2cabb09248)
Database & Data Integrity
-
Fix re-ordered tx data by replace-attr-retract-with-retract-entity (eaa0d6ff96)
-
Fix invalid data when deleting closed value (3c9dee98da)
-
Fix react query not computed after importing data (d4d408f47e)
-
Fix can’t paste block with children to empty target (8116067f85)
-
Fix can’t cut-paste blocks to empty target (b0ba993e0c)
-
Fix journal title shouldn’t be updated (regression) (4bf39b576b)
-
Cleanup processes all retracted entities including pages (e6e61e235a)
-
Fix get-bidirectional-properties performance (cdc1bc1d32)
Plugin System
-
Fix updateBlock plugin API not updating UI (546499ef04)
-
Fix return value in hook-lifecycle-fn! (3a3e14b790)
-
Fix published :url :many property values (22912bdd7e)
-
Fix case page retrieval with safe navigation (911caa0673)
PDF & Assets
-
Set correct MIME type for Blob based on file extension (9994f7b70d)
-
Include last visit page in highlights response (cfbceea453)
-
Update PDF drag-and-drop data format to use double brackets (4f54340115)
Mobile
-
Fix mobile sync indicator latency (a1cbcf8aaa)
-
Notify when no microphone permission (99fb07586e)
-
Show camera warning when no permission (108098dd4d)
-
Simplify user login handling for native platforms (ffb82f1ccc)
Performance
-
Reduce memory usage during large graph encryption (98e262d118)
-
Make search index build non-blocking (d8e7032e78)
-
Optimize sync startup latency with cache tokens and key caching (560ce3ca4f, 6bf5ae4682)
-
Optimize get-bidirectional-properties (cdc1bc1d32)
-
Stream snapshot imports in batches (f6b5a100d6)
-
Efficient undo/redo validation (a02d157cab)
-
Optimize item rendering frequency in Cmd+K (72c97dae21)
Refactoring
Architecture
-
Remove file-based graph code, whiteboards, tldraw, and org-mode from the codebase (0e2a223b2b) — comprehensive cleanup of legacy file graph references across frontend, electron, graph-parser, and deps
-
Separate sync into modules (16f775c9ad)
-
Simplify remote sync flow (071677859d)
-
Batch outliner ops via temp conn (68476aee3e)
-
Keep worker as thin as possible; use reitit for worker routes (f46c245788, cd0a2568b1)
-
Remove legacy RTC implementation and tests (8472d03826)
-
Remove repeat definitions of ls-api-call! (e5c378f6d9)
-
Graph download switched to use R2 snapshot (eeabd54d87)
-
Use Cloudflare D1 instead of DO for graph metadata (f0efeb31bc)
Code Quality
-
Defer prefix-conflict banner to post-reassign state (a3471e0406)
-
Deduplicate binding resolution in ui.cljs (befe49275c)
-
Use cond-> for container-attrs in shortcut badge components (8d62b4d6bc)
-
Simplify db sync for recycle semantics (fb76b061b4)
-
Convert remaining frontend tests to db graphs (6c876a0be2, e07ff6dd88)
Chore
-
Updated to team certificate for builds (8150230772)
-
Bump to version 2.0.1 (0d0d8b7f32)
-
Bump DataScript dependency (83a716f907)
-
Bump CLI to 0.4.3 (cbf67bffc8)
-
Bump latest bb (9bac0416a4)
-
Bump nbb-logseq to include DataScript fix (2e8d7c6303)
-
Tech stack upgrade (adbaf10abc)
-
Normalize line endings via .gitattributes (7fce43367a)
-
Remove unused file-sync bb tasks and file graph code (f57d8a0625, ed805f039f)
-
Add D1 SQL table indexes (0055e8128c)
-
Add sync deploy and test workflows (e028b223a2, ecc579aecc)
-
Add ADR for strengthening simulation tests (9ff7b99bd4)
-
Prefix deps workflows with ‘deps-’ (3e0d57bc32)
Upcoming (Unmerged Branches)
Logseq CLI (feat/cliable)
-
Full command-line interface with verb-based subcommands:
add,show,list,move,upsert,query,export,import,doctor,sync,completion(7b2ef7fce2) -
Datascript query execution from the terminal (6f3d074195)
-
Shell completion generation for bash and zsh (051f6381e3, c4d52878bc)
-
Block upsert with custom many-property JSON support (791b3e98f7)
-
Tag and property management commands (85ebeb976e)
-
Doctor command for graph validation (4c10100aa6)
-
Sync download with real-time progress (a89ffb6b0f)
-
Graph list showing current graph, sorting, and field selection (0900b9b41b, fbfb589c52)
-
Linked references display in show command (33b8a3207d)
-
Desktop app refactored to use db-worker-node backend (cafe755091)
-
CLI E2E test suite with shell-based integration coverage (2cc0735e3a)
Package Upgrade (refactor/package-upgrade)
-
Upgrade Capacitor to v8, Electron Forge, better-sqlite3 to v12, Sentry to v8, Playwright to 1.58 (862c9ec150, 9e57698565, 6a276cba0f)
-
Upgrade KaTeX, fuse.js, webpack, postcss ecosystem, and many more runtime/dev dependencies (397d46ac3b, 2aedbc06a5, 05f9f5ab36)
-
Remove dead dependencies: shepherd, tippy, react-draggable, storybook, posthog-js, meander, electron-builder (f156e739c7, cec005f02f, ba54f82beb)
-
Replace grapheme-splitter with native Intl.Segmenter (ad13d16ca4)
-
Replace electron-deeplink with native Electron API (d1b7f1d86f)
-
Upgrade DOMPurify and unify sanitizer path (afe42a4cb5)
-
Upgrade clj-kondo to 2026.01.19 across all deps (afc97fb165)
-
Update Tabler icon font assets (a67fad3276)
Libs Restructuring (refactor/libs)
-
Optimize message transport using MessageChannel for faster plugin communication (a9f1df22ae)
-
Add hosted renderer registration and resolution for right sidebar (370e1d55b2, e20efb0c9f)
-
Add
get_current_routeAPI (9990a58aee) -
Streamline handshake process and improve error handling (677c8c2791)
-
Improve layout data handling and restore logic (0e81b38f6d)
-
Marketplace plugin installation E2E tests (03336eb192)
Icon Context Menu (enhance/set-icon-with-context-menu)
- Add context menu option to set block icons with icon picker and color auto-selection (56d89c48a9, 2b22f2bde1, 7af425838d)
Custom Block Properties Renderer (enhance/custom-block-properties-renderer)
- WIP: Add custom block properties renderer with matching conditions for plugin-driven property display (e033b1b5cc)
Image Alignments (feat/alignments-for-image)
-
Add alignment options (left/center/right) for image asset blocks with keyword-based property (d377b2d2f7, 536b1ca963)
-
Select block on double-click in image asset container (21a2a2e915)
Import Fixes (fix/import-issues)
-
Fix block attribute names containing “/” after importing (02e17ec69f)
-
Fix multiline blocks containing attributes being truncated and losing data after importing (25021eb15b)
Contributors
Thank you to all contributors who made this release possible:
`@Ashutosh-Singh, @briansunter, @charlie, @Danzu, @Gabriel-Horner, @ibs-allaow, @jariji, @matugong, @Mega-Yu, @rcmerci, @Rustum-Zia, @scheinriese, @Tienson-Qin, @Tomasz-Kontusz`