Document v0.6.26 OpenBao synchronization in English and Ukrainian
@@ -64,3 +64,8 @@
|
|||||||
Вбудований словник тепер містить `поточні` з додатковим рангом **50001**. Коли українська ввімкнена у словниках і циклі розкладок, `Gjnjxys ` та `Поточны ` можуть перетворитися на `Поточні `. Правильне слово не змінюється. Для запуску корекції натисніть **пробіл**. Типовий ліміт частотності **0** включає цей запис; додатний ліміт менший за 50001 виключає його.
|
Вбудований словник тепер містить `поточні` з додатковим рангом **50001**. Коли українська ввімкнена у словниках і циклі розкладок, `Gjnjxys ` та `Поточны ` можуть перетворитися на `Поточні `. Правильне слово не змінюється. Для запуску корекції натисніть **пробіл**. Типовий ліміт частотності **0** включає цей запис; додатний ліміт менший за 50001 виключає його.
|
||||||
|
|
||||||
Оновлювач зберігає наявні словники. Якщо після оновлення слова немає, додайте `поточні` у **My dictionary → Ukrainian**, потім натисніть **OK → Save**. Особисті слова працюють за будь-якого ліміту частотності. Виключені програми, мінімальна довжина й перевірка неоднозначності залишаються чинними.
|
Оновлювач зберігає наявні словники. Якщо після оновлення слова немає, додайте `поточні` у **My dictionary → Ukrainian**, потім натисніть **OK → Save**. Особисті слова працюють за будь-якого ліміту частотності. Виключені програми, мінімальна довжина й перевірка неоднозначності залишаються чинними.
|
||||||
|
|
||||||
|
|
||||||
|
## Особисті слова на кількох ПК (v0.6.26)
|
||||||
|
|
||||||
|
Опціональна [синхронізація OpenBao](Sync-uk) передає **My dictionary** окремо для кожної мови, **Never correct these words**, винятки програм і параметри виправлення. Спочатку натисніть **OK**, потім **Save** у Settings. Незалежні додавання/видалення слів об’єднуються за належністю до набору. Самі файли словників залишаються локальними.
|
||||||
|
|||||||
@@ -64,3 +64,8 @@ Personal words must contain 1–32 letters of the selected language. Ukrainian `
|
|||||||
The bundled dictionary now includes `поточні` at supplemental rank **50001**. With Ukrainian enabled in dictionaries and the layout cycle, `Gjnjxys ` and `Поточны ` can become `Поточні `. Already correct input stays unchanged. Press **Space** to trigger correction. The default frequency limit **0** includes this entry; a positive limit below 50001 excludes it.
|
The bundled dictionary now includes `поточні` at supplemental rank **50001**. With Ukrainian enabled in dictionaries and the layout cycle, `Gjnjxys ` and `Поточны ` can become `Поточні `. Already correct input stays unchanged. Press **Space** to trigger correction. The default frequency limit **0** includes this entry; a positive limit below 50001 excludes it.
|
||||||
|
|
||||||
The updater preserves existing dictionaries. If the word is missing after upgrading, add `поточні` under **My dictionary → Ukrainian**, then **OK → Save**. Personal words work at any frequency rank limit. Excluded applications, minimum length and ambiguity checks still apply.
|
The updater preserves existing dictionaries. If the word is missing after upgrading, add `поточні` under **My dictionary → Ukrainian**, then **OK → Save**. Personal words work at any frequency rank limit. Excluded applications, minimum length and ambiguity checks still apply.
|
||||||
|
|
||||||
|
|
||||||
|
## Personal words across PCs (v0.6.26)
|
||||||
|
|
||||||
|
Optional [OpenBao synchronization](Sync) includes **My dictionary**, separately for each language, **Never correct these words**, excluded applications and correction preferences. Click **OK**, then **Save** in Settings before syncing. Independent word additions/removals merge by membership. Dictionary files themselves remain local.
|
||||||
|
|||||||
+5
@@ -101,3 +101,8 @@
|
|||||||
Chrome та Edge тепер використовують виділення з паузами, як Teams/WebView: окремі натискання **Shift+Left** розділено паузами 25 мс. Це зменшує серії подій, які асинхронний редактор може не встигнути обробити. Конвертація щойно набраного тексту, повторна конвертація та Undo й далі перевіряють увесь скопійований фрагмент перед заміною; відновлення часткового виділення залишається доступним.
|
Chrome та Edge тепер використовують виділення з паузами, як Teams/WebView: окремі натискання **Shift+Left** розділено паузами 25 мс. Це зменшує серії подій, які асинхронний редактор може не встигнути обробити. Конвертація щойно набраного тексту, повторна конвертація та Undo й далі перевіряють увесь скопійований фрагмент перед заміною; відновлення часткового виділення залишається доступним.
|
||||||
|
|
||||||
Повідомлений браузерний збій після цієї зміни ще не перевірено наживо. Якщо **previous-result-verification-mismatch** повторюється, припиніть повторювати хоткей, явно виділіть потрібне слово й спробуйте ручну конвертацію. До нового повідомлення додайте деталі діагностики. **Original text remained** та **Paste not verified** — окремі результати зчитування; ця зміна не гарантує вставлення та не прибирає наявні перевірки.
|
Повідомлений браузерний збій після цієї зміни ще не перевірено наживо. Якщо **previous-result-verification-mismatch** повторюється, припиніть повторювати хоткей, явно виділіть потрібне слово й спробуйте ручну конвертацію. До нового повідомлення додайте деталі діагностики. **Original text remained** та **Paste not verified** — окремі результати зчитування; ця зміна не гарантує вставлення та не прибирає наявні перевірки.
|
||||||
|
|
||||||
|
|
||||||
|
## Відновлення після перевстановлення Windows (v0.6.26)
|
||||||
|
|
||||||
|
Якщо ввімкнено [синхронізацію OpenBao](Sync-uk), на новій інсталяції вкажіть той самий сервер, акаунт і профіль та натисніть **Download remote**. Пароль залишається у Windows Credential Manager; локальна спільна копія й резервна копія перед завантаженням захищені DPAPI та не переносяться на інший акаунт/ПК. Історія буфера, локальні шляхи та автозапуск не завантажуються. Для давнішого стану відновіть версію KV у OpenBao й завантажте її. Оновіть усі ПК для підтримки формату синхронізації 2.
|
||||||
|
|||||||
+5
@@ -101,3 +101,8 @@ Native regression tests cover suffix verification, and isolated-editor integrati
|
|||||||
Chrome and Edge now use paced selection, as already used for Teams/WebView: individual **Shift+Left** presses have 25 ms pauses. This reduces bursts of events that asynchronous editors may not process in time. Recent-text conversion, repeat conversion and Undo still verify the full copied range before replacement; partial-selection recovery remains available.
|
Chrome and Edge now use paced selection, as already used for Teams/WebView: individual **Shift+Left** presses have 25 ms pauses. This reduces bursts of events that asynchronous editors may not process in time. Recent-text conversion, repeat conversion and Undo still verify the full copied range before replacement; partial-selection recovery remains available.
|
||||||
|
|
||||||
The reported browser-editor failure has not yet been verified live after this change. If **previous-result-verification-mismatch** persists, stop repeating the shortcut, explicitly select the intended word and try manual conversion. Include diagnostic details in a new report. **Original text remained** and **Paste not verified** are separate readback outcomes; this change does not guarantee paste delivery or remove the existing verification checks.
|
The reported browser-editor failure has not yet been verified live after this change. If **previous-result-verification-mismatch** persists, stop repeating the shortcut, explicitly select the intended word and try manual conversion. Include diagnostic details in a new report. **Original text remained** and **Paste not verified** are separate readback outcomes; this change does not guarantee paste delivery or remove the existing verification checks.
|
||||||
|
|
||||||
|
|
||||||
|
## Recover settings after reinstalling Windows (v0.6.26)
|
||||||
|
|
||||||
|
With [OpenBao synchronization](Sync) enabled, configure the same server/account/profile on the new installation and choose **Download remote**. Passwords stay in Windows Credential Manager; the local sync baseline and pre-download backup use DPAPI and cannot be moved to another Windows account/machine. Clipboard history, local paths and startup settings are not uploaded. For older snapshots, restore a KV version in OpenBao and download it. Update every participating PC to support sync format 2.
|
||||||
|
|||||||
+13
-6
@@ -23,6 +23,7 @@ KSwitcher — нативне C++/Win32-переписування Windows-фун
|
|||||||
| [Сніпети](#feature-8) | Текстові шаблони, багаторядковий текст і позиція курсора |
|
| [Сніпети](#feature-8) | Текстові шаблони, багаторядковий текст і позиція курсора |
|
||||||
| [Хоткеї](#feature-9) | Запис комбінації натисканням клавіш, зокрема заміна звичайних системних комбінацій |
|
| [Хоткеї](#feature-9) | Запис комбінації натисканням клавіш, зокрема заміна звичайних системних комбінацій |
|
||||||
| [Скріншоти](#feature-10) | Win+Shift+S → буфер → сповіщення з мініатюрою → редактор із позначками |
|
| [Скріншоти](#feature-10) | Win+Shift+S → буфер → сповіщення з мініатюрою → редактор із позначками |
|
||||||
|
| [Синхронізація налаштувань](Sync-uk) | Власний OpenBao, окремі конфлікти й відстеження видалень сніпетів |
|
||||||
| [Автозапуск](#feature-11) | Звичайний або з правами адміністратора |
|
| [Автозапуск](#feature-11) | Звичайний або з правами адміністратора |
|
||||||
|
|
||||||
## Швидкий старт
|
## Швидкий старт
|
||||||
@@ -37,7 +38,7 @@ KSwitcher — нативне C++/Win32-переписування Windows-фун
|
|||||||
|
|
||||||
## Можливості на скриншотах
|
## Можливості на скриншотах
|
||||||
|
|
||||||
Скриншоти містять лише демонстраційні дані. Налаштування, словники, буфер та OCR знято у v0.6.14; приклади сніпетів оновлено для v0.6.18; приклад редактора знімків оновлено для v0.6.24.
|
Скриншоти містять лише демонстраційні дані. Налаштування оновлено для v0.6.26 (з кнопкою Sync…); словники, буфер та OCR знято у v0.6.14; приклади сніпетів оновлено для v0.6.18; приклад редактора знімків оновлено для v0.6.24.
|
||||||
|
|
||||||
<a id="feature-1"></a>
|
<a id="feature-1"></a>
|
||||||
|
|
||||||
@@ -55,7 +56,7 @@ KSwitcher — нативне C++/Win32-переписування Windows-фун
|
|||||||
|
|
||||||
У **Layout cycle** увімкніть потрібні мови, впорядкуйте їх через **Move up / Move down** і задайте **Direct layout shortcut** для прямого переходу до мови. Перелік розкладок береться з Windows.
|
У **Layout cycle** увімкніть потрібні мови, впорядкуйте їх через **Move up / Move down** і задайте **Direct layout shortcut** для прямого переходу до мови. Перелік розкладок береться з Windows.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
[Докладніше](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Usage-uk)
|
[Докладніше](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Usage-uk)
|
||||||
|
|
||||||
@@ -125,7 +126,7 @@ KSwitcher — нативне C++/Win32-переписування Windows-фун
|
|||||||
|
|
||||||
Клацніть поле хоткея, натисніть потрібну комбінацію й збережіть через **Save**. **Backspace / Delete** очищає поле. Наявні хоткеї зберігаються після оновлень; можна призначати звичайні системні комбінації на кшталт Win+V.
|
Клацніть поле хоткея, натисніть потрібну комбінацію й збережіть через **Save**. **Backspace / Delete** очищає поле. Наявні хоткеї зберігаються після оновлень; можна призначати звичайні системні комбінації на кшталт Win+V.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
[Докладніше](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Usage-uk)
|
[Докладніше](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Usage-uk)
|
||||||
|
|
||||||
@@ -145,7 +146,7 @@ KSwitcher — нативне C++/Win32-переписування Windows-фун
|
|||||||
|
|
||||||
Увімкніть **Start with Windows**. Для роботи з підвищеними правами можна також увімкнути **Start with Windows as administrator** і підтвердити UAC. Збереження опції не підвищує права вже запущеного процесу.
|
Увімкніть **Start with Windows**. Для роботи з підвищеними правами можна також увімкнути **Start with Windows as administrator** і підтвердити UAC. Збереження опції не підвищує права вже запущеного процесу.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
[Докладніше](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/FAQ-uk)
|
[Докладніше](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/FAQ-uk)
|
||||||
|
|
||||||
@@ -155,13 +156,19 @@ KSwitcher — нативне C++/Win32-переписування Windows-фун
|
|||||||
- [Гарячі клавіші, буфер обміну та шаблони](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Usage-uk)
|
- [Гарячі клавіші, буфер обміну та шаблони](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Usage-uk)
|
||||||
- [Оновлення, дані та поширені запитання](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/FAQ-uk)
|
- [Оновлення, дані та поширені запитання](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/FAQ-uk)
|
||||||
|
|
||||||
Документацію та огляд усіх 11 можливостей актуалізовано для **v0.6.25**. Інтерфейс застосунку англійською; назви кнопок у посібнику наведені як у програмі.
|
Документацію та огляд можливостей актуалізовано для **v0.6.26**. Інтерфейс застосунку англійською; назви кнопок у посібнику наведені як у програмі.
|
||||||
|
|
||||||
[](https://send.monobank.ua/jar/88h2TddKfS)
|
[](https://send.monobank.ua/jar/88h2TddKfS)
|
||||||
|
|
||||||
[Відкрити банку Monobank](https://send.monobank.ua/jar/88h2TddKfS) · Дякую, що підтримуєте KSwitcher!
|
[Відкрити банку Monobank](https://send.monobank.ua/jar/88h2TddKfS) · Дякую, що підтримуєте KSwitcher!
|
||||||
|
|
||||||
## Останні зміни — v0.6.25 (2026-11-01)
|
## Останні зміни — v0.6.26 (2026-11-02)
|
||||||
|
|
||||||
|
**Settings → Sync…** підключає власний OpenBao KV v2. Перевірка під час запуску, кожні 10 хвилин та після збереження налаштувань. Конфлікти вирішуються окремо; сніпети мають сталі ID та записи видалення. Особисті словники й винятки об’єднуються незалежно. Типово вимкнено; оновіть усі ПК для формату синхронізації 2.
|
||||||
|
|
||||||
|
[Підключення, конфлікти та відновлення](Sync-uk) · [Завантажити v0.6.26](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/releases/download/release-v0.6.26/KSwitcher-win-x64.zip) · [SHA256SUMS.txt](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/releases/download/release-v0.6.26/SHA256SUMS.txt)
|
||||||
|
|
||||||
|
## Попередній реліз — v0.6.25 (2026-11-01)
|
||||||
|
|
||||||
**Олівець (F)** тепер перетворює майже прямий штрих на редаговану пряму після відпускання миші. Кут, кінцеві точки й стиль зберігаються. **Ctrl+Z** повертає початковий штрих; короткі штрихи, помітні вигини та рух назад не вирівнюються.
|
**Олівець (F)** тепер перетворює майже прямий штрих на редаговану пряму після відпускання миші. Кут, кінцеві точки й стиль зберігаються. **Ctrl+Z** повертає початковий штрих; короткі штрихи, помітні вигини та рух назад не вирівнюються.
|
||||||
|
|
||||||
|
|||||||
+13
-6
@@ -22,6 +22,7 @@ KSwitcher is a native C++/Win32 rewrite of the Windows functionality of **[Typlo
|
|||||||
| [Snippets](#feature-8) | Text templates, multiline content and cursor positioning |
|
| [Snippets](#feature-8) | Text templates, multiline content and cursor positioning |
|
||||||
| [Shortcuts](#feature-9) | Record a shortcut by pressing its keys, including ordinary Windows shortcuts |
|
| [Shortcuts](#feature-9) | Record a shortcut by pressing its keys, including ordinary Windows shortcuts |
|
||||||
| [Screenshots](#feature-10) | Win+Shift+S → clipboard → thumbnail notification → annotation editor |
|
| [Screenshots](#feature-10) | Win+Shift+S → clipboard → thumbnail notification → annotation editor |
|
||||||
|
| [Settings sync](Sync) | Optional OpenBao, per-setting conflicts and snippet deletion tracking |
|
||||||
| [Startup](#feature-11) | Start with Windows, optionally as administrator |
|
| [Startup](#feature-11) | Start with Windows, optionally as administrator |
|
||||||
|
|
||||||
## Quick start
|
## Quick start
|
||||||
@@ -36,7 +37,7 @@ To correct text manually, select it and press **Next layout**. With **Convert re
|
|||||||
|
|
||||||
## Features in screenshots
|
## Features in screenshots
|
||||||
|
|
||||||
Screenshots contain demonstration data only. Settings, dictionaries, clipboard and OCR were captured in v0.6.14; snippet examples are updated for v0.6.18; the annotation-editor example is updated for v0.6.24.
|
Screenshots contain demonstration data only. Settings are updated for v0.6.26 (including Sync…); dictionaries, clipboard and OCR were captured in v0.6.14; snippet examples are updated for v0.6.18; the annotation-editor example is updated for v0.6.24.
|
||||||
|
|
||||||
<a id="feature-1"></a>
|
<a id="feature-1"></a>
|
||||||
|
|
||||||
@@ -54,7 +55,7 @@ Select `ghbdsn` and use **Next layout** to get `привіт`. Enable recent-tex
|
|||||||
|
|
||||||
Enable languages in **Layout cycle**, arrange them with **Move up / Move down**, and assign **Direct layout shortcut** to jump straight to a language. Available layouts come from Windows.
|
Enable languages in **Layout cycle**, arrange them with **Move up / Move down**, and assign **Direct layout shortcut** to jump straight to a language. Available layouts come from Windows.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
[Guide](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Usage)
|
[Guide](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Usage)
|
||||||
|
|
||||||
@@ -124,7 +125,7 @@ Example: `;run` → `rider .{enter}` (insert text and press Enter).
|
|||||||
|
|
||||||
Click a shortcut field, press the desired combination, then **Save**. **Backspace / Delete** clears a field. Existing shortcuts survive updates; ordinary Windows combinations such as Win+V can be assigned.
|
Click a shortcut field, press the desired combination, then **Save**. **Backspace / Delete** clears a field. Existing shortcuts survive updates; ordinary Windows combinations such as Win+V can be assigned.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
[Guide](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Usage)
|
[Guide](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Usage)
|
||||||
|
|
||||||
@@ -144,7 +145,7 @@ Press **Win+Shift+S**, capture a region, and open the thumbnail notification to
|
|||||||
|
|
||||||
Enable **Start with Windows**. For elevated target applications, optionally enable **Start with Windows as administrator** and confirm Windows UAC. Saving this setting does not elevate an already running process.
|
Enable **Start with Windows**. For elevated target applications, optionally enable **Start with Windows as administrator** and confirm Windows UAC. Saving this setting does not elevate an already running process.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
[Guide](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/FAQ)
|
[Guide](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/FAQ)
|
||||||
|
|
||||||
@@ -154,13 +155,19 @@ Enable **Start with Windows**. For elevated target applications, optionally enab
|
|||||||
- [Keyboard shortcuts, clipboard and snippets](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Usage)
|
- [Keyboard shortcuts, clipboard and snippets](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Usage)
|
||||||
- [Updates, data and frequently asked questions](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/FAQ)
|
- [Updates, data and frequently asked questions](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/FAQ)
|
||||||
|
|
||||||
Documentation is current through **v0.6.25**. The application interface is in English. This wiki is available in English and Ukrainian; use the language links at the top of each page to open its translation.
|
Documentation is current through **v0.6.26**. The application interface is in English. This wiki is available in English and Ukrainian; use the language links at the top of each page to open its translation.
|
||||||
|
|
||||||
[](https://send.monobank.ua/jar/88h2TddKfS)
|
[](https://send.monobank.ua/jar/88h2TddKfS)
|
||||||
|
|
||||||
[Donate via Monobank](https://send.monobank.ua/jar/88h2TddKfS) · Thank you for supporting KSwitcher!
|
[Donate via Monobank](https://send.monobank.ua/jar/88h2TddKfS) · Thank you for supporting KSwitcher!
|
||||||
|
|
||||||
## Recent changes — v0.6.25 (2026-11-01)
|
## Recent changes — v0.6.26 (2026-11-02)
|
||||||
|
|
||||||
|
**Settings → Sync…** connects to your own OpenBao KV v2. Checks run at startup, every 10 minutes and after saving settings. Resolve conflicts per setting; snippets have stable IDs and tracked deletions. Personal dictionaries and exclusions merge independently. Disabled by default; update all participating PCs for sync format 2.
|
||||||
|
|
||||||
|
[Setup, conflicts and recovery](Sync) · [Download v0.6.26](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/releases/download/release-v0.6.26/KSwitcher-win-x64.zip) · [SHA256SUMS.txt](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/releases/download/release-v0.6.26/SHA256SUMS.txt)
|
||||||
|
|
||||||
|
## Previous release — v0.6.25 (2026-11-01)
|
||||||
|
|
||||||
**Pencil (F)** now turns a nearly straight stroke into an editable straight line when you release the mouse. It keeps the drawn angle, endpoints and style. **Ctrl+Z** restores the original stroke; short strokes, noticeable curves and backward tracing are not straightened.
|
**Pencil (F)** now turns a nearly straight stroke into an editable straight line when you release the mouse. It keeps the drawn angle, endpoints and style. **Ctrl+Z** restores the original stroke; short strokes, noticeable curves and backward tracing are not straightened.
|
||||||
|
|
||||||
|
|||||||
@@ -54,3 +54,8 @@ Release checklist
|
|||||||
Перед заміною тригера KSwitcher копіює та перевіряє виділений текст. Якщо Ctrl+C не змінив буфер, програма може повторити копіювання — до трьох спроб загалом, за умови незмінного контексту введення та службового буфера. Якщо тригер так і не вдалося перевірити, розгортання скасовується: тригер залишається, введення з черги відтворюється, дія `{enter}` не надсилається. Вставлення не повторюється навмання.
|
Перед заміною тригера KSwitcher копіює та перевіряє виділений текст. Якщо Ctrl+C не змінив буфер, програма може повторити копіювання — до трьох спроб загалом, за умови незмінного контексту введення та службового буфера. Якщо тригер так і не вдалося перевірити, розгортання скасовується: тригер залишається, введення з черги відтворюється, дія `{enter}` не надсилається. Вставлення не повторюється навмання.
|
||||||
|
|
||||||
`{enter}` — це натискання клавіші, а не гарантія переносу рядка: багаторядковий редактор зазвичай вставляє перенос, однорядкове поле може його проігнорувати, а чат чи термінал — надіслати текст. Синтаксис сніпетів, гарячі клавіші та значення за замовчуванням у цьому патчі не змінювалися.
|
`{enter}` — це натискання клавіші, а не гарантія переносу рядка: багаторядковий редактор зазвичай вставляє перенос, однорядкове поле може його проігнорувати, а чат чи термінал — надіслати текст. Синтаксис сніпетів, гарячі клавіші та значення за замовчуванням у цьому патчі не змінювалися.
|
||||||
|
|
||||||
|
|
||||||
|
## Синхронізація (v0.6.26)
|
||||||
|
|
||||||
|
Сніпети зберігають сталі ID після перейменування. Незалежні зміни об’єднуються; записи видалення не дають незміненим офлайн-копіям мовчки повертати видалене. Видалення проти редагування та однакові тригери вирішуються окремо через **Sync… → Resolve individual conflicts…**. Наявні сніпети мігруються автоматично; оновіть усі ПК для формату синхронізації 2. [Підключення та відновлення](Sync-uk).
|
||||||
|
|||||||
+5
@@ -54,3 +54,8 @@ Typing immediately after a trigger is buffered and replayed after expansion. Aut
|
|||||||
Before replacing a trigger, KSwitcher copies and verifies the selected text. If Ctrl+C produces no clipboard change, it can try again, up to three total attempts, provided the active input context and transaction clipboard have not changed. If the trigger still cannot be verified, expansion is cancelled: the trigger remains, queued typing resumes, and no `{enter}` action is sent. Paste is not blindly retried.
|
Before replacing a trigger, KSwitcher copies and verifies the selected text. If Ctrl+C produces no clipboard change, it can try again, up to three total attempts, provided the active input context and transaction clipboard have not changed. If the trigger still cannot be verified, expansion is cancelled: the trigger remains, queued typing resumes, and no `{enter}` action is sent. Paste is not blindly retried.
|
||||||
|
|
||||||
`{enter}` is a key action, not a promise of a newline: a multiline editor normally inserts a line break, a single-line field may ignore it, and a chat or terminal may submit the text. No snippet syntax, shortcut or default changed in this patch.
|
`{enter}` is a key action, not a promise of a newline: a multiline editor normally inserts a line break, a single-line field may ignore it, and a chat or terminal may submit the text. No snippet syntax, shortcut or default changed in this patch.
|
||||||
|
|
||||||
|
|
||||||
|
## Synchronization (v0.6.26)
|
||||||
|
|
||||||
|
Snippets retain stable IDs across renames. Independent edits merge; deletion records prevent unchanged offline copies from restoring removed snippets. Deletion versus editing and duplicate triggers are resolved per item under **Sync… → Resolve individual conflicts…**. Existing snippets migrate automatically; update all PCs for sync format 2. [Setup and recovery](Sync).
|
||||||
|
|||||||
+86
@@ -0,0 +1,86 @@
|
|||||||
|
# Синхронізація налаштувань — v0.6.26
|
||||||
|
|
||||||
|
[English](Sync) | **Українська**
|
||||||
|
|
||||||
|
Додано у **v0.6.26**, випущеній **2026-11-02**. Функція експериментальна та вимкнена за замовчуванням.
|
||||||
|
|
||||||
|
## Підключення власного OpenBao
|
||||||
|
|
||||||
|
Кнопка **Settings → Sync…** доступна всім. Адреса сервера й обліковий запис не вбудовані у програму. Потрібен власний OpenBao з KV v2 та користувачем userpass, якого створює адміністратор; самостійної реєстрації у KSwitcher немає.
|
||||||
|
|
||||||
|
Увімкніть **Enable synchronization with your OpenBao (KV v2)** і заповніть:
|
||||||
|
|
||||||
|
| Поле | Значення |
|
||||||
|
| --- | --- |
|
||||||
|
| Server (HTTPS) | Адреса сервера, наприклад `https://bao.example.com`, без додаткового шляху |
|
||||||
|
| Username / Password | Логін і пароль окремого користувача з доступом до профілю |
|
||||||
|
| KV v2 mount | Назва сховища; типово `kswitcher`. Якщо назвали його інакше, вкажіть свою назву |
|
||||||
|
| Profile path | Запис усередині сховища; типово `personal/settings` |
|
||||||
|
| Login mount | Шлях способу входу userpass; типово `userpass` |
|
||||||
|
|
||||||
|
Натисніть **Save / Sign in / Sync**. Ця кнопка одразу зберігає підключення: головні Save/Cancel не керують цим окремим діалогом. Порожнє поле пароля використовує раніше збережений пароль для цієї адреси, способу входу та логіна.
|
||||||
|
|
||||||
|
Підключення зберігається в `sync.json` у папці даних: зазвичай `data/` поруч із EXE, або LocalAppData, якщо папка програми недоступна для запису. Пароль зберігається у Windows Credential Manager та не потрапляє в експорт, журнали чи серверний профіль. Токен входу живе в пам’яті протягом однієї спроби синхронізації; після неї програма намагається відкликати токен. На сервері також задайте обмежений час дії, наприклад початкові 5 і максимальні 10 хвилин.
|
||||||
|
|
||||||
|
Перевірка сертифіката HTTPS обов’язкова, перенаправлення заборонені. Не підтримуються некореневі namespaces, URL-префікси зворотного проксі, MFA-вхід та інші провайдери.
|
||||||
|
|
||||||
|
## Перший і другий ПК
|
||||||
|
|
||||||
|
- На першому ПК **Upload local** створює профіль із поточних збережених налаштувань. Якщо профіль уже існує, ця кнопка замінює його цілком після підтвердження.
|
||||||
|
- На другому ПК вкажіть ті самі параметри профілю та виберіть **Download remote**, щоб прийняти серверні налаштування.
|
||||||
|
- Якщо обидві копії однакові, звичайна Sync встановить початкову спільну копію без заміни.
|
||||||
|
- Для подальшої звичайної синхронізації використовуйте **Save / Sign in / Sync**. Незбережені зміни головного вікна не передаються. Після завантаження закрийте та відкрийте Settings заново; перевірка застарілої копії не дозволяє старому вікну перезаписати нові налаштування.
|
||||||
|
|
||||||
|
Перевірка відбувається під час запуску, кожні **10 хвилин** та приблизно через **2 секунди** після збереження налаштувань, в окремому мережевому потоці. Без мережі програма працює локально. Після помилки автоматичні спроби відкладаються на 15 хвилин; кнопка Sync дозволяє спробувати вручну.
|
||||||
|
|
||||||
|
## Конфлікти та видалення
|
||||||
|
|
||||||
|
Незалежні зміни параметрів об’єднуються за останньою спільною копією. **Resolve individual conflicts…** показує назву параметра та локальне/серверне значення. Виберіть потрібне значення для кожного спірного параметра і натисніть **Apply choices**. Невибрані конфлікти залишаться, а незалежні зміни продовжать синхронізуватися. Перед записом значення перевіряються повторно: застарілий діалог не перезаписує нові зміни іншого ПК.
|
||||||
|
|
||||||
|
Прив’язки гарячих клавіш до кожної розкладки порівнюються окремо. Винятки програм і особисті слова об’єднуються як набори елементів. Упорядковані списки розкладок та мов словників залишаються цілісними параметрами, оскільки порядок впливає на поведінку.
|
||||||
|
|
||||||
|
Сніпети мають сталі ID, що зберігаються після перейменування. Різні сніпети синхронізуються незалежно; зміни тригера й тексту одного сніпета також можуть об’єднуватись. Після видалення залишається запис без автоматичного строку очищення: незмінений офлайн-ПК не поверне сніпет мовчки. Видалення проти одночасного редагування потребує вибору між видаленою та зміненою версією. Однакові тригери або гарячі клавіші, що виникли після об’єднання, також показуються для розв’язання. Новий сніпет, створений у редакторі, отримує новий ID.
|
||||||
|
|
||||||
|
Кожен запис на сервер використовує **CAS** з щойно прочитаною версією, навіть Upload local. Якщо інший ПК встиг записати зміни, перезапис відхиляється. Видалений серверний профіль не відтворюється мовчки. Download/Upload призначені для початкового підключення або свідомого відновлення всього профілю, а не для звичайного розв’язання конфліктів.
|
||||||
|
|
||||||
|
## Що передається
|
||||||
|
|
||||||
|
Синхронізуються гарячі клавіші, сніпети, порядок розкладок, винятки програм, параметри конвертації, скриншотів і автовиправлення, особисті словники. Для **My dictionary** спочатку натисніть **OK**, потім **Save** у головному вікні.
|
||||||
|
|
||||||
|
Локальними залишаються автозапуск та підвищення прав, підтримання активності, журналювання, увімкнення/ліміти історії, шлях та вибір рушія Tesseract, дані підключення й пароль. Історія буфера, знімки та файли словників не передаються. Відсутні розкладки Windows блокують застосування профілю, щоб не втратити прив’язки. Налаштування зберігаються в OpenBao як JSON; це не наскрізне шифрування від адміністратора сховища.
|
||||||
|
|
||||||
|
## Оновлення, відновлення та відключення
|
||||||
|
|
||||||
|
Старі профілі мігруються автоматично: початкові ID сніпетів визначаються однаково з початкового тригера й надалі зберігаються. Запис використовує `syncSchema: 2`. Старі клієнти відмовляються читати цей формат, а не втрачають ID та записи видалення. **Оновіть усі ПК** перед використанням нової поведінки. Серверні профілі версії 1 та старі локальні базові копії підтримуються для міграції.
|
||||||
|
|
||||||
|
`sync-base.bin` містить останню спільну копію, а `settings-before-sync.bin` — налаштування перед останньою завантаженою зміною. Вони захищені Windows DPAPI та прив’язані до облікового запису й комп’ютера. Після перевстановлення Windows підключіться заново та завантажте серверний профіль; копіювання локальних DPAPI-файлів не відновлює їх на іншому ПК.
|
||||||
|
|
||||||
|
Для давнішої версії відновіть її як поточну через історію KV в OpenBao, потім натисніть Download remote. Перегляду серверної історії у програмі поки немає. Зберігайте й звичайні резервні копії сервера.
|
||||||
|
|
||||||
|
**Disconnect / forget password** вимикає синхронізацію та видаляє збережений пароль поточного підключення. Уже надісланий запит може завершитися, але завантажені налаштування не застосуються після зміни підключення. Облікові дані попередніх адрес/логінів можна видалити у Windows Credential Manager, розділ `KSwitcher.Sync/`.
|
||||||
|
|
||||||
|
## Налаштування адміністратора OpenBao
|
||||||
|
|
||||||
|
1. Створіть KV **версії 2** на шляху `kswitcher` або власному. Увімкніть **Require Check-and-Set**, кількість версій задайте, наприклад, **30**.
|
||||||
|
2. Створіть окремого користувача userpass і політику лише для його профілю. Для типових шляхів:
|
||||||
|
|
||||||
|
```hcl
|
||||||
|
path "kswitcher/data/personal/settings" {
|
||||||
|
capabilities = ["create", "read", "update"]
|
||||||
|
}
|
||||||
|
path "auth/token/revoke-self" {
|
||||||
|
capabilities = ["update"]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Призначте політику користувачу, обмежте час дії токенів та введіть його дані у KSwitcher. Не використовуйте адміністраторський акаунт. Сервер і довірений TLS-сертифікат мають бути доступні з кожного ПК.
|
||||||
|
|
||||||
|
## Приклади інтерфейсу
|
||||||
|
|
||||||
|
Справжні діалоги v0.6.26 з демонстраційними даними.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
[Головна](Home-uk) · [Сніпети](Snippets-uk) · [FAQ](FAQ-uk)
|
||||||
+109
@@ -0,0 +1,109 @@
|
|||||||
|
# Settings synchronization — v0.6.26
|
||||||
|
|
||||||
|
**English** | [Українська](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Sync-uk)
|
||||||
|
|
||||||
|
Introduced in **v0.6.26**, released **2026-11-02**.
|
||||||
|
|
||||||
|
The **Sync...** button is available in Settings for everyone. Synchronization remains disabled
|
||||||
|
until you configure your own OpenBao and enable it. Connection configuration is saved separately
|
||||||
|
in `sync.json`. The portable data directory is normally `data/` beside the executable; installations
|
||||||
|
without a writable application directory use the existing local-app-data fallback.
|
||||||
|
No server address or account is included in the application.
|
||||||
|
|
||||||
|
The first provider is **OpenBao KV v2**. The dialog accepts an HTTPS server origin, username,
|
||||||
|
password, KV mount (default `kswitcher`), profile path (default `personal/settings`) and userpass
|
||||||
|
authentication mount (default `userpass`). Use the same profile on each of your PCs. This is
|
||||||
|
administrator-provisioned private access, not public account registration. Non-root namespaces,
|
||||||
|
reverse-proxy URL prefixes, MFA login flows and other providers are not implemented yet.
|
||||||
|
|
||||||
|
Enable synchronization and choose **Save / Sign in / Sync**. The dialog saves connection changes
|
||||||
|
immediately; the main Settings window's Save/Cancel does not control this separate configuration.
|
||||||
|
A blank password keeps the existing Windows credential for that server, login mount and username.
|
||||||
|
The password is saved in Windows Credential Manager, not in settings exports, logs or the remote
|
||||||
|
profile. HTTPS certificate validation is mandatory and redirects are refused. Login tokens are
|
||||||
|
kept in memory for one sync attempt, with best-effort self-revocation afterwards. Configure bounded
|
||||||
|
token lifetimes on the server as well (for example a 5-minute default and 10-minute maximum).
|
||||||
|
**Disconnect / forget password** disables synchronization and removes the current connection's
|
||||||
|
saved credential. A request already sent to the server may still complete; its downloaded settings
|
||||||
|
will not be applied after the connection changes. Old credentials for other connection identities
|
||||||
|
can be removed in Windows Credential Manager under `KSwitcher.Sync/`.
|
||||||
|
|
||||||
|
First connection is deliberately explicit:
|
||||||
|
|
||||||
|
- **Upload local** creates the remote profile or replaces it with this PC's saved shared settings.
|
||||||
|
- **Download remote** replaces this PC's shared settings with the server profile.
|
||||||
|
- If both profiles are identical, ordinary Sync can establish the baseline without a replacement.
|
||||||
|
- Unsaved edits in Settings are not synchronized. Close and reopen Settings after a download;
|
||||||
|
the existing stale-editor check prevents an old Settings window overwriting downloaded changes.
|
||||||
|
|
||||||
|
Once connected, the resident checks at startup, every **10 minutes**, and about two seconds after saving settings, on a separate
|
||||||
|
network thread. Errors back off for 15 minutes; the Sync button allows a manual retry. Local use
|
||||||
|
continues offline. Independent changes to different settings fields are merged against the last
|
||||||
|
successful baseline. **Resolve individual conflicts...** shows the name and local/server values
|
||||||
|
for each conflict. Choose either value for selected settings and apply your choices; unselected
|
||||||
|
conflicts stay pending. Other, nonconflicting changes continue to synchronize. Choices are checked
|
||||||
|
against freshly read values before writing, so a stale dialog cannot overwrite a newer edit.
|
||||||
|
Conflicting shortcuts are separate settings, including bindings for individual keyboard layouts.
|
||||||
|
Exclusions and personal dictionary words merge by membership. Ordered layout/dictionary lists
|
||||||
|
remain single settings because their ordering affects behavior.
|
||||||
|
|
||||||
|
Snippets have persistent IDs that survive renaming. Different snippets merge independently;
|
||||||
|
trigger and text edits within a snippet can merge too. Deleting a snippet retains a deletion
|
||||||
|
marker, so an unchanged offline copy cannot bring it back. Deletion versus a concurrent edit
|
||||||
|
is an explicit conflict, offering the deleted or edited version. Duplicate triggers and shortcut
|
||||||
|
collisions created by independent edits are also presented for resolution. Deletion markers are
|
||||||
|
retained without automatic expiry; recreating a snippet in the editor gives it a new ID.
|
||||||
|
|
||||||
|
Existing profiles migrate automatically: legacy snippet IDs derive deterministically from the
|
||||||
|
original trigger, then are stored permanently. Sync writes use envelope version 2; older clients
|
||||||
|
refuse this version instead of dropping IDs/deletions. Update all participating PCs before using
|
||||||
|
the new merge behavior. Existing version-1 profiles and local baselines remain readable.
|
||||||
|
|
||||||
|
Download/Upload are still available for deliberate whole-profile recovery/initialization, not
|
||||||
|
required for ordinary conflicts. Every server write uses the version just read as a CAS
|
||||||
|
condition, including explicit Upload. A racing write is rejected rather than silently overwritten.
|
||||||
|
Deleted server versions are not silently recreated.
|
||||||
|
|
||||||
|
Hotkeys, snippets, application exclusions, layout order, conversion, screenshot and autocorrection
|
||||||
|
preferences are shared. Startup/elevation, keep-awake, logging, history enablement/limits,
|
||||||
|
Tesseract executable/engine selection, connection details and credentials stay local. Clipboard
|
||||||
|
history, screenshots and dictionary files are never uploaded. Missing keyboard layouts block
|
||||||
|
applying a remote profile until those Windows layouts are installed, preventing lost bindings.
|
||||||
|
Settings are JSON inside OpenBao; this is not end-to-end encryption from the vault administrator.
|
||||||
|
|
||||||
|
The last common profile (`sync-base.bin`) and the settings preceding the most recent downloaded
|
||||||
|
change (`settings-before-sync.bin`) are protected with Windows DPAPI and belong to this Windows
|
||||||
|
account/machine. Reinstallation recovery uses the remote profile and a fresh login; copying these
|
||||||
|
local DPAPI files to a new machine does not recover them. For an older server snapshot, use OpenBao
|
||||||
|
KV version history to restore that snapshot as the latest version, then choose Download remote.
|
||||||
|
The app does not yet provide a server-history browser. Keep ordinary server backups too.
|
||||||
|
|
||||||
|
OpenBao administrator setup:
|
||||||
|
|
||||||
|
1. Enable a KV **version 2** engine at `kswitcher`; enable **Require Check-and-Set** and set
|
||||||
|
maximum versions to a suitable value, such as 30.
|
||||||
|
2. Create a dedicated userpass account, with a policy restricted to the chosen profile. Do not
|
||||||
|
use the administrator account. For the defaults, the application needs only:
|
||||||
|
|
||||||
|
```hcl
|
||||||
|
path "kswitcher/data/personal/settings" {
|
||||||
|
capabilities = ["create", "read", "update"]
|
||||||
|
}
|
||||||
|
path "auth/token/revoke-self" {
|
||||||
|
capabilities = ["update"]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Set bounded token lifetimes on that account/auth mount and enter its credentials in KSwitcher.
|
||||||
|
Keep the server's address and TLS certificate reachable/trusted on each participating PC.
|
||||||
|
|
||||||
|
|
||||||
|
## Interface examples
|
||||||
|
|
||||||
|
Demonstration data only; actual v0.6.26 dialogs.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
[Home](Home) · [Snippets](Snippets) · [FAQ](FAQ)
|
||||||
+6
-1
@@ -53,7 +53,7 @@ Hello, {cursor}!
|
|||||||
Це зручно для привітань, підписів і повторюваних відповідей. Розпізнавання тригерів підтримується між розкладками.
|
Це зручно для привітань, підписів і повторюваних відповідей. Розпізнавання тригерів підтримується між розкладками.
|
||||||
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Приклад: `;run` → `rider .{enter}` (вставлення тексту й натискання Enter).
|
Приклад: `;run` → `rider .{enter}` (вставлення тексту й натискання Enter).
|
||||||
|
|
||||||
@@ -88,3 +88,8 @@ Chrome та Edge тепер використовують виділення з
|
|||||||
## Клавіші редактора скріншотів (v0.6.24)
|
## Клавіші редактора скріншотів (v0.6.24)
|
||||||
|
|
||||||
Трикутник: **G**; трапеція: **B**. **Ctrl++ / Ctrl+- / Ctrl+колесо** змінюють масштаб; **Ctrl+0** скидає його; **перетягування середньою кнопкою** переміщує канвас. **Shift** задає крок повороту фігури 15°. Після автоматичного покращення олівця **Ctrl+Z** повертає початковий штрих. [Посібник редактора](Screenshots-uk).
|
Трикутник: **G**; трапеція: **B**. **Ctrl++ / Ctrl+- / Ctrl+колесо** змінюють масштаб; **Ctrl+0** скидає його; **перетягування середньою кнопкою** переміщує канвас. **Shift** задає крок повороту фігури 15°. Після автоматичного покращення олівця **Ctrl+Z** повертає початковий штрих. [Посібник редактора](Screenshots-uk).
|
||||||
|
|
||||||
|
|
||||||
|
## Синхронізація налаштувань (v0.6.26)
|
||||||
|
|
||||||
|
**Settings → Sync…** доступна всім; увімкніть її після підключення власного OpenBao. **Save / Sign in / Sync** виконує звичайну двосторонню синхронізацію. **Download remote / Upload local** замінюють весь профіль: використовуйте для початкового підключення чи свідомого відновлення. **Resolve individual conflicts…** дозволяє вибрати окремі значення. Автоматичні перевірки працюють під час запуску, кожні 10 хвилин і невдовзі після Save. [Повний посібник](Sync-uk).
|
||||||
|
|||||||
+6
-1
@@ -53,7 +53,7 @@ Hello, {cursor}!
|
|||||||
Use snippets for greetings, signatures and repeated replies. Triggers are recognized across keyboard layouts.
|
Use snippets for greetings, signatures and repeated replies. Triggers are recognized across keyboard layouts.
|
||||||
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Example: `;run` → `rider .{enter}` (insert text and press Enter).
|
Example: `;run` → `rider .{enter}` (insert text and press Enter).
|
||||||
|
|
||||||
@@ -88,3 +88,8 @@ The reported browser-editor failure has not yet been verified live after this ch
|
|||||||
## Screenshot editor shortcuts (v0.6.24)
|
## Screenshot editor shortcuts (v0.6.24)
|
||||||
|
|
||||||
Triangle: **G**; trapezoid: **B**. **Ctrl++ / Ctrl+- / Ctrl+wheel** zoom; **Ctrl+0** resets the view; **middle-button drag** pans. Shape rotation handles support **Shift** for 15-degree steps. After automatic pencil improvement, **Ctrl+Z** restores the original stroke. [Full editor guide](Screenshots).
|
Triangle: **G**; trapezoid: **B**. **Ctrl++ / Ctrl+- / Ctrl+wheel** zoom; **Ctrl+0** resets the view; **middle-button drag** pans. Shape rotation handles support **Shift** for 15-degree steps. After automatic pencil improvement, **Ctrl+Z** restores the original stroke. [Full editor guide](Screenshots).
|
||||||
|
|
||||||
|
|
||||||
|
## Synchronize settings (v0.6.26)
|
||||||
|
|
||||||
|
**Settings → Sync…** is visible to everyone; enable it only after configuring your own OpenBao. **Save / Sign in / Sync** performs ordinary bidirectional synchronization. **Download remote / Upload local** replace an entire profile; use them for initial setup or deliberate recovery. **Resolve individual conflicts…** chooses individual values. Automatic checks run at startup, every 10 minutes and shortly after Save. [Complete guide](Sync).
|
||||||
|
|||||||
+4
@@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
### English
|
### English
|
||||||
|
|
||||||
|
- [Settings synchronization](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Sync)
|
||||||
|
|
||||||
- [Overview](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Home)
|
- [Overview](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Home)
|
||||||
- [Auto-correction and dictionaries](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Auto-correction)
|
- [Auto-correction and dictionaries](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Auto-correction)
|
||||||
- [Snippets](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Snippets)
|
- [Snippets](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Snippets)
|
||||||
@@ -16,6 +18,8 @@
|
|||||||
|
|
||||||
### Українська
|
### Українська
|
||||||
|
|
||||||
|
- [Синхронізація налаштувань](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Sync-uk)
|
||||||
|
|
||||||
- [Огляд](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Home-uk)
|
- [Огляд](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Home-uk)
|
||||||
- [Автовиправлення та словники](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Auto-correction-uk)
|
- [Автовиправлення та словники](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Auto-correction-uk)
|
||||||
- [Сніпети](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Snippets-uk)
|
- [Сніпети](https://gitea.hrynco.com/hrynco/hrynco-kswitcher/wiki/Snippets-uk)
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 158 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 94 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 55 KiB |
Reference in New Issue
Block a user