Logseq DB - Changelog

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 setPropertyNodeTags API 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/properties in 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


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_route API (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)

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`

13 Likes