spinss

MDeX v2.4.0 (macOS · Windows · Linux · Tauri v2)

MDeX · diucapkan "em-dex" (/ˌemˈdɛks/) — huruf M diikuti "dex", dua suku kata.

Pembaca & editor Markdown multibahasa yang berfokus pada privasi dan bantuan AI. Setiap file diproses secara lokal — secara default tanpa jaringan, tanpa unggahan, tanpa sinkronisasi cloud, tanpa iklan, tanpa telemetri; penyimpanan atomik (tahan crash) mencegah kehilangan data saat crash atau mati listrik. Sejak v2.0, MDeX juga menawarkan penyuntingan berbantuan AI opsional — dan dapat tetap sepenuhnya offline: model lokal (mis., Ollama) tidak memerlukan internet; hanya layanan AI daring (OpenAI / DeepSeek / Anthropic / GLM / Gemini / Kimi dll.) yang membuat permintaan, dan hanya saat Anda mengonfigurasinya serta memicunya.


🌐 Bahasa

Antarmuka tersedia dalam 17 bahasa: English, 简体中文, Français, Deutsch, Español, Português, Italiano, Русский, 日本語, 한국어, العربية, हिन्दी, ਪੰਜਾਬੀ, Tiếng Việt, Bahasa Indonesia, اردو, Монгол (Кирилл).


✨ Fitur


📦 Instalasi

Prebuilt downloads

Download the installer for your platform from either source:

Platforms: macOS (.dmg, arm64), Windows (.exe, NSIS installer), Linux (.deb / .rpm / .AppImage).


macOS

  1. Open the .dmg file, drag MDeX.app into /Applications.

  2. The app is unsigned (not notarized). On macOS 12+ - especially macOS 26 (Tahoe) - launching it fails with "MDeX.app is damaged and can't be opened." This is Gatekeeper, not real damage. Fix (choose one):

    Option A - Terminal (recommended):

    xattr -cr /Applications/MDeX.app
    codesign --force --deep --sign - /Applications/MDeX.app

    com.apple.provenance (new in macOS 26) is SIP-protected and can't be permanently removed; re-signing resets the signature so Gatekeeper lets it run.

    Option B - Finder right-click: In Finder, right-click (or Control-click) MDeX.app -> Open -> confirm "Open" in the dialog. This bypasses the double-click Gatekeeper check.

    Option C - System Settings: Double-click the app (let it be blocked), then go to System Settings -> Privacy & Security, scroll down, click "Open Anyway" next to the "MDeX.app was blocked" message.

  3. Launch with open /Applications/MDeX.app or double-click. The first launch may still prompt once - confirm via System Settings -> Privacy & Security -> Open Anyway, or right-click -> Open.

Note: Every time you update MDeX (reinstall a new version), repeat step 2. The only permanent fix is Apple Notarization ($99/year Developer certificate).


Windows

  1. Download MDeX_x.x.x_win.exe and double-click to run.
  2. SmartScreen may show "Windows protected your PC" (because the app is unsigned). Click "More info" -> "Run anyway".
  3. Follow the NSIS installer wizard to complete installation.
  4. Launch from the Start Menu or desktop shortcut.

If Windows Defender quarantines the file, restore it: Windows Security -> Virus & threat protection -> Protection history -> Allow on device.


Linux

Debian / Ubuntu (.deb):

sudo dpkg -i MDeX_x.x.x_amd64.deb
# If missing dependencies:
sudo apt-get install -f

Then launch from the application menu or run mdex in terminal.

Fedora / RHEL (.rpm):

sudo rpm -i MDeX_x.x.x_x86_64.rpm

AppImage (all distros):

chmod +x MDeX_x.x.x_amd64.AppImage
./MDeX_x.x.x_amd64.AppImage

If AppImage won't launch, install FUSE: sudo apt install libfuse2 (Debian/Ubuntu) or sudo dnf install fuse (Fedora).


⌨️ Pintasan

Gunakan di macOS, Ctrl di Windows / Linux.

Pintasan Aksi
⌘/Ctrl + N Baru
⌘/Ctrl + O Buka file
⌘/Ctrl + S Simpan
⌘/Ctrl + Shift + S Simpan Sebagai
⌘/Ctrl + W Tutup tab
⌘/Ctrl + Shift + W Tutup jendela
⌘/Ctrl + F Cari
⌘/Ctrl + H Ganti
⌘/Ctrl + B / I / E Tebal / Miring / Kode inline
⌘/Ctrl + K Sisipkan tautan
Tab Indentasi 2 spasi
Alt/Option + drag Pilihan persegi (kolom)
Alt/Option + Shift + ←↑↓→ Perluas pilihan kolom
Esc Batalkan pilihan kolom
⌘/Ctrl + =/−/0 Zoom panel terakhir yang diklik (editor atau pratinjau): perbesar / perkecil / reset
⌘/Ctrl + J Penyuntingan berbantuan AI

