Skip to content

Knowledge Base Command Center 0.14.0

Choose a tag to compare

@github-actions github-actions released this 13 Aug 13:50
· 12 commits to main since this release
7d4fb57

Added

  • Creating a note now opens one unified form that files into the Inbox by default — type a title, press Create, done. A new Destination row at the top of the form shows where the note will go, and Change… re-targets the same form at the Index (choose a visual group), a Collection heading or subheading (chosen by full path, with a prompt to create the first heading when none exist), or any Library (choosing its heading or subheading first, exactly as before). Switching the destination re-seeds the folder, content mode, and template with that destination's own defaults, and every field stays editable for a one-note exception. Collections join note creation for the first time — previously a note could only be added to a Collection after it existed.
  • If a synced change removes the chosen Collection or Library while the form is open, the note is still created and a notice explains it was left unfiled, rather than placing it under the wrong heading or failing after the file already exists.

Changed

  • Quick entry: Create note…, Add → Create note, Create note from template or empty note…, and the obsidian://kbcc-create-note URL all open the unified form directly in the generic profile; none of them ask for a destination up front anymore. The ENT clinical profile is unchanged: its protected proposal workflow and native-library restrictions are untouched.
  • The separate Create in Inbox entry was removed from the Add menu because Create note now defaults to the Inbox. The empty-Index call to action still creates directly into the Index, where filing into the Inbox would look like nothing happened.

Fixed

  • Pasting very long text into a settings field or importing a workspace configuration containing one could persist a value the loader refuses, making the entire multi-base store open read-only on the next launch — on every synced device. Every writer now clamps user-editable text to the same 10,000-character bound the loader enforces, applied once more immediately before each save so no entry path can slip past it.
  • Restored the plugin's older-web-view compatibility a second time. The bundle called the platform's structuredClone in 84 places; that API needs Chrome 98 / iOS 15.4, above the floor release 0.13.1 deliberately restored, and one call ran while the plugin class was still being constructed — so on an older Android web view the plugin failed to load at all. All call sites now use an in-house ES2018 clone helper, and the community verification script fails the build if structuredClone reappears in either the source or the bundle, closing the enforcement gap that let a DOM-declared global bypass the pinned compiler baseline.
  • Every ordering that reaches persisted bytes or decides a cross-device tiebreak now compares strings by code units instead of locale collation. Two devices with different system locales could order the same tied library names, group titles, or provisional vault identities differently, which changed semantic fingerprints, reset sync ancestry, or made each device prefer its own copy indefinitely. Display-only sorts keep natural locale collation.
  • A rejected write during the one-time startup migration or repair no longer aborts plugin loading. Previously the plugin was left enabled but with no view, no commands, and no settings tab — so the recovery guidance in its own warning was unreachable. It now degrades to the designed read-only state with the warning visible and the Sync & Recovery Center available.
  • After a synced change was merged, the automatic view refresh ran while the reload guard was still armed, so the refresh's own bookkeeping saves were rejected and the open Command Center kept showing the pre-merge tree with an alarming notice. The guard now lowers once the merge is committed, immediately before the refresh, and re-arms for any change that arrives mid-refresh.
  • The Manage index Diagnostics tab recomputes after membership and group changes made inside the modal instead of serving the list and count captured when the tab was first opened.
  • Editing an extension topic's placement can no longer select one of its own descendants as parent, which would have created a hierarchy cycle that detached the branch from every root. The picker filters descendants out and validation refuses them at any depth.
  • Folder fields now refuse the characters note titles already fold away (\ : * ? " < > | # ^ [ ], trailing periods or spaces, and Windows-reserved names), which previously broke the wikilinks Obsidian builds from the full path.
  • Portable exports order subjects with a consistent comparator; a subject with no parent previously compared inconsistently against its neighbors, so the exported order could depend on input order and JavaScript engine.
  • Removed the unreachable legacy workspace import/export path inside Manage index (about 150 lines); the Export/Import center owns that flow and validates strictly more.
  • The documentation no longer tells mixed-device fleets to install "0.12.x", which can no longer edit the current store format; upgrade guidance is now version-neutral, the troubleshooting cross-link points at the section that actually exists, and the What's new window description matches the real trigger rule.