Repository navigation
Releases: zvndev/markie
Release list
Markie 0.8.0
Added
- A link to another document follows the reader.
[the plan](plan.md)in a synced document opens the plan for anyone who may read it: in Markie, on the shared web page, and on a public page when the plan has a public link of its own. A reader who may not read it sees the link muted and, on a click, "This document isn't shared with you." Linking never shares or syncs the target; it points at whatever its owner already chose. In Markie a linked document you already have opens in place; one you do not lands once as a view-only copy. - Make the page wider when a table needs it. Next to zoom, the toolbar has Narrower and Wider, and the View menu has Wider Page (Option Command ]) and Narrower Page (Option Command [). Five widths from the default to the full window, remembered per document like font and zoom.
Fixed
- PDF export no longer cuts content off or shrinks the page. A wide table, a long link, or a long line of code used to run off the paper, or make Chromium scale the whole document down to tiny text. Long text now wraps, code wraps, a table too wide for the page is scaled to fit on its own, a long table breaks between rows with its header repeated, and a tall code block no longer leaves the page before it empty.
Downloads: macOS and Windows builds are on the public release feed. Open an earlier Markie and use Check for Updates.
Markie 0.7.0
Added
- Pictures, video and audio travel with a synced document. A file the document embeds is uploaded alongside it and shown to exactly the people who can read the document: in Markie on another machine, on the shared web page, and through a public link while that link stands. Revoke the share or the link and the media goes with it. Files over 100 MB stay local and the Cloud page says which.
- Markie repairs sync on its own. At launch and every ten minutes it checks every document you told it to sync against the cloud and pushes anything that never landed or fell behind, media included. It never pulls over an edit.
Downloads: macOS and Windows builds are on the public release feed. Open an earlier Markie and use Check for Updates.
Markie 0.6.0
Downloads: https://markiedocs.com/download (macOS Apple silicon and Intel, Windows). Installed apps update themselves.
Added
- A Cloud page, with everything that is yours and everything shared with
you in one place. The left rail has a new Cloud entry. It lists what you
have synced from this device, what is in your cloud from other devices,
what you have shared, and what others have shared with you, each in its own
section, each section present even when it is empty so the absence means
something. Ownership is never guessed: a document you were given shows as
theirs even when the server cannot be reached. The Library keeps only the
files on this device. - Browse is one tree, starting where the folders start. The old All Files
tab is gone. The tree opens at the first level with more than one thing in
it, nested folders hang off a thin guide line rather than a stair of
indents, and every file shows when it was last changed, so you can see what
moved and sort by it. What you opened stays open next time. - Browse and install skills from the registries agents actually use. The
Skills panel now has two tabs. Installed shows every skill and agent file on
this machine, grouped by the tool that owns it: Claude, Codex, Cursor,
Gemini and the shared agents folder. Discover lists the skills in
anthropics/skills and any GitHub repository you add by name, searches
skills.sh for more as you type, renders a skill's SKILL.md before you take
it, and installs it into whichever tool's folder you choose. A lock file in
the same format as the Vercel skills CLI records what came from where, so
either tool can update what the other installed. Discover talks to GitHub
and to skills.sh; Installed never leaves this machine.
A Claude or Codex home moved with CLAUDE_CONFIG_DIR or CODEX_HOME is scanned
and installed to like the default one. - Very large files open without taking the app with them. A markdown file
over 1 MB opens in Source view, which handles any size, with a quiet strip
saying why rich editing is off for it; the mode you were in comes back with
the next ordinary document. A file over 100 MB is refused with a message
instead of an open that never finishes. Before, a 4 MB file stalled the
whole window for close to a minute. Below the line, the check that decides
whether rich editing can be trusted now runs in idle slices between your
keystrokes rather than in one piece, so a large-ish document no longer
freezes while "preparing". - A document you sync on one machine lands on your others by itself.
Sign in on the laptop, and everything you synced from the desktop arrives
underDocuments/Markie/Cloudas real files, registered as synced and listed
in the Library beside everything else on that machine. Before, it was a row
under "In your cloud" with a button to click and a place to choose, every
time. Documents shared with you are not landed: they open into Downloads
when you ask, as before. A file you delete or pause stays gone.
Changed
- Markie launches faster and takes less space. The renderer is built with
Vite instead of Next.js, which removed a whole framework from the app and
from every launch (launch 647 ms to 514 ms, idle memory 526 MB to 488 MB, measured on a
loaded machine).
The source editor and the live-collaboration stack are loaded the first
time they are needed rather than at launch, and so is the export pipeline.
The installed app is 230 MB instead of 287 MB on Apple silicon, and the
download about an eighth smaller:
the C sources the native modules are compiled from no longer ship, and
only the English locale pack does. Markie is English-only; the effect of
that last change is that the handful of menu strings the browser engine
owns rather than Markie (Look Up, Search with…, the spell-check labels)
read in English on a non-English system.
Fixed
- Restoring a snapshot or a recovered draft of a large document keeps it in
Source view, and a file that grows past the line on disk is re-read as a
large one instead of being fed to the rich editor. - A cloud copy larger than Markie opens is refused, not written. Pulling
an update or taking the cloud side of a conflict used to write the cloud
copy to disk whatever its size, leaving a file Markie could not open under a
buffer that would have saved over it. The pull now stops with a message
and nothing changes. - Pasting a document past the line moves it to Source view. A paste that
carries an open document past 1 MB no longer leaves rich editing on offer;
trimming it back below the line gives rich editing back. - A document too large for the crash journal still gets one recovery
write when the save on closing it did not land. - Find and replace waits for the match list to catch up with what you
typed, so a quick Replace All cannot act on the previous search. - Opening a document with thousands of held-aside blocks no longer stalls
(restoring them took close to half a second per open in a 1 MB file; it is
now a few milliseconds), Find indexes a large document once rather than
on every keystroke, and the crash journal writes a big buffer every two
seconds rather than four times a second. - A live session whose runtime cannot load no longer traps the document.
The document opens on its own copy under a one-line note, saves go to the
cloud the ordinary way, and the next shared document tries again. - A recovered draft that Markie cannot open stays on offer instead of
disappearing the moment it is refused, and a restored snapshot of a large
document is journalled before another document replaces it. - A CSV whose table outgrows the line opens in Source view whichever way
it arrived (opened, reloaded, pulled, or taken from a conflict): the tier
is measured on the table the pane holds, not on the bytes of the file. - Deleting a document from the cloud now erases it on the server at once.
Before, the server kept the text of a deleted document, and every version
you had ever pushed, indefinitely: hidden from the app, still stored. Delete
now wipes the content, the history, and every share, invite, link and
comment thread that pointed at it, and the database overwrites freed space
as it goes instead of leaving it for a later sweep.
Markie 0.5.4
The Library keeps up on its own: a document synced from another machine appears without reopening the panel, a rename shows everywhere at once, and opening a synced document no longer pushes it behind your back. Pictures open in a lightbox and resize by their corner, a video link becomes a card, and exports keep your formatting.
Added
Double-click a picture to see it full size. It opens over the document,
as large as the window allows, and the left and right arrow keys walk every
picture in the document. Escape closes it and puts the keyboard back where it
was; a click on the picture itself toggles actual size, for the screenshot
you opened to read rather than admire. In a read-only document a single click
does the same. Clips are left to their own controls and full-screen button.
Drag a corner to resize a picture or a clip. Click one in the document and
handles appear on its corners; drag and it follows, shape kept. The width is
written to the file as <img src="shot.png" width="240">, the one form
every markdown renderer, GitHub included, draws at that size. A picture nobody
resized stays  exactly as it was. Exports, PDFs and shared
pages honour the width.
A YouTube or Vimeo link alone on its line becomes a card. The thumbnail,
the title and a play button; the video itself loads only when you click, from
YouTube's cookie-free player, so a document with six videos in it does not
open six of them to be read. The file keeps the bare address and nothing
else, so it still opens anywhere as a link. Exports and shared pages show the
thumbnail, linked to the video. A link inside a sentence stays a link. Press
Enter after typing an address and the card appears there and then.
Agents writing for Markie are told what Markie draws. Connecting an agent
now hands it what Markie actually renders: how a picture, a clip or a
recording is written, how to size one, how to centre a line, what a video
address alone on a line turns into, where those files have to sit to display
at all, and which formatting comes back after a save. The failure it removes
had no symptom. An agent that saved a screenshot to a temp folder and linked
to it produced a report with a hole in it, and nothing anywhere said why.
There is a new check too, markie_check_md, which reads a finished document
back and names every picture, link and tag in it that will not show up where
you expect it.
Fixed
A document synced from another machine now shows up in the Library on
its own. The Library only ever asked the server for the account's list
when it opened, so a file synced on the laptop never appeared on the desktop
until the panel was closed and reopened. The app already looked at the
server once a minute and whenever the window came back; that look now
refreshes the Library too, and runs with no document open. A cloud list that
fails to load (an expired sign-in, being offline) now says so beside the
local rows instead of looking like an empty cloud.
Opening a synced document no longer pushes it to the cloud on its own.
The rich pane took an update event the editor raises while applying the
document's role for an edit, so every document was autosaved and pushed the
moment it opened. The push carried the version this machine last saw, and
when another machine had moved the document on the row came back "conflict"
and the strip asked to review changes nobody had made. Only an update that
changed the document counts as an edit now. And when a real push is refused
for a stale version, the strip asks the server again straight away, so it
offers a review rather than a one-click Update over your own changes.
Renaming a file updates the Library, Browse and Projects straight away.
The row kept the old name until you went somewhere else and came back, and
the file's star, project pin and extracted metadata stayed behind at the old
path. A rename now moves all of them, and patches the markdown index instead
of waiting for the next five-minute walk of the disk.
Centring a paragraph or heading now reaches the file. It showed on screen
and was gone on the next open, with nothing to say so. An aligned block is
written as <p style="text-align: center;">…</p>, which every renderer
understands, and read back the same way.
Exports, PDFs and shared pages keep your formatting. A highlight, an
underline, a colour, a font, a centred heading, a resized picture: all of
these are written as the small inline HTML every markdown renderer accepts,
and until now the export renderer dropped every one of them, contents
included. It now renders them, and still refuses anything that could run or
frame another page: scripts, iframes, style blocks, event handlers and
javascript: links never reach an export or a shared page, however they are
written.
Words typed right after a picture no longer land on the picture's line
when that part of the document is rewritten.
Changed
Markie's home is markiedocs.com. Download links, shared links and the
manifest name it. Every old markie.zvndev.com link redirects there, so
nothing you have sent stops working.
Markie 0.5.3
Video, audio and GIFs play in the document. Drop a file onto a document to attach it. Hovering a link shows you what is on the other end.
Added
Video, audio and GIFs play in the document. Write , the same way you write a picture, and you get a player with controls where the image would have been. Same for a voice memo or a recording. Markdown has only one syntax for embedding a file, so this keeps your document a plain markdown document that opens anywhere: nothing Markie-only is written into it. Clips load only their first moments until you press play, so a document with five recordings in it opens as fast as one without, and you can drag the scrubber straight into the middle.
Drop a file onto a document to attach it. A screenshot, a clip, a PDF, a zip: drop it in and it is linked where it already lives on your disk, with no copy made and nothing moved. Pictures and clips appear in place, everything else becomes a link that opens the file. Drop something from beside the document and you get a short relative link, so the two travel together if you send them on; drop something from your Desktop and you get the full path, so the link still works. Dropping a markdown or text file still opens it, as before.
Hovering a link shows you what is on the other end. Rest the pointer on a link and Markie fetches the page's title, summary and picture, the way Slack does. Nothing is fetched when you open a document, only when you deliberately point at one link, so opening something somebody sent you does not quietly call out to every address in it. Click the card to open the page. It is on by default, and there is a switch in Settings, Advanced, because the site you point at can tell that somebody looked.
Fixed
Dropping a picture on Markie no longer fills the editor with gibberish. A PNG dropped onto the app was read as if it were text, and its bytes went straight into the document.
PDF exports keep pictures that live one folder up. A report whose logo sat in a shared assets/ folder printed with a hole where the logo should have been. Exporting to HTML already handled this; the PDF exporter now uses the same rule.
Sharing a document says what will not travel with it. Sharing sends the text, so a picture sitting beside the document on your disk is not something the other person can see. The share window now counts those files and tells you before you send the link, and points at Export, which folds pictures into the file itself.
macOS builds are signed, notarized and stapled, and install over 0.5.2 through Check for Updates. Windows is signed through Azure Trusted Signing and published to the same stable feed.
Markie 0.5.2
Added
- Pictures that live next to your document just show up.

now means what it means in every other markdown tool: the file sitting beside
the document. Markie could not display those at all before, so a report full
of screenshots was a report full of empty space. A document can reach the
folder it was opened from and anywhere inside your workspace, and nothing
else: open a file somebody sent you and it cannot show you a picture from
elsewhere on your disk, or carry one into a copy you send on. - Documents that carry their own pictures inside them open properly. A
markdown file with its images inlined is how a report travels as a single
file. Markie was throwing every one of those images away on the way into the
editor, and stripping them again on the way out to HTML, PDF and a shared
link. All three now keep them. - Links to files beside the document open them.
[the spec](spec.pdf)used
to do nothing at all, silently, which is indistinguishable from a broken app.
It opens the file in whatever your Mac opens it with, and says why when it
cannot.
Fixed
- Dark PDFs fill the page. Every page came out as a dark rectangle floating
in a white frame, with the frame reappearing between pages. The whole sheet is
the document's colour now, on every page, and the margin holds on page two and
after. Light exports are unchanged, and both keep a line from being stranded
on its own at a page break. - Projects is a tab in the Library, not a page of its own. It used to be a
full-width view behind an unlabelled icon in the left rail, which meant
leaving your document to go and look at a list. It sits in the Library panel
beside Recent now, with one search field over project names and file names
together. Expand a project to see its files; the project holding whatever you
are reading is already open. The tab that listed real folders on your disk is
gone: the structure is Markie's own, over files that never move. - Exported HTML is readable on a screen. It ran the full width of the window
before, which is wider than anyone finishes a line of.
Windows (signed)
Rolling signed Windows installer, replaced on every signed build. Signed by ZVN DEV LLC through Azure Artifact Signing, so it does not trip SmartScreen.
Markie 0.3.2
Added
Find and replace (⌘F, and ⌥⌘F to replace), in the Edit menu and the command palette.
⌘F used to do nothing at all in Rich, which is the mode Markie opens in: find existed, but only inside the Markdown Source editor, behind its own separate search box. There is now one bar, and it works in whichever pane you are reading.
⏎and⇧⏎step through the matches,⌘Gsteps from anywhere, and the count tells you where you are.- Match case and whole word are both there, and the search text is taken literally, so looking for
a.bor$5 (approx)finds exactly that. - Replace changes one match, and Replace All changes the rest, each in a single undo. Read-only shares can be searched but not rewritten.
- Searching the Rich pane finds phrases that run through formatting. "quick brown" is found even when only "quick" is bold, which is one document to you and two pieces of text to the editor.
- Each pane searches what it is actually showing: the heading marker
#is real text in Source and is not in Rich.
Fixed
Open now starts in the folder you are already working in. Pressing Open while reading a document dropped you wherever a file dialog was last used, which was usually somewhere unrelated, so finding the file next to the one on screen meant navigating back every time. The picker now opens beside the current document.
Download
Installed copies update themselves through Markie → Check for Updates.
Both macOS builds are signed, notarized, and stapled. The published artifacts were verified against the exact commit this tag points at.
Markie 0.3.1
Download for macOS: https://markie.zvndev.com/download
Already running Markie? Use Markie > Check for Updates.
Security
- Sharing a document no longer makes it publicly readable. Inviting someone
who did not have a Markie account created a public link for the document as a
side effect, and that link kept working for anyone who had the URL even after
you removed the person. Invites now carry a link addressed to one recipient.
It opens one document, it is checked against that person's access every time
it is used, and it stops working the moment you remove them. Public links are
still available, but only when you deliberately create one.
Fixed
- Share emails now contain something to click. Sharing with someone who
already had an account sent them a note saying they were "in", with no link
to the document and nothing to do but go and look for it. The email now has
two buttons: read it on the web, or open it straight in Markie, where it
arrives in the Library synced and live rather than as a detached copy. - Every share link that was emailed pointed at a page that did not exist.
The website served nothing at the address the links used, so "Read it right
now" answered with a 404. The link and the page agree now.
Added
- Reveal in Finder (
⌥⌘R), in the File menu and the command palette, opens
the folder containing the document you are reading with the file selected, so
you can drag it into another app. Called "Show in Explorer" on Windows and
"Show in File Manager" on Linux.
Markie 0.3.0
Download for macOS: https://markie.zvndev.com/download
Already running Markie? Use Markie > Check for Updates.
Security
- An AI agent writing through the MCP server can no longer be redirected out of
your home folder by a symbolic link. A link pointing at a file that did not
exist yet was treated as an ordinary new document, which allowed a write to
any path, under any file extension, while reporting the harmless path back.
Cloning an untrusted repository into your home folder was enough to set one up. - Signing in with Google now verifies that the sign-in came from your copy of
Markie. The app mints a single-use code before opening your browser and only
accepts the account that comes back carrying it, so a web page cannot hand
Markie an account you did not ask for. Sign-in codes are good for ten minutes
and cannot be reused. - Read-only shares are now read-only everywhere. Someone given view-only
access could still type into a shared document, in either editing pane, with
nothing on screen explaining that their edits would never reach you. The panes
also disagreed with each other: the Source pane locked for everyone during a
live session, including the people who were allowed to edit. Access is now
resolved once, from the server, and every pane obeys it. Viewers see a strip
saying who shared the document, with "Make a copy" to work on their own. - Removing someone from a shared document takes effect immediately. Their
live connection is closed as soon as you revoke access. It used to be checked
only when they first connected, so an open session kept working.
Added
- Markie tells you when a document has changed somewhere else. If another
device or another person has moved a document on, a line appears above it
offering to bring the change down. When nothing of yours is at stake that is
one click. When both copies changed, you get a choice that says what it costs
first, in lines: "Pulling replaces 8 lines of yours and brings in 12 from the
server." You can keep both, which saves your version beside the original under
its own name and then takes theirs, or pull and overwrite. Keep both is the
default, because it is the only one that cannot lose work. - Documents are checked for updates when you open one, when you come back to the
window, and once a minute while you are looking at it. Nothing is checked while
Markie is in the background. - A Retry backup button on any document whose last upload failed. That state
was visible in your Library but there was no way to act on it.
Changed
- The editing modes are now Rich, Source, and Split. The mode called
"View" was a full editor, so the name was telling you the opposite of what it
did.⌘1,⌘2, and⌘3are unchanged. - Markie takes up less than half the space it used to. The installed app is
down from 590.7 MB to 285.7 MB, and the download from 209.2 MB to 123.0 MB.
The app was shipping its entire build toolchain, which nothing at runtime ever
loaded. - The MCP server now reports the shipped version during the handshake instead of
a hardcoded one, and the Claude Code plugin manifest moves with each release.
Fixed
- Share works from everywhere, and explains itself. It used to answer three
different situations with three unrelated surfaces: signed out opened
Settings, an unsynced file silently opened the Library, and a synced file
opened the real dialog only if a background check happened to finish. When
that check failed, Share stopped responding entirely until you restarted.
There is now one "Share this document" dialog that says what is missing and
offers the button that fixes it, including "Sync and share" in one step.
Share…also stays in the command palette instead of disappearing exactly
when you go looking for it. - The Recent list stops rearranging itself. Opening a file used to send it
to the top, so every other row shifted the moment you clicked. The order now
holds still while the panel is open, and files that appear while you are
looking are added at the top. Recent also has a filter box. - Saving no longer overwrites changes made by something else. If a file
changed on disk since you opened it, which happens constantly when an agent is
working in the same folder, Markie now asks whether to reload it or overwrite
it. It used to write straight over the newer file with no warning. - Opening a file no longer rewrites it. Markie used to re-serialize every
document the moment it loaded, which quietly mangled YAML front matter, raw
HTML, footnotes, and math, and marked the file as edited before you touched
it.SKILL.md,CLAUDE.md, andAGENTS.mdfiles were hit hardest. Files now
open byte for byte as they are on disk. - Markie no longer claims a document is backed up when it is not. A failed
upload left the Library still reporting "Synced", which also put "Take cloud"
one click away from replacing your work with an older copy the server never
accepted. Failed uploads are now marked, and taking the cloud copy is refused
while local changes have not reached it. - Pressing
⌘/with the cursor in the source editor no longer comments out the
current line. It used to open the shortcuts dialog and silently wrap your
text in<!-- -->, so edits happened without you noticing. - Pressing Escape while renaming a file no longer performs the rename it was
meant to cancel.