Asset deletion (three independent failures stacked):
- Unlink file on asset-block retract via the existing <unlink-asset
helper at handler/assets.cljs (modules/outliner/pipeline.cljs:74-80).
The block was commented out; deleted-assets was computed but never
consumed, so files leaked indefinitely.
- Reactive existence check in image-icon-cp / avatar-image-cp via
state/sub :db/latest-transacted-entity-uuids. model/sub-block can't
drive this — worker/react.cljs:63-67 calls (d/entity db-after id),
which returns nil for retracted entities, so [::block id] is never
emitted in affected-keys and subscriptions never fire on deletion.
- Force-remount Avatar root via :key on asset-missing? toggle. Radix's
Avatar primitive tracks image-loading status in context; once
AvatarImage reported 'loaded', the status sticks even after the image
unmounts, so AvatarFallback stays hidden.
PR-review cleanup (no behavior change):
- Strip 17+ [DEBUG ...] console statements across icon, block, views,
two editor handlers, and assets.
- Close content.cljs preview gap: pass :preview-target-db-id +
:property to icon-search so the block bullet observes hover preview
consistently with every other surface.
- Scope-correct close-fallback-menu! — use dissoc-icon-preview-field!
instead of unconditional state/set-state! nil.
- Delete dead code: heal-dangling-asset-icon (raced lazy hydrate),
asset-uuid->entity, rgb-string->hex, name->hex (named + css),
format-pairs.
- Hoist icon-grid-cols / custom-tab-cols magic numbers (9 sites).
- Search inputs: add :type "search" and :aria-label (both picker +
asset-picker).
- Replace hardcoded #6B7280 with (colors/variable :gray :09).
- Reconcile recents-cap doc drift in storage.cljc + recents-lane
docstring (cap lives in handler/icon-color/max-recents).
- Remove orphan-asset cleanup from outliner/core save-block-inner. Root
cause (migration 65.27's :url ref-type) is fixed by 65.28/65.29; all
asset writers are atomic (save-image-asset!, new-asset-block,
build-new-asset), and the cleanup ran on every save with a silent-
retract failure mode.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Adds a hex/HSV picker pane to the icon-picker color popover, plus a
per-graph recents lane and cross-theme contrast adjustment. Hex input
supports named-color autocomplete (148 CSS + 949 XKCD) with a ghost
suffix that Tab/Right-arrow accepts. Picked colors that fail WCAG 3:1
against either light or dark background are auto-shifted in OKLCH per
mode; recents and the trigger swatch render as half-pie splits when the
two modes diverge.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* chore: update logseq-i18n-lint binaries to 5cb43a2cc559
* chore: update PR creation to use default branch and repo owner variables
* feat(i18n): add check for missing translations in validation process
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* chore(deps): upgrade Clojure version to 1.12.4 across multiple dependency files
* chore: bump shadow-cljs to 3.3.6
* chore: bump org.clojure/clojurescript to 1.12.134
* chore(deps): upgrade Clojure version to 1.12.4 in workflow files
* chore(deps): upgrade Java version to 21 in workflow files
* chore(deps): upgrade Node.js version to 24 in workflow files
* chore(deps): upgrade Node.js version to 24 in Dockerfile
* feat(updater): migrate electron-forge to electron-builder
* fix wrong android app version
* fix workflow
* feat(dependency-upgrade): add max-update-interval option for dependency audits
* chore(deps): upgrade electron-builder and electron-updater
* fix: update manual verification instructions for Electron shim cache
* chore: update shadow-cljs version to 3.4.4 across all dependencies
* chore: upgrade electron version to 41.2.1
* chore: update metosin/malli dependency to latest
* chore: upgrade cider-nrepl version to 0.59.0 in dependencies
* chore: upgrade clj-kondo version to 2026.04.15 and fix warning
* chore: move Electron windows build configuration from yml to ci
* chore: update Electron signing configuration to extend from base config
* fix: replace icon file for NSIS compatibility
* chore: resolve metosin/malli version conflicts
* chore: upgrade jdk to 21 in e2e workflow
---------
Co-authored-by: Tienson Qin <tiensonqin@gmail.com>