rick-cli 0.3.0

A better cURL, written in Rust
# rick Roadmap

## v0.3.0 - Colors & Typography (DONE)

*Good CLI design is 90% aesthetics. Colors and typography make the difference between a tool people tolerate and a tool people love.*

- [x] **Colored HTTP status codes**
  - Green for 2xx (success)
  - Yellow for 3xx (redirect)
  - Red for 4xx/5xx (errors)
  - Bold status line for emphasis

- [x] **JSON syntax highlighting**
  - Keys in blue (bold), strings in green, numbers in yellow
  - Booleans in cyan, null in purple
  - Automatic pretty-printing with indentation
  - `--pretty` flag for explicit formatting

- [x] **Request/response visual hierarchy**
  - Dim colors for headers, bright for body
  - Clear visual separation between request (`>`) and response (`<`)
  - Method colored by type (GET=green, POST=blue, PUT/PATCH=yellow, DELETE=red)

- [x] **Progress indicators**
  - Spinner during request (braille animation)
  - Progress bar for large downloads (>100KB) with ETA and speed

- [x] **Error formatting**
  - Red bold for errors
  - Helpful hints in dim text
  - Contextual suggestions (connection errors, timeouts, redirects)

- [x] **Typography options**
  - `--no-color` for piping/CI
  - `--color=always|never|auto` for explicit control
  - Respects `NO_COLOR` environment variable (no-color.org standard)
  - Auto-detects TTY for smart color decisions

## v0.4.0 - Performance & Benchmarks

- [ ] **Benchmark suite against cURL**
  - Request latency comparison (cold start, warm)
  - Throughput for large file downloads
  - Memory usage comparison
  - Binary startup time
  - CI integration to track performance over time

- [ ] **Response time display**
  - Show request duration with `--time` flag
  - Breakdown: DNS, connect, TLS, first byte, total
  - Colored timing (green=fast, yellow=slow, red=timeout)

## v0.5.0 - Quality of Life

- [ ] **Read body from file**
  - `--json @file.json` syntax (like cURL)
  - `--data @file.txt` for raw data

- [ ] **Timeout configuration**
  - `--timeout <seconds>` for total request timeout
  - `--connect-timeout <seconds>` for connection phase

- [ ] **Retry logic**
  - `--retry <count>` for automatic retries
  - `--retry-delay <seconds>` between attempts

## v0.6.0 - Advanced Features

- [ ] **Multiple URLs**
  - `rick url1 url2 url3` for parallel requests
  - Aggregate results

- [ ] **Request templates / profiles**
  - Save common requests to config file
  - `rick @profile-name`

- [ ] **Environment variable support**
  - `--env` to load from .env file
  - Variable substitution in URLs and headers

## Not Planned

These features are intentionally out of scope:

- **Other protocols** (FTP, SFTP, LDAP, etc.) - rick is HTTP(S) only
- **Cookie jars** - use browser dev tools or Postman
- **.netrc support** - outdated auth mechanism
- **libcurl compatibility** - we're not a drop-in replacement
- **Proxy authentication** - adds complexity for rare use case

## Contributing

Want to work on something? Open an issue first to discuss the approach.

See [DECISIONS.md](DECISIONS.md) for design philosophy.