diff --git a/.claude/settings.local.json b/.claude/settings.local.json
index edae280..721803d 100644
--- a/.claude/settings.local.json
+++ b/.claude/settings.local.json
@@ -6,9 +6,11 @@
"Bash(make build:*)",
"Bash(make test:*)",
"WebFetch(domain:www.ssp.sh)",
- "Bash(roborev --help:*)",
- "WebFetch(domain:www.roborev.io)",
- "Bash(roborev check-agents:*)"
+ "Bash(make docs-build:*)",
+ "Bash(hugo version:*)",
+ "Bash(hugo mod graph:*)",
+ "Bash(make docs-sync:*)",
+ "WebFetch(domain:raw.githubusercontent.com)"
]
}
}
diff --git a/.github/workflows/deploy-docs.yaml b/.github/workflows/deploy-docs.yaml
new file mode 100644
index 0000000..fc5603b
--- /dev/null
+++ b/.github/workflows/deploy-docs.yaml
@@ -0,0 +1,85 @@
+# Deploy Hugo documentation site to GitHub Pages
+name: Deploy Documentation
+
+on:
+ # Runs on pushes targeting the main branch
+ push:
+ branches: ["main", "neomd-docs"]
+ paths:
+ - 'docs/**'
+ - '.github/workflows/deploy-docs.yaml'
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
+# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
+concurrency:
+ group: "pages"
+ cancel-in-progress: false
+
+# Default to bash
+defaults:
+ run:
+ shell: bash
+
+jobs:
+ # Build job
+ build:
+ runs-on: ubuntu-latest
+ env:
+ HUGO_VERSION: 0.156.0
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0 # fetch all history for .GitInfo and .Lastmod
+ submodules: recursive
+
+ - name: Setup Go
+ uses: actions/setup-go@v5
+ with:
+ go-version: '1.24'
+
+ - name: Setup Pages
+ id: pages
+ uses: actions/configure-pages@v4
+
+ - name: Setup Hugo
+ run: |
+ wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
+ && sudo dpkg -i ${{ runner.temp }}/hugo.deb
+
+ - name: Build with Hugo
+ env:
+ # For maximum backward compatibility with Hugo modules
+ HUGO_ENVIRONMENT: production
+ HUGO_ENV: production
+ run: |
+ cd docs
+ hugo \
+ --gc --minify \
+ --baseURL "${{ steps.pages.outputs.base_url }}/"
+
+ - name: Upload artifact
+ uses: actions/upload-pages-artifact@v3
+ with:
+ path: ./docs/public
+
+ # Deployment job
+ deploy:
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: ubuntu-latest
+ needs: build
+ steps:
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v4
diff --git a/Makefile b/Makefile
index 9bac477..856953e 100644
--- a/Makefile
+++ b/Makefile
@@ -6,6 +6,9 @@ LDFLAGS := -ldflags "-X main.version=$(VERSION)"
.PHONY: build run install clean test test-integration send-test vet fmt tidy release docs help check-go demo demo-reset demo-hp demo-hp-reset benchmark
+
+.DEFAULT_GOAL := install
+
## check-go: verify Go is installed
check-go:
@command -v go >/dev/null 2>&1 || { \
@@ -110,7 +113,7 @@ clean:
rm -f $(BINARY) $(BINARY)-android
## release: tag and push a new release (usage: make release VERSION=v0.1.0)
-release: docs
+release: docs docs-build
@test -n "$(VERSION)" || (echo "Usage: make release VERSION=v0.1.0" && exit 1)
git tag -a $(VERSION) -m "Release $(VERSION)"
git push origin $(VERSION)
@@ -119,6 +122,23 @@ release: docs
## docs: regenerate keybindings section in README.md from internal/ui/keys.go
docs:
go run ./cmd/docs
+ @./scripts/sync-readme-to-docs.sh
+
+## docs-sync: sync README.md to docs/content/overview.md
+docs-sync:
+ ./scripts/sync-readme-to-docs.sh
+
+## docs-serve: serve Hugo docs site locally at http://localhost:1313
+docs-serve:
+ $(MAKE) -C docs serve
+
+## docs-build: build Hugo docs site to docs/public/
+docs-build:
+ $(MAKE) -C docs build
+
+## docs-clean: remove generated Hugo files
+docs-clean:
+ $(MAKE) -C docs clean
## help: print this list
help:
diff --git a/cmd/docs/main.go b/cmd/docs/main.go
index 55c8d0b..d9e895b 100644
--- a/cmd/docs/main.go
+++ b/cmd/docs/main.go
@@ -1,4 +1,4 @@
-// docs regenerates the keybindings section in docs/keybindings.md from the
+// docs regenerates the keybindings section in docs/content/docs/keybindings.md from the
// single source of truth in internal/ui/keys.go.
//
// Usage: go run ./cmd/docs (or: make docs)
@@ -17,7 +17,7 @@ import (
)
const (
- readmePath = "docs/keybindings.md"
+ readmePath = "docs/content/docs/keybindings.md"
startTag = ""
endTag = ""
)
diff --git a/docs/.gitignore b/docs/.gitignore
new file mode 100644
index 0000000..2e0b9e9
--- /dev/null
+++ b/docs/.gitignore
@@ -0,0 +1,4 @@
+# Hugo build artifacts
+public/
+resources/
+.hugo_build.lock
diff --git a/docs/Makefile b/docs/Makefile
new file mode 100644
index 0000000..ecbfa72
--- /dev/null
+++ b/docs/Makefile
@@ -0,0 +1,22 @@
+.PHONY: serve build clean help
+
+.DEFAULT_GOAL := serve
+
+## serve: serve Hugo docs site locally at http://localhost:1313
+serve:
+ @echo "Starting Hugo development server..."
+ hugo server -D --port 1311
+
+## build: build Hugo docs site to public/
+build:
+ @echo "Building Hugo docs site..."
+ hugo --gc --minify
+
+## clean: remove generated files
+clean:
+ @echo "Cleaning generated files..."
+ rm -rf public resources .hugo_build.lock
+
+## help: print this list
+help:
+ @grep -E '^## ' Makefile | sed 's/^## //'
diff --git a/docs/content/_index.md b/docs/content/_index.md
new file mode 100644
index 0000000..0cf7e3b
--- /dev/null
+++ b/docs/content/_index.md
@@ -0,0 +1,105 @@
+---
+title: neomd
+layout: hextra-home
+toc: false
+---
+
+
+{{< hextra/hero-headline >}}
+ A minimal terminal email client
for people who read & write in Markdown
+{{< /hextra/hero-headline >}}
+
+
+
+{{< hextra/hero-subtitle >}}
+ Compose in Neovim, navigate with Vim motions, screen emails like HEY,
process your inbox with GTD — all from the terminal
+{{< /hextra/hero-subtitle >}}
+
+
+
+{{< hextra/hero-button text="Overview and Philosophy" link="docs/overview" >}}
+
+
+
+
+
+
What Makes neomd Different?
+
+
+{{< hextra/feature-grid >}}
+ {{< hextra/feature-card
+ title="HEY-Style Screener"
+ subtitle="Unknown senders wait in ToScreen until you approve (I), block (O), or categorize them. You choose who reaches your inbox — bye-bye spam."
+ class="aspect-auto md:aspect-[1.1/1] max-md:min-h-[340px]"
+ style="background: radial-gradient(ellipse at 50% 80%,rgba(1,97,254,0.15),hsla(0,0%,100%,0));"
+ >}}
+ {{< hextra/feature-card
+ title="GTD Workflow"
+ subtitle="Process your inbox only once. Move emails to Waiting, Someday, Scheduled, or Archive with single keystrokes. Includes Feed and PaperTrail for newsletters and receipts."
+ class="aspect-auto md:aspect-[1.1/1] max-lg:min-h-[340px]"
+ style="background: radial-gradient(ellipse at 50% 80%,rgba(194,97,254,0.15),hsla(0,0%,100%,0));"
+ >}}
+ {{< hextra/feature-card
+ title="Superhuman Speed"
+ subtitle="Folder switches in ~33ms (on fast IMAP providers like Hostpoint). Every action is instant — no loading spinners, no delays. Navigate with Vim motions."
+ class="aspect-auto md:aspect-[1.1/1] max-md:min-h-[340px]"
+ style="background: radial-gradient(ellipse at 50% 80%,rgba(142,53,74,0.15),hsla(0,0%,100%,0));"
+ >}}
+ {{< hextra/feature-card
+ title="Neovim Integration"
+ subtitle="Compose in $EDITOR (nvim), send as Markdown → HTML multipart. Pre-send review prevents accidental sends. Auto-backup drafts to ~/.cache."
+ class="aspect-auto md:aspect-[1.1/1] max-md:min-h-[340px]"
+ style="background: radial-gradient(ellipse at 50% 80%,rgba(12,53,74,0.15),hsla(0,0%,100%,0));"
+ >}}
+ {{< hextra/feature-card
+ title="Direct IMAP/SMTP"
+ subtitle="No local sync daemon. Uses RFC 6851 MOVE for instant operations. Works on any device with your mailbox always in sync."
+ class="aspect-auto md:aspect-[1.1/1] max-lg:min-h-[340px]"
+ style="background: radial-gradient(ellipse at 50% 80%,rgba(221,210,59,0.15),hsla(0,0%,100%,0));"
+ >}}
+ {{< hextra/feature-card
+ title="Keyboard-First"
+ subtitle="Vim motions everywhere. j/k navigation, gg/G jumps, / search, numbered links [1]-[0], multi-select with m, undo with u."
+ class="aspect-auto md:aspect-[1.1/1] max-md:min-h-[340px]"
+ style="background: radial-gradient(ellipse at 50% 80%,rgba(59,130,246,0.15),hsla(0,0%,100%,0));"
+ >}}
+{{< /hextra/feature-grid >}}
+
+
+
+
+
Video Demo
+
+
+YouTube rundown of most features:
+[](https://youtu.be/8aKkldYLWV8)
+
+
+
+
Documentation
+
+
+{{< cards cols="3" >}}
+ {{< card link="docs/overview" title="Overview & Philosophy" subtitle="Full feature list, installation (binary, AUR, source), philosophy, benchmarks, and inspiration" >}}
+ {{< card link="docs/configuration" title="Configuration Reference" subtitle="Full config with multiple accounts, OAuth2, signatures, and UI options" >}}
+ {{< card link="docs/keybindings" title="Keybindings" subtitle="Complete keyboard shortcuts reference (auto-generated from source)" >}}
+ {{< card link="docs/screener" title="Screener Workflow" subtitle="How to classify emails, bulk operations, and screener lists" >}}
+ {{< card link="docs/reading" title="Reading Emails" subtitle="Navigation, images, links, attachments, threading" >}}
+ {{< card link="docs/sending" title="Sending Emails" subtitle="Compose, attachments, CC/BCC, drafts, HTML signatures" >}}
+{{< /cards >}}
+
+
+
+
+{{< hextra/hero-button text="Getting Started: Install" link="docs/overview#install" >}}
+
+
+
+
+
Links
+
+
+- [GitHub Repository](https://github.com/ssp-data/neomd)
+- [Changelog](https://github.com/ssp-data/neomd/blob/main/CHANGELOG.md)
+- [Roadmap](https://www.ssp.sh/brain/neomd#roadmap)
+- [Security Policy](https://github.com/ssp-data/neomd/blob/main/SECURITY.md)
diff --git a/docs/content/docs/_index.md b/docs/content/docs/_index.md
new file mode 100644
index 0000000..b78ee21
--- /dev/null
+++ b/docs/content/docs/_index.md
@@ -0,0 +1,5 @@
+---
+title: Documentation
+---
+
+Welcome to the neomd documentation.
diff --git a/docs/configuration.md b/docs/content/docs/configuration.md
similarity index 94%
rename from docs/configuration.md
rename to docs/content/docs/configuration.md
index c90d3d5..91f254f 100644
--- a/docs/configuration.md
+++ b/docs/content/docs/configuration.md
@@ -1,4 +1,7 @@
-# Configuration Reference
+---
+title: Configuration Reference
+weight: 1
+---
On first run, neomd creates `~/.config/neomd/config.toml` with placeholders.
@@ -64,7 +67,7 @@ spam = "spam" #check capitalization of your pre-existing Spam folder, so
# work = "Work" # optional custom folder; add "work" to tab_order to show as a tab (gb to go, Mb to move -b for business as w was taken)
# tab_order controls the left-to-right tab sequence; omit to use the built-in default order. e.g.:
# tab_order = ["inbox", "to_screen", "feed", "papertrail", "waiting", "someday", "scheduled", "sent", "archive", "screened_out", "drafts", "trash"]
-# Gmail uses different folder names — see docs/gmail.md for the correct mapping.
+# Gmail uses different folder names — see docs/content/gmail.md for the correct mapping.
[ui]
theme = "dark" # dark | light | auto
@@ -82,14 +85,15 @@ Connect: [LinkedIn](https://example.com/)
```
-> [!NOTE]
-> **Gmail** uses different IMAP folder names (`[Gmail]/Sent Mail`, `[Gmail]/Trash`, etc.). See [Gmail Configuration](gmail.md) for the correct mapping.
+{{< callout type="info" >}}
+**Gmail** uses different IMAP folder names (`[Gmail]/Sent Mail`, `[Gmail]/Trash`, etc.). See [Gmail Configuration](configurations/gmail) for the correct mapping.
+{{< /callout >}}
Use an app-specific password (Gmail, Fastmail, Hostpoint, etc.) rather than your main account password.
`inbox_count` is a fetch cap for normal folder loads and startup auto-screening. If you want to re-screen the entire Inbox on the IMAP server, use `:screen-all` from inside neomd; that scans every Inbox email, not just the loaded subset, and can take a while on large mailboxes.
-### Environment Variables
+## Environment Variables
The `password` and `user` fields support environment variable expansion. If the entire value is a single env var reference, neomd resolves it at startup:
@@ -102,7 +106,7 @@ Values containing other text or multiple `$` signs are left as-is, so passwords
Credentials are stored only in `~/.config/neomd/config.toml` (mode 0600) and never written elsewhere; all IMAP connections use TLS (port 993) or STARTTLS (port 143).
-### TLS and STARTTLS Configuration
+## TLS and STARTTLS Configuration
Neomd automatically determines the correct encryption method based on the port and the optional `starttls` config field:
@@ -146,7 +150,7 @@ smtp = "mail.custom.com:2587"
starttls = true # Forces STARTTLS instead of TLS
```
-See `docs/proton-bridge.md` for complete Proton Mail Bridge setup instructions.
+See [Proton Bridge Setup](configurations/proton-bridge) for complete Proton Mail Bridge setup instructions.
For localhost/self-signed bridges such as Proton Mail Bridge, neomd first tries
normal certificate verification. If that fails with an unknown-authority error
@@ -154,7 +158,7 @@ on a loopback host (`127.0.0.1`, `::1`, `localhost`), neomd retries once with a
localhost-only fallback so existing Bridge setups keep working. If you want
strict verification, export the Bridge certificate and set `tls_cert_file`.
-### Sent and Drafts Storage
+## Sent and Drafts Storage
When multiple accounts or `[[senders]]` aliases are configured, SMTP delivery
always uses the selected sending identity's account.
@@ -223,7 +227,7 @@ For professional HTML signatures (with logos, tables, styled text), use the `[ui
#### This is how it looks
The sent e-mail with above HTML signature looks like this:
-
+
In the email as text:
```markdown
@@ -233,7 +237,7 @@ how are you
here's my new HTML signature below.
BR Simon
---
+--
[html-signature]
```
diff --git a/docs/content/docs/configurations/_index.md b/docs/content/docs/configurations/_index.md
new file mode 100644
index 0000000..0bf31c3
--- /dev/null
+++ b/docs/content/docs/configurations/_index.md
@@ -0,0 +1,8 @@
+---
+title: Platform Guides
+weight: 50
+sidebar:
+ open: false
+---
+
+Provider-specific configuration guides for Gmail, Proton Mail, and Android/Termux.
diff --git a/docs/android.md b/docs/content/docs/configurations/android.md
similarity index 92%
rename from docs/android.md
rename to docs/content/docs/configurations/android.md
index 826809e..dca95b0 100644
--- a/docs/android.md
+++ b/docs/content/docs/configurations/android.md
@@ -1,14 +1,15 @@
-# Android (Termux)
+---
+title: Android (Termux)
+weight: 3
+---
Neomd runs on Android via [Termux](https://f-droid.org/en/packages/com.termux/). Build natively on the phone — cross-compiled binaries have DNS issues on Android.
-
-
## Install
```sh
pkg install golang git
-git clone https://github.com/sspaeti/neomd
+git clone https://github.com/ssp-data/neomd
cd neomd
go build -o neomd ./cmd/neomd
./neomd
@@ -37,10 +38,10 @@ make android
## Images
Overview email - feed:
-
+
Reading an email:
-
+
## Home Screen Shortcuts
diff --git a/docs/gmail.md b/docs/content/docs/configurations/gmail.md
similarity index 93%
rename from docs/gmail.md
rename to docs/content/docs/configurations/gmail.md
index 920bfe3..368688a 100644
--- a/docs/gmail.md
+++ b/docs/content/docs/configurations/gmail.md
@@ -1,4 +1,7 @@
-# Gmail Configuration
+---
+title: Gmail Configuration
+weight: 1
+---
Gmail uses special IMAP folder names prefixed with `[Gmail]/`. neomd works with Gmail, but requires adjusted folder mappings and comes with performance caveats.
@@ -47,7 +50,7 @@ Similarly, Gmail doesn't expose its scheduled send feature via IMAP, so `[Gmail]
Gmail's IMAP is significantly slower than dedicated email providers. On a sustained session, each IMAP command takes ~180ms on Gmail vs ~12ms on providers like Hostpoint or Fastmail. This means every folder switch, email open, and move feels noticeably slower (~570ms vs ~33ms per folder switch).
-See the [Benchmark section](../README.md#benchmark) in the README for detailed measurements.
+See the [Benchmark section](https://github.com/ssp-data/neomd#benchmark) in the README for detailed measurements.
For the best neomd experience, consider a dedicated email provider. If you still want to use Gmail, it works — just expect ~1 second per action instead of instant.
diff --git a/docs/proton-bridge.md b/docs/content/docs/configurations/proton-bridge.md
similarity index 98%
rename from docs/proton-bridge.md
rename to docs/content/docs/configurations/proton-bridge.md
index 18f040f..03ce0ec 100644
--- a/docs/proton-bridge.md
+++ b/docs/content/docs/configurations/proton-bridge.md
@@ -1,4 +1,7 @@
-# Configuring neomd with Proton Mail Bridge
+---
+title: Proton Mail Bridge
+weight: 2
+---
Proton Mail Bridge allows you to use neomd with ProtonMail accounts by running a local IMAP/SMTP bridge.
diff --git a/docs/keybindings.md b/docs/content/docs/keybindings.md
similarity index 95%
rename from docs/keybindings.md
rename to docs/content/docs/keybindings.md
index cf513ce..01341b4 100644
--- a/docs/keybindings.md
+++ b/docs/content/docs/keybindings.md
@@ -1,9 +1,14 @@
-# Keybindings
+---
+title: Keybindings
+weight: 2
+---
Press `?` inside neomd to open the interactive help overlay. Start typing to filter shortcuts.
-> The tables below are generated from [`internal/ui/keys.go`](../internal/ui/keys.go).
-> To update both the help overlay and this document at once, edit that file and run `make docs`.
+{{< callout type="info" >}}
+The tables below are generated from [`internal/ui/keys.go`](https://github.com/ssp-data/neomd/blob/main/internal/ui/keys.go).
+To update both the help overlay and this document at once, edit that file and run `make docs`.
+{{< /callout >}}
diff --git a/docs/content/docs/overview.md b/docs/content/docs/overview.md
new file mode 100644
index 0000000..69cf506
--- /dev/null
+++ b/docs/content/docs/overview.md
@@ -0,0 +1,331 @@
+---
+title: Overview & Philosophy
+weight: -10
+---
+
+A minimal terminal email client for people who write in Markdown and live in Neovim.
+
+[Neomd](https://www.ssp.sh/brain/neomd/) is my way of implementing an email TUI based on my experience with Neomutt, focusing on [Neovim](https://www.ssp.sh/brain/neovim) (input) and reading/writing in [Markdown](https://www.ssp.sh/brain/markdown) and navigating with [Vim Motions](https://www.ssp.sh/brain/vim-language-and-motions) with the GTD workflow and [HEY-Screener](https://www.hey.com/features/the-screener/).
+
+
+{{< callout type="warning" >}}
+neomd moves, deletes, and modifies emails directly on your IMAP server. These operations affect your mailbox across all devices. **Back up important emails before first use.** neomd is experimental software and can't take responsibility for lost or misplaced emails. Consider testing with a secondary email account first.
+{{< /callout >}}
+
+
+## The philosophy behind Neomd: What's unique?
+
+The key here is **speed** in which you can **navigate, read, and process** your email. Everything is just a shortcut away, and instantly (ms not seconds). It's similar to the foundations that Superhuman was built on: it runs on Gmail and makes it fast with vim commands.
+
+With the **HEY-Screener**, you get only emails in your inbox that you _screened in_, no spam or sales pitch before you added them. Or don't like them, just screen them out, and they get automatically moved to the "ScreenedOut" folder.
+
+With the [GTD approach](https://www.ssp.sh/brain/getting-things-done-gtd), using folders such as next (inbox), waiting, someday, scheduled, or archive, you can move them with one shortcut. This allows you quickly to move emails you need to wait for, or deal with later, in the right category. **Processing your email only once**.
+
+With the additional **Feed** and **Papertrail**, two additional features from HEY, you can read newsletters (just hit F) on them automatically in their separate tab, or move all your receipts into the Papertrail. Once you mark them as feed or papertrail, they will moved there automatically going forward. So you decide whether to read emails or news by jumping to different tabs.
+
+
+{{< callout type="info" >}}
+neomd's **speed** depends entirely on your IMAP provider. On Hostpoint (the provider I use), a folder switch takes **~33ms** which feels instant. On Gmail, the same operation takes **~570ms** which is noticeably slow. See [Benchmark](#benchmark) for full details and how to test your provider.
+{{< /callout >}}
+
+
+## Screenshots
+
+### Overview: List-View
+
+Feed view with all Newsletters - also workflow with differnt tabs and unread counter only for certain tabs (not all):
+
+
+### Reading Panel
+
+Reading an email with Markdown 💙:
+
+
+
+### Sent emails
+This is the markdown sent:
+
+```markdown
+# [neomd: to: email@domain.com]
+# [neomd: subject: this is an email from neomd!]
+
+This email is from Neomd. Great I can add links such as [this](https://ssp.sh) with plain Markdown.
+
+E.g. **bold** or _italic_.
+
+## Does headers work too?
+
+this is a text before a h3.
+
+### H3 header
+
+how does that look in an email?
+Best regards
+```
+
+*Compose emails in your editor, read them rendered with [glamour](https://github.com/charmbracelet/glamour), and manage your inbox with a [HEY-style screener](https://www.hey.com/features/the-screener/) — all from the terminal.*
+
+
+Which looks like this:
+
+
+
+Or in Gmail:
+
+
+
+### Video
+
+ YouTube rundown of most features:
+ [](https://youtu.be/8aKkldYLWV8)
+*(shorter but limited showcase [part 1 video](https://youtu.be/lpmHqIrCC-w))*
+
+
+## Features
+
+- **Write in Markdown, send beautifully** — compose in `$EDITOR` (defaults to `nvim`), send as `multipart/alternative`: raw Markdown as plain text + goldmark-rendered HTML so recipients get clickable links, bold, headers, inline code, and code blocks
+- **Pre-send review** — after closing the editor, review To/Subject/body before sending; attach files, save to Drafts, or re-open the editor — no accidental sends
+- **Attachments** — attach files from the pre-send screen via yazi (`a`); images appear inline in the email body, other files as attachments; also attach from within neovim via `a`; the reader lists all attachments (including inline images) and `1`–`9` downloads and opens them
+- **Link opener** — links in emails are numbered `[1]`-`[0]` in the reader header; press `space+digit` to open in `$BROWSER`
+- **CC, BCC, Reply-all** — optional Cc/Bcc fields (toggle with `ctrl+b`); `R` in the reader replies to sender + all CC recipients
+- **Drafts** — `d` in pre-send saves to Drafts (IMAP APPEND); `E` in the reader re-opens a draft as an editable compose; compose sessions are auto-backed up to `~/.cache/neomd/drafts/` so you never lose an unsent email (`:recover` to reopen)
+- **HTML signatures** — configure separate text and HTML signatures; text signature appears in editor and plain text part, HTML signature in HTML part only; use `[html-signature]` placeholder to control inclusion per-email
+- **Multiple From addresses** — define SMTP-only `[[senders]]` aliases (e.g. `s@ssp.sh` through an existing account); cycle with `ctrl+f` in compose and pre-send; sent copies always land in the Sent folder
+- **Undo** — `u` reverses the last move or delete (`x`, `A`, `M*`) using the UIDPLUS destination UID
+- **Search** — `/` filters loaded emails in-memory; `space /` or `:search` runs IMAP SEARCH across all folders (only fetching header capped at 100 per folder) with results in a temporary "Search" tab; supports `from:`, `subject:`, `to:` prefixes
+- **Address autocomplete** — To/Cc/Bcc fields autocomplete from screener lists; navigate with `ctrl+n`/`ctrl+p`, accept with `tab`
+- **Everything view** — `ge` or `:everything` shows the 50 most recent emails across all folders; find emails that were screened out, moved to spam, or otherwise hard to locate
+- **Threaded inbox** — related emails are grouped together in the inbox list with a vertical connector line (`│`/`╰`), Twitter-style; threads are detected via `In-Reply-To`/`Message-ID` headers with a subject+participant fallback; newest reply on top, root at bottom; `·` reply indicator shows which emails you've answered
+- **Conversation view** — `T` or `:thread` shows the full conversation across folders (Inbox, Sent, Archive, etc.) in a temporary tab with `[Folder]` prefix; see your replies alongside received emails
+- **Glamour reading** — incoming emails rendered as styled Markdown in the terminal
+- **HEY-style screener** — unknown senders land in `ToScreen`; press `I/O/F/P` to approve, block, mark as Feed, or mark as PaperTrail; reuses your existing `screened_in.txt` lists from neomutt
+- **Folder tabs** — Inbox, ToScreen, Feed, PaperTrail, Archive, Waiting, Someday, Scheduled, Sent, Trash, ScreenedOut
+- **Multi-select** — `m` marks emails, then batch-delete, move, or screen them all at once
+- **Auto-screen on load** — screener runs automatically every time the Inbox loads (startup, `R`); keeps your inbox clean without pressing `S` (configurable, on by default)
+- **Background sync** — while neomd is open, inbox is fetched and screened every 5 minutes in the background; interval configurable, set to `0` to disable
+- **Kanagawa theme** — colors from the [kanagawa.nvim](https://github.com/rebelot/kanagawa.nvim) palette
+- **IMAP + SMTP** — direct connection via RFC 6851 MOVE, no local sync daemon required and keeps it in sync if you use it on mobile or different device
+
+## Install
+
+**Prerequisites:** [Go 1.22+](https://go.dev/doc/install) and `make`.
+
+{{< callout type="info" >}}
+**Optional attachment helpers:**
+- `yazi` enables the built-in file picker used by pre-send `a`
+- custom Neovim integration in `custom.lua` enables inline `a` attachment insertion inside `neomd-*.md` buffers
+- without these, neomd still works; the inline Neovim attachment workflow just won't be available
+{{< /callout >}}
+
+
+```sh
+git clone https://github.com/ssp-data/neomd
+cd neomd
+make install # installs to ~/.local/bin/neomd
+```
+
+Or just build locally:
+
+```sh
+make build
+./neomd
+```
+
+Or if on Arch Linux (AUR), you can use my [neomd-bin](https://aur.archlinux.org/packages/neomd-bin) via:
+```sh
+yay -S neomd-bin
+```
+
+
+On first run, neomd:
+1. Creates `~/.config/neomd/config.toml` with placeholders — fill in your IMAP/SMTP credentials
+ - Important: Make sure that the Capitalization and naming of folder in `config.toml` is accroding to webmail IMAP, e.g. [Gmails](configurations/gmail) uses `sent = "[Gmail]/Sent Mail"` and not `sent` etc.
+2. Creates `~/.config/neomd/lists/` for screener allowlists (or uses your custom paths from config)
+3. Creates any missing IMAP folders (ToScreen, Feed, PaperTrail, etc.) automatically
+
+
+Neomd also runs on Android (more for fun) — see [configurations/android](configurations/android).
+
+## Configuration
+
+On first run, neomd creates `~/.config/neomd/config.toml` with placeholders:
+
+```toml
+[[accounts]]
+name = "Personal"
+imap = "imap.example.com:993" # :993 = TLS, :143 = STARTTLS
+smtp = "smtp.example.com:587"
+user = "me@example.com"
+password = "app-password"
+from = "Me "
+starttls = false
+tls_cert_file = "" # optional PEM cert/CA for self-signed local bridges
+
+# Root-level settings
+store_sent_drafts_in_sending_account = false # default: Sent/Drafts use first account; true = follow sending account
+
+[screener]
+screened_in = "~/.config/neomd/lists/screened_in.txt"
+screened_out = "~/.config/neomd/lists/screened_out.txt"
+feed = "~/.config/neomd/lists/feed.txt"
+papertrail = "~/.config/neomd/lists/papertrail.txt"
+spam = "~/.config/neomd/lists/spam.txt"
+```
+
+Use an app-specific password (Gmail, Fastmail, Hostpoint, etc.) rather than your main account password. The `password` and `user` fields support environment variable expansion (`$VAR` or `${VAR}`) so you can avoid storing secrets in the config file.
+
+For the full configuration reference including multiple accounts, OAuth2 authentication, `[[senders]]` aliases, folder customization, signatures, and UI options, see [configuration](configuration).
+
+**Provider-specific guides:**
+- Gmail: [configurations/gmail](configurations/gmail) — folder name mapping and OAuth2 setup
+- Proton Mail Bridge: [configurations/proton-bridge](configurations/proton-bridge) — non-standard port configuration
+
+### Onboarding
+
+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.
+
+By default, neomd loads and auto-screens only the newest `200` Inbox emails (`[ui].inbox_count`). This keeps startup predictable. If you want to re-screen the entire Inbox on the IMAP server, run `:screen-all` inside neomd; that scans every Inbox email, not just the loaded subset, and can take a while on large mailboxes.
+
+**Getting started with the screener:**
+
+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.
+2. Once you've classified at least one sender, auto-screening activates on every Inbox load — new emails from known senders are sorted automatically.
+3. Unknown senders land in the `ToScreen` tab. Jump there with `gk` (or `Tab`, use `L` or click the tab) and classify them:
+ - `I` screen **in** — sender stays in Inbox forever
+ - `O` screen **out** — sender never reaches Inbox again
+ - `F` **feed** — newsletters go to the Feed tab
+ - `P` **papertrail** — receipts go to the PaperTrail tab
+4. Use `m` to mark multiple emails, then `I` to batch-approve them all at once. From the `ToScreen` folder, approving/blocking a single unmarked message now applies to all currently queued mail from that sender.
+
+**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.
+
+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.
+
+{{< callout type="info" >}}
+To disable auto-screening entirely, set `auto_screen_on_load = false` in `[ui]` config. Run `:debug` inside neomd if something isn't working.
+{{< /callout >}}
+
+
+{{< callout type="warning" >}}
+`:screen-all` operates on the full Inbox mailbox on the server, not just the emails currently loaded in the UI. Use it when you intentionally want a mailbox-wide reclassification pass.
+{{< /callout >}}
+
+
+### Screener Workflow
+
+Find full Screener Workflow at [screener](screener), classification tables, and bulk re-classification instructions.
+### Keybindings
+
+Press `?` inside neomd to open the interactive help overlay. Start typing to filter shortcuts.
+
+See the [full keybindings reference](keybindings) (auto-generated from [`internal/ui/keys.go`](internal/ui/keys.go) via `make docs`).
+
+### How Sending Works
+
+Compose in Markdown, send as `multipart/alternative` (plain text + HTML). Attachments, CC/BCC, multiple From addresses, drafts, and pre-send review are all supported.
+
+Discarding unsent mail now asks for confirmation in compose/pre-send, and `:recover` reopens the latest backup if you want to resume after an abort.
+
+- See [sending](sending) for details on MIME structure, attachments, pre-send review, and drafts.
+- See [reading](reading) for the reader: images, inline links, attachments, and navigation.
+
+### Dev: Makefile Commands
+
+```
+make build compile ./neomd
+make run build and run
+make install install to ~/.local/bin
+make test run tests
+make vet go vet
+make fmt gofmt -w .
+make tidy go mod tidy
+make clean remove compiled binary
+make help print this list
+```
+
+## Stack
+
+- [Bubble Tea](https://github.com/charmbracelet/bubbletea) — TUI framework
+- [Bubbles](https://github.com/charmbracelet/bubbles) — list, viewport, textinput components
+- [Glamour](https://github.com/charmbracelet/glamour) — Markdown → terminal rendering
+- [Lipgloss](https://github.com/charmbracelet/lipgloss) — styling
+- [go-imap/v2](https://github.com/emersion/go-imap) — IMAP client (RFC 6851 MOVE)
+- [go-message](https://github.com/emersion/go-message) — MIME parsing
+- [goldmark](https://github.com/yuin/goldmark) — Markdown → HTML for sending
+- [BurntSushi/toml](https://github.com/BurntSushi/toml) — config parsing
+
+## Changelog
+
+See [CHANGELOG.md](CHANGELOG.md) for what's new.
+
+## Benchmark
+
+neomd's responsiveness depends entirely on your IMAP server. Every folder switch, email open, and move requires IMAP round-trips (SELECT + UID SEARCH + FETCH). Here are real measurements from the same machine, same network:
+
+**Hostpoint** (dedicated email provider) — folder switch: **~33ms total**
+| Operation | Time |
+|-----------|------|
+| SELECT | 12ms |
+| UID SEARCH | 10ms |
+| FETCH (200 emails) | 76ms |
+| MOVE (1 email) | 46ms |
+
+**Gmail** — folder switch: **~570ms total** (17x slower than Hostpoint)
+| Operation | Time |
+|-----------|------|
+| SELECT | 200ms |
+| UID SEARCH | 180ms |
+| FETCH (2 emails) | 190ms |
+| MOVE (1 email) | 339ms |
+
+**Outlook/Office365** (with OAuth2 authentication and different network - not really comparable, but gives a indication) — folder switch: **~269ms total** (8x slower than Hostpoint)
+| Operation | Time |
+|-----------|------|
+| SELECT | 45ms |
+| UID SEARCH | 22ms |
+| FETCH (10 emails) | 180ms |
+| MOVE (1 email) | 21ms |
+
+Interestingly, Gmail benchmarks fast on a **fresh single connection** (`scripts/imap-benchmark.sh` shows ~70ms total, same as Hostpoint). But on a **sustained session** with sequential commands — which is how neomd actually uses IMAP — Gmail adds ~180ms latency per command. This is likely Gmail's internal label-to-folder translation and session management overhead. The result: every action in neomd feels much slower on Gmail, while Hostpoint stays instant.
+
+
+{{< callout type="info" >}}
+**Gmail is not recommended.** If you're on Gmail, consider a dedicated email provider (Hostpoint, Fastmail, HEY, Migadu, etc.) for the best neomd experience. Or use Gmail just for fun :). See [configurations/gmail](configurations/gmail) for Gmail-specific folder configuration.
+{{< /callout >}}
+
+
+**Test your own provider:**
+```bash
+# With password
+IMAP_HOST=imap.example.com IMAP_USER=me@example.com IMAP_PASS=secret ./scripts/imap-benchmark.sh
+
+# With OAuth2 (reads token from neomd config)
+CONFIG=~/.config/neomd/config.toml IMAP_USER=me@gmail.com ./scripts/imap-benchmark.sh
+```
+
+## Security
+
+See [SECURITY.md](SECURITY.md) for how credentials, screener lists, temp files, and network connections are handled — with links to the relevant source files.
+
+## Inspirations
+
+- [Neomutt](https://neomutt.org) — the gold standard terminal email client; neomd reuses its screener list format and borrows keybindings (though most are [custom made](https://github.com/sspaeti/dotfiles/blob/master/mutt/.config/mutt/muttrc) and what I use). I implemented the [HEY screener for Neomutt](https://www.ssp.sh/brain/hey-screener-in-neomutt), see note for more information.
+- [HEY](https://www.hey.com/features/the-screener/) — the Screener concept: unknown senders wait for a decision before reaching your inbox
+- [hey-cli](https://github.com/basecamp/hey-cli) — a Go CLI for HEY; provided the bubbletea patterns used here
+- [newsboat](https://newsboat.org) — RSS reader whose `O` open-in-browser binding and vim navigation feel inspired neomd's reader view
+- [emailmd.dev](https://www.emailmd.dev) — the idea that email should be written in Markdown when seen on [HN](https://news.ycombinator.com/item?id=47505144)
+- [charmbracelet/pop](https://github.com/charmbracelet/pop) — minimal Go email sender from Charm
+- [charmbracelet/glamour](https://github.com/charmbracelet/glamour) — Markdown rendering in the terminal
+- [kanagawa.nvim](https://github.com/rebelot/kanagawa.nvim) — the color palette used for the inbox
+- [msgvault](https://github.com/wesm/msgvault) — Go IMAP archiver; the IMAP client code in neomd is adapted from it
+
+## Disclaimer
+
+This TUI is mostly [vibe-coded](https://www.ssp.sh/brain/vibe-coding) in the sense that all code is written with Claude Code, but guided by very detailed instructions to make the workflow as I use it and like it to be.
+
+I used my experience with Neomutt, TUIs, and the GTD workflow for handling emails with HEY Screener, and added some (hopefully) _taste_ using my favorite tools and aesthetics. Find the full history at [Twitter](https://xcancel.com/sspaeti/status/2036539855182627169#m) - inspired by seeing [Email.md](https://www.emailmd.dev/) on HackerNews.
+
+If you [rather read the prompt](https://www.ssp.sh/brain/id-rather-read-the-prompt), check out my [initial prompt](docs/initial-prompt/prompt.md) and its generated [plan](docs/initial-prompt/prompt-plan.md) - which I have iterated and added features by the 100s since then.
+## Roadmap
+
+See at my second brain at [Roadmap](https://www.ssp.sh/brain/neomd#roadmap).
diff --git a/docs/reading.md b/docs/content/docs/reading.md
similarity index 98%
rename from docs/reading.md
rename to docs/content/docs/reading.md
index 0824438..c8e683a 100644
--- a/docs/reading.md
+++ b/docs/content/docs/reading.md
@@ -1,4 +1,7 @@
-# Reading Emails
+---
+title: Reading Emails
+weight: 4
+---
Emails are rendered as styled Markdown in the terminal using [glamour](https://github.com/charmbracelet/glamour). The reader supports vim-style navigation.
@@ -76,7 +79,7 @@ Threads display with a Twitter-style vertical connector line:
- Threads are sorted by their most recent email, so active conversations float to the top
Or as image:
-
+
## Replying, Forwarding, and Drafts
diff --git a/docs/screener.md b/docs/content/docs/screener.md
similarity index 92%
rename from docs/screener.md
rename to docs/content/docs/screener.md
index 455152b..866a0d8 100644
--- a/docs/screener.md
+++ b/docs/content/docs/screener.md
@@ -1,4 +1,7 @@
-# Screener Workflow
+---
+title: Screener Workflow
+weight: 3
+---
The screener classifies senders into four buckets using plain-text allowlists. Unknown senders land in `ToScreen` until you make a decision.
@@ -55,7 +58,7 @@ When you add many senders to `feed.txt` or `papertrail.txt` at once (e.g. after
Emails are only auto-screened while they are in the **Inbox**. Once moved to ToScreen (or any other folder), they are not re-classified automatically. This keeps the logic simple and predictable.
-If emails end up in ToScreen incorrectly (e.g. screened by another device like [Termux with Android](android.md) with incomplete lists), use `:reset-toscreen` to move them back to Inbox where auto-screen will re-classify them.
+If emails end up in ToScreen incorrectly (e.g. screened by another device like [Termux with Android](configurations/android) with incomplete lists), use `:reset-toscreen` to move them back to Inbox where auto-screen will re-classify them.
## Colon commands
diff --git a/docs/sending.md b/docs/content/docs/sending.md
similarity index 92%
rename from docs/sending.md
rename to docs/content/docs/sending.md
index 6a73a17..a6f63a8 100644
--- a/docs/sending.md
+++ b/docs/content/docs/sending.md
@@ -1,4 +1,7 @@
-# How Sending Works
+---
+title: Sending Emails
+weight: 5
+---
neomd sends every email as `multipart/alternative`:
@@ -89,8 +92,9 @@ Attachments are tightly integrated with both the pre-send screen and neovim.
**From within neovim** — press `a` in any `neomd-*.md` buffer to open yazi in a floating terminal. Selected files are inserted at the cursor as visible `[attach] /path/to/file` lines.
-> [!NOTE]
-> **Requires** [custom.lua](https://github.com/sspaeti/dotfiles/blob/master/nvim/.config/nvim/lua/sspaeti/custom.lua) added to your neovim config, and [yazi](https://github.com/sxyazi/yazi) installed.
+{{< callout type="info" >}}
+**Requires** [custom.lua](https://github.com/sspaeti/dotfiles/blob/master/nvim/.config/nvim/lua/sspaeti/custom.lua) added to your neovim config, and [yazi](https://github.com/sxyazi/yazi) installed.
+{{< /callout >}}
neomd strips `[attach]` lines before sending:
- **Image files** (`.png`, `.jpg`, `.gif`, `.webp`, `.svg`) → embedded inline in the HTML body; recipients see the image at that position
@@ -104,13 +108,13 @@ And a PDF for reference:
[attach] /home/you/docs/report.pdf
```
-
+
## Pre-send Review
After saving and closing the editor, neomd shows a review screen before sending — add or remove attachments, save to Drafts, or re-open the editor without sending accidentally.
-
+
| Key | Action |
|-----|--------|
@@ -175,6 +179,6 @@ This gives you full control: professional HTML signatures by default, plain sign
- Test your HTML signature by sending to yourself first
- The `--` separator is added automatically before the text signature
-For full HTML signature configuration examples, see [configuration.md](configuration.md#html-signatures).
+For full HTML signature configuration examples, see [Configuration Reference](configuration#html-signatures).
-For reading emails — images, links, attachments, and navigation — see [reading.md](reading.md).
+For reading emails — images, links, attachments, and navigation — see [Reading Emails](reading).
diff --git a/docs/go.mod b/docs/go.mod
new file mode 100644
index 0000000..7cea311
--- /dev/null
+++ b/docs/go.mod
@@ -0,0 +1,5 @@
+module github.com/ssp-data/neomd/docs
+
+go 1.24
+
+require github.com/imfing/hextra v0.9.3 // indirect
diff --git a/docs/go.sum b/docs/go.sum
new file mode 100644
index 0000000..08708c9
--- /dev/null
+++ b/docs/go.sum
@@ -0,0 +1,2 @@
+github.com/imfing/hextra v0.9.3 h1:p4vDm2TSgt3RpJdJm2mqkpoJCH2S08wzySyyYodtgCc=
+github.com/imfing/hextra v0.9.3/go.mod h1:cEfel3lU/bSx7lTE/+uuR4GJaphyOyiwNR3PTqFTXpI=
diff --git a/docs/hugo.yaml b/docs/hugo.yaml
new file mode 100644
index 0000000..5d207fc
--- /dev/null
+++ b/docs/hugo.yaml
@@ -0,0 +1,75 @@
+# Hugo configuration file
+title: neomd Documentation
+
+# Base URL will be set by GitHub Actions
+baseURL: "https://ssp-data.github.io/neomd/"
+
+# Disable RSS generation to avoid template issues
+disableKinds: ["RSS"]
+
+# import hextra as module
+module:
+ imports:
+ - path: github.com/imfing/hextra
+
+markup:
+ # allow raw html
+ goldmark:
+ renderer:
+ unsafe: true
+ parser:
+ attribute:
+ block: true
+ autoHeadingID: true
+ autoHeadingIDType: github
+
+ # enable hextra syntax highlight
+ highlight:
+ noClasses: false
+
+ tableOfContents:
+ startLevel: 2
+ endLevel: 6
+ ordered: false
+
+menu:
+ main:
+ - name: Documentation
+ pageRef: /docs
+ weight: 1
+ - name: Search
+ weight: 2
+ params:
+ type: search
+ - name: GitHub
+ weight: 3
+ url: "https://github.com/ssp-data/neomd"
+ params:
+ icon: github
+
+ sidebar:
+ - name: More
+ params:
+ type: separator
+ weight: 100
+ - name: Changelog
+ url: "https://github.com/ssp-data/neomd/blob/main/CHANGELOG.md"
+ weight: 101
+ - name: Roadmap
+ url: "https://www.ssp.sh/brain/neomd#roadmap"
+ weight: 102
+
+params:
+ description: "A fast, keyboard-first TUI email client with smart screening"
+
+ navbar:
+ displayTitle: true
+ displayLogo: false
+
+ footer:
+ displayCopyright: true
+ displayPoweredBy: true
+
+ editURL:
+ enable: true
+ base: "https://github.com/ssp-data/neomd/edit/main/docs/content/docs"
diff --git a/docs/layouts/shortcodes/readme-section.html b/docs/layouts/shortcodes/readme-section.html
new file mode 100644
index 0000000..9091d58
--- /dev/null
+++ b/docs/layouts/shortcodes/readme-section.html
@@ -0,0 +1,28 @@
+{{- $file := .Get "file" | default "../../README.md" -}}
+{{- $start := .Get "start" -}}
+{{- $end := .Get "end" -}}
+{{- $content := readFile $file -}}
+
+{{- if and $start $end -}}
+ {{- $lines := split $content "\n" -}}
+ {{- $inSection := false -}}
+ {{- $output := slice -}}
+
+ {{- range $lines -}}
+ {{- if strings.Contains . $start -}}
+ {{- $inSection = true -}}
+ {{- end -}}
+
+ {{- if $inSection -}}
+ {{- $output = $output | append . -}}
+ {{- end -}}
+
+ {{- if strings.Contains . $end -}}
+ {{- $inSection = false -}}
+ {{- end -}}
+ {{- end -}}
+
+ {{- $output | delimit "\n" | markdownify -}}
+{{- else -}}
+ {{- $content | markdownify -}}
+{{- end -}}
diff --git a/docs/static/images/android-overview.png b/docs/static/images/android-overview.png
new file mode 100644
index 0000000000000000000000000000000000000000..8dcd29c6b70bb724ee72ed964daba6e7f0c7e226
GIT binary patch
literal 453387
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