Generated from
src/main/ipc/channels.tsand handler registrations. For usage patterns (React Query, security narrative, bridge overview), see API Guide.
| Channel | Token | Args (Zod) | Idempotent | Handler | Notes |
|---|---|---|---|---|---|
api:search-remote-tags |
API.SEARCH_REMOTE |
z.tuple([ z.string().trim().min(2), z.enum(["rule34", "gelbooru"]).optional(), ]) |
no | ArtistsController |
src/main/ipc/controllers/ArtistsController.ts |
app:check-for-updates |
APP.CHECK_FOR_UPDATES |
[] (no args) |
no | updater-service |
src/main/services/updater-service.ts |
app:download-file |
APP.DOWNLOAD_FILE |
— | — | — | No handle registration found (event channel or registered outside scanned paths). |
app:get-db-location |
APP.GET_DB_LOCATION |
[] (no args) |
no | SystemController |
src/main/ipc/controllers/SystemController.ts |
app:get-icon-path |
APP.GET_ICON_PATH |
z.tuple([z.enum(["light", "dark"]).optional()]) |
no | SystemController |
src/main/ipc/controllers/SystemController.ts |
app:get-settings-status |
SETTINGS.GET |
[] (no args) |
yes | SettingsController |
Returns IPC-safe settings (no API key plaintext). Idempotent; cached until save. |
app:get-version |
APP.GET_VERSION |
[] (no args) |
no | SystemController |
src/main/ipc/controllers/SystemController.ts |
app:logout |
APP.LOGOUT |
[] (no args) |
no | AuthController |
src/main/ipc/controllers/AuthController.ts |
app:open-external |
APP.OPEN_EXTERNAL |
z.string().url().min(1) |
no | ViewerController |
src/main/ipc/controllers/ViewerController.ts |
app:quit |
APP.QUIT |
[] (no args) |
no | SystemController |
src/main/ipc/controllers/SystemController.ts |
app:quit-and-install |
APP.QUIT_AND_INSTALL |
[] (no args) |
no | updater-service |
src/main/services/updater-service.ts |
app:save-settings |
SETTINGS.SAVE |
z.tuple([SaveSettingsSchema]) |
no | SettingsController |
src/main/ipc/controllers/SettingsController.ts |
app:start-download |
APP.START_UPDATE_DOWNLOAD |
[] (no args) |
no | updater-service |
src/main/services/updater-service.ts |
app:verify-creds |
APP.VERIFY_CREDS |
z.tuple([z.enum(["rule34", "gelbooru"]).optional()]) |
no | AuthController |
src/main/ipc/controllers/AuthController.ts |
app:write-to-clipboard |
APP.WRITE_CLIPBOARD |
z.tuple([z.string().min(1)]) |
no | SystemController |
src/main/ipc/controllers/SystemController.ts |
backup:getSchedule |
BACKUP.GET_SCHEDULE |
[] (no args) |
yes | MaintenanceController |
src/main/ipc/controllers/MaintenanceController.ts |
backup:integrity-check |
BACKUP.INTEGRITY_CHECK |
[] (no args) |
yes | MaintenanceController |
src/main/ipc/controllers/MaintenanceController.ts |
backup:setSchedule |
BACKUP.SET_SCHEDULE |
z.tuple([AutoBackupIntervalSchema]) |
no | MaintenanceController |
src/main/ipc/controllers/MaintenanceController.ts |
blacklist:add |
BLACKLIST.ADD |
z.tuple([blacklistTagSchema]) |
no | BlacklistController |
src/main/ipc/controllers/BlacklistController.ts |
blacklist:getAll |
BLACKLIST.GET_ALL |
[] (no args) |
yes | BlacklistController |
src/main/ipc/controllers/BlacklistController.ts |
blacklist:remove |
BLACKLIST.REMOVE |
z.tuple([blacklistTagSchema]) |
no | BlacklistController |
src/main/ipc/controllers/BlacklistController.ts |
booru:resolve-character-tags |
API.RESOLVE_CHARACTER_TAGS |
z.tuple([z.array(z.string().min(1)).max(100)]) |
no | SearchController |
src/main/ipc/controllers/SearchController.ts |
booru:resolve-copyright-tags |
API.RESOLVE_COPYRIGHT_TAGS |
z.tuple([z.array(z.string().min(1)).max(100)]) |
no | SearchController |
src/main/ipc/controllers/SearchController.ts |
booru:resolve-tags |
API.RESOLVE_TAGS |
z.tuple([z.array(z.string().min(1)).max(100)]) |
no | SearchController |
src/main/ipc/controllers/SearchController.ts |
booru:resolve-tags-by-type |
API.RESOLVE_TAGS_BY_TYPE |
z.tuple([ z.array(z.string().min(1)).max(100), z.number().int().refine((n): n is TagType => { return Object.values(TA... |
no | SearchController |
src/main/ipc/controllers/SearchController.ts |
booru:search |
API.SEARCH_POSTS |
z.tuple([SearchPostsSchema]) |
no | SearchController |
Provider search; auth/rate_limit errors surface as typed IPC errors to Browse UI. |
db:add-artist |
DB.ADD_ARTIST |
z.tuple([AddArtistSchema]) |
no | ArtistsController |
src/main/ipc/controllers/ArtistsController.ts |
db:add-posts-to-playlist |
DB.ADD_POSTS_TO_PLAYLIST |
z.tuple([AddPostsToPlaylistSchema]) |
no | PlaylistController |
src/main/ipc/controllers/PlaylistController.ts |
db:clear-manual-playlist |
DB.CLEAR_MANUAL_PLAYLIST |
schema: see source (ClearManualPlaylistSchema) |
no | PlaylistController |
src/main/ipc/controllers/PlaylistController.ts |
db:create-backup |
BACKUP.CREATE |
[] (no args) |
yes | MaintenanceController |
src/main/ipc/controllers/MaintenanceController.ts |
db:create-playlist |
DB.CREATE_PLAYLIST |
z.tuple([CreatePlaylistSchema]) |
yes | PlaylistController |
src/main/ipc/controllers/PlaylistController.ts |
db:delete-artist |
DB.DELETE_ARTIST |
z.tuple([IdSchema]) |
no | ArtistsController |
src/main/ipc/controllers/ArtistsController.ts |
db:delete-playlist |
DB.DELETE_PLAYLIST |
z.tuple([IdSchema]) |
no | PlaylistController |
src/main/ipc/controllers/PlaylistController.ts |
db:export-playlist |
DB.EXPORT_PLAYLIST |
z.tuple([IdSchema]) |
no | PlaylistController |
src/main/ipc/controllers/PlaylistController.ts |
db:get-api-key-encrypted |
DB.GET_API_KEY_ENCRYPTED |
— | — | — | No handle registration found (event channel or registered outside scanned paths). |
db:get-artists |
DB.GET_ARTISTS |
[] (no args) |
no | ArtistsController |
src/main/ipc/controllers/ArtistsController.ts |
db:get-download-items |
DB.GET_DOWNLOAD_ITEMS |
z.tuple([ GetPostsSchema.extend({ limit: z.number().int().min(1).max(500).default(500), }), ]) |
yes | PostsController |
src/main/ipc/controllers/PostsController.ts |
db:get-manual-playlist-membership-for-posts |
DB.GET_MANUAL_PLAYLIST_MEMBERSHIP_FOR_POSTS |
schema: see source (GetManualPlaylistMembershipForPostsSchema) |
no | PlaylistController |
src/main/ipc/controllers/PlaylistController.ts |
db:get-playlist |
DB.GET_PLAYLIST |
z.tuple([IdSchema]) |
no | PlaylistController |
src/main/ipc/controllers/PlaylistController.ts |
db:get-playlist-download-items |
DB.GET_PLAYLIST_DOWNLOAD_ITEMS |
— | — | — | No handle registration found (event channel or registered outside scanned paths). |
db:get-playlist-posts |
DB.GET_PLAYLIST_POSTS |
z.tuple([GetPlaylistPostsSchema]) |
no | PlaylistController |
src/main/ipc/controllers/PlaylistController.ts |
db:get-playlists |
DB.GET_PLAYLISTS |
[] (no args) |
yes | PlaylistController |
src/main/ipc/controllers/PlaylistController.ts |
db:get-playlists-containing-post |
DB.GET_PLAYLISTS_CONTAINING_POST |
z.tuple([z.number().int(), OptionalIdSchema]) |
no | PlaylistController |
src/main/ipc/controllers/PlaylistController.ts |
db:get-posts |
DB.GET_POSTS |
z.tuple([GetPostsSchema]) |
no | PostsController |
Paginated posts with filters. Always limited — see MAX page size in PostsController. |
db:get-posts-count |
DB.GET_POSTS_COUNT |
z.tuple([GetPostsCountSchema]) |
yes | PostsController |
src/main/ipc/controllers/PostsController.ts |
db:get-posts-count-with-filters |
DB.GET_POSTS_COUNT_WITH_FILTERS |
z.tuple([ GetPostsSchema.pick({ artistId: true, filters: true }), ]) |
yes | PostsController |
src/main/ipc/controllers/PostsController.ts |
db:get-stats |
DB.GET_STATS |
[] (no args) |
yes | StatsController |
src/main/ipc/controllers/StatsController.ts |
db:import-playlist |
DB.IMPORT_PLAYLIST |
z.tuple([]) |
no | PlaylistController |
src/main/ipc/controllers/PlaylistController.ts |
db:mark-all-viewed |
DB.MARK_ALL_VIEWED |
z.tuple([]) |
no | PostsController |
src/main/ipc/controllers/PostsController.ts |
db:mark-post-viewed |
DB.MARK_VIEWED |
z.tuple([ z.number().int(), PostDataSchema.optional(), ]) |
no | PostsController |
src/main/ipc/controllers/PostsController.ts |
db:move-posts-between-manual-playlists |
DB.MOVE_POSTS_BETWEEN_MANUAL_PLAYLISTS |
schema: see source (MovePostsBetweenManualPlaylistsSchema) |
no | PlaylistController |
src/main/ipc/controllers/PlaylistController.ts |
db:remove-posts-from-playlist |
DB.REMOVE_POSTS_FROM_PLAYLIST |
z.tuple([RemovePostsFromPlaylistSchema]) |
no | PlaylistController |
src/main/ipc/controllers/PlaylistController.ts |
db:reorder-playlist-entries |
DB.REORDER_PLAYLIST_ENTRIES |
z.tuple([ReorderPlaylistEntriesSchema]) |
no | PlaylistController |
src/main/ipc/controllers/PlaylistController.ts |
db:reset-post-cache |
DB.RESET_POST_CACHE |
z.tuple([IdSchema]) |
no | PostsController |
src/main/ipc/controllers/PostsController.ts |
db:resolve-playlist-posts |
DB.RESOLVE_PLAYLIST_POSTS |
z.tuple([ResolvePlaylistPostsSchema]) |
no | PlaylistController |
src/main/ipc/controllers/PlaylistController.ts |
db:restore-backup |
BACKUP.RESTORE |
[] (no args) |
yes | MaintenanceController |
src/main/ipc/controllers/MaintenanceController.ts |
db:search-tags |
DB.SEARCH_TAGS |
z.tuple([z.string().trim().min(1)]) |
no | ArtistsController |
src/main/ipc/controllers/ArtistsController.ts |
db:shadow-insert-post |
DB.SHADOW_INSERT_POST |
z.tuple([ShadowInsertRequestSchema]) |
no | PostsController |
src/main/ipc/controllers/PostsController.ts |
db:sync-all |
DB.SYNC_ALL |
[] (no args) |
yes | MaintenanceController |
src/main/ipc/controllers/MaintenanceController.ts |
db:sync-manual-playlist-membership |
DB.SYNC_MANUAL_PLAYLIST_MEMBERSHIP |
schema: see source (SyncManualPlaylistMembershipSchema) |
no | PlaylistController |
src/main/ipc/controllers/PlaylistController.ts |
db:toggle-post-favorite |
DB.TOGGLE_FAVORITE |
z.tuple([ z.number().int(), PostDataSchema.optional(), ]) |
no | PostsController |
src/main/ipc/controllers/PostsController.ts |
db:toggle-post-viewed |
DB.TOGGLE_POST_VIEWED |
— | — | — | No handle registration found (event channel or registered outside scanned paths). |
db:update-playlist |
DB.UPDATE_PLAYLIST |
z.tuple([IdSchema, UpdatePlaylistSchema]) |
no | PlaylistController |
src/main/ipc/controllers/PlaylistController.ts |
files:cancel-download-all |
FILES.CANCEL_DOWNLOAD_ALL |
[] (no args) |
yes | FileController |
src/main/ipc/controllers/FileController.ts |
files:dismiss-pending-download |
FILES.DISMISS_PENDING_DOWNLOAD |
[] (no args) |
no | FileController |
src/main/ipc/controllers/FileController.ts |
files:download |
FILES.DOWNLOAD |
z.tuple([ DownloadFileSchema.shape.url, DownloadFileSchema.shape.filename, ]) |
no | FileController |
src/main/ipc/controllers/FileController.ts |
files:download-all |
FILES.DOWNLOAD_ALL |
z.tuple([DownloadAllSchema]) |
no | FileController |
src/main/ipc/controllers/FileController.ts |
files:download-all-progress |
FILES.DOWNLOAD_ALL_PROGRESS |
— | — | — | No handle registration found (event channel or registered outside scanned paths). |
files:download-progress |
FILES.DOWNLOAD_PROGRESS |
— | — | — | No handle registration found (event channel or registered outside scanned paths). |
files:get-pending-download |
FILES.GET_PENDING_DOWNLOAD |
[] (no args) |
yes | FileController |
src/main/ipc/controllers/FileController.ts |
files:open-folder |
FILES.OPEN_FOLDER |
OpenFolderSchema |
no | FileController |
src/main/ipc/controllers/FileController.ts |
files:pause-download-all |
FILES.PAUSE_DOWNLOAD_ALL |
[] (no args) |
yes | FileController |
src/main/ipc/controllers/FileController.ts |
files:pending-download-state-changed |
FILES.PENDING_DOWNLOAD_STATE_CHANGED |
— | — | — | No handle registration found (event channel or registered outside scanned paths). |
files:resume-download-all |
FILES.RESUME_DOWNLOAD_ALL |
[] (no args) |
yes | FileController |
src/main/ipc/controllers/FileController.ts |
files:resume-pending-download |
FILES.RESUME_PENDING_DOWNLOAD |
z.tuple([]) |
no | FileController |
src/main/ipc/controllers/FileController.ts |
files:select-download-folder |
FILES.SELECT_DOWNLOAD_FOLDER |
z.tuple([]) |
no | FileController |
src/main/ipc/controllers/FileController.ts |
settings:confirm-legal |
SETTINGS.CONFIRM_LEGAL |
[] (no args) |
no | SettingsController |
src/main/ipc/controllers/SettingsController.ts |
settings:reset-onboarding |
SETTINGS.RESET_ONBOARDING |
[] (no args) |
no | SettingsController |
src/main/ipc/controllers/SettingsController.ts |
settings:save-download-folder |
SETTINGS.SAVE_DOWNLOAD_FOLDER |
z.tuple([SaveDownloadFolderArgSchema]) |
no | SettingsController |
src/main/ipc/controllers/SettingsController.ts |
settings:save-download-settings |
SETTINGS.SAVE_DOWNLOAD_SETTINGS |
z.tuple([SaveDownloadSettingsPayloadSchema]) |
no | SettingsController |
src/main/ipc/controllers/SettingsController.ts |
settings:save-theme |
SETTINGS.SAVE_THEME |
z.tuple([ThemePreferenceSchema]) |
no | SettingsController |
src/main/ipc/controllers/SettingsController.ts |
stats:get-extended |
STATS.GET_EXTENDED |
[] (no args) |
yes | StatsController |
src/main/ipc/controllers/StatsController.ts |
sync:end |
SYNC.END |
— | — | — | No handle registration found (event channel or registered outside scanned paths). |
sync:error |
SYNC.ERROR |
— | — | — | No handle registration found (event channel or registered outside scanned paths). |
sync:progress |
SYNC.PROGRESS |
— | — | — | No handle registration found (event channel or registered outside scanned paths). |
sync:repair-artist |
SYNC.REPAIR |
z.tuple([IdSchema]) |
yes | MaintenanceController |
src/main/ipc/controllers/MaintenanceController.ts |
sync:repair:end |
SYNC.REPAIR_END |
— | — | — | No handle registration found (event channel or registered outside scanned paths). |
sync:repair:start |
SYNC.REPAIR_START |
— | — | — | No handle registration found (event channel or registered outside scanned paths). |
sync:start |
SYNC.START |
— | — | — | No handle registration found (event channel or registered outside scanned paths). |
system:wipe-all-data |
APP.WIPE_ALL_DATA |
[] (no args) |
no | SystemController |
Deletes all children of userData (.rdcache), then app.exit(0). Order: closeDatabase → stop video proxy → rm → exit. Does not touch download folders outside userData. |
updater:progress |
UPDATER.PROGRESS |
— | — | — | No handle registration found (event channel or registered outside scanned paths). |
updater:status |
UPDATER.STATUS |
— | — | — | No handle registration found (event channel or registered outside scanned paths). |
updates:getTotalUnreadCount |
UPDATES.GET_TOTAL_UNREAD_COUNT |
schema: see source (unknown) |
no | updates |
src/main/ipc/handlers/updates.ts |
updates:getUnreadCount |
UPDATES.GET_UNREAD_COUNT |
[] (no args) |
no | updates |
src/main/ipc/handlers/updates.ts |
updates:markAllSeen |
UPDATES.MARK_ALL_SEEN |
[] (no args) |
no | updates |
src/main/ipc/handlers/updates.ts |
video-proxy:get-url |
VIDEO_PROXY.GET_URL |
z.tuple([z.string().url()]) |
yes | VideoProxyController |
src/main/ipc/controllers/VideoProxyController.ts |
- Channels in
channels.ts: 96 - Channels with at least one scanned
handleregistration: 81 - Handler rows extracted: 85
npm run docs:apiCI fails if this file is stale (npm run docs:api then git diff --exit-code docs/api.md).