spinss

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

MDeX · उच्चारण "em-dex" (/ˌemˈdɛks/) — अक्षर M के बाद "dex", दो अक्षर।

गोपनीयता और AI सहायता पर केंद्रित एक बहुभाषी Markdown रीडर और एडिटर। हर फ़ाइल स्थानीय रूप से प्रोसेस होती है — डिफ़ॉल्ट रूप से कोई नेटवर्क नहीं, कोई अपलोड नहीं, कोई क्लाउड सिंक नहीं, बिना विज्ञापन, बिना टेलीमेट्री; एटॉमिक (क्रैश-प्रूफ) सेविंग से क्रैश या पावर आउटेज पर डेटा नहीं खोता। v2.0 से, MDeX एक वैकल्पिक AI सहायित संपादन सुविधा भी देता है — और यह पूरी तरह ऑफ़लाइन रह सकता है: कोई स्थानीय मॉडल (जैसे Ollama) इंटरनेट की आवश्यकता नहीं रखता; केवल एक ऑनलाइन AI सेवा (OpenAI / DeepSeek / Anthropic / GLM / Gemini / Kimi आदि) ही अनुरोध भेजती है, वह भी केवल तब जब आप उसे कॉन्फ़िगर कर ट्रिगर करें।


🌐 भाषाएँ

इंटरफ़ेस 17 भाषाओं में उपलब्ध है: English, 简体中文, Français, Deutsch, Español, Português, Italiano, Русский, 日本語, 한국어, العربية, हिन्दी, ਪੰਜਾਬੀ, Tiếng Việt, Bahasa Indonesia, اردو, Монгол (Кирилл).


✨ विशेषताएँ


⌨️ शॉर्टकट

macOS पर , Windows / Linux पर Ctrl का उपयोग करें।

शॉर्टकट क्रिया
⌘/Ctrl + N नया
⌘/Ctrl + O फ़ाइल खोलें
⌘/Ctrl + S सहेजें
⌘/Ctrl + Shift + S इस रूप में सहेजें
⌘/Ctrl + W टैब बंद करें
⌘/Ctrl + Shift + W विंडो बंद करें
⌘/Ctrl + F ढूंढें
⌘/Ctrl + H बदलें
⌘/Ctrl + B / I / E बोल्ड / इटैलिक / इनलाइन कोड
⌘/Ctrl + K लिंक इंसर्ट करें
Tab 2 स्पेस इंडेंट
Alt/Option + ड्रैग आयताकार (कॉलम) चयन
Alt/Option + Shift + ←↑↓→ कॉलम चयन विस्तार
Esc कॉलम चयन रद्द करें
⌘/Ctrl + =/−/0 अंतिम-क्लिक किए गए पैन (एडिटर या प्रीव्यू) को ज़ूम करें: बड़ा / छोटा / रीसेट
⌘/Ctrl + J AI सहायित संपादन

कई विंडो खुली होने पर, शॉर्टकट केवल फ़ोकस्ड विंडो को प्रभावित करते हैं। जब इमेज व्यूअर विंडो खुली हो, तो ⌘/Ctrl + =/−/0 इमेज को ज़ूम करता है।


📝 चीट शीट

Markdown: शीर्षक # / ## / ###, बोल्ड **text**, इटैलिक *text*, स्ट्राइकथ्रू ~~text~~, इनलाइन कोड `code`, कोड ब्लॉक (ट्रिपल बैकटिक, वैकल्पिक भाषा के साथ), उद्धरण > text, सूचियाँ - / 1., टास्क सूची - [ ] / - [x], लिंक [text](url), छवि ![alt](url), डिवाइडर ---, टेबल | A | B |

गणित: इनलाइन $E = mc^2$; ब्लॉक $$\int_0^1 x\,dx$$ (कई पंक्तियों में फैल सकता है)। LaTeX सिंटैक्स का उपयोग, KaTeX द्वारा रेंडर; कोड ब्लॉक के अंदर $ गणित डिलीमीटर के रूप में नहीं माना जाता। align / aligned, मैट्रिसेस, cases तथा अन्य सामान्य एनवायरनमेंट को समर्थन।

