yoo 0.4.0

A tiny developer companion for better coding sessions.
# yoo

<p align="center">
  <strong>A tiny developer companion for better coding sessions.</strong>
</p>

<p align="center">
  Start your session with good vibes, useful project details, environment checks, tip packs, and a local focus timer.
</p>

<p align="center">
  <a href="https://crates.io/crates/yoo">
    <img src="https://img.shields.io/crates/v/yoo?style=for-the-badge&logo=rust&label=crates.io" alt="Crates.io version">
  </a>
  <a href="https://crates.io/crates/yoo">
    <img src="https://img.shields.io/crates/d/yoo?style=for-the-badge&label=downloads" alt="Crates.io downloads">
  </a>
  <a href="https://github.com/nihitdev/scoop-nihitdev">
    <img src="https://img.shields.io/badge/Scoop-nihitdev-blue?style=for-the-badge" alt="Available via Scoop">
  </a>
  <a href="https://github.com/nihitdev/yo-cli/actions/workflows/ci.yml">
    <img src="https://github.com/nihitdev/yo-cli/actions/workflows/ci.yml/badge.svg" alt="CI status">
  </a>
  <a href="LICENSE">
    <img src="https://img.shields.io/badge/license-GPL--3.0--or--later-blue?style=for-the-badge" alt="GPL-3.0-or-later license">
  </a>
</p>


## What is yoo?

`yoo` is a Rust CLI that makes opening a terminal feel a little better.

It gives you a friendly developer-session greeting, shows the current project and Git state, offers practical tips, checks your Rust setup, and includes a lightweight local coding-session timer.

```text
Terminal open. Brain online. Let's go, Nihit. ⚡

📁 Project: yo-cli
🌿 Git branch: main
✏️ Working tree: clean

💡 Tip: Write the test that would have caught your last bug.
```

## Features

* 🚀 Friendly developer session starter
* 🩺 `yoo doctor` for Rust, Cargo, Git, config, and project checks
* ⏱️ Local coding-session timer with `yoo session`
* 📝 YAML configuration
* 💡 Built-in and community YAML tip packs
* 🌿 Current Git branch and working-tree status
* 🎨 Nine terminal themes
* 🦀 Written in Rust
* ✅ Unit tests, formatting checks, Clippy, and GitHub Actions CI
* ⚡ Developer-aware environment fetcher 
* 📄 JSON output for scripting and automation
## Screenshots

### Start a coding session

```bash
yoo --fast --name Nihit
```

<p align="center">
  <img src="docs/images/hero.png" alt="yoo welcome screen" width="780">
</p>

### Check your setup

```bash
yoo doctor
```

<p align="center">
  <img src="docs/images/doctor.png" alt="yoo doctor output with Rust and Git checks" width="780">
</p>

### Discover tip packs

```bash
yoo tips
```

<p align="center">
  <img src="docs/images/tips.png" alt="yoo list of built-in and local tip packs" width="780">
</p>

### Start a focus session

```bash
yoo session 25
```

<p align="center">
  <img src="docs/images/session.png" alt="yoo local coding session timer" width="780">
</p>
### Fetch your developer environment

```bash
yoo fetch
```

<p align="center">
  <img src="docs/images/fetch.png" alt="yoo fetch showing developer environment and project status" width="780">
</p>

## Installation

### Cargo (Cross-platform)

Install the latest version from crates.io:

```bash
cargo install yoo
```

Update later:

```bash
cargo install yoo --force
```

---

### Scoop (Windows)

Add the official Nihitdev bucket:

```powershell
scoop bucket add nihitdev https://github.com/nihitdev/scoop-nihitdev
```

Install **yoo**:

```powershell
scoop install yoo
```

Update later:

```powershell
scoop update
scoop update yoo
```

---

### WinGet (Windows)

> **Coming soon.** The package has been submitted to the official Microsoft WinGet Community Repository and will be available after approval.

```powershell
winget install --id Nihitdev.Yoo
```

---

Start your first developer session:

```bash
yoo
```
## Developer Fetch

`yoo fetch` is a developer-aware fetch command. It combines environment information with the project in your current directory.

```bash
yoo fetch
```

It detects:

* OS and architecture
* Shell, terminal, and editor when available
* Rust, Cargo, and Git versions
* Rust, Node.js, Python, Go, Java, and .NET project markers
* Current Git branch and working-tree status

Use JSON output for scripts and automation:

```bash
yoo fetch --json
```

`yoo status` is an alias for `yoo fetch`.

## Commands

```text
yoo
yoo doctor
yoo init
yoo config
yoo tips
yoo tip rust
yoo tip git
yoo session
yoo session 25
yoo fetch
yoo fetch --json
yoo status
```


## Useful Options

```bash
yoo --fast
yoo --name Nihit
yoo --theme tokyo-night
yoo --plain
yoo --no-art
```

## Themes

```text
neon
ocean
mono
dracula
tokyo-night
gruvbox
nord
rose-pine
catppuccin
```

Example:

```bash
yoo --fast --theme tokyo-night
```

## Configuration

Create the default YAML configuration and a sample community tip pack:

```bash
yoo init
```

Config locations:

```text
Windows: %APPDATA%\yoo\config.yaml
Linux:   ~/.config/yoo/config.yaml
macOS:   ~/Library/Application Support/yoo/config.yaml
```

Example configuration:

```yaml
version: 1

profile:
  name: Nihit

appearance:
  theme: tokyo-night
  ascii: true
  colors: true
  typing_speed_ms: 12

git:
  show_branch: true
  show_status: true

tips:
  enabled: true
  pack: rust

hydration:
  enabled: true

session:
  default_minutes: 25
  show_complete_message: true
```

Print the active config path:

```bash
yoo config
```

## Tip Packs

`yoo` ships with these built-in tip packs:

```text
general
git
linux
rust
```

Get one random Rust tip:

```bash
yoo tip rust
```

Community packs are YAML files stored here:

```text
Windows: %APPDATA%\yoo\tips
Linux:   ~/.config/yoo/tips
macOS:   ~/Library/Application Support/yoo/tips
```

Example community tip pack:

```yaml
name: web
description: Web-development reminders.

tips:
  - Test loading, error, and empty states.
  - Check the browser console before guessing.
  - Never expose secrets in frontend code.
```

Save it as `web.yaml`, then run:

```bash
yoo tip web
```

## Development

```bash
git clone https://github.com/nihitdev/yo-cli.git
cd yo-cli

cargo fmt
cargo test
cargo clippy -- -D warnings

cargo run -- doctor
cargo run -- --fast --name Nihit
```

## Quality Checks

Before pushing changes:

```bash
cargo fmt --check
cargo test
cargo clippy -- -D warnings
```

## Roadmap

* [x] Developer session greeting
* [x] Git branch and working-tree summary
* [x] YAML configuration
* [x] Themes
* [x] `yoo doctor`
* [x] Local coding-session timer
* [x] Community YAML tip packs
* [ ] `yoo fetch` developer environment and project status
* [ ] JSON output for `yoo fetch`
* [ ] More tip packs from contributors
* [ ] Config editor command
* [ ] Shell completion support
* [ ] Better terminal accessibility options
* [ ] Optional release update checker



## Contributing

Contributions, ideas, tip packs, and bug reports are welcome.

Read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request.

## License

`yoo` is licensed under the GNU General Public License v3.0 or later.

See [LICENSE](LICENSE) for details.

---

Built with ❤️ and Rust by [@nihitdev](https://github.com/nihitdev).