Release v1.1.0
- **Session persistence** — conversations are saved automatically as JSON in `~/.local/share/ait/sessions/` and restored on relaunch
- `ait session list` — shows past sessions with title, message count, and age
- `ait session new` — starts a fresh session, optionally with an initial prompt (`ait session new explain ownership`)
- `ait session export <id>` — exports a session as JSON to stdout (supports ID prefix matching)
- Auto-resume on REPL launch — active session tracked via an `active` symlink
- Resume notice on startup (dim `↱ Resuming "<title>"` line)
- Auto-generated session titles from the first user prompt (truncated to ~50 chars)
- Terminal tab title updates with the session title via OSC escape sequence
- `src/session/` module consolidating all session logic: `state.rs` (runtime types), `store.rs` (persistence), `title.rs` (auto-titling), `commands.rs` (CLI handlers)
- Timestamps on all messages (ISO 8601)
- UUID-based session IDs
- Unit tests for `SessionStore` round-trip, `SessionFile` serde, title generation, `Session::from_file`/`to_file`
- CLI subcommands are now nested: `ait session {list,new,export}` (matching the `ait config {path,edit,validate}` pattern)
- `Session` moved from `src/repl/session.rs` into `src/session/state.rs` and re-exported from `crate::session`
- `Message` now derives `Serialize`/`Deserialize` with a `timestamp` field
- `Session` carries `id` and `title` fields for persistence round-tripping
- Added `chrono` 0.4 (timestamps)
- Added `uuid` 1.0 with `v4` feature (session IDs)