Розширення для швидкого вводу текстових сніпетів (text expander) для Chrome та Firefox. Створене як заміна ProKeys, увесь код написано з нуля. Дизайн — Material Design 3, темна тема.
- Сніпети — наберіть коротку назву (
слу,дяк,віт…) та натисніть Shift + Space — назва розгорнеться в повний текст. Працює вinput,textareaтаcontenteditable(чати, редактори). - Гарячу клавішу можна змінити у налаштуваннях (вкладка «Налаштування» → «Змінити»).
%sу тексті сніпета — після розгортання курсор стане саме туди.- Папки — сортуйте сніпети по папках («Привітання», «Оплата», «Термінали»…) для швидкого пошуку. Папка створюється просто вводом нової назви в полі «Папка» під час створення/редагування сніпета. Панель папок із лічильниками фільтрує список одним кліком — і в налаштуваннях, і в попапі; новий сніпет автоматично потрапляє у відкриту папку. У попапі список ще й згрупований по папках: кожна папка має заголовок із лічильником, який згортається кліком (стан запам'ятовується), а кнопка + у заголовку одразу створює сніпет саме в цій папці. Папки зберігаються в експорті (у форматі ProKeys — як справжні теки) і переносяться з імпорту.
- Автопари символів —
(→(),"→""тощо; обгортання виділеного тексту; повторне введення закриваючого символу «перестрибує» його; Backspace між парою видаляє обидва символи. Пари можна редагувати. - Перевірка тексту (як у LanguageTool, але повністю офлайн): підкреслює помилки прямо в полі вводу, а по кліку на слові показує картку з варіантами виправлення (клацнули — виправилось). Охоплює:
- орфографію — українською та англійською, зі словником на 25 000 / 20 000 найуживаніших слів;
- пунктуацію й типографіку — зайві/пропущені пробіли біля розділових знаків, подвійні пробіли, дефіс замість тире (—), багатокрапка (…);
- коми — перед підрядним реченням («Скажіть, що саме сталось», «Надішліть чек, який ви отримали»), перед протиставним сполучником («Це не картка, а рахунок»), навколо вставних слів («Опишіть, будь ласка, суть»). Правила навмисно обережні: якщо кома вже стоїть, слово на початку речення або це стійка сполука («тому що», «для того щоб») — підказки не буде;
- граматику — велика літера на початку речення, типові помилки й суржик («неможу» → «не можу», «на протязі» → «протягом»);
- повторені слова («та та») та змішані алфавіти (латинська
iв кириличному слові). - Слова з ваших сніпетів автоматично вважаються правильними; будь-яке слово можна додати в особистий словник кнопкою «+ У словник». Жоден символ не залишає ваш комп'ютер — усе рахується локально.
- Імпорт / експорт — повна сумісність із форматом ProKeys (експорт-файл
.txt— і повний експорт з налаштуваннями, і «голий» масив сніпетів["Snippets", …]; теки розгортаються), власний формат MonoSnip.json, CSV/TSV (назва,текст— по рядку на сніпет, лапки та багаторядкові тексти за RFC 4180, розділювач,;або Tab визначається автоматично), а також JSON із категоріями —{"Категорія": {"назва": "текст", …}, …}(категорії розгортаються у спільний список; вкладеність будь-якої глибини). - Синхронізація з Google Drive — резервна копія сніпетів у прихованій папці застосунку (scope
drive.appdata), ручна та автоматична. Налаштовується покроковим майстром прямо в розширенні: шість кроків із прямими посиланнями на Google Cloud Console, копіюванням адреси повернення в один клік і полем для Client ID. - Блокування сайтів — вимкніть розширення на окремих доменах (через налаштування або перемикач у попапі).
Готові архіви — у Releases: MonoSnip-chrome.zip та MonoSnip-firefox.zip.
Або зберіть самі: powershell -File build.ps1 (архіви з'являться в dist\).
- Розпакуйте
MonoSnip-chrome.zip(або клонуйте репозиторій) - Відкрийте
chrome://extensions - Увімкніть Режим розробника (перемикач праворуч угорі)
- Натисніть Завантажити розпаковане та оберіть папку з
manifest.json
- Відкрийте
about:debugging#/runtime/this-firefox - Натисніть Завантажити тимчасовий додаток…
- Оберіть файл
MonoSnip-firefox.zip
Кореневий
manifest.json— для Chrome (background.service_worker). Firefox-пакет зі своїм маніфестом (background.scripts+ gecko id) генерується скриптомbuild.ps1— запускайте його після будь-яких змін у коді, щоб перезібрати обидва архіви вdist\.
Для постійного встановлення у Firefox розширення треба підписати на addons.mozilla.org (безкоштовно, можна «self-distribution»).
⚠️ Важливо для Firefox: у Manifest V3 Firefox не вмикає доступ до сайтів автоматично. Після встановлення відкрийтеabout:addons→ MonoSnip → вкладка Дозволи → увімкніть «Доступ до ваших даних для всіх вебсайтів», інакше сніпети не працюватимуть.
- Відкрийте налаштування MonoSnip → вкладка Імпорт / Експорт
- Натисніть Обрати файл… та вкажіть ваш експорт із ProKeys
(файл
.txt, який ProKeys створює через Backup → Export) - Разом зі сніпетами імпортуються гаряча клавіша, пари символів, роздільники та заблоковані сайти.
Робити це вручну не потрібно — у розширенні є покроковий майстер. Відкрийте налаштування → вкладка Google Drive: поки синхронізацію не налаштовано, майстер розгорнутий одразу. Шість кроків, у кожному пряме посилання на потрібну сторінку Google Cloud Console, кнопка копіювання адреси повернення та поле, куди вставити Client ID. Згорнути й повернути його можна будь-коли кнопкою «📘 Показати покрокову інструкцію».
Ті самі кроки текстом, якщо зручніше читати тут:
- Створіть проєкт у Google Cloud (безкоштовно)
- Увімкніть Google Drive API
- Налаштуйте екран згоди → тип External, і обов'язково додайте свою пошту в Test users — без цього вхід завершиться помилкою «доступ заблоковано»
- Скопіюйте Redirect URI з вкладки «Google Drive» налаштувань MonoSnip (там є кнопка «Копіювати»)
- Створіть OAuth Client ID типу Web application і вставте скопійовану адресу в Authorized redirect URIs
- Вставте отриманий Client ID у поле в MonoSnip та натисніть Підключити Google Drive
Під час входу Google покаже «Google hasn't verified this app» — це нормально, застосунок ваш власний і ніде не публікувався: Advanced → Go to … (unsafe).
Після підключення кнопки «Зберегти на Drive» / «Завантажити з Drive» працюють одразу, а перемикач «Автосинхронізація» зберігає копію автоматично через 5 хв після кожної зміни сніпетів.
manifest.json — MV3 для Chrome (service worker); Firefox-варіант генерує build.ps1
build.ps1 — збірка dist-пакетів для обох браузерів
icons/ — іконки 16/32/48/128
src/
common.js — модель даних, імпорт/експорт ProKeys, конвертація HTML↔текст
content.js — розгортання сніпетів, автопари, перевірка тексту + картка виправлень
content.css — стилі оверлея підсвічування
checker.js — офлайн-рушій перевірки (орфографія/пунктуація/граматика)
dict-uk.js / dict-en.js — частотні словники слів (укр/англ)
background.js — Google Drive sync (OAuth через launchWebAuthFlow)
options.html/js/css— сторінка налаштувань (Material Design 3)
popup.html/js — попап: пошук/копіювання сніпетів, перемикач сайту
app.css — дизайн-система MD3 (темна тема)
test/ — тестова сторінка та шими для розробки (не входить у пакет)
Функціональність перевірено автотестами в браузері (шим chrome.storage):
розгортання у трьох типах полів (включно з Shadow DOM), регістронезалежність, межі слів,
назви зі спецсимволами (блок+), конвертація <br> → перенос рядка, %s-курсор,
автопари (вставка/обгортання/перестрибування/Backspace), round-trip експорту,
повний цикл Google Drive (з моками API). Імпорт/експорт покрито окремо — test/import-test.html
(32 перевірки: JSON із категоріями, плаский назва→текст, MonoSnip, ProKeys у двох варіантах
(з обгорткою і «голий» масив із теками), CSV/TSV, BOM, дедуплікація назв, помилкові файли,
а також папки: категорії/теки → папки, вкладені шляхи, round-trip експорту в обох форматах).
Перевірку тексту покрито
окремо: test/check-test.html (рушій, зокрема правила ком і їх хибні спрацювання — 48 перевірок)
та test/check-ui-test.html
(взаємодія: підкреслення → картка → виправлення, «Пропустити», «+ У словник», повна
послідовність справжнього кліку mousedown → click зі збереженням фокуса, а також
перемальовування при зсуві сторінки без жодної події та переворот картки вгору
біля нижнього краю екрана — 46 перевірок).
MIT — використовуйте вільно.
Частотні словники (src/dict-uk.js, src/dict-en.js) побудовано зі списків
hermitdave/FrequencyWords (ліцензія MIT).