Root cause: large-title rehydrate was reusing the remote tx’s
original entity id. When that id was a string tempid,
Datascript had already resolved it during remote apply, so rehydrate
created a new invalid entity with only :block/title.
Make `:ref/default-open-blocks-level 0` collapse references by default
in the DB version, matching the previous file-graph behavior. The
section fold is scoped to the page-bottom "Linked References" panel
only — the inline "Open block references" popup rendered next to
blocks always shows its references uncollapsed.
1. Collapse the "Linked References" section when the configured level
is 0, gated on a new `:linked-refs-section?` config flag set only
by the page-bottom call site in page.cljs. The inline popup at
block.cljs:3366 passes `{}` and is unaffected.
2. Propagate `:block.temp/has-children?` on the top-level fetched
block in `get-block-and-children`. The list-view loads linked-
reference blocks with `:children? false`, so `(:block/_parent ...)`
is always nil in the client DB and the collapse check in
`block-default-collapsed?` could never fire. Use a lightweight
`d/datoms :avet :block/parent` scan that stops at the first match,
rather than the reverse-ref `(:block/_parent block)` which
materializes the full child set. Includes a regression test.
3. Fall back to `:block.temp/has-children?` when computing `has-child?`
in `block-container-inner-aux`. This renders the collapse arrow for
blocks whose children exist in the worker DB but haven't been
lazily loaded into the client DB yet (e.g. linked-reference blocks).
Clicking the arrow calls `expand-block!` which loads them.
The `:ref/default-open-blocks-level 0 → (int? ...)` state.cljs fix
from PR #12228 is already present on this branch.
Move the Logseq Markdown Mirror syntax/export work out of the two-way sync branch while leaving file-to-DB sync behavior behind.
Details:\n- add docs/logseq-markdown-syntax.md and update ADR 0016 with the one-way mirror syntax contract\n- export mirror files with page id markers, property list items, nested default property values, node page refs, task status markers, and datetime values with time\n- preserve block refs as uuid links where needed while keeping page/node refs readable\n- update focused export and markdown mirror tests
Validation:\n- bb dev:lint-and-test
Keep editor async tests pinned to their test graph and restore frontend state so full cljs:run-test order does not leak into persist-db tests.
Issue: https://github.com/logseq/db-test/issues/821
Fixes rapid Enter then Tab applying indentation to the previous editing block while the newly inserted block is still pending.
fixes https://github.com/logseq/db-test/issues/821
Store only the latest non-empty server :block/title conflict for a block, clearing previous title conflict candidates before inserting the new one.
Add a regression test covering previous title candidates, empty server titles, and the latest non-empty title.
Normalize browser asset paths through the same memory URL flow used by renderer asset IO so graph names with spaces resolve correctly during RTC upload.
Handle async asset read failures in upload as read-asset failures, and surface queued asset uploads plus active asset upload/download counts in the RTC indicator.
Tests cover browser asset path normalization and RTC asset transfer summaries.
Add markdown mirror generation for DB graphs, including page and journal paths, regeneration, debounced write handling, and settings UI.
Serialize page and block property values into mirrored Markdown by resolving property-value entities to their display content.
Persist mirror files through the node worker platform and make browser worker mirror storage fail fast as unsupported.
Fix Electron userAppCfgs writes to avoid returning unserializable Electron state over IPC.
Add ADR and targeted tests for mirror generation, worker wiring, platform storage, and graph path handling.
Summary:
- Clear pending inflight tx ids when a db-sync websocket closes or is detected stale closed.
- Cover websocket close and stale-loop cleanup so reconnect can flush pending local txs again.
Tests:
- bb dev:test -v frontend.worker.sync.restart-test/ws-close-clears-inflight-before-reconnect-test
- bb dev:test -v frontend.worker.sync.restart-test/stale-loop-marks-non-open-ws-closed-test
- bb dev:test -v frontend.worker.sync.restart-test
When viewing a page in zoom/focus mode, pressing Shift+Tab could outdent
blocks past the zoom root boundary, causing them to disappear from the
focused view. This adds a guard in both single-block (indent-outdent) and
multi-block (on-tab) code paths to check for the zoom boundary.
Fixes#12582