Skip to content

kills1nt/MonoSnip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MonoSnip ⚡

License: MIT Manifest V3 Chrome Firefox

Розширення для швидкого вводу текстових сніпетів (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\).

Chrome / Edge

  1. Розпакуйте MonoSnip-chrome.zip (або клонуйте репозиторій)
  2. Відкрийте chrome://extensions
  3. Увімкніть Режим розробника (перемикач праворуч угорі)
  4. Натисніть Завантажити розпаковане та оберіть папку з manifest.json

Firefox

  1. Відкрийте about:debugging#/runtime/this-firefox
  2. Натисніть Завантажити тимчасовий додаток…
  3. Оберіть файл 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 → вкладка Дозволи → увімкніть «Доступ до ваших даних для всіх вебсайтів», інакше сніпети не працюватимуть.

Перенесення сніпетів із ProKeys

  1. Відкрийте налаштування MonoSnip → вкладка Імпорт / Експорт
  2. Натисніть Обрати файл… та вкажіть ваш експорт із ProKeys (файл .txt, який ProKeys створює через Backup → Export)
  3. Разом зі сніпетами імпортуються гаряча клавіша, пари символів, роздільники та заблоковані сайти.

Налаштування Google Drive (опційно)

Робити це вручну не потрібно — у розширенні є покроковий майстер. Відкрийте налаштування → вкладка Google Drive: поки синхронізацію не налаштовано, майстер розгорнутий одразу. Шість кроків, у кожному пряме посилання на потрібну сторінку Google Cloud Console, кнопка копіювання адреси повернення та поле, куди вставити Client ID. Згорнути й повернути його можна будь-коли кнопкою «📘 Показати покрокову інструкцію».

Ті самі кроки текстом, якщо зручніше читати тут:

  1. Створіть проєкт у Google Cloud (безкоштовно)
  2. Увімкніть Google Drive API
  3. Налаштуйте екран згоди → тип External, і обов'язково додайте свою пошту в Test users — без цього вхід завершиться помилкою «доступ заблоковано»
  4. Скопіюйте Redirect URI з вкладки «Google Drive» налаштувань MonoSnip (там є кнопка «Копіювати»)
  5. Створіть OAuth Client ID типу Web application і вставте скопійовану адресу в Authorized redirect URIs
  6. Вставте отриманий Client ID у поле в MonoSnip та натисніть Підключити Google Drive

Під час входу Google покаже «Google hasn't verified this app» — це нормально, застосунок ваш власний і ніде не публікувався: AdvancedGo 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 (взаємодія: підкреслення → картка → виправлення, «Пропустити», «+ У словник», повна послідовність справжнього кліку mousedownclick зі збереженням фокуса, а також перемальовування при зсуві сторінки без жодної події та переворот картки вгору біля нижнього краю екрана — 46 перевірок).

Ліцензія

MIT — використовуйте вільно.

Частотні словники (src/dict-uk.js, src/dict-en.js) побудовано зі списків hermitdave/FrequencyWords (ліцензія MIT).

About

Text expander для Chrome та Firefox: сніпети по хоткею, автопари символів, підсвічування помилок. Material Design 3, імпорт із ProKeys, Google Drive sync.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages