feat: integrate n+1 target highlighting

- Merge feature branch changes for n+1 target-only highlight flow

- Extend merged token model and token-merger to mark exactly-one unknown targets

- Thread n+1 candidate metadata through tokenizer and config systems

- Update subtitle renderer/state to route configured colors and new token class

- Resolve merge conflicts in core service tests, including subtitle and subsync behavior
This commit is contained in:
2026-02-15 02:36:48 -08:00
parent 88099e2ffa
commit 3a27c026b6
16 changed files with 494 additions and 66 deletions

View File

@@ -48,8 +48,11 @@ export interface MergedToken {
startPos: number;
endPos: number;
partOfSpeech: PartOfSpeech;
pos2?: string;
pos3?: string;
isMerged: boolean;
isKnown: boolean;
isNPlusOneTarget: boolean;
}
export interface WindowGeometry {
@@ -230,6 +233,8 @@ export interface AnkiConnectConfig {
refreshMinutes?: number;
matchMode?: NPlusOneMatchMode;
decks?: string[];
nPlusOne?: string;
knownWord?: string;
};
behavior?: {
overwriteAudio?: boolean;
@@ -263,6 +268,8 @@ export interface SubtitleStyleConfig {
fontWeight?: string;
fontStyle?: string;
backgroundColor?: string;
nPlusOneColor?: string;
knownWordColor?: string;
secondary?: {
fontFamily?: string;
fontSize?: number;
@@ -378,6 +385,8 @@ export interface ResolvedConfig {
refreshMinutes: number;
matchMode: NPlusOneMatchMode;
decks: string[];
nPlusOne: string;
knownWord: string;
};
behavior: {
overwriteAudio: boolean;