Roadmap
Ideas and features that aren't built yet but make sense for the single-account, action-oriented direction the CLI took during the simplification pass. Listed roughly in usefulness order. None of these are scheduled — open an issue or send a PR if you want one prioritized.
Resolve items the same way we resolve venues — shipped
wolt cart add, wolt cart remove, and wolt venue item now accept a
24-char Mongo ObjectID or a Wolt item URL of the form
.../venue/<slug>/itemid-<id> (menuitem-<id> and ?itemid=<id> also
work). When the URL carries the venue slug, the venue argument benefits
from it for free.
wolt cart add <venue> --query "<name>" resolves an item by name via
the venue assortment search (same endpoint wolt venue menu --query
uses) and accepts only a unique match. Ambiguous queries return a
"matched N items in Name (item-id) pairs. Exact-name matches always beat substring hits.
Single-arg URL form ships too: wolt cart add <wolt-item-url> and
wolt venue item <wolt-item-url> accept just the URL since it carries
both the slug and the item id. Falls back to the explicit
<venue> <item-id> shape when the single arg is not a URL with both
parts.
Slug → id (and full static-page payload) cache shipped too: stored at
~/.wolt/.wolt-slug-cache.json with a 24 h TTL, wired through
cachedVenuePageStatic so every command that consults the upstream
/pages/venue/slug/<slug>/static endpoint (resolve, venue show, venue
menu, venue item, checkout, favorites, dynamic-promotion enrichment)
short-circuits the ~200–500 ms call on a fresh hit. wolt logout
wipes it; WOLT_SLUG_CACHE_PATH overrides the location. Visible win:
wolt venue menu <slug> --query dropped from ~790 ms cold to ~170 ms
warm on the live Helsinki feed (4.6× faster).
Discovery enrichment beyond tagline + top offer — mostly shipped
wolt feed and wolt venues rows now also carry menu_highlights[]
(from upstream venue_preview_items) and badges[] (from the newer
badges_v2 shape with icon + variant + text). The feed table prefixes
the venue cell with a single-rune glyph derived from the badge icon
(+ Wolt+, % 20% off, ⚡ Fast) and renders a Highlights column by
default; wolt venues keeps both behind --show-highlights to avoid
wrapping on narrow terminals. WOLT_BADGES_PLAIN=1 falls back to
bracketed text.
Non-venue carousels ("Popular stores", "Restaurant categories", hero
banners) used to be silently dropped — they now classify as
kind: "brands" and render as a single-line summary
Wolt Market · K-Market · Lidl. --query matches brand names too.
Still open: a product-card grocery deals section with old/new
prices. The unauthenticated /v1/pages/front payload doesn't carry
one in any sampled city (May 2026 capture); deferred until a real
sample payload surfaces. See docs/discovery-enrichment.md §4.
Smarter venue menu discovery
--show-optionsflag onvenue menuthat prints the option matrix inline for each row (currently you need a separatevenue itemcall per item).venue menu --category-treethat prints the category hierarchy as a single tree instead of requiring two calls (venue categoriesthenvenue menu --category).
Place orders (gated, opt-in)
Right now the CLI is read-only for purchasing on purpose. Adding a
wolt checkout place command would require:
- Explicit
--i-really-want-to-paystyle confirmation. - A locked-in delivery address (no
--lat/--lon/--addressoverrides). - A separate config flag to enable the command at all (off by default).
- A dry-run test harness that intercepts the placement call.
Until that scaffold exists, the CLI stops at checkout preview.
wolt cart add from a recent order
wolt account order <purchase-id> --re-add
Re-create a basket from a historical order: walk items[] from
OrderHistoryDetail and call cart add for each line with matching
options. Useful for re-ordering the same meal without scrolling the app.
Shell completions and wolt help polish
- Generate bash / zsh / fish completions via cobra and ship them with the Homebrew tap formula.
- Make
wolt help <command>open the section ofdocs/commands.mdmatching the requested command, for richer offline reference.
Better default location handling
- Auto-detect when the saved Wolt account address is stale (the venue
search returns "no results in your area") and prompt the user with a
one-liner to update via
wolt account addresses use <id>. wolt venues --herethat geocodes the current OS location instead of needing--address.
Tests we still want
These aren't features but they belong on the roadmap:
- An e2e test that drives the real CDP login path using a recorded WebSocket cassette (today we mock the protocol but not a captured real-world cookie payload).
- A
cart addtest that exercises--optionresolution by name end-to-end (resolveOptionValueTokenis unit-tested in helpers but the full command path with mocked Wolt API isn't). - Snapshot tests for table output so column-trim regressions surface.