Navvo
Changelog

Platform changelog

Every change to the Navvo platform — APIs, maps, routing, SDKs, apps and docs — as a dated timeline.

Platform changelog

Everything we change on Navvo, newest first. Each entry says exactly what changed and what it means if you are building on the platform. Only interested in the API and SDK surface? See the API & SDK changelog.

How to read this. Filter by type (added, improved, changed, fixed, security, deprecated, removed, docs) or by area (Maps, Routing, Traffic, Search & Places, and so on). Anything that can break an existing integration is tagged Breaking — use the Breaking only filter to see just those. Every dated entry has its own permalink: hover an update and copy its link.
62updates
811changes
18 October 2026Latest
Follow changes programmaticallyJSON feedRSS feed
  1. October 2026
  2. Server stability protections

    After two short outages on 18 October, the search engine and the server now run with hard resource limits and automatic recovery.

    • ImprovedSearch & Places

      Search engine runs in production mode with hard memory and CPU limits

      The search engine now has a fixed memory ceiling, a CPU ceiling and a bounded indexing budget, so a heavy index update can never take memory away from the rest of the platform. Search results and the search APIs are unchanged; search briefly fell back to basic matching for about 30 seconds while the change was applied on 18 October.

      GET /search
    • ImprovedPlatform & Ops

      Runaway jobs can no longer exhaust the server's memory

      On 18 October the platform was unavailable twice, for about 10 minutes each time (around 10:53 and 11:54 Amman time), when a runaway non-production test process used up all of the server's memory. Non-production workloads now run under a hard memory cap, and a hardware watchdog restarts the server automatically if it ever stops responding.

  3. Analysed traffic on the map, per-country Ramadan and Eid dates, and Atlas stays on topic

    Navvo now predicts the traffic expected at any place and time in the Middle East from years of past traffic, adjusted for Ramadan and iftar, Eid and holidays, school breaks, the month and the weather; the map draws it on roads that have no live traffic, and Atlas uses it to answer questions about usual and future traffic. Ramadan and Eid now fall on each country's own dates. Atlas and the documentation assistant also now answer only what they are for.

    • ChangedAtlas AI

      Atlas answers only map and place questions

      POST /ai/atlas now declines requests that have nothing to do with places, routes, traffic or the map, such as poems, homework, general trivia or unrelated code, with one friendly sentence in the user's language and action "answer". Questions about the place or area in view, including its history and what it is known for, are still answered.

    • ChangedAtlas AI

      Documentation assistant sticks to building on Navvo

      The assistant on these docs now helps only with Navvo's APIs, SDKs, keys and docs, including code that calls Navvo, and points you to a relevant docs topic for anything else.

    • FixedTraffic

      Traffic history is filed under the hour each drive happened

      Contributed trips used to be recorded under the hour they were processed, so a trip uploaded late landed in the wrong hour of the learned history. Each road a trip drove is now recorded under the hour its GPS points were captured, and a trip that crosses an hour boundary is split by road. Profiles, insights and forecasts learn from the right hours from now on.

      POST /telemetry/tripsDocs
    • FixedTraffic

      Traffic calendar follows each country's own weekend, Ramadan and holidays

      The holiday, weekend and Ramadan flags behind traffic profiles now cover 15 countries, each in its own local time, with its own weekend for the period (Saturday–Sunday in the UAE and Lebanon, for example), Ramadan from the Hijri date, and its public holidays and Eids. Roads are matched to the country they are in instead of all being read as Jordan, and older dates are classified correctly instead of being treated as ordinary workdays.

      GET /traffic/profileGET /traffic/labelsGET /traffic/forecastDocs
    • ImprovedPlatform & Ops

      Traffic history backfill runs once per restart

      The background job that rebuilds traffic history after a restart was queued once per API worker. It is now queued once.

    • AddedTraffic

      Expected traffic for any place and time in the Middle East

      New `GET /traffic/analysed` returns the traffic expected at a point and moment, from Navvo's model of past traffic in the region, adjusted for Eid, public holidays and school holidays, the hour after iftar in Ramadan, the month, and heavy rain, storms or dust (from the forecast for the next 72 hours, or a what-if `weather`). `/traffic/analysed/week` adds seven days by hour with each day's best and worst two-hour windows, `/traffic/analysed/outlook` a short daily outlook in English or Arabic, and `/traffic/analysed/model` the model fits behind them. Answers are labelled `navvo-analysed-traffic`, are never live, and return `basis: "none"` instead of an error where the model has no data yet.

      GET /traffic/analysedGET /traffic/analysed/weekGET /traffic/analysed/outlookGET /traffic/analysed/modelDocs
  4. SDKs 0.3.0, unlimited API keys, focused map search, cleaner Arabic names

    The SDKs reach 0.3.0 with the price filter and result details, Navvo can now make an API key unlimited, map search now shows only the search's pins, a data fix removes Arabic names that places had wrongly inherited from a brand, and search no longer lets a far branch of a chain outrank nearby ones.

    • FixedSearch & Places

      Wrong Arabic names removed from 1,076 places

      An August backfill had given places the bare Arabic name of a brand mentioned in their English name, such as an ATM named as the whole bank or a shop named after its mall, so many unrelated places shared one Arabic name. Those 1,076 names are removed, and these places show their English name until a real Arabic one is added. The 140 places whose name is the brand keep it, and 6 got a better reading.

      GET /searchGET /places/{slug}Docs
    • ImprovedSearch & Places

      A chain's far branch no longer outranks nearby ones

      With an origin, an exact name match more than 25 km away now competes on distance with nearer places whose names contain the query. So `carrefour` from Amman lists Amman's branches before one in another country. A major place, with thousands of reviews or very high popularity, keeps its lead however far it is, such as Petra or Al-Aqsa Mosque.

      GET /searchDocs
    • AddedSDKs

      Web, Node, Python, Go and Java SDKs 0.3.0: price filter and result details

      All five SDKs take the search `price` filter (levels 1–4) and return the new result details on search and similar-places results: today's hours, price range and level, a short address, area, review count, category name and highlights. Similar places also take a `locale`, and the Web SDK falls back to the client's `language`, so its `similar()` calls now send that language. Existing calls keep working, and downloads and checksums are at docs.navvo.io/sdks.

      GET /searchGET /search/similarDocsDocsDocsDocsDocs
    • FixedSDKs

      The script-tag Web SDK bundle now serves the latest version

      The bundle the quickstart loads from `docs.navvo.io/navvo-maps/` was still version 0.1.0, so pages using it had none of the search features added since. It now serves 0.3.0, which keeps every 0.1.0 class and method. If such a page sends its requests through your own proxy, allow the `x-navvo-source` request header in the proxy's CORS policy.

    • ImprovedWeb App

      Map search: only the search's pins stay on the map

      While a search is shown, the map hides its other place pins, so only the results remain: the places and addresses it found, or the result you opened, and no pins at all when it finds nothing. They come back when the search ends, when you plan a route, or when you open a place another way. Your location, a dropped or parked pin, route warnings and the layers you switched on stay visible.

    • FixedWeb App

      Map: an open place keeps its pin

      A place opened from the map, a nearby list or a link could lose its pin once the map zoomed in to it, when another place stood close by. It now always keeps its pin, in the 3D view too, and the places crowding it step aside.

  5. Search monitoring now tests location search; cleaner recovery after restarts

    Follow-ups to the 1 October incident and to a server restart on 4 October. Search analytics missed about two days of data.

    • FixedSearch & Places

      The first meaning-based search after a restart no longer comes back empty

      Right after the search engine restarted, the first meaning-based query could miss its time limit while the engine loaded its data, and the request fell back to keyword-only results — for a descriptive query such as `place to watch football`, an empty list. The platform now runs that first query itself at start-up and every few minutes. A worker that cannot reach the engine also checks again after 30 seconds instead of treating meaning-based matching as unavailable for five minutes.

      GET /searchDocs
    • FixedWeb App

      Map search: category chips and panel headings in Arabic

      In the Arabic interface, the category chips (Restaurants, Cafés, Hotels and so on) and the panel's Explore, Recent and Popular nearby headings were still in English. They now show in Arabic and run right to left.

    • FixedSearch & Places

      Search analytics missed two days of data (2–4 October)

      Search analytics was not recorded from 2 October 02:55 to 4 October 11:02 Amman time. Collection pauses by design when the database disk has less than 3 GB free, and it stayed below that until space was freed on 4 October. Searches were answered normally throughout; searches and click events from that window are missing from analytics and cannot be recovered. Collection has resumed.

      GET /searchPOST /search/eventsDocs
    • ImprovedSearch & Places

      The search monitor now tests location search

      Every five minutes the monitor takes a sample of places and checks that each one can be found by a radius search around its own position, and it notifies administrators after two failed runs. On 1 October every existing check stayed green while nearby search returned nothing for eleven hours; this check would have raised the alarm within ten minutes.

    • FixedSearch & Places

      The standby search index is healthy again

      The standby copy of the search index, left damaged by the 1 October repair, has been rebuilt and verified, so an administrator can switch to it at once if the live index is ever damaged.

    • FixedSearch & Places

      `openNow` and opening hours work again

      Open/closed state was not being computed for any place: the stored opening hours were in a format the platform did not read. `openNow=true` on `GET /search` and `GET /places` returned nothing, `GET /places/{slug}/hours` reported no hours, and place details carried no `openState`. Hours are read again for all 43,864 places that have them; a day with no entry stays unknown rather than being reported as closed.

      GET /searchGET /placesGET /places/{slug}GET /places/{slug}/hoursDocsDocs
  6. Meaning-based search is on; nearby search restored

    Distance-based search results were incomplete for part of the day; the search index was rebuilt and the cause fixed.

    • FixedSearch & Places

      Nearby and distance-sorted search results are complete again

      On 1 October, from about 03:00 to 14:30 Amman time, searches that depend on distance — near-me queries, `radiusKm`, `sort=distance` and category searches around a location — could miss places close to the caller, because an overnight maintenance step damaged the location part of the search index. Searches by name were not affected. The index was rebuilt and the maintenance step now preserves location data.

      GET /searchDocs
    • AddedSearch & Places

      Meaning-based matching is on

      Searches that keyword matching cannot answer, such as `fix my phone screen`, `place to watch football` or `take my dog to the vet`, now also find places that fit the description, across Arabic and English, entirely on Navvo's own infrastructure. It only adds results when keyword matching finds few strong ones, never runs while someone is typing (`mode=typeahead`), and responses where it contributed report `index.mode: hybrid`. API-key requests opt in with `semantic=on`.

      GET /searchDocs
    • ImprovedSearch & Places

      Meaning-based matching ignores random letters and reads Arabic as typed

      Meaning-based results need some evidence in the query (a word that matches the catalogue, a category or a filter), so random letters and off-topic questions return nothing, and Arabic queries are matched in the spelling the user typed. The hourly meaning-based budget for requests without an API key now counts only searches in which it actually runs.

      GET /searchDocs
    • ImprovedSearch & Places

      An index swap now checks nearby search first

      Before a rebuilt search index replaces the live one, the swap now samples places from it and confirms that each can be found by location, not only that every place is present. The copy left over from the 1 October repair held every place but answered no nearby search; switching to it is now refused with a request to rebuild first.

  7. September 2026
  8. Milestone

    Search rebuilt for Arabic and Arabizi, with filters and analytics

    Place search has a new query pipeline: rule-based understanding of Arabic, English and Arabizi, match-first ranking, filters and facets, three new endpoints and consent-gated search analytics.

    • ImprovedSearch & Places

      Search understands Arabic, English and Arabizi without a model

      Query understanding is now a set of rules and curated vocabularies instead of a model call, so the same query always reads the same way and never waits. It recognises category words in all three scripts (`صيدلية`, `pharmacy`, `saydaliyeh`), areas (`cafe in Abdoun`), "near me", "open now" and qualifiers such as on-duty pharmacies, and it also tries Arabizi queries in Arabic script and Arabic queries in Latin letters. Category names in Arabic, English and Arabizi are now part of every place's searchable text: before, an Arabic category word such as فندق (hotel) matched only the 28 of 787 hotels whose Arabic name happened to contain it.

      GET /searchDocs
    • ImprovedSearch & Places

      Results rank by how well the name matches, then by distance and popularity

      Every result now falls into a match band (exact name, every word, every word allowing typos, partial, meaning-based), and a better band always ranks first; distance, popularity and text relevance decide within a band. A category search no longer favours a place that is merely named after the category, bus stops and car parks no longer outrank the place they serve, and without an origin, places in Jordan lead equally good matches abroad. `sort=distance` and `sort=rating` replace this order when you ask for them.

      GET /searchDocs
    • AddedSearch & Places

      Synonyms and alternative place names in Arabic, English and Arabizi

      Search now treats `circle`, `roundabout`, `dawar` and `دوار` as the same word, and likewise `street`, `share3` and `شارع`, following how places in Jordan are actually named and typed. Places can also carry alternative names, which Navvo administrators curate, so common transliterations and spellings find the same place.

      GET /searchDocs
    • ImprovedSearch & Places

      Place changes reach search within about two minutes

      The search index was rebuilt every six hours, so a new or edited place could take that long to become findable. Changes are now picked up every minute, hidden or removed places drop out on the same cycle, and scheduled full rebuilds run in place, so search keeps answering while they run.

      GET /searchDocs
    • AddedSearch & Places

      New search parameters: open now, rating, radius, amenities, sort and mode

      `GET /search` now accepts `openNow` (open right now, in Jordan time and holiday-aware), `minRating`, `radiusKm`, `amenities` (the same slugs as the place facets) and `sort=relevance|distance|rating`. `category` also includes sub-categories, so `category=food-and-drink` returns cafés, restaurants and bakeries. `originType=map` says the point is the map centre rather than the user's position, and `mode=typeahead|submit` separates keystrokes from searches.

      GET /searchDocs
    • AddedSearch & Places

      Search responses add facets, highlights, distance and a query id

      New additive fields: `queryId` for reporting clicks, `facets` with category and amenity counts (`facets=category,amenities`), HTML-escaped `highlight` names (`highlight=true`), `distanceKm`, `imageUrl`, `promoted` on results placed by an editorial or sponsored rule, `didYouMean` on misspelled queries that match nothing, and `index.mode`. Responses carry `Cache-Control: no-store`, and every existing field keeps its name and type.

      GET /searchDocs
  9. Platform files consolidated into the platform’s own account

    Logs, temporary files and working artifacts now stay inside the platform’s own account, owned by it.

    • ChangedPlatform & Ops

      Platform files consolidated into the platform's own account

      Everything the platform writes — logs, build and QA artifacts, scratch work — now lives inside its own account and is owned by it, instead of being scattered across shared system locations. 1.1 GB of old load-test logs moved off a nearly full system disk, 5,165 files that had been created with administrator ownership were handed back to the account, and an hourly check now keeps it that way. The nightly database backup and the weekly data refresh keep their temporary files inside the account too. No endpoint or response changed.

  10. Milestone

    A junction view that looks like the place you are driving through

    The 3D junction window was redesigned — sky, stone-toned city, pavements, street trees and a lit tunnel interior — and the geometry behind it no longer drops out after a restart.

    • FixedPlatform & Ops

      Junction geometry stays available across restarts

      Junction views were blank and the bridge and tunnel endpoint answered with available: false. The service that computes that geometry kept stale state from its previous run, so every in-place restart left it unable to answer; the health check then replaced it, which failed the same way — 245 times. It now clears that state on every start, a restart is safe, and junction geometry answers normally again. Same endpoint, same response.

      GET /junction/structuresDocs
    • ImprovedMaps

      The 3D junction view now looks like a city, not a diagram on blank paper

      The junction window gained a sky graded to the real horizon, with the ground fading into it instead of ending on a hard line; buildings in warm limestone tones with lighter roofs, soft shading at their base and cast shadows; kerbed pavements along streets; street trees; and a low skyline on the horizon. Night mode separates buildings, roads and ground clearly instead of drawing near-black blocks. None of the dressing is placed on carriageways, structures or the route, so the manoeuvre stays as readable as before, and every building is now drawn in a single pass, which is lighter on phones.

    • ImprovedMaps

      Tunnels light up once the view is inside them

      From outside, a tunnel mouth stays the darkest thing in the frame, as a real portal is in daylight. Once the camera passes under the roof, the view adapts like an eye does: walls and ceiling brighten to a lit tunnel with a steady rhythm of lamps, instead of a black void above a strip of road. The tunnel floor now reads as one carriageway with a kerb either side.

    • FixedMaps

      Street-name signs in the junction view are never mirrored

      A sign on a road reached after a turn could face away from the driver and show its name back to front. Signs now face the point on the route they are read from, have a plain back, and fade out as the camera passes beneath them so they never cover the route at the moment the lane choice matters.

    • ImprovedDeveloper Platform

      Junction structures return buildings out to 360 m, nearest first

      The buildings array of GET /junction/structures now covers ~360 m around the point instead of ~220 m, sorted nearest first and capped at 900 (was: the first 320 found, in no particular order, so a cap could drop the blocks framing the junction itself). At one Amman junction that is 108 buildings instead of 35. The response shape is unchanged; a 450 m request is about 10–30 KB compressed.

      GET /junction/structuresDocs
  11. A faster, larger Atlas that says what it doesn't know

    Atlas and the documentation assistant move to a faster hosted model with a far larger context, traffic answers stop presenting usual patterns as live readings, and provider outages can no longer pass unnoticed.

    • ImprovedAtlas AI

      Atlas answers on a faster, larger model

      The model behind the map assistant is now a larger hosted model that typically answers in about one second, including when it looks up places or plans a route, and writes natural Arabic. The request and response contract is unchanged — the same actions, the same fields, and `model` is still always `navvo-ai`. If the hosted model is unavailable, Atlas falls back to a local model and then to its deterministic parser, as before.

      POST /ai/atlasPOST /ai/assistantDocs
    • FixedAtlas AI

      Atlas no longer presents usual traffic as live

      Most of Navvo's traffic answers are the usual pattern for the current hour, learned from past trips, rather than a live reading. Atlas used to receive that answer without its basis, so it could tell a user that a road was free flowing "right now". It now receives the basis with the data and phrases the answer accordingly — "usually at this time of day" — and makes clear that the answer covers an area, not a single road. Atlas also states only facts that came from Navvo's data in the same conversation, and says so when that data does not cover something, such as opening hours.

      POST /ai/atlasDocs
    • FixedAtlas AI

      "Near me" and traffic questions use the user's own area

      When a user asked for places near them, Atlas searched without the user's position, so results were not ranked by proximity; and "how is traffic?" returned a summary of the whole network labelled as the user's view. Both now use the area around the user when their position is known. When it is not, a traffic answer says it covers the whole network rather than presenting it as local.

      POST /ai/atlasDocs
    • ImprovedDocumentation

      The documentation assistant reads all of the documentation

      The assistant on docs.navvo.io used to answer from a selection of pages, trimmed to fit its model's limit — particularly in Arabic, where the full documentation did not fit. It now reads the entire documentation in the language of the question on every answer, and repeat questions are answered faster because the unchanged documentation is reused between them. When something is not documented it says so and points to the nearest page instead of guessing, and an error now shows a short, plain message rather than technical detail.

    • FixedPlatform & Ops

      An AI provider outage can no longer go unnoticed

      For about three weeks from 28 August, Atlas quietly ran on its small local model because the hosted model it was configured to use had been retired by its provider. Every request failed over correctly, but the reason was discarded and only an HTTP status was logged, and the provider test in the admin panel still reported it as connected. The provider's own error message is now recorded (with any credential removed), each provider's successes, failures and truncated answers are tracked across every server, a provider that fails with a permanent error is set aside instead of being retried on every request, and the admin test now proves the model actually answers rather than only that the provider responds. Each request also has a single overall time limit across all providers.

    • ImprovedDocumentation

      The first question after an update no longer waits for the documentation to be read

      The assistant reuses the documentation it has already read between questions, which is what makes most answers start within one to three seconds. After each update of the documentation site that reuse started from nothing, so the first question in each language waited around seventeen seconds while the assistant read the whole documentation. It now reads both languages once as the site starts, so the first visitor after an update typically gets an answer starting in a few seconds rather than waiting for that full read.

  12. Routing and address search restored

    Route planning, address search and junction geometry work again after a server restart left their supporting services unreachable.

    • FixedRouting & Navigation

      Route planning works again

      Starting a navigation session failed with "No route could be planned between the origin and destination" for every pair of points, and address search returned nothing from the base map. Neither was a data problem: the routing and address services could not be reached at all. A server restart on 18 September replayed a saved firewall snapshot that still contained forwarding rules for an older generation of those services, pointing three internal addresses at destinations that no longer existed. Anything listening on them was invisible, however healthy it was. The services now run on their own addresses, clear of those rules, and route planning, address search, reverse lookup and the bridge and tunnel geometry behind junction views are all working again. Nothing about the public API changed — same endpoints, same responses.

      POST /navigation/sessionsPOST /routing/routeGET /geocode/searchGET /geocode/reverseGET /junction/structures
    • FixedPlatform & Ops

      Supporting services recover on their own again

      The supervisor that restarts stopped services now also covers the routing engine's companion data service, which it had never watched — so when that stopped it stayed stopped for three days and junction views quietly lost their geometry. It also judges that service by asking it a real question rather than by trusting a status page the service itself answers incorrectly, waits for it to finish opening its database before deciding it is broken, and rebuilds it from scratch instead of restarting it, because a restart preserves a lock file that prevents it from ever starting cleanly. After rebuilding any of these services it also refreshes their network rules, since a leftover rule from the previous generation can silently send traffic to an address that no longer exists.

Following changes programmatically

The same data behind this page is published as two feeds, so you can watch it from CI, a bot, or a reader:

FeedURLFormat
JSONhttps://docs.navvo.io/changelog.jsonJSON Feed 1.1 with a _navvo extension carrying the structured area, type, impact and endpoints of every change
RSShttps://docs.navvo.io/changelog.xmlRSS 2.0, one item per dated update

Both accept ?lang=ar for Arabic and ?scope=developers to narrow the feed to integrator-visible changes only.

# The three most recent updates, flattened to one line each
curl -s https://docs.navvo.io/changelog.json \
  | jq -r '.items[:3][] | "\(.date_published[:10])  \(.title)"'

What the labels mean

LabelMeaning
AddedA new capability, endpoint, SDK or documentation surface
ImprovedThe same capability, measurably better — faster, more accurate, broader coverage
ChangedBehaviour or response shape changed. Check the entry for what to adjust
FixedA defect was repaired
SecurityAccess control, hardening or privacy work
DeprecatedStill works, but scheduled to go. Migrate when convenient
RemovedNo longer available
DocsA documentation-only change
BreakingExisting integrations need a change. These are rare and always explained
Copyright © 2026