minor changes
This commit is contained in:
@@ -1,3 +1,81 @@
|
||||
# lazymail
|
||||
|
||||
A TUI for the git mailing list.
|
||||
A TUI for the git mailing list.
|
||||
|
||||
## Status
|
||||
|
||||
Early scaffold: a Lazygit-style TUI over in-memory mock data, with a real
|
||||
on-disk file picker for patch attachments.
|
||||
|
||||
- **Browse** — three panes: threads, messages, preview.
|
||||
- **Participants** — filter threads and messages by participant (`f`), or
|
||||
narrow to the selected thread's author with one key (`F`).
|
||||
- **Preview** — shows the message body with any inline diff hidden; press `p`
|
||||
to open the patch in a wide overlay.
|
||||
- **Live** — threads and messages auto-refresh on a 2s tick while live (`t`).
|
||||
- **Sender** — a separate screen for composing and sending a patch series
|
||||
(`s`), with a yazi-like file picker rooted at `$HOME`.
|
||||
- **Help** — `?` separates global keybinds from context-local ones.
|
||||
|
||||
The real backend will fetch each list's public-inbox archive (e.g.
|
||||
[`lore.kernel.org/git`](https://lore.kernel.org/git/)) or shell out to
|
||||
`b4`/`lei`. Sending is not implemented yet.
|
||||
|
||||
## Layout
|
||||
|
||||
Browse:
|
||||
|
||||
```
|
||||
┌ lazymail · git.vger.kernel.org ● LIVE · ⌕ [email protected] 8 threads ┐
|
||||
├─ Threads (25%) ────┬─ Messages (35%) ──────────┬─ Preview ─────────────────────┤
|
||||
│ ▍[PATCH v4 0/5]... │ ▍[PATCH v4 0/5] cover ... │ From: Victoria Dye <vdye@...> │
|
||||
│ author · date │ From ... · to git@... │ Date: ... │
|
||||
│ [PATCH v2 0/2]... │ [PATCH v4 1/5] ... │ Subject: [PATCH v4 0/5] ... │
|
||||
│ ... │ ... │ body (diff hidden) │
|
||||
│ │ │ patch hidden · press p │
|
||||
├────────────────────┴───────────────────────────┴───────────────────────────────┤
|
||||
│ 1-3 focus · Tab cycle · j/k move · / filter · f participants · p patch ... │
|
||||
└─────────────────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
Sender (the right column is the file picker, active while the `Patches` field is
|
||||
focused):
|
||||
|
||||
```
|
||||
┌ lazymail · sender · git.vger.kernel.org ───────────────────────────────────────┐
|
||||
├─ Compose ──────────────────────────────────┬─ ~/patches/v4 ─────────────────────┤
|
||||
│ ▸ To: [email protected] │ ../ │
|
||||
│ Cc: (none) │ ▍0001-refs-reftable.patch 3.2 KB │
|
||||
│ Subject: [PATCH 0/2] ... │ 0002-tests.patch 1.1 KB │
|
||||
│ Body: │ README.md │
|
||||
│ Cover letter stub. │ │
|
||||
├────────────────────────────────────────────┴────────────────────────────────────┤
|
||||
│ tab field · ←/→ cursor · j/k picker · enter attach · . hidden · ^S send ... │
|
||||
└─────────────────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## Run
|
||||
|
||||
```sh
|
||||
cargo run
|
||||
```
|
||||
|
||||
Keys:
|
||||
|
||||
- **Browse**: `1`/`2`/`3` or `Tab`/`h`/`l` focus panes · `j`/`k` or arrows move ·
|
||||
`enter` drill into the next pane (threads → messages → preview) · `PgUp`/`PgDn`
|
||||
scroll the preview · `/` text filter · `f` participant filter · `F` filter by the
|
||||
selected thread's author · `c` clear participant filter · `p` open the patch
|
||||
overlay (Preview focused) · `t` toggle live refresh · `r` refresh ·
|
||||
`L` mailing lists · `s` sender · `?` help · `q` quit.
|
||||
- **Participants**: type to search · `j`/`k` move · `enter` apply · `esc` close.
|
||||
- **Patch overlay**: `j`/`k` scroll · `esc`/`p`/`enter` close.
|
||||
- **Lists**: `j`/`k` move · `enter` switch list · `esc` close.
|
||||
- **Sender**: `Tab` cycle fields · arrows/`Home`/`End` move the cursor ·
|
||||
`Backspace`/`Delete` edit · in the `Patches` field `j`/`k` move the picker,
|
||||
`l`/`Right`/`enter` open a directory or attach a file, `h`/`Left`/`Backspace`
|
||||
go up, `.` toggle hidden files, `J`/`K` move the attached-patch selection,
|
||||
`a` add a stub patch, `d` remove ·
|
||||
`Ctrl+S` send (stub) · `esc` back.
|
||||
- **Help**: `?` shows global bindings first, then the bindings local to the
|
||||
current screen, mode, and focused pane.
|
||||
|
||||
Reference in New Issue
Block a user