Skip to content

v2.29.0

Choose a tag to compare

@haxllo haxllo released this 20 Oct 17:35
· 23 commits to master since this release

One press, every scale

The Win key now behaves like a system key again: one press opens the panel, a second closes it, and chords stay chords. Start never opens behind the panel, Win+E opens Explorer once, and Win+Shift+S still reaches the Snipping Tool. The glass is drawn at the size it actually occupies on scaled displays, screenshots work again in the opaque modes, and deleted files stop showing up in search.

What changed

  • The first press after launch opens the panel. The elevated helper and the in-app hotkey path were both acting on the same physical press; on a cold start the helper's copy arrived late enough to hide what the other path had just shown. A press now has one owner, so open-then-close on a single tap cannot happen at any timing.
  • Chords stay chords. Holding Win and typing E, or Shift+S, no longer turns into a bare Win press when the key comes up. The press keeps its identity until the real release, so Win+E opens Explorer and nothing else, and Win+Shift+S reaches the Snipping Tool even with the panel focused.
  • Start stays shut. Before each bare-Win toggle nex now sends a key-up that belongs to no key. Windows stops waiting for a Start gesture as soon as another key event closes the press, so the menu cannot open behind the panel. The held menu-mask key stays as the second guard.
  • System hotkeys are no longer swallowed. The raw input sink had been registered with RIDEV_NOHOTKEYS, which suppresses every registered system hotkey while nex is running. That flag is gone, so Win+Shift+S and friends behave the same with or without nex.
  • Glass is drawn at the right size on scaled displays. At 125% and 150% the visual was scaled a second time, so page content spilled past the right and bottom of the glass. It is composed in device pixels now and maps 1:1 at every scale.
  • Screenshots capture the opaque modes again. Capture exclusion used to be set unconditionally, which hid the whole app from PrintScreen, OBS and Discord even in Black and White. Exclusion follows the material now: it applies only while the glass actually paints.
  • Search stops returning deleted files. A failed Tantivy sync could leave a half-committed deletion batch answering queries. The index is dropped when a sync fails and the store-backed cache answers instead; the next rebuild reindexes from scratch.
  • The chat attach button is a paperclip. It used a plus, which read as "new" next to the New conversation plus.

Notes

  • Start suppression only shows up with a real keyboard; injected input skips the guards by design. This release was checked with real presses.
  • The glass panel stays out of screen captures while it is painting, because its own duplication feed would otherwise contain its previous frame. Opaque panels are captured normally.
  • 125% and 150% scaling were checked on the glass. Placement still follows Windows, so the panel opens on the monitor under the cursor in mixed-DPI setups.

Commit Log

  • f2e48ec fix(hotkey): let the elevated helper own the press when it is live
  • e8d5310 Merge branch 'master' into fix/glass-physical-composition
  • cd0d29f fix(hotkey): clear the focus-escape guard when a press ends as a chord
  • c6c6908 fix(hotkey): invalidate the Start gesture on every bare Win toggle
  • 97c8de5 fix(helper): keep a chord a chord for the whole Win press
  • 71a816c fix(hotkey): track the Win press once for every detector
  • e32a722 fix(hotkey): drop RIDEV_NOHOTKEYS from the raw input sink
  • b7ef89a fix(glass): compose the glass visual in device pixels
  • f60a113 Merge branch 'fix/glass-capture-visibility'
  • b1bfb4d fix(overlay): tie capture exclusion to the panel material
  • 0a89c7f merge: full-frame glass perf probe
  • 3789e59 perf(glass): full-frame probe, CPU submission vs GPU completion
  • f7ab318 ui: paperclip icon for the chat attach button
  • 9d9520f fix(search): never serve index entries the store has dropped