Release v0.6.49: Viber chat language profiles with local OCR
This commit is contained in:
1 parent
4e7a683c47
commit
178573233b
15 files changed
+181
-63
No files matched your search
Binary file not shown.
+8
-8
@@ -1,22 +1,22 @@
|
||||
# Latest Windows release
|
||||
|
||||
## v0.6.48 — 2026-11-05
|
||||
## v0.6.49 — 2026-11-05
|
||||
|
||||
## Changes
|
||||
- Add manually configured language subsets for Telegram Desktop and Microsoft Teams chats. Open **Settings → Languages → Languages for a chat...**, choose a chat and one or more languages, then **Use languages → Save**.
|
||||
- Apply the matching profile to **Alt+Shift**, **Win+Space**, reverse **Win+Shift+Space**, and KSwitcher's **Next layout** conversion. Explicit shortcut bindings take precedence. Without a matching profile, normal Windows behavior and the global KSwitcher cycle remain available. Direct layout shortcuts retain their targets.
|
||||
- Match the application and visible chat name; ignore Telegram unread badges. Same-name chats share a profile, renamed chats need a new one, and Teams currently supports `Chat | name | Microsoft Teams` desktop titles. Profiles are local, included in manual export/import and excluded from OpenBao sync. Viber is not included.
|
||||
- Organize Settings into **General, Languages, Shortcuts, Clipboard and Tools** tabs. Remove overlapping controls, reduce the window height and preserve drafts across tabs. Save, Cancel, Import and Export remain available on every tab; existing preferences and shortcut defaults are preserved.
|
||||
- Rename the tray **Utilities** menu to **Tools**. Keep bundled StayHere and the v0.6.47 multi-word replacement behavior.
|
||||
- Add experimental Viber chat language profiles using local OCR of the chat header. Requires a separate Tesseract 5 installation and the language packs selected in OCR options; Tesseract is not bundled.
|
||||
- Open a non-minimized Viber chat, then **Settings → Languages → Languages for a chat...**. Select its Viber entry, choose languages, and click **Use languages → Save**.
|
||||
- Apply the profile to **Alt+Shift**, **Win+Space**, reverse **Win+Shift+Space**, and KSwitcher's **Next layout** conversion. Allow about 1–2 seconds after switching chats. OCR runs outside the keyboard hook; the header is checked again before a profile-based system switch.
|
||||
- Match by application and recognized name. Identical names share a profile; renamed chats need a new profile. Unreadable or changing headers produce no match. OCR errors, truncated names, scaling and future Viber UI changes can affect recognition. Telegram and Teams profiles retain their existing behavior.
|
||||
- Recognition is local: only the cropped header is passed to OCR, screenshots are not saved, and no message text is submitted to OCR. Profiles remain local, are included in manual export/import, and excluded from OpenBao synchronization.
|
||||
|
||||
## Validation
|
||||
Passed 653 chat-profile/UI checks (including visible-control overlap checks on all five tabs), 332 native checks, 564 input checks, 105 sync checks, complete dictionary equivalence (140,939 words), shared wheel regressions, isolated StayHere lifecycle and Utilities checks, screenshot UI/save/registration checks, 54 updater checks and updater progress UI checks. Development visual checks covered the five tabs at 250% scaling; the release fixture also passed at 100%. Release binary versions, archive contents, manifest hashes and published downloads are verified as part of publication.
|
||||
Passed 653 chat-profile/UI checks (including Viber profile persistence), 332 native checks, 564 input checks, 105 sync checks, complete dictionary equivalence (140,939 words), wheel, StayHere, Utilities, screenshot UI/save/registration, 54 updater checks and updater progress checks. Live Viber header recognition correctly identified a Ukrainian contact; the user confirmed the development integration works. Release binaries, archive, manifest and published downloads are checked during publication.
|
||||
|
||||
## Upgrade
|
||||
Choose **Update** in the tray menu. Legacy v0.3.0–v0.4.1 clients first receive the v0.4.2 compatibility bridge, then the current full release. v0.2.3 and earlier require manual installation.
|
||||
For manual installation, exit KSwitcher, close its configurator and screenshot editors, and extract the entire ZIP into its installation folder. Keep personal `data/`, customized dictionaries and your own tools. Keep the three KSwitcher executables together; StayHere runs independently.
|
||||
|
||||
When synchronizing phrase replacements across PCs, update each participating PC to v0.6.47 or newer: older versions reject spaces in replacement pairs. Chat language profiles do not synchronize.
|
||||
When synchronizing phrase replacements across PCs, update each participating PC to v0.6.47 or newer. Chat language profiles do not synchronize. A settings file containing Viber profiles requires v0.6.49 or newer; retain a backup before downgrading.
|
||||
|
||||
Download **KSwitcher-win-x64.zip** with **SHA256SUMS.txt**. The package contains no personal settings, credentials or clipboard history.
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
8c6cd9d5f531e5492ef320f1861ba5e84b5631fa7bac42aa97b2c006fe0abc7c KSwitcher-win-x64.zip
|
||||
3c99e7d6b7f3ea059bf9cbff2266eb89f7cbba32287b7ce52a3ac65596131962 KSwitcher-win-x64.zip
|
||||
+33
-33
@@ -1,81 +1,81 @@
|
||||
{
|
||||
"version": "0.6.48",
|
||||
"version": "0.6.49",
|
||||
"schema": 1,
|
||||
"files": [
|
||||
{
|
||||
"sha256": "386b85b62ada4cfea1bd379246e91a3b4976dc37e7e625483821724b58ca4bd5",
|
||||
"size": 1841152,
|
||||
"path": "KSwitcher.exe",
|
||||
"size": 1833984
|
||||
"sha256": "e64518d5224055c4bf09df0e32493ecfe50a1d225436117e56d102cddd7506e0"
|
||||
},
|
||||
{
|
||||
"sha256": "b47864f6dc7653af9b882403a0316fa48ab258d7ee667715a70d4511ca6d1abd",
|
||||
"size": 1704960,
|
||||
"path": "KSwitcher.Config.exe",
|
||||
"size": 1697792
|
||||
"sha256": "c3cb3163c9bd4683362154ec2be1d3fb95e72df879a18b356ad89d37bfdd444f"
|
||||
},
|
||||
{
|
||||
"sha256": "1dce2939a245370d09ef9e80202027a5b88b9f7e6aac0314dd1b5a62e53c4363",
|
||||
"size": 2892800,
|
||||
"path": "KSwitcher.Screenshot.exe",
|
||||
"size": 2885120
|
||||
"sha256": "4785c3cfb4b3ee9783703040237a000a387569100828d239615039fd417f1855"
|
||||
},
|
||||
{
|
||||
"sha256": "d3c81140cce01c26bf6cbf52aa40e0825e1fa35b9a91d1387170a65d2597082c",
|
||||
"size": 4401,
|
||||
"path": "LICENSE",
|
||||
"size": 4401
|
||||
"sha256": "d3c81140cce01c26bf6cbf52aa40e0825e1fa35b9a91d1387170a65d2597082c"
|
||||
},
|
||||
{
|
||||
"sha256": "61e08da79c44061654015ce6b0c4061c23ee1dd18237fbf09e9bfda3c0ea2831",
|
||||
"size": 1096,
|
||||
"path": "json-LICENSE.txt",
|
||||
"size": 1096
|
||||
"sha256": "61e08da79c44061654015ce6b0c4061c23ee1dd18237fbf09e9bfda3c0ea2831"
|
||||
},
|
||||
{
|
||||
"sha256": "a3266c023b5705ad1d14506cc39cc6548d20531878c17804a659cabbb7bbf56b",
|
||||
"size": 69715,
|
||||
"path": "README.md",
|
||||
"size": 68424
|
||||
"sha256": "2ac72789dc57c42303859956eb3f2a31b69bc5eea06e71ccf0588d6f08135948"
|
||||
},
|
||||
{
|
||||
"sha256": "d0c022b27b9fbc2ff7b6b8bec723cc1adc4eef517202f9ff77eed5d8bea3acb9",
|
||||
"size": 732485,
|
||||
"path": "dictionaries/en.txt",
|
||||
"size": 732485
|
||||
"sha256": "d0c022b27b9fbc2ff7b6b8bec723cc1adc4eef517202f9ff77eed5d8bea3acb9"
|
||||
},
|
||||
{
|
||||
"sha256": "0bdfb0201d1803634f268cdff0993b8349d2c70e956a06dbb667c8dd65254ec5",
|
||||
"size": 20566,
|
||||
"path": "dictionaries/LICENSE-CC-BY-SA-4.0.txt",
|
||||
"size": 20566
|
||||
"sha256": "0bdfb0201d1803634f268cdff0993b8349d2c70e956a06dbb667c8dd65254ec5"
|
||||
},
|
||||
{
|
||||
"sha256": "3017bf44d3be9d9dfab21bd6778aa52b7947e61acf9ce2bc86b41d6e949ac311",
|
||||
"size": 2265,
|
||||
"path": "dictionaries/README.md",
|
||||
"size": 2265
|
||||
"sha256": "3017bf44d3be9d9dfab21bd6778aa52b7947e61acf9ce2bc86b41d6e949ac311"
|
||||
},
|
||||
{
|
||||
"sha256": "80e6b6a27815973535f7facb636c597eb845dfee45cfabfc4e9b3341b9332849",
|
||||
"size": 1109134,
|
||||
"path": "dictionaries/ru.txt",
|
||||
"size": 1109134
|
||||
"sha256": "80e6b6a27815973535f7facb636c597eb845dfee45cfabfc4e9b3341b9332849"
|
||||
},
|
||||
{
|
||||
"sha256": "98e5b3fe7304e37705c9e5ff48b0b399ccb16e806736d21f09921b99e5f2a408",
|
||||
"size": 1280,
|
||||
"path": "dictionaries/sources.json",
|
||||
"size": 1280
|
||||
"sha256": "98e5b3fe7304e37705c9e5ff48b0b399ccb16e806736d21f09921b99e5f2a408"
|
||||
},
|
||||
{
|
||||
"sha256": "d30e990d6ec2983c04f3644a3c61c6c668e8c542323f5931916fdd55b916eebf",
|
||||
"size": 940799,
|
||||
"path": "dictionaries/uk.txt",
|
||||
"size": 940799
|
||||
"sha256": "d30e990d6ec2983c04f3644a3c61c6c668e8c542323f5931916fdd55b916eebf"
|
||||
},
|
||||
{
|
||||
"sha256": "a34b5161a8315af037e1ec71d816bfc688f7c364141d4ee2347cf0515ef0c82a",
|
||||
"size": 993,
|
||||
"path": "tools/README.txt",
|
||||
"size": 993
|
||||
"sha256": "a34b5161a8315af037e1ec71d816bfc688f7c364141d4ee2347cf0515ef0c82a"
|
||||
},
|
||||
{
|
||||
"sha256": "6ef5cf64708d62b7fc63c3c793cc99188a513433ff4774cae01dc014f6664376",
|
||||
"size": 134656,
|
||||
"path": "tools/StayHere.exe",
|
||||
"size": 134656
|
||||
"sha256": "6ef5cf64708d62b7fc63c3c793cc99188a513433ff4774cae01dc014f6664376"
|
||||
},
|
||||
{
|
||||
"sha256": "ba214e2aca7405e698b3ab21ceb1f41ce088edd996b3e30e4a9d58ff496f9413",
|
||||
"size": 2796,
|
||||
"path": "tools/StayHere-README.md",
|
||||
"size": 2796
|
||||
"sha256": "ba214e2aca7405e698b3ab21ceb1f41ce088edd996b3e30e4a9d58ff496f9413"
|
||||
}
|
||||
],
|
||||
"schema": 1
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user