This glossary defines key terms and concepts used throughout the RuleDesk documentation and application.
A type of imageboard website that allows users to post, tag, and organize images. Booru sites typically use a tag-based categorization system for content organization.
Examples: Rule34.xxx, Gelbooru, Danbooru
Related: Provider Pattern
Keywords or labels used to categorize and search for posts. Tags describe various attributes of content such as characters, artists, content type, rating, etc.
Usage in RuleDesk:
- Tags are stored as space-separated strings in the database
- Tags are used for filtering and searching posts
- Tag normalization automatically strips metadata (e.g., "tag (123)" → "tag")
Related: Database Schema - Posts, Roadmap
Content rating classification system used by booru sites to categorize posts by content type:
- Safe (s): Safe for work content
- Questionable (q): Questionable content
- Explicit (e): Explicit/NSFW content
Related: Database Schema - Posts, Filters
The process of fetching new posts from booru APIs and updating the local database. RuleDesk implements intelligent synchronization with rate limiting and incremental updates.
Features:
- Rate limiting (
ProviderThrottle: ~1200ms minimum + 0–400ms jitter per request) - Incremental sync (only fetches posts newer than
lastPostId) - Background execution with progress tracking
- Exponential backoff for error handling
Related: Sync Service, Synchronization Flow, Sync Settings
Local storage of post metadata and preview images to enable offline browsing and fast filtering. RuleDesk uses a 3-layer progressive image loading system.
Cache Layers:
- Preview URL - Low-resolution blurred preview (instant display)
- Sample URL - Medium-resolution sample (loaded in gallery)
- File URL - Full-resolution original (loaded only in viewer)
Related: Progressive Image Loading, Settings - General
A list of tags excluded from gallery and search results after fetch. Configured in Settings → Blacklist; enforced in Main (SearchController, PostsController) so hidden tags do not affect pagination math (apiFetchedCount is measured before blacklist filtering).
Related: Settings - Blacklist, searchBooru
The process of monitoring specific artists or uploaders for new posts. RuleDesk supports tracking by:
- Tag: Track posts tagged with a specific tag
- Uploader: Track posts uploaded by a specific user
- Query: Track posts matching a custom query
Related: Database Schema - Artists, Artist Tracking
An abstraction layer that allows RuleDesk to support multiple booru sources without core database changes. Each provider implements the IBooruProvider interface.
Current Providers:
- Rule34.xxx (
Rule34Provider) - Gelbooru (
GelbooruProvider)
Related: Architecture - Provider Pattern, Multi-Booru Support
The Browse page searches the live booru API (Source: All) or filters posts from the local cache (Source: Favorites / Browse Source Subscriptions filter). Infinite scroll loads 50 posts per batch; on Rule34, RuleDesk continues past the API offset cap using cursor pagination (id:<postId>).
Related: User Guide - Search, Rule34 pagination, searchBooru
The communication mechanism between Electron's Main Process and Renderer Process. RuleDesk uses a controller-based IPC architecture with type-safe interfaces.
Related: IPC Architecture, IPC Bridge Interface
The secure Node.js environment in Electron that handles all I/O, persistence, and secrets. Database operations, API calls, and file system access run in the Main Process.
Related: Architecture - Main Process
The sandboxed browser environment in Electron that handles UI rendering and user interactions. The Renderer Process communicates with the Main Process via IPC. UI copy is English-only (inline literals / local constants) — there is no i18n layer under src/renderer/. Renderer code must not import from src/main/** (including type-only); DB/IPC types come from @shared/types/*.
Related: Architecture - Renderer Process
Settings → General → Danger zone → confirmed delete of everything under the user data directory (.rdcache), including the database, video-cache/, logs, and in-app backups, then app quit. Does not delete the separate media download folder. IPC: system:wipe-all-data / wipeAllData.
Related: User Guide — Settings, API Reference
Main-process VideoProxyServer serves local http://127.0.0.1 URLs for <video> playback and stores complete files under {userData}/video-cache/ (atomic tmp + rename; bounded by VIDEO_CACHE_MAX_BYTES with LRU last-accessed eviction).
Related: API Guide — getVideoProxyUrl, Roadmap
Per-artist watermark for incremental sync (id:>lastPostId). Advanced only after pagination completes naturally (postsData.length < PAGE_SIZE). Mid-batch, error, and cooperative-cancel partial commits persist posts and newPostsCount but never move the cursor. Incomplete runs set lastSyncIncomplete so the next sync can refill gaps. App quit requests sync cancel and drains briefly before closing the DB; a hard kill can still interrupt mid-write (FTS insert/update triggers are recovered on next DB init, and stuck artists.sync_status = 'syncing' is reset to 'idle').
Related: Architecture — Sync, Roadmap
A security feature in Electron that prevents the Renderer Process from directly accessing Node.js APIs. All communication must go through the IPC bridge.
Status: ✅ Enabled in RuleDesk
Related: Security Architecture, Context Isolation
The Object-Relational Mapping library used by RuleDesk for type-safe database queries. Drizzle provides TypeScript type inference and SQL generation.
Related: Database Architecture, Drizzle ORM
A SQLite mode that enables concurrent reads while writes are in progress. RuleDesk uses WAL mode for optimal performance.
Related: Database Architecture, WAL Mode
Electron's safeStorage API used to encrypt sensitive data (API keys) at rest. Encryption uses platform keychains (Windows Credential Manager, macOS Keychain, Linux libsecret).
Related: Security - Credential Security, Secure Storage
A 3-layer image loading strategy that provides instant visual feedback with smooth quality enhancement:
- Preview - Low-res blurred preview (instant)
- Sample - Medium-res sample (gallery)
- Original - Full-res original (viewer only)
Related: Progressive Image Loading, Cache
A grid view of posts with preview images, ratings, and metadata. RuleDesk supports multiple gallery views:
- Grid View - Card-based grid layout
- List View - Compact list layout
- Masonry View - CSS column (Pinterest-style) layout; available where the view toggle is shown (differs from virtualized grid on very large lists)
Related: Artist Gallery, Gallery Cards
A full-screen immersive viewer for viewing posts with keyboard shortcuts, download controls, and tag management.
Features:
- Auto-hide controls
- Keyboard navigation (←/→)
- Download and favorites
- Tags drawer (Artist/Character/Copyright distinguish in-flight resolve from confirmed-absent)
Related: Viewer Experience, Full-Screen Viewer
A system for marking and managing favorite posts. Favorites are stored locally in the database and can be toggled via UI or keyboard shortcut (F).
Related: Favorites System, Database Schema - Posts
Artists (tag, uploader, or query type) stored in the local artists table and surfaced via getTrackedArtists() IPC.
Cap: IPC returns at most 5000 rows (MAX_TRACKED_ARTISTS in src/shared/constants.ts). Larger libraries are truncated with a Main-process warning — not a silent full export.
Related: API — getTrackedArtists, Database — Get All Artists
Shipped Browse Source toggle (SourceSwitcher value subscriptions, panel label Subscriptions). Local cache query with sinceTracking: posts published after the artist was tracked (posts.artistId + publishedAt >= artists.createdAt). Not tag-intersection with tracked artist names. Requires a non-empty tag query when selecting this source.
Related: User Guide — Filters, Closed by design
Closed — superseded by smart playlists (is_smart/query_json); no separate entity built (2026-09-12 backlog audit). No separate subscriptions table/IPC was ever shipped. Distinct from the Browse Source Subscriptions filter above (sinceTracking). Closed as duplicate of smart playlists, not as an open “not implemented” gap — original docs had no positive product description (Features.md / Product_Strategy.md silent).
Related: Closed by design, Playlists / Collections, Database — Future Enhancements
Curated collections of posts independent of Artists/Trackers. Users can create playlists, add/remove posts, and view galleries with filtering and sorting. Supports both manual playlists and smart playlists with tag-based queries.
Features:
- Create, rename, and delete playlists
- Add posts to playlists via quick menu on Post Cards or in viewer
- View playlist galleries with grid and masonry layouts
- Filter and sort posts within playlists (FTS5 tag search, media type, AI filter)
- Smart playlists with dynamic tag-based queries
Related: Roadmap, Database Schema - Playlists
A script that modifies the database schema. RuleDesk uses Drizzle Kit to generate and run migrations automatically.
Related: Migrations, Database Documentation
Manual database backup and restore functionality. Backups are timestamped and stored in the user data directory.
Related: Backup and Recovery, Backup & Restore
A SQLite maintenance command that rewrites and compacts the database file, reclaiming unused space.
RuleDesk usage:
- Manual trigger from Settings (
Run VACUUM now) - User-visible status (last run timestamp/result/error)
- Policy stored in
settings(manual,weekly,monthly)
Related: User-visible DB Maintenance, Settings
A SQLite operation (PRAGMA integrity_check) that verifies database file integrity. RuleDesk runs integrity checks before restore operations.
Related: Backup and Recovery
Authentication credentials required to access booru APIs. RuleDesk stores API keys encrypted at rest using Electron's safeStorage API.
Related: API Authentication, Secure Storage
A mechanism to prevent API abuse by limiting request frequency. RuleDesk implements intelligent rate limiting with configurable delays.
Current Limits:
- Shared
ProviderThrottledefault: ~1200ms minimum interval + 0–400ms jitter per request - Sync retry backoff base: 2000ms (
SyncService)
Related: Sync Service, Rate Limiting
An error handling strategy that increases wait time between retry attempts. RuleDesk uses exponential backoff for API error handling.
Related: Sync Service, Best Practices
Local quality gate: npm run typecheck + npm run lint + npm run check:img-attrs. CI runs this before docs:api freshness and tests. typecheck uses skipLibCheck: true, so project .d.ts files (src/renderer.d.ts, …) are a known blind spot — a green run does not prove those ambient imports are valid.
Related: README — Quality Checks
Regenerates the IPC channel reference (docs/api.md) from channels.ts and handler registrations. Hand-editing api.md is forbidden; CI fails if the file is stale.
Related: API Reference, API Guide, README — Quality Checks
Full maintainer gate before a PR: validate → all Vitest suites (unit, integration, property) → restore better-sqlite3 for Electron.
Related: README — Testing, Architecture — Testing & CI
- Documentation Index - Complete documentation navigation
- Architecture Overview - System architecture and design
- API Reference - Generated IPC channel table
- API Guide - IPC usage documentation
- Database Documentation - Database schema and operations