Skip to content

Releases: zsviczian/kplex

0.1.2

Choose a tag to compare

@github-actions github-actions released this 10 Oct 20:00

Added crosslinks to plugin settings.

0.1.1

Choose a tag to compare

@github-actions github-actions released this 10 Oct 19:29

K-Plex 0.1.1 — More Control, Smoother Navigation, Better Performance

This release brings some exciting improvements to how you explore, navigate, and interact with your knowledge in Obsidian.

From keyboard-driven navigation and distraction-free fullscreen views to smarter relationship management, improved editor controls, and faster indexing, K-Plex is becoming a more flexible and responsive visual thinking environment.

✨ What's New

⌨️ Navigate Your Knowledge with the Keyboard

K-Plex now offers a much richer keyboard experience.

  • Arrow key navigation: Move between nodes using arrow keys, jump between relationship areas with Alt/Option + Arrow, and press Enter to navigate.
  • Type to select: Simply start typing while the graph has focus to highlight matching nodes. Use Tab and Shift+Tab to cycle through matches.
  • K-Plex Command Palette: Press Alt/Option + . to access K-Plex actions without leaving the graph.
  • Customizable shortcuts: Configure, disable, and restore keyboard shortcuts under Settings → K-Plex → Actions and shortcuts.
  • Conflict detection: Easily identify overlapping K-Plex shortcuts and potential conflicts with Obsidian commands.
  • More keyboard actions: Quickly create relationships, open editors, manage pins, navigate history, and more.

🖥️ Fullscreen and Zen Mode

Give your knowledge graph the space it deserves!

  • Fullscreen mode: Expand K-Plex to fill the entire Obsidian workspace on desktop, without entering operating-system fullscreen.
  • Zen mode: Hide the top toolbar, pins, and history bar for a clean, distraction-free graph.
  • Mix and match: Fullscreen and Zen modes work independently.
  • Keep your context: Switching modes preserves your graph position, zoom, selection, and navigation history.

Zen mode is also available on mobile devices.

🎨 More Control Over Your Plex Appearance

  • Improved node typography and label sizing across different screen sizes.
  • Better control over label length, node width, wrapping, and layout density.
  • More consistent slider behavior and layout controls, including in smaller panes.
  • Improved node highlighting when using Find in Plex.
  • Fixed fullscreen toolbar overlap with window controls on Windows.

📝 Better Embedded Editors

  • Markdown zoom control: Choose whether an embedded Markdown editor keeps its text size fixed or scales with Plex zoom. K-Plex remembers your choice for each note.
  • Automatic Excalidraw fitting: Drawings can automatically fit the embedded editor when opened, independently of Excalidraw's own fit-on-open preference.
  • Preserve manual zoom: Resizing or maximizing an open Excalidraw drawing no longer unexpectedly resets your zoom.
  • Improved Excalidraw synchronization: Linked tabs and Sidecar navigation better respect your selected drawing or Markdown view.

🔗 Smarter Relationship Management

  • Configurable Date relationships: Choose how Date properties connect notes to daily notes. Supported defaults include Parent, Child, Friend, Challenger, Previous, and Next. Explicitly configured ontology takes precedence.
  • Remove individual relationships: Connection details now lets you remove a specific frontmatter relationship source without disturbing other evidence contributing to that connection.
  • More accurate relationship counts: Fixed incorrect gate counts when filtering complex graphs.

🐞 Easier Bug Reporting

A new Report a bug button in the K-Plex toolbar makes it easier to report problems.

  • Generate and copy a diagnostic report with one action.
  • Include useful technical details such as plugin versions, theme information, indexing diagnostics, and recent runtime events.
  • Preview the report before sharing it.
  • Get guidance on submitting a useful GitHub issue.

Diagnostic reports exclude vault note contents and are never submitted automatically.

🚀 Performance and Reliability

