Releases: ant981228/cardmirror
Release list
v0.1.0-beta.7
Added
- Card sharing: instant delivery. Sent cards now arrive in about a second instead of on the next 30-second check: the app keeps a light push connection open to the relay, with a quick catch-up sweep on every reconnect and on waking from sleep, so nothing is missed while offline (cards still wait on the relay for up to three hours). Older relays without push support keep working — the app detects them and falls back to interval polling ("Fallback poll every" in settings). Note: support for legacy card sharing will be deprecated soon — older CardMirror versions will eventually stop being able to send and receive, so update to keep using the feature.
- Card sharing: bring your own relay. Two new settings — Custom relay URL and Custom relay token — point card sharing at a self-hosted relay server. The relay now ships in this repo's
relay/folder as a standalone deployment (Docker compose, one command — seerelay/README.md). Leave the settings empty for the official relay. - Standardize with exceptions. Two new Doc-menu commands — Standardize Highlighting (with Exception) and Standardize Background Color (with Exception) — work exactly like the plain standardize commands but leave one color of your choice completely untouched. Pick the protected colors in Settings → Editing → Standardize exceptions (both default to yellow). The menu labels show your current exception, e.g. "Standardize Highlighting (except Yellow)". Both commands are keybindable (unbound by default). Combined with the "No color" pen, they also work as "clear everything except my exception color".
- Search palette tooltips. When a result's file name, heading, or folder path is too long to fit its row, hovering it now shows the full text in a tooltip. Results that fit show no tooltip.
- Create Reference is now customizable. A new Create Reference section in Settings → Editing controls each step of the copied excerpt: include or skip the heading line and shape it — bracket style, whether the cite appears, or a fully custom label with
%Cite%marking where the cite goes; keep the original text size or choose how many points it shrinks by (default 3); and decide what happens to highlights — grey background (default), a background in the same color as the highlight, kept as highlights, or removed. The existing Gray-50% body text option moved into the same section. - Custom acronym letters. The acronym commands (Alt-F10 emphasize, Alt-F11 highlight) can now be taught per-phrase letter selections: in Settings → Editing → Acronym marking, type a phrase and click the letters to mark — pick the w, m, and d of "weapons of mass destruction" and the commands mark exactly those letters, reading "WMD" instead of "womd". Also new: an Underline Acronym command (keybindable, unbound by default) completing the emphasize / highlight / underline trio. Inspired by shreerammodi's debate-scripts for Verbatim, with click-to-pick letters replacing its pattern syntax.
- Tell background color apart from highlighting. A new Appearance setting, Distinguish background color from highlighting, overlays a deliberately faint dot grid on background color. Off by default — the two stay visually identical, since reading as ordinary highlighting is the point of background color. The dots adapt to any fill color and both themes, and are display-only: your file, clipboard, and exports are untouched.
Fixed
- Hover polish. The Recover Drafts pane's Save button gained a hover state and Open/Reopen's hover no longer renders dark-on-dark; the Receive pill now highlights on hover like its dropzone sibling.
- Table cell borders vanished after editing keyboard shortcuts. Changing any keybinding or macro silently broke table rendering for the rest of the session: every table lost its cell borders (and column-resize handles), while its contents stayed visible. Fixed — borders now survive shortcut changes. Also fixed: tables edited inside the Quick Cards manager never had cell borders at all.
- Condense after Paste Text (F2) now actually condenses what you pasted. Previously the automatic condense ran against the cursor position after the paste, so pasting outside a card — the usual way of bringing in a long article — condensed nothing at all, and pasting inside a card condensed the whole card instead of just the new text. It now runs on exactly the pasted range, honoring your condense settings (paragraph integrity, pilcrows, heading handling).
Changed
- "Background color" everywhere. Settings and documentation now say "background color" (the Word name) instead of "shading" — e.g. the accessibility settings are now Override background color in display and Show highlight & background color names in the status bar. Searching the settings for "shading" still finds them. A couple of accessibility setting descriptions were also tightened.
v0.1.0-beta.6
Added
- Search palette: more results on demand. The palette now shows up to 100 results at once (up from 50), and when there are more, the last row tells you — click show more, or just keep arrowing down past the end, to reveal the next hundred.
- See highlight colors by name. A new Accessibility setting, Show highlight & shading names in the status bar, reports the stored color names for the text at your cursor (e.g.
Hl: Yellow) — so a file's color-coding conventions are readable as text even when the hues are hard to tell apart. Works in the three-pane workspace too. - A color-vision friendly palette. New Accessibility setting that remaps the colors that carry meaning — annotation accents, voice-mode dots, the prep timer's Aff/Neg, search-match highlights, category chips — onto a palette engineered to stay distinguishable under red-green and blue-yellow color-vision deficiencies. Works in light and dark themes, and any colors you've set by hand still win.
- Word footnotes and endnotes are supported. Opening a
.docxnow keeps its footnotes and endnotes (they previously disappeared on save), shows each as a clickable superscript number — click to read the note, links included, or edit it as plain text — and saving writes them back to Word format. Notes travel with their text when you cut, copy, or send cards. A new Insert Footnote command (unbound by default — assign a key under Settings → Keyboard) creates one at the cursor and opens the note editor immediately; the popover's Delete button (or Backspace over the marker) removes one. - Custom dash can trigger on
--. The custom dash setting now lets you choose what gets replaced — the classic---, or just--for a quicker dash. Backspace right after still reverts to the literal hyphens. - Choose what Enter creates after each structural style. Six new Editing settings — one each for Pocket, Hat, Block, Tag, Analytic, and Undertag — control what pressing Enter at the end of that style creates: a normal paragraph (the default, today's behavior) or any structural style. Picking a style acts exactly like pressing Enter and then that style's key, so Tag → Tag starts a fresh card on every Enter.
- Card sharing recipients can be reordered. Recipient and group rows in Settings → Card Sharing now have up / down arrows, and the Send pill lists them in that order — put the targets you use most on top.
- Optional undo / redo buttons. A new Appearance setting, Show undo / redo buttons, adds a stacked Undo / Redo pair at the far left of the ribbon. Off by default — the keyboard shortcuts work either way.
- The timer can sit on either end of the ribbon. A new Appearance setting, Timer position in the ribbon, moves the timer panel to the far right if you'd rather keep the file buttons anchored on the left.
- The timer is keyboard-drivable. Eight new bindable commands — show/hide the panel, Start / Pause, start each of the three speech presets, start Aff or Neg prep, and Reset — all unbound by default (assign keys under Settings → Keyboard). Apart from show/hide, they're active only while the timer panel is showing.
- "No color" is now a real pen. Picking No highlight or No background color in the ribbon dropdowns now keeps "none" as your active color (the indicator bar turns white) — the main button, paintbrush mode, and F11 / Mod-F11 then erase wherever you paint, until you pick a color again. Standardize Highlighting / Background with the "no color" pen active removes every highlight or background in scope. Previously the "none" swatch only stripped the current selection.
- Analytics can be italicized in the nav pane. A new Accessibility toggle, Italicize analytic entries in the nav pane, marks Analytic entries by shape instead of color alone — handy under color-vision deficiencies, and in dark mode or the flat nav list, where the color cue doesn't appear at all.
- The autosave button shows its real state by shape. When autosave is on but not actually firing (a
.docxfile, or a doc that's never been saved), the ribbon button is now a hollow chip with a dashed outline instead of a filled one — so "protecting you" vs "armed but inert" no longer differ by color alone. - The voice pill always names its mode. The voice status pill now carries a persistent COMMAND / DICTATION / PAINT / ASLEEP badge, so the current mode is readable as text instead of only as the colored dot — previously the mode name flashed briefly and was overwritten by the next thing you said.
- Annotations distinguishable by shape. A new Accessibility toggle, Distinguish annotations by underline shape, adds a shape-coded underline to each kind of in-document annotation: comments dotted, flashcards solid, AI threads dashed, private notes double — so you can tell them apart even when their tint colors look alike. With the toggle off, annotations are also lighter-weight than before — just the tinted background, no underline — and the tints themselves are slightly stronger to compensate.
- 20 more colors are now rebindable under Settings → Accessibility → Color overrides: the prep timer's Aff/Neg colors, AI comment / private note / AI repair accents, hyperlinks, the misspelling underline, the due-date dot, find-match highlights, and all ten search category chip colors. Useful if any of the defaults are hard to distinguish.
Changed
-
Settings are easier to navigate. The General, Appearance, and Editing tabs now group related options under section headers (Workspace, Timer, Document typography, Condense, …) instead of one long list, and a new Files tab collects everything about where documents go: new-document defaults, the Send / Read / Marked doc presets, and file search. Several settings also moved to more sensible homes: voice options now sit at the bottom of Accessibility, Timer profile and Timer durations moved to General, and Cite preview on hover and the Flashcards-due dot moved to Appearance.
-
Convert's .zip output is now compressed. When bulk Convert is set to produce a .zip, the archive is now deflate-compressed (it was previously stored uncompressed), so the output is meaningfully smaller.
-
Smaller desktop installer; voice model downloads on first use. The speech recognition model no longer ships inside the installer (which drops its size by roughly 130 MB) — the first time you turn voice control on, CardMirror offers to download it (~130 MB, one time) and tells you when it's ready, so you can keep working meanwhile. If you'll be offline, you can fetch it ahead of time under Settings → Accessibility → Dictation model, which is also where the optional large model lives.
Fixed
- Performance improvements throughout the editor: the app itself loads about 40% lighter than beta.5 (faster startup on every launch, and a smaller download for the web edition), typing stays smooth with the Find bar open even in very large documents, no more brief stalls after typing pauses in big files, opening Settings no longer leaves the editor slightly slower for the rest of the session, and folder-wide Compress no longer makes the rest of the app unresponsive while it runs.
- Three-pane: picking a slot with the mouse no longer swallows the next typed 1, 2, or 3. Using the "Open into…" picker with the mouse previously left a hidden key handler behind that ate the next digit typed into the editor.
- Dark mode: the home-screen file tools (Clean, Convert, Compress) now follow the dark theme instead of rendering as light buttons on the dark background.
- Hover feedback restored on several buttons that never had a visible one: the per-pane open-file button and doc-stack chip in the three-pane workspace, the slot-picker buttons, the recovery sidebar's Done button, and the card-sharing receive pill.
- Three-pane: the chip's outline and expand buttons now show their "on" state as a subtle box instead of turning blue. Since outlines are open by default on every pane, the blue glyph read as noise rather than state; the box matches how the focused pane's chip already flags the same thing.
- First voice use now offers the model download. On a fresh install, turning voice on before downloading the recognition model showed a dead-end error mentioning a developer environment variable instead of offering to download the model. It now offers the download as intended, and the error for genuinely broken installs says to reinstall.
v0.1.0-beta.5
Added
-
The web edition is now an installable app (PWA). On Chrome, Edge, and ChromeOS you can install CardMirror straight from the browser (the address-bar Install button) and run it in its own window — and much of what used to be desktop-only now works there too.
What the installed web app can do:
- Install and run offline in its own window, and update itself — it picks up the latest version when you relaunch.
- Save in place. Open a file, press Save, and it writes back to the same file (autosave works too) instead of a Save-As every time — via the browser's File System Access API. It asks once for permission to edit the file, and it won't let you open the same file in two windows at once.
- One-keystroke plain paste. Paste Text (F2) and Paste and Destructively Condense read the clipboard directly (the browser asks once).
- Multiple windows. In the installed app, New Document and New Speech Document open a separate window, and Send to Speech can reach a speech document open in another window. The dropzone, your Quick Cards, and the speech-doc designation all stay in sync across windows and tabs. The Three-pane workspace works as well — including switching between one window per document and three-pane — with a single three-pane window at a time.
- File tools on the home screen — Clean, Convert (
.docx↔.cmir), and Compress — one file at a time. - ⌘/Ctrl-R no longer reloads the app by accident.
What still requires a desktop edition: the background file-library search, folder-wide clean / convert / compress, Send to Verbatim Flow, voice control, card sharing, and the native menu bar. Firefox and Safari don't support the File System Access API, so there Save falls back to a download and the file tools download their output.
-
Per-document outlines in the multi-doc workspace. Each open document's outline section in the navigation rail can now be managed on its own. Click the × on a section (or the outline button in that document's title bar) to hide just that document's outline — the document stays open and the other outlines are untouched; the title-bar button brings it back. Drag the divider between two sections to resize them, and double-click the divider to even them out again. Previously the × closed the whole rail and the sections always split the rail evenly. The global Show / Hide Navigation Pane toggle now works together with these per-document controls: it reads "off" once every outline is hidden, and pressing it — or the restore pull-tab — brings them all back; press it again to hide them all. Per-document outlines contributed by @coralynnkc.
Fixed
- Web: less lag opening the command palette or Find bar when a password manager is installed. Some browser extensions (1Password and other autofill tools) rescan the whole page whenever a text box gains focus, which could freeze the web app for a second or more on large documents every time you opened the search palette or Find bar. Those inputs now carry the standard "ignore this field" hints, so the managers are more likely to skip the scan. If it still lags, see the note in the README about running the extension only on click. The desktop app is unaffected — it loads no extensions.
v0.1.0-beta.4
Added
-
Screen reader support setting. Settings → Accessibility → "Screen reader support" turns the browser accessibility tree on or off. It's off by default to avoid a crash (see Fixed below); switch it on if you use a screen reader or other assistive technology. The change takes effect after you restart CardMirror, and the setting tells you when a restart is still pending.
-
Select multiple separate ranges at once. Hold Ctrl (Cmd on Mac) and drag to add another range to your selection, or Ctrl/Cmd-click to add a word — building a discontinuous selection across non-adjacent spots, like Word. You can copy the whole set, and run any formatting that already works on a Select Similar selection (highlight, underline, emphasis, cite, colors, shrink, clear formatting, …) across all the pieces in one go. The set shows in the selection color; Escape or a plain click clears it, and any edit ends it.
Fixed
- White screen and lost work when an accessibility tool was running. On some machines with a screen reader, Windows Voice Access, or similar assistive technology active, CardMirror could crash — the editor turned solid white and unsaved work was lost. The cause is a bug in the underlying browser engine (Chromium) while it builds accessibility data for heavily-highlighted cards, even when an accessibility tool does not appear to be clearly in use. CardMirror now keeps that accessibility data off by default, which avoids the crash; re-enable it under Settings → Accessibility if you rely on a screen reader.
v0.1.0-beta.3
Added
-
Custom dash autoformat. Settings → Editing → "Custom dash" turns a typed
---into an en or em dash (with or without surrounding spaces) the moment you type the third hyphen. Press Backspace right after to revert to the literal---. Off by default. -
Custom filename prefixes for preset saves. Settings → General now lets you change the Send Doc / Read Doc / Marked Doc filename prefixes (defaults
SEND_/READ_/MARKED_; leave one empty for no prefix). They apply to both the Save As preset buttons and the silent Save Send Doc / Save Marked Cards commands, gated on the existing "Prefix preset saves" toggle. -
Paste and Destructively Condense (desktop). A command that pastes the clipboard's plain text and immediately condenses just what you pasted, merging its paragraphs (paragraph integrity off, destructive) — the result of an F2 paste followed by Alt-F3 over the pasted text. Unbound by default (bind it under Settings → Keybindings). Desktop only — the web build can't read the clipboard.
-
Save Marked Cards. Pull out just the cards you've placed a reading marker in and save them on their own, in your chosen format. Two ways in: a "Marked Doc" button in the Save As dialog, and a Save Marked Cards command (default Mod-Alt-M, rebindable) that saves silently to a configurable destination — Settings → Marked Cards destination (same folder / fixed folder), with the
MARKED_filename prefix and your default format — mirroring Save Send Doc. Cards only (analytics and headings are dropped); if nothing is marked it does nothing and says so. -
Smart quotes (optional). Turn on Settings → Editing → "Smart quotes" and a straight
'or"you type curls to the right direction by context — opening after a space, dash, bracket, or start of line; closing (and the apostrophe) otherwise — sodon'tand(he said "hi")come out right. Press Backspace immediately after a curl to revert it to the straight character. Off by default. -
New "Flip Quote Direction" command. Bindable (unbound by default); with a selection it flips every curly quote to its opposite direction (left ↔ right), preserving formatting — the manual fix for cases like
'tisor'90sthat smart quotes (like Word) guess wrong. -
Edit the timer's prep clocks directly. When an Aff/Neg prep clock is loaded and paused, click the big display to type a new time — handy if you started or stopped prep a beat late. The edit saves to that side's prep balance, so it sticks when you switch to another clock and back (until you Reset).
-
The timer shows which prep clock is loaded. The Aff/Neg "differentiate by" setting (color / text / both) now also styles the big display when a prep clock is showing — so it's clear at a glance that the time is prep, and which side.
-
New "Cycle Timer Preset" command. Bindable (unbound by default — set it under Settings → Keybindings); it cycles the timer profile College → High School → Pomodoro, applies that profile's durations, and surfaces the timer.
-
Controls for formatting-gap bridging. When you format a word next to an already-formatted word, the editor bridges the small gap between them so the styling is continuous. Two new Editing settings govern this: a toggle to turn the automatic bridging on or off (the manual "Fix Formatting Gaps" command is unaffected), and a choice of which gaps get bridged — whitespace and punctuation (default) or whitespace only. Bridging also no longer happens inside structural paragraphs (tags, analytics, headings, undertags) — only in body text — so a selection spanning both bridges in its body paragraphs and leaves its structural lines alone.
-
Open a file by dragging it into the window. Drag a
.docx,.cmir, or.cmir-journalfrom your file manager onto any CardMirror window — the editor, the navigation pane, or the home screen — to open it, the same as File → Open (including the unsaved-changes prompt, and focusing an already-open copy). Desktop only; other file types are ignored, and dragging cards around the editor is unaffected. -
Move a card or section up/down in the outline. New Move Container Up / Move Container Down commands (default ⌘/Ctrl-Alt-↑ / ↓) grab the cursor's smallest enclosing outline item — a card / analytic unit, or a heading and its whole section — and move it one spot among same-level items in the navigation pane. Cards reorder among cards, blocks among blocks, and so on; moving past the edge of a section flows into the adjacent one. Rebindable in Settings (listed under Editing utilities).
Changed
-
The command bar and settings search find more by synonym. "fix", "repair", and "restore" now find each other (e.g. "restore" surfaces the Repair commands), as do "delete" and "remove" ("remove" finds the Delete Row / Column / Table commands). "add" and "insert" find the same element commands — "add table", "add row" / "add column", "add image", or "add received card" surface the corresponding Insert command, and vice versa (the create-type commands — Add Quick Card, Add Comment, Add Note — are intentionally left out, since they make something new rather than placing it). And "timer profile" and "timer preset" are interchangeable, each finding the Cycle Timer Preset command and the Timer profile setting.
-
Repair Paragraph Integrity: Ctrl-Enter can mark an already-broken paragraph for indent. When the phrase already starts its paragraph, plain Enter still does nothing (no break is needed), but Ctrl-Enter now marks that paragraph for indent-on-exit — so a card's first body paragraph, which can't be split, can still be marked to indent.
-
AI operations now also lock styling and marks in the passage they're working on. While an AI operation runs on a passage, the editor already refused typed edits there; it now also refuses style and mark changes (highlight, underline, font size, named styles, etc.) to that passage, so the operation's content can't shift under it mid-run.
-
Document zoom is now per-editor, not global. Body-text zoom (the zoom buttons, Ctrl-= / Ctrl--, pinch / Ctrl-scroll) now applies only to the editor you're in — zoom one document in while another stays zoomed out, including independently per pane in the three-pane workspace. It no longer syncs across windows or persists; instead, documents open at a configurable default (Accessibility → "Default document zoom", 100% by default) and reset to it on reload. Chrome scale (Mod-Alt-=) is unchanged and still scales the whole window uniformly across windows.
-
Find and Paragraph Integrity match across dashes and ellipses. Searching (or typing a paragraph-start phrase) now treats every kind of dash — hyphen, en-dash, em-dash, minus sign, and the rest of Unicode's dash family — as interchangeable, and treats an ASCII
...and the single…character as the same. This joins the existing curly-vs-straight quote matching, so text pasted from Word matches whether you type the fancy character or the plain one. (The invisible soft hyphen is left as-is.) -
Timer durations are capped at 99 minutes in settings (speech presets and prep), up to which any value is allowed.
-
Saving a quick card now captures whole cards and sections. Add Quick Card used to save exactly your raw selection — which could be half a card or a stray fragment. It now snaps the selection to the whole cards/sections it covers (re-highlighting them so you see what's saved), and you can save with no selection at all — it captures the card or section your cursor is in. This matches how sending to the dropzone, a starred recipient, or the speech doc already works.
-
Deleting a quick card now uses a two-click confirm instead of a popup. The Delete buttons in the Quick Cards manager (both per-card and bulk) arm on the first click ("Delete?") and delete on a second click within a few seconds — matching the flashcard manager, and replacing a confirmation dialog that didn't fire reliably in the desktop app.
-
Quick card buttons are now hidden by default, behind a setting. The Quick Cards ribbon cluster (command bar, tag picker, manage, add) is off by default — turn on Settings → Editing → "Show quick card buttons" to show it, mirroring the dropzone shelf toggle. Quick cards still work while hidden, and the command bar still opens with its keyboard shortcut.
-
Re-pressing a structural style now consistently resets indent, font size, and font color. Pressing a Pocket / Hat / Block / Tag / Analytic / Undertag shortcut on text that's already that style resets it toward the style's canonical look — clearing the paragraph indent, any direct font-size override, and any direct font-color override — while leaving line spacing alone. Previously this was inconsistent: tags and analytics didn't clear indent, undertags didn't clear font size, and none cleared font color.
Fixed
-
Nav pane no longer flickers while typing just above a heading. Typing on the bottom-most line directly above a heading used to make the outline's highlight briefly jump to the next heading and snap back. The nav pane now keeps its cached heading positions in sync with every edit, so the active-heading highlight stays put (this also fixes the same brief staleness for nav click-to-jump).
-
Silent Send/Marked Doc saves won't overwrite the original document. The Save Send Doc / Save Marked Cards commands now refuse to clobber the source file when the export would land on its exact path (e.g. an empty prefix at the same folder and format) — in fixed-folder mode as well as same-folder mode — falling back to the Save As dialog so you can rename. (More reachable now that the prefix is customizable.)
-
The bottom scroll runway now accounts for the send/receive pills. The extra space that lets the last line of a document clear the bottom-left shelf was only added when the d...
v0.1.0-beta.2
Added
-
Rebindable "next / previous document" shortcuts for three-pane mode. Two new commands — Next Document in Slot and Previous Document in Slot — single-press cycle through the documents stacked in the focused pane. They're unbound by default; assign keys under Settings → Keyboard shortcuts (the existing Ctrl+Tab hold-to-cycle is unchanged).
-
Missing fonts now have bundled open-source stand-ins. When a document uses a font you don't have installed — Calibri, Cambria, Times New Roman, Arial, Georgia, Helvetica, Comic Sans MS, Verdana, Tahoma (plus Liberation, DejaVu, and Noto) — CardMirror now ships a metric-compatible open-source equivalent (Calibri→Carlito, Cambria→Caladea, Times New Roman→Tinos, Arial→Arimo, Georgia→Gelasio, and so on), so the text renders the way it should instead of falling back to a generic. If you do have the real font, you still get it — the bundled copy is only a fallback, and your real bold/italic still apply.
-
Open recovery journals (
.cmir-journal) directly. File → Open now accepts.cmir-journalfiles — it loads the document the journal was protecting, as a recovered, unsaved copy (so saving won't overwrite the original; use Save As to keep it somewhere). Handy for pulling a document out of a recovery journal without waiting for the automatic crash-recovery prompt.
Changed
-
"one" / "two" / "three" find the slot commands in the command bar. Typing a spelled-out number in Search Everything now surfaces that slot's Focus-Slot and Send-to-Slot commands.
-
"Check for updates on launch" is now "Check for updates automatically" — and it also checks daily. With it enabled, the desktop app checks for updates at launch and once every 24 hours while it's running, staying silent and only surfacing a prompt when an update is actually available.
-
Mod-R no longer reloads the desktop app by accident. A stray Mod-R mid-edit used to reload the whole window, which felt like a crash. Reload now lives only in the View menu; the Mod-Shift-R force-reload shortcut — far harder to hit by accident — still works.
-
The command-bar button's tooltip now reads "Toggle command bar" (it used to say "Search quick cards").
-
Nav-pane headings no longer pop a tooltip on hover. Each outline row used to show a redundant "Pocket" / "Card" / etc. type label when you moused over it; it's gone.
Fixed
-
Severe: pasting between cards could detach a card from its tag and silently strip a cite — please update. Copying a cite, body paragraph, or undertag and pasting it into another card could split that card away from its tag: the card became impossible to select or drag (only the tag moved), and the gray body rail no longer reached the tag. Cards left in this broken state behaved erratically — among other things they refused a variety of edits that should have been legitimate (for instance, pressing Enter to add a new line could silently do nothing). In some cases a pasted cite was also quietly demoted to plain body text, losing its cite formatting with no visible warning. And pasting card content outside a card left behind a stray empty card. All of it is fixed — pasted content now lands cleanly at your cursor, keeps its own kind (cites stay cites, undertags stay undertags, body stays body), and never breaks the card. This was a severe bug, so anyone still on 0.1.0-beta.1 should update to this release.
-
Toggling three-pane mode no longer drops Word (.docx) documents. Switching in or out of three-pane mode reloads each open document from its recovered in-memory content; for a document that came from a
.docx, that content was being handed to the Word importer and rejected ("Can't find end of central directory"), so the document vanished on the toggle. Recovery content is always kept in CardMirror's own lossless format regardless of a document's saved-as type, so loading now detects the format from the content itself rather than trusting the saved-as label — a docx document still saves back as docx. (The same fix lets you open a.cmir-journalbelonging to a docx-saved document, and covers the three-pane slot loader. The crash-recovery prompt was never affected.) -
The "Layout on this device" setting (web edition) now matches the others. Its Auto / Mobile / Desktop options were showing as a cramped, unstyled stack — their CSS classes had never been defined — so they now use the same tidy column styling as every other radio setting.
-
Toolbar tooltips are reliable in the desktop app now. On the Mac desktop build the ribbon tooltips were erratic — slow, flickery, or simply not appearing — because they relied on the operating system's native tooltip, which Electron renders unreliably on macOS (the web build, in a real browser, was always fine). They're now drawn by CardMirror itself, so they behave identically and show up reliably on both desktop and web. The same fix covers the other hover tooltips that had the problem — find & replace, the comments panel, the dropzone, the command-bar controls, and the speech-document buttons.
v0.1.0-beta.1
Changed
-
Right-click a file in search to dive into it. In the Search Everything palette's file search (the
fprefix), right-clicking a file now dives into it to search its contents — the same as pressing Tab — instead of pinning it. Pinning still has its own ★ star (and Alt-P), so the right-click is free for the more useful action. -
Clod customization is a normal setting now. The Clod persona editor — its name and pronouns, your own activity phrases per time of day, and when those time periods begin — used to be hidden behind a secret modifier-click on the Enable Clod mode toggle. It's now a visible Customize… button right below that toggle in Settings → Comments & AI.
-
Analytics and undertags get their own categories in Find. In the categorized results list they used to lump in with body text under "Other"; now they're their own Analytic and Undertag groups — colored to match the editor — ordered right after Tags (analytics, then undertags, then cites). Reorder them like the other categories under Settings → Find.
Fixed
-
Escape leaves a dived-into file even when the search box isn't focused. In the Search Everything palette, after diving into a file, pressing Esc while scrolling the results (with the box unfocused) now steps back to the file list instead of doing nothing — and re-focuses the search box on the way back.
-
Bottom pills no longer cover your text in three-pane mode. In single-pane, CardMirror leaves a little space at the end of the document so the dropzone / send / receive pills don't sit over the last lines when you scroll to the bottom. Three-pane mode never did — the leftmost pane (the one the pills sit over) now gets the same runway, while the other panes stay flush.
-
Highlighting no longer turns an underlined gap into emphasis. When two emphasized words are joined by an underlined space (the read-aloud marker), highlighting either word used to rewrite that underline to emphasis. Highlight, shading, and font-size changes now leave underline / emphasis / cite alone — they only tidy their own formatting.
-
Hyphens are no longer swept into formatting gaps. When you underline, emphasize, or cite two words joined by a hyphen (e.g.
well-known), the hyphen between them is now left as-is instead of being pulled into the formatting — matching how em-dashes, en-dashes,=, and+already behave. -
Docs whose tags are plain "Normal" text now import with their structure. Some Word docs mark tags and headings only with an outline level (Word's h1–h4), not a heading style — so CardMirror imported them as flat body text and the tags didn't show up. The importer now recognizes a Normal paragraph that carries an outline level plus the matching heading formatting (e.g. a 13pt-bold paragraph at outline level 4 → Tag), mirroring what the style cleaner already does. The bold / size / underline checks gate it, so an ordinary non-debate doc that merely uses outline levels is unaffected.
-
Find stays fast on large documents with many matches. Stepping between results — next/previous, or clicking a result — used to rebuild every highlight, the whole results list, and all the nav-pane markers on each step, which crawled once a search had thousands of hits. Now only the active match moves per step, so navigation stays quick no matter the match count. Find also caps at 10,000 matches (shown as
10000+) and 500 listed rows ("Showing first 500 of … — refine to narrow"), and rapid jumps no longer pile up scrolling work — so a pathological search can't choke the editor. -
The command bar's first search is ready sooner after launch. The search palette pre-warms its file index in the background, but that warm only kicked off once the app first went idle (up to ~2s after launch) — so opening the bar right after launching beat it and the first search hit a cold scan. The file-list scan (which runs in the background process) now starts the moment the app boots, while the heavier content pre-parse stays deferred so it still never janks the launch.
v0.1.0-alpha.20
Added
-
Benchmark — measure how fast CardMirror runs on your machine. A new button in Settings → General runs a battery of real in-editor operations on the open document — continuous scrolling, jumping between headings, and a full card-cutting sequence (type and mark a cite, paste a messy multi-paragraph card, condense it clean, then underline / emphasis / highlight and shrink) — while sampling frame rate, frame-time percentiles (including a 1%-low that captures stutter), and per-operation latency. It shows a scrollable readout with a scroll-frame-time graph, footnoted metrics, and an overall score. The whole run happens on a snapshot of your document and is fully reverted when you close the results, so it never touches your file — and it only runs when the document is editable (not in read mode).
-
Keyboard shortcuts to drop in a received card. Two new rebindable shortcuts insert the most-recently-received card (from the Receive pill) without reaching for the mouse: Mod-P places it at the cursor, and Mod-Alt-P appends it at the end of the document. The card stays in the Receive pill, so you can place it again. Rebind them under Settings → Keyboard shortcuts, in the Dropzone / Send and Receive Cards group.
-
Star a recipient and send to them in one keystroke. In Settings → Card Sharing you can now star one recipient or group. A new Send to Starred command then sends the card under your cursor (or the current selection) straight to that starred target — like Send to Dropzone, but to a person. It ships without a default key; assign one under Settings → Keyboard shortcuts (in the Dropzone / Send and Receive Cards group). Starring a target un-stars any other, and the star clears itself if you remove that recipient or group.
-
Type "question" to find Ask AI. The command bar now surfaces Ask AI About Selection when you search for "question".
-
Clean can save over your originals (with a typed confirmation). Clean used to always write
cleaned_…copies. A new "Prepend 'cleaned_' to output filenames" toggle (on by default) lets you turn that off and save with the original filenames instead — and when the destination is the originals' own folder, that overwrites them in place. Because that's destructive and can't be undone, hitting Clean in that mode first pops a warning you must confirm by typing "I accept the risk". Prepending, or saving to a different folder, never touches your originals and skips the warning. -
A User Manual link in Settings. Settings → General now has a link to the user manual at the bottom, so it's easy to find (and stays reachable on Windows and Linux, where the native menu bar — which used to hold the link — is gone).
Fixed
-
Alt-key shortcuts work on Windows and Linux. The native menu bar reserved
Alt+letter for its menus, so an editor command bound to a bareAltchord (for exampleAlt+A) did nothing — the menu swallowed it before the editor saw it. CardMirror no longer shows a native menu bar on Windows and Linux (every menu command's keyboard shortcut still works, and the menu's actions are reachable from the app's own UI), soAlt-key shortcuts — including ones you rebind yourself — now work like the rest. macOS keeps its menu bar. -
Clean handles a whole messy library without choking. Cleaning a large folder no longer trips over Word lock files (
~$…), macOS._…sidecars, or__MACOSXfolders — those aren't real documents, so they're skipped — nor over certain docs that previously errored with an internal "no style named Heading…" message. Genuinely corrupt or empty files (e.g. cloud "conflicted copy" duplicates) are now reported as skipped (not a valid .docx) rather than counted as failures, so the summary reflects what actually happened. -
Paragraph-spacing boxes match the other Appearance number fields. Their inputs were using the browser-default border with left-aligned numbers; they now use the same border and right-aligned layout as every other number box in settings.
-
Deleting your last note or flashcard clears its anchor highlight. Deleting the last private note, flashcard, or AI thread in a document used to leave the blue highlight marking where it was anchored painted on the text until you toggled the comments pane off. It now disappears immediately with the annotation, like it already did when other annotations remained.
-
Create-flashcard dialog buttons are now a matched pair. The Cancel button in the "create flashcard from selection" dialog was noticeably smaller than Create; it now matches the manage screen's New card / Import / Export buttons, so the two sit the same size side by side.
-
Send and Receive pills match the dropzone. The card-sharing Send and Receive pills were a solid gray that stood out next to the dropzone pill; they now share the dropzone bar's softer color scheme, so the three read as one family.
v0.1.0-alpha.19
Added
-
Clean — a .docx style cleaner that cures "stylepox." A new Home-screen utility (desktop) that fixes the junk-style buildup debate files accumulate from copy-pasting cards: it removes the redundant/malformed styles bloating the file, converts stray direct formatting (manual bold/underline/highlight) back into the right styles, restores Verbatim's style names and aliases so macros work, and strips hyperlinks. Run it on a single file or a whole folder; leave the destination blank to write each
cleaned_…copy next to its original. A progress bar tracks each file, and a gear lets you mark protected styles Clean must never touch (by name; add them manually or pick from a template.docx). It's the same idea as the "Curing Stylepox" cleaner, but it runs inside CardMirror, so it's much faster (seconds, not the overnight runs the worst files used to need) and has far better handling of old files — it rebuilds the common pre-Verbatim style conventions (Tags/Cards/Cites/Block Headings, Author-Date, Debate Underline, …) into the modern Verbatim structure, adds the standard styles when a document is missing them, and repairs!!-marked style names that trip up older cleaners. Coverage is broad but not universal — unusual or one-off style schemes may still not be fully handled. -
Many old debate files open with their structure intact. Opening a pre-Verbatim
.docxthat uses the common Tags/Cards/Cites/Block Headings style family now reconstructs cards, tags, cites, and headings instead of importing it as flat, unstyled text. (Coverage is broad but not universal — unusual or one-off style schemes may still come in as plain text.)
Changed
-
File search can use multiple folders. Settings → General's "File search folder" is now "File search folders" — add as many as you like. Each is scanned recursively; overlapping or nested folders are fine, since a file found under more than one is searched only once. Your existing folder is carried over automatically.
-
Read mode allows safe drag edits. While reading, you can now drag cards to reorder them and drag into / out of the dropzone and the send/receive pills — moves the drag handles already validate — while ordinary typing edits stay locked to prevent accidents. Clicking a dropzone or received-card item in read mode appends it to the bottom of the document instead of at the cursor.
-
Card sharing works across CardMirror versions. Sending a card to a machine on a different version no longer fails with a version-mismatch warning — cross-version transfers are now accepted by default. (A card can still carry a minimum-version requirement, so a future release that changes the card format could ask older versions to update first, but by default sharing just works. Both machines need this version or newer to get the tolerant behavior.)
Fixed
-
Windows/Linux: the editor could lock up after a pop-up. Pressing
`to send to the speech document when none is open — and a few similar cases (e.g. image-insert errors) — showed a warning that took keyboard focus; on Windows/Linux that focus wasn't returned, so the editor wouldn't accept edits until you clicked back into it. Focus is now reclaimed automatically. macOS was unaffected. -
Drag auto-scroll works in more places. Dragging a card toward the top or bottom edge now scrolls the pane under the pointer — including when dragging between panes or from the nav panel into the editor — and correctly scrolls past a pane's sticky nav header. It also no longer scrolls the document out from under you when you drag toward the bottom-left dropzone/send/receive pills.
-
More citations survive import. Files whose cite style is stored under the legacy
Citename (rather than the modernStyle13ptBold) now import as citations instead of plain text.
v0.1.0-alpha.18
Added
- Cross-machine card sharing (end-to-end encrypted). Two new pills sit next to the dropzone — Send and Receive. Drag a card onto Send and it expands to the machines you've added (plus any groups); drop on one to send it there. Cards others send you land in Receive, which shows who they're from and when, flashes on arrival, and tracks an unread count. Set it up in Settings → Card Sharing: turn it on, share your code, add recipients by their code (name them however you like), and optionally group several recipients for one-drop sends. Everything is end-to-end encrypted — the relay server only ever sees opaque ciphertext, never your cards, who sent them, or to whom — and cards are deleted from the server after 3 hours. Desktop only.