muffintui 0.1.0

A terminal workspace that combines a file tree, editor, shell, and embedded Codex pane
# muffintui

`muffintui` is a terminal workspace for code navigation and command execution with four panes:

- Files
- Editor
- Terminal
- Codex

It is designed to be launched inside any project directory. The current working directory becomes:

- the root of the Files pane
- the working directory for shell commands
- the working directory for the embedded Codex session

## Requirements

- Rust and Cargo
- `codex` installed and available on `PATH`

## Install

Install from the local repository:

```bash
cargo install --path .
```

After publishing to `crates.io`, users will be able to install it with:

```bash
cargo install muffintui
```

## Run

Run in the current directory:

```bash
muffintui
```

Run against another project:

```bash
cd /path/to/project
muffintui
```

For local development without reinstalling:

```bash
cargo run
```

## Update After Changes

Reinstall the current local source:

```bash
cargo install --path .
```

## Keybindings

### Global

- `Tab`: move focus to the next pane
- `Shift+Tab`: cycle the UI theme
- `Esc`: quit
- `Ctrl+C`: quit when not focused on Codex

### Files Pane

- `Up` or `k`: move selection up
- `Down` or `j`: move selection down
- `Enter` on a folder: expand or collapse that folder in place
- `Enter` on a file: open the file in the editor

### Editor Pane

- `PageUp`: scroll up
- `PageDown`: scroll down
- `Ctrl+D`: toggle between normal view and diff view

Editor modes:

- `Normal`: show the current file contents
- `Diff`: show `git diff HEAD~1 -- <file>` for the selected file

If the repository does not have a previous commit, diff mode shows a fallback message instead.

### Terminal Pane

- Type any shell command directly
- `Enter`: run the command
- `Backspace`: delete one character from the prompt
- `PageUp`: scroll terminal history up
- `PageDown`: scroll terminal history down
- `Home`: jump to the oldest visible terminal history
- `End`: jump back to the live prompt/output

When a command runs, the terminal automatically snaps back to the latest output.

### Codex Pane

- Regular typing: send keystrokes directly to the embedded `codex` session
- `Enter`: submit input to Codex
- `Ctrl+C`: send interrupt to Codex instead of quitting the TUI

Note:

- Codex pane scrolling is currently handled by the embedded Codex application itself, not by `muffintui`

## Publishing

Publish with:

```bash
cargo login
cargo package
cargo publish
```