From 5685fe5540ee037e580fde6b4ef2e5f09b7453b0 Mon Sep 17 00:00:00 2001 From: Gabriel Horner Date: Fri, 18 Apr 2025 15:47:22 -0400 Subject: [PATCH 1/4] enhance: enable basic markdown export Dont include built-in entities which are a lot in db graph, except for user facing ones like Contents --- src/main/frontend/components/export.cljs | 2 +- src/main/frontend/worker/export.cljs | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/frontend/components/export.cljs b/src/main/frontend/components/export.cljs index 5ad9e26ff9..9cc96fc527 100644 --- a/src/main/frontend/components/export.cljs +++ b/src/main/frontend/components/export.cljs @@ -117,7 +117,7 @@ [:div [:a.font-medium {:on-click #(export/download-repo-as-html! current-repo)} (t :export-public-pages)]]) - (when-not (or (mobile-util/native-platform?) db-based?) + (when-not (mobile-util/native-platform?) [:div [:a.font-medium {:on-click #(export-text/export-repo-as-markdown! current-repo)} (t :export-markdown)]]) diff --git a/src/main/frontend/worker/export.cljs b/src/main/frontend/worker/export.cljs index 39018c5f96..f874359d36 100644 --- a/src/main/frontend/worker/export.cljs +++ b/src/main/frontend/worker/export.cljs @@ -6,7 +6,8 @@ [logseq.db :as ldb] [logseq.db.sqlite.util :as sqlite-util] [logseq.graph-parser.property :as gp-property] - [logseq.outliner.tree :as otree])) + [logseq.outliner.tree :as otree] + [logseq.db.sqlite.create-graph :as sqlite-create-graph])) (defn- safe-keywordize [block] @@ -46,9 +47,15 @@ (defn get-all-page->content [repo db] - (->> (d/datoms db :avet :block/name) - (map (fn [d] - (let [e (d/entity db (:e d))] + (let [filter-fn (if (ldb/db-based-graph? db) + (fn [ent] + (or (not (:logseq.property/built-in? ent)) + (contains? sqlite-create-graph/built-in-pages-names (:block/title ent)))) + (constantly true))] + (->> (d/datoms db :avet :block/name) + (map #(d/entity db (:e %))) + (filter filter-fn) + (map (fn [e] [(:block/title e) (common-file/block->content repo db (:block/uuid e) {} {})]))))) From 954ec0c72151e8a0d6697332f00467a697b13e57 Mon Sep 17 00:00:00 2001 From: Gabriel Horner Date: Mon, 21 Apr 2025 16:29:42 -0400 Subject: [PATCH 2/4] fix: graph md exports have no indent Affected both graph types --- src/main/frontend/handler/export/common.cljs | 7 ++++--- src/main/frontend/handler/export/text.cljs | 7 +++---- src/main/frontend/worker/db_worker.cljs | 4 ++-- src/main/frontend/worker/export.cljs | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/frontend/handler/export/common.cljs b/src/main/frontend/handler/export/common.cljs index 8d29cc3319..2ead1c4947 100644 --- a/src/main/frontend/handler/export/common.cljs +++ b/src/main/frontend/handler/export/common.cljs @@ -195,12 +195,13 @@ (state/content - [repo] - (state/content repo)) + [repo options] + (state/content repo options)) (defn content (content repo)] + (p/let [page->content (content repo + {:export-bullet-indentation (state/get-export-bullet-indentation)})] (clojure.core/map (fn [[page-title content]] {:path (str page-title "." suffix) :content content diff --git a/src/main/frontend/handler/export/text.cljs b/src/main/frontend/handler/export/text.cljs index 1c3864a90c..53347b2119 100644 --- a/src/main/frontend/handler/export/text.cljs +++ b/src/main/frontend/handler/export/text.cljs @@ -1,6 +1,5 @@ (ns frontend.handler.export.text "export blocks/pages as text" - (:refer-clojure :exclude [map filter mapcat concat remove newline]) (:require [clojure.string :as string] [frontend.config :as config] [frontend.db :as db] @@ -545,9 +544,9 @@ (defn export-repo-as-markdown! "TODO: indent-style and remove-options" [repo] - (p/let [files (util/profile :get-file-content (common/content - [repo] + [repo options] (when-let [conn (worker-state/get-datascript-conn repo)] - (worker-export/get-all-page->content repo @conn))) + (worker-export/get-all-page->content repo @conn options))) (def-thread-api :thread-api/undo [repo _page-block-uuid-str] diff --git a/src/main/frontend/worker/export.cljs b/src/main/frontend/worker/export.cljs index f874359d36..3e263f8da9 100644 --- a/src/main/frontend/worker/export.cljs +++ b/src/main/frontend/worker/export.cljs @@ -46,7 +46,7 @@ (assoc page' :block/children children)))))) (defn get-all-page->content - [repo db] + [repo db options] (let [filter-fn (if (ldb/db-based-graph? db) (fn [ent] (or (not (:logseq.property/built-in? ent)) @@ -57,7 +57,7 @@ (filter filter-fn) (map (fn [e] [(:block/title e) - (common-file/block->content repo db (:block/uuid e) {} {})]))))) + (common-file/block->content repo db (:block/uuid e) {} options)]))))) (defn get-debug-datoms [conn ^Object db] From 4c74d254907499edc97a206695d2e3e8ac05f67c Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Tue, 22 Apr 2025 20:56:29 +0800 Subject: [PATCH 3/4] enhance: put markdown export next to edn --- src/main/frontend/components/export.cljs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main/frontend/components/export.cljs b/src/main/frontend/components/export.cljs index 9cc96fc527..b439005cd9 100644 --- a/src/main/frontend/components/export.cljs +++ b/src/main/frontend/components/export.cljs @@ -103,24 +103,22 @@ [:div [:a.font-medium {:on-click #(export/export-repo-as-zip! current-repo)} (t :export-zip)]]) + (when db-based? [:div [:a.font-medium {:on-click #(db-export-handler/export-repo-as-db-edn! current-repo)} (t :export-db-edn)]]) - (when db-based? + + (when-not (mobile-util/native-platform?) [:div - [:a.font-medium {:on-click #(export/export-repo-as-debug-transit! current-repo)} - "Export debug transit file"] - [:p.text-sm.opacity-70 "Any sensitive data will be removed in the exported transit file, you can send it to us for debugging."]]) + [:a.font-medium {:on-click #(export-text/export-repo-as-markdown! current-repo)} + (t :export-markdown)]]) (when (util/electron?) [:div [:a.font-medium {:on-click #(export/download-repo-as-html! current-repo)} (t :export-public-pages)]]) - (when-not (mobile-util/native-platform?) - [:div - [:a.font-medium {:on-click #(export-text/export-repo-as-markdown! current-repo)} - (t :export-markdown)]]) + (when-not (or (mobile-util/native-platform?) db-based?) [:div [:a.font-medium {:on-click #(export-opml/export-repo-as-opml! current-repo)} @@ -129,6 +127,11 @@ [:div [:a.font-medium {:on-click #(export/export-repo-as-roam-json! current-repo)} (t :export-roam-json)]]) + (when db-based? + [:div + [:a.font-medium {:on-click #(export/export-repo-as-debug-transit! current-repo)} + "Export debug transit file"] + [:p.text-sm.opacity-70.mb-0 "Any sensitive data will be removed in the exported transit file, you can send it to us for debugging."]]) (when (and db-based? util/web-platform? (utils/nfsSupported)) [:div From 8cb5fecb9182cb3b5b474dc0a244b96ba6d0cd81 Mon Sep 17 00:00:00 2001 From: Gabriel Horner Date: Tue, 22 Apr 2025 09:44:28 -0400 Subject: [PATCH 4/4] fix: user can't reverse a class parent decision Class parent defaults to Root but user can't select it later. This should be reversible, especially given how much functionality this affects. Fixes #256 --- deps/db/src/logseq/db/frontend/class.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/db/src/logseq/db/frontend/class.cljs b/deps/db/src/logseq/db/frontend/class.cljs index 9e06fd7342..a6589cd5a7 100644 --- a/deps/db/src/logseq/db/frontend/class.cljs +++ b/deps/db/src/logseq/db/frontend/class.cljs @@ -110,7 +110,7 @@ (def private-tags "Built-in classes that are private and should not be used by a user directly. These used to be in block/type" - (set/union internal-tags + (set/union (disj internal-tags :logseq.class/Root) #{:logseq.class/Journal :logseq.class/Whiteboard})) (def hidden-tags