An unofficial desktop client for the Lore revision control system (disclaimer)
This is a minimal visual interface for managing Lore repositories. It provides basic repository management capabilities with a simple, user-friendly interface for teams adopting Lore.
# Prerequisites: Node.js 20.19+ or 22.12+ required
# Install pnpm (if not already installed)
npm install -g pnpm
# Clone and setup
pnpm install
# Run the desktop app
pnpm dev:electron
# Build distributable package
pnpm distGetting Started
- π Connect to any Lore server by entering its address
- π Add repositories by cloning from remote repos (with live clone progress) OR connecting to existing local folders
- π Manage multiple projects in one interface
Daily Workflow
- π Quick sync to latest revision on your current branch
- πΏ Switch branches and automatically sync to latest
- π View modified files in your working directory
- β Stage/unstage files for commit with simple UI
- π Write commit messages with formatting guidance
- πΎ Commit and Push changes directly to Lore
Daily Workflow (continued)
- π Branch sync status at a glance β see whether your branch matches the remote
- π Revision history for the current branch, right in the player
Advanced Operations
- π― Sync to specific revisions using @123 notation or commit hashes
- π Reset repository to clean state (discards local changes)
Interface
- π Ambient pill player β collapses to a compact, always-on-top pill; click to expand the full card (hover shows a quick peek), drag to move it anywhere on screen
- π¨ Light and dark themes β follows your OS appearance, with a manual override in the player footer
- π Per-repository accent colors β each repository gets its own accent so you always know which one you're on
Convenience Features
- π Open in file explorer - quickly browse local repository files
- π» Open terminal - start command line at repository location
- Node.js 20.19+ or 22.12+
- pnpm package manager
- A supported platform/architecture β the Lore SDK ships native binaries for:
- macOS: Apple Silicon (arm64) only
- Windows: x64
- Linux: x64 and arm64
- Electron app with main/renderer process separation
- React + TypeScript for the UI
- Mantine UI - Modern React components library for the interface
- Lore SDK (
@lore-vcs/sdk) integration for repository operations - Secure IPC communication with validation
- Vite - Fast build tool and development server
- pnpm - Efficient package manager
- Jest - Unit testing framework
- Playwright - End-to-end testing framework
- ESLint - Code linting and style enforcement
- Prettier - Code formatting
The application uses Mantine as the primary UI component library, providing a modern, accessible, and feature-rich interface.
Resources:
- π Documentation - Complete component API and usage guides
- π¨ Examples - Interactive component demos and templates
- π¦ Source Code - Main Mantine repository
- π§ Examples Source - Source code for examples website
Mantine provides comprehensive components for forms, navigation, data display, and layout, with built-in dark/light theme support and TypeScript integration.
This project enforces strict standards for maintainable, secure code:
- TypeScript Ultra-Strict - No
anytypes, explicit typing required - Automated Checks - ESLint, Prettier, type checking on every commit
- Lore SDK Reference - See the
@lore-vcs/sdkpackage (README and bundled type declarations) for the SDK API
π Full details: Coding Standards
| Command | Description |
|---|---|
pnpm dev |
Start web version (port 5173) |
pnpm dev:electron |
Start electron desktop app with hot reload |
pnpm lint |
Check code quality |
pnpm lint:fix |
Auto-fix ESLint issues |
pnpm type-check |
Verify TypeScript types |
pnpm format |
Check code formatting with Prettier |
pnpm format:fix |
Auto-format code |
src/
βββ main/ # Electron main process
β βββ index.ts # Entry point, window creation
β βββ preload.ts # Secure bridge between main and renderer
β βββ security.ts # Deny-by-default navigation/window-open/permission guards
β βββ ipc/ # IPC handlers and validators
β βββ services/ # Business logic (repository store, Lore SDK, branch graph)
βββ renderer/ # React UI application
β βββ App.tsx # Root component
β βββ components/ # UI components
β βββ styles/ # CSS and animations
βββ shared/ # Shared between main and renderer
β βββ types.ts # TypeScript interfaces
β βββ schemas.ts # Zod validation schemas
βββ types/ # Global type definitions
tests/
βββ e2e/
β βββ electron/ # Playwright Electron end-to-end tests
βββ main/ # Main process tests
βββ renderer/ # React component tests
βββ mocks/ # Test mocks and fixtures
βββ setup.ts # Jest configuration
assets/ # Static assets (logos, icons)
build/ # Electron-builder resources
out/ # Built application (dev/prod)
dist/ # Distribution packages (.dmg, .exe, etc.)
coverage/ # Test coverage reports
The repository tracks a minimal Claude Code setup (optional β nothing here is required to build or contribute):
.claude/settings.json- Permissions allowlist for common project commands.claude/.code/code_standards.md- The coding standards followed by AI and human contributors alike
- Always write tests from the user's perspective - test what users see and do, not implementation details
- Focus on behavior, not internals
- Jest: Fast feedback loops, component testing, mocking, and testing JavaScript/TypeScript logic.
- Playwright: Testing real user workflows across the entire application.
Note: The Playwright E2E suite launches the built Electron app from
out/, so it needs a build (pnpm build) β the e2e scripts run one automatically.pnpm test:play:codegenrecords against a Vite dev server for authoring new tests.
| Command | Description |
|---|---|
pnpm test |
Run all Jest and Playwright tests |
pnpm pre-commit |
Run all checks before committing |
pnpm test:jest |
Run Jest unit tests (silent mode, only shows failures) |
pnpm test:play |
Run Playwright E2E tests in headed mode (see browser) |
pnpm test:jest:coverage |
Run tests with coverage report (prints the HTML report path) |
pnpm test:jest:verbose |
Debug mode with detailed output for each test |
pnpm test:play:ui |
Interactive UI mode (explore and run specific tests) |
pnpm test:play:debug |
Step-through debugging with Playwright Inspector |
pnpm test:play:codegen |
Record browser actions to generate test code |
| Command | Description |
|---|---|
pnpm build |
Build code for testing production behavior (use before preview) |
pnpm preview |
Test the built app locally without creating installer packages |
pnpm dist |
Create the installer package for the current platform |
pnpm dist:mac |
Clean, build, and package for macOS |
pnpm dist:mac:dev |
Build macOS package without compression (faster) |
pnpm dist:win |
Build and package for Windows |
pnpm dist:linux |
Build and package for Linux |
The application automatically logs errors and debug information to help diagnose issues:
Log Locations:
- macOS:
~/Library/Application Support/lore-miniplayer/logs/main.log - Windows:
%APPDATA%\lore-miniplayer\logs\main.log - Linux:
~/.config/lore-miniplayer/logs/main.log
Log Features:
- Automatic rotation (5MB max file size)
- Structured error context (operation, repository, paths)
- Both main process and renderer errors
- Lore SDK operation details
Connection Problems:
- Check network connectivity to your Lore server
- Look for connection errors in logs
Repository Clone/Sync Failures:
- Ensure target directory has proper permissions
- Check available disk space
- Verify repository URL is accessible
- Review Lore SDK error messages in logs
Performance Issues:
- Large repositories require more time for initial sync
- Check system resources during operations
When reporting issues, please include:
- Log file contents from the time of the error
- Steps to reproduce the problem
- Repository information (if relevant)
- Operating system and version
Before committing:
- Run
pnpm pre-commit(must pass) - Follow standards in
.claude/.code/code_standards.md
These development gates are enforced:
- Test-driven development - Write the failing test first; no feature is complete without tests
- Coverage ratchet -
coverageThresholdinjest.config.jsis the source of truth; never lower it - Zod validation - All IPC messages are validated with Zod schemas at the boundary
- Mantine-only UI - Use Mantine components; no custom equivalents where one exists
Lore MiniPlayer is an unofficial, community-built desktop client for Lore. This project is not associated with, endorsed by, or affiliated with Epic Games, Inc. "Lore" and the Lore logo are trademarks of Epic Games, Inc., used here only to identify the software this client works with.
One of the maintainers of this project is also a maintainer on the upstream Lore project and contributes to Lore MiniPlayer in a personal capacity, on their own time. This work is independent of Epic Games and of the official Lore project.