···11# Changelog
2233+# 2026-04-15
44+- **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
55+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
+20-7
docs/content/docs/faq.md
···8899## Is it possible to create new directories/tabs
10101111-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:
1111+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+1313+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.
1414+12151616+### Advanced: Add custom folders yourself
13171414-```toml
1515-[folders]
1616- ...existing folders
1717- new = "NewMissingFolder"
1818- tab_order = ["inbox", "to_screen", "feed", "papertrail", "waiting", "someday", "scheduled", "sent", "work", "archive", "screened_out", "trash", "new"]
1818+You can fork neomd and modify the Go source code:
1919+2020+1. **Edit the code** (ask Claude to help with this):
2121+ - Add a field to `FoldersConfig` struct in `internal/config/config.go`
2222+ - Add entry to `keyToLabel` map
2323+ - Optionally add keyboard shortcuts in `internal/ui/model.go`
2424+ - Run `make build` to compile
2525+2. **Create the IMAP folder** via webmail (e.g., "NewFolder")
2626+3. **Configure it** in your `config.toml`:
2727+ ```toml
2828+ [folders]
2929+ # ... existing folders ...
3030+ new = "NewFolder"
3131+ tab_order = ["inbox", "to_screen", "feed", "new", "sent", "archive"]
1932```
20332121-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.
3434+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).
22352336## Does the signature appear only in new messages, not in replies?
2437
+2
docs/content/docs/keybindings.md
···4040| `gk` | go to ToScreen |
4141| `go` | go to ScreenedOut |
4242| `gw` | go to Waiting |
4343+| `gc` | go to Scheduled (calendar) |
4344| `gb` | go to Work (if configured) |
4445| `gm` | go to Someday |
4546| `gd` | go to Drafts |
···7273| `Mt` | move to Trash |
7374| `Mo` | move to ScreenedOut |
7475| `Mw` | move to Waiting |
7676+| `Mc` | move to Scheduled |
7577| `Mb` | move to Work (if configured) |
7678| `Mm` | move to Someday |
7779| `Mk` | move to ToScreen |
+2
internal/ui/keys.go
···3131 {"gk", "go to ToScreen"},
3232 {"go", "go to ScreenedOut"},
3333 {"gw", "go to Waiting"},
3434+ {"gc", "go to Scheduled (calendar)"},
3435 {"gb", "go to Work (if configured)"},
3536 {"gm", "go to Someday"},
3637 {"gd", "go to Drafts"},
···5556 {"Mt", "move to Trash"},
5657 {"Mo", "move to ScreenedOut"},
5758 {"Mw", "move to Waiting"},
5959+ {"Mc", "move to Scheduled"},
5860 {"Mb", "move to Work (if configured)"},
5961 {"Mm", "move to Someday"},
6062 {"Mk", "move to ToScreen"},
+4-2
internal/ui/model.go
···21942194 // ── Chord prefixes ──────────────────────────────────────────────
21952195 case "g":
21962196 m.pendingKey = "g"
21972197- 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"
21972197+ 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
2199219922002200 case " ": // leader key — wait for digit or shortcut
···2204220422052205 case "M":
22062206 m.pendingKey = "M"
22072207- m.status = "move to: Mi inbox Ma archive Mf feed Mp papertrail Mt trash Mo screened-out Mw waiting Mm someday"
22072207+ 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
2209220922102210 case ",":
···26602660 "a": "Archive",
26612661 "w": "Waiting",
26622662 "b": "Work",
26632663+ "c": "Scheduled",
26632664 "m": "Someday",
26642665 "o": "ScreenedOut",
26652666 }
···26922693 "t": m.cfg.Folders.Trash,
26932694 "o": m.cfg.Folders.ScreenedOut,
26942695 "w": m.cfg.Folders.Waiting,
26962696+ "c": m.cfg.Folders.Scheduled,
26952697 "m": m.cfg.Folders.Someday,
26962698 "k": m.cfg.Folders.ToScreen,
26972699 }