fix: address coderabbit subtitle follow-ups

This commit is contained in:
2026-05-11 23:48:32 -07:00
parent eff33e2027
commit 27be0e6fd7
7 changed files with 127 additions and 6 deletions
+17
View File
@@ -515,6 +515,23 @@ test('MpvIpcClient playNextSubtitle starts playback from paused state and auto-p
]);
});
test('MpvIpcClient playNextSubtitle starts playback when pause state is unknown', () => {
const commands: unknown[] = [];
const client = new MpvIpcClient('/tmp/mpv.sock', makeDeps());
(client as any).send = (payload: unknown) => {
commands.push(payload);
return true;
};
client.playNextSubtitle();
assert.equal((client as any).pendingPauseAtSubEnd, true);
assert.deepEqual(commands, [
{ command: ['sub-seek', 1] },
{ command: ['set_property', 'pause', false] },
]);
});
test('MpvIpcClient playNextSubtitle still auto-pauses at end while already playing', async () => {
const commands: unknown[] = [];
const client = new MpvIpcClient('/tmp/mpv.sock', makeDeps());
+1 -1
View File
@@ -525,7 +525,7 @@ export class MpvIpcClient implements MpvClient {
this.pendingPauseAtSubEnd = true;
this.pauseAtTime = null;
this.send({ command: ['sub-seek', 1] });
if (this.playbackPaused === true) {
if (this.playbackPaused !== false) {
this.send({ command: ['set_property', 'pause', false] });
}
}
+3 -1
View File
@@ -51,7 +51,9 @@ function showStatsWindow(window: BrowserWindow, options: StatsWindowOptions): vo
promoteStatsWindowLevel(window);
window.show();
placementBounds = syncStatsWindowBounds(window, bounds) ?? placementBounds;
if (!ensureHyprlandWindowFloatingByTitle({ title: STATS_WINDOW_TITLE, bounds: placementBounds })) {
if (
!ensureHyprlandWindowFloatingByTitle({ title: STATS_WINDOW_TITLE, bounds: placementBounds })
) {
placementBounds = syncStatsWindowBounds(window, bounds) ?? placementBounds;
}
window.focus();
@@ -187,6 +187,38 @@ test('splits trailing grammar endings when later segments are standalone words',
);
});
test('keeps preceding reading when standalone grammar ending has empty reading', () => {
const parseResults = [
makeParseItem('scanning-parser', [
[
{ text: '猫', reading: 'ねこ', headword: '猫' },
{ text: 'です', reading: '', headword: 'です' },
],
]),
];
const tokens = selectYomitanParseTokens(parseResults, () => false, 'headword');
assert.deepEqual(
tokens?.map((token) => ({
surface: token.surface,
reading: token.reading,
headword: token.headword,
})),
[
{
surface: '猫',
reading: 'ねこ',
headword: '猫',
},
{
surface: 'です',
reading: '',
headword: 'です',
},
],
);
});
test('splits trailing ja-nai grammar endings from preceding content', () => {
const parseResults = [
makeParseItem('scanning-parser', [
@@ -270,7 +270,7 @@ export function mapYomitanParseResultItemToMergedTokens(
const segmentHeadword = extractYomitanHeadword(segment);
if (isStandaloneGrammarEndingSegment(segment)) {
combinedSurface = combinedSurface.slice(0, -segmentText.length);
if (typeof segment.reading === 'string') {
if (typeof segment.reading === 'string' && segment.reading.length > 0) {
combinedReading = combinedReading.slice(0, -segment.reading.length);
}
flushCombinedToken(segmentStart);