Logseq

logseq.com
Logseq

Privacy-first, open-source knowledge base that works on top of local plain-text Markdown and Org-mode files. Supports lots of different note modes, including task management, PDF annotation, flashcards, whiteboards strong markdown support and more. Includes themes and extensions, backed by a strong community

No Security Audit Open Source

Logseq Source Code

Author

logseq

Description

A privacy-first, open-source platform for knowledge management and collaboration. Download link: http://github.com/logseq/logseq/releases. roadmap: https://logseq.io/p/NX4mc_ggEV

#clojure#clojurescript#git#graph#knowledge-base#knowledge-graph#local-first#markdown#note-taking#org-mode#pkm

Homepage

https://logseq.com

Repository

  • LicenseAGPL-3.0
  • Created23 May 20
  • Primary languageClojure
  • Size408,853 KB
  • Stars45,168
  • Forks2,829
  • Watchers45,168

Language Usage

Language Usage

Project Health

  • Last commit6 days ago
  • Open issues990
  • Latest releasev0.0.1

Recent Commits

  • Yuxi Liu(07 Oct 26)

    fix(repeat): step Deadline and Scheduled in the local calendar (#13615) A date picked without a time is local midnight. get-next-time added months and years in UTC, so east of UTC local midnight of March 1 (Feb 28 in UTC) came back as March 29 local, at the end of the same month (db-test #1355). Instants now step in the local calendar; :date properties keep stepping whole UTC days. Tests: new local-calendar cases; the month-end tests use local times as the date picker stores them; day and week counts are local calendar days from a fixed now.

  • Tienson Qin(07 Oct 26)

    fix(graph-parser): skip class and property roots when moving pages to Library (#13627) * fix(graph-parser): skip class and property roots when moving pages to Library move-top-parent-pages-to-library was parenting every namespace root under Library, including classes and properties. Those schemas forbid :block/parent (and class-page also forbids :block/order), so file-to-db import --validate failed. Skip Tag/Property roots; regular namespace roots still move under Library. Refs https://github.com/logseq/db-test/issues/1401 Co-authored-by: Tienson Qin <[email protected]> * test(graph-parser): use English names in Library class/property import case Avoid German fixture titles that fail the repo spell check while keeping the same class-root, property-root, and regular namespace-root coverage. Co-authored-by: Tienson Qin <[email protected]> --------- Co-authored-by: Cursor Agent <[email protected]>

  • Tienson Qin(07 Oct 26)

    fix: create missing export.css on first edit (#13591) * fix: create missing export.css on first edit First Settings edit of export.css failed when logseq/ did not exist because the Electron write path did not mkdir and the file editor treated Windows absolute paths as DB files. Co-authored-by: Tienson Qin <[email protected]> * fix: declare mkdir helper before write-file! Avoid an undeclared-var warning when creating missing parent dirs for first-save of export.css. Co-authored-by: Tienson Qin <[email protected]> --------- Co-authored-by: Cursor Agent <[email protected]>

  • Tienson Qin(07 Oct 26)

    fix: convert asset links in imported property values (#13628) * fix: convert asset links in imported property values File-to-DB import walked asset links in block bodies only. Page and block property values such as url:: ![file](../assets/file.pdf) stayed raw text and never created Asset entities. Detect those links, create assets, and rewrite the property value to an asset reference. Co-authored-by: Tienson Qin <[email protected]> * fix: close extra paren in block asset import helper Co-authored-by: Tienson Qin <[email protected]> --------- Co-authored-by: Cursor Agent <[email protected]>

  • Tienson Qin(07 Oct 26)

    fix: keep file-import class and property entities distinct (#13629) * fix: keep file-import class and property entities distinct Property-first file order reused the property page uuid when converting a later same-title tag to a class, producing a mixed Property+Tag entity. Co-authored-by: Tienson Qin <[email protected]> * fix: keep class conversion from creating extra property pages Skip only property idents/uuids during tag-to-class conversion. Broader name-lookup skipping created a spare page for property refs. Co-authored-by: Tienson Qin <[email protected]> --------- Co-authored-by: Cursor Agent <[email protected]>

  • Yuxi Liu(07 Oct 26)

    perf(startup): build the LRU caches empty (#13632) `frontend.db.subs` creates its warm block cache, and `frontend.format.block` its block parse cache, with `cljs.cache/lru-cache-factory` at load, with thresholds of 20000 and 5000. The factory seeds the cache's eviction queue with one placeholder entry per slot, in a priority map, before anything is cached; in CPU profiles of a desktop window reload `cljs.cache/build-leastness-queue` took about 120 ms (warm cache) and about 90 ms (parse cache) of the renderer's time before the home screen, and the warm cache's again whenever the store is reset for another graph. Both caches are now built empty, by a new `frontend.common.cache/empty-lru` (`cache/->LRUCache` with an empty queue). `LRUCache` evicts by the queue's real size (`miss` evicts once it holds `limit` entries), so an empty cache holds, hits and evicts the same entries. New test `empty-lru-evicts-as-the-factory-cache-test` in `src/test/frontend/db/subs_test.cljs`: the same misses, hits and evictions on an `empty-lru` and on a factory cache of the same size leave the same entries. `frontend.db.subs-test` and `frontend.format.block-test` pass.

  • Yuxi Liu(07 Oct 26)

    fix(editor): a click while the page scrolls edits the block on desktop (#13635) ## Problem On desktop, a click on a block sometimes does not start editing it. Nothing happens; a second click works. It happens when the click comes within about 250 ms of the page scrolling: for example right after moving a block with Alt+Shift+Up/Down (the moved block is scrolled into view), or right after a wheel scroll. The click lands, but the block's pointerdown handler returns early. ## Cause `block-content-on-pointer-down` ignores every pointerdown while `:ui/scrolling?` is true (060a0dd86b, "fix(mobile): don't switch to editing mode when scrolling"). `listen-to-scroll!` sets the flag on a scroll event (debounced 100 ms) and clears it 150 ms after the last one. The check exists so that the touch that scrolls a page on mobile is not taken as a tap, but it applies on desktop too, where a pointerdown is always a click. ## Fix The check applies only on mobile (`util/mobile?`). Desktop clicks during a scroll edit the block as they do at any other time. ## Test `frontend.components.block.scroll-click-test` calls the real pointerdown handler with a left click: - desktop, page scrolling: edits (fails on master) - desktop, no scroll: edits - mobile, page scrolling: does not edit (the mobile behavior is kept)

  • Yuxi Liu(07 Oct 26)

    fix(editor): Escape or Shift+Up/Down keeps the editor a click opens during its save (#13636) ## Problem A click on a block sometimes opens no editor: the block flashes into edit mode and is back to plain text at once. It happens when the click comes right after Escape or Shift+Up/Down at the first or last line of a block, before that key's save has finished. ## Cause `escape-editing` and `select-block-up-down` (the Shift+Up/Down exit at a block's edge) save the block first and wait for the save, which goes to the worker. Then they leave editing: `clear-edit!`, or `exit-editing-and-set-selected-blocks!`. A click on another block during the save opens that block's editor (pointerdown -> `set-editing!`); when the save settles, the exit clears the editing state again, now the new block's, and its editor unmounts. In a run of the steps Escape or Shift+Up then a click, the events in order: pointerdown on the clicked block; focusin on its textarea; the previous editor removed; focusout on the clicked block's textarea; that textarea removed. Nothing is being edited afterwards. ## Fix Both exits note the editor they start from, and after the save leave editing only if that editor is still the open one. A click during the save keeps the editor it opened. ## Test `frontend.handler.exit-editing-race-test`, with the save held until the click has opened another editor: - Escape during the save: the clicked block's editor stays open. Fails on master. - Shift+Up at a block's edge during the save: the same. Fails on master. - Without a click, Escape still exits and Shift+Up still selects the block. `frontend.handler.editor-test` passes (110 tests).

  • Yuxi Liu(07 Oct 26)

    perf(electron): keep compiled page scripts across app opens (#13634) On every desktop app open, the renderer compiles `js/main.js` (16 MB) from scratch. Chromium keeps V8's compiled code for page scripts between runs in the profile's `Code Cache`, but only for scripts loaded over a scheme registered with the `codeCache` privilege; the app loads `index.html` and its scripts over its own `lsp://` scheme, registered without it. In a profile opened 4 times, `Code Cache` stayed at 36 KB, with nothing for `main.js`; a CPU profile of a window load shows about 30 percent of the renderer's time before the home screen as `(program)`, V8 parsing and compiling. `lsp://` is now registered with `codeCache: true`. After the first open, `Code Cache` holds `main.js`'s compiled code (19 MB, 26 entries) and later opens use it. Measured in a Linux desktop build, from launch, 6 opens of each build alternating, each started with the CPU at full clock: the page's API is ready after 1015 ms instead of 1344 ms (median), and the home screen is drawn after 1611 ms instead of 1965 ms. `Code Cache` after 3 opens: 36 KB before, 20 MB after.

  • Yuxi Liu(07 Oct 26)

    fix(graph): a reload after creating a graph opens the new graph (#13624) At start the window opens the graph its tab remembers before the last current graph; creating a graph never updated the tab, so a reload reopened the graph opened before it (db-test #1361). create-db now registers the new graph and remembers it in the tab, as a switch does.

  • Tienson Qin(07 Oct 26)

    fix: keep createJournalPage date-only strings on that day (#13597) * fix: keep createJournalPage date-only strings on that day ECMAScript parses YYYY-MM-DD as UTC midnight, so reading local fields west of UTC created the previous journal. Treat date-only strings as calendar days and leave Date, date-time, and timestamp inputs unchanged. Co-authored-by: Tienson Qin <[email protected]> * fix: assert created journal day from the db The plugin API page payload does not include journal-day, so look the created page up by day after createJournalPage("2026-12-01"). Co-authored-by: Tienson Qin <[email protected]> * fix: reject invalid date-only createJournalPage strings Keep YYYY-MM-DD on that calendar day, but require a real local day so inputs like 2026-13-01 still return nil instead of creating a page. Co-authored-by: Tienson Qin <[email protected]> --------- Co-authored-by: Cursor Agent <[email protected]>

  • Tienson Qin(07 Oct 26)

    Merge pull request #13456 from logseq/devin/1790424401-sync-timestamp-validate fix(sync): don't revalidate entities only touched by timestamp stamps

  • Tienson Qin(03 Oct 26)

    fix: resolve uuid refs in search results, breadcrumbs, and nested page refs (#13580) * fix: resolve uuid refs in search result titles 94ea551ec4 rewrote block-ref-id->title with (filter map? frontier), but datascript entities are not map?, so recur-replace-uuid-in-block-title silently stopped resolving refs for entity inputs (search index, search results, breadcrumbs, export). ((uuid)) refs were additionally never matched by the id-ref patterns or kept in :block/refs. - accept entities as well as maps when collecting ref titles - match ((uuid)) refs and replace them with the referenced title - include ((uuid)) in get-matched-ids so :block/refs stays complete - resolve ((uuid)) targets directly from the title instead of relying on :block/refs - resolve search result titles in the worker through the entity, since pulled result maps lack :block/refs * fix: resolve title id refs without :block/refs and rebuild index * refactor: drop (()) support; node refs resolve via [[uuid]] only Block and page are both nodes in db graphs and node refs uniformly use [[uuid]], so (()) handling is removed from title resolution, get-matched-ids, and search. Search now only re-resolves ref titles when the title matches [[uuid]]. * fix: resolve nested uuid refs in breadcrumb titles Breadcrumbs showed raw [[uuid]] for title refs that are not in :block/refs, e.g. [[<foo-uuid>]] nested inside a page-ref name ([[[[foo]] bar]] nested). - worker :block-breadcrumb ref-titles now also resolves every [[uuid]] found in ancestor titles via d/entity, transitively through ref titles, so the payload covers nested id refs (and watches those entities). - with-breadcrumb-ref-titles appends shallow refs for ref-titles uuids that are missing from :block/refs. - page breadcrumb segments resolve [[uuid]] in :block/title like block segments already did. * fix: resolve nested uuid refs in breadcrumbs and page refs The :block.temp/breadcrumb fast path dropped the worker-computed :ref-titles, so nested uuid refs (e.g. [[<uuid>]] inside a page-ref name) stayed raw in the header, page, sidebar, and search-result breadcrumbs. Plumb :block.temp/breadcrumb-ref-titles alongside the ancestors at every producer and read it back in breadcrumb. Nested page refs like [[[[foo]] bar]] nested rendered the raw stored name [[<uuid>]] bar because nested-link printed :block/name directly. Look up the page by name via [:page-identity] and render the resolved page title, falling back to the previous behavior for missing pages. Move breadcrumb-ref-titles into frontend.worker.handler.block-breadcrumb so search results can attach :block.temp/breadcrumb-ref-titles too. * test: expect :block.temp/breadcrumb-ref-titles in first-paint page map * fix: resolve uuids nested inside breadcrumb ref titles

  • Tienson Qin(03 Oct 26)

    fastlane tweaks

  • Tienson Qin(03 Oct 26)

    fix(release): include embedding sidecar in desktop packaging The compile-cljs artifact only carried static/ and deps/graph-lifecycle, so packaging jobs ran electron-builder without the repo-level sidecar/ dir. extraResources 'from: ../sidecar' was silently skipped ('file source doesn't exist'), and shipped nightlies lack Logseq.app/Contents/Resources/sidecar/embedding_server.py, breaking the embedding server and vector indexing. Add sidecar to the uploaded artifact and fail each packaging job if the unpacked app is missing resources/sidecar/embedding_server.py.

  • Tienson Qin(02 Oct 26)

    fix(publishing): SPA HTML export renders blank page (#13579) * fix(publishing): SPA HTML export renders blank page The exported index.html never loaded js/magic_portal.js, so start-db-worker! threw 'MagicPortal is not defined' before the worker came up. Drop the dead react.production.min.js/react-dom.production.min.js refs (React 19 ships no UMD builds; the bundle sets the globals itself) and load magic_portal.js like the app index.html does. Also, publishing workers intentionally have no client-ops store, so get-all-sync-conflicts returned nil and :thread-api/db-sync-get-all-block-conflicts threw 'Expected sync conflicts grouped by block', rejecting restore-graph! and leaving the page stuck in restoring state. A graph with no sync store has no sync conflicts; return {} instead. * fix(publishing): scope missing-client-ops-store guard to publishing Only publishing graphs legitimately lack a client-ops store, so skip the conflicts fetch on the app side in restore-graph! and keep the worker API fail-fast for regular graphs.

  • Tienson Qin(02 Oct 26)

    chore: bump version to 2.0.2

  • Tienson Qin(02 Oct 26)

    fix: keep asset download failures from blocking graph download A single failed asset download rejected the whole db-sync-download-missing-assets batch, which in turn failed the graph download even though the snapshot had already imported. Catch per-asset errors, log them, count them under :failed in the result, and continue with the remaining assets.

  • Tienson Qin(02 Oct 26)

    fix(ios): renew expired signing certificates (#13571) Allow match to replace expired certificates in the writable release signing lane.

  • Tienson Qin(02 Oct 26)

    fix(ios): use shared PAT for certificate authentication (#13569)

  • Tienson Qin(02 Oct 26)

    fix: recover locked settings toggles when config.edn is unparsable (#13566) * fix: recover locked settings toggles when config.edn is unparsable Fixes logseq/db-test#1294 A logseq/config.edn file entity whose stored content does not parse into a config map (e.g. imported verbatim from an invalid file-graph config.edn) left [:config repo] unset and made every config-backed Settings toggle render defaults and silently drop writes: - restore-repo-config! threw from read-repo-config, leaving the config state missing entirely. - repo-config-set-key-value re-validated the stored content and threw, so every settings change was rejected. Now an unparsable file is treated like a missing one on both paths: restore falls back to the default config for state, and a settings write rewrites the file from the default config, repairing it. The invalid file itself is left untouched until a write repairs it, so users can still inspect it on the file page. * test: avoid p/with-redefs in new config tests p/with-redefs restores bindings in a microtask attached to the outer promise, which can run after done() has already started the next test and overwrite a stub that test just installed. Restore the mocks synchronously in p/finally instead.

  • Tienson Qin(02 Oct 26)

    Keep selected descendants under moved ancestors (#13482) * fix(outliner): keep selected descendants under moved ancestors Drop descendants already covered by a selected ancestor before treating blocks as move roots, so drag and move-up/down keep a grandchild in place. Co-authored-by: Tienson Qin <[email protected]> * fix: correct tree brackets in grandchild move test Co-authored-by: Tienson Qin <[email protected]> * fix(outliner): keep page-delete roots for nested descendants Page delete only detaches the page, so a selected block under another page must stay an independent delete root. Move still drops descendants covered by any selected ancestor. Co-authored-by: Tienson Qin <[email protected]> * fix: hydrate copy-summary parent chains for covered descendants Block summaries only carried one parent id, so a selected grandchild stayed a clipboard export root. Load missing parent hops and nest the chain before get-top-level-blocks runs. Co-authored-by: Tienson Qin <[email protected]> * fix: define grandchild-move test helpers before use nbb/clj-kondo analyzes outliner tests top-to-bottom, so issue-1317-conn and child-titles must be defined above the delete tests that call them. Co-authored-by: Tienson Qin <[email protected]> * fix: keep grandchild in subtree in undo move test Moving a selected ancestor with its grandchild now moves only the ancestor root; the test expected the old pull-out of b2. Co-authored-by: Tienson Qin <[email protected]> * fix: build copy ancestor chains without recursion * refactor: share :block/parent ancestor walks via ldb/some-parent --------- Co-authored-by: Cursor Agent <[email protected]> Co-authored-by: Mega Yu <[email protected]>

  • Tienson Qin(02 Oct 26)

    fix: ArrowRight past comments no longer throws (#13537) * fix: ArrowRight past comments no longer throws node-contains? extracted Node.contains and called it without its receiver. When goog.dom/contains was false, the fallback threw TypeError: Illegal invocation, breaking Left/Right at a comments boundary. Fixes logseq/db-test#1371 Co-authored-by: Tienson Qin <[email protected]> * test: drop redundant node-contains? unit test The extended navigable-sibling-block test already covers both the contained and outside-child paths through the real call chain (navigable-sibling-block -> block-node-outside-comments-area -> node-contains?) in both directions, with the same this-sensitive contains mock. The private-var unit test added no unique coverage. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <[email protected]> Co-authored-by: megayu <[email protected]> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

  • Tienson Qin(02 Oct 26)

    fix(profiler): notify on unknown register-fn names (#13499) Refuse unqualified or missing function names in the Dev Profiler with a UI error instead of an uncaught throw. Co-authored-by: Cursor Agent <[email protected]>

  • Tienson Qin(02 Oct 26)

    fix: keep refused title save out of default view creation (#13539) * fix: keep refused title save out of default view creation A pending page-title edit that includes "/" was saved in the same outliner transaction as auto-created default views. The refused save failed the insert, and missing-view then threw during render. Skip save-current-block on view inserts and log default-view errors instead of crashing the page. Fixes logseq/db-test#1370 Co-authored-by: Tienson Qin <[email protected]> * fix: restore api-insert-new-block! paren balance The skip-save option closed the insert let one form too early. Co-authored-by: Tienson Qin <[email protected]> * test: drop redundant view-creation tests, log refused insert as warn A refused page title is user-input validation (:notification/:warning), not a system error. Also removes two thin tests: one asserting a private log helper returns nil, one asserting create-view! forwards an option literal through fully mocked collaborators. The kept tests cover the real mechanisms: apply-ops! atomicity and the skip flag's effect. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * fix: re-arm missing-view retry guard on failed default-view insert The effect kept *started? true after a failed create-view!, so the section stayed blank until remount. Resetting the guard lets the next effect run (view-parent change or remount) retry the insert. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <[email protected]> Co-authored-by: megayu <[email protected]> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

  • Tienson Qin(02 Oct 26)

    fix: treat tags that extend Card as flashcards (#13540) * fix: treat tags that extend Card as flashcards Show answers crashed for blocks tagged with a class that extends Card because the renderer only accepted a direct Card tag. Align card-block? with worker structured-children, include class extends on tag summaries, and nil-guard rating-btns. Fixes logseq/db-test#1373 Co-authored-by: Tienson Qin <[email protected]> * test: cover nil card-map crash and drop renderer require Assert the FSRS nil-card-map throw that Show answers hit, and keep worker flashcard tests free of frontend.extensions.fsrs. Co-authored-by: Tienson Qin <[email protected]> * fix: keep Card-descendant cards ratable and counted - repeat-card! pulls tag extends recursively so ratings persist for tags any number of extends edges below Card - <cards-stat and execute-query :cards? match Card plus every class extending it via a shared card-class-ids set, like fsrs-card-block-ids Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * fix: carve-ignore card-class-ids used outside deps/db Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * fix: drop unneeded card-ids thread api and duplicate tests Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test: trim flashcard tests to changed code paths Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * fix: gate rtc start emits on a real login and tolerate stray worker apis in tests The trigger-start-rtc emit guard treated the truthy :logout keyword as a logged-in user, so post-logout state leaks (e.g. user-test leaving :auth/current-login-user at :logout) armed the emit path. Deferred emits then fired a stray <rtc-start! that parked on *db-worker and resumed when a later test installed the plugin test worker, ending in :thread-api/db-sync-stop on the stub, which threw "Unhandled test worker api" into unrelated plugin-test chains. - Check (:email user) in emit!, matching the login watch and rtc-try-restart - Restore :auth/current-login-user in the logout tests - Return nil for db-sync lifecycle apis in the test worker stub, matching the existing incidental-api precedent --------- Co-authored-by: Cursor Agent <[email protected]> Co-authored-by: megayu <[email protected]> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

  • 4shutosh(02 Oct 26)

    fix: unreadable popup hover in dark mode without accent color Popup accent overrides still targeted Radix selectors, which no longer exist after the Base UI migration, so highlighted menu items got a near-white background under light text.

  • Tienson Qin(02 Oct 26)

    fix: anchor property choice More settings on first open (#13542) * fix: anchor property choice More settings on first open Nested dropdown menus inside Available choices measured against a missing trigger, so the first More settings click landed at the top-left. Open that menu through popup-show and refresh the trigger rect after open. Fixes logseq/db-test#1377 Co-authored-by: Tienson Qin <[email protected]> * fix: restore available-choices e2e deftest form Keep the new first-open position coverage without breaking the existing scrollable-choices test definition. Co-authored-by: Tienson Qin <[email protected]> * fix: dismiss stacked choice menu without blocking the page Disable the extra modal backdrop on More settings and close that popup on item click so later property-config actions can reach the page again. Co-authored-by: Tienson Qin <[email protected]> --------- Co-authored-by: Cursor Agent <[email protected]>

  • Tienson Qin(02 Oct 26)

    fix: persist unsaved text when setting deadline or scheduled (#13560) Flush the current editor input before applying a property from the slash/date picker so /deadline and /scheduled do not drop unsaved titles. Co-authored-by: Cursor Agent <[email protected]>

  • Tienson Qin(02 Oct 26)

    fix: property config menu toggles write the toggled value, not the previous one (#13557)

Logseq Security

3.2/10

Repo Security Summary

Updated 24 Aug 26

  • Maintained10/10
  • Code-Review1/10
  • CII-Best-Practices0/10
  • Dangerous-Workflow10/10
  • Security-Policy0/10
  • Token-Permissions0/10
  • License10/10
  • Binary-Artifacts3/10
  • Branch-ProtectionN/A
  • PackagingN/A
  • Signed-Releases0/10
  • Fuzzing0/10
  • Pinned-Dependencies0/10
  • SAST0/10

Security Advisories (1)

Logseq Website

Website

Logseq: A privacy-first, open-source knowledge base

A privacy-first, open-source platform for knowledge management and collaboration.

Redirects

Does not redirect

Security Checks

All 65 security checks passed

Server Details

  • IP Address13.249.180.47
  • Hostnameserver-13-249-180-47.atl58.r.cloudfront.net
  • LocationAtlanta,Georgia,United States of America,NA
  • ISPAmazon.com Inc.
  • ASNAS16509

Associated Countries

  • USUS
  • CACA
  • JPJP

Safety Score

Website marked as safe

100%

Trackers

No known trackers found

Blacklist Check

logseq.com was found on 0 blacklists

  • AntiSocial Blacklist
  • Artists Against 419
  • Badbitcoin
  • Bambenek Consulting
  • CERT Polska
  • CoinBlockerLists
  • CRDF
  • CryptoScamDB
  • EtherAddressLookup
  • EtherScamDB
  • Fake Website Buster
  • MetaMask EthPhishing
  • NABP Not Recommended Sites
  • OpenPhish
  • PetScams
  • PhishFeed
  • PhishFort
  • Phishing.Database
  • PhishStats
  • PhishTank
  • Phishunt
  • RPiList Not Serious
  • Scam.Directory
  • SecureReload Phishing List
  • Spam404
  • StopGunScams
  • Suspicious Hosting IP
  • ThreatFox
  • ThreatLog
  • TweetFeed
  • URLhaus
  • ViriBack C2 Tracker

Website Preview

Website preview

Logseq iOS App

App Info

Logseq

Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden. Logseq includes the following features: 1. Backlink 2. Knowledge Graph 3. Page and block references 4. Page and block embeds 5. Tasks & Todos 6. SRS Cards 7. Zotero integration 8. Youtube, Twitter, etc. integration 9. Audio recorder 10. Powerful queries 11. Whiteboards

Rating

Rated 4.38 out of 5 stars by 264 users

Version Info

  • Current Version0.10.9
  • Last Updated23 Apr 24
  • First Released13 Apr 22
  • Minimum iOS Version14.0
  • Device Models Supported130

App Details

  • IPA Size62.44 Mb
  • PriceFree (USD)
  • Age Advisory4+
  • Supported Languages1
  • DeveloperLogseq Inc.
  • Bundle IDcom.logseq.logseq

Screenshots

  • App screenshot
  • App screenshot
  • App screenshot
  • App screenshot
  • App screenshot
  • App screenshot
  • App screenshot
  • App screenshot
  • App screenshot
  • App screenshot

Logseq Reviews

More Digital Notes

  • Cryptee

    Cryptee

    crypt.ee

    Private & encrypted rich-text documents. Cryptee has encryption and anonymity at its core, it also has a beautiful and minimalistic UI. You can use Cryptee from the browser, or download native apps. Comes with many additional features, such as support for photo albums and file storage. The disadvantage is that only the frontend is open source. Pricing is free for starter plan, $3/ month for 10GB, additional plans go up-to 2TB.

    No Security AuditNot Open Source cryptee/web-client
  • Joplin

    Joplin

    joplinapp.org

    Cross-platform desktop and mobile note-taking and todo app. Easy organisation into notebooks and sections, revision history and a simple UI. Allows for easy import and export of notes to or from other services. Supports synchronisation with cloud services, implemented with E2EE.

    Security Audited Open Source laurent22/joplin
  • Notable

    Notable

    notable.md

    An offline markdown-based note editor for desktop, with a simple, yet feature-rich UI. All notes are saved individually as .md files, making them easy to manage. No mobile app, built-in cloud-sync, encryption or web UI. But due to the structure of the files, it is easy to use your own cloud sync provider, and additional features are provided through extensions.

    No Security Audit Open Source notable/notable
  • Obsidian

    Obsidian

    obsidian.md

    A powerful knowledge base that works on top of local plain-text Markdown files. It has a strong community, and a lot of plugins and themes. Generally privacy-respecting, but no encryption out of the box, and some of the code is obfuscated or not fully open source

  • Poznote

    Poznote

    poznote.com

    Self-hosted notes and tasks app with rich-text, Markdown and drawing editors, tags, multi-user, OIDC login and a REST API. Docker-based (PHP + SQLite); the only outbound call is a daily update check. No mobile apps (PWA), no end-to-end encryption.

    No Security Audit Open Source timothepoznanski/poznote
  • Standard Notes

    Standard Notes

    standardnotes.com

    S.Notes is a free, open-source, and completely encrypted private notes app. It has a simple UI, yet packs in a lot of features, thanks to the Extensions Store, allowing for: To-Do lists, Spreadsheets, Rich Text, Markdown, Math Editor, Code Editor and many more. You can choose between a number of themes (yay, dark mode!), and it features built-in secure file store, tags/ folders, fast search and more. Standard Notes is actively developed, and fully open-source.

  • Turtle

    Turtle

    turtlapp.com

    A secure, collaborative notebook. Self-host it yourself, or use their hosted plan (free edition or $3/ month for premium).

    Security Audited Open Source turtl/desktop
  • VNote

    VNote

    app.vnote.fun/en_us

    A free, open-source note-taking application built with Qt, focused on providing a pleasant Markdown editing experience. It manages notes directly as plain text files on your local system.

About the Data: Logseq

Change History

  • Amended (icon) by @azzamsa #258
  • Amended (iosApp, subreddit)

Edit Logseq Data

You can edit Logseq's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
Note that some of the information shown above has been aggregated from external sources, a list of these can be found data documentation.

Origin Data

Modify Data

API

You can access Logseq's data programmatically via our API. Simply make a GET request to:

https://api.awesome-privacy.xyz/v1/services/logseq

The REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.

Share Logseq

Help your friends compare Digital Notes, and pick privacy-respecting software and services.
Share Logseq and Awesome Privacy with your network!