···99- **`ctrl+b` in pre-send** — toggle CC/BCC fields from the pre-send review screen (previously only available during compose)
1010- **`u` / `U` rebind** — `u` is now free for page-up (vim-style half-page scroll); `U` is undo last move/delete; `ctrl+u` clears all marks
1111- **Temp files in `/tmp/neomd/`** — all temp files (compose, preview, spell check) now live in `/tmp/neomd/` subdirectory for easy recovery after crashes and less clutter
1212+- **Improved onboarding** — auto-screening is now paused when screener lists are empty (first run), preventing all emails from being moved to ToScreen; activates automatically once the user classifies their first sender; welcome screen rewritten with step-by-step getting-started guide explaining the screener workflow, batch operations (`m` + `I`), and config hints (`:debug`, `auto_screen_on_load`)
1313+- **`]` / `[` folder navigation** — bracket keys now switch to next/previous folder tab (alongside `L`/`H` and `tab`/`shift+tab`)
12141315## 2026-03-31
1416- fix showing recipient in SENT tab (instead of from)
+20
README.md
···138138139139For the full configuration reference including multiple accounts, `[[senders]]` aliases, folder customization, signatures, and UI options, see [docs/configuration.md](docs/configuration.md).
140140141141+### Onboarding
142142+143143+On first launch, **auto-screening is paused** because your screener lists are empty — neomd won't move anything until you've classified your first sender. Your Inbox loads normally so you can explore.
144144+145145+**Getting started with the screener:**
146146+147147+1. From your Inbox, pick an email and press `I` (screen **in**) to approve the sender, or `O` (screen **out**) to block them. This creates your first screener list entry.
148148+2. Once you've classified at least one sender, auto-screening activates on every Inbox load — new emails from known senders are sorted automatically.
149149+3. Unknown senders land in the `ToScreen` tab. Jump there with `gk` (or `Tab`, or click the tab) and classify them:
150150+ - `I` screen **in** — sender stays in Inbox forever
151151+ - `O` screen **out** — sender never reaches Inbox again
152152+ - `F` **feed** — newsletters go to the Feed tab
153153+ - `P` **papertrail** — receipts go to the PaperTrail tab
154154+4. Use `m` to mark multiple emails, then `I` to batch-approve them all at once.
155155+156156+**The best part:** all classifications are saved permanently in your screener lists (`screened_in.txt`, `screened_out.txt`, etc.). An email address screened in will automatically go to your Inbox, and any email screened out will never be in your Inbox again.
157157+158158+You choose who can land in your Inbox. Bye-bye spam. This is the beauty of [HEY-Screener](https://www.hey.com/features/the-screener/), and neomd implements the same concept.
159159+160160+> **Tip:** To disable auto-screening entirely, set `auto_screen_on_load = false` in `[ui]` config. Run `:debug` inside neomd if something isn't working.
141161## Keybindings
142162143163Press `?` inside neomd to open the interactive help overlay. Start typing to filter shortcuts.
+2-2
docs/keybindings.md
···23232424| Key | Action |
2525|-----|--------|
2626-| `L / tab` | next folder tab |
2727-| `H / shift+tab` | previous folder tab |
2626+| `L / ] / tab` | next folder tab |
2727+| `H / [ / shift+tab` | previous folder tab |
2828| `gi` | go to Inbox |
2929| `ga` | go to Archive |
3030| `gf` | go to Feed |
+7
internal/screener/screener.go
···8484 return s, nil
8585}
86868787+// IsEmpty returns true when all screener lists are empty (no senders classified yet).
8888+// This typically means neomd is running for the first time or lists were cleared.
8989+func (s *Screener) IsEmpty() bool {
9090+ return len(s.screenedIn) == 0 && len(s.screenedOut) == 0 &&
9191+ len(s.feed) == 0 && len(s.paperTrail) == 0 && len(s.spam) == 0
9292+}
9393+8794// AllAddresses returns a deduplicated slice of all known email addresses
8895// from screened_in, feed, and papertrail lists. Useful for autocomplete.
8996// Excludes screened_out and spam since you wouldn't want to email those.