From c150fce782f479c175c68f8958d2a5ce6ea60143 Mon Sep 17 00:00:00 2001 From: sudacode Date: Sun, 26 Apr 2026 19:34:31 -0700 Subject: [PATCH] fix: address fullscreen and n-plus-one review notes --- src/main.ts | 2 +- src/token-merger.ts | 5 ++++- src/window-trackers/hyprland-tracker.ts | 8 ++++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main.ts b/src/main.ts index 04f9869f..61a4e63f 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1955,7 +1955,7 @@ function refreshLinuxVisibleOverlayAfterMpvFullscreenChange(): void { } mainWindow.hide(); - mainWindow.show(); + mainWindow.showInactive(); ensureOverlayWindowLevel(mainWindow); } diff --git a/src/token-merger.ts b/src/token-merger.ts index 948eb322..f7037ac1 100644 --- a/src/token-merger.ts +++ b/src/token-merger.ts @@ -394,6 +394,9 @@ export function markNPlusOneTargets( return []; } + const normalizedSourceText = + typeof sourceText === 'string' ? sourceText.replace(/\r?\n/g, ' ').trim() : undefined; + const markedTokens = tokens.map((token) => ({ ...token, isNPlusOneTarget: false, @@ -431,7 +434,7 @@ export function markNPlusOneTargets( for (let i = 0; i < markedTokens.length; i++) { const token = markedTokens[i]; if (!token) continue; - if (hasSentenceBoundaryInSourceGap(sourceText, previousTokenEnd, token.startPos)) { + if (hasSentenceBoundaryInSourceGap(normalizedSourceText, previousTokenEnd, token.startPos)) { markSentence(sentenceStart, i); sentenceStart = i; } diff --git a/src/window-trackers/hyprland-tracker.ts b/src/window-trackers/hyprland-tracker.ts index 196e49e3..4c86e889 100644 --- a/src/window-trackers/hyprland-tracker.ts +++ b/src/window-trackers/hyprland-tracker.ts @@ -353,8 +353,12 @@ export class HyprlandWindowTracker extends BaseWindowTracker { return null; } - const output = execSync('hyprctl -j monitors', { encoding: 'utf-8' }); - return parseHyprctlMonitors(output); + try { + const output = execSync('hyprctl -j monitors', { encoding: 'utf-8' }); + return parseHyprctlMonitors(output); + } catch { + return null; + } } private getWindowCommandLine(pid: number): string | null {