尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
A lightweight, elegant editor for the documents you actually want to read.
Just write.
Lumina is a WYSIWYG Markdown editor for macOS and Windows. Format what you mean — the Markdown is written for you, behind the glass.
Open any .md file and it just works. The cursor sits where you see it. Headings look like headings.
The best tool is the one you forget you're using.
1. Download the .dmg file
2. Open it and drag Lumina into your /Applications folder
3. On first launch, if macOS shows an "unverified developer" warning, right-click the app and choose Open查看完整 README ↗Just write.
Lumina is a WYSIWYG Markdown editor for macOS and Windows. Format what you mean — the Markdown is written for you, behind the glass.
Open any .md file and it just works. The cursor sits where you see it. Headings look like headings.
The best tool is the one you forget you're using.
| Platform | Installer | Notes |
|---|---|---|
| macOS (Apple Silicon) | Lumina-1.1.0-arm64.dmg | M1/M2/M3/M4 Macs |
| Windows (x64) | Lumina Setup 1.1.0.exe | Windows 10/11 |
.dmg file/Applications folderLumina is not currently notarized with Apple. This only affects the first launch.
Lumina.Setup.1.1.0.exeUI & Design
Code Blocks
Sidebar
File Handling
Bug Fixes
# for Heading 1, ** for bold, - for bullet lists, > for blockquotes, ``` for code blocks, and more| Element | Keyboard Shortcut | Toolbar |
|---|---|---|
| Bold | ⌘B / Ctrl+B | ✓ |
| Italic | ⌘I / Ctrl+I | ✓ |
| Strikethrough | — | ✓ |
| Inline Code | — | ✓ |
| Link | ⌘K / Ctrl+K | ✓ |
| Heading 1–4 | # + Space | ✓ Dropdown |
| Bullet List | - + Space | ✓ |
| Numbered List | 1. + Space | ✓ |
| Task List | - [ ] + Space | ✓ |
| Blockquote | > + Space | ✓ |
| Code Block | ``` + Enter | ✓ |
images/ folder next to your document⌘K / Ctrl+K with text selected, or use the toolbar buttonhttps:// is prepended automatically if you omit itCmd+Click or right-click → Open in browser#headings scroll to the correct section within the document⌘O / Ctrl+O, File menu, or drag a .md file onto the app⌘S / Ctrl+S⌘⇧S / Ctrl+Shift+S.md editor; double-clicking any Markdown file opens it directly| Action | macOS | Windows |
|---|---|---|
| New file | ⌘N | Ctrl+N |
| Open file | ⌘O | Ctrl+O |
| Save | ⌘S | Ctrl+S |
| Save As | ⌘⇧S | Ctrl+Shift+S |
| Bold | ⌘B | Ctrl+B |
| Italic | ⌘I | Ctrl+I |
| Insert / edit link | ⌘K | Ctrl+K |
| Undo | ⌘Z | Ctrl+Z |
| Redo | ⌘⇧Z | Ctrl+Y |
| Toggle sidebar | Click sidebar icon | Click sidebar icon |
| Layer | Technology |
|---|---|
| Desktop shell | Electron 33 |
| Build tool | electron-vite 5 |
| UI framework | React 18 + TypeScript |
| Editor engine | TipTap v3 (ProseMirror) |
| Syntax highlighting | lowlight (highlight.js tokens) |
| Markdown I/O | tiptap-markdown |
| Styling | Tailwind CSS v3 + @tailwindcss/typography |
| State management | Zustand 5 |
| Settings persistence | electron-store v8 |
| UI primitives | Radix UI (Popover, Dropdown, Tooltip) |
| Icons | Lucide React |
lumina/
├── build/ # App icons (icns, ico, png, svg)
├── src/
│ ├── main/ # Electron main process
│ │ ├── index.ts # BrowserWindow, open-with, close guard
│ │ ├── menu.ts # Native app menu
│ │ ├── store.ts # electron-store (settings, recent files)
│ │ ├── welcome.ts # First-launch welcome document content
│ │ ├── windowState.ts # Persist/restore window size & position
│ │ └── ipc/
│ │ ├── fileHandlers.ts # File open/save/recent IPC handlers
│ │ ├── imageHandlers.ts # Image copy + media:// protocol
│ │ └── index.ts # Registers all handlers
│ ├── preload/
│ │ └── index.ts # contextBridge → window.api surface
│ └── renderer/
│ └── src/
│ ├── App.tsx
│ ├── components/
│ │ ├── editor/
│ │ │ ├── Toolbar.tsx # Formatting toolbar
│ │ │ ├── EditorCore.tsx # Editor wrapper + drop handling
│ │ │ ├── EditorPane.tsx # Toolbar + Editor + StatusBar
│ │ │ ├── BubbleToolbar.tsx # Floating selection toolbar
│ │ │ ├── EditorContextMenu.tsx # Right-click context menu
│ │ │ ├── LinkDialog.tsx # Link insert/edit modal
│ │ │ └── StatusBar.tsx # Word count + file path
│ │ ├── layout/
│ │ │ ├── AppShell.tsx # Root layout
│ │ │ ├── Sidebar.tsx # Recent files panel
│ │ │ └── TitleBar.tsx # Custom macOS title bar
│ │ ├── table/
│ │ │ └── TableWizard.tsx # Hover-grid table inserter
│ │ └── settings/
│ │ └── SettingsModal.tsx # Theme toggle
│ ├── hooks/
│ │ ├── useEditor.ts # TipTap instance + extensions
│ │ ├── useFile.ts # File open/save/dirty state
│ │ ├── useRecentFiles.ts # Recent files IPC bridge
│ │ └── useTheme.ts # OS theme detection
│ ├── store/
│ │ └── appStore.ts # Zustand global store
│ └── styles/
│ └── globals.css # Tailwind + TipTap prose overrides
├── package.json
├── electron.vite.config.ts
├── tailwind.config.ts
└── tsconfig.json
# Clone the repository
git clone https://github.com/micahman33/lumina.git
cd lumina
# Install dependencies
npm install
# Start in development mode (with HMR)
npm run dev
# Compile TypeScript + Vite (output to out/)
npm run build
# Package for macOS (produces DMG in dist/)
npm run build:mac
# Package for Windows (produces NSIS installer in dist/)
npm run build:win
Note: macOS builds must be run on macOS. Windows builds must be run on Windows (or a Windows CI runner).
When you drop an image (or use the toolbar to insert one), Lumina:
images/ subfolder next to your documentphoto.png, photo_1.png, photo_2.png, …)media:// custom protocol so they render correctly in the editorThis means your document folder is fully self-contained — move it anywhere and all images come with it.
MIT © Micah Smith