nyado 0.3.1

A Rust todo-list manager with TUI, inspired by meowdo
# nyado – a Rust todo‑list with TUI

![Rust Version](https://img.shields.io/badge/rust-1.70+-orange.svg)
![License](https://img.shields.io/badge/license-MIT-blue.svg)
![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20Windows%20(unofficial)%20%7C%20x86__64%20%7C%20aarch64-lightgrey)
![TUI](https://img.shields.io/badge/UI-ratatui-purple)
![i18n](https://img.shields.io/badge/i18n-multilingual-brightgreen)
![Features](https://img.shields.io/badge/features-tags%20%7C%20search%20%7C%20due%20dates-yellow)
![GitHub release](https://img.shields.io/github/v/release/LeynTheCat/nyado)

<img align="left" src="img/nyado.png" width="120" alt="nyado logo">

```
nyado is a terminal-based task manager inspired by meowdo.
It supports multiple languages, tags, search, pinning, due dates.
```

![nyado preview](img/preview.png)

## Installation

Choose one of the following methods:

### 1. From crates.io (requires Rust)

```
cargo install nyado
```

This will download and compile the latest version. Language files are built into the binary, but you can override them by placing your own `lang_*.toml` files in `~/.config/nyado/` (Linux) or `%APPDATA%\Local\nyado` (Windows).

### 2. Arch Linux (AUR)

If you are on Arch Linux (or an Arch‑based distribution), you can install one of the AUR packages:

- **Pre‑compiled binary** (fast, no compilation):
  ```
  paru -S nyado-bin
  ```
  or
  ```
  yay -S nyado-bin
  ```

- **Source – release tarball** (compiled from the latest release):
  ```
  paru -S nyado
  ```

- **Source – latest git commit** (bleeding edge):
  ```
  paru -S nyado-git
  ```
  
All three packages provide the `nyado` command and automatically install the required language files.

### 3. Quick install (binary, no compilation)

```
curl -sSL https://raw.githubusercontent.com/LeynTheCat/nyado/main/install_bin.sh | bash
```

This script:
- Detects your CPU architecture (x86_64 or aarch64)
- Downloads the latest pre‑built static binary from GitHub Releases
- Installs it to `~/.local/bin/`
- Fetches and installs language files to `~/.config/nyado/` (replaces old configs)

### 4. Build from source (via install script)

```
curl -sSL https://raw.githubusercontent.com/LeynTheCat/nyado/main/install.sh | bash
```

The script will:
- Download the latest source code from GitHub
- Install Rust/Cargo automatically (Arch, Debian/Ubuntu, Fedora, openSUSE, or rustup)
- Build nyado in release mode
- Install binary and config files

### 5. Manual installation (git clone)

```
git clone https://github.com/LeynTheCat/nyado.git
cd nyado
./install.sh
```

or without cloning:

```
cargo install --git https://github.com/LeynTheCat/nyado.git
mkdir -p ~/.config/nyado
cp config/*.toml ~/.config/nyado/
```

### 6. Windows (unsupported, but possible)

Compiling for Windows is possible – just run `cargo build --release` on a Windows machine with Rust installed. However, **I do not provide official support for Windows**. If you want to run nyado on Windows, place the `config/*.toml` files into `%APPDATA%\Local\nyado` and add the directory containing `nyado.exe` to your `PATH` environment variable.

## Update

- **Binary installation**: simply run the same quick install command again – it will download the latest binary and update config files.
- **Source installation (from git)**: cd into the cloned directory and run `./install.sh update`.
- **If you used the one‑line curl installer**: just run the same command again – it will overwrite the binary and configs.
- **crates.io version**: run `cargo install nyado --force` to upgrade.
- **AUR packages**: update with your AUR helper, e.g., `paru -Syu nyado-bin`.

## Uninstall

To completely remove nyado:

```
./install.sh uninstall
```

This deletes the binary from `~/.local/bin/` and the config directory `~/.config/nyado/`.
Your tasks data is stored separately in `~/.local/share/nyado/` – if you want to remove that too, delete it manually:

```
rm -rf ~/.local/share/nyado
```

For Windows, manually delete the executable and the `%APPDATA%\Local\nyado` folder.

## Usage

Just run `nyado` from your terminal.

### Key bindings

| Action              | Keys (English / Russian)                          |
|---------------------|---------------------------------------------------|
| Quit                | q / й                                             |
| Language switch     | l / L / д / Д                                     |
| Navigate down       | j / о , ↓                                         |
| Navigate up         | k / л , ↑                                         |
| Top / Bottom        | g / п , G / П (or Home / End)                     |
| Page down / up      | PageDown / PageUp                                 |
| New task            | n / т                                             |
| Edit task           | e / у                                             |
| Toggle done         | Space                                             |
| Pin / unpin         | p / з                                             |
| Set tag             | t / е                                             |
| Delete task         | d / в                                             |
| Delete all tasks    | D / В (Shift + letter)                            |
| Search              | / / .                                             |
| Filter by tag (1‑9) | 1…9 (only for existing tags)                      |
| Clear filters       | Esc                                               |
| Set due date/time   | M / m / ь / Ь                                     |
| Show help           | h / р , ?                                         |
| Project actions	    | f / а                                             |
| Previous project    |	[ / х                                             |
| Next project        | ] / ъ                                             |

Note: Filtering works for the first nine most‑used tags displayed in the right panel.
Press 1‑9 to filter by that tag, press Esc to clear the filter and the search query.

## Localisation

- Language files are stored in `~/.config/nyado/lang_*.toml` (Linux) or `%APPDATA%\Local\nyado\lang_*.toml` (Windows).
- You can add your own language by placing a `lang_xx.toml` file there (just copy an existing one and translate).

## Data storage

All data is stored in `~/.local/share/nyado/` (Linux) or `%APPDATA%\Local\nyado` (Windows).

- Projects are saved as separate text files inside `projects/` (e.g., `projects/default.txt`).
- Backup copies are kept in `projects/.backups/<project>/`.

Each task is stored as a single line in the following pipe‑separated format:

```
<pin>|<done>|<tag>|<text>|<created_at>|<done_at>|<due_date>
```

| Field       | Description                                               |
|-------------|-----------------------------------------------------------|
| `<pin>`     | `P` if pinned, otherwise `-`                             |
| `<done>`    | `x` if done, otherwise space (` `)                        |
| `<tag>`     | Tag name, or `none` if no tag                             |
| `<text>`    | Task text                                                 |
| `<created_at>` | Unix timestamp (seconds) of creation                     |
| `<done_at>` | Unix timestamp when completed, or `0`                     |
| `<due_date>`| Unix timestamp of due date, or `0` if not set             |

You may edit these files manually, but be cautious.

## Requirements

- Linux (x86_64 or aarch64) – any distribution with a decent terminal (unicode support).
- For the binary installer: curl.
- For the source installer: Rust toolchain (installed automatically if missing).
- Windows: not officially supported, but you can compile it yourself.

## Contributing

Feel free to open issues or pull requests.
The code is modular (each UI component lives in src/ui/), and the i18n system supports adding new languages easily.