MDeX v2.2.1 (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.
- Frontend HTML mandiri tunggal (tanpa Vue / React); Tauri v2 hanya menyediakan shell native (jendela, menu, dialog file).
- Nol permintaan jaringan saat runtime:
marked/KaTeX/highlight.js/DOMPurify/mermaid/jsPDF/html2canvas-pro/turndown/@retorquere/bibtex-parserdan semua font woff2 KaTeX di-inline / disematkan sebagai base64 ke dalam satuindex.html. - Mendukung
.md/.markdown/.html; dapat dijadikan penangan default.md— klik ganda untuk membuka.
🌐 Bahasa
Antarmuka tersedia dalam 17 bahasa: English, 简体中文, Français, Deutsch, Español, Português, Italiano, Русский, 日本語, 한국어, العربية, हिन्दी, ਪੰਜਾਬੀ, Tiếng Việt, Bahasa Indonesia, اردو, Монгол (Кирилл).
- Beralih kapan saja dari menu bahasa di toolbar; pilihan Anda diingat antar-sesi.
- Arab dan Urdu dirender kanan-ke-kiri (RTL) secara otomatis — teks badan, heading, penanda daftar, dan seluruh toolbar tercermin ke kanan; blok kode yang disematkan, matematika LaTeX, istilah bahasa Inggris, dan nomor versi tetap kiri-ke-kanan, tidak pernah dicerminkan.
- README ini sendiri diterjemahkan ke dalam semua 17 bahasa — gunakan pemilih di bagian paling atas halaman ini.
✨ Fitur
- Multi-tab + multi-jendela: buka beberapa file
sekaligus; perubahan yang belum disimpan ditandai dengan titik, dan Anda
ditanya sebelum menutup; klik tengah tab untuk menutupnya. Klik ganda
pada
.mdmembuka jendelanya sendiri (satu file per jendela); klik ganda pada file yang sudah terbuka fokus ke jendela tersebut alih-alih membukanya ulang. - Pratinjau belah langsung: seret pembatas untuk mengubah ukuran; tombol toolbar berputar antara Belah / Editor / Pratinjau.
- Klik-untuk-posisi: klik di editor untuk menggulir pratinjau; klik di pratinjau untuk melompatkan kursor di editor.
- Cari & ganti: temukan, ganti satu atau semua, dengan jumlah cocok.
- Matematika: inline
$…$dan blok$$…$$(juga\(...\),\[...\]), dirender oleh KaTeX; persamaan panjang berpindah baris pada operator atau menyusut otomatis. - Penyorotan kode: bahasa dideteksi otomatis; dokumen besar disorot malas berdasarkan viewport agar tetap mulus.
- Diagram Mermaid: blok
```mermaiddirender sebagai flowchart / sequence / class / state / Gantt / pie, dll.; klik diagram untuk membuka jendela penampil mandiri (zoom / pan / layar penuh) yang diperbarui langsung saat Anda menyunting. - Gambar: tempel / jatuhkan / pilih — disimpan ke
folder
<namaberkas>_images/di samping dokumen dengan referensi relatif yang bersih (tanpa base64 inline); draf menggunakan folder temporer yang dimigrasi saat menyimpan; «Simpan Sebagai» meratakan gambar ke target; dipusatkan secara default. - Zoom font: zoom font editor dan pratinjau secara
independen (kontrol −/persen/+, atau
⌘/Ctrl + =/−/0); bertahan saat mulai ulang. - Tabel: tabel GFM; tabel sempit dipusatkan ke konten, tabel lebar digulir horizontal tanpa pemotongan.
- Kutipan (BibTeX): sintaks
[@key]/\cite{key}, gaya numerik; daftar Referensi dibuat di akhir, dengan lompatan dua arah antara[n]dalam teks dan entri; mendukung blok```bibtexyang disematkan atau.bibyang dimuat terpisah. - Dukungan HTML: buka file
.htmluntuk rendering; konversi antara HTML dan Markdown. - Tema / bahasa: gelap / terang, 17 bahasa UI (English, 简体中文, Français, Deutsch, Español, Português, Italiano, Русский, 日本語, 한국어, العربية, हिन्दी, ਪੰਜਾਬੀ, Tiếng Việt, Bahasa Indonesia, اردو, Монгол (Кирилл) — Arab dan Urdu otomatis kanan-ke-kiri).
- Draf otomatis: konten disimpan secara berkala dan dipulihkan setelah penutupan tak terduga / crash.
- Hitung kata: status bar menampilkan karakter / baris / kata secara langsung, plus baris & kolom saat ini.
- Seret-dan-jatuhkan: jatuhkan file
.mdke jendela untuk membukanya; jatuhkan gambar untuk menyisipkannya. - Ekspor: simpan sebagai Markdown / HTML / PDF (vektor) / LaTeX.
- Warna teks: palet pada bilah alat membungkus
seleksi dalam
<span style="color:…">. - Penyuntingan berbantuan AI: pilih beberapa teks dan
tekan
⌘/Ctrl + J(atau tombol toolbar) untuk menyempurnakan, memperluas, atau mengganti nada teks oleh AI; bekerja dengan layanan daring (OpenAI / DeepSeek / Anthropic / GLM / Gemini / Kimi, dll.) dan dengan model lokal seperti Ollama untuk penggunaan sepenuhnya luring; hasilnya dipratinjau sebelum menggantikan yang asli, dan kunci API hanya disimpan secara lokal. - Mundur / Maju: riwayat terpadu lintas dokumen dan
posisi kursor; tombol ◀ ▶,
Alt+←/→. - Ikuti tautan: klik tautan di pratinjau membuka target di tab baru (http di peramban sistem); dokumen saat ini tidak diganti.
⌨️ 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 + =/−/0memperbesar 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
, 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:
- Markdown (.md): simpan sumber dan perbarui nama / path tab saat ini.
- HTML (.html): HTML mandiri dengan CSS yang
di-inline + penyorotan kode; matematika dipertahankan sebagai literal
$…$, dirender otomatis oleh KaTeX yang di-inline. - PDF vektor: dialog cetak sistem, keluaran vektor, tajam pada zoom apa pun. Pilih "Save as PDF".
- LaTeX (.tex): dikonversi ke sumber
.texyang dapat dikompilasi (dengan documentclass dan paket; matematika dipertahankan apa adanya). Mengekspor salinan.
🔒 Luring & keamanan
- Nol permintaan jaringan saat runtime. Keluaran
build
dist/index.htmldiperiksa sendiri: tidak ada tautan eksternalsrc=/href=/url()/@import. - CSP ketat (hanya IPC lokal, tanpa WAN); semua file dibaca/ditulis secara lokal, tidak ada yang diunggah.
- Verifikasi: matikan Wi-Fi / cabut kabel dan luncurkan — matematika, gambar, penyorotan kode, dan Mermaid semuanya berfungsi.
dist/index.htmlmasih menampilkan sekitar belasan stringhttps://github.com/…; semuanya berada di dalam komentar lisensi / sumber darimarked/highlight.jsdll. — teks biasa yang tidak pernah memicu permintaan; dibiarkan utuh untuk menghormati lisensi open-source.
📦 Instalasi
Unduhan prebuilt
Unduh installer untuk platform Anda dari salah satu sumber:
- GitHub Releases: https://github.com/fwzheng/mdex/releases
- Situs cermin: https://www.spinss.cn/
macOS (.dmg, universal arm64 + x86_64), Windows
(.exe, NSIS installer), Linux (.deb /
.rpm / .AppImage).
Membuka aplikasi yang tidak ditandatangani di macOS (lewati Gatekeeper)
Aplikasi ini tidak ditandatangani pengembang /
dinotarisasi (skenario luring biasanya tidak dapat menotarisasi secara
online). Di macOS 12+, terutama macOS 26 (Tahoe),
meluncurkannya langsung dari .dmg — atau build yang baru
disalin — gagal dengan "MDeX.app is damaged and can't be
opened." Itu Gatekeeper, bukan kerusakan nyata. Perbaiki di
Terminal:
- Seret
MDeX.appdari.dmgke/Applicationsterlebih dahulu — jangan pernah menjalankannya langsung dari dmg (itu memicu App Translocation dan atributcom.apple.provenance, penyebab nyata "damaged" di macOS 26). - Hapus atribut dan tanda tangani ulang:
xattr -cr /Applications/MDeX.app codesign --force --deep --sign - /Applications/MDeX.appcom.apple.provenancedilindungi SIP dan tidak dapat dihapus bahkan dengansudo; penandatanganan ulang mengatur ulang tanda tangan sehingga Gatekeeper membiarkannya berjalan.spctlmasih melaporkanrejecteduntuk penandatanganan ad-hoc — diharapkan, dan itu tidak memblokiropen. - Luncurkan dengan
open /Applications/MDeX.app(atau klik ganda). Peluncuran pertama mungkin masih meminta sekali — konfirmasi melalui System Settings → Privacy & Security → Open Anyway, atau klik kanan aplikasi → Open.
🛠️ 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.json → productName /
identifier |
| Ukuran jendela | tauri.conf.json → app.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: 郑法伟 (Fawei Zheng) fwzheng@bit.edu.cn