Restore multi-copy digit capture and add AniList selection (#56)

This commit is contained in:
2026-04-25 21:44:55 -07:00
committed by GitHub
parent 7ac51cd5e9
commit d8934647a9
140 changed files with 4097 additions and 326 deletions

View File

@@ -87,6 +87,7 @@ export interface ShortcutsConfig {
multiCopyTimeoutMs?: number;
toggleSecondarySub?: string | null;
markAudioCard?: string | null;
openCharacterDictionary?: string | null;
openRuntimeOptions?: string | null;
openJimaku?: string | null;
openSessionHelp?: string | null;

View File

@@ -341,6 +341,27 @@ export interface SessionActionDispatchRequest {
export type ResolvedControllerConfig = ResolvedConfig['controller'];
export interface CharacterDictionaryCandidate {
id: number;
title: string;
episodes: number | null;
}
export interface CharacterDictionarySelectionSnapshot {
seriesKey: string;
guessTitle: string | null;
current: CharacterDictionaryCandidate | null;
override: CharacterDictionaryCandidate | null;
candidates: CharacterDictionaryCandidate[];
}
export interface CharacterDictionarySelectionResult {
ok: boolean;
seriesKey: string;
selected: CharacterDictionaryCandidate;
staleMediaIds: number[];
}
export interface ElectronAPI {
getOverlayLayer: () => 'visible' | 'modal' | null;
onSubtitle: (callback: (data: SubtitleData) => void) => void;
@@ -410,7 +431,9 @@ export interface ElectronAPI {
onOpenJimaku: (callback: () => void) => void;
onOpenYoutubeTrackPicker: (callback: (payload: YoutubePickerOpenPayload) => void) => void;
onOpenPlaylistBrowser: (callback: () => void) => void;
onOpenCharacterDictionary: (callback: () => void) => void;
onSubtitleSidebarToggle: (callback: () => void) => void;
onPrimarySubtitleBarToggle: (callback: () => void) => void;
onCancelYoutubeTrackPicker: (callback: () => void) => void;
onKeyboardModeToggleRequested: (callback: () => void) => void;
onLookupWindowToggleRequested: (callback: () => void) => void;
@@ -426,6 +449,8 @@ export interface ElectronAPI {
youtubePickerResolve: (
request: YoutubePickerResolveRequest,
) => Promise<YoutubePickerResolveResult>;
getCharacterDictionarySelection: () => Promise<CharacterDictionarySelectionSnapshot>;
setCharacterDictionarySelection: (mediaId: number) => Promise<CharacterDictionarySelectionResult>;
notifyOverlayModalClosed: (
modal:
| 'runtime-options'
@@ -437,7 +462,8 @@ export interface ElectronAPI {
| 'controller-select'
| 'controller-debug'
| 'subtitle-sidebar'
| 'session-help',
| 'session-help'
| 'character-dictionary',
) => void;
notifyOverlayModalOpened: (
modal:
@@ -450,7 +476,8 @@ export interface ElectronAPI {
| 'controller-select'
| 'controller-debug'
| 'subtitle-sidebar'
| 'session-help',
| 'session-help'
| 'character-dictionary',
) => void;
reportOverlayContentBounds: (measurement: OverlayContentMeasurement) => void;
onConfigHotReload: (callback: (payload: ConfigHotReloadPayload) => void) => void;

View File

@@ -15,6 +15,7 @@ export type SessionActionId =
| 'markAudioCard'
| 'openRuntimeOptions'
| 'openSessionHelp'
| 'openCharacterDictionary'
| 'openControllerSelect'
| 'openControllerDebug'
| 'openJimaku'