@@ -4,6 +4,56 @@ All notable changes to PolterType are recorded here. The format is
44loosely based on [ Keep a Changelog] ( https://keepachangelog.com/en/1.1.0/ ) ,
55and the project follows [ Semantic Versioning] ( https://semver.org/ ) .
66
7+ ## [ 0.33.2] — an idle keyboard costs nothing, a broken line costs a line
8+
9+ ### Fixed
10+
11+ - ** The Linux listener no longer wakes five hundred times a second to
12+ ask an idle keyboard whether anything happened**
13+ ([ #63 ] ( https://github.com/Just-Code-NET/PolterType/issues/63 ) ). Both
14+ loops ran on a 2 ms timer: the evdev one polled every open device and
15+ slept, the X11 one did the same on its connection. Measured on the
16+ 0.33.1 AppImage with the engine paused and nothing typed, that was
17+ 0.55 % of a core and 502 context switches a second, all of it in the
18+ ` poltertype-input ` thread. Both now wait on the descriptors
19+ themselves with ` poll(2) ` ; the same measurement reads 0.05 % and 38.
20+ On a laptop the bill was never really the half percent — it was the
21+ idle states the CPU could not reach.
22+
23+ Nothing about correction timing was traded away for it. The key gate,
24+ which holds your keystrokes back while a correction is on the wire,
25+ now wakes the thread through an ` eventfd ` the instant it is asked
26+ rather than waiting out a poll round, so a hold is taken sooner than
27+ before. The Caps Lock latch is read on the way * into* the loop
28+ instead of on the way out, so a lock toggled by something that sends
29+ no key event — KDE InputActions, ` xdotool key Caps_Lock ` , an
30+ on-screen keyboard — is still reconciled before the first word it
31+ would otherwise have mis-cased.
32+
33+ - ** A translation that will not load can now say why**
34+ ([ #64 ] ( https://github.com/Just-Code-NET/PolterType/issues/64 ) ). One
35+ line the TOML parser refuses used to cost the whole catalog, and the
36+ interface simply came up in English: the file was right there, the
37+ app said nothing, and the only account of what happened was a log
38+ line a translator has no reason to read. The commonest way to write
39+ such a line is a Windows path — ` "C:\path" ` is not a valid escape,
40+ ` "C:\\path" ` is. A file that will not parse whole is now read a
41+ line at a time: the line that is wrong is dropped, everything else
42+ loads, and the Settings window names the file and the line under the
43+ language picker. A language that was asked for and produced no
44+ catalog at all says that in the same place.
45+
46+ A second road to the same silence is closed with it. The Settings
47+ window skipped loading translations altogether when it could not
48+ locate the directory PolterType keeps its own catalogs in — taking
49+ the user's own catalog, which lives somewhere else entirely and is
50+ the whole translation for every language we do not ship, down with
51+ something it had nothing to do with.
52+
53+ Entries left empty are still exactly what the format says they are —
54+ "not translated yet" — and are not reported as anything: a catalog
55+ being filled in a line at a time is a normal catalog.
56+
757## [ 0.33.1] — the same program, from a commit that builds clean
858
959### Fixed
0 commit comments