Skip to main content

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 " error with the top five candidate 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-options flag on venue menu that prints the option matrix inline for each row (currently you need a separate venue item call per item).
  • venue menu --category-tree that prints the category hierarchy as a single tree instead of requiring two calls (venue categories then venue 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-pay style confirmation.
  • A locked-in delivery address (no --lat/--lon/--address overrides).
  • 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 of docs/commands.md matching 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 --here that 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 add test that exercises --option resolution by name end-to-end (resolveOptionValueToken is 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.