उद्धरण: टेक्स्ट में [@key] या [@a; @b] लिखें (LaTeX-संगत \cite{key}), लाइब्रेरी को एक ```bibtex ब्लॉक के माध्यम से एम्बेड करें या "Refs" बटन से कोई .bib लोड करें। अंत में एक संदर्भ सूची जनरेट की जाती है; इन-टेक्स्ट [n] क्लिक करने योग्य है।


📤 एक्सपोर्ट (इस रूप में सहेजें)

"Save As" पर क्लिक करें और कोई फ़ॉर्मैट चुनें:


🔒 ऑफ़लाइन और सुरक्षा


📦 इंस्टॉलेशन

प्रीबिल्ट डाउनलोड

अपने प्लेटफ़ॉर्म के लिए इंस्टॉलर किसी भी स्रोत से डाउनलोड करें:

macOS (.dmg, universal arm64 + x86_64), Windows (.exe, NSIS installer), Linux (.deb / .rpm / .AppImage).

macOS पर अनसाइन्ड ऐप खोलना (Gatekeeper बायपास)

यह ऐप डेवलपर-साइन्ड / नोटराइज़्ड नहीं है (ऑफ़लाइन परिदृश्य आमतौर पर ऑनलाइन नोटराइज़ नहीं कर सकते)। macOS 12+ पर, विशेष रूप से macOS 26 (Tahoe) पर, इसे सीधे .dmg से — या एक नई कॉपी किए गए बिल्ड से — लॉन्च करना "MDeX.app is damaged and can't be opened." के साथ विफल हो जाता है। वह Gatekeeper है, वास्तविक क्षति नहीं। Terminal में ठीक करें:

  1. पहले MDeX.app को .dmg से बाहर /Applications में खींचें — इसे dmg से सीधे कभी न चलाएं (यह App Translocation और com.apple.provenance एट्रिब्यूट को ट्रिगर करता है, macOS 26 पर "damaged" का वास्तविक कारण)।
  2. एट्रिब्यूट साफ़ करें और पुनः साइन करें:
    xattr -cr /Applications/MDeX.app
    codesign --force --deep --sign - /Applications/MDeX.app

    com.apple.provenance SIP-संरक्षित है और sudo से भी हटाया नहीं जा सकता; पुनः साइनिंग सिग्नेचर रीसेट करती है इसलिए Gatekeeper इसे चलने देता है। spctl तब भी एड-हॉक साइनिंग के लिए rejected रिपोर्ट करता है — अपेक्षित, और यह open को ब्लॉक नहीं करता।

  3. open /Applications/MDeX.app से लॉन्च करें (या डबल-क्लिक)। पहली बार लॉन्च पर अभी भी एक बार प्रॉम्प्ट हो सकता है — System Settings → Privacy & Security → Open Anyway से पुष्टि करें, या ऐप पर राइट-क्लिक → Open

🛠️ स्रोत से बिल्ड करें

स्रोत कोड: https://github.com/fwzheng/mdex. बिल्ड निर्देशों के लिए रिपॉजिटरी देखें (सेटअप, निर्भरताएँ और कमांड वहाँ दस्तावेज़ित हैं)।


📁 प्रोजेक्ट संरचना

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

🎨 कस्टमाइज़ेशन

बदलने के लिए कहाँ
ऐप नाम / Bundle ID src-tauri/tauri.conf.jsonproductName / identifier
विंडो आकार tauri.conf.jsonapp.windows[0] (डिफ़ॉल्ट 1200×750)
आइकन स्रोत छवि बदलें, फिर npm run icon
थीम रंग / फ़ॉन्ट app-shell.html के शीर्ष पर :root CSS वेरिएबल
मेन्यू आइटम src-tauri/src/lib.rs में build_menu()
UI स्ट्रिंग्स / हेल्प डॉक src/app.js में I18N / HELP_STRINGS
डिपेंडेंसी वर्श़न tools/fetch-vendor.mjs के शीर्ष पर VERSIONS (फिर npm run fetch -- --force)

📄 लाइसेंस

इस प्रोजेक्ट का अपना कोड Apache License 2.0 के अंतर्गत ओपन-सोर्स है।

तृतीय-पक्ष घटक: यह प्रोजेक्ट कुछ तृतीय-पक्ष घटकों (marked, KaTeX, highlight.js, DOMPurify, jsPDF, html2canvas-pro, turndown, mermaid, @retorquere/bibtex-parser तथा Tauri आदि सहित, परंतु इन्हीं तक सीमित नहीं) का उपयोग करता है; इनके कॉपीराइट व लाइसेंस सूचनाएँ संबंधित स्रोत फ़ाइलों में दी गई हैं। ये घटक क्रमशः MIT, BSD-3-Clause, Apache-2.0, MPL-2.0 आदि ओपन-सोर्स लाइसेंस के अंतर्गत हैं।

वितरण आवश्यकताएँ: Apache-2.0 लाइसेंस के अनुसार, इस प्रोजेक्ट को पुनर्वितरित करते समय LICENSE तथा NOTICE फ़ाइलेँ बनाए रखना आवश्यक है; यदि आप किसी स्रोत फ़ाइल को संशोधित करते हैं तो संबंधित फ़ाइल में परिवर्तन स्पष्ट रूप से अंकित करें।


📬 संपर्क

समस्याओं या सुझावों के लिए: 郑法伟 (Fawei Zheng) fwzheng@bit.edu.cn