NeNe Folio is a Markdown notes app for Windows.

Your notes stay as plain .md files in a folder you choose. No account, no ads, no usage analytics.

It renders Mermaid diagrams, keeps five previous versions of each note, and went live on the Microsoft Store on November 1. I wrote it in plain C against the raw Win32 API — the build notes are at the end.

Get NeNe Folio on the Microsoft Store

NeNe Folio 1.3.2 in English: categories on the left, a Markdown note with a Mermaid flowchart on the right

What it does

The window has two parts: your notes, grouped by category, on the left, and the open note on the right.

  • Write and read. Edit plain Markdown, then switch to a reading view with headings, lists, tables, quotes, and code blocks. Code blocks in supported languages get basic syntax highlighting. Keep the list beside the note, or give the note the whole window.
  • Pictures and diagrams. Show PNG and JPEG images from local files or HTTPS links. Mermaid flowcharts and sequence diagrams are drawn in the current theme.
  • Find things. Filter notes by name and content, search inside the open note, and replace text with regular expressions.
  • Organize. Give each category a color, and drag notes to reorder them.
  • Version history. The app keeps up to five previous versions of each note, and you can restore any of them into the editor.
  • Customize. A wide selection of themes, light and dark, that you can preview before applying. Text zoom, a minimap, line numbers, keyboard shortcuts, and a command palette. The UI is available in English, Japanese, and Simplified Chinese.

The theme picker with Nord selected

Your files, your folder

Notes are ordinary Markdown files in a folder you pick. If you stop using the app, your notes are still right there.

Remote images need a connection to their HTTPS host. That's the one network feature in the app itself.

You can import UTF-8 Markdown files, export a note as Markdown, or export your saved notes as a ZIP that can include the local images they reference. The ZIP doesn't include settings or version history, so back up the whole folder if you want those too.

What it doesn't do (yet)

I'd rather you know this before you install:

  • No sync. There's no built-in cloud sync. If you use several PCs, put your notes in a folder you already sync.
  • Raw HTML inside Markdown isn't rendered.
  • Images are PNG and JPEG only. Mermaid support covers flowcharts and sequence diagrams, and only part of their syntax.
  • Requires Windows 10 version 2004 or later (x64 only).

Install it

The easiest way is the Microsoft Store, which also delivers updates:

NeNe Folio on the Microsoft Store

Prefer not to use the Store? There's a portable ZIP, with a SHA256SUMS file, on GitHub Releases. Extract everything and run NeNeFolio.exe. The portable build is unsigned.

If you try it, tell me what's missing in GitHub Issues.

How it's built

NeNe Folio is written in C23 against the raw Win32 API. No UI framework.

  • About two months, 393 commits, and 72,005 lines in src/, from September 9 to the v1.3.2 release on November 6.
  • Compiled with clang-cl 19.1.5. MSVC's cl (19.44) rejects C23's nullptr even with /std:clatest.
  • The C runtime is statically linked (/MT), so the app only needs DLLs that ship with Windows. No VC++ redistributable.

I designed it and made the decisions; AI agents (Claude Code) wrote much of the implementation.

Three things surprised me along the way.

1. A frameless window that keeps WS_THICKFRAME still paints its border

The window is WS_POPUP | WS_THICKFRAME. I kept the thick frame so Snap, maximize, and resizing behave normally. Returning 0 from WM_NCCALCSIZE makes the client area cover the whole window.

Then a light band appeared inside the window edge. I thought I'd fixed it. The next day it was back, after the window had sat in the background for a while.

The cause: DefWindowProc draws the border based on whether WS_THICKFRAME is set, not on what WM_NCCALCSIZE returned. It paints that border the moment the window is deactivated. Nothing invalidates the client area afterwards, so the band stays until the next resize.

The fix: handle WM_NCACTIVATE yourself and return TRUE without calling DefWindowProc. That alone removes the band. I also swallow WM_NCPAINT as a guard.

case WM_NCACTIVATE: return TRUE; case WM_NCPAINT: return 0; 

2. Japanese text looked thinner than everything else

RichEdit's font binding (IMF_AUTOFONT) was silently rendering Japanese in Yu Gothic instead of my body font, Noto Sans JP.

Turning IMF_AUTOFONT off fixed Japanese but left emoji as missing glyphs. What worked was associating the body font with SHIFTJIS_CHARSET and GB2312_CHARSET through EM_SETCHARFORMAT with SCF_ASSOCIATEFONT.

It's merged to main but not in a release yet (issue #783, fixed in PR #784).

3. The Store doesn't need your certificate

You can submit an unsigned MSIX. The Store signs the package with Microsoft's certificate when it publishes it, so I didn't buy a code-signing certificate.

Windows won't sideload an unsigned MSIX, though. So I tested a copy signed with a throwaway test certificate: install, save, restart, upgrade from an older version, and uninstall (the notes must survive).

I submitted just after midnight on November 1 (JST), and it was live in the Store late that same evening.

Takeaways

  • Raw Win32 is viable for a real app, but expect to own behavior a framework would hide, such as non-client painting.
  • RichEdit's font binding can override your font for a single writing system. Check it with real text in every language you support.
  • Shipping to the Store was cheaper than I expected: no certificate to buy. Put what you save into testing the install path.

Links

Where do you keep your Markdown notes today — a plain folder, an editor, or a cloud app? I'm curious what would make you switch.

── Hideyuki Mori (Ayane International) 🔗 hideyuki-mori.com