Release v0.6.37: isolate image capture and OCR, fingerprint history duplicates

This commit is contained in:
2026-11-04 16:58:34 +02:00
parent 94cab4c112
commit 30e70192dc
15 changed files with 449 additions and 37 deletions
Binary file not shown.
+8 -8
View File
@@ -1,17 +1,17 @@
# Latest Windows release
## v0.6.36 — 2026-11-04
## v0.6.37 — 2026-11-04
## Changes
- Notification registration now runs in the existing KSwitcher.Screenshot.exe helper. Startup launches it asynchronously and checks its exit status without blocking keyboard work; update notification registration waits in its background worker. Keep all three executables together. UI Automation and notification activation routes remain unchanged.
- Viber paste now allows 75 ms for clipboard notifications to settle before sending Ctrl+V, then rechecks input, focus and clipboard ownership. This mitigates a suspected clipboard timing race: an intermittent corrupted Cyrillic paste was reproduced on the prior build. It is not a guarantee that every Viber timing issue is resolved; no blind paste retries or relaxed selection checks were added.
- Added regression coverage for an explicitly selected middle range followed by a repeated shortcut without selection, preserving surrounding text, trailing spaces and the original clipboard. Updated the integration fixture to initialize shared predictor dictionaries.
- Added reproducible standalone COM, UI Automation and Shell memory measurement tools. No shortcuts, settings or defaults changed.
- Image clipboard history capture runs in KSwitcher.Screenshot.exe, so Windows clipboard image allocations are released when the helper exits. The configured size limit, privacy exclusions and original clipboard formats are preserved.
- Automatic and uncached manual history OCR run in the same helper executable, in a separate short-lived process. Only encrypted requests and recognized text cross the process boundary. Windows OCR and optional Tesseract remain supported; profile changes and shutdown cancel background work, and deleted entries are not recreated by late results.
- Consecutive duplicate detection uses SHA-256 fingerprints stored inside the encrypted index. Exact payloads, image representations and decoded pixels can be compared without loading the previous record. Old entries acquire fingerprints on first comparison; pins and cached OCR are preserved. This does not introduce global deduplication.
- Copying text after an image no longer loads the previous image just to rule out a duplicate. Settings, shortcuts and defaults are unchanged. Keep all three executables together.
## Validation
Full staged build and tests cover dictionary equivalence for all 140,939 words, 105 sync checks, wheel batching, 304 native checks, 559 input checks, screenshot UI/PNG/registration, 48 updater checks and updater progress UI. Conversion integration passed 43 assertions. Eight actual Viber conversions passed on the development build, including two complete long-text layout cycles and selected/repeated middle-word conversion; test messages were not sent.
Staged build: dictionary equivalence for 140,939 words, 105 sync checks, wheel batching, 313 native checks, 559 input checks, screenshot UI/PNG/notification registration, 48 updater checks and updater progress UI. Windows OCR tests cover helper equivalence, cancellation, failure, encrypted temporary-file cleanup, persisted background search and unchanged clipboard. Optional Tesseract and clipboard-capture integration are also verified.
A controlled fresh-launch before/after comparison (five private-working-set samples each, same installation and settings) measured 4.69 → 4.18 MiB, about 0.51 MiB saved. This is one local comparison, not a fixed memory limit or a long-term idle guarantee. The prior compact dictionaries and cache/idle memory reductions remain included.
Three controlled OCR comparisons used the same image and settings: retained private working set in the isolated test process fell by about 0.8 MiB. Combined parent/helper peak RAM did not fall (about 55.6 versus 56.6 MiB); the large peak is now outside the resident process and disappears when the helper exits. A separate live screenshot test finished at 4.41 MiB private working set in the main application. These observations are not fixed memory limits or guarantees for another machine/workload.
## 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.
@@ -19,4 +19,4 @@ For manual installation, exit KSwitcher, close screenshot editors and extract th
Download **KSwitcher-win-x64.zip** with **SHA256SUMS.txt**. Keep all three executables together. The package contains no personal settings, credentials or clipboard history.
Publish stable `release-vX.Y.Z` tags matching the executable version. Keep `v0.4.2` as the last legacy tag.
Publish stable `release-vX.Y.Z` tags matching the executable version. Keep `v0.4.2` as the last legacy tag.
+1 -1
View File
@@ -1 +1 @@
794d74113bddf13ffee7317cadee9c472bca3b84b3361796db58ff8023f66571 KSwitcher-win-x64.zip
c5cfe4c21a8e0631470120dd30be54e5d395abf9ca3bd4069f8bd2c827f2105d KSwitcher-win-x64.zip