This release includes several improvements, especially for larger vaults and notes containing many web links.

  • Faster cached URL restoration: Significantly reduced processing overhead when restoring large collections of web-link relationships.
  • Smoother background indexing: Reduced interruptions during heavy URL indexing and graph updates.
  • More reliable startup: Added safeguards against cache restoration becoming stuck indefinitely.
  • Clearer indexing status: Fixed cases where K-Plex continued displaying "Preparing local graph" even after the local graph was ready. On-demand progress is now presented more accurately.
  • Responsive Markdown editing: Fixed an autocomplete issue that could cause Obsidian to freeze when pasting very long text.
  • Improved interaction stability: Fixed slider gestures, filtered relationship counts, and linked-editor synchronization.

These improvements build on the indexing architecture introduced in 0.1.0, making K-Plex more dependable as your knowledge graph grows.

❤️ Support K-Plex

K-Plex is an independent project developed with the help of its growing community.

If you enjoy using K-Plex:

Thank you for helping shape K-Plex!

What's Changed

  • Add configurable Plex keyboard navigation and native hotkey settings by @zsviczian in #80
  • Implement K-Plex Action Manager and native shortcut settings by @zsviczian in #85
  • Fix: stale indexing status and misleading progress in on-demand mode by @zsviczian in #82
  • Add independent fullscreen and Zen modes by @zsviczian in #86
  • Keep ontology autocomplete responsive after long paste by @zsviczian in #87
  • Add configurable default Date property roles by @zsviczian in #94
  • Bound startup cache restoration lifetimes by @zsviczian in #95
  • Improve cached URL restoration performance by @zsviczian in #102
  • docs: require checklist plans and ten-minute ETA updates by @zsviczian in #103
  • Reduce search allocations during dense URL publication by @zsviczian in #104
  • Improve cached source replay and dense URL update responsiveness by @zsviczian in #105
  • Improve Plex typography, fullscreen controls and connection editing by @zsviczian in #108
  • Fix slider gestures, semantic gate counts and Excalidraw follow by @zsviczian in #112
  • Add support diagnostics and configurable editor zoom behavior by @zsviczian in #113

Full Changelog: 0.1.0...0.1.1

0.1.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 20:35

K-Plex 0.1.0

image

K-Plex 0.1.0 is a major usability, navigation, editing, and performance release.

The biggest change is that K-Plex no longer needs to finish processing your entire vault before it becomes useful. Search, navigation, local graphs, and relationship editing are prioritized, while broader indexing continues cooperatively in the background.

This release also adds a much richer center editor, new search and layout tools, improved drag-and-drop workflows, multilingual UI, and stronger ExcaliBrain migration support.

🚀 Faster startup and more responsive indexing

K-Plex now prioritizes what you are working with instead of treating full-vault indexing as a prerequisite.

  • On-demand indexing is now the default. K-Plex prepares the current Plex and the information needed for your immediate actions first.
  • Eager indexing remains available if you prefer K-Plex to process the full vault in the background.
  • Search becomes available very early during startup, before complete indexing.
  • Cached graphs can be displayed and used while background verification continues.
  • Navigation, creating notes, editing relationships, and visible graph updates take priority over background work.
  • Local graphs remain stable while additional relationships and counts are discovered instead of being replaced by incomplete intermediate results.
  • High-degree URL nodes are significantly more responsive during indexing.
  • Web-link discovery now has its own persisted cache and can restore independently.
  • Changing ontology, inference, filters, styling, or other presentation settings no longer unnecessarily invalidates the underlying source index.
  • Indexing progress now reports more meaningful phases and counts.
  • Index progress and compatible cached data survive restarts more reliably.
  • Creating or changing a note no longer causes unnecessary full-vault rebuilds.

A new Settings → Indexing config section provides:

  • Indexing mode: On-demand or Eager
  • Background indexing speed: Responsive, Balanced, or Faster
  • Purge index cache, including an estimate of the current cache size

