@dilapidated-penguin/cubetimer
Version:
fast and lightweight CLI timer for speedcubing. Track your solves, get random scrambles, and analyze your times
77 lines (59 loc) ⢠3.13 kB
Markdown
# š§© CubeTimer


A **fast and lightweight CLI timer** for speedcubing. Generate random scrambles and track your solves and analyze your times.
## š Features
- ā
Accurate Timer - Spacebar activated timer
- ā
Scramble Generator ā Provides scrambles for 2x2-7x7, Megaminx, Pyraminx, Skewb, Square-1, and Clock.
- ā
Session Statistics ā Tracks mean, average of 5/12, best/worst times, and standard deviation.
<img src="assets/help.PNG" alt="Help page of the cli" width="500">
## š¦ Installation
### **Prerequisites**
- Requires **Node.js v16+**.
### **Install via npm**
```sh
npm install -g @dilapidated-penguin/cubetimer
```
### **Run in Local Development**
```sh
git clone https://github.com/Dilapidated-Penguin/speedcubing-timer-cli.git
cd cubetimer
npm install
npm start
```
## šÆ Usage
### **Start a Timer**
```sh
cubetimer start
```
Hold down the **spacebar** to prime the timer, release it to start and tap the **spacebar** again to stop the timer
### **Other commands**
Below are some of the other commands and a brief explanations for what each does
- **Scramble** <format> [number] [length]: Generate either 1 or the specified number of scrambles of the requested format. The command will default to the scramble length in the settings
- **graph** [option] <property>: Generate a graph of the specified property(Eg. graphing the mean of the sessions)
- **metronome** [bpm]: Begins a metronome between for any bpm specified between 3 and 180 bpm
- **show-session** : View previous solve sessions and a list of each solve
## šØ Development
### **Build TypeScript**
```sh
npm run build
```
## š ļø Dependencies
- [`@futpib/node-global-key-listener`](https://www.npmjs.com/package/@futpib/node-global-key-listener) ā Global key listening for timing functionality.
- [`chalk`](https://www.npmjs.com/package/chalk) ā Terminal styling.
- [`keypress`](https://www.npmjs.com/package/keypress) ā Key event handling.
- [`scrambow`](https://www.npmjs.com/package/scrambow)
ā Scrambow is used for scramble generation and so the question of whether this cli supports an event is implicitly the question of whether scrambow supports the event.
- [`nice-table`](https://www.npmjs.com/package/nice-table) - for rendering tables in the console with a clean and structured format.
- [cfonts](https://www.npmjs.com/package/cfonts) - ANSI fonts
## Known Issues
š“ Key listening continues to listen when the window is out of focus
- Description: Key listener used in the timer will continue to the key events even when user is in another window
Status: ā
Fixed in v1.0.6
š“ Solve Labelling
- Description: Pressing e in solve mode multiple times will make multiple prompts to label the last solve
Status: ā
Fixed in v1.0.34
## š License
This project is licensed under the **MIT License**.
---
š§ **Note:** This project is very much still in development. Expect updates and new features! š