From ec668757febfd86a46ba4b69d9b46ec37c6a5f7b Mon Sep 17 00:00:00 2001 From: Gabriel Horner Date: Mon, 2 Jun 2025 09:42:49 -0400 Subject: [PATCH 1/6] fix(dev): exclude long running test in db dep e.g. `yarn test -e long` --- deps/db/nbb.edn | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/deps/db/nbb.edn b/deps/db/nbb.edn index 2216db1ba6..fbf2774a37 100644 --- a/deps/db/nbb.edn +++ b/deps/db/nbb.edn @@ -8,6 +8,9 @@ borkdude/rewrite-edn {:mvn/version "0.4.9"} logseq/clj-fractional-indexing {:git/url "https://github.com/logseq/clj-fractional-indexing" :sha "1087f0fb18aa8e25ee3bbbb0db983b7a29bce270"} - io.github.nextjournal/nbb-test-runner - {:git/sha "012017a8a8983d05f905f38f631f5222f25b9ed9"} + ;; TODO: Remove fork once https://github.com/nextjournal/nbb-test-runner/pull/3 is merged + io.github.logseq-cldwalker/nbb-test-runner + {:git/sha "581c88fdedd928c595ec0288a4d1b7c2ed36095d"} +;; io.github.nextjournal/nbb-test-runner +;; {:git/sha "012017a8a8983d05f905f38f631f5222f25b9ed9"} io.github.pez/baldr {:mvn/version "1.0.9"}}} From 75104470ab287dead983a051c7f14245ae983b8a Mon Sep 17 00:00:00 2001 From: Gabriel Horner Date: Mon, 2 Jun 2025 09:58:41 -0400 Subject: [PATCH 2/6] fix(regression): page properties not working for hide empty, hide by default and ui position Fixes https://github.com/logseq/db-test/issues/293 --- src/main/frontend/components/property.cljs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/frontend/components/property.cljs b/src/main/frontend/components/property.cljs index dc9453b0f5..849251b69b 100644 --- a/src/main/frontend/components/property.cljs +++ b/src/main/frontend/components/property.cljs @@ -558,7 +558,7 @@ (assoc state ::id (str (random-uuid)) ::block block)))} - [state _target-block {:keys [sidebar-properties? page-title?] :as opts}] + [state _target-block {:keys [sidebar-properties?] :as opts}] (let [id (::id state) db-id (:db/id (::block state)) block (db/sub-block db-id) @@ -580,7 +580,7 @@ ;; TODO: Use ldb/built-in? when intermittent lazy loading issue fixed (get db-property/built-in-properties (:db/ident ent))) ;; other position - (when-not (or sidebar-properties? page-title? + (when-not (or sidebar-properties? (and (:sidebar? opts) (= (:id opts) (str (:block/uuid block)))) show-empty-and-hidden-properties?) (outliner-property/property-with-other-position? ent)) @@ -604,8 +604,8 @@ state-hide-empty-properties? (nil? (get block property-id)) :else - ;; For sidebar and page properties, ignore these checks - (when-not (or sidebar-properties? page-title?) + ;; sidebar properties ignore these checks + (when-not sidebar-properties? (cond root-block? false From 6d2e2b0e62d93d0c6a949f951d2de5cc6e36bace Mon Sep 17 00:00:00 2001 From: Gabriel Horner Date: Mon, 2 Jun 2025 10:15:34 -0400 Subject: [PATCH 3/6] fix: remove outdated built-in? check We don't have lazy loading issues here anymore --- src/main/frontend/components/property.cljs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/frontend/components/property.cljs b/src/main/frontend/components/property.cljs index 849251b69b..37b85c7f77 100644 --- a/src/main/frontend/components/property.cljs +++ b/src/main/frontend/components/property.cljs @@ -577,8 +577,7 @@ (or ;; built-in (and (not (ldb/public-built-in-property? ent)) - ;; TODO: Use ldb/built-in? when intermittent lazy loading issue fixed - (get db-property/built-in-properties (:db/ident ent))) + (ldb/built-in? ent)) ;; other position (when-not (or sidebar-properties? (and (:sidebar? opts) (= (:id opts) (str (:block/uuid block)))) From 51420309123dae0c35684a044be6821fbb9cda92 Mon Sep 17 00:00:00 2001 From: Gabriel Horner Date: Mon, 2 Jun 2025 11:17:13 -0400 Subject: [PATCH 4/6] fix: property name allows page ref characters when editing that are disallowed at creation time. We should be consistent with our validation of property names --- deps/outliner/src/logseq/outliner/property.cljs | 3 ++- deps/outliner/src/logseq/outliner/validate.cljs | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/deps/outliner/src/logseq/outliner/property.cljs b/deps/outliner/src/logseq/outliner/property.cljs index 54ee57ef49..6b8bd6c37c 100644 --- a/deps/outliner/src/logseq/outliner/property.cljs +++ b/deps/outliner/src/logseq/outliner/property.cljs @@ -109,7 +109,8 @@ (when (and (some? property-name) (not= property-name (:block/title property))) (outliner-validate/validate-page-title property-name {:node property}) (outliner-validate/validate-page-title-characters property-name {:node property}) - (outliner-validate/validate-block-title @conn property-name property)) + (outliner-validate/validate-block-title @conn property-name property) + (outliner-validate/validate-property-title property-name)) (let [changed-property-attrs ;; Only update property if something has changed as we are updating a timestamp diff --git a/deps/outliner/src/logseq/outliner/validate.cljs b/deps/outliner/src/logseq/outliner/validate.cljs index cc0e2c3f35..6b7f4ddfd4 100644 --- a/deps/outliner/src/logseq/outliner/validate.cljs +++ b/deps/outliner/src/logseq/outliner/validate.cljs @@ -8,7 +8,8 @@ [logseq.common.util.namespace :as ns-util] [logseq.db :as ldb] [logseq.db.frontend.class :as db-class] - [logseq.db.frontend.entity-util :as entity-util])) + [logseq.db.frontend.entity-util :as entity-util] + [logseq.db.frontend.property :as db-property])) (defn ^:api validate-page-title-characters "Validates characters that must not be in a page title" @@ -138,12 +139,21 @@ :type :warning}})))) (defn validate-block-title - "Validates a block title when it has changed" + "Validates a block title when it has changed for a ldb/page? or tagged node" [db new-title existing-block-entity] (validate-built-in-pages existing-block-entity) (validate-unique-by-name-tag-and-block-type db new-title existing-block-entity) (validate-disallow-page-with-journal-name new-title existing-block-entity)) +(defn validate-property-title + "Validates a property's title when it has changed" + [new-title] + (when-not (db-property/valid-property-name? new-title) + (throw (ex-info "Property name is invalid" + {:type :notification + :payload {:message "This is an invalid property name. A property name cannot start with page reference characters '#' or '[['." + :type :error}})))) + (defn- validate-parent-property-have-same-type "Validates whether given parent and children are valid. Allows 'class' and 'page' types to have a relationship with their own type. May consider allowing more From 1c86338f8f14a65f0e8f7781e8dda8d157ce477c Mon Sep 17 00:00:00 2001 From: Gabriel Horner Date: Mon, 2 Jun 2025 11:30:11 -0400 Subject: [PATCH 5/6] fix: outliner lint --- deps/outliner/src/logseq/outliner/validate.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/outliner/src/logseq/outliner/validate.cljs b/deps/outliner/src/logseq/outliner/validate.cljs index 6b7f4ddfd4..4cb7f7e96b 100644 --- a/deps/outliner/src/logseq/outliner/validate.cljs +++ b/deps/outliner/src/logseq/outliner/validate.cljs @@ -139,7 +139,7 @@ :type :warning}})))) (defn validate-block-title - "Validates a block title when it has changed for a ldb/page? or tagged node" + "Validates a block title when it has changed for a entity-util/page? or tagged node" [db new-title existing-block-entity] (validate-built-in-pages existing-block-entity) (validate-unique-by-name-tag-and-block-type db new-title existing-block-entity) From 17f5e9127ccf08613c21e18ce709f59d2cdf573d Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 2 Jun 2025 23:15:29 +0800 Subject: [PATCH 6/6] fix: don't collapse blocks in list views if there's no children --- deps/db/src/logseq/db/common/entity_plus.cljc | 2 +- deps/db/src/logseq/db/common/initial_data.cljs | 3 ++- deps/db/src/logseq/db/frontend/validate.cljs | 2 +- deps/outliner/src/logseq/outliner/core.cljs | 3 ++- src/main/frontend/handler/editor.cljs | 1 + 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/deps/db/src/logseq/db/common/entity_plus.cljc b/deps/db/src/logseq/db/common/entity_plus.cljc index 932c6ac7f6..879b481489 100644 --- a/deps/db/src/logseq/db/common/entity_plus.cljc +++ b/deps/db/src/logseq/db/common/entity_plus.cljc @@ -22,7 +22,7 @@ :block/pre-block? :block/scheduled :block/deadline :block/type :block/name :block/marker :block.temp/ast-title - :block.temp/fully-loaded? :block.temp/ast-body + :block.temp/fully-loaded? :block.temp/has-children? :block.temp/ast-body :db/valueType :db/cardinality :db/ident :db/index diff --git a/deps/db/src/logseq/db/common/initial_data.cljs b/deps/db/src/logseq/db/common/initial_data.cljs index 84eed86507..4ced752014 100644 --- a/deps/db/src/logseq/db/common/initial_data.cljs +++ b/deps/db/src/logseq/db/common/initial_data.cljs @@ -234,7 +234,8 @@ (if (= children-props '[*]) (entity->map block) (-> (select-keys block children-props) - (with-raw-title block)))) + (with-raw-title block) + (assoc :block.temp/has-children? (some? (:block/_parent block)))))) children)))] (if children-only? {:children children} diff --git a/deps/db/src/logseq/db/frontend/validate.cljs b/deps/db/src/logseq/db/frontend/validate.cljs index 960dec5974..e5be1b407c 100644 --- a/deps/db/src/logseq/db/frontend/validate.cljs +++ b/deps/db/src/logseq/db/frontend/validate.cljs @@ -97,7 +97,7 @@ ent-maps* (db-malli-schema/datoms->entities datoms) ent-maps (mapv ;; Remove some UI interactions adding this e.g. import - #(dissoc % :block.temp/fully-loaded?) + #(dissoc % :block.temp/fully-loaded? :block.temp/has-children?) (db-malli-schema/update-properties-in-ents db ent-maps*)) errors (binding [db-malli-schema/*db-for-validate-fns* db] (-> (map (fn [e] diff --git a/deps/outliner/src/logseq/outliner/core.cljs b/deps/outliner/src/logseq/outliner/core.cljs index 360f62636e..3c4e3cce70 100644 --- a/deps/outliner/src/logseq/outliner/core.cljs +++ b/deps/outliner/src/logseq/outliner/core.cljs @@ -240,7 +240,8 @@ m* (cond-> (-> data' (dissoc :block/children :block/meta :block/unordered - :block.temp/ast-title :block.temp/ast-body :block/level :block.temp/fully-loaded?) + :block.temp/ast-title :block.temp/ast-body :block/level :block.temp/fully-loaded? + :block.temp/has-children?) common-util/remove-nils (fix-tag-ids db {:db-graph? db-based?})) diff --git a/src/main/frontend/handler/editor.cljs b/src/main/frontend/handler/editor.cljs index 081240b432..01f638ebc6 100644 --- a/src/main/frontend/handler/editor.cljs +++ b/src/main/frontend/handler/editor.cljs @@ -3898,6 +3898,7 @@ (or (util/collapsed? block) (and (or (:list-view? config) (:ref? config)) + (or (:block/_parent block) (:block.temp/has-children? block)) (integer? (:block-level config)) (>= (:block-level config) (state/get-ref-open-blocks-level))) (and (or (:view? config) (:popup? config))