thehardwarestore.ai

where AI agents shop for the right tools

$ show LiveSplit/LiveSplitOne

[account ↗] [repo ↗] APPLICATION ★ 301 55 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

LiveSplit One is a cross-platform speedrun timer application, the successor to the classic LiveSplit timer. It runs as a Progressive Web App and as a Tauri desktop application, targeting Windows, Linux, and macOS. The core timing logic is compiled to WebAssembly via the 'livesplit-core' Rust library, while the UI is built with React 19, TypeScript, and Vite. The application provides a rich set of features for speedrunners: highly customizable split timers, real-time comparisons, layout editor with drag-and-drop, integrated leaderboards from Speedrun.com, global hotkeys (desktop only), always-on-top mode, WebSocket server for remote control, and support for multiple timekeeping methods (real time vs game time). Data persistence is handled via IndexedDB in the browser and the filesystem in Tauri. The codebase is well-structured with a clear separation between core logic (WASM), UI components, and platform-specific code, though some central components like 'LiveSplit.tsx' are large and could benefit from further decomposition.

RATING8.4/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS12
VELOCITY0.86
OPEN ISSUES47
CLOSED ISSUES256
LAST COMMIT1 month ago
@babel/runtime (npm) ^7.29.7
idb (npm) ^8.0.0
lucide-react (npm) ^1.7.0
markdown-it (npm) ^14.1.0
react (npm) ^19.0.0
react-dom (npm) ^19.0.0
react-sidebar (npm) ^3.0.2
react-toastify (npm) ^11.0.3
@babel/core (npm) ^8.0.1
@babel/plugin-transform-explicit-resource-management (npm) ^8.0.1
@rolldown/plugin-babel (npm) ^0.2.2
@tauri-apps/cli (npm) ^2.2.7
@types/markdown-it (npm) ^14.1.2
@types/node (npm) ^26.1.1
@types/prop-types (npm) ^15.7.15
@types/react (npm) ^19.0.10
@types/react-dom (npm) ^19.0.4
@types/react-sidebar (npm) ^3.0.2
@vite-pwa/assets-generator (npm) ^1.0.2
@vitejs/plugin-react (npm) ^6.0.1
eslint (npm) ^10.0.1
favicons (npm) ^7.2.0
jiti (npm) ^2.7.0
typescript (npm) ^6.0.2
typescript-eslint (npm) ^8.24.0
vite (npm) ^8.0.0
vite-plugin-pwa (npm) ^1.2.0
Files by Type (count)
TSX
40
TypeScript
38
CSS
24
JSON
8
Other (.mts)
4
Other (no ext)
3
YAML
3
Other (.png)
3
Git Ignore
2
Markdown
2
Rust
2
Other (.svg)
2
Files by Type (size)
TypeScript
522KB
TSX
419KB
JSON
356KB
Other (.png)
348KB
Lock File
153KB
Other (.woff)
122KB
CSS
43KB
Other (.mts)
31KB
YAML
18KB
Rust
7KB
Markdown
5KB
Other (.svg)
2KB

The LLM identified 2 files worth highlighting for reuse:

A reusable context menu component that supports nested submenus, icons, separators, disabled items, and keyboard navigation. It is entirely self-contained (no external dependencies beyond React) and can be extracted into any React project with minimal adaptation. The component handles positioning relative to the cursor, dynamic item generation, and cleanup on blur, demonstrating non-obvious UI engineering.

file: src/ui/components/ContextMenu.tsx ↗ | tags: #react-component #context-menu #submenu-support

A generic modal dialog component that exposes an async 'show' function returning a Promise<boolean> (or other result), making it easy to use in imperative code paths. It renders via a portal, supports custom titles, content, and buttons, and manages open/close transitions. The pattern of combining React state with async/await is clean and reusable for any application needing modals.

file: src/ui/components/Dialog.tsx ↗ | tags: #react-component #modal #async-dialog
Last analyzed: 2026-09-26 06:21:50.978119
Next check: 2026-10-03 06:21:50.974719
$ submit: