Skip to content

nudl v0.1.1

Latest

Choose a tag to compare

@Coreho Coreho released this 13 Jul 21:16

Correctness release. Two of these were live bugs in v0.1.0, and one of them could lose data.

Download nudl-0.1.1-win64.zip, unzip it anywhere, run nudl.exe. No installer.

SHA-256 of the zip:
483022d53020774517532fff2cdad4e34bd3564487cf57b36ba71bf61ef9cf5a

VirusTotal: 1/64 — one heuristic engine, which is the going rate for an unsigned PyInstaller binary. The hash above is the file that was scanned; check it before you trust it.

Fixed

Undo could overwrite what you had just copied. Undo read the clipboard, decided its cleaned link was still there, and only then wrote the original back. Anything you copied in that gap was destroyed. The write now compares the clipboard's sequence number inside the clipboard lock, so it is refused rather than clobbering you.

Undo threw away your original if the clipboard was busy. You would be told "could not undo" and then be unable to ever try again — the original gone. The failure branch of undo was losing the one thing undo exists to protect.

The clipboard was not thread-safe, and Windows will not make it so. OpenClipboard locks out other processes, but not other threads of the same process — a second thread can open the clipboard mid-session and its close then ends the first thread's session. nudl touches the clipboard from three threads (the message pump, the tray, the toast), so right-clicking the tray while a link was being cleaned could silently drop the clean. Measured at 147 failures in 180 sessions; now zero.

The own-write guard's sequence signal never worked. It read the clipboard's sequence number while the clipboard was still open, and Windows keeps counting through the close — so the guard armed itself with a number that could never match. The "dual-signal" guard has been running on one signal since auto-watch shipped.

OAuth codes and session keys were written to the audit log. nudl deliberately does not strip ?code= from your link (that would break the link), but it was logging it verbatim to a file that lives forever. Values are now masked; the parameter names stay, so the log is still readable.

Assorted: a hotkey of ß crashed with a TypeError instead of a clean error; a dead UI thread could hang nudl on first run before it ever reached the tray; clean() swallowed its own tracebacks, disguising engine bugs as "nothing to clean"; a failed clipboard listener registration left auto-watch dead with a healthy-looking tray icon.

Added

Undo in the tray menu. The toast lasts seconds and the hotkey window is shorter. Miss both and your original was gone, even though nudl still had it. The entry greys out the moment undoing would no longer be safe.

More rules. 26 global tracker keys and 85 provider-specific keys across 16 sites, plus 9 redirect wrappers. See docs/RULES.md for the full list, including what is deliberately absent and why.

Tests

201, up from 153. Thirty of them drive the real Windows clipboard — a real message pump, a real listener, no test doubles. They found two of the bugs above on their first run, after five review passes had read straight past them. A FakeClipboard does what you think Windows does, which is exactly why it never caught either one.