Skip to content

Commit 57a0a8c

Browse files
committed
add shortcut for scheduled and add FAQ
1 parent c1c92b4 commit 57a0a8c

5 files changed

Lines changed: 31 additions & 9 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Changelog
22

3+
# 2026-04-15
4+
- **Scheduled folder keybindings** — added `gc` (go to Scheduled, mnemonic: "calendar") and `Mc` (move to Scheduled) shortcuts; Scheduled folder now accessible via dedicated keybindings alongside existing tab navigation (`[]HL`, `space+1-9`); help overlay and generated keybindings documentation updated
5+
36
# 2026-04-14
47
- **Extended link support (99 links)** — link opener now supports up to 99 links per email (previously limited to 10); `space+1-0` opens links 1-10, `space+l11-99` opens links 11-99 using intuitive numeric shortcuts (e.g. `space+l26` for link [26]); status line provides progressive feedback during multi-key input; footer help and `?` overlay updated
58
- **Fix: link extraction with brackets in text** — markdown link regex now correctly matches links with brackets inside the link text (e.g. `[[Watch the studio tour here]](url)`); changed from `[^\]]+` (anything except `]`) to non-greedy `.+?` to handle nested brackets; fixes newsletter links from Beehiiv and similar services

docs/content/docs/faq.md

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,30 @@ Questions that came up when people using neomd.
88

99
## Is it possible to create new directories/tabs
1010

11-
You basically create the folder in your web mail and configure it in your `config.toml` and add the new folder under `[folder]` and in the `tab_order` so neomd knows where to place it:
11+
Currently, no. All folders are hard coded in a struct in a code as this is optimized for the GTD and HEY Screener workflow and keeps things simple.
1212

13+
But, please reach out to me and tell me which folders you need, maybe it's a folder that everyone might use, or otherwise, if I get enough request, I add a way to customize folders as I do with the sort order of folder tabs already.
1314

14-
```toml
15-
[folders]
16-
...existing folders
17-
new = "NewMissingFolder"
18-
tab_order = ["inbox", "to_screen", "feed", "papertrail", "waiting", "someday", "scheduled", "sent", "work", "archive", "screened_out", "trash", "new"]
15+
16+
### Advanced: Add custom folders yourself
17+
18+
You can fork neomd and modify the Go source code:
19+
20+
1. **Edit the code** (ask Claude to help with this):
21+
- Add a field to `FoldersConfig` struct in `internal/config/config.go`
22+
- Add entry to `keyToLabel` map
23+
- Optionally add keyboard shortcuts in `internal/ui/model.go`
24+
- Run `make build` to compile
25+
2. **Create the IMAP folder** via webmail (e.g., "NewFolder")
26+
3. **Configure it** in your `config.toml`:
27+
```toml
28+
[folders]
29+
# ... existing folders ...
30+
new = "NewFolder"
31+
tab_order = ["inbox", "to_screen", "feed", "new", "sent", "archive"]
1932
```
2033

21-
If you want to move emails to that folder, or just move to it, that's currently not possible. You can always move through the tabs with `[]HL` or `space+1-10`, but you can't move emails to them yet.
34+
Once added this way, you can navigate to your custom folder with existing `[]HL` and `space+1-9`. If you added keyboard shortcuts in step 1, those will work too (e.g., gn / Mn).
2235

2336
## Does the signature appear only in new messages, not in replies?
2437

docs/content/docs/keybindings.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ To update both the help overlay and this document at once, edit that file and ru
4040
| `gk` | go to ToScreen |
4141
| `go` | go to ScreenedOut |
4242
| `gw` | go to Waiting |
43+
| `gc` | go to Scheduled (calendar) |
4344
| `gb` | go to Work (if configured) |
4445
| `gm` | go to Someday |
4546
| `gd` | go to Drafts |
@@ -72,6 +73,7 @@ To update both the help overlay and this document at once, edit that file and ru
7273
| `Mt` | move to Trash |
7374
| `Mo` | move to ScreenedOut |
7475
| `Mw` | move to Waiting |
76+
| `Mc` | move to Scheduled |
7577
| `Mb` | move to Work (if configured) |
7678
| `Mm` | move to Someday |
7779
| `Mk` | move to ToScreen |

internal/ui/keys.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ var HelpSections = []HelpSection{
3131
{"gk", "go to ToScreen"},
3232
{"go", "go to ScreenedOut"},
3333
{"gw", "go to Waiting"},
34+
{"gc", "go to Scheduled (calendar)"},
3435
{"gb", "go to Work (if configured)"},
3536
{"gm", "go to Someday"},
3637
{"gd", "go to Drafts"},
@@ -55,6 +56,7 @@ var HelpSections = []HelpSection{
5556
{"Mt", "move to Trash"},
5657
{"Mo", "move to ScreenedOut"},
5758
{"Mw", "move to Waiting"},
59+
{"Mc", "move to Scheduled"},
5860
{"Mb", "move to Work (if configured)"},
5961
{"Mm", "move to Someday"},
6062
{"Mk", "move to ToScreen"},

internal/ui/model.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2194,7 +2194,7 @@ func (m Model) updateInbox(msg tea.KeyMsg) (tea.Model, tea.Cmd) {
21942194
// ── Chord prefixes ──────────────────────────────────────────────
21952195
case "g":
21962196
m.pendingKey = "g"
2197-
m.status = "go to: gi inbox ga archive gf feed gp papertrail gt trash gs sent gk toscreen go screened-out gw waiting gm someday gd drafts gS spam ge everything gg top"
2197+
m.status = "go to: gi inbox ga archive gf feed gp papertrail gt trash gs sent gk toscreen go screened-out gw waiting gc scheduled gm someday gd drafts gS spam ge everything gg top"
21982198
return m, nil
21992199

22002200
case " ": // leader key — wait for digit or shortcut
@@ -2204,7 +2204,7 @@ func (m Model) updateInbox(msg tea.KeyMsg) (tea.Model, tea.Cmd) {
22042204

22052205
case "M":
22062206
m.pendingKey = "M"
2207-
m.status = "move to: Mi inbox Ma archive Mf feed Mp papertrail Mt trash Mo screened-out Mw waiting Mm someday"
2207+
m.status = "move to: Mi inbox Ma archive Mf feed Mp papertrail Mt trash Mo screened-out Mw waiting Mc scheduled Mm someday"
22082208
return m, nil
22092209

22102210
case ",":
@@ -2660,6 +2660,7 @@ func (m Model) handleChord(prefix, key string) (tea.Model, tea.Cmd) {
26602660
"a": "Archive",
26612661
"w": "Waiting",
26622662
"b": "Work",
2663+
"c": "Scheduled",
26632664
"m": "Someday",
26642665
"o": "ScreenedOut",
26652666
}
@@ -2692,6 +2693,7 @@ func (m Model) handleChord(prefix, key string) (tea.Model, tea.Cmd) {
26922693
"t": m.cfg.Folders.Trash,
26932694
"o": m.cfg.Folders.ScreenedOut,
26942695
"w": m.cfg.Folders.Waiting,
2696+
"c": m.cfg.Folders.Scheduled,
26952697
"m": m.cfg.Folders.Someday,
26962698
"k": m.cfg.Folders.ToScreen,
26972699
}

0 commit comments

Comments
 (0)