The default configuration is On-demand + Responsive.

While K-Plex is still discovering information, some global counts and relationships may fill in progressively. The index indicator shows the current state.

✏️ A much richer center

image

The center of the Plex can now become a working editor instead of only representing the current note.

For Markdown and Excalidraw notes you can switch between the compact node and an embedded Obsidian editor without leaving K-Plex.

The embedded center now supports:

  • Markdown reading and editing
  • Excalidraw drawings, including Markdown/drawing switching and zoom-to-fit
  • Canvas files
  • Images with contain-fit display
  • Websites
  • Video-aware web layouts

The surrounding Plex automatically makes room for the editor, including when it is resized or expanded.

Links opened from embedded content continue to work with K-Plex navigation and Obsidian's normal tab/pane behavior.

🔎 Better search

K-Plex now has two clearly separated search experiences.

Vault search — F4

Vault search works across the vault, not just the currently indexed Plex.

It can find:

  • Markdown notes
  • Attachments, including orphan files
  • Canvas files
  • URLs
  • URL aliases

Find in Plex — Ctrl/Cmd+F

Find in Plex searches only the graph currently on screen.

It can:

  • Find displayed note names and ontology labels
  • Optionally include file paths
  • Reveal matches hidden inside scrollable areas
  • Move between matches with Enter / Shift+Enter
  • Temporarily filter matching notes and reflow the Plex around the center

Vault search and Find in Plex are independent, so finding something locally no longer changes your main navigation search.

🔗 Faster relationship workflows

Creating and changing relationships now requires fewer modal steps.

  • Drag a relationship gate onto a Past node or pinned note to create that relationship directly.
  • Drag a node body onto history or a pinned note to choose the relationship type.
  • Drag files from Obsidian's File Explorer onto K-Plex:
    • drop on the center to navigate there
    • drop on a relationship area to create a relationship
  • Eligible drop targets highlight while dragging.
  • Relationship edits remain available while indexing continues.
  • Unlinking works immediately even while cached/source data is being reconciled.
  • Ordinary visible nodes now receive more accurate directional relationship counts.

The Add Link / Add Child dialog is also draggable on desktop.

🧭 Improved navigation

Several smaller changes make K-Plex fit better into an Obsidian workspace.

  • Drag a Markdown note from File Explorer onto K-Plex to make it the center.
  • Node context menus now include an Open submenu for:
    • an existing tab
    • a new tab
    • an adjacent pane
    • a pop-out window where available
  • Recent-tab synchronization now correctly remembers inactive tabs inside tab groups.
  • URL nodes respect Obsidian's Web Viewer/browser preference.
  • URL nodes can be opened with double-tap on touch devices.
  • A new About vault view provides useful vault and indexing information.

🎛️ More control over the Plex layout

Layout can now be adjusted directly from the Plex.

New controls include:

  • Horizontal density
  • Vertical density
  • 1–3 parent columns
  • Child columns
  • Base font size
  • Maximum node width
  • Label wrapping
  • More flexible long and two-line labels

Relationship areas can be resized directly by dragging their boundaries. Area settings can expose resize handles for all areas, including empty ones.

Filters and lenses can also be repositioned, and the Plex Find filter can temporarily hide non-matching nodes and reflow the graph.

Numerous spacing, wrapping, clipping, toolbar, theme contrast, thumbnail, Canvas zoom, and resize behaviors have also been refined.

🌍 K-Plex now speaks more languages

K-Plex now includes complete UI translations for:

  • German
  • French
  • Spanish
  • Dutch
  • Japanese
  • Traditional Chinese
  • Russian

English remains the fallback for unsupported locales.

🧠 Improved ExcaliBrain migration

The remaining ExcaliBrain compatibility path has been cleaned up and focused on what is useful when moving to K-Plex.

Import now preserves:

  • Ontology configuration
  • Node styles
  • Tag-based node styles
  • Relationship/link styles
  • Relevant graph styling

