diff --git a/deps.edn b/deps.edn index abf602cee0..48026c66b6 100644 --- a/deps.edn +++ b/deps.edn @@ -5,7 +5,7 @@ :sha "5d672bf84ed944414b9f61eeb83808ead7be9127"} datascript/datascript {:git/url "https://github.com/logseq/datascript" ;; fork - :sha "3a41bbcdbe66b328bff36d9efd7548bad47f55b6"} + :sha "4b1f15f05a6b4a718a62c247956206480e361ea6"} datascript-transit/datascript-transit {:mvn/version "0.3.0"} borkdude/rewrite-edn {:mvn/version "0.4.7"} diff --git a/deps/db/deps.edn b/deps/db/deps.edn index 41cb0c98c1..f266b0e115 100644 --- a/deps/db/deps.edn +++ b/deps/db/deps.edn @@ -1,7 +1,7 @@ {:deps ;; These deps are kept in sync with https://github.com/logseq/nbb-logseq/blob/main/bb.edn {datascript/datascript {:git/url "https://github.com/logseq/datascript" ;; fork - :sha "3a41bbcdbe66b328bff36d9efd7548bad47f55b6"} + :sha "4b1f15f05a6b4a718a62c247956206480e361ea6"} datascript-transit/datascript-transit {:mvn/version "0.3.0" :exclusions [datascript/datascript]} cljs-bean/cljs-bean {:mvn/version "1.5.0"} diff --git a/deps/db/src/logseq/db/common/sqlite.cljs b/deps/db/src/logseq/db/common/sqlite.cljs index 34fc2afade..0df7d0ade7 100644 --- a/deps/db/src/logseq/db/common/sqlite.cljs +++ b/deps/db/src/logseq/db/common/sqlite.cljs @@ -285,14 +285,14 @@ (defn get-recent-updated-pages [db] - (->> (d/datoms db :avet :block/updated-at) - vec - rseq - (keep (fn [datom] - (let [e (d/entity db (:e datom))] - (when (and (common-entity-util/page? e) (not (entity-util/hidden? e))) - e)))) - (take 30))) + (some->> + (d/datoms db :avet :block/updated-at) + rseq + (keep (fn [datom] + (let [e (d/entity db (:e datom))] + (when (and (common-entity-util/page? e) (not (entity-util/hidden? e))) + e)))) + (take 30))) (defn get-initial-data "Returns current database schema and initial data. 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 diff --git a/deps/db/src/logseq/db/frontend/schema.cljs b/deps/db/src/logseq/db/frontend/schema.cljs index 3e353e917d..f9cbc16f90 100644 --- a/deps/db/src/logseq/db/frontend/schema.cljs +++ b/deps/db/src/logseq/db/frontend/schema.cljs @@ -37,7 +37,7 @@ (map (juxt :major :minor) [(parse-schema-version x) (parse-schema-version y)]))) -(def version (parse-schema-version "64.5")) +(def version (parse-schema-version "64.6")) (defn major-version "Return a number. diff --git a/deps/outliner/deps.edn b/deps/outliner/deps.edn index 627f606ccf..a1579edb84 100644 --- a/deps/outliner/deps.edn +++ b/deps/outliner/deps.edn @@ -1,7 +1,7 @@ {:deps ;; External deps should be kept in sync with https://github.com/logseq/nbb-logseq/blob/main/bb.edn {datascript/datascript {:git/url "https://github.com/logseq/datascript" ;; fork - :sha "3a41bbcdbe66b328bff36d9efd7548bad47f55b6"} + :sha "4b1f15f05a6b4a718a62c247956206480e361ea6"} logseq/db {:local/root "../db"} logseq/graph-parser {:local/root "../db"} com.cognitect/transit-cljs {:mvn/version "0.8.280"} diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index 2b1b68bbe3..028b59f5f7 100644 --- a/src/main/frontend/components/block.cljs +++ b/src/main/frontend/components/block.cljs @@ -2365,7 +2365,7 @@ query (:logseq.property/query block) advanced-query? (and query? (= :code (:logseq.property.node/display-type query))) show-query? (and *show-query? @*show-query?)] - [:div + [:div.w-full {:class (if (and query? blank?) "inline-flex" "inline") diff --git a/src/main/frontend/components/export.cljs b/src/main/frontend/components/export.cljs index 5ad9e26ff9..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 (or (mobile-util/native-platform?) db-based?) - [: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 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/> + (mapcat + (fn [id] + (mapcat (fn [attr] + (let [datoms (d/datoms db :eavt id attr)] + (when (> (count datoms) 1) + (map (fn [datom] + [:db/retract (:e datom) (:a datom) (:v datom)]) + (butlast datoms))))) attrs)) + block-ids) + (remove nil?)))) + (def ^:large-vars/cleanup-todo schema-version->updates "A vec of tuples defining datascript migrations. Each tuple consists of the schema version integer and a migration map. A migration map can have keys of :properties, :classes @@ -769,7 +792,8 @@ ["64.3" {:properties [:logseq.property/used-template :logseq.property/template-applied-to] :classes [:logseq.class/Template]}] ["64.4" {:properties [:logseq.property/created-by-ref]}] - ["64.5" {:fix add-group-by-property-for-list-views}]]) + ["64.5" {:fix add-group-by-property-for-list-views}] + ["64.6" {:fix cardinality-one-multiple-values}]]) (let [[major minor] (last (sort (map (comp (juxt :major :minor) db-schema/parse-schema-version first) schema-version->updates))) diff --git a/src/main/frontend/worker/db_worker.cljs b/src/main/frontend/worker/db_worker.cljs index 1ed18b6361..0e56930f24 100644 --- a/src/main/frontend/worker/db_worker.cljs +++ b/src/main/frontend/worker/db_worker.cljs @@ -731,9 +731,9 @@ (worker-export/get-all-pages repo @conn))) (def-thread-api :thread-api/export-get-all-page->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 39018c5f96..3e263f8da9 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] @@ -45,12 +46,18 @@ (assoc page' :block/children children)))))) (defn get-all-page->content - [repo db] - (->> (d/datoms db :avet :block/name) - (map (fn [d] - (let [e (d/entity db (:e d))] + [repo db options] + (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) {} {})]))))) + (common-file/block->content repo db (:block/uuid e) {} options)]))))) (defn get-debug-datoms [conn ^Object db]