Dengan beberapa jendela terbuka, pintasan hanya memengaruhi jendela yang difokuskan. Ketika jendela penampil gambar terbuka, ⌘/Ctrl + =/−/0 memperbesar gambar.


📝 Lembar contekan

Markdown: heading # / ## / ###, tebal **text**, miring *text*, coret ~~text~~, kode inline `code`, blok kode (triple backticks, dengan bahasa opsional), kutipan > text, daftar - / 1., daftar tugas - [ ] / - [x], tautan [text](url), gambar ![alt](url), pembatas ---, tabel | A | B |.

Matematika: inline $E = mc^2$; blok $$\int_0^1 x\,dx$$ (dapat mencakup beberapa baris). Menggunakan sintaks LaTeX, dirender oleh KaTeX; $ di dalam blok kode tidak diperlakukan sebagai pembatas matematika. Mendukung align / aligned, matriks, cases dan environment umum lainnya.

Kutipan: tulis [@key] atau [@a; @b] dalam teks (kompatibel LaTeX \cite{key}), sematkan pustaka melalui blok ```bibtex atau muat .bib dengan tombol "Refs". Daftar Referensi dibuat di akhir; [n] dalam teks dapat diklik.


📤 Ekspor (Simpan Sebagai)

Klik "Save As" dan pilih format:


🔒 Luring & keamanan


🛠️ Build dari sumber

Kode sumber: https://github.com/fwzheng/mdex. Ikuti instruksi build di repositori (setup, dependensi, dan perintah didokumentasikan di sana).


📁 Struktur proyek

markdown/
├── app-shell.html          # frontend shell (HTML+CSS); app logic lives in src/app.js
├── src/
│   ├── app.js              # application logic (// @ts-check; inlined into dist by build-html.mjs)
│   ├── i18n.js            # 17-language UI strings (pure data; window.I18N, split from app.js)
│   ├── help.js            # help-document data (HELP_STRINGS + SK/sc/CITE_HELP_*, window.HELP_DATA)
│   └── globals.d.ts        # vendor / Window type declarations for type-checking
├── tsconfig.json           # type-check config (tsc --noEmit; no bundler)
├── tools/
│   ├── fetch-vendor.mjs    # one-time: download deps into vendor/ + integrity lock (online only here)
│   ├── build-html.mjs      # inline vendor + src/app.js + i18n.js + help.js into dist/index.html (KaTeX fonts → base64)
│   └── test-pure.mjs       # frontend pure-function tests (npm test)
├── dist/index.html         # build output: self-contained single file (Tauri frontendDist)
├── vendor/                 # download cache + integrity.json (.gitignore)
├── package.json            # @tauri-apps/cli + typescript(dev) + scripts
└── src-tauri/
    ├── Cargo.toml          # tauri 2 + dialog / single-instance + encoding_rs
    ├── build.rs            # tauri_build::build()
    ├── tauri.conf.json     # 1200×750 window, strict CSP, icons, .md association, menu hooks
    ├── capabilities/default.json
    ├── icons/              # full icon set from `cargo tauri icon`
    └── src/{main.rs, lib.rs}   # menus + file IO + multi-window routing + atomic write / file ownership

🎨 Kustomisasi

Untuk mengubah Di mana
Nama aplikasi / Bundle ID src-tauri/tauri.conf.jsonproductName / identifier
Ukuran jendela tauri.conf.jsonapp.windows[0] (default 1200×750)
Ikon ganti gambar sumber, lalu npm run icon
Warna tema / font variabel CSS :root di bagian atas app-shell.html
Item menu build_menu() di src-tauri/src/lib.rs
String UI / dokumen bantuan I18N / HELP_STRINGS di src/app.js
Versi dependensi VERSIONS di bagian atas tools/fetch-vendor.mjs (lalu npm run fetch -- --force)

📄 Lisensi

Kode milik proyek ini bersifat open-source di bawah Apache License 2.0.

Komponen pihak ketiga: proyek ini menggunakan sejumlah komponen pihak ketiga (termasuk namun tidak terbatas pada marked, KaTeX, highlight.js, DOMPurify, jsPDF, html2canvas-pro, turndown, mermaid, @retorquere/bibtex-parser, dan Tauri, dll.); peringatan hak cipta dan lisensi masing-masing dijabarkan dalam berkas sumber terkait. Komponen-komponen tersebut masing-masing berlisensi MIT, BSD-3-Clause, Apache-2.0, MPL-2.0, dan lisensi sumber terbuka lainnya.

Persyaratan distribusi: berdasarkan lisensi Apache-2.0, mendistribusikan ulang proyek ini wajib menyertakan berkas LICENSE dan NOTICE; jika Anda memodifikasi berkas sumber, Anda harus menandai perubahan secara jelas pada berkas yang bersangkutan.


📬 Kontak

Untuk masalah atau saran: fw@spinss.cn