Imported styles are also visible and editable in K-Plex's style managers.

K-Plex-specific UI, navigation, editor, indexing, and other local preferences remain under K-Plex's control rather than being overwritten by ExcaliBrain settings.

K-Plex now consistently uses K-Plex naming and canonical K-Plex command IDs. If you previously assigned hotkeys to legacy ExcaliBrain command IDs, review your Obsidian hotkey settings after upgrading.

🛠️ Fixes and polish

0.1.0 also includes many smaller corrections, including:

  • More stable graphs while background indexing progresses
  • Correct restoration of visible node styling, including Excalidraw styling
  • Reduced flicker and repeated updates around heavily referenced URLs
  • Better index-status behavior on narrow layouts
  • More reliable cache restoration and recovery
  • Improved imported ExcaliBrain style handling
  • More consistent touch interactions
  • Improved image thumbnails and previews
  • Better Canvas resize and zoom behavior
  • Improved toolbar wrapping and theme contrast
  • More reliable live relationship counts and filtering
  • Numerous mobile, tablet, Sidecar, pop-out, and desktop layout fixes

Full Changelog: 0.0.5...0.1.0

What's Changed

  • feat: refactor - establish portable graph core and refactor guardrails through C14 by @zsviczian in #38
  • fix: imported ExcaliBrain styles and add migration regression coverage by @zsviczian in #39
  • feat(i18n): extract user-facing strings to English catalog by @zsviczian in #40
  • feat(ui): draggable desktop dialog shell for related-note modal by @zsviczian in #41
  • feat(i18n): bundle German, French, Spanish, Dutch, Japanese, Traditional Chinese and Russian translations by @zsviczian in #42
  • feat: Open K-Plex on a note dropped from File Explorer by @zsviczian in #43
  • feat: Add file opening submenu to Plex node context menus by @zsviczian in #44
  • feat: Show a useful graph and search results sooner during startup by @zsviczian in #45
  • feat: Show live indexing progress from the status indicator by @zsviczian in #46
  • fix: Open URL nodes correctly and support touch double-tap by @zsviczian in #47
  • feat: improve indexing status feedback and persist startup notice dismissal by @zsviczian in #48
  • feat: resize Plex relationship areas directly by @zsviczian in #49
  • feat: add an embedded central editor with Excalidraw support by @zsviczian in #52
  • fix: avoid full vault rebuilds when creating notes by @zsviczian in #53
  • fix: preserv...
Read more

0.0.5

Choose a tag to compare

@github-actions github-actions released this 24 Sep 17:00
  • Added lenses (bases style)
    • Moved all lens button under lenses
    • Added cross-links (as a lens)
    • Added lens based styling
  • Added support for note thumbnail image and custom alias fields
  • Restructured settings a bit
  • Added support to add links as children
  • Fixed issues with the touch actions (iPad). you can now add children, make connections, etc.

Full Changelog: 0.0.4...0.0.5

0.0.4

Choose a tag to compare

@github-actions github-actions released this 22 Sep 15:49

This release is a major performance, stability, and workflow update to K-Plex.

There are more things in here than I can list. I have probably missed a number of new features. Explore, enjoy, and let me know what you think.

The focus has been on making K-Plex practical for large real-world vaults, improving mobile/iPad reliability, simplifying relationship editing, and making the Plex behave more like a responsive spatial workspace rather than a graph that constantly redraws itself.

Much faster startup and large-vault indexing

K-Plex now uses a substantially redesigned indexing architecture.

  • The persistent graph cache is stored in IndexedDB.
  • Startup restores a small usable neighborhood first so the Plex can appear before the complete graph has finished hydrating.
  • The remainder of the cached graph and relationship evidence loads progressively in the background.
  • Cached snapshots are generation-based and published transactionally, so an interrupted write does not replace the previous complete snapshot.
  • Parsed Markdown metadata is cached per file, modification time, and parser version.
  • Resolved neighbor maps are cached as well, avoiding unnecessary relationship recomputation on warm startup.
  • IndexedDB maintenance is kept away from the interactive editing path where possible.
  • Interrupted cold indexing can reuse already persisted body records instead of restarting from file zero.

