[English](../../README.md) · [简体中文](../../README.zh.md) · [繁體中文](README.zh-Hant.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Italiano](README.it.md) · [Русский](README.ru.md) · [Tiếng Việt](README.vi.md) · [ไทย](README.th.md) · [Bahasa Indonesia](README.id.md) · **हिन्दी** · [বাংলা](README.bn.md) · [العربية](README.ar.md) · [Türkçe](README.tr.md)
# QuickText
> Windows ट्रे में रहने वाला स्निपेट प्रबंधक और टेक्स्ट विस्तारक।

**एक ही चीज़ दोबारा टाइप करना बंद करें।** QuickText Windows ट्रे में रहता है: जो टेक्स्ट आप बार-बार इस्तेमाल करते हैं — ईमेल, पते, हस्ताक्षर, टेम्पलेट, तैयार जवाब, इमेज — उसे एक बार स्टोर करें, फिर **किसी भी इनपुट बॉक्स** में कुछ कीस्ट्रोक या एक abbreviation टाइप करें और वह सीधे आपके कर्सर पर आ जाता है। मल्टी-लाइन, विशेष अक्षर और emoji अक्षर-दर-अक्षर सुरक्षित रहते हैं।
> आपका दोबारा इस्तेमाल होने वाला टेक्स्ट, कुछ ही कीस्ट्रोक की दूरी पर — सीधे कर्सर पर पहुँचा दिया जाता है।
- WPF / .NET 10, सिंगल-फ़ाइल पोर्टेबल exe, **कोई अकाउंट नहीं, डिफ़ॉल्ट रूप से ऑफ़लाइन** — केवल वैकल्पिक "अपडेट जाँच" ही GitHub से जुड़ती है।
- डेटा आपके अपने फ़ोल्डर में **लोकल JSON** है — इसे Dropbox / OneDrive / किसी NAS में रखकर सिंक करें।
- डार्क और लाइट थीम (या Windows का अनुसरण), **18 UI भाषाएँ** (अरबी के लिए दाएँ-से-बाएँ मिररिंग के साथ), सेटिंग्स तुरंत लागू होती हैं।
**[⬇ नवीनतम संस्करण डाउनलोड करें](https://github.com/rockbenben/QuickText/releases/latest)** —— Windows x64, सिंगल-फ़ाइल पोर्टेबल। कोड-साइन नहीं है, इसलिए पहली बार SmartScreen चेतावनी देगा: **More info → Run anyway**।
- `QuickText--win-x64.zip` — इसमें .NET रनटाइम पहले से शामिल है, इसलिए यह बिना किसी पूर्व-आवश्यकता के किसी भी Windows 10/11 x64 पर चलता है। असमंजस हो तो यही चुनें: इंट्रानेट या ऑफ़लाइन कंप्यूटर, या USB में साथ ले जाने के लिए।
- `QuickText--win-x64-needs-dotnet10.zip` — इसके लिए [.NET 10 डेस्कटॉप रनटाइम](https://dotnet.microsoft.com/download/dotnet/10.0) पहले से इंस्टॉल होना चाहिए। इंटरनेट वाले अपने PC के लिए: एक बार इंस्टॉल करें, उसके बाद हर अपडेट बहुत छोटा होता है।
- `QuickText.exe` — वही बिल्ड, बिना zip के: क्लिक करें और चलाएँ, या अपडेट के लिए मौजूदा कॉपी पर ओवरराइट कर दें।
सुविधाएँ और डेटा दोनों बिल्कुल एक जैसे हैं; फ़र्क़ सिर्फ़ इतना है कि रनटाइम साथ आता है या नहीं।
---
## आप इसे कहाँ इस्तेमाल करेंगे
जहाँ भी आप **Windows पर एक ही चीज़ बार-बार टाइप करते हैं**। यह ट्रे में रहता है और हर इनपुट बॉक्स में काम करता है (चैट विंडो, ब्राउज़र फ़ॉर्म, एडिटर, मेल क्लाइंट — किसी एक ऐप से बंधा नहीं)। यह एक में ही **snippet manager और text expander** है, साथ में पिनयिन सर्च, वेरिएबल टेम्पलेट और इमेज।
| कौन | क्या स्टोर करते हैं |
| ----------------------- | ------------------------------------------------------------------------------------------ |
| **सपोर्ट / ई-कॉमर्स** | तैयार जवाब, मानक उत्तर, प्रोमो टेक्स्ट, QR कोड या प्रोडक्ट की तस्वीरें |
| **सेल्स / बिज़नेस** | ईमेल टेम्पलेट, शुरुआती लाइनें, कोटेशन, समापन हस्ताक्षर |
| **डेवलपर / ops** | कमांड, कॉन्फ़िग, JSON, बॉयलरप्लेट (`{...}` ज्यों का त्यों निकलता है, कभी पार्स नहीं होता) |
| **ऑफ़िस / फ़ॉर्म भरना** | ईमेल, पता, फ़ोन, ID नंबर, मीटिंग-नोट टेम्पलेट (आपसे पूछता है, पिछली वैल्यू याद रखता है) |
| **HR / एडमिन / लीगल** | ऑनबोर्डिंग नोटिस, मानक सूचनाएँ, अस्वीकरण — लोकल, ऑफ़लाइन, संवेदनशील सामग्री के लिए उपयुक्त |
> **कुछ भी संवेदनशील रखने से पहले।** स्निपेट **सादे टेक्स्ट JSON** में सहेजे जाते हैं — जानबूझकर बिना एन्क्रिप्शन के, ताकि आप फ़ाइल खुद पढ़, तुलना और संपादित कर सकें। सिर्फ़ अपने कंप्यूटर पर टेम्पलेट और तयशुदा वाक्यों के लिए यह ठीक है। इसका यह भी मतलब है कि उसमें रखा पहचान संख्या या पासवर्ड वह हर चीज़ पढ़ सकती है जो फ़ाइल पढ़ सकती है — आपके खाते से चलने वाले दूसरे प्रोग्राम भी, और फ़ोल्डर Dropbox / OneDrive में रखा हो तो सिंक सेवा भी। असली राज़ के लिए पासवर्ड मैनेजर इस्तेमाल करें और QuickText में वही रखें जो सामने पड़ा हो तब भी आपको आपत्ति न हो।
## 30 सेकंड में देखें
**जहाँ भी आप टाइप कर सकते हैं** — मान लीजिए आपको किसी चैट बॉक्स में अपना ईमेल चाहिए:
1. **बुलाएँ** — `Ctrl+Shift+8` दबाएँ; पैनल सक्रिय विंडो के ऊपर दिखता है।
2. **खोजें** — कुछ अक्षर टाइप करें; मिलते हुए हिस्से हाइलाइट होते हैं। यह नाम, पिनयिन (पूरा + आद्याक्षर), abbreviation और मुख्य टेक्स्ट सब में मैच करता है।
3. **Enter** — ईमेल **ठीक वहीं पेस्ट हो जाता है जहाँ आपका कर्सर था**। हो गया।
> कुछ भी न टाइप करें तो श्रेणी के अनुसार ब्राउज़ करें, ऊपर `Recent` / `Favorites` पिन किए हुए; जिन्हें आप सबसे ज़्यादा इस्तेमाल करते हैं वे अपने आप **ऊपर तैरने लगते हैं**।
> `↑↓` से नेविगेट करें · `←→` से श्रेणी बदलें · `Alt+1–9` से क्विक-पिक · भेजने के लिए डबल-क्लिक · बंद करने के लिए `Esc`।
## इस तक पहुँचने के तीन तरीके — जो सूट करे चुनें
एक ही लाइब्रेरी, उसमें से खींचने के तीन तरीके; इन्हें बेझिझक मिलाकर इस्तेमाल करें:
| तरीका | कैसे ट्रिगर करें | किसके लिए सबसे अच्छा |
| -------------------------- | --------------------------------------------------------- | -------------------------------------------------- |
| 🔍 **पैनल सर्च** | `Ctrl+Shift+8` → टाइप करें → Enter | कई snippet, कभी-कभार उपयोग, ब्राउज़ करके चुनना |
| ⌨️ **इनलाइन abbreviation** | बस `;sig` टाइप करें फिर Space / Tab / Enter | उच्च-आवृत्ति वाले तय वाक्यांश, पैनल की ज़रूरत नहीं |
| 🧩 **वेरिएबल टेम्पलेट** | ऊपर के किसी भी तरीके से `{variables}` वाला snippet खींचें | ईमेल / फ़ॉर्म: एक टेम्पलेट, कुछ शब्द बदले हुए |
- **इमेज भी**: क्लिपबोर्ड या फ़ाइल से जोड़ें, भेजते समय इमेज के रूप में पेस्ट; इमेज पर भी abbreviation हो सकते हैं, तो abbr टाइप करें और तस्वीर पाएँ (QR कोड, लोगो हस्ताक्षर)।
- **हर snippet के लिए अलग आउटपुट**: चैट वाक्यांश पेस्ट के बाद अपने आप भेजे जाते हैं, कोड snippet कभी नहीं — वे एक-दूसरे में दख़ल नहीं देते।
abbreviation और वेरिएबल का पूरा विवरण नीचे **विस्तार से** में है — **Placeholders** और **Abbreviations** खंडों में।
---
**विस्तार से**
## डिब्बे से निकालते ही काम करता है
**`QuickText.exe`** पर डबल-क्लिक करें; यह **सिस्टम ट्रे** में रहता है (कोई टास्कबार बटन नहीं)। **पहली बार चलाने पर** यह:
- एक छोटी **स्टार्टर लाइब्रेरी** डाल देता है (दो श्रेणियाँ, आपकी **UI भाषा** में) ताकि आप तुरंत आज़मा सकें;
- बुलाने वाले हॉटकी के साथ एक बलून दिखाता है — डिफ़ॉल्ट **`Ctrl+Shift+8`**।
> पैनल के ऊपर-दाएँ आइकन: **+ New** · **Manager** (एडिटर खोलें) · **Settings** · **📌 Pin** (भेजने के बाद पैनल खुला रखें, ताकि कई एक साथ भेज सकें)। ट्रे में वापस गए बिना सीधे Manager / Settings पर जाएँ।
## अपना टेक्स्ट जोड़ें / संपादित करें

- **Tray → Open Manager** — पूरा एडिटर: बाईं ओर श्रेणियाँ, दाईं ओर snippet, नीचे एडिटर। श्रेणियाँ जोड़ें/नाम बदलें/हटाएँ (एक **7-रंग** टैग के साथ), snippet संपादित करें (नाम, abbreviation, मुख्य टेक्स्ट, इमेज)। क्रम बदलने या श्रेणियों के बीच ले जाने के लिए ड्रैग करें; `Ctrl+Z` से डिलीट पूर्ववत होती है।
- **Tray → New from clipboard** — मौजूदा क्लिपबोर्ड से एक नया snippet बनाएँ और उसे पूरा करने के लिए Manager में खोलें (**सेव** दबाने पर डिस्क पर लिखा जाता है; Manager बंद करने पर पूछा जाता है कि सेव करें या न करें)।
- **पैनल में बनाएँ** — सर्च बॉक्स में सामग्री टाइप करें और `Ctrl+N` दबाकर उसे नई स्निपेट के रूप में सहेजें (वह टेक्स्ट मुख्य भाग बन जाता है; `@श्रेणी …` उसे उस श्रेणी में रखता है) और पूरा करने के लिए Manager पर जाएँ (`Ctrl+E` चयनित को संपादित करता है)।
> **लंबा टेक्स्ट / कोड**: मुख्य टेक्स्ट के ऊपर मौजूद `⤢` बटन इसे लगभग-पूर्ण-स्क्रीन एडिटर में खोलता है (या मुख्य टेक्स्ट में `Ctrl+Shift+Enter` दबाएँ); `Esc` या "हो गया" संपादन समाप्त करता है; कुछ बदला हो तो पहले पूछा जाता है कि सहेजें या छोड़ दें। "Enable {variable} placeholders" टिक होने पर, टोकन **प्रकार के अनुसार रंगीन** होते हैं — वेरिएबल सायन (cyan), `{date}` जैसे auto टोकन एम्बर (amber), `{snippet:x}` पर्पल (purple), `{cursor}` सायन डैश्ड — जबकि ग़लत लिखा गया snippet नाम, अमान्य तारीख़ फ़ॉर्मैट या बिना बंद हुआ ब्रेस एक **लाल अंडरलाइन (squiggle)** पाता है जिस पर होवर करके वजह देखी जा सकती है। ये सब भेजते समय **ज्यों का त्यों** पेस्ट होते हैं, जो पहले ग़लत चीज़ पेस्ट होने के बाद ही पता चलता था। किसी तारीख़ टोकन पर होवर करने से उसका हल हुआ मान भी प्रीव्यू होता है। कोड के लिए, चेकबॉक्स को अनटिक छोड़ दें: हाइलाइटिंग पूरी तरह बंद हो जाती है ताकि `{}` से भरा मुख्य टेक्स्ट शांत रहे, और स्टेटस बार बस यह बताता है कि कितने टोकन ज्यों-का-त्यों आउटपुट होंगे। साथ में यह भी शामिल है: **Enter इंडेंटेशन बनाए रखता है** और **`Tab` पूरे मल्टी-लाइन सिलेक्शन को इंडेंट करता है**।
>
> बड़ी हुई विंडो **हमेशा लाइन नंबर दिखाती है**, और इसका फ़ुटर एक **कोड फ़ॉर्मैट** पिकर देता है — JSON, YAML, XML, HTML, Markdown, SQL, Python, JavaScript/TypeScript, C#, Java, PowerShell, Shell और INI, कुल 13 — जो मुख्य टेक्स्ट को सिंटैक्स-हाइलाइट करता है और हर snippet के लिए याद रखा जाता है। **सहेजा गया टेक्स्ट सादा रहता है और जो पेस्ट होता है वह अपरिवर्तित रहता है।** placeholder हाइलाइटिंग बैकग्राउंड रंगती है जबकि सिंटैक्स हाइलाइटिंग अक्षरों को रंगती है, तो दोनों कभी टकराते नहीं: `{variables}` वाला एक JSON मुख्य टेक्स्ट अपनी संरचना और अपने वेरिएबल दोनों एक साथ दिखाता है।
## Placeholders (एक टेम्पलेट, कई परिस्थितियाँ) · हर snippet के लिए अलग से चालू
Placeholders एक **per-snippet स्विच** हैं: Manager एडिटर में "**Enable {variable} placeholders**" पर टिक करें और नीचे दिए टोकन भेजते समय हल हो जाते हैं; **बिना टिक किए (डिफ़ॉल्ट), मुख्य टेक्स्ट ज्यों का त्यों भेजा जाता है** — कोड, स्क्रिप्ट और शाब्दिक `{...}` से भरे JSON कभी गलत पार्स नहीं होते और न ही उन पर पूछा जाता है।
> अपग्रेड: पहले placeholders हमेशा चालू रहते थे। अपग्रेड के बाद पहली बार शुरू होने पर यह उन **मौजूदा snippet** के लिए स्विच अपने आप टिक कर देता है जिनके मुख्य टेक्स्ट में `{...}` है, ताकि व्यवहार न बदले; जो असल में कोड हैं उनके लिए Manager में इसे अनटिक कर दें।
चालू होने पर, ये placeholders भेजते समय हल होते हैं:
| Placeholder | यह क्या करता है |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `{name}` (कोई भी लेबल) | पेस्ट करने से पहले **आपसे भरवाता है**; **आपकी पिछली वैल्यू याद रखता है** ताकि दोहराने पर दोबारा न पूछे |
| `{name:John}` | **डिफ़ॉल्ट** वाला वेरिएबल, प्रॉम्प्ट में पहले से भरा हुआ |
| `{env\|dev\|test\|prod}` | **विकल्पों** वाला वेरिएबल — प्रॉम्प्ट एक ड्रॉपडाउन दिखाता है (पहला विकल्प डिफ़ॉल्ट के रूप में भी काम करता है; मुक्त रूप से टाइप करना फिर भी संभव है) |
| `{clipboard}` | मौजूदा क्लिपबोर्ड सामग्री डालता है |
| `{cursor}` | पेस्ट के बाद कैरेट को इसी जगह छोड़ता है (auto-Enter को भी दबा देता है) |
| `{date}` `{time}` `{datetime}` | मौजूदा तारीख/समय डालता है; `{date+7}` (7 दिन बाद) जैसे ऑफ़सेट और `{date=yyyy-MM-dd}` / `{time=HH:mm:ss}` जैसे कस्टम फ़ॉर्मैट का समर्थन करता है, ऑफ़सेट के साथ संयोजन संभव: `{date+7=MM-dd}`। चीनी उपनाम `{日期}` / `{时间}` / `{日期时间}` भी काम करते हैं |
| `{uuid}` `{random}` | यादृच्छिक वैल्यू: एक UUID / 6 अंक, हर बार नई |
| `{snippet:name}` | **किसी अन्य snippet का मुख्य टेक्स्ट इनलाइन करता है** (3 स्तर गहरा, cycle-safe) — साझा हस्ताक्षर एक ही जगह रखें |
उदाहरण: एक हस्ताक्षर `Best regards,\n{name}` (placeholders चालू के साथ) → भेजते समय नाम पूछता है → तैयार हस्ताक्षर पेस्ट करता है।
## Abbreviations (टाइप करते ही विस्तार, कोई पैनल नहीं) · वैकल्पिक
किसी snippet को एक **abbreviation** दें ताकि वह किसी भी इनपुट बॉक्स में सीधे विस्तृत हो जाए। **ट्रिगर प्रीफ़िक्स** Settings में एक बार सेट होता है (डिफ़ॉल्ट `;`):
1. Manager में, बस **abbreviation खुद** टाइप करें — जैसे अपने हस्ताक्षर के लिए `sig`। प्रीफ़िक्स अपने आप जुड़ जाता है (उसे दोबारा न टाइप करें); फ़ील्ड आगे मौजूदा प्रीफ़िक्स `;` दिखाती है।
2. किसी भी इनपुट बॉक्स में **`;sig`** (= प्रीफ़िक्स + abbreviation) टाइप करें फिर **Space / Tab / Enter** → यह `;sig` को हटा देता है और मुख्य टेक्स्ट में विस्तृत करता है (जिस snippet पर placeholders चालू हैं उसके लिए `{placeholder}` पहले पूछता है)।
3. **गलत टाइप हुआ?** विस्तार के **तुरंत बाद** Backspace दबाएँ ताकि यह वापस `;sig` में बदल जाए (वही विंडो, 5 सेकंड के भीतर)।
विवरण: मिलान **केस-असंवेदनशील** है (`;SIG` CapsLock चालू रहने पर भी ट्रिगर होता है); Backspace से सुधारी गई कोई टाइपिंग गलती फिर भी विस्तृत होती है; एक ही abbreviation साझा करने वाले दो snippet को Manager में **इनलाइन चेतावनी** मिलती है; और ट्रे मेन्यू में एक-क्लिक **"Pause expansion"** टॉगल है (डेमो/गेम के लिए)।
> **प्रीफ़िक्स के बारे में:** प्रीफ़िक्स (डिफ़ॉल्ट `;`) सामान्य टाइपिंग / पिनयिन को किसी नंगे abbreviation को गलती से ट्रिगर करने से रोकता है। इसे **Settings → Abbreviations → Trigger prefix** के तहत बदलें (`,`, `:`, … में) या **खाली छोड़ दें**। प्रीफ़िक्स वाला abbreviation स्वयं-सीमांकित होता है और पहले के टेक्स्ट से चिपका होने पर भी ट्रिगर होता है (जैसे `thx;sig`); बिना प्रीफ़िक्स के यह केवल अपने अलग शब्द के रूप में ट्रिगर होता है (`graf` जैसे किसी लंबे शब्द की पूँछ के रूप में कभी नहीं)। आप abbreviation को प्रति ऐप भी बंद कर सकते हैं (एक ब्लैकलिस्ट, जैसे `cmd.exe; putty.exe`) या उन्हें पूरी तरह बंद कर सकते हैं।
## आउटपुट और सामान्य सेटिंग्स (Tray → Settings)
- **आउटपुट** — डिफ़ॉल्ट "सक्रिय ऐप में पेस्ट करें"; या "केवल क्लिपबोर्ड पर कॉपी करें" (आप `Ctrl+V` से पेस्ट करते हैं)। वैकल्पिक: पेस्ट के बाद Enter दबाना, भेजने के लिए सिंगल-क्लिक, “मेरा क्लिपबोर्ड यथावत रखें” (बहाल करना डिफ़ॉल्ट रूप से बंद है — जो ऐप क्लिपबोर्ड धीरे पढ़ते हैं, वे पुरानी सामग्री पेस्ट कर सकते हैं)। **हर snippet इसे ओवरराइड कर सकता है** (Manager → Output: वैश्विक का पालन करें / पेस्ट करें / पेस्ट + Enter / केवल कॉपी) — चैट वाक्यांश अपने आप भेजे जाते हैं, कोड snippet कभी नहीं।
- **पैनल स्थिति** — सक्रिय विंडो का अनुसरण करें (डिफ़ॉल्ट) / टेक्स्ट कैरेट का अनुसरण करें / पिछली स्थिति याद रखें।
- **बुलाने का तरीका (एक चुनें)** — ① **की कॉम्बो**: बॉक्स पर क्लिक करें और एक नया दबाएँ (सामान्य कीज़ को `Ctrl`/`Alt`/`Shift`/`Win` चाहिए; फ़ंक्शन कीज़ **`F1`–`F24` अकेले काम करती हैं**); या ② **एक मॉडिफ़ायर टैप करें**: बुलाने के लिए **एक मॉडिफ़ायर को सिंगल- या डबल-टैप** करें (जैसे दायाँ `Ctrl`, दायाँ `Shift`) (अकेला मॉडिफ़ायर सामान्य हॉटकी नहीं हो सकता, इसलिए इसे टैप से पहचाना जाता है)। टैप चुनने पर कॉम्बो बंद हो जाता है — दोनों परस्पर अनन्य हैं, इसलिए हमेशा साफ़ रहता है कि कौन-सा सक्रिय है।
- **कैप्चर हॉटकी** — एक वैकल्पिक दूसरा कॉम्बो जो **क्लिपबोर्ड को चुपचाप एक नए snippet के रूप में सहेजता है** (बलून फ़ीडबैक, कोई विंडो नहीं)।
- **डेटा फ़ोल्डर** — इसे किसी सिंक ड्राइव पर सेट करें; **बैकअप एक्सपोर्ट / इम्पोर्ट करें** (zip, ओवरराइट पुष्टि के साथ मान्य किया गया); इस मशीन पर रोज़ाना **ऑटो-बैकअप** (नवीनतम 10 रखे जाते हैं, एक-क्लिक फ़ोल्डर एक्सेस)।
- **भाषा** — **18 भाषाएँ**: English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Español · Português · Français · Deutsch · Italiano · Русский · Tiếng Việt · ไทย · Bahasa Indonesia · हिन्दी · বাংলা · العربية (RTL) · Türkçe, तुरंत बदली जाती हैं। **Windows के साथ शुरू करें** वैकल्पिक।
- **थीम** — डार्क (डिफ़ॉल्ट) / लाइट / Windows का अनुसरण; चुनते ही लागू, पुनरारंभ की ज़रूरत नहीं।
- **अपडेट जाँचें** — डिफ़ॉल्ट रूप से बंद; चालू होने पर शुरू होते समय एक बार GitHub से जुड़कर नया संस्करण जाँचता है (ऐप का एकमात्र ऑनलाइन क्षण)। «अभी जाँचें» से माँग पर चलाएँ।
## कीबोर्ड चीट-शीट
| क्रिया | कीज़ |
| -------------------------------- | ----------------------------------------------------------- |
| पैनल बुलाएँ / बंद करें | `Ctrl+Shift+8` (कॉन्फ़िगर करने योग्य) / `Esc` |
| चुनें / श्रेणी बदलें / क्विक-पिक | `↑↓` / `←→` / `Alt+1–9` |
| भेजें | `Enter` या डबल-क्लिक (सिंगल-क्लिक वैकल्पिक) |
| फ़ेवरिट / अनफ़ेवरिट | `Ctrl+D` |
| पैनल में बनाएँ / संपादित करें | `Ctrl+N` / `Ctrl+E` |
| डिलीट पूर्ववत करें (Manager) | `Ctrl+Z` |
| Abbreviation: ट्रिगर / पूर्ववत | abbr टाइप करें + Space·Tab·Enter / विस्तार के बाद Backspace |
---
## एक नज़र में विशेषताएँ
- **बुलाना**: वैश्विक हॉटकी — एक **की कॉम्बो** (फ़ंक्शन कीज़ अकेली की के रूप में काम करती हैं) या **एक मॉडिफ़ायर को सिंगल/डबल-टैप** (जैसे दायाँ Ctrl), **एक चुनें**; पैनल सक्रिय विंडो / टेक्स्ट कैरेट / याद की गई स्थिति का अनुसरण करता है; ऊपरी पंक्ति के बटन **New / Manager / Settings** पर ले जाते हैं; कई एक साथ भेजने के लिए इसे पिन करें; याद किए गए आकार के साथ ड्रैग और रीसाइज़ करें।
- **खोज**: नाम / पिनयिन / आद्याक्षर / abbreviation / मुख्य टेक्स्ट, हाइलाइट के साथ; **बराबरी उपयोग आवृत्ति (frecency) से तय होती है**; `@category keywords` खोज को एक श्रेणी तक सीमित करता है (नंगा `@category` उसे ब्राउज़ करता है)।
- **सामग्री**: सादा टेक्स्ट (मल्टी-लाइन, विशेष अक्षर, emoji बिना नुकसान के), placeholders (डिफ़ॉल्ट / विकल्प ड्रॉपडाउन / snippet नेस्टिंग / कस्टम तारीख फ़ॉर्मैट / uuid / random — **हर snippet के लिए अलग से चालू**), **इमेज** (क्लिपबोर्ड या फ़ाइल से, भेजते समय इमेज के रूप में पेस्ट; **इमेज पर भी abbreviation हो सकते हैं** — abbr टाइप करें, इमेज पाएँ)।
- **Abbreviations**: टर्मिनेटर-ट्रिगर, वेरिएबल प्रॉम्प्ट, एक-प्रेस पूर्ववत, Backspace टाइपो-सुधार, केस-असंवेदनशील, क्लिक टोकन तोड़ता है, डुप्लिकेट चेतावनी, प्रति-ऐप ब्लैकलिस्ट, **एक-क्लिक ट्रे पॉज़**।
- **आउटपुट**: सीधे पेस्ट / केवल कॉपी; वैकल्पिक auto-Enter, क्लिपबोर्ड बहाल करना, सिंगल-क्लिक भेजना; **प्रति-snippet आउटपुट ओवरराइड**; कैप्चर हॉटकी (क्लिपबोर्ड → एक प्रेस में snippet)।
- **Manager**: **बड़ा मुख्य-टेक्स्ट एडिटर** (`⤢ बड़ा करें` इसे अपनी अलग विंडो में खोलता है; बिना सहेजे बदलावों की पुष्टि हमेशा ली जाती है — विंडो बंद करते समय भी और दूसरी प्रविष्टि पर जाते समय भी), **placeholder हाइलाइटिंग** (प्रकार के अनुसार रंगीन; मृत snippet रेफ़रेंस / अमान्य तारीख़ फ़ॉर्मैट / बिना बंद हुए ब्रेस लाल अंडरलाइन के साथ दिखते हैं, होवर पर वजह सहित; placeholders बंद होने पर कुछ भी हाइलाइट नहीं होता — इसके बजाय स्टेटस बार यह बताता है), **कोड-फ़्रेंडली** (बड़ी हुई विंडो हमेशा लाइन नंबर दिखाती है और सिंटैक्स हाइलाइटिंग के लिए 13 कोड फ़ॉर्मैट देती है; Enter इंडेंटेशन बनाए रखता है, `Tab` मल्टी-लाइन सिलेक्शन इंडेंट करता है, no-wrap मोड), 7 श्रेणी रंग, ड्रैग रीऑर्डर / मूव, **मल्टी-सेलेक्ट बैच मूव / डिलीट** (Ctrl / Shift से चुनें, फिर राइट-क्लिक), डिलीट पूर्ववत, **ट्रैश (30-दिन बहाली, मुख्य टेक्स्ट प्रीव्यू के साथ)**, डुप्लिकेट-abbr चेतावनी, उपयोग आँकड़े, सेव फ़ीडबैक।
- **डेटा**: लोकल JSON, हॉट-रीलोड (बाहरी संपादन / सिंक अपने आप मर्ज होते हैं), सिंक-कॉन्फ़्लिक्ट सूचना, बैकअप एक्सपोर्ट / इम्पोर्ट, **रोज़ाना ऑटो-बैकअप (10 रखे जाते हैं)**, Windows के साथ शुरू।
- **स्थानीयकरण**: **18 UI भाषाएँ** (सरलीकृत / पारंपरिक चीनी, English, 日本語, 한국어, Español, Français, Deutsch, Русский, العربية …) **अरबी के लिए दाएँ-से-बाएँ मिररिंग** के साथ, Settings में लाइव बदली जाती हैं। डार्क और लाइट थीम (या Windows का अनुसरण) भी तुरंत बदलती है।
- **मज़बूती**: सिंगल इंस्टेंस (दूसरी बार लॉन्च करने पर hooks दोबारा इंस्टॉल करने के बजाय सर्च पैनल बुलाता है); CI हर पुश पर टेस्ट और एक विंडो स्मोक-चेक चलाता है और `v*` टैग पर दोनों सिंगल-फ़ाइल बिल्ड प्रकाशित करता है।
## डेटा और सिंक
डेटा फ़ोल्डर (डिफ़ॉल्ट `Documents\QuickText`, Settings में बदला जा सकता है, किसी सिंक ड्राइव पर सेट हो सकता है):
```text
/
├─ index.json # category order + each category's file name and color
├─ .json # the snippets in that category (Snippet[])
├─ trash.json # soft-deleted snippets (auto-purged after 30 days)
└─ images/ # image files for image snippets
```
- `Snippet`: `{ id, name, abbr, body, useVariables, outputMode, imagePath?, updatedAt }`।
- **एटॉमिक राइट** (`*.tmp` → `File.Replace`) ताकि कोई सिंक कभी अधूरी-लिखी फ़ाइल न पढ़े; `FileSystemWatcher` हॉट-रीलोड (coalesced), एक self-write गार्ड के साथ।
- मशीन-लोकल स्थिति **सिंक फ़ोल्डर से बाहर** रहती है: सेटिंग्स `%APPDATA%\QuickText\settings.json` में, उपयोग गिनती / फ़ेवरिट `%APPDATA%\QuickText\usage.stats` में (वे हर भेजने पर बदलते हैं और मशीनों के बीच टकरा जाएँगे), रोज़ाना ऑटो-बैकअप `%APPDATA%\QuickText\backups\` में।
- **पोर्टेबल मोड** (निशान-मुक्त / USB): इसे **Settings → Data → Portable mode** के तहत चालू करें — यह `QuickText.exe` के बगल में एक `QuickText.portable` मार्कर डाल देता है और **अगले रीस्टार्ट पर लागू** होता है (पहला पोर्टेबल स्टार्ट आपकी सेटिंग्स और उपयोग साथ ले जाता है, ताकि आपको दोबारा कॉन्फ़िगर न करना पड़े)। इसके बाद सेटिंग्स, उपयोग, बैकअप और डिफ़ॉल्ट लाइब्रेरी `%APPDATA%` / Documents के बजाय `\Data\` के तहत रहते हैं, और "Windows के साथ शुरू करें" रजिस्ट्री के बजाय एक Startup-फ़ोल्डर शॉर्टकट इस्तेमाल करता है — तो पूरा टूल एक स्टिक पर सफ़र करता है और होस्ट पर कुछ भी नहीं छोड़ता। ऐप को किसी लिखने-योग्य स्थान पर होना चाहिए (एक USB स्टिक, न कि `Program Files`); **टेक्स्ट लाइब्रेरी Export / Import backup से चलती है**। Windows-के-साथ-शुरू प्रति मोड ट्रैक होता है, तो बदलने के बाद नए मोड में इसे दोबारा टिक करें अगर आप चाहें। ऊपर दिए इंस्टॉल किए गए लेआउट के लिए इसे बंद रखें (जब डेटा फ़ोल्डर एक सिंक ड्राइव हो तो यही सही चुनाव है)।
_(यह एक मार्कर फ़ाइल होनी ही चाहिए, न कि एक सादा सेटिंग — यह तय करता है कि `settings.json` खुद कहाँ रहता है; स्विच केवल अगले स्टार्ट पर प्रभावी होता है, मौजूदा सत्र को कभी नहीं छेड़ता।)_
## ब्रांड
एसेट `assets/branding/` में रहते हैं: `quicktext-mark.svg` (प्राथमिक), `quicktext-mark-mono.svg` (एकवर्णी), `quicktext.ico` (16–256, ऐप / ट्रे आइकन), `quicktext-256.png`, `quicktext-social.png` (1200×630 og:image), `quicktext-social-2x.png` (2400×1260 @2x), `brand.html` (ब्रांड शीट)। यह मार्क एक मिंट टाइल पर एक **text I-beam caret** है, जिसके बगल में अभी-अभी पहुँचे टेक्स्ट का एक amber ब्लॉक है — "text▮", यानी आपके टेक्स्ट को कर्सर पर रखना। पैलेट "terminal dusk": मिंट (ऐप एक्सेंट `#3DC2A0`) + amber `#F2B457` एक teal-झुकी स्याही पर; एक sans wordmark के साथ Cascadia Code मोनो जोड़ा हुआ।
## आर्किटेक्चर
शुद्ध Core (कोई Win32 नहीं, यूनिट-टेस्ट योग्य) Win32/UI से अलग रखा गया।
| प्रोजेक्ट | सामग्री |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `src/QuickText.Core` | `Models`, `Persistence` (`Store`, `UsageStore`, `JsonConfig`), `Search` (`SearchIndex`), `Abbr` (`AbbrMatcher`), `Snippets` (`Placeholders`), `Pinyin`, `Settings`, `Localization` (.resx, 18 languages) |
| `src/QuickText.App` | WPF UI (`SearchPanel` / `ManagerWindow` / `SettingsWindow` / `AppDialog` / `VariablesDialog`), `Ui/Theme.xaml` (डार्क थीम), `Interop` (`GlobalHotkey`, `KeyboardHook`, `PasteEngine`, `Autostart`, `NativeMethods`) |
| `tests/QuickText.Core.Tests` | Core यूनिट टेस्ट (xUnit) |
## बिल्ड और रन
```bash
dotnet build QuickText.sln -c Debug
dotnet test tests/QuickText.Core.Tests/QuickText.Core.Tests.csproj
dotnet run --project src/QuickText.App # or run QuickText.exe under bin
```
एक सिंगल-फ़ाइल पोर्टेबल बिल्ड प्रकाशित करें (win-x64):
```bash
dotnet publish src/QuickText.App -c Release -p:PublishProfile=win-x64
dotnet publish src/QuickText.App -c Release -p:PublishProfile=win-x64-needs-dotnet10
```
.NET 10 SDK की आवश्यकता है। केवल Windows (Win32 वैश्विक हॉटकी / कीबोर्ड हुक / क्लिपबोर्ड)।
## लाइसेंस
[MIT License](../../LICENSE) · Copyright © 2026 rockbenben. उपयोग, संशोधन और वितरण के लिए स्वतंत्र।
## 365 ओपन सोर्स प्लान के बारे में
[365 ओपन सोर्स प्लान](https://github.com/rockbenben/365opensource) का प्रोजेक्ट **#023** — एक व्यक्ति + AI, एक साल में 300+ ओपन सोर्स प्रोजेक्ट्स।
[अपना आइडिया सबमिट करें →](https://365.aishort.top/) · [Discord](https://discord.gg/PZTQfJ4GjX) · [Telegram](https://t.me/aishort_top)