From edef8dad9fc2659c3937141b2b809dc726afe7cd Mon Sep 17 00:00:00 2001 From: Zach Date: Sun, 28 Jun 2026 19:59:25 +1000 Subject: [PATCH 1/3] 132 markdownit plugin wiring fix renderer pipeline (#183) * fix: Warning blocks now render, info blocks still fail (#181) * feat: added emoji support (#182) --- src/modules/markdown.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/modules/markdown.js b/src/modules/markdown.js index 4fb36b7..dc3b15e 100644 --- a/src/modules/markdown.js +++ b/src/modules/markdown.js @@ -8,6 +8,7 @@ import sub from "markdown-it-sub"; import sup from "markdown-it-sup"; import container from "markdown-it-container"; import hljs from "highlight.js"; +import { full as emoji } from "markdown-it-emoji"; // MarkdownIt Instance @@ -32,6 +33,7 @@ md.use(taskLists, { enabled: true }); md.use(mark); md.use(sub); md.use(sup); +md.use(emoji); md.use(anchor, { level: [1, 2, 3, 4] @@ -44,7 +46,6 @@ md.use(mila, { } }); -// Custom containers (:::note, :::warning, :::tip) ["note", "warning", "tip"].forEach(type => { md.use(container, type, { render(tokens, idx) { @@ -58,6 +59,21 @@ md.use(mila, { }); }); +// Special handling for "info" +md.use(container, "info", { + validate: function(params) { + return params.trim().match(/^info$/); + }, + render: function(tokens, idx) { + const token = tokens[idx]; + if (token.nesting === 1) { + return `
`; + } else { + return `
`; + } + } +}); + // Exported Renderer export function renderMarkdown(text) { From 793ede66878254f525d0dfcf4caf2d69fcd36634 Mon Sep 17 00:00:00 2001 From: Zach Date: Mon, 29 Jun 2026 11:25:37 +1000 Subject: [PATCH 2/3] FEAT: unlocked right click | version bump for milestone (#186) --- main.js | 21 +++++++++++++++++++++ package.json | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/main.js b/main.js index e276bef..ea4c7c7 100644 --- a/main.js +++ b/main.js @@ -53,6 +53,7 @@ function createWindow() { contextIsolation: true, nodeIntegration: false, sandbox: false, + spellcheck: true, // enables right click window }, // Use a frameless window so we can render a custom SnapDock titlebar frame: false, @@ -74,6 +75,26 @@ function createWindow() { event.preventDefault(); } }); + // NEW: right click window + const { Menu } = require("electron"); + + mainWindow.webContents.on("context-menu", (_event, params) => { + // Only show menu for editable elements (textarea, input) + if (!params.isEditable) return; + + const menu = Menu.buildFromTemplate([ + { role: "undo" }, + { role: "redo" }, + { type: "separator" }, + { role: "cut" }, + { role: "copy" }, + { role: "paste" }, + { type: "separator" }, + { role: "selectAll" }, + ]); + + menu.popup({ window: mainWindow }); + }); // Unsaved changes / workspace dirty failsafe mainWindow.on("close", (event) => { diff --git a/package.json b/package.json index 5114cb6..d6146fb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "snapdock", - "version": "3.1.2", + "version": "3.2.2", "description": "A Minimal, Modern Markdown Editor", "synopsis": "Fast, clean Markdown editor", "homepage": "https://snapdock.app", From 6159a72124a7ff2f1e81cc90e3aa6514bd312b66 Mon Sep 17 00:00:00 2001 From: Zach Date: Mon, 29 Jun 2026 12:21:16 +1000 Subject: [PATCH 3/3] 149 editor status bar metrics (#188) * added metrics to the right. * calling the new metrics module * new metrics module footer metrics * add update on tab change * added stylings for metrics | fix: absalute pos for meta --- index.html | 4 +++- src/modules/file/tabs.js | 3 +++ src/modules/ui/metrics.js | 35 ++++++++++++++++++++++++++++++++ src/scripts.js | 5 +++++ src/styles/components/footer.css | 12 ++++++++++- 5 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 src/modules/ui/metrics.js diff --git a/index.html b/index.html index d5d0549..1d9e68d 100644 --- a/index.html +++ b/index.html @@ -143,7 +143,9 @@

Project Files