What's new in v6

· Inkdrop Forum ·

17 min read Original article ↗
cover

Inkdrop v6 is the biggest release since the app was born.
Nearly every layer has been rebuilt — the editor, the Markdown renderer, the theming system, the storage engine, the plugin toolchain, and the build pipeline — while keeping the app small, fast, and focused on writing.
It also completes the roadmap vol.6 in full.

Here’s everything that’s new.

New Editor

The whole editor has been rebuilt on CodeMirror 6. That single change unlocked most of the features below — and it finally retires the Atom-era foundation Inkdrop had been carrying since v1.

Floating toolbar

In v5 the toolbar was pinned above the editor, taking up space even when you weren’t using it. Now it floats in only when you select text.

Floating toolbar

Slash commands

On an empty line, press / to insert blockquotes, headings, alerts, and more without touching the mouse.

Slash commands

Autocompletion everywhere

Type ``` and the editor suggests a language for your code block:

Code block language suggestion

Inside a code block, autocompletion switches to the language you picked:

Autocompletion in code blocks

And typing : plus two characters brings up GitHub-style emoji candidates:

Emoji autocompletion

GitHub Alerts syntax

Alerts are highlighted with the proper colors and left border — nested alerts and quotes included — with autocompletion for the alert type.

GitHub Alerts syntax highlighting

Note links with [[

Press [[ to search your notes and insert an internal link. The candidate list previews the note beside it, with full syntax highlighting.

Quick note link insertion
Syntax highlighting in the note link preview

The note you want doesn’t exist yet? Start typing a title, choose Create new note, and it’s created, linked, and opened in one step.

Create a new note from the note link autocomplete

Reading highlights

Select text and hit the highlight button to wrap it in a <mark> tag — perfect for emphasizing what resonates in your reading notes. It pairs nicely with the Web Clipper’s Kindle highlight import.

Highlight button on the floating toolbar
Highlighted text in the editor
Highlighted text rendered in the preview

The smoothest link pasting

Pasting a URL used to pop a dialog that stole focus from the editor. Now the link formats appear inline in the autocompletion menu, and the page title is fetched in the background — so you never wait, and you never leave the editor.

Link format suggestions in the autocompletion menu

Auto link title demo

Resize images right in the editor

Inkdrop now understands Marp-style image size specifiers:

![width:200px](image.png)
![w:320 h:240](image.png)
![width:50%](image.png)

You don’t have to memorize the syntax — put your cursor on an image and a resize toolbar pops up with Auto / Small / Half / Full presets.

Image resize toolbar
Image resizing examples

Docs: Resize images

A refurbished editor header

Navigation back/forward, view mode buttons, and a distraction-free toggle are now right in the header, so new users can find the basics without reading the manual.

Navigation buttons

Editor view mode buttons

The old right-side drawer has been replaced by a native action menu that drops down from the more button — or press Cmd/Ctrl+J — with proper keyboard navigation and type-ahead.

Copy button for code blocks

The button appears when your cursor enters a code block.

Copy button in the editor

Native spellcheck

The editor now uses the OS-native spellchecker. Toggle it via Preferences → Editing → Markdown → Spellcheck.

Spellcheck option

Link tooltips

When the cursor lands on a URL, a tooltip offers to open it in your browser — internal note links included.

Link open tooltip

Little things that add up

  • ToDo items get a strikethrough when checked
  • editor:move-line-up / editor:move-line-down (Alt+↑ / Alt+↓)
  • View menu toggles for line numbers, line wrapping, and readable line length
  • Multiple cursors and rectangular selection

New Markdown Renderer

The Markdown preview got just as much attention as the editor.

Find in preview

A long-awaited one. It highlights matches across DOM elements, so complex queries like e if a and ct(ar work — which is what makes finding text inside code blocks actually possible.

Advanced code blocks

Code blocks now render with language icons, line numbers, and meta info — plus a copy button on hover.

Language icons for code blocks
Copy button in the preview

Fenced blocks tagged markdown are highlighted with the full GitHub Flavored Markdown grammar — headings, emphasis, links, task lists, nested fenced code blocks, and YAML frontmatter inside them. Writing plugin READMEs and tutorials inside Inkdrop finally feels right.

Embed GitHub code snippets by pasting a link

Select a line range on GitHub, copy the URL, paste it into your note — Inkdrop fetches the code and inserts it as a syntax-highlighted snippet with line numbers and a link back to the source.

Selecting a line range on GitHub
Rendered GitHub snippet code block

The meta syntax is inspired by MDX and is fully backward-compatible — other Markdown engines just see a plain code block.

Connect your GitHub account via OAuth in Preferences → Integrations and it works with private repos too, including rich link titles for repos, issues, PRs, and commits.

GitHub OAuth integration

Mermaid, seriously upgraded

Hover a diagram and a toolbar appears: zoom in / reset / zoom out. Drag to pan, Ctrl/Cmd + wheel to zoom, and expand into a full-screen viewer (Esc to close). None of it shows up in print or PDF exports.

Mermaid pan and zoom

Diagrams are also themed entirely through CSS variables now, so they match your active theme in both light and dark mode — no more diagrams that look out of place.

Mermaid theming support

Docs: Diagram colors (theme development guide)

Image viewer

Double-click an image to open it in a viewer and look at it up close.

Image viewer

Built-in AI features

AI in Inkdrop is opt-in and bring-your-own-API-key. Nothing leaves your machine unless you configure a provider yourself, and your keys are stored in your system credential storage.

Watch the AI integrations video

Inline AI assistant

Select a passage, open the inline prompt, and the result is applied in place. Built-in presets get you started:

  • Proofread your writing
  • Summarize a passage
  • Create a Mermaid diagram from a description
  • Convert to a Markdown table
  • …plus your own custom prompts
Inline AI assistant

Docs: Set up AI integrations · Docs: Inline AI assistant

Next Edit Suggestions

Like GitHub Copilot, but for your notes — it predicts your next edit, which is genuinely useful when writing repetitive or structured content. It also feeds your linked notes and backlinks into the prompt as read-only context, so suggestions draw on terminology from related notes.

Next Edit Suggestions demo

Three modes are available. It’s set to Manual by default — for a note-taking app, automatic suggestions felt distracting.

  • Automatic — suggests as you type
  • Manual — trigger with Alt+\ (default)
  • Disabled
Next Edit Suggestions preferences

Press Tab to accept, Esc to dismiss.

Docs: Next Edit Suggestions

Connect your notes to AI agents in a few clicks

Inkdrop’s MCP server lets agents like Claude Code and Codex read and write your notes. Setting it up used to mean enabling the local HTTP server, inventing credentials, and hand-writing a JSON config. Preferences → Integrations → MCP Server now does all of that for you.

MCP Server preferences

Flip the switch, expand Set Up Your AI Agent, and copy the ready-to-paste setup — a one-liner for Claude Code, one for Codex, and a JSON snippet for everything else, with your port and credentials already filled in:

claude mcp add inkdrop --scope user \
  --env INKDROP_LOCAL_SERVER_URL=http://localhost:19840 \
  --env INKDROP_LOCAL_USERNAME=inkdrop \
  --env INKDROP_LOCAL_PASSWORD=**** \
  -- npx -y @inkdropapp/mcp-server

Docs: Integrate AI agents with the MCP Server

Copy a note, notebook, or tag ID

copying-ids

Pointing an agent at the right note is much easier when you can just hand it an ID. Copy Note ID, Copy Notebook ID, and Copy Tag ID now live in the context menus — on note list items and the editor’s action menu, and on the sidebar’s notebook and tag items. Select several notes and it copies every ID, one per line.

These used to require the Dev Tools plugin; they’re part of the core app now, so the IDs an MCP tool call expects are always a right-click away:

Summarize note:aBcD1234 and save the result to book:xYz98765 with tag:qWeR5555.

Templates your coding agent can fill out

Note templates (see below) can carry instructions and examples aimed at an AI agent — a blockquote whose heading starts with !, like > # !Instructions. Agents read them; they’re stripped automatically from the notes you create.

Two open-source companions make this click:

  • Inkdrop MCP server — the hands. Reading a note created from a template pulls in that template’s instructions in the same call.
  • Inkdrop Skills — the know-how. Its /fill-out-template skill fills in the scaffold, then stops for your review before writing any code.
npx skills@latest add inkdropapp/skills

New Theming System

Theming in v5 was painful: a theme had to ship a complete set of Semantic UI component styles, and it came in three separate packages — UI, syntax, and preview — a design inherited from Atom.

v6 replaces all of that.

Themes are now a thin layer of CSS variables

The app defines semantic CSS variables; a theme overrides the ones it cares about. No more reimplementing base styles just to change a color.

Docs: Creating a theme

One theme package instead of three

A single package now styles the whole app — UI, editor, and Markdown preview — and the Themes pane shows one picker instead of three. Your existing setting is migrated automatically.

Unified theme

[!WARNING]
Old-style theme packages ("theme": "ui" | "syntax" | "preview") are no longer recognized. A unified theme declares "theme": true and ships ui.css / syntax.css / preview.css, each wrapped in its own @layer. See the theme development guide and update @inkdropapp/ipm-cli and @inkdropapp/theme-dev-helpers.

Live theme previews

The Themes preferences show preview cards for every theme. These aren’t images — they’re live-rendered from each theme’s color palette. A theme’s palette.json is uploaded to the plugin registry when you publish, so previews work before you install.

Theme preview cards

New official themes

Kanagawa — inspired by Katsushika Hokusai’s paintings, based on rebelot/kanagawa.nvim. Three variants: Wave (heart-warming), Dragon (for late-night sessions), and Lotus (for when you’re out in the open).

Kanagawa themes

SolarizedLight / Dark

Solarized Light
Solarized Dark

NordDark / Light

Default syntax theme overhaul

The default syntax theme now uses Tailwind’s color scheme, and the light and dark variants have been merged into one package built on the modern light-dark() CSS function.

Default syntax theme

UI & UX

Telescope — a Spotlight for your notes

The long-awaited command palette became something more versatile: a search bar that queries multiple sources at once. Press Cmd/Ctrl+K to open it. It’s fuzzy-matching, so spelling isn’t critical.

Telescope

Each source has a scope prefix — press it followed by Space to narrow down, Esc to clear.

Commands (>) — nearly every operation in Inkdrop is a command, with its shortcut shown on the right.

Telescope commands

Notebooks (b) — open, open as Workspace, or move the current note there, with a modifier key.

Telescope notebooks

Tags (t)

Telescope tags

Table of contents (#) — jump between sections of the note you’re writing. It lists task items too. This source lives outside the core app as the telescope-toc plugin.

Telescope table of contents
Telescope TOC task items

Telescope is extensible by design — plugins can add their own sources.

Docs: List of commands

Outline view

Click the # button in the editor header (or run core:telescope-toc) to jump between sections. It highlights the current section from your cursor position in the editor, or your scroll position in the preview.

Outline view

It ships as a separate plugin, telescope-toc, which is installed automatically. Being a plugin, it also doubles as a reference implementation for custom Telescope sources — the source is on GitHub, written in TypeScript against @inkdropapp/types.

Start from a template :memo:

Cmd/Ctrl+N creates a plain blank note. When you want a starting point, the editor placeholder offers a Choose a template button (Cmd/Ctrl+T):

Choose a template button in the editor placeholder

Search templates by name and preview one on the right before you commit:

Template picker

Inkdrop ships with curated official templates grouped by category — Debugging, Planning, Brainstorming, Learning, Productivity — and your most-used ones float to the top under Recently used.

Custom templates live in a dedicated Templates section in the sidebar and support a small, safe templating syntax (powered by LiquidJS — no arbitrary code ever runs, even from a synced or shared template):

---
_template:
  title: "{{ 'now' | date: '%Y-%m-%d' }} - Daily Report"
  description: What I did today, what I plan to do tomorrow, and any blockers.
  tags:
    - Journal
  notebook: "Daily notes"
  status: active
---

## What I worked on
...

A template can preset the new note’s title, description, tags, destination notebook, and status. Start editing an official template and Inkdrop forks it into your own editable copy, leaving the original untouched.

Docs: Note templates

Notebook icons

Right-click a notebook → Change Notebook Icon… to pick from 1,500+ icons from the Lucide set, with category tabs and search. Icons show up everywhere — the sidebar, Telescope, and notebook selectors.

Notebook icons
Icon picker

Manual notebook ordering

Drag and drop notebooks in the sidebar into whatever order makes sense to you. It syncs across your devices.

Manual notebook ordering

Quicker navigation

Filter buttons in the Notebooks and Tags sections of the sidebar launch Telescope scoped to that source:

Filter notebooks button
Filter notebooks in Telescope

The sort-order button moved beneath the search bar and shows the current order as a label — no more clicking just to find out. Its old spot now holds a sidebar toggle (Cmd/Ctrl+\).

Note list bar improvements

The notebook picker gained a search bar:

Notebook picker search

And context menus landed on the workspace header and the note list header:

Context menu on the note list header
Context menu on the workspace header

Fuzzy matching everywhere

Telescope, the notebook and tag list menus, and the tag input all share the same fuzzy-matching algorithm — so you find things fast without spelling them right.

Fuzzy matching in the notebook list
Fuzzy matching in the tag list

Activity stats

See how many notes you created and tasks you worked on over the past 52 weeks, plus your current and longest streaks. Note-taking is a contribution to your work, after all.

Activity stats

No more [conflicted] notes :handshake:

If a note changed on another device while you were editing it, saving used to spin off a [conflicted] backup for you to reconcile by hand. Now Inkdrop merges the two versions — a 3-way merge for the body, and title, notebook, status, and tags merge without losing either side. The backup only appears for genuinely overlapping edits to the same lines, and the same smarter merge runs during sync.

Keep running in the system tray (Windows & Linux)

Handy if you use the local HTTP API, and it makes reopening the app instant. Turn it on via Preferences → General → App Behavior. Off by default; on macOS nothing changes, since the app already stays in the Dock.

Tray icon

A Dark Mode-aware app icon on macOS

The macOS icon ships as an Icon Composer asset instead of a flat image, so the Dock, Finder, and Launchpad render its Dark Mode, tinted, and clear variants instead of the same light artwork everywhere.

Dark Mode app icon

A smoother Markdown import

Import from Markdown is now a single wizard: pick your files first, then Scan → Stats → choose a notebook → Import. Embedded base64 images (data: URIs) are extracted and saved as real attachments instead of being dropped.

Polish throughout

  • A custom tooltip UI — the system tooltip was unstable, so it was rebuilt from scratch.
    Improved tooltip
  • “Look Up Selection” context menu on macOS.
    Look Up Selection
  • Friendlier blank slates — empty notebooks, tags, and status filters explain what belongs there.
  • The Pinned section retired — pinned notes simply sort to the top of All Notes. One less mode to think about.
  • An account usage stats tab in Preferences.
  • Diff view for revision history on desktop, matching the mobile app.

Performance improvements

13x faster database access

Inkdrop relied on Electron’s remote module to reach the main process — a known-harmful approach that’s both slow and a security risk. It’s been replaced with type-safe IPC bridges in a massive architectural overhaul.

// v5: @electron/remote     → 18,761 ms
// v6: type-safe IPC bridge →  1,326 ms

The bridges also let Inkdrop control exactly which methods are exposed to plugins, so the app is more secure as well.

23x faster code block rendering

Notes with very long code blocks used to stutter or lock up while being syntax-highlighted. The most visible case was the [[ note-link autocomplete, which could freeze the app for 10–20 seconds when a huge note landed in the candidate list. Highlighting is now ~23x faster (29.0s → 1.3s on a 531KB sample), and the preview beside the candidates shows a snippet rather than the entire note.

Faster image sync

Attachments used to upload one by one. They’re now uploaded in parallel via signed URLs, so syncing image-heavy notes is significantly faster.

SQLite as the backing store — and ARM64 support

PouchDB’s LevelDB backing store had been deprecated for years, and it was the thing blocking new platforms. A new SQLite storage adapter replaced it (passing PouchDB’s integration tests), which unblocked:

  • ARM64 builds for Windows and Linux
  • Flatpak and AppImage packages for modern Linux distros

Plugin ecosystem & developer experience

A brand-new ipm CLI

The old ipm was a fork of Atom’s apm that bundled all of Node.js and npm, and required you to commit compiled files to GitHub to publish. It’s been rebuilt as a lightweight standalone CLI: @inkdropapp/ipm-cli.

npm install -g @inkdropapp/ipm-cli
ipm configure
ipm publish

It publishes tarballs directly like npm — no more committing build output.

ipm init scaffolds a plugin in seconds

ipm init demo
ipm init my-plugin        # a TypeScript plugin
ipm init my-theme --type theme

Run it with no arguments for an interactive wizard. Plugins come ready to build with TypeScript, tsdown, and @inkdropapp/types all wired up — npm install && npm run build, then ipm link to try it out.

Guide: Plugin — Word count · Guide: Creating a theme

Official TypeScript definitions

@inkdropapp/types gives plugin authors full type safety without exposing the app’s internals.

Auto-installed essential plugins

mermaid, math, and markdown-emoji are installed and kept up to date automatically — shipping them as plugins means faster updates. Disable them anytime in Preferences.

Vim plugin improvements

  • Relative line numbers — easier to use motions like 5j or 12k
  • Keep Vim registers separate from the system clipboard
  • Keymaps for selecting autocompletion candidates

Shared file-name sanitization

NoteExportHelper.sanitizeFileName is now the single implementation used by the app and both exporter plugins, exposed to third-party plugins through @inkdropapp/types. It handles illegal characters and the filesystem’s 255-byte limit including the extension. If your plugin writes files derived from note titles, use it instead of rolling your own.

Updated docs

Appendix

Guides

Components

Core Modules

[!TIP]
Every docs page has a Copy as Markdown button. Hand it to your AI agent and have it migrate your plugin or theme for you.

Built by the community

The new APIs have already produced some amazing plugins:

Existing plugins are getting v6 support too — hitahint, thumbnail-list, and editor-utils.

Thank you so much for building with Inkdrop :star_struck:


Coming from v5?

Docs: Migrate from v5 to v6

v6 carries a lot of breaking changes under the hood, so it works hard to keep your old customizations from tripping things up on first launch:

  • An incompatible init.js is detected and safely disabled (renamed to init.js.bak) before it can run, with a notification linking to the migration guide.
  • styles.less is no longer loaded (v6 uses plain-CSS user stylesheets); Preferences → Themes points you to migrate it.
  • Old-style theme packages fall back to the default theme — ask their authors to republish as unified themes.
  • Alert tips in the sidebar surface any stale files, so nothing breaks silently.

Download