Full Mode x Light Mode - bjsi/incremental-everything GitHub Wiki
Performance Modes: Quick Reference Card
π― Choose Your Mode in 30 Seconds
Do you have an extremely overloaded workflow?
- YES (50+ articles, 10k+ cards, complex hierarchies) β Full Mode π₯οΈ
- NO (Standard learning / Beginner) β Light Mode β‘
π At a Glance
Full Mode π₯οΈ
Platform: π» Desktop App ONLY
Performance: π’ Slower but feature-rich
Features: ποΈ All advanced features
Startup: β±οΈ up to 3 min (depending on KB size)
Best For: π¬ Overloaded Students, Power Users
Key Features:
- KB-scoped and Document-scoped relative priority percentiles
- Priority Shield (KB and Document scope)
- Priority Shield stats are stored for historical comparison used the Priority Shield Graph
- Complex hierarchy support
Light Mode β‘
Platform: π Web, π± Mobile, π» Desktop
Performance: π Fast and responsive
Features: β‘ Essential features
Startup: β‘ <10 seconds
Best For: π Beginner and eventual users, Mobile and Web-browser users, users with few flashcards
Key Features:
- Absolute Priorities (flashcards and IncRems)
- No need for cache mounting of the startup / queue Enter
- Universal platform support
π¦ Platform Recommendations
| Platform | Default | Recommended | Can Override? |
|---|---|---|---|
| π Web Browser | Light | Light β | Yes (not recommended) |
| π± Mobile | Light | Light β | Yes (not recommended) |
| π» Desktop App | Light | Full/Light β‘ | Yes (configurable) |
π‘ Common Scenarios
"I study on my phone during commute"
β Light Mode β
(automatic)
Optimized for mobile, won't make the app heavy
"I process 5 articles a week on web browser"
β Light Mode β
(automatic)
Fast, stable, perfect for standard IR
"I'm researching my PhD with 100+ papers"
β Full Mode on Desktop App
Need document percentiles and advanced features
"I have 500 cards, use desktop app"
β Light Mode works great! β‘
Unless you want document-level analytics
"I have 20K+ cards, a large backlog, a huge inflow of information, and a use desktop app"
β Full Mode ! β‘
You need the full power of relative priorities and priority shield.
"I switch between web and desktop daily"
β Hybrid: Full on Desktop, Light on Web
Automatic switching, best of both worlds
π§ How to Change Modes
Automatic (Recommended)
The plugin auto-detects your platform (if you chose Full Mode):
β
Web β Light Mode
β
Mobile β Light Mode
β
Desktop β Full Mode
Manual Override
Settings β Performance Mode
- Choose "Light Mode" or "Full Mode"
Platform-Specific Settings:
- "Always use Light Mode on Mobile" (default: ON)
- "Always use Light Mode on Web Browser" (default: ON)
β οΈ Warning Signs
Using Full Mode on Wrong Platform
Web Browser + Full Mode:
β Slow loading
β Browser freezing
β High memory usage
β Solution: Enable "Light Mode on Web" setting
Mobile + Full Mode:
β App crashes
β Battery drain
β Sluggish interface
β Solution: Enable "Light Mode on Mobile" setting
π Feature Availability
| Feature | Full Mode | Light Mode |
|---|---|---|
| Flashcard Review | β | β |
| Incremental Reading | β | β |
| Priority System | β | β |
| Absolute Priority Number (IncRems and Cards) | β | β |
| KB Relative Priorities Percentiles | β | β |
| Document Relative Priorities Percentiles | β | β |
| KB Priority Shield (IncRems and Cards) | β | β |
| Doc Priority Shield (IncRems and Cards) | β | β |
| Priority Review Docs | β | β |
| Card Priority Tagging | β Deep | β Instant |
| Fast Startup | β | β |
| Mobile Stability | β | β |
If you regularly uses RemNote in the Desktop App, don't fear the FULL MODE: shouldUseLightMode() Decision Flow
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β User Opens RemNote Plugin / Component Loads β
ββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββ
β Call shouldUseLightModeβ
β (plugin) β
ββββββββββββββ¬ββββββββββββ
β
βΌ
ββββββββββββββββββββββββββ
β Check: Performance β
β setting === 'light'? β
ββββββββ¬ββββββββββββββ¬ββββ
β YES β NO
βΌ βΌ
[USE LIGHT MODE] β
β
ββββββββββββββΌβββββββββββββββ
β Check: Is Mobile Device? β
β (iOS or Android) β
ββββββββ¬ββββββββββββββ¬βββββββ
β YES β NO
βΌ β
ββββββββββββββββββββββββ β
β Check: alwaysUseLightβ β
β ModeOnMobile enabled?β β
ββββββββ¬ββββββββββββ¬ββββ β
β YES β NO β
βΌ β β
[USE LIGHT MODE] β β
β β
ββββββββββββΌβββββββββΌβββββββββββ
β Check: Is Web Platform? β
β (browser vs desktop app) β
ββββββββ¬ββββββββββββββ¬ββββββββββ
β YES β NO
βΌ β
ββββββββββββββββββββββββ β
β Check: alwaysUseLightβ β
β ModeOnWeb enabled? β β
ββββββββ¬ββββββββββββ¬ββββ β
β YES β NO β
βΌ β β
[USE LIGHT MODE] β β
β β
ββββββββββββΌβββββββββΌβββββββββββ
β USE FULL MODE β
ββββββββββββββββββββββββββββββββ
Startup Detection Flow
ββββββββββββββββββββββββββββββββββββββββββββββββββ
β Plugin Activates (onActivate) β
βββββββββββββββββββββ¬βββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β handleMobileDetectionOnStartup(plugin) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β 1. Detect OS (iOS/Android/Windows/Mac/Linux) β
β 2. Detect Platform (web/app) β
β 3. Store in SESSION storage (device-specific): β
β - isMobileDeviceKey = true/false β
β - isWebPlatformKey = true/false β
β 4. Store in SYNCED storage (for history): β
β - lastDetectedOSKey = current OS β
β - lastDetectedPlatformKey = current platform β
βββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββ΄ββββββββββββ
β β
βΌ βΌ
ββββββββββββββββ βββββββββββββββββββββ
β Mobile? β β Web Platform? β
β (iOS/Android)β β (browser) β
ββββββββ¬ββββββββ ββββββββββ¬βββββββββββ
β YES β YES
βΌ βΌ
ββββββββββββββββββββ ββββββββββββββββββββββββ
β Show toast: β β Show toast: β
β "π± iOS detected"β β "π Web Browser on β
β with mode info β β Windows" + mode β
ββββββββββββββββββββ ββββββββββββββββββββββββ
Storage Architecture
SESSION STORAGE (per-device, doesn't sync)
ββββββββββββββββββββββββββββββββββββββββββ
β isMobileDeviceKey: boolean β β Used by shouldUseLightMode()
β isWebPlatformKey: boolean β β Used by shouldUseLightMode()
ββββββββββββββββββββββββββββββββββββββββββ
SYNCED STORAGE (cross-device)
ββββββββββββββββββββββββββββββββββββββββββ
β lastDetectedOSKey: string β β For tracking changes
β lastDetectedPlatformKey: Platform β β For tracking changes
ββββββββββββββββββββββββββββββββββββββββββ
SETTINGS (user preferences)
ββββββββββββββββββββββββββββββββββββββββββ
β performanceMode: 'light' | 'full' β β Master setting
β alwaysUseLightModeOnMobileId: bool β β Mobile override
β alwaysUseLightModeOnWebId: bool β β Web override (NEW)
ββββββββββββββββββββββββββββββββββββββββββ
Platform Combinations
βββββββββββββββββββββ¦βββββββββββββ¦ββββββββββββ¦ββββββββββββββββββ
β Operating β Platform β Device β Default Mode β
β System β β Type β (recommended) β
β ββββββββββββββββββββ¬βββββββββββββ¬ββββββββββββ¬ββββββββββββββββββ£
β iOS β app β Mobile β Light β
β Android β app β Mobile β Light β
β Windows β web β Desktop β Light (NEW) β
β Mac β web β Desktop β Light (NEW) β
β Linux β web β Desktop β Light (NEW) β
β Windows β app β Desktop β Full β
β Mac β app β Desktop β Full β
β Linux β app β Desktop β Full β
βββββββββββββββββββββ©βββββββββββββ©ββββββββββββ©ββββββββββββββββββ
Component Usage Pattern
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Any Component (Widget/Popup/Command) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β const useLightMode = await shouldUseLightMode( β
β plugin β
β ); β
β β
β if (useLightMode) { β
β // Use optimized, fast path β
β // Skip expensive operations β
β // Use lighter caching β
β } else { β
β // Use full-featured path β
β // Run comprehensive operations β
β // Use full caching β
β } β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Real-World Example: answer_buttons.tsx
User clicks "Done (untag)" button
β
βΌ
ββββββββββββββββββββββββββββββββ
β handleCardPriorityInheritanceβ
ββββββββββββββββββββββββββββββββ€
β Check existing priority β
β β β
β βΌ β
β const useLightMode = β
β await shouldUseLightMode() β
β β β
β ββββββ΄βββββ β
β β Light? β β
β βββ¬ββββββ¬ββ β
β YES β β NO β
β βββββΌββ βΌβββββββββ β
β βSkip β β Check β β
β βcard β β cards β β
β βcheckβ β in Rem β β
β β β β and β β
β βSet β β 3 levelβ β
β βprio β β descendβ β
β βNOW β β β β
β βββββββ ββββββββββ β
β β‘Fast π Thorough β
ββββββββββββββββββββββββββββββββ