This work also resolves the major iPad stability problem encountered with large vaults during initial indexing.

On iOS, K-Plex uses more conservative batching, frequent cooperative yields, bounded in-memory caches, and a low-memory body-cache warmup before constructing the complete graph.

Incremental indexing while you work

Editing one note no longer means rebuilding the entire K-Plex index.

K-Plex now:

  • reparses only changed Markdown files;
  • removes and rebuilds only relationship evidence associated with those files;
  • resolves only affected relationship pairs;
  • patches only affected search-index entries;
  • queues body-cache persistence behind the interactive graph update;
  • coalesces frequent metadata/autosave events;
  • avoids unnecessary graph updates when a file's K-Plex-relevant semantics did not change.

This is especially important for .excalidraw.md files and other large Markdown files.

The body parser now scans fenced regions without splitting megabyte-scale Excalidraw JSON payloads into thousands of temporary strings. Large drawing-data changes therefore have much less indexing overhead when the graph-relevant Markdown content has not changed.

Stable graph updates

Graph refreshes caused by Obsidian Sync, metadata-cache updates, autosave, or background indexing no longer automatically recenter the Plex.

The user's current camera and scroll position are preserved.

New nodes are added to the existing scene and surrounding nodes may move where necessary to make room, but the workspace itself stays where the user left it.

Improved animation

Navigation now uses positional scene animation rather than simply fading between layouts.

  • Nodes present in both scenes visibly move to their new positions.
  • Newly appearing nodes enter with motion from the appropriate relationship direction.
  • The new central node transitions slightly faster than the surrounding scene.
  • Animation speed is configurable from 0/off through 2×.
  • Reduced-motion settings are respected.

Section folding is treated separately and does not trigger graph recentering.

Expand Markdown notes into sections

The central Markdown note can now be expanded into its heading hierarchy.

Sections are runtime-only and are not added to the persistent vault index.

The section view includes:

  • nested heading hierarchy;
  • compact document-outline styling;
  • dedicated orthogonal tree connectors separate from semantic relationship connectors;
  • folding and unfolding of individual branches;
  • recursive Fold all / Unfold all actions;
  • projection of hidden descendant relationships to the nearest visible folded section;
  • preservation of the original section in relationship provenance;
  • direct opening of a heading in the source Markdown note.

Markdown central nodes now also display a small fold/unfold square directly on the node, so sections can be opened without using the context menu.

Non-Markdown central nodes do not display this control.

Relationship creation redesigned

Adding a Parent, Child, Friend, or Challenger now uses one compact relationship dialog.

The same dialog is available from gates and from dedicated Command Palette actions, making it possible to assign hotkeys to:

  • Add child
  • Add parent
  • Add friend
  • Add challenger

The dialog includes:

  • fuzzy note search;
  • fuzzy ontology search;
  • result lists that remain closed until typing starts;
  • result lists that float outside the modal when viewport space allows;
  • highlighted matching text fragments;
  • Markdown as the default new-note type;
  • optional Excalidraw creation when Excalidraw is installed;
  • filename validation before creation;
  • duplicate-name checking;
  • Ctrl/Cmd+Enter for the current primary action.

Selecting an existing note does not immediately close the dialog. The user can still change the ontology field and then press Link.

When typing a new filename, Markdown and Excalidraw creation buttons remain disabled until the name is valid and unused.

Escape now behaves naturally with fuzzy results:

  1. first Escape closes the open suggestion list while preserving the typed value;
  2. a second Escape closes the modal.

New files follow Obsidian's configured New note location, including locations relative to the current central note.

