Max Nardit
Beetroot

Beetroot v1.6.6 — The Office Fix

Excel and Word cells were captured as screenshots instead of values. Microsoft Store autostart was silently broken. Image thumbnails ate gigabytes of RAM. v1.6.6 fixes all three, plus a stack of security and reliability work after the big 1.6.5 AI Vision release.

After the big AI Vision release in 1.6.5, this one is a polish pass. No new features. Just a long list of things that needed fixing.

The headline bug: copying cells in Excel, Word, or PowerPoint stored a screenshot of those cells instead of the actual values. Pasting from Beetroot history put an image into your spreadsheet. Embarrassing.

At a glance:

  • Office cells captured as values, not screenshots — Excel, Word, PowerPoint
  • Microsoft Store autostart actually works now — broken for 100% of Store users since launch on 2026-03-30
  • Image thumbnails use ~150–1700× less RAM
  • Repeated and rapid distinct copies no longer dropped
  • Whitespace preserved on copy — code blocks with trailing newlines round-trip correctly
  • Plus 4 security hardenings and a stack of bug fixes

The Office bug

Office apps put three things on the clipboard when you copy cells: a rendered bitmap, the text values, and an HTML table. Beetroot's dispatcher always grabbed the bitmap, so copying cells from Excel stored a screenshot and pasting it back inserted a picture where the values should go.

Now when both bitmap and text are present, text wins. Image-only sources like Snipping Tool, browsers, and Telegram aren't affected.

Microsoft Store autostart

If you installed Beetroot from the Microsoft Store, the "Start with Windows" toggle has been silently broken since the Store version went live on 2026-03-30. The toggle saved your preference, but Windows never started the app on logon.

Fixed in 1.6.6. If you're on the Store version and rely on autostart, update and re-toggle the setting once.

Image thumbnails: gigabytes to megabytes

Beetroot keeps an in-memory cache of recently displayed image thumbnails so the list scrolls smoothly. Up to 1.6.5, that cache stored the full-size base64 of every image: up to 50 MB per entry, capped at 100 entries. Worst case, that's ~5 GB of RAM for thumbnails of clips you'd already moved past.

1.6.6 generates the thumbnails small upfront — 96 px PNGs instead of full-size. The list cache footprint drops to roughly 3 MB. The preview panel still loads the full image when you actually open it.

If you copy a lot of screenshots, this is the one you'll feel.

The throttle was eating real copies

Beetroot used to drop any clipboard event that arrived within a short window of the previous one. The intent was to filter the duplicate events that the OS sometimes fires. The side effect was that three rapid distinct copies became one row in your history.

Now distinct content always saves. Identical content within a 500 ms burst still dedupes, which is what the throttle was actually trying to prevent.

Related: text and image events used to share one throttle, so copying text and immediately taking a screenshot within 300 ms silently dropped the screenshot. Each channel has its own throttle now.

Whitespace preserved on copy

Up to 1.6.5, copies were trimmed before storage to avoid empty entries. Side effect: code blocks with trailing newlines, indented markdown, and anything that depends on outer whitespace didn't round-trip. Pasting from history gave you something subtly different from what you copied.

Content is now stored verbatim. Trade-off: two clips that differ only by outer whitespace become two history entries instead of collapsing into one. Worth it.

Security

  • Paste verifies the foreground window hasn't changed. Beetroot waits a moment between bringing the target window forward and pressing Ctrl+V. If you alt-tab during that window, the keystroke landed in the wrong app — meaning your clipboard could end up pasted somewhere it shouldn't. Paste now falls back to copy-only if the foreground changed.
  • AI vision queue is capped. With a slow or offline AI provider, you could enqueue many large images and run the app out of memory. The queue is now capped at 16 jobs.
  • Image files protected from accidental deletion. A bug elsewhere in the app could have caused a stored image row to point at an arbitrary local file, which would then be deleted on the next history prune. The path is now checked at every step and rejected if it points outside Beetroot's own image folder.
  • Password manager content fails closed. When Beetroot couldn't read the clipboard's format list, it used to assume "no password-manager marker present" and record the entry. If the read silently failed for content from 1Password / KeePass / similar, that content could have been saved to history. Now it skips the entry instead.

Settings save failures now surface

If your browser storage was full or otherwise rejected the write, Settings used to close cleanly and you'd assume your changes were saved — until the next launch, when they weren't. Settings now stay open with an error toast if the save fails.

Same problem elsewhere: destructive actions like delete and pin used to swallow database errors and show a success toast anyway. Now the error toast appears and the success toast doesn't.

Other fixes worth mentioning

  • Plain-text hotkey paste wasn't capturing the target window correctly, so Ctrl+V could be skipped — turning the paste silently into a copy-only.
  • Custom accent colors with bright values like yellow rendered near-white text on near-white background. Now picks the more readable contrast against white or near-black, regardless of theme.
  • Preview Copy used to create a duplicate history row because the clipboard monitor saw the resulting event as a fresh user copy.
  • Pending preview note edits could save to the wrong item if you typed a note then immediately switched to another preview.
  • "Check for updates" masked all network errors as "you're up to date." Real failures (404, DNS, proxy) now surface the actual error.
  • Type badges in the preview panel ("Image", "Email", "Color", "Text") were hardcoded English. Now translated across all 26 languages.
  • AI prompt submission failures closed the menu silently. Now show an error toast.

How to update

Beetroot will offer to update automatically. Or download v1.6.6 from GitHub.

Discussion

No comment section here — all discussions happen on X.

Max Nardit

Max Nardit

@mnardit

More articles