mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-07-27 16:49:51 -07:00
bc8dce870b
Color known-word subtitle highlights by Anki card maturity (new, learning, young, mature) like asbplayer (#171). Notes are classified server-side with Anki search filters (prop:ivl, is:learn) during the known-word cache refresh, so no per-card data is fetched. A word's tier is its most mature matching card/note, with the same reading-aware matching as boolean known-word lookups. - known-word cache v4 state persists per-note tiers; lifecycle key only gains the maturity field while enabled so existing caches survive - ankiConnect.knownWords.maturityEnabled + matureThresholdDays (21) - subtitleStyle.knownWordMaturityColors with catppuccin defaults - word-maturity-<tier> class rides on word-known so hover/selection rules keep applying; falls back to knownWordColor without tier data - runtime toggle subtitle.annotation.knownWords.maturityEnabled
34 lines
906 B
TypeScript
34 lines
906 B
TypeScript
export type RuntimeOptionId =
|
|
| 'anki.autoUpdateNewCards'
|
|
| 'subtitle.annotation.knownWords.highlightEnabled'
|
|
| 'subtitle.annotation.knownWords.maturityEnabled'
|
|
| 'subtitle.annotation.nPlusOne'
|
|
| 'subtitle.annotation.jlpt'
|
|
| 'subtitle.annotation.frequency'
|
|
| 'anki.kikuFieldGrouping'
|
|
| 'anki.nPlusOneMatchMode';
|
|
|
|
export type RuntimeOptionScope = 'ankiConnect' | 'subtitle';
|
|
|
|
export type RuntimeOptionValueType = 'boolean' | 'enum';
|
|
|
|
export type RuntimeOptionValue = boolean | string;
|
|
|
|
export interface RuntimeOptionState {
|
|
id: RuntimeOptionId;
|
|
label: string;
|
|
scope: RuntimeOptionScope;
|
|
valueType: RuntimeOptionValueType;
|
|
value: RuntimeOptionValue;
|
|
allowedValues: RuntimeOptionValue[];
|
|
requiresRestart: boolean;
|
|
}
|
|
|
|
export interface RuntimeOptionApplyResult {
|
|
ok: boolean;
|
|
option?: RuntimeOptionState;
|
|
osdMessage?: string;
|
|
requiresRestart?: boolean;
|
|
error?: string;
|
|
}
|