Release v0.7.0 - In-memory conversation history — AI calls include full session context (`src/session.rs`) - Multi-command loop — AI can request shell commands via bash blocks, receive output, and iterate up to 5 times before giving a final answer - `run_command_captured()` captures stdout/stderr (`src/execution/runner.rs`) — used for both AI-requested and user-initiated commands - `extract_all_bash_blocks()` extracts all bash/sh fenced blocks from a response (`src/output.rs`) - `Session` struct with `Message` history and automatic trimming at 50 messages - `Session::record_command()` stores user shell command output into session history so the AI can reference it - `handle_prompt_oneshot()` for one-shot CLI mode (temporary session, no persistence) - `NATURAL_LANGUAGE_WORDS` list in `cli.rs` — common English words (`what`, `how`, `test`, `time`, etc.) that also exist as binaries are filtered out of shell command detection - 13 new unit tests (session trimming, record_command formatting, command capture, multi-block extraction, natural language word filtering) - `ForcedShellCommand` variant in `InputKind` — `!` prefix bypasses safety checks entirely, runs directly with captured output - `AnthropicProvider::stream()` and `send_request()` now accept `&[Message]` history instead of a single prompt string - `AiContext::handle_prompt()` is now a multi-command loop with `&mut Session` parameter - System prompt updated: tells the model its bash commands will be executed and output returned, enabling multi-turn command gathering - REPL creates a `Session` at startup and threads it through every AI interaction - REPL captures output from all executed user shell commands (whitelisted, confirmed, and edited) into the session - One-shot mode uses `handle_prompt_oneshot()` with a temporary session - Input classification: replaced uppercase-only check with case-insensitive `NATURAL_LANGUAGE_WORDS` filter for more robust prompt detection