Remembered ontology choices

The ontology selector defaults to the normal ontology for the requested relationship:

  • Parent
  • Child
  • Friend
  • Challenger

If the user chooses another ontology field, K-Plex remembers that choice as the default for the next relationship of that type.

Typing a previously unknown ontology field automatically adds it to the relevant K-Plex ontology configuration.

Relationship provenance and explanation

K-Plex retains the evidence that caused a relationship to exist.

Explain relationship can show evidence originating from:

  • YAML/frontmatter ontology;
  • body ontology;
  • ordinary Obsidian links;
  • folder and tag structure;
  • URLs;
  • dates and Daily Notes;
  • section-level Markdown content.

K-Plex intentionally gives frontmatter ontology precedence over conflicting body ontology from the same declaring note/target pair.

Conflicting body evidence is not discarded. It remains visible in Explain relationship as overridden evidence.

For Markdown-backed evidence, the explanation dialog now includes Navigate actions. These open a native Markdown tab and jump to the relevant property or link location using ephemeral editor state.

This also works for .excalidraw.md files by opening their Markdown source when provenance navigation is requested.

Unlink relationships

Connector context menus now include Unlink connection.

If a relationship is caused by exactly one editable frontmatter ontology declaration, K-Plex removes that declaration directly.

If the relationship has multiple sources, comes from body text, or is otherwise ambiguous, K-Plex opens Explain relationship instead of guessing which source the user intended to remove.

Better relationship editing

Dragging an existing related node to another relationship area continues to support reclassification, but the update path is now incremental.

K-Plex uses relationship provenance to prefer editing the source that already defines the relationship.

The UI applies the move optimistically while Obsidian writes and reindexes the affected note, avoiding the previous jump-back / full-rebuild behavior.

New-note flair

When a newly created or newly linked note appears in the Plex, it receives a short visual highlight so the user can immediately find it.

If the note appears inside a scrollable relationship zone, K-Plex scrolls that zone to the new node first.

If an active zone filter prevents the new node from being visible, the filter control is highlighted instead.

Rename notes from K-Plex

File-backed nodes now provide Rename note… in their context menu.

Renaming uses Obsidian's native FileManager.renameFile() API so Obsidian handles link updates and normal vault bookkeeping.

Companion sidecar improvements

The companion sidecar remains a real native Obsidian tab/pane adjacent to K-Plex.

It can be positioned:

  • left;
  • right;
  • above;
  • below.

New Sidecar settings allow Markdown documents to default to either Reading view or Edit mode.

Closing K-Plex no longer closes the companion document.

K-Plex can also be folded away while a sidecar is open. The K-Plex tab group is hidden and a small unfold control remains on the document edge, allowing the document to temporarily use the available split space.

Moving or detaching the companion document preserves normal Obsidian behavior.

Simplified note-tab synchronization

Synchronization uses three understandable states:

  • not linked to a note tab;
  • linked to the most recent note tab;
  • pinned to one fixed note tab.

There are also explicit one-shot actions:

  • Sync most recent note tab with K-Plex
  • Sync K-Plex with most recent note tab

The interface uses Obsidian-oriented terms such as note and tab instead of Workspace API terminology.

Mobile and touch improvements

K-Plex now has explicit touch interaction instead of relying on desktop mouse behavior translated by the browser.

Improvements include:

  • one-finger panning;
  • two-finger pinch zoom;
  • pinch starting over thoughts and connectors;
  • touch-safe relationship dragging...
Read more

0.0.3

Choose a tag to compare

@github-actions github-actions released this 20 Sep 20:15

Full Changelog: 0.0.2...0.0.3

0.0.2

Choose a tag to compare

@github-actions github-actions released this 20 Sep 19:30

Full Changelog: 0.0.1...0.0.2

0.0.1

Choose a tag to compare

@github-actions github-actions released this 20 Sep 18:19