首次启动必须右键选「打开」,直接双击会被系统拦截;iCloud 冲突会生成「笔记 2.md」副本,应用只提示不自动合并;笔记库路径首次启动即固定,之后登录 iCloud 不会自动迁移。
miaomiao-notes
onblogAGPL-3.0活跃维护一款可爱风格的 macOS 本地 Markdown 笔记应用,笔记以纯 Markdown 文件存在本地,通过 iCloud Drive 在多设备间同步,适合想要轻量、数据自己掌控的写作场景。
Miaomiao Notes — a cute, local-first Markdown notes app for macOS, synced through iCloud Drive. 喵喵笔记:一只喵喵的本地 Markdown 笔记应用,通过 iCloud Drive 同步。
从 notes.wordtk.com 下载 dmg,拖入 Applications;首次启动需右键 → 打开(ad-hoc 签名未公证)。需要 macOS 12 或更高版本,支持 Apple Silicon 与 Intel;iCloud Drive 可选,没有时笔记库放在 ~/Documents/MiaomiaoNotes。
macOS 本地 Markdown 笔记应用,笔记就是 iCloud Drive 里的 .md 文件,无需账号和服务器
一款可爱风格的 macOS 本地 Markdown 笔记应用,笔记以纯 Markdown 文件存在本地,通过 iCloud Drive 在多设备间同步,适合想要轻量、数据自己掌控的写作场景。
核心能力
- 三栏布局:文件夹、笔记、编辑器,仿 Apple Notes
- 用 CodeMirror 6 编辑,支持 Markdown 高亮与实时预览
- 笔记保存为纯 .md 文件,通过 iCloud Drive 免费同步
- 原子写入、.trash 软删除、iCloud 冲突检测不自动合并
- 中英双语与明暗主题,设置即时生效并自动保存
容易踩的坑
暂无 release 数据(可能没有发版,或尚未同步)。
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Why another notes app?
Because your notes should be files, not someone else's database.
- Three-column layout borrowed from Apple Notes: folders → notes → content
- Every note is a plain
.mdfile inside iCloud Drive, so it syncs across your Macs for free - No account, no server, no subscription — completely free, no sign-up
- A deliberately small, warm UI — one carefully made theme instead of twenty mediocre ones
Features
| Area | What you get |
|---|---|
| Layout | Folder column, note column, editor — native macOS chrome; position, size, zoom and fullscreen are remembered across relaunches |
| Editing | CodeMirror 6, Markdown syntax highlighting, colored code blocks / inline code / list markers, one-click line wrapping for every code block in the preview, live preview (⌘E), five macOS body fonts (PingFang, Songti, Kaiti, Yuanti, Hiragino) |
| Storage | Plain .md files; iCloud Drive when available, otherwise ~/Documents |
| Sync | macOS iCloud Drive, no extra service |
| Safety | Atomic writes, .trash soft delete, iCloud conflict detection |
| Interface | Chinese / English and light / dark, with two one-click icon buttons in the editor header; settings take effect instantly and save themselves |
| Updates | Manual check in Settings, plus one silent check per day |
Requirements
- macOS 12 or later (Apple Silicon or Intel)
- iCloud Drive is optional — without it the library lives in
~/Documents/MiaomiaoNotes
Install
Download the latest build from notes.wordtk.com, open the dmg and drag the app into Applications.
The build is ad-hoc signed, not notarised, so the first launch needs a right click → Open. After that it starts normally.
Development
npm install
npm run dev # Vite + Electron with hot reload
npm run start # build once, then launch Electron
npm run dist # package macOS dmg for arm64 and x64 (prunes stale artifacts)
npm run clean # keep only the current version in release/
The public origin lives in exactly one file: site/site.config.json
(siteUrl). It is committed on purpose — a public origin is an identifier, not
a secret — so a clone builds the real site and app with no setup. Everything
that needs the domain reads that one value: canonical links, Open Graph URLs,
the sitemap, robots.txt, and the origin baked into the app bundle for
Check for updates.
Forks override it without touching files by setting SITE_URL in the
environment (or in a local, git-ignored .env):
SITE_URL=https://your-site.example npm run dist
[email protected] # optional: mail entry in the developer panel, hidden when unset
npm run dist refuses to build when no origin is known, so a release can never
ship a dead update checker.
The check itself uses a 15s timeout plus one retry and pins the DNS result order to
ipv4first: on slow dual-stack networks an AAAA record is often a blackhole — Chromium falls
back to IPv4 via Happy Eyeballs while Node's fetch waits for the timeout, which reads as
"the browser opens the site, the app cannot check". A failure now also says why (no site
configured / network unreachable / server error) instead of one generic sentence.
Where notes live
~/Library/Mobile Documents/com~apple~CloudDocs/MiaomiaoNotes/ # iCloud available
~/Documents/MiaomiaoNotes/ # fallback
The path is resolved once on first launch and stored in Settings, so signing into iCloud later never moves your library. You can change it at any time under Settings → Storage, which switches the pointer without moving or deleting files.
iCloud conflicts
iCloud sync is eventually consistent. If the same note is edited on two Macs
before syncing, iCloud creates a copy like 笔记 2.md. Miaomiao Notes:
- detects those copies before and after each write
- shows a warning banner in the editor
- never merges automatically — silent merging loses data more often than it saves it
Privacy
- The app sends one anonymous launch signal (a random device id) and nothing else
- No IP, no user agent, no hardware details are stored
- The toggle lives in Settings → Behaviour → Anonymous usage
- The website has no analytics, no ads, no cookies and no third-party requests
Architecture
electron/ Main process: window, vault paths, file IO, native menu, IPC
src/ Renderer: three-column UI, CodeMirror editor, Markdown preview
src/styles/ Design tokens and theme (a new theme is one [data-theme] block)
build/ App icon sources (PNG + generated icns)
site/ Official site: Cloudflare Worker plus static assets
The renderer never touches the filesystem directly — everything goes through a
narrow contextBridge surface with contextIsolation and sandbox enabled.
License
Dual-licensed:
- Open source — AGPL-3.0-only. Free to use, modify and self-host. If you distribute a modified version, or expose it as a network service, the AGPL requires you to publish the corresponding source as well.
- Commercial — if AGPL does not fit your product (for example, you want to ship a closed-source derivative), a commercial license is available. Contact [email protected].
The name "喵喵笔记 / Miaomiao Notes" and the cat icon are not covered by the open-source grant.