Tags: emrul/md
Tags
fix(editor): table mark shortcuts, plain-text copy, code-block copy b… …utton - Keymap now dispatches in the capture phase and stops propagation on a match, so a registered chord (Cmd+B/I, lists, …) no longer also reaches ProseMirror's built-in shortcut. The double dispatch toggled marks twice in rendered contexts (table cells), netting a no-op — it only "worked" in hybrid source blocks where PM's mark command is itself a no-op. - Disable tiptap-markdown transformCopiedText: copying now yields plain text instead of Markdown syntax, and a table selection no longer emits the serializer's <table><tr><td> HTML fallback. - Add a copy button to the left of the code-block language dropdown; the picker now also surfaces on hover (plain and mermaid blocks), with a brief checkmark confirmation on copy.
perf(editor): keep per-keystroke work proportional to the edit, not d… …oc size Typing into large markdown files lagged because several hot-path operations re-ran over the whole document on every keystroke. Make them incremental: - SourceBlock decorations: carry the prior DecorationSet forward (remapped through the transaction) and re-tokenize only the blocks the edit or the active-block transition touched, instead of re-tokenizing every block. - Dirty-flag check: trust the undo-depth signal on the keystroke path and run the authoritative full-doc markdown comparison on a debounced reconcile, instead of serializing the whole doc every keystroke. setModified is now idempotent to avoid redundant notifies. - Status-bar word/char/line/token counts: debounced (were serializing the doc and scanning the string synchronously per keystroke). - Table-of-contents: debounced (collectHeadings ran querySelectorAll over the whole editor DOM + a layout read per heading every keystroke). - getMarkdown(): memoize on the ProseMirror doc identity so callers in one update share a single serialization.
feat(onboarding): bundle read-only Examples, shown on first run & Hel… …p → Examples Ship a short tour of the editor inside the binary. On a fresh install (no preferences file) the bundled docs open as the first window; any time later they're reachable from Help → Examples. They open as read-only tabs in numbered filename order. - Content: frontend/src/examples/NN-*.md, inlined at build via import.meta.glob (raw, eager) — no Go service. loadExamples() sorts by name and titles each tab from its first H1. - Read-only tabs (new): Tab.readOnly + displayName; editor.setEditable (false) plus a ReadOnlyGuard filterTransaction that blocks doc edits but allows the tagged mode-switch conversions, so view-mode toggling still works. Source view (CodeMirror) goes read-only too; save + bubble menu gated; status bar shows "<title> · Read-only". - Launch: ?examples=1 → openExamples(); spawnExamplesWindow() from a new Help → Examples menu item; first-run routing via PreferencesService. FirstRun() in startupSpawn.
feat(explorer): make the whole root-name cluster the dropdown hit area Clicking the folder name (not just the chevron) now opens the recent/pinned roots dropdown — same whole-area hit target as the find/replace mode toggle. The chevron's clicks bubble to the cluster handler (no double-toggle), the click-away guard tracks the cluster, and the cluster is cursor:pointer + non-selectable so it reads as a control.
v0.2.3 - fix: Windows no longer hangs on launch (entry top-level-await deadlocked WebView2/V8 inside an import cycle); toolbar, explorer and editor now mount. - fix: Windows/Linux get a Help menu with About + Check for Updates (no longer orphaned in File; About shows the version). - boot: self-diagnosing boot-failure banner + breadcrumbs as a regression guard. - mermaid: diagrams themed to the app design tokens.
ci(release): stop OSS pipeline from publishing on tag push md-pro's pipeline publishes the official (pro) release to this repo and, in doing so, creates the version tag here via a PAT — which re-triggered THIS OSS workflow and overwrote the pro assets with an OSS build (v0.2.2 shipped OSS as a result). Drop the `push: tags` trigger; keep workflow_dispatch for on-demand OSS build validation (it doesn't publish — the release job is tag-gated).
ci(release): collect Windows installer from bin/ + rc-safe version re… …source NSIS writes the installer to bin/ (project.nsi OutFile), not build/windows/nsis, so the collect glob missed it and only the raw .exe was published. Also strip any prerelease suffix when stamping the OS version resource (build-assets), so a -rc/-beta tag won't break the Windows VERSIONINFO/NSIS build. (Mirrors the fixes in the md-pro pro release pipeline.)
PreviousNext